{"_id":"incountry","_rev":"42-098a406cef442ddef44352cfad1dc191","name":"incountry","dist-tags":{"latest":"5.1.0"},"versions":{"0.2.0":{"name":"incountry","version":"0.2.0","description":"SDK for writing, reading, and deleting records using Incountry's storage suite","main":"index.js","scripts":{"test":"nyc mocha tests/unit/*.js","integrations":"nyc mocha tests/integration/*.js"},"repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"license":"MIT","bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"homepage":"https://github.com/incountry/incountry-sdks#readme","dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"_id":"incountry@0.2.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-2RvJJcx2+0rYpVCGp5Be9OrZhEluyZNHDQ+sFoXQW1hLACFdH6C5dqBC62yXP3VQnhD3yPEWsWBxx0nEOWMNVQ==","shasum":"bc048b999b6fa3111a15d3354358b76c0d163e09","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.0.tgz","fileCount":10,"unpackedSize":17125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMLhHCRA9TVsSAnZWagAAkQAP/0R29JuoRMcdk/wlozl2\n9SHhNYh3ymYjN0R5aRIs0RprbZJV23HeTfRJcYR6unpiLWYPFLP1dWjtgjJz\nqq3ZW3S7EMu1Lr9C8GI+pBskCMKAweztBv3ejCRd7jxodz3rTVou/oGOLLHr\ny+dHH3Tm0cJGOju/QhiJVfLEFkS72ruCaHXB7eN/moEKxY7CJ5gLnpDfMzvg\n0bjQTN+BCRERfIh2obXtVE7sOhQPmDxxiIw3W+AMwxOAzkZwN6pFDpw1JtPK\n7Dffc6fdzEaHG+duamJyLVZqhgj5N6KWK43yC4hUfKuDVlJ5fIb3k7buT+zQ\n3qW35vY2vwzB1RAOyd30Z5y67zk7D1wQvMAbfZ7nvZjBzIPZ66LzRu2BrlPL\ndR/wqpZtciuieEQnFFiFUDwD+KloDEpiOHGhYtD7ysrzh5O+ppBK+u6rDAzg\n6TMIZcx1/P/eAxcIkO94HdWYvoUx23D8NVwX8yr9UezjvQ1Q9alMbieGOExJ\nN+0kUeLt8037bomygHtcMgQg7qfDs0OYL8HGg8Va0gButQvpM2v/TifMtWAr\nUB6/Obgm+mHt5TYGL5iO84xAlQJEZe5iMEClGMOwWqwXu6C9usbF4fn3AGC7\nMRDeEusit6GB2gqhzkjYrJxz1aXPsjFbePzNSApCxKj26taT4sPktVIcbpWC\nW0gv\r\n=lMYD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwdA1ekrD5rpWvsGRf/5TvB0Bn/I5i8H1b1l6Jl6oVPwIgAqgbKYe72QPdZddLC4n5f09Pq0mif1We6Y13deooYUQ="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.0_1563473990964_0.693281684253537"},"_hasShrinkwrap":false},"0.2.1":{"name":"incountry","version":"0.2.1","description":"SDK for writing, reading, and deleting records using Incountry's storage suite","main":"index.js","scripts":{"test":"nyc mocha tests/unit/*.js","integrations":"nyc mocha tests/integration/*.js"},"repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"license":"MIT","bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"homepage":"https://github.com/incountry/incountry-sdks#readme","dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"_id":"incountry@0.2.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-WJZE9sZq4GNnkuDOc/rFRiMau+G5d79HqMStPYBqgaHaSc8mvy+gFoDGAjU99dfYzXlpz6E30gGR+s+ttJbAig==","shasum":"c3f65188808135bbf1547d6cf7e11f96e079daed","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.1.tgz","fileCount":10,"unpackedSize":17191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMdGYCRA9TVsSAnZWagAAfgoP+QBJREu7giQN8PgkU9st\neo9DGF2YxNpO7KnGB9BOtgJCX/Kvi6TK9MtyciF3Te/4TTKmWC97ZmguPvGY\nJb0uAXf52BVX2KuVjzh+IWSvV2tUI7D7jBRpWt0uYeFsxExvVhMhou6itKES\nqaIzoSfO5W+yGcKSnYB5o8hkGm+PNnaqK+YyclayLefalO2XmLGINwO06JEq\nkFztMxZJCV+0cxFpFMmLzwkrSN7oiDgs6vWuXTe2TajCi6hTQOUrb4qndlId\nVcjQ6Wr2n+m6wwh+Y90hV45JQbc6OcCyxRnTsMkc1aUgV7muV7hLpmm8VFXV\nemrx/r0J0pLBY8slKhaEKQyzuVoL51Vx3hC+DLaaBoOfqbONTs5Gotgy+b8r\nre42EsH9ncJyo9s4HcOEZAy/ZCicQ1u694KRiZgIXTesPG94wucYK60KQxiC\nPQQDozVeGJAw/ZcqUceK0QX9HJippuwpByH1hWVhmbhUWDjdDhEi+a7D/jVn\nUNIbvWRpPvL9qfIR2XToyF66gLUBqsK2WZZKLDdMqnwdubtp+tUDKWMXn2VX\nPPBzhd/AOQfGrobyjjUZeu+b0MUSClFo6wfu2GYaSVVFjfRRnUNfJ6VPaW1Q\ngdoTk9Q5apeqUhfqTFoRYWUtvDGOgNT4FvU22YNw/Ol2ol2kVklC1vda6p7V\nYeva\r\n=7Upg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENjxKIioq3FnKNUBUmAd0bijyPPtN8PiXBQ8gupjtFlAiARBY7arcR3SnJCkC5Hfz0q3sEvM5PtH5RP5TqEoQLsQA=="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.1_1563546008383_0.5286128346330556"},"_hasShrinkwrap":false},"0.2.2":{"name":"incountry","version":"0.2.2","description":"SDK for writing, reading, and deleting records using Incountry's storage suite","main":"index.js","scripts":{"test":"nyc mocha tests/unit/*.js","integrations":"nyc mocha tests/integration/*.js --timeout 10000"},"repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"license":"MIT","bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"homepage":"https://github.com/incountry/incountry-sdks#readme","dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"_id":"incountry@0.2.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-fbZVWLCla4c73MtgU6HulJV1ykwxmxpw+Ptgdpy/MNOowP74f5DNQJwYCYDVZSZ1Y1yiVnRWMYhzTI/cNuchYA==","shasum":"2a92a200f52f4aeaee26b4cbc4efb9f8372dce3e","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.2.tgz","fileCount":10,"unpackedSize":17346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOgKSCRA9TVsSAnZWagAAFfIQAKKX5F6daNjj4jnev1fJ\nMESpqOZqNR0FTjNreWlyrcN0LvUuPqp3w0sYfC1jAm5SSQpGILbrBWapClWt\n5DEx7dLXbHj2e6iLXOq7mcWm3fUb9z0Gr3mb/nkwvRKRLZRju/Oe8vJg/ZwL\nMf0fT0gEu7RtA11Ci/BI9xW/q2aLOT8tReIDzZ1T8B1O7rzERHIN1iuPDzMy\nCPYoQguPriv3renjz2oT0a0ws7EEK6ZSzqgU0R6BY2kQHwejlfHJst0LzV12\n56IGN8ODnGAd2z+hm16Agkgxkt3YxW4yRxk6glcDXuHgZzKk2/P/Jg/gwn7h\nnHJBZbc/PfuzYcYhYym2bjwm1heFp3Tsj7AWsHU6bvbeDPO7jNdml//HbayF\n7FAl26MBSGM7MfW6BrJ3pLfIETA4g50i+Gk1GTo2u/dk9pqggOwu2TJD7p1h\nsxno65qN6VMyQ4YlioJBb92nhyw46LIDdcS1hAe3f+7a3fzzO+kl5rMqt5Ov\nt3moX/xjQI4bHEk69COf5l7415pT47emSzqRWwZ+VM0Rd4eTYr6f44TP5yr1\nbhIuyu7SVhHohqx352Pz5Jjknh+vrsDetJv/6LwV31ocjUmR15sOBPS5REN7\nw7vuC/LJWGtO8zou/J0N3VmYejGvwj5yX1tEe2LXl8SAUKpAVh5SNF8quycx\ndCR4\r\n=+BQ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGGsJE0FIEb0q5dAYQ0z161+TMNCx/nZ/DHtyxPPpxTfAiEA+NbQnZV/juq7ItdYyyfqVd7TVIlPOChGDa5dd139Gzk="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.2_1564082833953_0.12672811995002342"},"_hasShrinkwrap":false},"0.2.3":{"_from":"incountry@0.2.2","_id":"incountry@0.2.3","_inBundle":false,"_integrity":"sha512-fbZVWLCla4c73MtgU6HulJV1ykwxmxpw+Ptgdpy/MNOowP74f5DNQJwYCYDVZSZ1Y1yiVnRWMYhzTI/cNuchYA==","_location":"/incountry","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"incountry@0.2.2","name":"incountry","escapedName":"incountry","rawSpec":"0.2.2","saveSpec":null,"fetchSpec":"0.2.2"},"_requiredBy":["#USER","/"],"_resolved":"https://registry.npmjs.org/incountry/-/incountry-0.2.2.tgz","_shasum":"2a92a200f52f4aeaee26b4cbc4efb9f8372dce3e","_spec":"incountry@0.2.2","_where":"D:\\git\\incountry\\proxy","author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 10000","test":"nyc mocha tests/unit/*.js"},"version":"0.2.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-qteOV8csD/bp+BU2uFOatT6bELFTAozBfqct3pYo5/WIQ4/CZ3ZIpThsJRR2zJA29rNnPsSwsaaiLKsS8sx8Aw==","shasum":"93a0eac9db8fe87cd9490094aa7064b12dee32cc","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.3.tgz","fileCount":10,"unpackedSize":18840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQxbdCRA9TVsSAnZWagAAhXoP/ieh9gRXuYpWLTn+Tjeg\nHpmkaPieTDPYI+Cnp0OtVdeQ70fG+kOhTmvzTdUQ5lumrXfp8WqDcOewTpa0\n+H6+N5JEl1thwHiR16pAvudnCNoaXy9ET9QTR9AEtk9D+6v3ZStw/e4JFZgf\nG9ebS5PyBnXvrYTD5BWlN9KFJSN99kr8KenreKsbkYwG0GMsbeSGc5W4bTTq\ntCdWg9jbu+C5g0DnYqGqAwWGl14LL8uekGBK79kzinyHZtyvhRHliJ/ckHmP\nfaYrTsEEmlR69e9+zjcj2/+1sn3C1EKSZB6GwK3g6UpsSwfsnSFxmlfFUjW4\nDvKGa6V4HTLye9/4CARNhxdVw79J0OXYnGDHRRds65PQf2SbYuz+ncgbB51V\nImvjXmi/4O9+JudC9xkSQxB7yFAO1ewAmU0raKSwETKPcEh9O9E1u8GyoF4x\ntXCsUlft19UNHlAmBdVefFwg8AdyOk/ZLEWK4pfuJjIkjXg1o1JD4G7wJfmc\nq8lFxSJIJHtbNRQ4yFgD6U5isuHWHw9GoLc8t7Wyz6IqBzdJutnsxau/y3tD\nNoiwNJXcV85t6QueK5HqIQzlAzY8xggCCtKdIjsNW+EG3Sqw3hicTOoVsCe6\nHssk+0SgwehBDdR9vD7YnMT0tufaTL1r/We5cM0LLVw7dA92PetT+P4D4Ae7\ne7B4\r\n=hIfI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALdYt2Us1ciZlX+q19IUENB+yfedlKpjj+Mx99De2+3AiEA0MbPxAUcZ4WPqe7NwoySqIzsy1+kr9L9tFl4HnVqtI8="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.3_1564677852547_0.8814602965586682"},"_hasShrinkwrap":false},"0.2.4":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 10000","test":"nyc mocha tests/unit/*.js"},"version":"0.2.4","_id":"incountry@0.2.4","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TteGh+SqxHQXKNDNaG0U+N5h35IUk+ePDlKqDyi0RrvUXCJV3wFMDiC1DKgOSbSgFJih2o9j01bhWC8VsKIqxw==","shasum":"9d9daa25bd68969d5dd1c0a5dfd9c175ed7f18c1","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.4.tgz","fileCount":13,"unpackedSize":21979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUaYNCRA9TVsSAnZWagAAVW0P/3b/NDYqUAYE2paAmkaN\n/gZIYNLZB23N2LzC9nd4fhpEtA+YhS2kf03eQuOioSEJnCpV9HscnRn7qEHf\nTZ84eduRAZbHUF406JQyDmCaXVURt1PC+Hy5I8kJpUWgp+E662C1BgHVkeU7\npBicnONulkfaWor2V+11Yt8aysKa4s1Hogac+eGitBb20chfklN8WGPxW+jl\nSTwT/6H5sl5i3LZIfIMcmoZBzTQKCzi52R3prN4Q66VWb5G8MnlhKqvVXMXu\n9scWuL6MQHYsyRHE/A43PDcuCpHGbHAMvZ3Y0bAJ+HNz4ADyRL5nvlmGvl8G\nqiu6EfKf3cOhEJ4wQQBDNZXjugFih1+zOwuzKkwMEe2yqhVQ0zXx19kJq8Y6\ndfRndCR5dDdDx9o7pjx6+GvRKex+vlp6Q7y6JJ6mJoUkvf7vwPUK6PxIMV7V\n3JhN9AxwUuS/uESPTaCa3FDtmrX2RtIxs7mBp0L4MnzqiGX6qzmBDDdPgR88\n77Avg364j/tpZgapxg0PaLnHFaT/KqGcSYIRfPhALiWEBhcFCAnqtQKNq8Dc\nNDrXzc4bJRIRHf4Q+NoE4++hmmH+uFmPfLKMP3sZfx3/Mk9E8FEdHGH9jz3m\nVDxI77hiJEF+mKg9AviHnCLTflUgqQNmloCq0chJnwDJAOcgWXCx5nB5pbBN\n57Gf\r\n=TGEe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEkf9GyX58hb1iU9wlqmRqj+e0ugxxAonz386wLif0VAIhALETN6kmoBi3Suu7Hx9FWd4M56Uyxe5fvX8Amp4y9Wre"}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.4_1565632012273_0.8289061811045566"},"_hasShrinkwrap":false},"0.2.5":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.2.5","_id":"incountry@0.2.5","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-wrjFu8kCOHKnIBh/D33si4COHBzoyB+tESfPY65JYoF/dRDiULVvww9CJzwH2loCizw0lSjLu9GKGsDCzbQCQQ==","shasum":"96d966854def0b7544772c6d57cb5598f9710483","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.5.tgz","fileCount":14,"unpackedSize":26432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdV0chCRA9TVsSAnZWagAABjMP/1Xd7zDy7gp7zforIfIs\nkz3sLbZCgTtZS+OcuHiPQ4q/laiTNPVZh3DOWxe5xrWnkj641Qu9w2lzNkhP\np3uBp9th6FQofVXbHd0Bq7YNhBnSZrMZy3gbvztsoecli0r1k92D2JNuGam9\nIs87itCAzkeTXiuhY99k5mlzZBobr5axNc2aFeU4dzay2KySqd0gb+5h9Sti\nDb2Lfec0v1lbTsqWLiBIWFwswQEaZ2ezeNyF2QEJJQO8/6lbUQ0WOQf4EjBx\ny6thYCx+D0BANLnnR2GCI7Vmow4KD0tASalLp0VDypKumBbXSfYr/2+Sbyn9\nvZFbeLTZ0p4JEHmgMwvMHhA+UCBJ0k5Fq6fXefynOjGMy6SBRaqxL8/0kROL\nbq6sLwxXM9EbvXQlHbMIFq/9pGRTwCrTH7TSTxGJfYi54VvONevlcWj8mAn2\ngZQWBPM47UGZv0wcug7NQUiKuANTamml464Tg1vWlk82Zlx20B/J8a4RRVXM\nmrQiqdZ3KlaAFClNXP2hLWKMOG8/sHk2FgJ2bPGoZ9qItNeHeLxiz2glwLxn\nsTHJFv2Xy6tTDC/D7o9rEUlTu81cqVjOpEfvQOWoXvX/HktbIL7DcGdygLCS\nqDtPDAKeCe3J8xzgsGss3BiTM+AslRKjvUa5unmtPaIjKMdw3IjyOoK0R58G\nqVlV\r\n=4xbb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwSDMYsfMCpcPW7gfFjXap4Iukcny/PMr7Fk4F0gtDswIhAPN0hEzWbLQy1jF8kIvDc1FUftgcMRZnOalBeWbohSgs"}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.5_1566000927300_0.44080819012768857"},"_hasShrinkwrap":false},"0.2.6":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.2.6","_id":"incountry@0.2.6","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-bHhV5mRr5cNr4qf+/iwC2FByY71pHt5fZQRZMmVYqkIaokzVJm2Oi4my3m9BXAV6v/85hmRwxlI4/P3sK18gEA==","shasum":"01380f70bb8a473755d41c9fa0317e1be4857ec9","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.6.tgz","fileCount":14,"unpackedSize":27365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWyLHCRA9TVsSAnZWagAAHXoP/i1XHGmyZJ6u8NHziNvI\ne7x1a5YqICKRAnJ0qql/gfHB9aLaKPnypggxdUIpcCWiCX3G9OjLtstTV2cx\nnw5/ah+hdtOwU9khePLrEfzTsr4PQ+ekdQUp80yrbQcdhWT+47x24rvleEEN\nEtyESV3K4NLvLxLRrwGaGwxfGcJC3mq5jqvUA41KfGcGa6+3MTnVdmEfCrNg\nw/YvfGQUFZ9IxWMC/cptsvAb8NCxi/9dqdxl1lRiuc4BDuSVkswpgT8vXf7i\np08bjY3MLa+NHO5bQ1I51YiVAxnS7QaRIEmXaxwtg+aNpwaJcTE/LuF1OCS3\nz1dRCKSsWmYS9LdOrtvoYVsu9L2O+UzbnRIPDAmaTLpC0PkdyJG7Iq/cIQyU\niqo8VpLd/Ketb3CS99SMCNdfNyJe4qDyOGVWxCKfPHO6/J+xHJ9qpFc/EDln\nfBh6SPDHGaS32AgJhiCD1r5nyQkoRWJG5NQZ9K2rbwpMxZo37Yty1d8j3dki\nGdyRtz2IQouuzhkJ2o56TQjJ4BUhEcrlT6Izg4nBjwqVqS+CIw4QGEwvBAVD\n63aYslViSRsFaOH7qK8nwXs636dcNKNJ9AljLu5UXgn7VgY7kvdF03JYeGJy\nZkWWf8EXfCYHFx9nSM0M9zjzSYpsLUED+u2DDj65zR2RSfDiH7wQdU5DFIr/\n5CYX\r\n=duoZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHt1wW6lh8dmvJbcY0yuY+eAT9MNcfJZpylyg7rUQU37AiApPiEJv53Rd14ccU5f9Cg7kTlnTH8wk0KOJcS3in2veA=="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.6_1566253767107_0.2774496615946924"},"_hasShrinkwrap":false},"0.2.7":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.2.7","_id":"incountry@0.2.7","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-NpOZ5eY7xKfEIkjHo4DLyjd3YiUdVGlfNpeFHu6nGAY4vyM/hwL3t11T6GEpHMj937CC7oOH7iw85Hd6Rn/Qbg==","shasum":"534377370d93e9786883fd4111c107f512e31fac","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.2.7.tgz","fileCount":14,"unpackedSize":27503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWywZCRA9TVsSAnZWagAAmHIP/0r0a8ce+XqEVCENJwLB\nSqaHltkOvCPO9QBasKj3hu4fKkN/b+WapxOoA7xB+EV2+kvwP+7VLar8bqYv\nKSsrzDc/ZBi7xlDyEO2iIiY83aujH1OHOzNsxZHB5cZdFGweFQ7IfgNs84k5\nl7hLpjefSbLk63nr4x93KzOe5w5Qul7PcEjjwv7CU39hJ/0fZNpTDnOMYl+7\n6NbbDWADeLJlAQeJxRy9hEOEnWvc0AZWtape2MH5Vx6wLAYi/iPf8N4MvZUL\nsPF5mSgk+5kvS8jkad89kolwKcSo5YeAPvlLIaQU/Q8R08cgrKQgwcuoMQjC\nyW3uBbgKFDBGVN3SSD+GpXgy128DgioeSL+M7/G+V9qqCrtiZN7oQhiDMTYQ\na3+DPibjfzHXL+gf85sOoSnalngfaxCupkUxc8S9Z3kvfiNjuJiQtaP1ynfh\nmx4FFZDy071XWH8hvviQilA6oPlRyIiB2//5lG1GDYulD1KGzxWW/tFAVSIV\n9LP5YXCeNz0Vhr14RuSdy6ARXc/P/TdH5Ze2SOlDLf4ilu8ENj1+V2gGZkYC\nZgB6hCloSKCalLwFzJ05HM2Y2tsSapbJN1FPerv6pRcV8I5tkVvo59j6npN6\nvKFD4MeaNztcm6ukoxAYBq+mhuifAtvkFBNDOCYxOVzaGw74cWecUi3z/KGQ\nC5rZ\r\n=d+Ao\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCP48WZhSSJqJgMPaI2yw17g7IAkB/I3F4r2lK4oZqdAwIhALvtt+jXVFOhSLKj8HxslfHDrSudzGNmXZzrasg+1eCm"}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.2.7_1566256153160_0.2553033266988489"},"_hasShrinkwrap":false},"0.3.0":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","chai":"^4.2.0","dotenv":"^8.0.0","mocha":"^6.1.4","nyc":"^14.1.1","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.3.0","_id":"incountry@0.3.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-S7z+o8y7aTgkietJe+URkehygIavrgxbzh40tlGbTlphj+6/kIAj76SQb1XcKEwzcNi7FjGuaJLPW2NPNaEmdg==","shasum":"3b1d6362143e8cfca5550eed973ac6b2ab6e4d37","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.3.0.tgz","fileCount":16,"unpackedSize":28886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdXwfNCRA9TVsSAnZWagAADjIQAINFinKmWpF30Ltk7TB5\nmeJ5nhrXR0YkAWF7jAdOZkVZ9gkfDGLaT/bm2Pz+fFupTTPz7LR1MgKAkVHE\nhhXF8no0sFhxbGhIsd/IgyHgbWx6qO/MiqU0FnSgHANcLVk7YF6lBGE96nOU\nRRQs0vK+5y2dFGkZsbtKzAPHcDM6fsF2akYZksPPuT1L7r4MLdaZdSM8VbXn\nSHa9//cW8MWRXGoDL0oFFTfqW8WcUpvwkFVi4Lh4LU5AXkLeiKlzIEE1vuY0\nRoIiKEb/XC+M6uN0H9Q/0KMnWOUEKFL8u+fXiE3BeAdi8hH1CjBW1h4m23ho\nZmm5JkZXUBJIXQl1036frwOpBbRRlzgE5Q4UwiyN+lqHW0gzwoA03GPetzBe\nqPI+lzQbVgIn2UamK1fcd9aJ7mwlbhUK5Ksw5GeC4r2m9cocRyrla9Jt4WUK\nmx89s/PHJwaP23Pm/t5KTQ4JumMk5irD8LOhv8ikNGbv+JhDQp9yTNrrGHwt\nkWSQntvTYB/tNd9epoBEMcYunMf+gooioUSQw1mbUoHuWqBapB4iDPhcX7jG\nGzIBBPGOtI54MbjL/dgUddAo0npfKIffIRm5WRap5rqCLCGuDrBCPNVbS68c\njmAtZO915rb4jM4ufblUhQrlkJ8crlSde3z5OTirqVL/flZG9WJ7Z8KMg6pR\nPg0Q\r\n=+fF3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFmvHNwYaKYY7Q/BPNjcMUH4Gl0oyk4fqAVIZuVJfynwIhAKM1ak7+82mdmGCjn2VQ5epGn0ruKrdcDIhIa+71SngV"}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.3.0_1566509004355_0.5153410232175344"},"_hasShrinkwrap":false},"0.4.0":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/incountry-sdks/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","dotenv":"^8.0.0","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/incountry-sdks#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/incountry-sdks.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.4.0","devDependencies":{"chai":"^4.2.0","chai-as-promised":"^7.1.1","mocha":"^6.1.4","nyc":"^14.1.1"},"gitHead":"b3475dc6f7b64f3d822d23b700e1173f5fa8ccb2","_id":"incountry@0.4.0","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Ap/NRv+Abp/1r5vmZwAyoIGzZjPExIQIU3Ld27+TxzohnJG19woaBail/iJoYokf2XPXm1kC5q67+e0hr4kJug==","shasum":"ee19a0ccb387fecbe48f8760c2e04fb38ed6278e","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.4.0.tgz","fileCount":19,"unpackedSize":33721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaXePCRA9TVsSAnZWagAA4yAP/1Bk2mcgTcpF93DaiaxC\nXsPDoCpwbjdFrNANFn3Xn3mPfZr1/nh/4revltql3lI5O+sVH8mXp6bAbSXI\nXJWhwSjOIlZ3YI71J1dZmT4JJjoqus0uWVsYwvCMcPpuxQxgzr+5iwWlJFiy\nZXifXcgOgb3oV+DTzU5VTmDgS/IXec6Iw3haqPK4IqSF1cUc2c+gEiCIYF0T\nYfZ+uEKtVkT3mWh/37WUWZqSW+JoTqtfEixZFUTmxYmSqvsXUQSkPtPCnV5S\nY1snXZ3Hf74Tw74Xf4Lwo74ODA86/ihxyAgbagLAYV81NhD1Y5h/Gux3PPSa\nOVYxOfUkE+sxFV9Nfqa/HvDpvkGJuRolH07Ee4+iPvkJBK4rRx6s/yfW88/Q\nQEEoBJ3LDdZtUaQslI6t+FEQXu9s/pBWj3eclEfqxHGpkJaC0g/Hs1jf5apO\n8qlbfok/MPlnoHKJnW+e5YYXzbrFjhZzrZpBptAfGyG26PCZJ5shfPYOlvo4\nTS9lvly3Rifhvhc7gw9ysyP0jYVqAcHfmMLisdkU15g8Rq2Gv3wRM0ZKdYg9\nvgMVN8EeTUzjkHMZqOK/WxejTp0bv8oZB5eob/2PFXlAWv/iuqF8Pjj3mpdT\nSnRbnjc4pPtYQtV/aVZwu2oRD//gPonw4NkhakPhQllyiXpL4CCs5UEGwjMe\n0t1l\r\n=ETtA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLJCE7W3J/gyYNOqc+pO8JM6/4jGFhrQi5mysJ2tQRoAiAySRp8rwkod8tXri7lx0XyaHPxjmABDFI3POH+b9vghw=="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.4.0_1567192974937_0.4893565460508218"},"_hasShrinkwrap":false},"0.4.1":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"^3.1.2","axios":"^0.19.0","dotenv":"^8.0.0","utf8":"^3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc mocha tests/integration/*.js --timeout 20000","test":"nyc mocha tests/unit/*.js"},"version":"0.4.1","devDependencies":{"chai":"^4.2.0","chai-as-promised":"^7.1.1","mocha":"^6.1.4","nyc":"^14.1.1"},"gitHead":"b3475dc6f7b64f3d822d23b700e1173f5fa8ccb2","_id":"incountry@0.4.1","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Fhq/WH/LcB0c1JCu6yV8Ul2aQEIIeTKtcQg1AWI6kGm6C4zorTMxNVfvAVz+QvJsOApBwUw+cl9dRm1UxvgOaQ==","shasum":"25aa444eb620eecd480793317ff7bb59e15f9795","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.4.1.tgz","fileCount":19,"unpackedSize":33709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaXjxCRA9TVsSAnZWagAAUFoP/0sbWUpHiKWSMR1Wpwid\nkj6lJA9ibHGe+bDgZS1ZutciAn6sIvHnBevM64MVk3mTJM2d37hghLKCdROG\nnROiiu4AsOa7hkp0OdpG5A4U3yAcgQJXlRMCIU6lW9ZNYTOkPVux1bXYosVf\np3X2a9x5pOeyP3/8U/mTMkwDNhLTjbrev/jPewrTa83K2oT5rZhepr4ODUTF\nEjTC+SA9KBNt0xyGzt92Y6ew/9UU/p7YvJTRnP0Xqk7Wdl92KP+9aSNuKCQX\npLf0zzCpkw0eG3sjbdXKc2Sizetput4My48YIcgt7Vk9iWsXSII2r6XlsJ7a\nb61HKZriV6skKctc3U7jeos72ElJE0t9IpPm44+fIjijeEhCJdVE6XsRKVZ/\nkp3CI7dNVA+kbvLbSH0ruq19zUBsMOdDVr3uPnLEVeXMEtfUsPrwOXPzgSor\nllUvrnv5l42gTbZS6shXrnj7vS9ifmAjJ6s0HTRfcnJOLDz6Vx9K1yV+p905\n7GjcSRLZD3P+ymBw3zBqhWAVPr74tF1YZuuTQSyjmtzV0SLaMhn5P/UPzcSj\ndromJR/KuVx8bHcU1PODkXVah5QOsYSWCsMBOTEMJwJw+ps+b4lUNqya9ryY\nnOUtAFQgQnP0HFSBUFhHnicVFgvUxTPuO5PkewWrlz8ONVt/kLvjrNoFnBq/\nvFGC\r\n=RnuB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFpxGPg3VnWhrefqbE0qu5L+5i3uoEwkVTIArUfLxenHAiBWVXFM4TUAtxSgyGu64OCES+XIgCjRijK+zIYvSICxmw=="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.4.1_1567193328951_0.46153029969079773"},"_hasShrinkwrap":false},"0.4.2":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":false,"dependencies":{"aes-js":"3.1.2","axios":"0.19.0","dotenv":"8.0.0","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 20000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage mocha tests/unit/*.js"},"version":"0.4.2","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","mocha":"6.1.4","nyc":"14.1.1","sinon":"7.4.2"},"gitHead":"0ad8aca12f62bc8a046d7d0e584ba1c3f4d1e0b3","_id":"incountry@0.4.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-HKB4T2Dw+Qgby8K3HgmdXy6j9BKKlQv299HEAy/+adtA3ePzhwROUyQFyGKP9Navh5T4haqgzSWLfM5RkUmAiQ==","shasum":"1937b1091478dfa9eceaf999b4a90979de1e415f","tarball":"https://registry.npmjs.org/incountry/-/incountry-0.4.2.tgz","fileCount":20,"unpackedSize":57279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnhRtCRA9TVsSAnZWagAAhxAQAIB0a7fgz0XNljbPxqzp\n7MJdgrTh7EdkXUzVm1Dn2MO/KD4iTG8C4bfQLps7KmG/BZyWkLsThqW7fbOO\nib+kmXw0uV11B/XBKY9Onv85puOucqKkDdcd9oQMRh7W4wZHRS88l29Dwc2O\nWt9GnNbJi9Kmd5oIo3n6FieVLTmMCF4uEBldeF9ddDvrhnHSm64iUB8imqcO\nkxWusjyricodWjb+GjTJNaYpro+eIbPl40/MKIUM6NFYahfcBkKsHd8kfKFA\nxhNduQqoWZu0n/dKDjDIeYTZ9DYrLP4wyHH3xKtRIqXQO8nFK7EgtYVjhXPL\nBkT1a8ERK4MoXzZuf42SKKqyYt5Qj9AIl974F6xR832NuhC2LgzmqK3qqMDO\naHlWIz8k9OTmFeJC08DklSZJi0RRlR0opYLvMWrEtlrvJ8+O5TcXakEnjqZF\nwRTVCuosl7Fs3NNweO3CUWMZRr8ZZS9CXELyzTzDgtjqU0eZoKz1taKOgSau\n1lJUo4ef4kyxDf+EJd018KOcZFEEijpjNG4Rkj5mswmUPN8iXfE89gUrad99\nhf5s//V53UYPmiKcRBC42kzVkjAUvGouS+u1v/zswQKms7TwzNN88nTv29WR\nat7dqF9+7FccaPJ3wHvoQNhkj9xUDjs6VOJOzRSXDotEL/8wFMgTyyiiLz0Z\nNzsd\r\n=heyi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWErbKq0WE15lG3GFJiHfNdtycqOMBd6k2iuI8orjqVAiB+sxklDDDhSOgtlkvJB9Wp9huPo1mY8jxjW6eCbL70yw=="}]},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"}],"_npmUser":{"name":"joel-inc","email":"joel@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_0.4.2_1570641004924_0.428634115868336"},"_hasShrinkwrap":false},"1.0.0":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"dependencies":{"axios":"0.19.0","dotenv":"8.0.0","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 20000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage mocha tests/unit/*.js","validate-eslint":"eslint ./*.js tests/"},"version":"1.0.0","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","lodash":"4.17.15","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","mocha":"6.1.4","nock":"11.4.0","nyc":"14.1.1","proxyquire":"2.1.3","sinon":"7.4.2","uuid":"3.3.3"},"gitHead":"33ddea9e61f463f5f12837af5a8651301ba6dc3e","_id":"incountry@1.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5wtPSQhW0GAqiAzhgupmKC386SJT4Iz1k0cxCpVvQI5MrsSmt4zoGGuERLD1s81iJEuA2eQKBkpaYrAn8jQvZQ==","shasum":"70a44fbb623a8eee49b40914bc9e55d8d4b28c0e","tarball":"https://registry.npmjs.org/incountry/-/incountry-1.0.0.tgz","fileCount":19,"unpackedSize":46960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+jONCRA9TVsSAnZWagAAvlAP/j/9h78sm7NFHVx6monU\nqoiUGoAQ/i/UVqG+ub5nvRJ8+i7VgTz/CV+Zt/RVa/8lDS1MOMOw0G1ZMBf+\nEqq+u+IrQFG5vGEaSXBQOnymX//JmYP135U+9Mcu3oQpC2Eyub6yXIx1ACz8\n7K1faaO4QC/5dmSuiNBi6jBjhONUKS8s6dlXiV3mfyOCAGei47rigETtxNTw\nelualuH+BeLp3p6CDdbczkraxzVKNrFp6uUycQx8fJgkWKKSZYCBpszzTsfv\nybTPbq4BJXb0/53uJIl4sfyZuFSyS4MjGULnP8YkGBA0rlB36P0lTGJzE3PS\n8GFbopwL8D0NcOeiuM8yK70Dpy6ovF2ry+XF47MmgKELFrX99vTsEXNa05L6\nX5c0tghFH2VD6Axoicd+pvR1booBP3s2dirrQ0u43/5CYuwBgQ5nbrjAX85C\nTgHRHcXQgd871JYHiCzEKZZ5ueuIiOcedPBZQ+3JhaY50Q9+CxfYVAsCH2li\nJoc4DbSyhhM4jnTRcSbnHLKDghGp2PePkSJ7dBc6NZmXjgRYVkZlWeisP0TG\nOz8ha0bKqnyYVXEYdY9gReirVwJBTLBrk/Z/HB11X1zxT8AGYXjN0oz7CO1r\nog+654amfms7l6SjSvGCshowOnZzdq66cFZLBzfkSjWdELKikSztg83r50Sg\n9wUe\r\n=e+Ol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCLbMeNAljzU3L21tO0tA8b0wLVxIFWqHvF1klsFyMXwIhANgJxc5FJTl2tgzE6Y4PlpcSLSe9DmLyMwrSxnWectlm"}]},"maintainers":[{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"rommeroincountry","email":"roman.semin@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_1.0.0_1576678285003_0.6536771042582186"},"_hasShrinkwrap":false},"1.0.0-a":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"dependencies":{"axios":"0.19.0","dotenv":"8.0.0","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 20000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage mocha tests/unit/*.js","validate-eslint":"eslint ./*.js tests/"},"version":"1.0.0-a","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","lodash":"4.17.15","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","mocha":"6.1.4","nock":"11.4.0","nyc":"14.1.1","proxyquire":"2.1.3","sinon":"7.4.2","uuid":"3.3.3"},"gitHead":"706fbefb2b0847cd7edf1dae17f5648a22451c70","_id":"incountry@1.0.0-a","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-K8G1z2NErbKqZLnJ3maOdhyeKHBE6oSAclvk3+klPXKQRIMPeVnJ5HKkJHGjU2OR13j+AL4Y863/nnXYW2R+NA==","shasum":"1c1257314be1eaba5950ed0ad367df6ff1e7de00","tarball":"https://registry.npmjs.org/incountry/-/incountry-1.0.0-a.tgz","fileCount":21,"unpackedSize":48566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeA0sYCRA9TVsSAnZWagAAz7wP/05hIpnemV5UcIt90Smq\nqsBhpV78Oell0Bfj9yZHmiOMjdkH4iERNilEDt5Ou3oqPIM32/+QuJ6akULs\niUsy21zRPKpoU9NY+2UoJVzcmxFyKDzNkXSBXMV+H3/hUsETwVRh+q7C31GN\nhF7sFsgfUmTBCIjzts/mHArBnq/gNafXb1jeqe4aDHxjbBqTVva8okKTozdD\nDMwYjabyh96BJXukW06dzQhCjWsRwIvGVSUNX0jzczQs1jxL/5b8f0HsR2rx\nGSLXBm9F+i8y3VDsvGqFrgc4hfpFOYE9KBmFzb+7OfPqKZWREXS2q/pAoit1\n8mcrsGdLm/Adnk5FhkLZRGmFpQkH6S8Xkacl5qcag5l/tQFA50PM2UnNZBkF\nMtztZP9fmlTPx6qV/3dSa/mBtWAgj6sv0Jr3AlWzie/SdMb0k2do6WGwxO9J\nlCJmj+YuBeeV50xIWbGxlvF455/golyGBSE6QUA5+PtF3JtYnJP6zv3UAaWG\njH52/YBTD74qnjcobnaamxKfcEd/wF6RLhKx9LQGFzqeBIsk7LuRT6abXnzm\nodGpO1i3NhCG5XSIMh9QpSVEZovuxiQmbaT8Y7S828iNS2QBk4CXdCAhYQ2T\nyDlta4q69K/uvcapISMJ8/KenJQ8cm5izFdk+OEUCpl+TL+k9rv2jZlnAFIk\nlhzk\r\n=0I1Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2qnGE/bQcLe5TzQRuIVKcQ295BrPPJsx27jkaUPZy7wIgVyHCWmaR6CFAbgr7P+u1mTSw4LsKOdoUo/yDECLLh/k="}]},"maintainers":[{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"rommeroincountry","email":"roman.semin@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_1.0.0-a_1577274135753_0.09370703987510098"},"_hasShrinkwrap":false},"1.1.0":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"dependencies":{"axios":"0.19.0","dotenv":"8.0.0","lodash.get":"4.4.2","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 20000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage mocha tests/unit/*.js","validate-eslint":"eslint ./*.js tests/"},"version":"1.1.0","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","lodash":"4.17.15","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","mocha":"6.1.4","nock":"11.4.0","nyc":"14.1.1","proxyquire":"2.1.3","sinon":"7.4.2","uuid":"3.3.3"},"gitHead":"14dbe3e755d2218ba6ab1f8d2494133e687d9a83","_id":"incountry@1.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-ElvlS54/GgJrmTaNUrbsi6mYsQkuJ0kZF3QnyskBlZNJsUe6MG2NdTZmhV6uzPmFWTx27O7NNrlMwk2430MBfw==","shasum":"4382e0a68a1253c592fd45b1703f714887d99e40","tarball":"https://registry.npmjs.org/incountry/-/incountry-1.1.0.tgz","fileCount":21,"unpackedSize":57061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeLuLpCRA9TVsSAnZWagAA5HoQAJfMxvYBer6b0xFH+PqK\nFvc0hnqb1bt/Uz6vgqicVrPjLmCxOtdBE0kpOvKaTLr4pjQBTNz6drrchc0w\nVY0n9nXEeE3kNKLZAs6fmcP3odXAHqupLC47+VGyW6V2/wphmm9PAyMh0Bua\n6JDHYRhcIZ/4Rsb49dtraPyk9EK3587SHpHFnkyqGlukGF2WWga+uNeTCWMq\n5sV4V7dul3T9IBZBipxZhN+F6RwCLfDME4wlFPaaBS7EHpLrLAURqq4B95/l\n0Kd0YMDegGR3s+Sc8iNyu9qJPIh0SadFOqOPylbYEknccjSsvgQvgoVN+HJk\ntSzQd+ytKG+pqQ/UnXXWwzQ2SUnAYld2tWYsr2rtAqku7k3XwS2Jas8ajW+R\nZaxq0xS7DxT4kvEJwmy00t7MQjcAK1skj39FsDyzWNcpx/e6h0a+1VH6swMX\nLINbk+h5UD091RNrPy4FFbJbtJ54Rjdgg18nKa3pi7A2c/262G912PYiR02m\nTeBo7QoRZDqr/CoOSsmhbEBAF1mLjLbzLUMJMNlVgyaFVN4lpc4oNGbB+CCO\nwXIcmhEP8KJqyNU22hO9XsbXKS1kmGKUgtf4JE1MEUqeb6gDFGqWSmiXhtIX\nxuzinxim872SlBK8nQWCe6dgCijo8SrmP8r2+7eRiynntYxXFVeI/5Fid0S1\nUqFG\r\n=hnWl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAgNiG3MUkm9z5rYoE/HsuiJ5doLWlffZVn0/JrP0IpyAiEAk1fZ/HvMKnz4TeZHFiu13+9WkBKuNPTXbU3Fd9OIwZQ="}]},"maintainers":[{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"rommeroincountry","email":"roman.semin@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_1.1.0_1580131048969_0.39864033622584816"},"_hasShrinkwrap":false},"1.1.1":{"author":{"name":"Joel Bruce","email":"joel@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"dependencies":{"axios":"0.19.0","dotenv":"8.0.0","lodash.get":"4.4.2","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 20000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage mocha tests/unit/*.js","validate-eslint":"eslint ./*.js tests/"},"version":"1.1.1","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","lodash":"4.17.15","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","mocha":"6.1.4","nock":"11.4.0","nyc":"14.1.1","proxyquire":"2.1.3","sinon":"7.4.2","uuid":"3.3.3"},"gitHead":"a0814fbaade582b606d0c1e0cf8d3271b64410dd","_id":"incountry@1.1.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Xkhe10WzA5HMiXzVextb91mmzobnUig075XZ7yiw12OL7eVn/fsYEa+1DAbh+47UReOsunW8VX4XNw9r/QYeWg==","shasum":"196f38dc778dd4e576d8ad0debc85216b1536599","tarball":"https://registry.npmjs.org/incountry/-/incountry-1.1.1.tgz","fileCount":22,"unpackedSize":58859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoECbCRA9TVsSAnZWagAANosP/1bbaYQkUl8oyfDvcFrC\nUI/CBfRn3nDtSkJvqEQQcaWucsEy/2j+VGUgPoWYhEayWRyCcFVYTsHCOrFW\nP2Fei6Bn3jJtqfKunv/EY087E/5rhH+jrkEJIJuixDba2gSVb8ldxJOPzDAf\nnG4F1O+pBeRfkjaClJKxwi5wwvbAQ8NsywL9ykarlubEtDBN2ZZyHQMi0Tqh\nl8gBAPx+ipBL5oDO+6qOJWhMTmkkntUSOXITC3UyOLSEUcgxQ8jRbpR6O275\njai3C5BM9f4F1DhFSGJTCfXA/1lPFznqGY1iWcwUowWGC+UXy2LNgw/+4uOv\nN0+opS40SzvVS5ug/pazpIkEMLfvUAG4mGqZ+lJUUNseEvn0Mon4PPhWb84t\nDBO6C0AWKMNb+cWyNKFLKXyYEc/jRyy0ok0NVGwbsA3iwqtsMRSLEYoafFFB\nzgdqq9woOEb+AT1/aWcCKAPmWvRX9Ydt9hWsIwIuM8eSTPiUwaDzyXMEgcFX\nRWgYS522NzoELdLYoN6x75oq8JI7O/4IhG8KVNC47nrH4emQUsstewNdWBhr\n+JYOQX5Fi23kLWb4I9NH5G2XuBFac2Y3MseLt+4QoZSr5FDFV4/CkxRIi93x\nrAo4xR8Ycwdh6hBqt7HFkTCClYUX+/pUSw6ot8eyxwsQV81iOBS33HnT8Fyh\nvzgJ\r\n=ahQg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIg9U3iKQoYDtqtB4ftBSRi/MkZ1Lu4BlOFqTMdNw4vwIgKQxJKdvmOHiyl5soQX70ThlQ75gdRMn9hueJzIb/pns="}]},"maintainers":[{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"rommeroincountry","email":"roman.semin@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_1.1.1_1587560603371_0.5279548245044503"},"_hasShrinkwrap":false},"2.0.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.0.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"integrations":"nyc --reporter=lcov --reporter=text --report-dir=it-coverage mocha tests/integration/*.js --timeout 40000","test":"nyc --reporter=lcov --reporter=text --report-dir=ut-coverage --exclude=tests/**/*.js mocha tests/unit/**/*.js","validate-eslint":"eslint ."},"version":"2.0.0","devDependencies":{"chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.15","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","uuid":"3.3.3"},"gitHead":"fd7e4aae92f1e8c8f549ac7c1b4834e7366bcc00","_id":"incountry@2.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-iTKSLWnTo+62lcl/cr9c3QiOjMP+3D3Z+gsrtrOSULi4BLINfQ7WJ+AwpbLQWmqwJQKV6RMbVF1Stf6B4a8efA==","shasum":"8d9af6c64871dd11e85ebc9f6197103ca431d632","tarball":"https://registry.npmjs.org/incountry/-/incountry-2.0.0.tgz","fileCount":53,"unpackedSize":196602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7MbZCRA9TVsSAnZWagAA55sP/2yNkeGRznIyvhgt6Qt9\n3jSgwmqz3DYDzoxPRGQJtTOqCE2tRcLqabpxT1T34Zp61BUZVPfth70xEVXE\nYr4UQnp8afEeBXmxCqcEIXi0Ww9Fp4BfgQUkZE6EJrJ+aHK3SsKGl9dytRSG\nPbUI+O2fY90TsyqODlFEckDfUmmM+3KDvryxlWToHdFcBXE/5Zib9ukWgDjl\nCeQt2nscKiJbcVahWwu0cf3xUFz6oCGtTK4vqiyLZbx2bQJuHgTdccfXy3RR\n+H6eENz3HfbiBWWQxjFxFkTFRfzu7Za6nvO+u1TFKxtX6BbQH8SFPXnJmrnH\nFUc6pklQImze/nVPMIklrzgsJATae0jhQgpBiVvLZ/Uhyi/5ASeMrlXeImZ6\nexPwh3PofwdMryCPp96ozVR59JRpxr+92mZb6ZOadtR8AtoD9wNoIKpAYjtg\ntoNqvOPhLRXt1JZSHlhJauSvDT9vpNEXyOtI41v3SQymKXcttHe3pV1gO4SH\n84i8zDA4G8V1l9HVpEQu/B0TzzMWo/NN45QB9yAaL2xBz8WqaxRrgMzmpXrp\nNTqgHv4NYv6PSttsnDhb6NWoe1O0X6IzeA+M+Thj+db2Vt/PReuv/7XN5q6v\nUhnd1iAiWYPLIZKNQC+g2dYAMf+nt6YCGcoozyd49RssCkxggN3fcFpiKE9O\nEToU\r\n=RhIa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYdQcvWwzgx3WtKWigjPy0UWqGqXIDtOB2q31kxDs+3AIgFnxGv4D4ookJBjfT1qMB33TY5A5xUhv8t/5ZTLQk+1M="}]},"maintainers":[{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_2.0.0_1592575704958_0.16250450799298144"},"_hasShrinkwrap":false},"2.1.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build"},"version":"2.1.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/lodash.get":"4.4.6","@types/mocha":"7.0.2","@types/node":"13.13.4","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@types/uuid":"8.0.0","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.15","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"c317e7dcfcfee8d7a904cb07138accca8b3aa39a","_id":"incountry@2.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-jjYn2RM7ygcIWxgQYZP/V2/BLyUGLNV9dUsoI8Gh2+HNyzNGm73ZQ3hSpyW6GCc+n03ZxKXUwDyP/wHVHT86XQ==","shasum":"1f8e9d33405b9db64366235d390d9d40ce7cab01","tarball":"https://registry.npmjs.org/incountry/-/incountry-2.1.0.tgz","fileCount":180,"unpackedSize":457555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+NF1CRA9TVsSAnZWagAAY0gP/RnRDd70AkE6lT05pRl1\n/+5ACT9AYHSoA/1nOfTvf5Y2SRRVCUNehV6aTSM/+Z1ZGKUruMB1UC2alqgA\nnUOb52gDadvrKUcWgguaIc/wLllF8DoTOOjiFg+PLZyAw2pjghvFKxTSv4qf\nLiI+lRyNhrJuqfO0pJI8ZO5k6/zGgJIAyAVrsdHyNQx1iZUwgHXQhZXIj80x\niWlzDkaSn4MWCLJY7JKzosf5t27bkrk5rvWRVkEqCqoeOlpG1TojHEWLJl6z\nYqaclMQTtfJYahxyiALIxtl4AI+909QnzoD5s7k7XIeF/R4T8NulyLahlFKJ\nsQ4MvfoxU6KwEc7k7nqvdvV+txfltEROWjEssJTjrrmS1Z0+c7aeClSwWDfc\n5uYef0JyF2BbRVLH+gJoGAzBgCw/fNGHkwCwgRuIrfkkfVsS3GQO3nsj0AhP\nhthUQRJ8qDqXXRNRZgSkjulQW/DoGZSaVW7vAiB2rYPC31E/5y+irgTI8g53\nA45T8xL1TRN/xDkVD55aXw9XIir8FKQG5RpHaZkXxdmlpqAEdiz2+wVcAFY7\nyoNFG5TPHFVI+VxNsTAScNFGws3iVvjjs/wtBIzm3C/+OwcmFjLLHKtkEwKX\n5AvJ5Qif8AxhuMsAhv+6tyLWxq7yYV/OILOSZO1o8YLyzGkhPRZlx85tdZJr\nkTiu\r\n=H1Lu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6JSt4DNNlA0yYdTeSllHz3TJzIHwicjUPWzFnUbj2XQIhALsZaN5s34PXttVBfhpnhZn3JvKEWHnvjBy/8aa1dmIZ"}]},"maintainers":[{"email":"sdks@incountry.com","name":"incountrysdks"},{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_2.1.0_1593364852809_0.0792942947057298"},"_hasShrinkwrap":false},"3.0.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build"},"version":"3.0.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/lodash.get":"4.4.6","@types/mocha":"7.0.2","@types/node":"13.13.4","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@types/uuid":"8.0.0","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"620706dd6a275ae5c17c8a4857985eb10374aee4","_id":"incountry@3.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-WanzuKe8i1GtDPUuXXdfMmDOCCvAXDPOX3TnDyuGIgCWH/JBHt2dtbMzMtEQC0TmIIkVWYFRXTpcAsDMnFkbyw==","shasum":"5dfa420eabb7b04a39880c3b850e8846dfc3c330","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.0.0.tgz","fileCount":220,"unpackedSize":530196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfToVrCRA9TVsSAnZWagAAQwMP/2nv+f/6CycagP4+9att\n7ZPQkuVOzzFh4X0GKSaEzBl93jHENSIogtiCQ0lQBi9se3t8x6Vu8tnKLlAq\nMaL9s0sQTNC6KjC2BkKt5wdbIcQz0/L2c4mRRlAZAnmsviEikb3W8ZMqiByJ\nY/GKj4ccgqRRTRKd+6uTYCK62NmUZI9KCeKyegQhp2nrwr6JEd42/P9mL+SL\nAoDtXuYxnZBWMtzSpY8/ahZtWc6F79sXe0YLe2LpikT7W3xw/DWaKUdb2Txn\nzHNnRrZn5P1xG4LCyIs8H+mHx6XkDfpgm9bPkhtaAEzLN8FxZLwyFKtEyZNt\nYxzlpaO0lJFhBiSH3XTykmC3hfQgkZpzpjGcp2hPHL2yPjyZySddha7bBZYx\nT+Vjfd8hJRCpfwvQfaBivp3qF+d8/9MmJW+FuNH0RqVEu2XLtOPmBOwSayeo\nxLY4HaePoZpQbD+x5AqGW1/gF5r368uOz/ANumy6hTc8AzL5QRfKBOg1QuT+\n+I+uXiHG5dGd5fYMV8R6OM0xbNU54+ORO81sz0aov1NZZoizkHP6ZEoLrJdN\nR32zMvqbIXXbZ8XdmTQgsoUc+7VWOMXOLj80f6bA+3ri/I1DVwiIi6GfHeuG\nbIWe9DOqL2FXpzbDbiPiKPtebKJTrV/EoVcHIVg5Dxx/zehasFtN5kuAEHY/\n5DN5\r\n=Jf8Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGzM4X78wUo16I+ZCsQmcQfuc0lqABSAId/WJxT8UAXAiEAuFZYPjma5zIUDtRPDVlx6PNI3qSHncAyk8QGE7vr6mI="}]},"maintainers":[{"email":"sdks@incountry.com","name":"incountrysdks"},{"email":"joel@incountry.com","name":"joel-inc"},{"email":"roman.semin@incountry.com","name":"rommeroincountry"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.0.0_1598981482650_0.8595797328716657"},"_hasShrinkwrap":false},"3.0.1":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build"},"version":"3.0.1","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/lodash.get":"4.4.6","@types/mocha":"7.0.2","@types/node":"13.13.4","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@types/uuid":"8.0.0","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"b64fd74029765c72012162fdc79bf4744efdc184","_id":"incountry@3.0.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-jFcKs9ZjYemtg5+PPJYz+pvhk6kkxpX7EDoUXXBj5hi/rZV4/nhQ5jrU7nhxTwcv91ifN/5MjKvyMtruBEswxQ==","shasum":"835d340938012784615b9277eb7dfcc88eee8aae","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.0.1.tgz","fileCount":220,"unpackedSize":535492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWf3KCRA9TVsSAnZWagAABCAQAJG1GXE+Dp0R4HhVS14G\nVeLiNNUFfUqEx4dULxwOv3yeMw6sw+0XcDu7eLDtaPnoaCqMc8w53oKQ3q9Y\nPdzp8o7b26TqIadKz5j0wnGkT5RbvseAvpqnvBAJxPsehnLJ46F1GDxeWZ/5\n37zAS2OS4IQLqXT0rBKSrTI2oIVAGvJFQhCggRqLpoSyOjhaC0kVhhoGlwpv\nfDKzRUS+6dIz0efs7T8aCwj9x8B5HKXjtTt4LdzDxi/avM1eIb5mxDgAQRjS\n/gmWB6cAgxXI2TqZhsWpsWJXRmIr6W+M/EIgsyfF9aQa1Wza5raeOphcPpdX\n2W6b0os1XywBvjRlK/lJrjiGQAthEx6wr5AkZTpdAGlG+XSUsT86zwWAI6S+\nHzEZBIexj9jpBPf0ehMzhGVbHL4c/+YmlcfnJLugFcvtr7UlkUJludzsuolm\nRSfgXZEVkCxUi44RXwi2CRdvj3deC6Q0Zo9fLgh0tOaZdfuYFnOlJCeEeLpD\nVE8tApqzHKP3obqZaSPiz1/L+3TrqC4M7/Lp81fD+6J7udUw9hzn3dKIKsct\niOGXS6Nh8NdEExv4CZITXvOtOl800JIpnzz7JUBiA6rdokUMjQNlEP40/ZGV\nxnTfQ8V4mNDTGHLx+rU86Eug8s5Gc+0b+F1mFOE3n+sVMtgt3T579BfOih9R\nC4yn\r\n=JVP9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfa/3Sc5YnVG9o4ONYcaPrkWZNH/UNla3hL/kms+kSwwIgUDUWbulTl2X3lCxV7HwsPjVq7+Bm59ngKC0ahgUCMsA="}]},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"joel-inc","email":"joel@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.0.1_1599733194006_0.9276786226494933"},"_hasShrinkwrap":false},"3.1.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build"},"version":"3.1.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/mocha":"7.0.2","@types/node":"13.13.4","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@types/uuid":"8.0.0","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"2294b2eb7c73cad6b440ef0b76ae5991e2a1ff8e","_id":"incountry@3.1.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-PoHcQ1jV80BWkMOCz2dX+B/cbzYgMAN+DcmButQ3MfHGzfZ4ZREeqv6P8HNVMXe/TM93TK6KB681krCNDY8nqQ==","shasum":"861fdfa73897e94be7a4e1b3e3fc9909341b3d19","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.1.0.tgz","fileCount":220,"unpackedSize":564772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflZmKCRA9TVsSAnZWagAAoP0P/2hbEpZ+HPzV3piMoJLa\nsWbW1dReJMzFkTK+tg+a0oUg5gqERibrIpXiFCxYPw7ywvE1eDxfgFa7TI+Q\n+NPsli2MjwEaUOSZPZaTcqE7OMuxaAKD51bnYBX6l45F3Xz40Q3ilB5/Jt15\nq9/8JibNcrGAvST28U70x1xDWZjABN8LbA6RLFgeAnQPa6HZqUBNpBBI84YO\nGUzWASVcPueoN2q/+sAukY9Wc6NWAU/un5MzfzFNn1VMYmfp8PbCnbXeyPwz\ng9ZNFTc0SJX4QrW/XFi/4zDF0wr/3YN2L5/YscafrloPt5/51z1lNql0pC4Q\nawWOsIfkgmpYgBg62tmUQd/e04D8tWoMorpQwoCWjzrdBa8fQq1UiLjxJJ6T\nJ+AAzUG9C8hjnmKB/X2ZOpW47TWncZlSnekad9FGIMjpYotMfVlzWFRdrsok\nF5+jomvEOS5KSGY1pnP2rL20+sQUNA9C0zQ1G0c6rDZEF6LPzr/8rGI17cbt\n886Uad3t3EARgNAWI3dVc3UHeRQ4m2YoPC3JloUSIB3evmjkGxrC2d9jUZOX\nCE4htwRmO1zHYb8jrdqXEJGtlU5BYP6cVyrmHThrOXrOWaRZCdgxrZ0fZP9B\ne3qTVWZbT0K+HPSGcS6T6XOQOXKZhVKadHqo1ixkK5hH/NfFPO4amW37kyA+\nqno3\r\n=nh9x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCplYbdQ5kfVakufyHzDQupcHw0pdP0a1s0fSFa8TkrhQIhANaHnAAlg9zi47VRijHsAHfA2hSSjth3JNXMVThuWyP3"}]},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"joel-inc","email":"joel@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.1.0_1603639689928_0.1564114733211397"},"_hasShrinkwrap":false},"3.2.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"axios":"0.19.0","dotenv":"8.2.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build"},"version":"3.2.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/mocha":"7.0.2","@types/node":"13.13.4","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@types/uuid":"8.0.0","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"642d79bd21d82ae47c90e07a1069588a08b5a85c","_id":"incountry@3.2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-TBc1lMJF2sTxueBGPkQ4d4ajfbfKf1Ms5HhvRq+EiaTwek+AIIVAIKjEB7RHcFb4HRtp7gILQqGI/LfVQaKZ8Q==","shasum":"afae43fb70b434f7055e04dafbe031ac93ea9ef2","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.2.0.tgz","fileCount":220,"unpackedSize":570012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmD6dCRA9TVsSAnZWagAA7PAQAIPUkZKhZ9JiULJnFu/l\nEr2aSodLGD9hOZQrhmmNpdLA1AHY4F8MeeeeJXyYwwTclzE+jxbOg+tskbdn\n4YmgD7CKUzVNdrD3dEsWeynSOdld49LwXM5v5Ab6ztX2W3tY4sMrPJIhJWrC\nRdQTcdVbk4zU9LgFXTBkLuUkauNXEHCzWDqMJpt/5Taziy14ADE26gttgtXD\nfgvHrtMw1O4YQyQTsLiuwleste4bUw48MbYM5aK8/RzzyaUIDEebfeRD9/LL\nchj24BQyneCeFrSktB1+CtgOEmaTlPMGmRICVi4I78HInfs+BIjr4WGAqbyB\nY/IzbwsIm3FuCRRzHFJ3xkoKCeyqyzz8c3X15H2zaYcu6NRGbHMfy5rQFfth\nWOTLWiq+gxK4WFbfLNciOcA6m/amNJySccThOZ1P8vuGnGRSV8jfNwtUVO+v\nCrsqnuuxNq/t2EG4BoQL9tWXKkfbbVaMerSZzh0Ejd++7CkGXX9n/uoptKbw\n+Ls0hPBdqMAl/77ViAFZEX+Si0ENEcetxlKdcAJWr1wSFxyT1cX+AVfMHj7h\nk6n65sDL8qdybWCWxME9XK/VZC1Y6arV+w8Ck50maHTwQX+k+QfoMl/bOEz8\nA8rJBS9uyYqmsDBK+zVVNGrl56nbuV2ETzPsFq9pICoNWF0000YJaCDfeRjr\nC7i8\r\n=WOWp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJ1lK5BwkQEWk8yejLZfVCHfcSTGfHC+j7ieo/EJOK5QIgLItdJHmpe8uCqR+mfQnkcMyoAqa8s+0UaQOZ5vldvJI="}]},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"joel-inc","email":"joel@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.2.0_1603813020956_0.3507574842840371"},"_hasShrinkwrap":false},"3.3.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"13.13.4","@types/uuid":"8.0.0","axios":"0.19.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"3.3.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"286cc377017d75ba1ecba3a017c1625459e48484","_id":"incountry@3.3.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-mMWSdde8vhvIsmmilHQ6183kDGTgTmVRa2MzyTSkPHPfkjNSydYj04hFbTsP6Qnlhb6Nemml7mXvyUcjc1cLvg==","shasum":"d10b22699fc2ef0ad8f6157d2afec3dc6761897f","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.3.0.tgz","fileCount":272,"unpackedSize":675606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzNR9CRA9TVsSAnZWagAAPGUP/RSalS+hPGqjp929cRKL\n4qrKrULNR7ClN6vJCBkXhAi/YR42B+IiN/eTdGGxw+TiyTQTMhCaOrRh24lB\n+GmLC+2VU/lfMROXN1ffnyBQHowRKE2DLBcfIxS0WaKjhlzzU1yyVu9xM8dI\nWoRrDKJ7/xpha/L+Js0wlvSHHi8w/XM9cNCwoRYiMRfNcUeAroa4mAH+QJS4\nyirBKHhF0gpSJyIpQTmXBegYEHoRvi1yKtPySd4KE6vk5kaD+4jXH2mFs1fq\nuBEyrcUpoe62PggAaUWCtg85e4zd0I3xdjpCjHmrAS9+ey16BuXIIlpgPsAC\nVnkA0crliMlVWFKRRQ9Wkc5ziv5q8jAwMJ8e3XNqDe6r8P0aHXBrEN82GSr0\n+rPFZ+puwno77qPtZAp3PwpYD0yPK0XiXYdq5GZZBZUkEEY7FpOvWr5HvOSH\ne3gK7H5eldKdEanp+66oij2t9Jd14sTkMYx35GwKmbqJHmfTHb27xyvphQlR\nmhNUpUp+6Kmn84ix8xffbciMZFi7nvdg5dVv3e2uQD5DRTINTBlJ73JVgjqH\n9rmgpKwbavj6mxzOZBLcr9uxiMiZjafL5Lp1ldSD5EQzayKQz44CcAIwmKLV\nmQVqZMnZxJSHleMSdyRyGQtlU4hECCGyckRnT6dX/V9w4mDWBLwVeKkwC3sl\nTYL4\r\n=0fG9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeGX5+M0Y1zE/ll0L+G4T3sufWOLomynDHtelJPYctdgIhAIyeAXbCzYH/M+L4V8iTX8CFDaaoI305kP7/uOLkXJmV"}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"joel-inc","email":"joel@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.3.0_1607259260700_0.5208248439451741"},"_hasShrinkwrap":false},"3.4.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"13.13.4","@types/uuid":"8.0.0","axios":"0.21.1","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"3.4.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"5c992ed59ac711dee80e0e11f1004c1190c239a2","_id":"incountry@3.4.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Adebf7jlukbFVQz9VJemAV3Ph6ZmZYZXA70c/hKZjjOePqT5LH2+DShg9AaAtlx6Q+HGKgmZYuv9+ojDCZoAbQ==","shasum":"ace1dc29277e9913eafd14108351dada0076e11d","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.4.0.tgz","fileCount":283,"unpackedSize":768311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNTeyCRA9TVsSAnZWagAAfPoQAIIeOMetevf30wKaTt/k\nYuoc4TOWw6Ksss86zB7gAbrc87K2trqrwf9mcb17bxO7vcXXMkiGXslakmb4\nOJx4HA0N3VLd1c364AYIQQ/ZSksL2gjEDlSBqh3Hc2H+SeJ0qpkAThi1KX6g\nuu+UOcrpBGeF/rqbNKQVuXXWCjCqOMw1WlvGx2KskZfpd4NwWsXOVNRgHYXX\npWzqammHiS30DCAzp6JUhVh/cqfaFxKpBD/kGQ1E712Zkx1R7huPYvzxa7f+\nXRwtXKfTl02R3VNJwElGYTCcuQciz1iR7+4ktrxKOIze7kloQnl+ODCIILQu\n5sqg44chRPTqMioYhKxuAMtXB6f/k/KrjQv4Bi/8izJ11PY1VQpGqjbMA5Hd\nt8vicFZUfBpjh/hGTf+/6NHoqr8IxV9ZvlFtDc7H73/mfzRtGoldQAZ3oNX0\niF9mGpGyucDZfaEyLrlh38kriJmpomMZPqcgYehKHps8umSBWEIOOODd/f9p\nzeypQNCABfWieh4ZAVgbLYLqeLfP/vgMkYjnzVPWviewRcez3up4jKK/a0DY\nD+fZ8VuApfNYtaaF5/AdyIG1veVmucarB1rcG4+F6sCI+juQVQhw3NlgcUsg\noFE080ZA99G3KkuhsGnegPrcudrYl5W8Dkbu7TdQ9iikSW0UqpN+derG2V2+\n5+uG\r\n=e2PB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCii5Q+cXxDjEQc7zldke7VHX+UgUR+GStTDDctMr/Q2wIgPXc0lwvzTaWVbBT+gxOse7Wxi5W3CgoLuLATSYbo1T0="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"},{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.4.0_1614100401569_0.41163981800547744"},"_hasShrinkwrap":false},"3.4.1":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"13.13.4","@types/uuid":"8.0.0","axios":"0.21.1","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"3.4.1","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"9c6315175c0a7104ff23787f94fedf6efae8e3fc","_id":"incountry@3.4.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-3kzFWAkK6wo9D58lfnuePBqJUZv2/Q+BS/O3JXL2NrJNM91LNZ5ZUwH2KTnlK7X2j7rwGfwfg6O/ZEiRp8619w==","shasum":"3111bfd98f281d2d76d6702b48be712f723e9bcb","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.4.1.tgz","fileCount":283,"unpackedSize":768901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQ++CRA9TVsSAnZWagAA0zEP/1AZJP+6ok+BzkERDbq/\nNpL0J8DdUg04aeb585T0WTvptEsFNBf5HiVRDSV5urmTW+fzvMOAMesTnpGX\n42DCLwJRxif401hyUWAI3ju5anC51A7mUXukfQLhn/OlucZYcsTS4mRX3+M6\nymV1LG5DVvT7Re2xvvmXa4Vhus7/9IQCqp5irjOjMMxq4gxv0hcru6sdP7i9\n0c7BF5xqV2r0G90iMFr9G7hS0+PGSyMgUwEZu7KPwffQST78EtKI+oZ/iKIg\n0ZqNGCXl6iDcRdzTAvBLBuNW4BXssgAp+pWFeoypbBWE62QXWCiE2ZFD2/e6\nl64qV4upMem60qPGQtRjJogy4nOv7BmeW62tZdWktHpP2OmdxQvlkoAb8MWc\n0FEy9Q20igBeC4L2rDZ3AkjpmEVhsJPperRGyCzqyE5q+LZ5YUduTNGVqyD6\nOSS71sG8kiSQWyxo4jRHCsiXWtR3uJalvhxBnj7ab8+A/WiE3liPPY2ooZjM\no5c/MunR6W/yvsLiEhGlXs2gXhIZ7N7HgoUk82QjQAkqBlUcUBGbgl9xD3p1\nwGkCQMtsWu6eNFy38TlRU/AUbozxeAbEjITxTg0iGq14+whimpTmaiCuuCvQ\nwOMfUk1SCgGtEMkVh8jktNnCkhtzdYSCovMzQnqKi1ZG7RvuEUS3pY92qknK\nJ4KR\r\n=FWg9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5pmwXFFQznSzfIF5NRcgd5fndQVgYj7a0zXEci/XfiAIgWxKElqkmWMy9rOQROEcfmBH9SBn6xiCMwIwRZH/RvnU="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"},{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.4.1_1614352317814_0.6977366121950674"},"_hasShrinkwrap":false},"3.5.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"13.13.4","@types/uuid":"8.0.0","axios":"0.21.1","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"3.5.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.20","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"641dd3344158d889e0ab97755715035c435356b8","_id":"incountry@3.5.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-t6eiG4MZkOaJQkMqiVIi4bA8pVPFkHixUUF/eYDm5q1+Z6vesEHNx3j2MLVMAAEcQUydbKe/eQwF7vKxtza+Vw==","shasum":"11c47de5da06bd50d9c924f883a20291257e03e8","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.5.0.tgz","fileCount":332,"unpackedSize":887324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgacR0CRA9TVsSAnZWagAAAtcP/RHUAU6F2NVFLRtm8QL7\n+hh5dHFq7felRXHjLs8AXWLmVMNdwfpZmsv/3+O7y4eMgAii3mfjagFDvzYx\nWL1eZocDKUCMWf8vCE2ExzOnixlsQvCCGWQQmjYRAkhhw27ZUqt9ehgxEdXc\njKHTTP0vmI/YbHFt2/pZEo0tKUkfKcklVRNxMO90K7kzX6EQoATZM1nT0ixc\nk2XjTZpxE6PYcgcwunsk5ovBF9l49tYVD2uK5NQQBnqM4AylMDHMuL7u2jqc\nVk/MW6oP94zLHDntgC4ZWw0l2GiY1kCLQNIltOWvWzZ4m/zulj4AOmlayKTa\nW8PggAvC8vSQMXfS4+X1NKJNUA9aHyCkgGDWkYPJHClyeIvIE5aL6lRB//WR\nxMYvkTKArBqzONHk3GrLX3OxD+0MmjCAOISjKWwWfA4qgnad5+LFYrI5LGTj\nuIBF0tqxaW01ya8spI/xzHcwnAdWtGE4s2DZ0ZO/KHqIdcCRxp0e4bHVGv45\nX9rDgJzRGrGYM8wx5KREyDb0LainVZ9PfVFgvM8KFSxdMccQYvFR1W/2NDeI\nIZzV7cDi6CLZXEwo2C+QI4Z+yL3P2zUzNls99y9qdpn1O7/DiHc9QoV2TaoT\nj79XqATHVyeqyVOsKokzZTr+4S7C1lljTfoMPSTSeRovzrteI0l+mQNpVU5H\noW9W\r\n=02vH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEakIfhAILqF+bdoOQ5gkZE06QcOcLG6kb6SaS0Ox9hWAiAQlEmwZzf6ZuUeW+m+Kf3tGd+ECB+effk8oaUvMH/3Ug=="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"joel-inc","email":"joel@incountry.com"},{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.5.0_1617544307442_0.3186107887988161"},"_hasShrinkwrap":false},"3.6.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"13.13.4","@types/uuid":"8.0.0","axios":"0.21.1","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13","utf8":"3.0.0"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=8.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"3.6.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.21","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"2e90d67224a626f50cfcf539fced2c046887468c","_id":"incountry@3.6.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-JkERhyDmD/AUzvx1Uu3Es9a4Mbyzz05kWwSRLfYtZQUAx8zwBZuRv/R6dl9aYrWHmbXaj1euFjHsXgmItRp5Rg==","shasum":"865b7371fa3da52349cfe87b217a6c7e9f1898a0","tarball":"https://registry.npmjs.org/incountry/-/incountry-3.6.0.tgz","fileCount":263,"unpackedSize":811825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAFTjCRA9TVsSAnZWagAAUEUQAKQdaSyzdd1H5c6d8m/r\nKH8rTdm0Z4VtVGRJL+BvDxVWpCDE34YV64f/1bSaCpXHAB69Q8uOp/wB94Jo\nPFlgP9ly+spKrjJPDbFLgaCDeqkenvng9pyWduNZZqul5A1gePHqMZIbgolf\nP1EQNcTGFp687JrL3jycNW/lf+Hmf0ZsC4AuLUN21co8a/2uFrOLsxs0sCpm\nWPdh7yGxEDuyN9wKJtw7mPiX2Zh7QB8DfKKOECBwOL90f8+I3AUWGgDH6wID\nluLzAjXCHSBWQ3FJ2LNtLbya2H4tbJjn9oJAeho2YSdwipRr9739pOEoe/Xx\n0uM6vIc3hcYDam5SVemp+4z40gHbcfv9TDP7GL0kyPhtOfyla4OIT7dZ0qbn\nFDx+gAFg4pviLw5iPIUHv2g99QyBmjgBPBE5y37dQZ6rkyI4KXaTXdhuYPQS\nOSPUVkOYa+5VcANgEWaJGsD9xYFNCJ05c7HNcDyCkAnrgXTcO70bl+OcJYsx\nI/6RB5LV00Ypa55mH/MBCpczMlUdmgsJ8nRU8REexj4NdNOoq32yng3MEdHo\n+XWd4kwOwT7O61tCvlrpgIVU4hfuOpvTrkdhv6AC4hXUtEj5wkTPWjqjJW7j\ndo7Rw/s2MO7ryKjcB5PJ1AJ/KgQuDQBmQyEOL36pfTwG2FghmdBdSAu5AJ1C\nu11T\r\n=veF/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC1r/A+/94LPpiVf8NDva/1oC18f1FIxumGVIahV1QYRAiBjUiwwNQM936nqIOyC3mn7fDqmWHIWmhiGSamNZLOb9Q=="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_3.6.0_1627411683359_0.6493889906878145"},"_hasShrinkwrap":false},"4.0.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"12.20.21","@types/uuid":"8.0.0","axios":"0.22.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=12.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"4.0.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"2.30.0","@typescript-eslint/parser":"2.30.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"6.5.1","eslint-config-airbnb-base":"14.0.0","eslint-import-resolver-typescript":"2.0.0","eslint-plugin-import":"2.18.2","eslint-plugin-promise":"4.2.1","lodash":"4.17.21","mocha":"7.1.1","nock":"11.4.0","nyc":"14.1.1","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"52bb028bc6eaa472e2c991105eb942ccd90dd5cb","_id":"incountry@4.0.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-vnJ8b9FJsakPRWhWfCVXsmx7t4W6DoHMAAnpLqC7OgKxWL/Qiajxyy9Pi+NUqDepxzNMbxll9+z2E34XlGixww==","shasum":"4985ce6c72a2c800c57297013a9f475b315e70de","tarball":"https://registry.npmjs.org/incountry/-/incountry-4.0.0.tgz","fileCount":277,"unpackedSize":846036,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAD3jY4lK93sdDYnEmO3xwEyYcUuDo3ElKKUpKQYvvwzAiEA+H9kJwLZf4y9QQJe1yws8aXK1KK1MDyttksgt7dixns="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_4.0.0_1634822687036_0.9536300985646127"},"_hasShrinkwrap":false},"4.2.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"12.20.21","@types/uuid":"8.0.0","axios":"0.23.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=12.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"4.2.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"5.1.0","@typescript-eslint/parser":"5.1.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"8.1.0","eslint-config-airbnb-base":"14.2.1","eslint-import-resolver-typescript":"2.5.0","eslint-plugin-import":"2.25.2","eslint-plugin-promise":"5.1.1","lodash":"4.17.21","mocha":"9.1.3","nock":"11.4.0","nyc":"15.1.0","rewiremock":"3.14.3","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"59e5c20b52cbbf3bdebe147373fe9728ead61f6d","_id":"incountry@4.2.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9/TV19Z9qAMglaIvJtLf+mW0M54QNW2lXZdRjS0sphB9HW7DlteskfsUX7+4wcH63zJg02DrV7nTbpQDzG2S/A==","shasum":"d29fe6977efdf3d31ab524ceeb407710986c25eb","tarball":"https://registry.npmjs.org/incountry/-/incountry-4.2.0.tgz","fileCount":288,"unpackedSize":878995,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+idsjI/ekfTRvM30XZIrO2Qx2j1FUUJvV44p2ypQTaAiEA3CV4jW/4Ga5faykArs631x2D9n0Iwf75dFuoKIPcXHc="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_4.2.0_1635775882847_0.7728084693556252"},"_hasShrinkwrap":false},"4.3.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"12.20.21","@types/uuid":"8.0.0","axios":"0.23.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=12.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"4.3.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"5.1.0","@typescript-eslint/parser":"5.1.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"8.1.0","eslint-config-airbnb-base":"14.2.1","eslint-import-resolver-typescript":"2.5.0","eslint-plugin-import":"2.25.2","eslint-plugin-promise":"5.1.1","lodash":"4.17.21","mocha":"9.1.3","nock":"11.4.0","nyc":"15.1.0","rewiremock":"3.14.3","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"b138480f3b3d30177c12fb2f77ff1b546e925727","_id":"incountry@4.3.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0q2fKODYZJSyr57+cQ2RW4PPPGbBJ1MwE0ZxgrTCr+YCVzvi+LlhA99vcPqpBgGvDLVxDu5zurskjI9FoQgePQ==","shasum":"cb98229af80cd1f92c9ce98e84d0af361c1f655e","tarball":"https://registry.npmjs.org/incountry/-/incountry-4.3.0.tgz","fileCount":300,"unpackedSize":896118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpJljCRA9TVsSAnZWagAA1jEQAJbuFfzcsrPB+as5WEj2\nhUinNtTt9ebJCmKtqHhHh8414mSpoGkeJ0K2LqwK2OfULOcdrSnJNtPmodmi\ng2oEnZ61vn25Bl+MwykDTIfy0b0tyBSXfWknaCXM0reM7TNo2ZutH5p9MO29\ngOBG2viqDnWJI83tEn1keEJyUEQDD+XMbHpVWSvQ9Y1Wp32bvKxp4ywikcWK\nloK3QA9CO+cDVfl51a/s9ZuzWF79EhNodMetv2tM92Thp2XD7AxsQjeZtCjE\nje1vQEoChz8ivEku5MxySlCiOMTLgs/On4Tk0RujM2SQcT+DIgb6vuhnK4wV\nkjYDKb7810y/8fFYI4TP3fkAu+vTU42pxn4WBiOYE7d1NcMaDMcEe6GtTYaD\n1KL0V4+6ZHg+bqASdMmqHRjRmExE9LSqEGrBl3WUOZM1qfnJBmIYo+EI59Ne\nhlIBw419Qub8DHLG8jPJ57CRmpcuiFdIxqjGZpB6cgoAbr0QkW41JiKvaPAn\nG46SXpF5lLH5DCXh7LvOfzfUPOHQre9KmqudQ/H7lLlMI9jnBw4F4SifHQdm\nMPJenDHv1wsSVZI/KMGtGrd92/H9ixau3hUe8BqyXkI/hvrihMngJ4rlFLi2\nszSKZfuMr4jP/JotKiToA5Wzvxrc7yhGjBGjNFrhPb2vdPFCMXynUKqfnvZT\n6auG\r\n=X2Ky\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGnfZfni2DIXmiWvmjeUZnkz+QI+w5Tcl6iAg1zMTMGAiEA3X7oWsM0fyTWBpkjnu3vXACftcrdRyKHzS2rj8DGtNg="}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_4.3.0_1638177122842_0.9506912860094658"},"_hasShrinkwrap":false},"4.3.1":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"12.20.21","@types/uuid":"8.0.0","axios":"0.23.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=12.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"[ ! -f ./lib/storage.js ] && npm i typescript@3.8.3 && npm run build || true"},"version":"4.3.1","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"5.1.0","@typescript-eslint/parser":"5.1.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"8.1.0","eslint-config-airbnb-base":"14.2.1","eslint-import-resolver-typescript":"2.5.0","eslint-plugin-import":"2.25.2","eslint-plugin-promise":"5.1.1","lodash":"4.17.21","mocha":"9.1.3","nock":"11.4.0","nyc":"15.1.0","rewiremock":"3.14.3","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"272df7610ab8f3659155b2e74df36d581dc68d25","_id":"incountry@4.3.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EfqsnHSy0nZzc1tRErwbBbqn9FRS6VrC1VS0ojgYfFt3hHzqnUj/tCrjGFuonMyEC/bl2U+97fOtRyDIYdqFeA==","shasum":"42882664a3a520e27d2e518165416f08748482dc","tarball":"https://registry.npmjs.org/incountry/-/incountry-4.3.1.tgz","fileCount":300,"unpackedSize":897265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzGE2CRA9TVsSAnZWagAAsqQP/1LEL2dnxhF/JGrtId5x\nIAdY+yr4AnM8QjUASqjTWNz+iWgeDuPTDQag3Ig6yBiKABCuC5eFybukYP82\naBGsKXf21blI3WXRvmo/pumNP9DGEmrfG3cvoqd+4H0Z2d1NDlWRovb82ArN\nIoMgEZuzVP55XUNuk4jGxzeqG5S3DV2KwCEgHzxRlsmC+gTaIkt6E0/y9LEo\n0YOXzSm4N6/kLuOTzkJMf4NClcNsEzKjnBuCCwmTLOWBZP5LZD5RYKPnON/9\nSRdfgXJZ/WNh2tz4JA/7eiMMlQxHDqZ58dNkZkQQH8TE6DOOCbwf92c8Tkld\nqOrr0B9bI5O1bzvfyyfzTOYMz3QNP6vVh75k0tym6f1c5sYJb3vLfoXMIAtO\nEWZfeTdPr4UOM1OQeQpbszzq1gXyqXxTNrvX4SJ1IagYj/GeXwudSFwyVSBP\nXE8QRNHErSXsPP5z4846YbGaFzCkFrLcYU5CCQei83e6FfLhW6D+Z5unVyIH\n5mDV8lOg+CsGwaVULVfbky9WYfbdjknvLiB8B7nMhJdADc2bOiLWWDC7iDbC\nqDayFvH9NuI4ymJS8UiipyxCNdHro5Gj/eQflFcKvmy3BTnI1UKndun0/I7y\nZyMSPptToRQS+OfT4RSIavS+z4E7jj5yA+e0td7H3Dcsju0eF61I0iF3/nXE\n4mMQ\r\n=hDB+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT5yrfF7vUZ+50tENTK0lvR9tVliSxb9mjkr8AhXv90AIhAMv++PTzDftdLlUHOoJksEa0J+6SL7ipp4vLuLfPAA84"}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_4.3.1_1640784182389_0.7186189534816545"},"_hasShrinkwrap":false},"5.1.0":{"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"bundleDependencies":[],"dependencies":{"@types/lodash.get":"4.4.6","@types/lodash.intersection":"4.4.6","@types/node":"12.20.21","@types/uuid":"8.0.0","axios":"0.25.0","dotenv":"8.2.0","form-data":"3.0.0","fp-ts":"2.1.2","io-ts":"2.2.1","io-ts-types":"0.5.6","lodash.get":"4.4.2","lodash.intersection":"4.4.0","reflect-metadata":"0.1.13"},"deprecated":false,"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","engines":{"node":">=12.0.0"},"homepage":"https://github.com/incountry/sdk-nodejs#readme","license":"MIT","main":"lib/index.js","types":"lib/index.d.ts","name":"incountry","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"scripts":{"test":"nyc --report-dir=ut-coverage mocha 'tests/unit/**/*.ts'","integrations":"nyc --report-dir=it-coverage mocha --timeout 40000 'tests/integration/**/*.ts'","validate-eslint":"eslint . --ext .js,.ts --ignore-path .gitignore","build":"tsc -p ./tsconfig.build.json","watch":"tsc -p ./tsconfig.build.json --watch","prepublish":"npm run build","postinstall":"node postinstall.js"},"version":"5.1.0","devDependencies":{"@istanbuljs/nyc-config-typescript":"1.0.1","@types/chai":"4.2.11","@types/chai-as-promised":"7.1.2","@types/chai-datetime":"0.0.36","@types/mocha":"7.0.2","@types/sinon":"9.0.4","@types/sinon-chai":"3.2.4","@typescript-eslint/eslint-plugin":"5.1.0","@typescript-eslint/parser":"5.1.0","chai":"4.2.0","chai-as-promised":"7.1.1","chai-datetime":"1.8.0","chai-nock":"1.2.0","eslint":"8.1.0","eslint-config-airbnb-base":"14.2.1","eslint-import-resolver-typescript":"2.5.0","eslint-plugin-import":"2.25.2","eslint-plugin-promise":"5.1.1","lodash":"4.17.21","mocha":"9.1.3","nock":"11.4.0","nyc":"15.1.0","rewiremock":"3.14.3","sinon":"7.4.2","sinon-chai":"3.5.0","source-map-support":"0.5.19","ts-node":"8.10.2","typescript":"3.8.3","uuid":"3.3.3"},"gitHead":"1acdb24612c384532a54e7cb77862b24f3450975","_id":"incountry@5.1.0","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-YrV/JVd+ro0rt4Xk9N/9yzaZsbZW1l8QLstOngjous5OZ/Li2xOMKJxyECNb7i76n8ETGnEqQfpLLLKjTdiDJg==","shasum":"f7532da652faebef910b203ecf120c8acd158854","tarball":"https://registry.npmjs.org/incountry/-/incountry-5.1.0.tgz","fileCount":306,"unpackedSize":914362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh99AdCRA9TVsSAnZWagAAwlUQAJP+jCfdt5njfzxRRESa\npUJJy+8iz4lj8dKwRoh1kFFA6bRIu0WeUIZeIhaQJV3wrLI1xuGQ49/TA8fM\nSUrJam7V5D13jq1Gi6G3oUxe6PRMZBoOtSAmPutwrk+CYXiqcm+JOkyt4DmI\nela3ZQpJgsnoEGRETOSmAaxmCVxv+BOs3iM4uSJRhkD+XIFO58tnrmIPv7Ht\netS16zYa98nKJuGejE6hNvWEEdS/idwUUn4n8rrCjWu4T4MchpxZtKKr54kr\noNlVf5YmmPx/jO/qEBQEkgPJ9YL8xOQHOHrzKWOdFTSy1xJuwvbRmUgdLKZ2\n7xQ6/oTEwfbpaBBa4uBRDiHhb+sRns2UAWpGWemnOKtCjdH44orXMItZ6qI7\n+iO3gpOPA4RDeBlGwJ+3wsgn7QHKmxlMANR4oZw9hP8uXwrfEn+wo/LYhBPR\ng+IXvm4WDpU21qoKWQ2wv7CFNPCGMZzEpe2E7gITvFqTneeLcF/r1sbGcZjl\ndg30xBWFJNMCisP6NUAzCOKNe/U19Kx3RrlZU5ZLM7KbgWYy+DNYYDMktPGQ\n2Z8d27lrFtiwmHExFOReXHQjuIQJsDZQVyqKEkAGgnpz3iLDaug2w/wrjWbE\nU4LBE/VG1F0gfQmYF46rzFGfmPCbK4bRFywOvY69oD8c0OFOcnMIO6DqJui1\nEasy\r\n=bRjO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgS9xdFaDaUY+rq81ydGextxdGgmU0Ae8hMampUOESUAIhAJ69LlTEnURuqy3cOrpXZUD2mJvbDEp0c5dCjb76gCEI"}]},"_npmUser":{"name":"incountrysdks","email":"sdks@incountry.com"},"directories":{},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/incountry_5.1.0_1643630620786_0.8376995836681764"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-18T18:19:50.964Z","0.2.0":"2019-07-18T18:19:51.105Z","modified":"2022-05-05T21:13:30.760Z","0.2.1":"2019-07-19T14:20:08.485Z","0.2.2":"2019-07-25T19:27:14.123Z","0.2.3":"2019-08-01T16:44:12.653Z","0.2.4":"2019-08-12T17:46:52.377Z","0.2.5":"2019-08-17T00:15:28.687Z","0.2.6":"2019-08-19T22:29:27.214Z","0.2.7":"2019-08-19T23:09:13.275Z","0.3.0":"2019-08-22T21:23:24.548Z","0.4.0":"2019-08-30T19:22:55.087Z","0.4.1":"2019-08-30T19:28:49.094Z","0.4.2":"2019-10-09T17:10:05.038Z","1.0.0":"2019-12-18T14:11:25.191Z","1.0.0-a":"2019-12-25T11:42:15.868Z","1.1.0":"2020-01-27T13:17:29.152Z","1.1.1":"2020-04-22T13:03:23.505Z","2.0.0":"2020-06-19T14:08:25.166Z","2.1.0":"2020-06-28T17:20:52.914Z","3.0.0":"2020-09-01T17:31:22.773Z","3.0.1":"2020-09-10T10:19:54.131Z","3.1.0":"2020-10-25T15:28:10.098Z","3.2.0":"2020-10-27T15:37:01.507Z","3.3.0":"2020-12-06T12:54:20.893Z","3.4.0":"2021-02-23T17:13:22.226Z","3.4.1":"2021-02-26T15:11:58.017Z","3.5.0":"2021-04-04T13:51:47.627Z","3.0.100":"2021-07-16T16:47:44.577Z","3.0.101":"2021-07-19T12:57:54.737Z","3.0.102":"2021-07-19T13:10:34.026Z","3.6.0":"2021-07-27T18:48:03.510Z","4.0.0":"2021-10-21T13:24:47.293Z","4.2.0":"2021-11-01T14:11:23.080Z","4.3.0":"2021-11-29T09:12:03.081Z","4.3.1":"2021-12-29T13:23:02.575Z","5.1.0":"2022-01-31T12:03:41.007Z"},"maintainers":[{"name":"incountrysdks","email":"sdks@incountry.com"},{"name":"rommeroincountry","email":"roman.semin@incountry.com"}],"description":"SDK for writing, reading, and deleting records using Incountry's storage suite","homepage":"https://github.com/incountry/sdk-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/incountry/sdk-nodejs.git"},"author":{"name":"InCountry","email":"sdks@incountry.com","url":"https://incountry.com/"},"bugs":{"url":"https://github.com/incountry/sdk-nodejs/issues"},"license":"MIT","readme":"# InCountry Storage SDK\n[![Build Status](https://travis-ci.com/incountry/sdk-nodejs.svg?branch=master)](https://travis-ci.com/incountry/sdk-nodejs)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=incountry_sdk-nodejs&metric=alert_status)](https://sonarcloud.io/dashboard?id=incountry_sdk-nodejs)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=incountry_sdk-nodejs&metric=coverage)](https://sonarcloud.io/dashboard?id=incountry_sdk-nodejs)\n[![vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=incountry_sdk-nodejs&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=incountry_sdk-nodejs)\n\nTable of contents\n=================\n* [Installation](#installation)\n* [Countries list](#countries-list)\n* [Quickstart guide](#quickstart-guide)\n* [Storage configuration](#storage-configuration)\n    * [oAuth options configuration](#oauth-options-configuration)\n    * [Encryption key/secret](#encryption-keysecret)\n    * [Server side encryption](#server-side-encryption)\n    * [Logging](#logging)\n    * [Skipping Storage validation](#skipping-storage-validation)\n* [Usage](#usage)\n    * [Writing data to storage](#writing-data-to-storage)\n       * [List of available record fields](#list-of-available-record-fields)\n       * [Date fields](#date-fields)\n    * [Batches](#batches)\n    * [Reading stored data](#reading-stored-data)\n    * [Find records](#find-records)\n        * [Exact match search](#exact-match-search)\n        * [Partial text match search](#partial-text-match-search)\n        * [Search options](#search-options)\n          * [Sorting](#Sorting)\n        * [Find error handling](#find-error-handling)\n    * [Find one record](#find-one-record)\n    * [Deleting a single record](#deleting-a-single-record)\n    * [Deleting multiple records](#deleting-multiple-records)\n* [Attaching files to a record](#attaching-files-to-a-record)\n    * [Adding attachments](#adding-attachments)\n    * [Deleting attachments](#deleting-attachments)\n    * [Downloading attachments](#downloading-attachments)\n    * [Working with attachment meta info](#working-with-attachment-meta-info)\n* [Health check](#health-check)\n* [Data migration and key rotation support](#data-migration-and-key-rotation-support)\n* [AWS KMS integration](#aws-kms-integration)\n* [Error handling](#error-handling)\n* [Custom encryption support](#custom-encryption-support)\n* [Testing Locally](#testing-locally)\n\n\n## Installation\nThe SDK is available via NPM:\n\n```\nnpm install incountry --save\n```\n\n## Countries List\nTo get the full list of supported countries and their codes, please [follow this link](countries.md).\n\n\n## Quickstart guide\nTo access your data in InCountry Platform by using NodeJS SDK, you need to create an instance of the Storage class using the createStorage async factory method. You can retrieve the `oauth.clientId`, `oauth.clientSecret` and `environmentId` variables from your dashboard on InCountry Portal.\n\n```typescript\nconst { createStorage } = require('incountry');\nconst storage = await createStorage({\n  environmentId: '<environment_id>',\n  oauth: {\n    clientId: '<client_id>',\n    clientSecret: '<client_secret>',\n  },\n  getSecrets: () => '<encryption_secret>',\n});\n```\n\n## Storage Configuration\n\nBelow you can find a full list of possible configuration options for creating a Storage instance.\n\n```typescript\ntype StorageOptions = {\n  environmentId?: string;   // Required\n\n  oauth?: {\n    clientId?: string;      // Required when using oAuth authorization\n    clientSecret?: string;  // Required when using oAuth authorization\n    authEndpoints?: {       // Custom endpoints regional map to use for fetching oAuth tokens\n      default: string;\n      [key: string]: string;\n    };\n    token?: string;         // Used when OAuth token is already acquired prior to Storage initialization. Mutually exclusive with clientId, clientSecret, authEndpoints\n  };\n\n  endpoint?: string;        // Defines API URL\n  encrypt?: EncryptionType | boolean;        // Optional. Default is EncryptionType.LOCAL. Switch encryption modes:\n  // EncryptionType.LOCAL - Enables encryption using SDK. Encrypted data will be sent to InCountry platform.\n  // EncryptionType.SSE - Enables the server side encryption (SSE) mode. Unencrypted data will be sent to InCountry platform via HTTPS, then encrypted and saved on the server side. Enabling this option disables local (SDK-side) encryption, hashing and normalizing.\n  // EncryptionType.OFF - Base64 encoded not encrypted data will be sent and stored at InCountry platform\n  // Also supports boolean values as backward compatibility:\n  // true = EncryptionType.LOCAL\n  // false = EncryptionType.OFF\n\n  logger?: Logger;\n  getSecrets?: Function;    // Used to fetch an encryption secret. Not compatible with SSE mode.\n  normalizeKeys?: boolean;  // If set to 'true', all keys are stored as lowercase. The default value is 'false'. Not compatible with SSE mode.\n  countriesCache?: CountriesCache;\n  hashSearchKeys?: boolean; // Set to false to enable partial match search among record's text fields `key1, key2, ..., key20`. Defaults to true. Not compatible with SSE mode.\n\n  /**\n   * Defines API base hostname part to use.\n   * If set, all requests will be sent to https://${country}${endpointMask} host instead of the default\n   * one (https://${country}-mt-01.api.incountry.io)\n   */\n  endpointMask?: string;\n\n  /**\n   * If your PoPAPI configuration relies on a custom PoPAPI server (rather than the default one)\n   * use the `countriesEndpoint` option to specify the endpoint responsible for fetching the list of supported countries.\n   */\n  countriesEndpoint?: string;\n\n  httpOptions?: {\n    timeout?: NonNegativeInt; // HTTP request timeout, in milliseconds\n    maxBodyLength?: NonNegativeInt; // Maximum allowed HTTP request body length, in bytes; Defaults to 100 Mb\n    retryBaseDelay?: NonNegativeInt; // Base delay for HTTP request retries in case of server high load, in milliseconds; Defaults to 1s\n    retryMaxDelay?: NonNegativeInt; // Maximum delay for HTTP request retries in case of server high load, in milliseconds; Defaults to 32s\n  };\n};\n\nasync function createStorage(\n  options: StorageOptions,\n  customEncryptionConfigs?: CustomEncryptionConfig[]\n): Promise<Storage> {\n  /* ... */\n}\n```\n\n---\n\n#### oAuth options configuration\n\nThe SDK allows to precisely configure oAuth authorization endpoints (if needed). Use this option only if your plan configuration requires so.\n\nBelow you can find the example of how to create a storage instance with custom oAuth endpoints:\n```typescript\nconst { Storage } = require('incountry');\nconst storage = new Storage({\n  environmentId: '<environment_id>',\n  getSecrets: () => '<encryption_secret>',\n  oauth: {\n    clientId: '<client_id>',\n    clientSecret: '<client_secret>',\n    authEndpoints: {\n      \"default\": \"<default_auth_endpoint>\",\n      \"emea\": \"<auth_endpoint_for_emea_region>\",\n      \"apac\": \"<auth_endpoint_for_apac_region>\",\n      \"amer\": \"<auth_endpoint_for_amer_region>\",\n    },\n  },\n});\n```\n\n\nThe SDK also allows to use previously acquired oAuth tokens if needed. In this mode SDK is not responsible for oAuth token renewal and it should be done by SDK user himself.\n\nBelow you can find the example of how to specify OAuth token while creating a Storage instance:\n```typescript\nconst { Storage } = require('incountry');\nconst storage = new Storage({\n  environmentId: '<environment_id>',\n  getSecrets: () => '<encryption_secret>',\n  oauth: {\n    token: '<token>',\n  },\n});\n```\n\n\n#### Encryption key/secret\n\nThe `getSecrets` storage config option allows you to pass function which will be used to fetch an encryption key(s) or secret. This function should return either a string representing your secret or an object (so-called `SecretsData`) or a `Promise` which is resolved to such string or object:\n\n```typescript\nconst { createSecretKey } = require('crypto');\n\ntype Secret = {\n  secret: string | KeyObject;\n  version: NonNegativeInt;\n  isKey?: boolean;\n  isForCustomEncryption?: boolean;\n};\n\ntype SecretsData = {\n  currentVersion: NonNegativeInt;\n  secrets: Array<Secret>;\n};\n\n/// SecretsData example\n{\n  secrets: [\n    {\n      secret: 'aaa',\n      version: 0\n    },\n    {\n      secret: 'ABC...IHN0cmluZw==', // Should be a base64-encoded key (32 byte key)\n      version: 1,\n      isKey: true\n    },\n    {\n      secret: 'ccc',\n      version: 2,\n      isForCustomEncryption: true\n    }\n    {\n      secret: createSecretKey(Buffer.from('ABC...IHN0cmluZw==', 'base64')), // KeyObject with 32 byte key\n      version: 3,\n    }\n  ],\n  currentVersion: 1\n};\n```\n\nNote: even though SDK uses PBKDF2 to generate a cryptographically strong encryption key, you must ensure that you provide a secret/password which follows the modern security best practices and standards.\n\nThe `SecretsData` object allows you to specify multiple keys/secrets which the SDK will use for decryption based on the version of the key or secret used for encryption. Meanwhile SDK will encrypt data only by using a key (or secret) which matches the `currentVersion` parameter provided in the `SecretsData` object.\n\nThis enables the flexibility required to support Key Rotation policies when secrets (or keys) must be changed with time. The SDK will encrypt data by using the current secret (or key) while maintaining the ability to decrypt data records that were encrypted with old secrets (or keys). The SDK also provides a method for data migration which allows you to re-encrypt data with the newest secret (or key). For details please see the `migrate` method.\n\nThe SDK allows you to use custom encryption keys, instead of secrets. Please note that a user-defined encryption key should be a base64-encoded 32-bytes-long key as required by AES-256 cryptographic algorithm.\n\nBelow you can find several examples of how you can use the `getSecrets` storage config option:\n\n```typescript\n// Synchronous\nconst getSecretsSync = () => 'longAndStrongPassword';\nconst storage = await createStorage({\n  ...,\n  getSecrets: getSecretsSync,\n});\n\n// Asynchronous\nconst getSecretsAsync = async () => {\n  const secretsData = await getSecretsDataFromSomewhere();\n  return secretsData;\n};\nconst storage = await createStorage({\n  ...,\n  getSecrets: getSecretsAsync,\n});\n\n// Using promises syntax\nconst getSecretsPromise = () =>\n  new Promise(resolve => {\n    getSecretsDataFromSomewhere(secretsData => {\n      resolve(secretsData);\n    });\n  });\nconst storage = await createStorage({\n  ...,\n  getSecrets: getSecretsPromise,\n});\n```\n\n#### Server side encryption\nSDK supports server side encryption mode. In this mode all the data encryption and hashing is performed server-side. The input data is sent to the InCountry platform as is.\nBelow you can find an example of how to use the `{ encrypt: EncryptionType.SSE }` option:\n\n```typescript\nconst { createStorage } = require('incountry');\nconst storage = await createStorage({\n  environmentId: '<environment_id>',\n  oauth: {\n    clientId: '<client_id>',\n    clientSecret: '<client_secret>',\n  },\n  encrypt: EncryptionType.SSE,\n});\n```\n\nWith SSE mode enabled SDK ignores the following configuration parameters: `normalizeKeys`, `hashSearchKeys` and `getSecrets` callback.\n\n**NOTE**  Availability of the SSE mode may vary per subscription plan. Please contact the InCountry support team for details.\n\n#### Logging\n\nBy default, the SDK outputs logs into `console` in JSON format. You can override this behavior by passing the logger object as a Storage constructor parameter. The logger object must correspond to the following structure:\n\n```typescript\n// Custom logger must implement `write` method\n\nconst customLogger = {\n  write: (logLevel: LogLevel, message: string, meta?: {}): void => console.log(`${new Date().toISOString()} [${logLevel}] ${message}`, meta);\n};\n\nconst storage = await createStorage({\n  environmentId: 'envId',\n  oauth: { clientId: 'clientId', clientSecret: 'clientSecret' },\n  getSecrets: () => '',\n  logger: customLogger\n});\n```\n\n#### Skipping Storage validation\n\nYou can create an instance of the `Storage` class and run all asynchronous checks by yourself (or skip them at your own risk!).\n\n```typescript\nconst { Storage } = require('incountry');\nconst storage = new Storage({...});\n\nawait storage.validate();\n```\n\nThe `validate` method fetches the secret using `getSecrets` and validates it. If custom encryption configurations were provided they would also be checked with all the matching secrets.\n\n\n## Usage\n\n### Writing data to Storage\n\nUse the `write` method to create/replace a record (by `recordKey`).\n```typescript\ntype StorageRecordData = {\n  recordKey: string; // Accepts non-empty string\n  parentKey?: string | null;\n  profileKey?: string | null;\n  key1?: string | null;\n  ...,\n  key20?: string | null;\n  serviceKey1?: string | null;\n  ...,\n  serviceKey5?: string | null;\n  body?: string | null;\n  precommitBody?: string | null;\n  rangeKey1?: number | null; // Accepts only Integer numbers\n  ...,\n  rangeKey10?: number | null; // Accepts only Integer numbers\n  expiresAt?: string | number | Date | MicroDate | null; // Accepts ISO-8601 formatted strings with microseconds, numeric timestamps with decimal microseconds, Date and MicroDate objects\n};\n\ntype StorageRecord = {\n  recordKey: string;\n  body: string | null;\n  parentKey: string | null;\n  profileKey: string | null;\n  precommitBody: string | null;\n  key1?: string | null;\n  key2?: string | null;\n  key3?: string | null;\n  key4?: string | null;\n  key5?: string | null;\n  key6?: string | null;\n  key7?: string | null;\n  key8?: string | null;\n  key9?: string | null;\n  key10?: string | null;\n  key11?: string | null;\n  key12?: string | null;\n  key13?: string | null;\n  key14?: string | null;\n  key15?: string | null;\n  key16?: string | null;\n  key17?: string | null;\n  key18?: string | null;\n  key19?: string | null;\n  key20?: string | null;\n  serviceKey1: string | null;\n  serviceKey2: string | null;\n  serviceKey3: string | null;\n  serviceKey4: string | null;\n  serviceKey5: string | null;\n  rangeKey1: Int | null;\n  rangeKey2: Int | null;\n  rangeKey3: Int | null;\n  rangeKey4: Int | null;\n  rangeKey5: Int | null;\n  rangeKey6: Int | null;\n  rangeKey7: Int | null;\n  rangeKey8: Int | null;\n  rangeKey9: Int | null;\n  rangeKey10: Int | null;\n  createdAt: MicroDate;\n  updatedAt: MicroDate;\n  expiresAt: MicroDate | null;\n  attachments: StorageRecordAttachment[];\n};\n\ntype WriteResult = {\n  record: StorageRecord;\n};\n\nasync write(\n  countryCode: string,\n  recordData: StorageRecordData,\n  requestOptions: RequestOptions = {},\n): Promise<WriteResult> {\n  /* ... */\n}\n```\n\nBelow you can find the example of how to use the `write` method.\n\n```typescript\nconst recordData = {\n  recordKey: '<key>',\n  body: '<body>',\n  profileKey: '<profile_key>',\n  rangeKey1: 0,\n  key2: '<key2>',\n  key3: '<key3>'\n}\n\nconst writeResult = await storage.write(countryCode, recordData);\n```\n\n\n#### List of available record fields\nv3.0.0 release introduced a series of new fields available for data storage. Below you can find the full list of all the fields available for storage in InCountry Platform along with their types and storage methods. Each field is either encrypted, hashed or stored as follows:\n\n\n##### String fields, hashed:\n```typescript\nrecordKey\nparentKey\nprofileKey\nserviceKey1\nserviceKey2\nserviceKey3\nserviceKey4\nserviceKey5\n```\n##### String fields, hashed if Storage options \"hashSearchKeys\" is set to true (by default it is):\n**WARNING** If the `hashSearchKeys` option is set to `false` the following string fields will have length limitation of 256 characters at most.\n\n```typescript\nkey1\nkey2\nkey3\nkey4\nkey5\nkey6\nkey7\nkey8\nkey9\nkey10\nkey11\nkey12\nkey13\nkey14\nkey15\nkey16\nkey17\nkey18\nkey19\nkey20\n```\n\n##### String fields, encrypted:\n```typescript\nbody\nprecommitBody\n```\n\n##### Int fields, plain:\n```typescript\nrangeKey1\nrangeKey2\nrangeKey3\nrangeKey4\nrangeKey5\nrangeKey6\nrangeKey7\nrangeKey8\nrangeKey9\nrangeKey10\n```\n\n##### Date fields, plain:\n```typescript\ncreatedAt\nupdatedAt\nexpiresAt\n```\n\n**WARNING** Records with non-null `expiresAt` value will be automatically deleted upon reaching the specified date.\n\n#### Date fields\nUse the `createdAt` and `updatedAt` fields to access date-related information about records. The `createdAt` field stores a date when a record was initially created in the target country. The `updatedAt` field stores a date of the latest write operation for the given `recordKey`.\n\nUse `expiresAt` field to limit the lifespan of a record stored in InCountry Platform. The record will be automatically deleted upon reaching the specified date.\n\nBelow is an example of how to create a record that will be deleted in a day:\n\n```typescript\nconst nextDayDate = new Date();\nnextDayDate.setDate(nextDayDate.getDate() + 1);\n\nconst recordData = {\n  recordKey: '<key>',\n  ...,\n  expiresAt: nextDayDate,\n}\n\nconst writeResult = await storage.write(countryCode, recordData);\n```\n\n---\n**NOTE**\n\nAll dates are stored in UTC timezone and converted to UTC timezone in case of `expiresAt`.\n\nSDK accepts ISO-8601 formatted strings, e.g '2021-03-11T17:23:05.941Z', numeric timestamps with decimal microseconds, Date and MicroDate objects.\nMicroseconds are accepted using ISO string ('2021-03-11T17:23:05.941001Z'), float number timestamps (1630574845881.123) or MicroDate object.\n\nIt's highly recommended to provide timezone-aware dates to avoid any timezone-related issues in future.\n\n---\n\n\n### Batches\n\nYou can use the `batchWrite` method to create/replace multiple records at once.\n\n```typescript\ntype BatchWriteResult = {\n  records: Array<StorageRecord>;\n};\n\nasync batchWrite(\n  countryCode: string,\n  records: Array<StorageRecordData>,\n  requestOptions: RequestOptions = {},\n): Promise<BatchWriteResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nbatchResult = await storage.batchWrite(countryCode, recordDataArr);\n```\n\n### Reading stored data\n\nYou can read the stored data records by its `recordKey` by using the `read` method. It accepts an object with the two fields - `country` and `recordKey`.\nIt returns a `Promise` which is resolved to `{ record }` or is rejected if there are no records for the passed `recordKey`.\n\n```typescript\ntype StorageRecord = {\n  recordKey: string;\n  body: string | null;\n  parentKey: string | null;\n  profileKey: string | null;\n  precommitBody: string | null;\n  key1?: string | null;\n  key2?: string | null;\n  key3?: string | null;\n  key4?: string | null;\n  key5?: string | null;\n  key6?: string | null;\n  key7?: string | null;\n  key8?: string | null;\n  key9?: string | null;\n  key10?: string | null;\n  key11?: string | null;\n  key12?: string | null;\n  key13?: string | null;\n  key14?: string | null;\n  key15?: string | null;\n  key16?: string | null;\n  key17?: string | null;\n  key18?: string | null;\n  key19?: string | null;\n  key20?: string | null;\n  serviceKey1: string | null;\n  serviceKey2: string | null;\n  serviceKey3: string | null;\n  serviceKey4: string | null;\n  serviceKey5: string | null;\n  rangeKey1: Int | null;\n  rangeKey2: Int | null;\n  rangeKey3: Int | null;\n  rangeKey4: Int | null;\n  rangeKey5: Int | null;\n  rangeKey6: Int | null;\n  rangeKey7: Int | null;\n  rangeKey8: Int | null;\n  rangeKey9: Int | null;\n  rangeKey10: Int | null;\n  createdAt: MicroDate;\n  updatedAt: MicroDate;\n  expiresAt: MicroDate | null;\n  attachments: StorageRecordAttachment[];\n}\n\ntype ReadResult = {\n  record: StorageRecord;\n};\n\nasync read(\n  countryCode: string,\n  recordKey: string,\n  requestOptions: RequestOptions = {},\n): Promise<ReadResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```javascript\nconst readResult = await storage.read(countryCode, recordKey);\n```\n\n### Find records\n\nYou can look up for data records either by using exact match search operators or partial text match operator in almost any combinations. More in [Date fields](#date-fields) section\n\n```typescript\ntype DateLike = string | number | Date | MicroDate;\ntype FilterDateQuery = DateLike | null | { $not?: DateLike | null; $gt?: DateLike; $gte?: DateLike; $lt?: DateLike; $lte?: DateLike; };\ntype FilterStrictDateQuery = DateLike | { $not?: DateLike; $gt?: DateLike; $gte?: DateLike; $lt?: DateLike; $lte?: DateLike; };\ntype FilterNumberQuery = number | number[] | null | { $not?: number | number[] | null; $gt?: number; $gte?: number; $lt?: number; $lte?: number; }; // number[] should be a non empty array\ntype FilterStringQuery = string | string[] | null | { $not?: string | string[] | null }; // string[] should be a non empty array\ntype FilterStringWithLikeQuery = string | string[] | null | { $not?: string | string[] | null, $like?: string };\n\ntype FindFilterStringFields = {\n  recordKey: FilterStringQuery;\n  parentKey: FilterStringQuery;\n  key1: FilterStringWithLikeQuery;\n  key2: FilterStringWithLikeQuery;\n  key3: FilterStringWithLikeQuery;\n  key4: FilterStringWithLikeQuery;\n  key5: FilterStringWithLikeQuery;\n  key6: FilterStringWithLikeQuery;\n  key7: FilterStringWithLikeQuery;\n  key8: FilterStringWithLikeQuery;\n  key9: FilterStringWithLikeQuery;\n  key10: FilterStringWithLikeQuery;\n  key11: FilterStringWithLikeQuery;\n  key12: FilterStringWithLikeQuery;\n  key13: FilterStringWithLikeQuery;\n  key14: FilterStringWithLikeQuery;\n  key15: FilterStringWithLikeQuery;\n  key16: FilterStringWithLikeQuery;\n  key17: FilterStringWithLikeQuery;\n  key18: FilterStringWithLikeQuery;\n  key19: FilterStringWithLikeQuery;\n  key20: FilterStringWithLikeQuery;\n  profileKey: FilterStringQuery;\n  serviceKey1: FilterStringQuery;\n  serviceKey2: FilterStringQuery;\n  serviceKey3: FilterStringQuery;\n  serviceKey4: FilterStringQuery;\n  serviceKey5: FilterStringQuery;\n}\n\ntype FindFilterNumberFields = {\n  rangeKey1: FilterNumberQuery;\n  rangeKey2: FilterNumberQuery;\n  rangeKey3: FilterNumberQuery;\n  rangeKey4: FilterNumberQuery;\n  rangeKey5: FilterNumberQuery;\n  rangeKey6: FilterNumberQuery;\n  rangeKey7: FilterNumberQuery;\n  rangeKey8: FilterNumberQuery;\n  rangeKey9: FilterNumberQuery;\n  rangeKey10: FilterNumberQuery;\n  version: FilterNumberQuery;\n};\n\ntype FindFilterDateFields = {\n  createdAt: FilterStrictDateLikeQuery;\n  updatedAt: FilterStrictDateLikeQuery;\n  expiresAt: FilterDateLikeQuery;\n};\n\ntype FindFilter = Partial<FindFilterStringFields & FindFilterNumberFields & FindFilterDateFields {\n  searchKeys: string;\n  $or: Array<Partial<FindFilterStringFields>>\n}>;\n\n```\n\n\n#### Exact match search\n\nThe following exact match search criteria are available:\n- single value:\n```typescript\n// Matches all records where record.key1 = 'abc' AND record.rangeKey1 = 1\n{ key1: 'abc', rangeKey1: 1 }\n```\n\n- multiple values as an array:\n```typescript\n// Matches all records where (record.key2 = 'def' OR record.key2 = 'jkl') AND (record.rangeKey1 = 1 OR record.rangeKey1 = 2)\n{ key2: ['def', 'jkl'], rangeKey1: [1, 2] }\n```\n\n- a logical NOT operator for [String fields](#string-fields-hashed) and `version`:\n```typescript\n// Matches all records where record.key3 <> 'abc'\n{ key3: { $not: 'abc' } }\n\n// Matches all records where record.key3 <> 'abc' AND record.key3 <> 'def'\n{ key3: { $not: ['abc', 'def'] } }\n\n// Matches all records where record.version <> 1\n{ version: { $not: 1 }}\n```\n\n- comparison operators for [Int fields](#int-fields-plain):\n```typescript\n// Matches all records where record.rangeKey1 >= 5 AND record.rangeKey1 <= 100\n{ rangeKey1: { $gte: 5, $lte: 100 } }\n```\n\n- multiple criteria with `$or` operator:\n```typescript\n{\n  $or: [\n    { key1: 'john', key2: 'smith' },\n    { key1: 'smith', key2: 'john' },\n  ]\n}\n\n{\n  $or: [\n    { key1: { $like: 'john' } },\n    { key2: { $like: 'john' } },\n  ]\n}\n```\nNote: currently, nested `$or` operators and non-string fields inside `$or` operator are not supported.\n\n#### Partial text match search\n\nYou can also look up for data records by partial match using the `searchKeys` operator which performs partial match\nsearch (similar to the `LIKE` SQL operator, without special characters) within records text fields `key1, key2, ..., key20`.\n```typescript\n// Matches all records where record.key1 LIKE 'abc' OR record.key2 LIKE 'abc' OR ... OR record.key20 LIKE 'abc'\n{ searchKeys: 'abc' }\n```\n\n**Please note:** The `searchKeys` operator cannot be used in combination with any of `key1, key2, ..., key20` keys and works only in combination with the non-hashing Storage mode (hashSearchKeys param for Storage).\n\n```typescript\n// Matches all records where (record.key1 LIKE 'abc' OR record.key2 LIKE 'abc' OR ... OR record.key20 LIKE 'abc') AND (record.rangeKey1 = 1 OR record.rangeKey1 = 2)\n{ searchKeys: 'abc', rangeKey1: [1, 2] }\n\n// Causes validation error (StorageClientError)\n{ searchKeys: 'abc', key1: 'def' }\n```\n\nAnother way to find records by partial key match is using `$like` operator. It provides a partial match search (similar to the `LIKE` SQL operator without special characters) against one of the record’s string fields `key1, key2, ..., key20`.\n```typescript\n// Matches all records where record.key3 LIKE 'abc'\n{ key3: { $like: 'abc' } }\n```\n\nNote: You can use either `searchKeys` or `$like`, not both.\n\n#### Search options\n\nThe `options` parameter provides the following choices to manipulate the search results:\n- `limit` allows to limit the total number of records returned;\n- `offset` allows to specify the starting index used for records pagination;\n- `sort` allows to sort the returned records by one or multiple keys;\n\n**WARNING** To use `sort` in find() call for string keys `key1...key20` you need to set `hashSearchKeys` option to `false`.\n\n##### Sorting\n\nFields that records can be sorted by:\n```typescript\ntype SortKey =\n  | 'createdAt'\n  | 'updatedAt'\n  | 'expiresAt'\n  | 'key1'\n  | 'key2'\n  | 'key3'\n  | 'key4'\n  | 'key5'\n  | 'key6'\n  | 'key7'\n  | 'key8'\n  | 'key9'\n  | 'key10'\n  | 'key11'\n  | 'key12'\n  | 'key13'\n  | 'key14'\n  | 'key15'\n  | 'key16'\n  | 'key17'\n  | 'key18'\n  | 'key19'\n  | 'key20'\n  | 'rangeKey1'\n  | 'rangeKey2'\n  | 'rangeKey3'\n  | 'rangeKey4'\n  | 'rangeKey5'\n  | 'rangeKey6'\n  | 'rangeKey7'\n  | 'rangeKey8'\n  | 'rangeKey9'\n  | 'rangeKey10';\n```\n\nNote: The SDK returns 100 records at most.\n\n\n```typescript\ntype SortItem = Partial<Record<SortKey, 'asc' | 'desc'>>; // each sort item should describe only one key!\n\ntype FindOptions = {\n  limit?: number;\n  offset?: number;\n  sort?: NonEmptyArray<SortItem>;\n};\n\ntype FindResult = {\n  meta: {\n    total: number;\n    count: number;\n    limit: number;\n    offset: number;\n  };\n  records: Array<StorageRecord>;\n  errors?: Array<{ error: StorageCryptoError; rawData: ApiRecord }>;\n};\n\nasync find(\n  countryCode: string,\n  filter: FindFilter = {},\n  options: FindOptions = {},\n  requestOptions: RequestOptions = {},\n): Promise<FindResult> {\n  /* ... */\n}\n```\n\nExample of usage\n```typescript\nconst filter = {\n  key1: 'abc',\n  key2: ['def', 'jkl'],\n  key3: { $not: null },\n  profileKey: 'test2',\n  rangeKey1: { $gte: 5, $lte: 100 },\n  rangeKey2: { $not: [0, 1] },\n}\n\nconst options = {\n  limit: 100,\n  offset: 0,\n  sort: [{ createdAt: 'asc' }, { rangeKey1: 'desc' }],\n};\n\nconst findResult = await storage.find(countryCode, filter, options);\n```\n\nThe returned `findResult` object looks like the following:\n\n```typescript\n{\n  records: [{/* StorageRecord */}],\n  errors: [],\n  meta: {\n    limit: 100,\n    offset: 0,\n    total: 24\n  }\n}\n```\n\nwith `findResult.records` sorted according to the following pseudo-sql:\n```sql\nSELECT * FROM record WHERE ...  ORDER BY createdAt asc, rangeKey1 desc\n```\n\n#### Find Error handling\n\nYou may encounter a situation when the `find` method receives records that cannot be decrypted.\nFor example, this may happen once the encryption key has been changed while the found data was encrypted with the older version of that key.\nIn such cases data returned by the find() method will be as follows:\n\n```typescript\n{\n  records: [/* successfully decrypted records */],\n  errors: [/* errors */],\n  meta: {/* ... */}\n}: FindResult\n```\n\n### Find one record\n\nIf you need to find only one of the records matching a specific filter, you can use the `findOne` method.\nIf a record is not found, it returns `{ record: null }`.\n\n```typescript\ntype FindOneResult = {\n  record: StorageRecord | null;\n};\n\nasync findOne(\n  countryCode: string,\n  filter: FindFilter = {},\n  options: FindOptions = {},\n  requestOptions: RequestOptions = {},\n): Promise<FindOneResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nconst findOneResult = await storage.findOne(countryCode, filter);\n```\n\n### Deleting a single record\n\nYou can use the `delete` method to delete a record from InCountry Platform. It is possible by using the `recordKey` field only.\n```typescript\ntype DeleteResult = {\n  success: true;\n};\n\nasync delete(\n  countryCode: string,\n  recordKey: string,\n  requestOptions: RequestOptions = {},\n): Promise<DeleteResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nconst deleteResult = await storage.delete(countryCode, recordKey);\n```\n\n### Deleting multiple records\n\nYou can use the `batchDelete` method to delete multiple records from the InCountry platform. For now, the SDK allows deletion only by a list of `recordKeys`.\n\n```typescript\ntype DeleteFilter = {\n  recordKey: string[];\n};\n\ntype DeleteResult = {\n  success: true;\n};\n\nasync batchDelete(\n  countryCode: string,\n  filter: DeleteFilter,\n  requestOptions: RequestOptions = {},\n): Promise<DeleteResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nconst deleteResult = await storage.batchDelete(countryCode, { recordKey: ['aaa'] });\n```\n\n\n\n\n## Attaching files to a record\n\n---\n**NOTE**\n\nAttachments are currently available for InCountry dedicated instances only. Please check your subscription plan for details. This may require specifying your dedicated instance endpoint when configuring NodeJS SDK Storage.\n\n---\n\nInCountry Storage allows you to attach files to the previously created records. Attachments' meta information is available through the `attachments` field of `StorageRecord` object.\n\n\n```typescript\ntype StorageRecord = {\n  /* ... other fields ...  */\n  attachments: StorageRecordAttachment[];\n}\n\ntype StorageRecordAttachment = {\n  fileId: string;\n  fileName: string;\n  hash: string;\n  mimeType: string;\n  size: number;\n  createdAt: MicroDate;\n  updatedAt: MicroDate;\n  downloadLink: string;\n}\n```\n\n\n### Adding attachments\nThe `addAttachment` method allows you to add or replace attachments.\nFile data can be provided either as `Readable` stream, `Buffer` or `string` with a path to the file in the file system.\n\nNote: attaching file with size exceeding 100 Mb is not supported at the moment.\n\n```typescript\ntype AttachmentData = {\n  file: Readable | Buffer | string;\n  fileName: string;\n}\n\nasync addAttachment(\n  countryCode: string,\n  recordKey: string,\n  { file, fileName }: AttachmentData,\n  upsert = false,\n  requestOptions: RequestOptions = {},\n): Promise<StorageRecordAttachment> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\n// using file path\nawait storage.addAttachment(COUNTRY, recordData.recordKey, { file: '../file' });\n\n// using data Stream\nimport * as fs from 'fs';\n\nconst file = fs.createReadStream('./LICENSE');\nawait storage.addAttachment(COUNTRY, recordData.recordKey, { file });\n```\n\n### Deleting attachments\nThe `deleteAttachment` method allows you to delete attachment using its `fileId`.\n\n```typescript\nasync deleteAttachment(\n  countryCode: string,\n  recordKey: string,\n  fileId: string,\n  requestOptions: RequestOptions = {},\n): Promise<unknown> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nawait storage.deleteAttachment(COUNTRY, recordData.recordKey, attachmentMeta.fileId);\n```\n\n### Downloading attachments\nThe `getAttachmentFile` method allows you to download attachment contents.\nIt returns object with readable stream and filename.\n\n```typescript\nasync getAttachmentFile(\n  countryCode: string,\n  recordKey: string,\n  fileId: string,\n  requestOptions: RequestOptions = {},\n): Promise<GetAttachmentFileResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nimport * as fs from 'fs';\n\nconst { attachmentData } = await storage.getAttachmentFile(COUNTRY, recordData.recordKey, attachmentMeta.fileId);\n\nconst { file, fileName } = attachmentData;\nconst writeStream = fs.createWriteStream(`./${fileName}`);\nfile.pipe(writeStream);\n```\n\n### Working with attachment meta info\nThe `getAttachmentMeta` method allows you to retrieve attachment's metadata using its `fileId`.\n```typescript\nasync getAttachmentMeta(\n  countryCode: string,\n  recordKey: string,\n  fileId: string,\n  requestOptions: RequestOptions = {},\n): Promise<StorageRecordAttachment> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nconst meta: StorageRecordAttachment = await storage.getAttachmentMeta(COUNTRY, recordData.recordKey, attachmentMeta.fileId);\n```\n\nThe `updateAttachmentMeta` method allows you to update attachment's metadata (MIME type and file name).\n\n```typescript\ntype AttachmentWritableMeta = {\n  fileName?: string;\n  mimeType?: string;\n};\n\nasync updateAttachmentMeta(\n  countryCode: string,\n  recordKey: string,\n  fileId: string,\n  fileMeta: AttachmentWritableMeta,\n  requestOptions: RequestOptions = {},\n): Promise<StorageRecordAttachment> {\n    /* ... */\n}\n```\n\nExample of usage:\n```typescript\nawait storage.updateAttachmentMeta(COUNTRY, data.recordKey, attachmentMeta.fileId, { fileName: 'new name!' });\n```\n\n\n## Health Check\n\nThe `healthcheck` method of `Storage` allows you to check availability of a remote storage service by country code.\n\n\n```typescript\ntype HealthcheckResult = {\n  result: boolean;\n};\n\nasync healthcheck(\n  countryCode: string,\n  requestOptions: RequestOptions = {},\n): Promise<HealthcheckResult> {\n  /* ... */\n}\n```\n\n\nExample of usage:\n```typescript\nconst { result } = await storage.healthcheck(COUNTRY);\n```\n\n\n## Data Migration and Key Rotation support\n\nUsing `getSecrets` storage config options that provides `SecretsData` object enables key rotation and data migration support.\n\nSDK introduces `migrate` method which allows you to re-encrypt data encrypted with old versions of the secret.\nIt returns an object which contains some information about the migration - the amount of records migrated (`migrated`) and the amount of records left to migrate (`totalLeft`) (which basically means the amount of records with version different from `currentVersion` provided by `SecretsData`).\n\nFor a detailed example of a migration script please see [examples/migration.js](examples/migration.js)\n\n```typescript\ntype MigrateResult = {\n  meta: {\n    migrated: number;\n    totalLeft: number;\n  };\n};\n\nasync migrate(\n  countryCode: string,\n  limit = FIND_LIMIT,\n  findFilter: FindFilter = {},\n  requestOptions: RequestOptions = {},\n): Promise<MigrateResult> {\n  /* ... */\n}\n```\n\nExample of usage:\n```typescript\nconst migrateResult = await storage.migrate(countryCode);\n```\n\n\n## AWS KMS integration\n\nInCountry NodeJS SDK supports usage of any 32-byte (256-bit) AES key, including ones produced by AWS KMS symmetric master key (CMK).\n\nThe suggested use case assumes that AWS user already got his KMS encrypted data key (AES_256) generated. Afterwards the key gets decrypted using AWS Node.js client library (`aws-sdk/clients/kms`) and then provided to InCountry NodeJS SDK's `getSecrets()` function.\n\nFor a detailed example of AWS KMS keys usage please see [examples/aws-kms.js](examples/aws-kms.js)\n\n\n## Error Handling\n\nInCountry NodeJS SDK throws the following Exceptions:\n\n- **StorageConfigValidationError** - used for Storage options validation errors. Can be thrown by any public method.\n\n- **SecretsProviderError** - can be thrown during the call of `getSecrets()` function. Wraps the original error which occurred in `getSecrets()`.\n\n- **SecretsValidationError** - can be thrown if `getSecrets()` function returned secrets in wrong format.\n\n- **InputValidationError** - used for input validation errors. Can be thrown by all public methods except Storage constructor.\n\n- **StorageAuthenticationError** - can be thrown if SDK failed to authenticate in InCountry system with the provided credentials.\n\n- **StorageClientError** - used for various errors related to Storage configuration. All of the errors classes `StorageConfigValidationError`, `SecretsProviderError`, `SecretsValidationError`, `InputValidationError`, `StorageAuthenticationError` are inherited from `StorageClientError`.\n\n- **StorageServerError** - thrown if SDK failed to communicate with InCountry servers or if server response validation failed.\n\n- **StorageNetworkError** - thrown if SDK failed to communicate with InCountry servers due to network issues, such as request timeout, unreachable `endpoint` etc. Inherited from `StorageServerError`.\n\n- **StorageCryptoError** - thrown during encryption/decryption procedures (both default and custom). This may be a sign of malformed/corrupt data or a wrong encryption key provided to the SDK.\n\n- **StorageError** - general exception. Inherited by all other exceptions\n\nWe suggest gracefully handling all the possible exceptions:\n\n```typescript\ntry {\n  // use InCountry Storage instance here\n} catch(e) {\n  if (e instanceof StorageClientError) {\n    // some input validation error\n\n    // if you need to handle configuration errors more precisely:\n    if (e instanceof StorageConfigValidationError) {\n      // something is wrong with Storage options\n    } else if (e instanceof SecretsProviderError) {\n      // something is wrong with `getSecrets()` function. The original error is available in `e.data`\n    } else if (e instanceof SecretsValidationError) {\n      // something is wrong with `getSecrets()` function result\n    } else if (e instanceof InputValidationError) {\n      // something is wrong with input data passed to Storage public method\n    } else if (e instanceof StorageAuthenticationError) {\n      // something is wrong with the credentials provided in Storage options\n    }\n  } else if (e instanceof StorageServerError) {\n    // some server error\n\n    if (e instanceof StorageNetworkError) {\n      // something is wrong with network connection\n    } else {\n      // server error or server response validation failed\n    }\n  } else if (e instanceof StorageCryptoError) {\n    // some encryption error\n  } else {\n    // ...\n  }\n}\n```\n\n\n#### Custom encryption support\n\nSDK supports the ability to provide custom encryption/decryption methods if you decide to use your own algorithm instead of the default one.\n\n`createStorage(options, customEncConfigs)` allows you to pass an array of custom encryption configurations with the following schema, which enables custom encryption:\n\n```typescript\n{\n  encrypt: (text: string, secret: string | KeyObject, secretVersion: string) => Promise<string> | string,\n  decrypt: (encryptedText: string, secret: string | KeyObject, secretVersion: string) => Promise<string> | string,\n  isCurrent: boolean, // Optional but at most one in array should be isCurrent: true\n  version: string\n}\n```\nThey should accept raw data to encrypt/decrypt, key data and key version received from `getSecrets()`.\nThe resulted encrypted/decrypted data should be a string.\n\n`version` attribute is used to differ one custom encryption from another and from the default encryption as well.\nThis way SDK will be able to successfully decrypt any old data if encryption changes with time.\n\n`isCurrent` attribute allows to specify one of the custom encryption configurations to use for encryption.\nOnly one configuration can be set as `isCurrent: true`.\n\n\nHere's an example of how you can set up SDK to use custom encryption (using XXTEA encryption algorithm):\n\n```typescript\nconst xxtea = require('xxtea');\nconst encrypt = (text, secret) => xxtea.encrypt(text, secret);\nconst decrypt = (encryptedText, secret) => xxtea.decrypt(encryptedText, secret);\n\nconst config = {\n  encrypt,\n  decrypt,\n  isCurrent: true,\n  version: 'current',\n};\n\nconst getSecrets = () => {\n  return {\n    secrets: [\n      {\n        secret: 'longAndStrongPassword',\n        version: 1,\n        isForCustomEncryption: true\n      }\n    ],\n    currentVersion: 1,\n  };\n}\n\nconst options = {\n  environmentId: 'ENVIRONMENT_ID',\n  oauth: {\n    clientId: '<client_id>',\n    clientSecret: '<client_secret>',\n  },\n  getSecrets: getSecrets,\n};\n\nconst storage = await createStorage(options, [config]);\n\nawait storage.write('us', { recordKey: '<key>', body: '<body>' });\n```\n\n## Testing Locally\n\n1. In terminal run `npm test` for unit tests\n2. In terminal run `npm run integrations` to run integration tests\n","readmeFilename":"README.md"}