{"_id":"r-assign","_rev":"15-0ee4fd1bf992b113f3f399f37c4f9e71","name":"r-assign","dist-tags":{"latest":"1.9.0"},"versions":{"1.0.0":{"name":"r-assign","version":"1.0.0","description":"Object.assign() with super powers","keywords":["assign","object","transform"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"test":"tap -b test.js","test-cov-html":"npm test -- --coverage-report=html"},"devDependencies":{"eslint":"7.x","tap":"14.x","typescript":"4.x"},"engines":{"node":">=6.0"},"gitHead":"56bcb04e280ae5de59404182bebd904978f82e5d","_id":"r-assign@1.0.0","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-lY4AufByC7dLO6At5vOZ4vVSdQnflXTp4atQjg8MfhQZj4+VJsdf/dzziv+TUbPq+eFYoIuvdlIk5JzqZLmEDw==","shasum":"fff5bdebe442ffa3c577ceb581ab58d669337a57","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.0.0.tgz","fileCount":5,"unpackedSize":9482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIwHvCRA9TVsSAnZWagAAdNEQAIA4zuRZcYq5GyRygsQq\nR47TOpTwSSCbf27q2k+tEghJ7bd+CVHaSODc6rwr0cpTIb0XXlr02l5u69tZ\nGxDmIyC2kibmqwZ+dGX1WvPa79RdWLkiNGyIKLDdXpwNok2x2dAkwS3hzitG\n/XxUYNRvR/xbKwem3tDH2tNq5/L01dkt6au6hq+IxaZw2tvLTxShfUL8VwkA\nXFLesNSBeQqCWXKgnRJ6H2iqpTcfONOg0rankxfxRFjEpq0BX7iB3Jsy1fYH\n7grrlBI+dVbKOlsPR5jrwy2bez6pP/MwPmtQEHA6LAepZHNCzUOAVXTYKdlH\nMZIksJIYJ/EVNBi7rT8Tp5N8qzWshhbdnD3mH6IyFbhZhkLj0lKUdnFWyqPx\n11cNUf3Ye8HCBc83msXlXmaagQvPWe+kqjE74Ob7mLByINIlpjBuIK3x+a2t\no7Xoqpe0NY9WANEGOUCwai4hFMOVgAtl/0x/JXjAfJ5MgsYXc9M7Wfs3Fzp3\n962BAyUx+HPVUcTDQ5tgcnXQzv4IOSSDhp0drb3Mq/s95YwFHT70HxTZFfd+\nUtWlZhazmHyMRbiGkgdb12tfE+RYsfUc8L4wKNNw6sZ10Pr9PE8qnXYoTT9H\nllruT1Yl8xHKNd60S762GXNHJQjYFdaH9Lkz3XXf3KdcpwdaoAqPkP9PGNh7\nVOBS\r\n=BO4g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1G27GFgyjzIuea4fwNkwx602fa2izj3mo6rJ7ngrPdQIgKjK1UDZuwQuXEMjRGgPdk8y1PCFg+17cd6YeCOclGy0="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.0.0_1612906991505_0.6053128650370054"},"_hasShrinkwrap":false},"1.0.1":{"name":"r-assign","version":"1.0.1","description":"Object.assign() with super powers","keywords":["assign","object","transform"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"prepublishOnly":"npm test && npm run ts-check","test":"tap -b test.js","test-cov-html":"npm test -- --coverage-report=html","ts-check":"tsc -p jsconfig.json"},"devDependencies":{"eslint":"7.x","tap":"14.x","typescript":"4.x"},"engines":{"node":">=6.0"},"gitHead":"1ec386ebce026332b29a47608a0cd945f1164b87","_id":"r-assign@1.0.1","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-aH/xGLSR7tPskZpJd+cGLz3Eqhvqpg9kzsj1xngRdQ1pra6fdKcYUFd6zFpNvY/7G2fCHpMBmHfYE97+nkaJMg==","shasum":"16423a4d0540af8eba9c38c40c79fea463945fd0","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.0.1.tgz","fileCount":5,"unpackedSize":9936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJWKvCRA9TVsSAnZWagAAYSYQAIw9X2TYzNkHnKZ9n1g2\n2Dm1fFwwv+6ViH03H2kBO+JmngVeQywzuEe0vDEQQ9V97OJJUS+uDmdRAAWE\nxc98SBLZMGUYZH2kdAD7LfA8GoCIxBO+QMk6LZnhMi2i9mjuV7WbLTWG9WDh\n+cuvhS5GazBTbyHCDZlZofTcuEdnXfbK/kgzV7NZOb87KYxSquogYtP9Mnit\nmnaFpvthwjrw692CaAN+FrH257CHxqDdj2go8RHP7i9Mxp+T+15aI9Dhj54o\nHK8cnTcXRJe3WUJKGobETgZxWIjbxMuEbr5rq3NwFkDM++oXyjDZN9K6kcuF\nssvbkGvSket4xu//pHpmjqftgV3dCwSPFtt0u2ShModKGPJlGWBsP2JFTicr\ndk72jbJCGRKRryOBMHILmd7PrC8F2YZ18ulySDyKsZPaYEpPWw9HsLWYClpA\nSUD+RLLXwjBX7eJ34xmunLeUdJIYDvecLTw1yGscFuGoZFGs2h6pzQ2WbQfu\n/g8fC3zbWmNVpJrEHs3DIqcvEpXSLHi5BeBxdfG0MiZGZzX6Pja8kd+MCJrl\nxjwu/YKxLmS5hjCn3Be+XxHbVzAm2H2mRWR9T4B4+OdZv6oL3ZTJ8Fz2fKa/\nwMkHeWUuWiigxs8N7l0E7FYeBYOrwMEpqBBkFqwKVayo7AAyjRq5wdJOzPbW\naMFH\r\n=28DQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLyqfwOX3tN8hPgI2aSb3W+ID7/lKKIRmmP7omiLsTYAIhANcLQNd5t2QfB3jI64s0sfs+x8YNsYfR+cNHvGpU0CW9"}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.0.1_1613062830947_0.9018744706243706"},"_hasShrinkwrap":false},"1.0.2":{"name":"r-assign","version":"1.0.2","description":"Object.assign() with super powers","keywords":["assign","object","transform"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"prepublishOnly":"npm test && npm run ts-check","test":"tap -b test.js","test-cov-html":"npm test -- --coverage-report=html","ts-check":"tsc -p jsconfig.json"},"devDependencies":{"eslint":"7.x","tap":"14.x","typescript":"4.x"},"engines":{"node":">=6.0"},"gitHead":"1ec386ebce026332b29a47608a0cd945f1164b87","_id":"r-assign@1.0.2","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-1D+HzV0H8N8F16ZEnTFIEUCHSnhdxnrnZqLIYCjMF/EGm2ujxj+3xt9gStvkfHZSc7GK2h67pDTfbqEzzXvRLg==","shasum":"b0de8c7ab97bb083dca86565cd4a4d20758eaf14","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.0.2.tgz","fileCount":5,"unpackedSize":9918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLmDnCRA9TVsSAnZWagAAia4P/0WqqpkZT29/UYUzRjDM\nkeoEteYXIaCwrhmhhfe/6FLS8l7ZrnJjpRlmdoFs+u4yKkQhjwdi+nBzlq8P\ndTZwOT858keyP9t7BpWCH2V2iwczyBhkjdAM3p4PDA4oCPaAAqcWdxPPVAYO\nAc8sJ0nSG9iYtjNeLrfbaIY5ssF+jrJcQqP2aAituQbKaREqmNKiMRwd7M1P\noMV/Tgipj1XmT1W7JXCBcw3zCxvCTJCaIg5xbLoS3xgqMDXMipKXkmZfCsyX\nfCvr9heKq0Ldno3i3RNIcl7Go4ioyAeldBX9Ei6g/YMT9q/3eaIgPBTyZ/Qk\nkk5nsHCkbL4aBhN0hdjm2WlKD+dS/mGTzEuwC7PJR8cs46J7tLfk9YlQbCeF\nRFXoRojzrD2tiK8+IjnluWX03yZkXYqYQh1Mqk85N/2GlPLU07Cr0LBLDwqK\n+kVtjwjHMnTC2I+YAERhQVaegbCOo5ZUrTG17IPRvQY1ufRgl3fjLRdAjWHD\nYmEux0CIsY4D8bdeFLnm7IKKk0NwXmtcWYxlwNpNIkPFBUCHQ4qw6fGa3x+d\nnxtQt5nNj/o96qnOXeclQe6ujh91PhfNBcTIY0712D7MRj4+VHXpK8+SWrSG\n/gItdlwH89TM7QESLQTXqAD2sF1ftznWbW8HripUCvGkv7Ub9u7IGQh+G3kJ\nBhT/\r\n=Szjr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmrjHgl+pJiaYonBXmixlL+Pbhv4aO01vTowfoCzWdHwIgEOeOYtkW2N3nmp/zqmQZfQjMkO2CXpLqpW67MreMz9M="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.0.2_1613652198597_0.2815089251796836"},"_hasShrinkwrap":false},"1.1.0":{"name":"r-assign","version":"1.1.0","description":"Object.assign() with super powers","keywords":["assert","assign","filter","keys","map","mapper","mapping","object","schema","transform","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint .","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"d34254c174ffd02ff19973c6aa4d7bcb6037273c","_id":"r-assign@1.1.0","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-7zO2O+6KD6DhtyY5+z5hx96+vHJWaBqbHownoGsEd40u6dJAy7KV31D9RgGrAwlfi1IpKbIM6jPrSxRJ7+BlcQ==","shasum":"83a6f65ff9d1da4fc1379925c296fa9319e00299","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.1.0.tgz","fileCount":33,"unpackedSize":64774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmAnXCRA9TVsSAnZWagAAxp4QAIvknEGIVUq902EwBU2B\nCrLhAYmtrOI1z9k9AbCln7qrOXBWxJF0pVdv5FfQ0q0AJMD5qyup22JCES47\niPkpWcpVOAWtxYulYK0mmHGDbQVdaYytfFh/Aj93FmwwuNphF7oCj+Kb0Qmx\nevOzgyEbyVZY/MnRwr3BjlRjJogIc55eFTHwtWWouq+V7mN0aizbd7/LCBhV\n3pGQE6VxgZx+gGY4vrdR+u7C8Bp5QwwmM2QGja9t+PvEKQYUiMryXLiT3KTx\nli8xBkfRi8q1iVPVvMfI3Mb3ePId/p9VOTMuIcRmpmJkQdGPaQ/4xkObdARv\nP6tTaH4dezh/HLO/ptV+7OciulVXru27asCMi+yGD0B9QOua9T7fR+X62puE\nmx4wM3KhJsgfp835mTFDeyxQYTGnoKX+c7QxmL8BXbrIiB7ZscDU6stf6uNm\nhKHo0aMPboLh/QheSMtBYxgwjkpYyR+jvIixtDFdhu/bL+j3b1Yu52jqkyhC\n8nYlHCPmBSb5bphGZ3/KxvuhOVrCTTe6kxTFEPYIj51laAamDC0y3XSWVw4q\nOkOh1iZJaVCdg3g7fVrHiPeNQd8ujjJyPHFGOAhEVrRJAPwHjW1RowXL549e\n0I0A0F6PTVQFXEigDzho6/SrfV8bxXDzbgAQqSfrYfC3lCw83rx04bSXIl4x\n/Dwc\r\n=V4yZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZ2nkP2IpSkgJujMS8j2792SfCIPYw6flht4fR3uSumAiB+WEaEbgHURk2WpD+x0eKWChbrou6RflZQANucScwGCw=="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.1.0_1620576726950_0.8093938223249788"},"_hasShrinkwrap":false},"1.1.1":{"name":"r-assign","version":"1.1.1","description":"Object.assign() with super powers","keywords":["assert","assign","filter","keys","map","mapper","mapping","object","schema","transform","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint .","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"85cbdde339f7f9530d2eb756c9acd5eddf4458ee","_id":"r-assign@1.1.1","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-S25ummC00VM/yS7Hw3qfiBE/B6KP3DJo02tpJZ90yUGIpdYh4107tdws5goTEbs/4sdchyUa6T3UjoMFVpVrsg==","shasum":"0daeb5cbad735bacc81cce0f944609019f526c24","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.1.1.tgz","fileCount":33,"unpackedSize":64627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnAgSCRA9TVsSAnZWagAAfCEP/jl4653qp6UPBlU864Hi\nse8NKbwAHhPnciIvmpcHmsy77YR1Cg0v6zgJPxgjKgvrVF6rn/UcUuAuNQWY\nKW/18UYB9zyssUXOKQpWowXPaxyY0DBMEm6svMK6CjhKTUbRZyYOLMaIBVxz\nUN4SHiW7lqSh5ILXVkpjUFX7IzPBpmBRDpBtvCAhFTEB5k6m36PFdaMKc13M\nun3tbZ9j2cdl3jxzqEdHM0XjrxNn391w2rnKZZhN5ANK4OjRedTu6qSNyrwZ\nxhSUn/FlserAICM9kCh8MXkJQkIERpWi9euXLP7i5xAQXLDp6HDCkwONRp1u\naJWBodHlo46e85vKwzHQ8kwKkY0HL1WvusjBb0uv0J1bX7QUGIdZB7q7I4zX\nsef7va00CvWU3M9cNrMsw8hmNheGn++eZKIEaNxBhisCCvrBdL5O8i4+HS77\n60E2h2OpzKmbM0oBoZdHzgIQhkmUx/6RncXJXfOMb3Ql4qEftSzz8gay0/Pa\nRRbQwZ83Mky1Kt1Aeb/3nEMYexP06mL2NxNeFjzqpcP19GR0wg52b3rbwG5X\nu+o+iSmyy1aPmMgQJB7/zNhwZ7IPJoUiDk4YLdKppFU9JfINJiwwah0JuN+T\nPeMOLYecZObw7hR/C8/7+3Tb5nX4SYKD6ZLtn64ytXg2iO8wwjfgoDSLmPy2\nFPmG\r\n=u23R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFW2664/g5TSVYaUcMsu1aIlVCjLxSLp14owbbo0kHGAiBrqnqRytcrDZ6cdS0YAwxscspvRT64lxdnaUq8pYWrGw=="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.1.1_1620838418036_0.6339461133770179"},"_hasShrinkwrap":false},"1.2.0":{"name":"r-assign","version":"1.2.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint .","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"153d5ce91625dcb9907d16191cf87eae4076bfbe","_id":"r-assign@1.2.0","_nodeVersion":"15.4.0","_npmVersion":"7.0.15","dist":{"integrity":"sha512-RMmJmkyvRwbdzrmePrsr5fZ+krdLuoaS7B1v7OCXNfOX5bSObc7QO3KzEgob3qIiyVYDX+nbLG5WBsTom9zEvQ==","shasum":"290ab9ebc833b050f174e6fa3b5b0e499ee35b7a","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.2.0.tgz","fileCount":38,"unpackedSize":81516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJLnbCRA9TVsSAnZWagAAlCIQAKHcL24z5DhKGo5NSa6N\np71Z2F/BM+CVHkfywXDVwsl2AjfKATSlanFZ96cMZFGxujFkE5fU2Q0n0o2y\nkGI9knfL29n1UFbPlzEyRBXT9+lBayRv9K7XQCHlqwzcArvkYmuDwuDvyR0t\nRjo66dC51v5szBc69GY4tmqJRW7ORh7KJENYL/4+gszXBc943U7q/i46EUmz\nZF5emXfQ7UQ+Sv7POx/sXMMxRYCA+CYSlpV3hnS6Sh3+uolTHEuE43HYuTg+\nKHTs7Mo+4lzDJ1kGKhk0FN5Y10gqR9GuRlmSc1iFnTVHw+iMn88uoAn+t5Wo\nM6wB/0kO9/VKiubngwDxT5vAb2GrgST3L/HxlOu5m0G5Q39meSBF0kH6sfbd\nVzdLLVvafkLd2ZgrfpQpqwC8RT/dUM1oexighCW/rk3WKVRUGNjlwGXMk88s\n9qE/IdLpbcpHxOmaFq2Y9y8jRIKtGrrqsemSsFulYZFQBVXGJFTPsPKqEmUN\npdxdYL/SP6DbZrPARB0lMpClUYmjN0vM9uILNschwjZ/okOCmvUgeKMe5cbE\nUEfl9f2XkkG6OeNY8/TNdS/HhD7zL2JbqyEvOOfztIwlSp2zB7RU1jk1A+XI\nxTRQ5yo8aFKdG2gG/GIzFyQQ5gxm/lH3HiA4efsqGN+hEC9xwcIWBnh4liy9\n/M5U\r\n=SHqm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIClovYiGRP1SyhWVoKdFbawFNye4zluh8mihOuOMLYw4AiA9X+lqzfRPtoWxo1BQzM8DBYw1iovVKgh0g0bbhBG6og=="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.2.0_1629796827273_0.17664090522558484"},"_hasShrinkwrap":false},"1.3.0":{"name":"r-assign","version":"1.3.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"@typescript-eslint/eslint-plugin":"4.x","@typescript-eslint/parser":"4.x","eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"e85cc94d82925c61058fa584d1fa5c878f80ca7f","_id":"r-assign@1.3.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-fZDKLdnGqjGoow0lMQKQttqRGpd96sinPv5jJRr/1lI7Y3hyyNolIdmne4ViCtd4TRt00g1GmAkMHpnpbQooug==","shasum":"ea39bcf1e9ae7709ce9e3483d0c63734514a9db1","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.3.0.tgz","fileCount":51,"unpackedSize":108421,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICysO89ctKDvKNiCVn+pwx7y/KZ27PqV7d8wT0PE3SjCAiBa4TTpW10KNezgYKr4tbS3rYXdo1aFAgF3Cx4LeZ/4YA=="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.3.0_1636580127908_0.44542629593697036"},"_hasShrinkwrap":false},"1.3.1":{"name":"r-assign","version":"1.3.1","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"@typescript-eslint/eslint-plugin":"4.x","@typescript-eslint/parser":"4.x","eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"2b35adb56532c300061ce90331291c1e3b2e1262","_id":"r-assign@1.3.1","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-sT0zBejUDhxrQygh8n6Oe6dksiEowfMB6Cs7Hs+Yw3dblw2/SBnpzcfsTp3/rcDrgsdzWLFGh5CJK/e4IPrEoQ==","shasum":"98daacaabad163c6f847c6f0dce6c70162d688e2","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.3.1.tgz","fileCount":51,"unpackedSize":108391,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAfTqG+eYSkaY14pqTLwE5tlZH1InrgkdLborBdwLn5AIhAPkj82qixiTw+TLVXiywJcS0ovyqAcYNhUO8esqV8V4F"}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.3.1_1636801905207_0.6685713996483507"},"_hasShrinkwrap":false},"1.3.2":{"name":"r-assign","version":"1.3.2","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"@typescript-eslint/eslint-plugin":"4.x","@typescript-eslint/parser":"4.x","eslint":"7.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"2b35adb56532c300061ce90331291c1e3b2e1262","_id":"r-assign@1.3.2","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-3n5WgxSDVxim+eO55KM516oUhkHx3kd0p2+NiZrqRkMWweoWWDEs6AIDauz1lmaYQ3mToT+3b0o2Sy7OaqhW5Q==","shasum":"957afec4c4ff18033718f9b40a601d7d26c190a7","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.3.2.tgz","fileCount":51,"unpackedSize":108067,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5w/vG9EEfbs7Od1FDVaqACt0nplIdTeB3t7gsEXqZGAiA+3RMuJuYaoiLYjC3rjhsCOFaT3BLdBVpkPOuc4Awi1Q=="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.3.2_1636848057809_0.2124086217980965"},"_hasShrinkwrap":false},"1.4.0":{"name":"r-assign","version":"1.4.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc"},"devDependencies":{"@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"15.x","typescript":"4.x"},"engines":{"node":">=10.0"},"gitHead":"63bbbf6b13c46f5851d054f3872ef10e9af755f6","_id":"r-assign@1.4.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-13gSGA+EsjRxwdChT07WD3U+IjcZFYx6V8xp99WURnl76u0FRq4zV2zqJOhKL6IdWTxg1DiP5mCKuNHe200kqA==","shasum":"e384f2123f42dc2cf9a57ad4b5a7bba524d69b66","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.4.0.tgz","fileCount":56,"unpackedSize":126583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhx1b8CRA9TVsSAnZWagAAWwYP/3QzJg+ue3VPYokcHeJm\nqadMmRSJ21tkVEhtMgn+IqguesxGRh5BX3ApAqf8CsAdd6nVMeWjpl7VbQdP\nrUZOAGH8/emFAhWE8nfvZkafjYAR1iYeJ3Po4SqI5n3JKQpnXS9qaW8hrQ0g\nbxHFX8TZNwXUM5ejHrW3Z084iL4c0wTECCHCOEOHkeDvOkyBs8dontx5ejjr\nxH9fMRKVa7HRVbBZIhg4tYVD/QBys0HAaCzkksNZbD/tJrhA0uP7d/I5FF5S\nvvVJpv4tV92cXZcqNOfriUNCE39bERjbmg9aNjJKeDht93hd4PnrrJl0kihU\nUReIqfobJgRcReVpWvOPCm01r9X9sWITwTe/x82/oR2xlXb5MktZuNsoUCuU\nxEqI2Dk73fykqDzLJqETZ4H26CBRzXJdn5/AZYJMbSJbZxByLSLBZXuSUaSn\nXT7NtwWGxQDR4NJcauo1UVCJJTMxgbCGvJ2Yb0lUVysUx4d386PA1Te9zNZN\n8yzcjcORNdWIECHd+XLurZtdALV/0cRdxiVopr0UU3pTppGgTHGelegazS3m\n1X7iS+OEbP8eR8Xosb5ah0vtvVOBwF2rzxqfOr5VyGCXlqDSiK3zl+P78g9F\ntjmdAF6g0Gzi2IDbgOGFgHWb/TJttqR+Q2zdOu7L1bfSLLYueh0Xfh3VNA35\nYz7o\r\n=MEiv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcShc+J3NTaVM4L2gTb9TEPM0EPzil25RfXPAOygbERQIgJ5tLvB9NNqOD1p7cJmGMVbpjfLMAzueNwnqU4WAVXuo="}]},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.4.0_1640453884412_0.2995402754599945"},"_hasShrinkwrap":false},"1.5.0":{"name":"r-assign","version":"1.5.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check && npm run tsd-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc","tsd-check":"tsd"},"devDependencies":{"@types/tap":"15.x","@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"16.x","tsd":"0.21.x","typescript":"4.x"},"engines":{"node":">=12"},"gitHead":"73750b38722e52136ab9f3f77516e13d8f5e6a22","_id":"r-assign@1.5.0","_nodeVersion":"18.0.0","_npmVersion":"8.6.0","dist":{"integrity":"sha512-8cSmDzYegYkRVTWC6ONAOL00Isnzt1yJ1IzB/WnJ3kvhQTh0MqBxpv2y+dnK9oR2sWW6m4hO6qOG7Y2tLpfFUw==","shasum":"201e961fbdd671733e647e5a761a705a7f0b8759","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.5.0.tgz","fileCount":60,"unpackedSize":157185,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzeycfjLzNc8xTeZK5zBUdRvc2ivVzMrKmzgvf97B6owIhAK7Wvg31WCXBKtxIPoQm0MxmQOpo4SAeZxPPPhlvfI6I"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiudmGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpvvg//bRhjFpTaTunSXRoXPqMaOyAuelfO4ApIYufFQD0HfcsD+Sh5\r\nX3loV8I4fF95fluMk8z1AwwjYP7C5sLYQoZvj+w8qlzhJgHB1s0v0P9+1qP6\r\nhMyfXZiWFiohyj3vgRlFlQ2gAHfU9GQ7SnvFPsgHMX+BCq8hzCbhrx10ITcc\r\nLocj3I1Z1ai3cmXqd0ANm9c6wX+ehd5a1IxWdQRoELDAP6qFxujP2JeeXMVN\r\nmQgS4pvloA817WuFsHA3dx3ljZ6CsAPGyZk36YGS24j1iogWdRsxrdXRTr1x\r\nzNcx370VwUTXEDnUarxdttlUyYPoxRSvabTLgcN4Ob3YcNQX2oCDoSMjZRHz\r\nOhfH13SUbYqFo/+FfiGaUv+41mktxKjomaBy+YZCcIc9V7f/VnMZ6YSjyqfn\r\nAcoCLSwQR/NZcE45+xYOQOkD8DPrfeZbRThlQJr7A1uJ2xHDfPL/mzZgKCrV\r\n/CKke0BkCYPOjC5LJkny6uHB1g08pli9itz8VS/3BH1M0fieONWCmpAnK6Gz\r\nZt/FXAnjrnOmBmM6+CGV/URx+Tf7qtAOLwK+Zli6ONIpaLPI1GhF+wsxlmk9\r\n5XXuhRnO/eQcvdcMA2wYuXq5DGAXBKdpbB+5ldFv42pwk4CaEc5nXIU6TU+c\r\nYIz7uzRhKo6zU+2t9hMZsi6vJifI1SfXc4E=\r\n=1Q6s\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.5.0_1656347013932_0.28229373128821056"},"_hasShrinkwrap":false},"1.6.0":{"name":"r-assign","version":"1.6.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check && npm run tsd-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc","tsd-check":"tsd"},"devDependencies":{"@types/tap":"15.x","@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"16.x","tsd":"0.21.x","typescript":"4.x"},"engines":{"node":">=12"},"gitHead":"84194eb58ee2fa3a32104c07e07d6dcf07bd5a96","_id":"r-assign@1.6.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-2xnl8NOYtA5hUruK9EXLbHms0g1ppEt0Pw0dl/Lw+GknBzlg9py/aH091wjVhDv0fi8DWiYcgGIJBzcnnY9SYA==","shasum":"147e04b785eb9010632b2845d363236252b565b9","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.6.0.tgz","fileCount":66,"unpackedSize":162014,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAy4WgH+reyeBu8vsev9SF6lxX8sBsVXvgd5BEaBaGlVAiEAlh63RYp7ywUkdHvCnBNhIe3l42AsGasb2pZTuDUJaKE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1yP+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzDg//RAuBUxPMjnNtlnN9dZvbwn4AWN6zsEcfdZAm5etxMENXRmd5\r\n/1tnX5YaGgSk8UsPoA4wFyRZTcWlSpKhd2U4snpnISekuCNeqv56YfTMPfAk\r\nxutzU5+Hui2JTAIpA19N5MViWFA8zzOMUVfovUbbwHxxQYo2b9/Dn3X9RmJR\r\nAKxGL2VgNyAAWj/AngUllWFn1A6qdMe2kD9DHli6O/Hxap+vzG/vp3sLdHlA\r\nHpJ2fjCXtiqoYqE6/rprDMt2xPLllWFqpNeSdN5MQ3gNDVhqZJvm23hfzqIr\r\nc50AgBEIgX984LK4TyRNv0leJCGQt9omYgpnYzVUm8bxaviw8wkhWwdQ2P7d\r\nDMSNzpnhis82ozPJZgA+FNxWIFFbIKmUw16LnPgnvRjpocVfJNO5BjfayYpB\r\nHYry8Xa/eupNuMwzoFI+3jug8EbxtXCs/ldujWvLUO2nyCxfc2W9Sm1AyVq6\r\nS2FhntiYubSlqD5K17jqiuGCpe1TnVoJL3maoQKbYbCPypha0jOnBKE+9eBK\r\nX6CGpMGykCVALzf8U1raJcTFqpIDcgUb1sjCMwh0Z8UY1r0oJdrn5hdNDOoh\r\n4kHAM3/bVYFZszZ8WEG8nKrFRFo8z/K4M1fF8nqYfUuuLYxj2xLvJDtXq2MU\r\n/Gq5Z92iOYF6ji5m4EYr5CqT044bckNY7do=\r\n=Zz/J\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.6.0_1658266621985_0.7376052973849174"},"_hasShrinkwrap":false},"1.7.0":{"name":"r-assign","version":"1.7.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check && npm run tsd-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc","tsd-check":"tsd"},"devDependencies":{"@types/tap":"15.x","@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"16.x","tsd":"0.21.x","typescript":"4.x"},"engines":{"node":">=12"},"gitHead":"4a5dd994d8e20b0ea520b3f7f9e08850d7256602","_id":"r-assign@1.7.0","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-1rBsF9UaZjSQ+kEcOLpTvOoz6Z15QUN2p3iK4m+ZezWCRUXJqTWVAHZFDe9b+ZftIILwOnpALG8p44gmWqERFg==","shasum":"c3b7536cd0ba4d7b1f7a53c50ba981354b2819ab","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.7.0.tgz","fileCount":67,"unpackedSize":177588,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDc1XL7e0IvW2uhJPsWrn+nROx+GsX+KmNgihuGmNyDpAIgVZw2EA4EcciAdHd9dHV/ubxPkc0TVN7dpT5ru6Y+NjU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTVg5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjcRAAiY6MJuBWmojYC0cezjDJMLr1q0itQxYCrzccm+qGvB79m8TA\r\n87gPTejVPXtit3+xJhYa7ve5EyPb3zzdxNcUVqeqZgxFn5wIETZh6ahFVKn9\r\nNqDYp4sb7+RHvh82qMTwTcRSaOgctF9wWRIRvhICr6HgPQDzZBkihAEQnssi\r\nA9cUI6Ig0c4Ybz+vGpLKYzRKGCYGhGpH3Ea77B91w/2H6JYWfVQPpxFwobtI\r\n+cHCNxJkaK8JSgyPvrGDu1zOGAAShwF+i7MSs4ngLR7bgz2/9bC3yu9JHZ+P\r\ndMiCeItnGt8ZXY9H3QVA+d510r+9fHGf+0cyWxry55yDODtpK27jrEL+/a9e\r\nbJoVK5GCsWfVa0S7dQcqGFGxboMvEvWZbvpSkLZz7sMssXsPDm/Uj2rJnuiS\r\n334821NuGzZDbNQxGdDF5JYPY3eDusQLCMGdTEmdNlxS67c9r+qKNLTusKZW\r\nHXjPL0Hhy6CzvAMBOpPpd3PHZERL/Kyx1TIi0elcgUqYyYgcLcFhCQ8BsJuo\r\nj2L84qXLmlJFbPA+llNatfwfMl4IGnw5nQZyjjiBy2uvkhN/CiSYn1CHhIaZ\r\ni3jGB+hWGhx85qAtycJg3wyWJ92yszIJnLyYyZs5rhL+6WO3DmUMhwrvSz25\r\nWo+AWhmw19vS1Zh5CGtbuGtKDOAjoJUODD8=\r\n=4X6t\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.7.0_1666013241125_0.8620722116894002"},"_hasShrinkwrap":false},"1.8.0":{"name":"r-assign","version":"1.8.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check && npm run tsd-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc","tsd-check":"tsd"},"devDependencies":{"@types/tap":"15.x","@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"16.x","tsd":"0.21.x","typescript":"4.x"},"engines":{"node":">=12"},"gitHead":"b354aec183631a6b64bfc68a62867040f4290187","_id":"r-assign@1.8.0","_nodeVersion":"18.8.0","_npmVersion":"8.18.0","dist":{"integrity":"sha512-HE9h27bx52DoLaGgXUl28FObb4RqZlLRPQYtNwKAEXttznZcntaUdrVYpI1Tq1X1F4KXHWeKTXE25jif5Y0DWw==","shasum":"6e17ea06bcd57a789b687a963c042d734ea5f4b5","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.8.0.tgz","fileCount":69,"unpackedSize":183005,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3QWsucSIL8ydvihEWRhoche/tbDa0wyzYBxF6/AvmrQIhAL+0JdVkZxI7xcFooZVvzeWjmoJTfuTMqtLlJvMbXduW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXtR1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmojGA//XPt/hdGBXSyINEOxu/KknQtX2HRFm/5xmCTNcWgwdD67S/+l\r\ngKmz8xkzWJ4ltUMu25p1W3EuWxkqvk54TIpArehBWIjkX4DFuyt+8ZSh9Hnl\r\nfivN7a3mqlOk0vtss+2y2RS+W4QaBgOXa3JgKZKOudQAVZO6Gl6MYOXdM5D6\r\nY5HFEFCHTufllDFuPpRD9QQwP9f12GJl2MoeJZ+8Wgi+DfKMCqcRN3Kb6XQy\r\nrHaJlnugsFAIMlhg6Od6/KSL6hYjBJTxSXW9qSTAIkKG2NWmiUOaWARp64Be\r\nJ1r7KgMTogiOw38Kcv4aBlMZGZse3p9Ee2TsSycw+hb7anHyVIRGzE2Tbe2T\r\nPGhVt6ygp43k0jIdXGBfSjeQAKgE//N2+vbS2bJhfKTj58gyBPICxXJwtnUk\r\nGpjYsXYfO8El6AixENGe5ILkX4sUlyiaxtd1xgsrOHAJaBTcxARWFg3++Yby\r\noyotmIWnzwGIqeBotzHjMyjujZNoqSnfINqAc/vRIMwv9StGxsaOqaOw7d/M\r\nk+hZYx1odsL/ciT5JOp1QhMiymYTMymwGHGWNnSpMwW9GFgxSut2hqfAb2Ov\r\nQIm4fLZZpfIUlv6tlgMAYNl3c+pEoP1S1/KC4YsdkODXyqH3n5Udf1Jh/C9k\r\nVaDKY4u8BEuFsxGJ0iMjVniZ2QkWXjnzInQ=\r\n=9V1V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.8.0_1667159157171_0.3412655605347257"},"_hasShrinkwrap":false},"1.9.0":{"name":"r-assign","version":"1.9.0","description":"Object.assign() with super powers","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"homepage":"https://github.com/micnic/r-assign","bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"main":"index","repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"types":"index.d.ts","scripts":{"check":"npm run eslint-check && npm run ts-check && npm run tsd-check","eslint-check":"eslint . --ext .js,.ts","eslint-fix":"npm run eslint-check -- --fix","prepublishOnly":"npm test && npm run check","test":"tap -b test/*.test.js","test-cov-html":"npm test -- --coverage-report=html","test-lcov":"npm test -- --coverage-report=lcov","ts-check":"tsc","tsd-check":"tsd"},"devDependencies":{"@types/tap":"15.x","@typescript-eslint/eslint-plugin":"5.x","@typescript-eslint/parser":"5.x","eslint":"8.x","tap":"16.x","tsd":"0.25.x","typescript":"4.x"},"engines":{"node":">=12"},"gitHead":"3280a6f4d05fdd89dcf856d51d36779e33fc48aa","_id":"r-assign@1.9.0","_nodeVersion":"19.5.0","_npmVersion":"9.3.1","dist":{"integrity":"sha512-sChvSLs2OZKtN8KmqX6v1SEMihnr8vCHgoLQOlIySvtCkCiH7dsTJUfyDspmAgkUdN0BVRn2CC90FqseZL4I9Q==","shasum":"7f1da6ef7eb384baf68222177cb92021d5d66795","tarball":"https://registry.npmjs.org/r-assign/-/r-assign-1.9.0.tgz","fileCount":70,"unpackedSize":188216,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEPvmrrOFryDefIG9h6yC+HPOcVQqPE/+NIWYYGQMlVjAiEA7QBC76Hd0HDzQFIaaOS2tfXs5yF6rnYZcQlIDiv+f7Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAfowACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpb2BAAnNbowMew5NBucpeKGl+PLBzOUNjUV4+5WERYr9BtYWOuhUJF\r\nwglmq/IZyFcVcHlZAKjsftZJfitacLocmscaMG9+X0W4s6OQVF10S57vySCb\r\nvJkRbF6GzDvu3z754L6e57Z9zpQIn/g8hdnetp1xdw1Tqw5UxRfTJJepFO1N\r\nX8kT2zjn9iIYmjrtNR77kWWks+RT6NvWwPeIjV2LVbXOHNy28ubuTA5A+jtC\r\n+5IZArQc+CWzs6XTHUndr3NlwBd8H0vLxH+3DmRMYSW22ro9bce8sN7TkbNQ\r\nvBnvGbE2VLQUBrj9buX2ILpwIAWsV9HBGjrlj9sJPaCNhYg5XChAaSgnaPcX\r\nh4TZntIocJgKtiFH/Ckk7tAoTnquA6jFpJoaDFy+SBgqBnA9s+hhfZLc48qH\r\ndfdyjxfjZdBE3ah9NqBvtGkQpZMLtJwfI7Fd2M6FKeIkaYmPDe763YwoNHDo\r\nJ48hnAJcxdzOQ75TprVevg5BWtyow/7SJF2A+BHsN0L+njZKyl2Xfd/mzAAY\r\nJqOU8J/xNJ+t9DN7pHBAO+xfKmaMynvojV5fP0cXXUaj7QFpFuFt+hGQXicK\r\nFpbbtRGVRWqjf+jCQg/6y24Lo1ErEu4dUyzqxfUTDWMYvaSu7EusSxdP12yO\r\ngTD3RnGZB0hLMnClVQxhFBkt4t43pujhy10=\r\n=0Isc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"micnic","email":"micnic90@gmail.com"},"directories":{},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/r-assign_1.9.0_1677851184068_0.9436293221429859"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-09T21:43:11.504Z","1.0.0":"2021-02-09T21:43:11.619Z","modified":"2023-03-03T13:46:24.455Z","1.0.1":"2021-02-11T17:00:31.079Z","1.0.2":"2021-02-18T12:43:18.781Z","1.1.0":"2021-05-09T16:12:07.119Z","1.1.1":"2021-05-12T16:53:38.147Z","1.2.0":"2021-08-24T09:20:27.430Z","1.3.0":"2021-11-10T21:35:28.089Z","1.3.1":"2021-11-13T11:11:45.354Z","1.3.2":"2021-11-14T00:00:57.997Z","1.4.0":"2021-12-25T17:38:04.573Z","1.5.0":"2022-06-27T16:23:34.150Z","1.6.0":"2022-07-19T21:37:02.161Z","1.7.0":"2022-10-17T13:27:21.256Z","1.8.0":"2022-10-30T19:45:57.377Z","1.9.0":"2023-03-03T13:46:24.278Z"},"maintainers":[{"name":"micnic","email":"micnic90@gmail.com"}],"description":"Object.assign() with super powers","homepage":"https://github.com/micnic/r-assign","keywords":["assert","assign","check","checker","config","filter","functional","get","guard","is","keys","map","mapper","mapping","object","optional","parse","schema","type","typeguard","transform","utility","validate","validation"],"repository":{"type":"git","url":"git+https://github.com/micnic/r-assign.git"},"author":{"name":"Nicu Micleușanu","email":"micnic90@gmail.com","url":"https://github.com/micnic"},"bugs":{"url":"https://github.com/micnic/r-assign/issues"},"license":"MIT","readme":"# r-assign\n\n[![npm version](https://img.shields.io/npm/v/r-assign.svg?logo=npm&style=flat-square)](https://www.npmjs.com/package/r-assign)\n[![coveralls](https://img.shields.io/coveralls/github/micnic/r-assign?style=flat-square)](https://coveralls.io/github/micnic/r-assign)\n[![npm downloads](https://img.shields.io/npm/dm/r-assign.svg?style=flat-square)](https://www.npmjs.com/package/r-assign)\n[![npm types](https://img.shields.io/npm/types/r-assign.svg?style=flat-square)](https://www.npmjs.com/package/r-assign)\n[![license](https://img.shields.io/npm/l/r-assign.svg?style=flat-square)](https://www.npmjs.com/package/r-assign)\n\n`Object.assign()` with a transforming feature for filtering, mapping, and\nvalidating object properties.\n\n`r-assign` has its own schema declaration based on the concept of TypeScript\ntype predicates, it is composed of pure functions that can be used separately\nfrom `r-assign`.\n\nWhen to use `r-assign`?\n- When needing to apply filtering or mapping of object properties\n- When dealing with data from untrustworthy sources, to validate and parse them\n- When providing a configurable interface with strict constraints\n- When doing complex transformations in objects with interdependent properties\n- When reinforcing TypeScript declarations in runtime\n\nReasons to use `r-assign`:\n- Functional approach\n- Modular, import only what you need without bloating your project\n- TypeScript support\n- Expressive in defining complex schemas\n- Flexible to create custom transforming functional\n- Helpful at preventing undesired values (like `NaN` when working with numbers\n  or `Invalid Date` when working with dates)\n\n## Table of contents\n- [Install](#install)\n- [Usage](#usage)\n- [Import utility functions](#import-utility-functions)\n- [Type guards](#type-guards)\n- [Basic data types](#basic-data-types)\n  - [Any](#any)\n  - [Boolean](#boolean)\n  - [Number](#number)\n  - [String](#string)\n  - [BigInt](#bigint)\n  - [Symbol](#symbol)\n  - [Undefined](#undefined)\n  - [Null](#null)\n  - [Literal](#literal)\n  - [Template literal](#template-literal)\n  - [Instance](#instance)\n  - [Date](#date)\n  - [Never](#never)\n- [Complex data types](#complex-data-types)\n  - [Array](#array)\n  - [Object](#object)\n  - [Tuple](#tuple)\n  - [Record](#record)\n  - [Function](#function)\n  - [Promise](#promise)\n- [Type operations](#type-operations)\n  - [Union](#union)\n  - [Intersection](#intersection)\n  - [Optional](#optional)\n  - [Partial](#partial)\n  - [Required](#required)\n- [Assert type](#assert-type)\n- [Parse type](#parse-type)\n- [Get type](#get-type)\n- [Set same](#set-same)\n- [Converting data](#converting-data)\n- [Working with TypeScript](#working-with-typescript)\n- [Mapping properties](#mapping-properties)\n- [Filtering properties](#filtering-properties)\n- [Complex interactions](#complex-interactions)\n\n## Install\n\n`npm i r-assign`\n\nTo take advantage of all TypeScript features in `r-assign` use latest TypeScript\nversions (4.5+) and configure the compiler options with `strict` and\n`exactOptionalPropertyTypes` enabled. `exactOptionalPropertyTypes` option is\nrequired for the usage of `isOptional()` type guard, if the option is not\nenabled the `isOptionalUndefined()` type guard should be used instead.\n\n### ESM import\n\n```js\nimport rAssign from 'r-assign';\n```\n\n### CJS require\n\n```js\nconst rAssign = require('r-assign');\n```\n\n## Usage\n\n```ts\ntype TransformSchema<T = any> = {\n    [key: string]: (value: any, key: string, source: any) => T;\n};\n\nrAssign(schema: TransformSchema, ...sources: any[]): any;\n\n// Note: The actual TypeScript definition is a bit more complex. Here is\n//       displayed a simplified definition for an easier understanding of the\n//       function signature and schema structure.\n```\n\n`r-assign` exports a function that accepts a `schema` object as the first\nargument that defines the structure of the result by merging and transforming of\nany `source` objects provided as the following arguments.\n\nThe `schema` argument is a user-defined object with properties as functions that\nreturn a value based on the provided input from 3 arguments:\n\n`(value: any, key: string, source: any) => any`\n- the `value` from the source\n- the `key` of the value\n- the `source` itself\n\nThe returned value from the function will be part of the resulting object,\n`undefined` values are skipped. The `r-assign` function will throw when any of\nthe provided functions from the `schema` throws.\n\n<img src=\"diagram.svg\"/>\n\n### A very first example\n```js\nimport rAssign from 'r-assign';\n\nconst someUnknownObject = { /* ... any structure here ... */ };\n\nconst objectABC = rAssign({\n    abc: (value) => {\n\n        // Check the type of the provided value\n        if (typeof value === 'string') {\n\n            return value; // Return the value itself   --------------------+\n        }                                                               // |\n                                                                        // |\n        return 'abc'; // Return a default value        --------------------+\n    }                                                                   // |\n}, someUnknownObject);                                                  // |\n                                                                        // |\n/*                                                                         |\nobjectABC: {      Add the output of the function to the resulting object   |\n    abc: 'abc' <-----------------------------------------------------------+\n};\n*/\n```\n\nHere is a very simple example of the basics of what `r-assign` can do. The\nfunctions output provided in the schema is added to the resulting object. As the\nschema is composed only of functions it can define very complex and flexible\nfunctional. There are utility functions to simplify this example to the\nfollowing:\n\n```js\nimport rAssign from 'r-assign';\nimport { getType } from 'r-assign/lib/get-type';\nimport { isString } from 'r-assign/lib/string';\n\nconst someUnknownObject = { /* ... any structure here ... */ };\n\nconst objectABC = rAssign({\n    // Will return a string or the default value of \"abc\"\n    abc: getType(isString, 'abc')\n}, someUnknownObject);\n```\n\n## Import utility functions\n```js\n// Import all the needed functions from \"r-assign/lib\" submodule\nimport { getType, isNumber, isString } from 'r-assign/lib';\n\n// Or import functions from specific submodule\nimport { getType } from 'r-assign/lib/get-type';\nimport { isNumber } from 'r-assign/lib/number';\nimport { isString } from 'r-assign/lib/string';\n```\n\nAll utility functions are available for importing from `r-assign/lib`. To\nprevent importing all the library it is recommended to import just the specific\nsubmodules that will be used. The list of the available submodules is the\nfollowing:\n\n[Basic Data Types](#basic-data-types)\n- [`r-assign/lib/any`](#any)\n- [`r-assign/lib/boolean`](#boolean)\n- [`r-assign/lib/number`](#number)\n- [`r-assign/lib/string`](#string)\n- [`r-assign/lib/bigint`](#bigint)\n- [`r-assign/lib/symbol`](#symbol)\n- [`r-assign/lib/undefined`](#undefined)\n- [`r-assign/lib/null`](#null)\n- [`r-assign/lib/literal`](#literal)\n- [`r-assign/lib/instance`](#instance)\n- [`r-assign/lib/date`](#date)\n- [`r-assign/lib/never`](#never)\n\n[Complex Data Types](#complex-data-types)\n- [`r-assign/lib/array`](#array)\n- [`r-assign/lib/object`](#object)\n- [`r-assign/lib/tuple`](#tuple)\n- [`r-assign/lib/record`](#record)\n- [`r-assign/lib/template-literal`](#template-literal)\n- [`r-assign/lib/function`](#function)\n- [`r-assign/lib/promise`](#promise)\n\n[Type Operations](#type-operations)\n- [`r-assign/lib/union`](#union)\n- [`r-assign/lib/intersection`](#intersection)\n- [`r-assign/lib/optional`](#optional)\n\n[Transform Functions](#transform-functions)\n- [`r-assign/lib/get-type`](#getting-data)\n- [`r-assign/lib/parse-type`](#parsing-data)\n\n## Type guards\n`r-assign` is built around the concept of type guards which are just functions\nthat perform a runtime check and guarantees the type of a specific value.\n\n```js\nimport { isString } from 'r-assign/lib/string';\n\nisString('abc'); // => true\n\nisString(42); // => false\n```\n\nSome type guards require configuration to be able to do more complex type\nchecking.\n\n```js\nimport { isArrayOf } from 'r-assign/lib/array';\nimport { isString } from 'r-assign/lib/string';\n\nconst isArrayOfStrings = isArrayOf(isString);\n\nisArrayOfStrings(['abc']); // => true\n\nisArrayOfStrings([42]); // => false\n```\n\nAll the type guards have shorter aliases.\n\n```js\nimport { array } from 'r-assign/lib/array';\nimport { string } from 'r-assign/lib/string';\n\nconst stringArray = array(string);\n\nstringArray(['abc']); // => true\n\nstringArray([42]); // => false\n```\n\n---\n## Basic Data Types\n\n### Any\n\n```js\nimport { isAny, any } from 'r-assign/lib/any';\n\nisAny('abc'); // => true\nisAny(); // => true, will always return true\n\n// Alias:\nany();\n```\n\n### Boolean\n\n```js\nimport { isBoolean, boolean } from 'r-assign/lib/boolean';\n\nisBoolean(false); // => true\nisBoolean(true); // => true\nisBoolean('false'); // => false, will return true only for boolean values\n\n// Alias:\nboolean(true);\n```\n\n### Number\n\n```js\nimport { isNumber, number } from 'r-assign/lib/number';\n\nisNumber(42); // => true\nisNumber(NaN); // => false, will return true only for finite number values\n\n// Alias:\nnumber(42);\n```\n\n### String\n\n```js\nimport { isString, string } from 'r-assign/lib/string';\n\nisString('abc'); // => true\nisString(''); // => true\nisString(); // => false, will return true only for string values\n\n// Alias:\nstring('abc');\n```\n\n### BigInt\n\n```js\nimport { isBigInt, bigint } from 'r-assign/lib/bigint';\n\nisBigInt(42n); // => true\nisBigInt(42); // => false, simple number is not a bigint\n\n// Alias:\nbigint(42n);\n```\n\n### Symbol\n\n```js\nimport { isSymbol, symbol } from 'r-assign/lib/symbol';\n\nisSymbol(Symbol('abc')); // => true\nisSymbol(Symbol()); // => true\nisSymbol(); // => false, will return true only for symbol values\n\n// Alias:\nsymbol(Symbol());\n```\n\n### Undefined\n\n```js\nimport { isUndefined, undef } from 'r-assign/lib/undefined';\n\nisUndefined(undefined); // => true\nisUndefined(); // => true\nisUndefined(null); // => false, will return true only for undefined values\n\n// Alias:\nundef(undefined);\n```\n\n### Null\n\n```js\nimport {\n    isNull,\n    isNullable,\n    isNullish,\n    nulled,\n    nullable,\n    nullish\n} from 'r-assign/lib/null';\nimport { isString, string } from 'r-assign/lib/string';\n\nisNull(null); // => true\nisNull(); // => false, will return true only for null values\n\n// Alias:\nnulled(null);\n\n// Check for nullable values (T | null)\n// Accepts a type guard as argument\nconst isNullableString = isNullable(isString); // string | null\n\nisNullableString('abc'); // => true\nisNullableString(null); // => true\nisNullableString(); // => false\n\n// Alias:\nnullable(string);\n\n// Check for nullish values (T | null | undefined)\n// Accepts a type guard as argument\nconst isNullishString = isNullish(isString); // string | null | undefined\n\nisNullishString('abc'); // => true\nisNullishString(null); // => true\nisNullishString(undefined); // => true\nisNullishString(); // => true\n\n// Alias:\nnullish(string);\n```\n\n### Literal\n\n```js\nimport {\n    isLiteral,\n    isLiteralOf,\n    literal,\n    literals\n} from 'r-assign/lib/literal';\n\n// Check for provided literal value\n// Accepts a primitive value as argument\nconst isLiteralABC = isLiteral('abc'); // 'abc'\n\nisLiteralABC('abc'); // => true\nisLiteralABC('def'); // => false\n\n// Alias:\nliteral('abc');\n\n// Check for one of the provided literal values\n// Accepts an array of primitive values as argument\nconst isLiteralOfABC = isLiteralOf(['a', 'b', 'c']); // 'a' | 'b' | 'c'\n\nisLiteralOfABC('a'); // => true\nisLiteralOfABC('b'); // => true\nisLiteralOfABC('c'); // => true\nisLiteralOfABC('d'); // => false\n\n// Alias:\nliterals(['a', 'b', 'c']);\n```\n\n### Instance\n\n```js\nimport { isInstanceOf, instance } from 'r-assign/lib/instance';\n\n// Check for instance of provided class\n// Accepts a constructor function as argument\nconst isDateInstance = isInstanceOf(Date); // Date\n\nisDateInstance(new Date()); // => true\n\n// Alias:\ninstance(Date);\n```\n\n### Date\n\n```js\nimport { isDate, date } from 'r-assign/lib/date';\n\nisDate(new Date()); // => true\nisDate(new Date(NaN)); // => false, will return true only for valid date values\n\n// Alias:\ndate(new Date());\n```\n\n### Never\n\n```js\nimport { isNever, never } from 'r-assign/lib/never';\n\nisNever('abc'); // => false\nisNever(); // => false, will always return false\n\n// Alias:\nnever();\n```\n\n---\n## Complex data types\n\n### Array\n\n```js\nimport { isArrayOf, array } from 'r-assign/lib/array';\nimport { isString, string } from 'r-assign/lib/string';\n\n// Check for array values (T[])\n// Accepts a type guard as argument\nconst isArrayOfStrings = isArrayOf(isString); // string[]\n\nisArrayOfStrings(['abc']); // => true\nisArrayOfStrings(['abc',,'def']); // => false, will check for sparse arrays\n\n// Alias:\narray(string);\n```\n\n### Object\n\n```js\nimport {\n    isObjectOf,\n    isStrictObjectOf,\n    isKeyOf,\n    isPickFrom,\n    isOmitFrom,\n    object,\n    strictObject,\n    keyof,\n    pick,\n    omit\n} from 'r-assign/lib/object';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isString, string } from 'r-assign/lib/string';\n\n// Check for object of provided shape\n// Accepts an object of type guards as argument\nconst isObjectOfNameAge = isObjectOf({\n    name: isString,\n    age: isNumber\n}); // { name: string; age: number }\n\nisObjectOfNameAge({\n    name: 'John',\n    age: 22,\n    active: true\n}); // => true, checks only if the provided properties are available\n\n// Alias:\nobject({\n    name: string,\n    age: number\n});\n\n// Strict check for object of provided shape\n// Accepts an object of type guards as argument\nconst isStrictObjectOfNameAge = isStrictObjectOf({\n    name: isString,\n    age: isNumber\n}); // { name: string; age: number }\n\nisStrictObjectOfNameAge({\n    name: 'John',\n    age: 22,\n    active: true\n}); // => false, checks for the provided properties and object shape to match\n\n// Alias:\nstrictObject({\n    name: string,\n    age: number\n});\n\n// Check for object keys from the provided object type\nconst isKeyOfNameAge = isKeyOf(isObjectOfNameAge); // 'name' | 'age'\n\nisKeyOfNameAge('name'); // => true\n\n// Alias:\nkeyof(object({\n    name: string,\n    age: number\n}));\n\n// Check for object of provided shape and pick only the provided properties\nconst isPickFromNameAge = isPickFrom(isObjectOfNameAge, 'name');\n// { name: string; }\n\nisPickFromNameAge({ name: 'John' }); // => true\n\n// Alias:\npick(object({\n    name: string,\n    age: number\n}), 'name');\n\n// Check for object of provided shape and omit the provided properties\nconst isOmitFromNameAge = isOmitFrom(isObjectOfNameAge, 'name');\n// { age: number }\n\nisOmitFromNameAge({ age: 22 }); // => true\n\n// Alias:\nomit(object({\n    name: string,\n    age: number\n}), 'name');\n```\n\n### Tuple\n\n```js\nimport { isTupleOf, isTupleRestOf, tuple, tupleRest } from 'r-assign/lib/tuple';\nimport { isString, string } from 'r-assign/lib/string';\nimport { isNumber, number } from 'r-assign/lib/number';\n\n// Check for tuple values\n// Accepts an array of type guards as argument\nconst isTupleOfStrings = isTupleOf([isString, isString]); // [string, string]\n\nisTupleOfStrings(['abc', 'def']); // => true\nisTupleOfStrings(['abc']); // => false\n\n// Alias:\ntuple([string, string]);\n\n// [string, ...number[]]\nconst isTupleWithRest = isTupleRestOf([isString, isTupleRestOf(isNumber)]);\n\n// Alias:\ntuple([string, tupleRest(number)]);\n```\n\n### Record\n\n```js\nimport { isRecordOf, record } from 'r-assign/lib/record';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isString, string } from 'r-assign/lib/string';\n\nconst isStringRecord = isRecordOf(isString, isNumber); // Record<string, number>\n\nisStringRecord({\n    a: 1,\n    b: 2\n}); // => true\n\nisStringRecord({\n    a: 1,\n    b: '2'\n}); // => false, all values should be numbers\n\n// Alias:\nrecord(string, number);\n\n// By omitting the keys type guard it will be expected that all keys are strings\nconst isStringRecordAlso = isRecordOf(isNumber); // Record<string, number>\n\nisStringRecordAlso({\n    a: 1,\n    b: 2\n}); // => true\n\n// Alias:\nrecord(number);\n```\n\n### Template literal\n\n```js\nimport {\n    isTemplateLiteralOf,\n    templateLiteral\n} from 'r-assign/lib/template-literal';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isString, string } from 'r-assign/lib/string';\n\n// Check for string values that match the provided template literal\n// Accepts an array of primitive values and type guards as argument\nconst isStringDashNumber = isTemplateLiteralOf(\n    [isString, '-', isNumber] // `${string}-${number}`\n);\n\nisStringDashNumber('abc-123'); // => true\nisStringDashNumber('abc'); // => false\n\n// Alias:\ntemplateLiteral([string, '-', number]);\n```\n\n### Function\nFunction type guard is a special case of type guards, it will just check for the\nvalues to be functions, but when used in [parsing](#parsing-data) or\n[getting](#getting-data) data transform functions values are wrapped in a\nfunction that will validate the input and the output of the original function\nvalues.\n\n```js\nimport {\n    isFunction,\n    isAsyncFunction,\n    func,\n    asyncFunc\n} from 'r-assign/lib/function';\nimport { isString, string } from 'r-assign/lib/string';\nimport { isNumber, number } from 'r-assign/lib/number';\n\n// Takes two arguments, the function arguments tuple type guards and function\n// return type guard\n// (arg0: number) => string\nconst isSomeFunction = isFunction([isNumber], isString);\n\nisSomeFunction(() => null); // => true, will check just if the provided value\n                            //    is a function\nisSomeFunction(() => ''); // => true\n\n// Note: Function type guards should be used as part of parsing or getting\n//       values to validate the function arguments and return type, in other\n//       cases they will just check for function type\n\n// Alias:\nfunc([number], string);\n\n// Same as \"isFunction()\" but for async functions\n// (arg0: number) => Promise<string>\nconst isSomeAsyncFunction = isAsyncFunction([isNumber], isString);\n\nisSomeAsyncFunction(() => null); // => true, will check just if the provided\n                                 //    value is a function\nisSomeAsyncFunction(() => ''); // => true\n\n// Note: Function type guards should be used as part of parsing or getting\n//       values to validate the function arguments and return type, in other\n//       cases they will just check for function type\n\n// Alias:\nasyncFunc([number], string);\n```\n\n### Promise\nPromise type guard is a special case of type guards, the same as function type\nguard, it will just check for the values to be promises, but when used in\n[parsing](#parsing-data) or [getting](#getting-data) data transform functions\nvalues are wrapped in a promise that will validate the resolve type of the\noriginal promise values.\n\n```js\nimport { isPromiseOf, promise } from 'r-assign/lib/promise';\nimport { isString, string } from 'r-assign/lib/string';\n\n// Takes one argument, the promise resolve type guard\n// Promise<string>\nconst isSomePromise = isPromiseOf(isString);\n\nisSomePromise(Promise.resolve('abc')); // => true\nisSomePromise(Promise.resolve()); // => true, will check just if the provided\n                                  //    value is a promise\n\n// Note: Promise type guards should be used as part of parsing or getting\n//       values to validate the promise resolve type, in other cases they will\n//       just check for promise type\n\n// Alias:\npromise(string);\n```\n\n---\n## Type operations\n\n### Union\n\n```js\nimport { isUnionOf, union } from 'r-assign/lib/union';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isString, string } from 'r-assign/lib/string';\n\nconst isStringOrNumber = isUnionOf([isString, isNumber]); // string | number\n\nisStringOrNumber('abc'); // => true\nisStringOrNumber(123); // => true\n\n// Alias:\nunion([string, number]);\n```\n\n### Intersection\n\n```js\nimport { isIntersectionOf, intersection } from 'r-assign/lib/intersection';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isObjectOf, object } from 'r-assign/lib/object';\nimport { isString, string } from 'r-assign/lib/string';\n\nconst isObjectOfName = isObjectOf({\n    name: isString\n});\n\nconst isObjectOfAge = isObjectOf({\n    age: isNumber\n});\n\n// { name: string } & { age: number }\nconst isObjectOfNameAge = isIntersectionOf([isObjectOfName, isObjectOfAge]);\n\nisObjectOfNameAge({\n    name: 'John',\n    age: 22\n}); // => true\n\n// Alias:\nintersection([object({ name: string }), object({ age: number })]);\n```\n\n### Optional\n\n```js\nimport {\n    isOptional,\n    isOptionalUndefined,\n    optional,\n    optionalUndef\n} from 'r-assign/lib/optional';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isObjectOf, object, } from 'r-assign/lib/object';\nimport { isString, string } from 'r-assign/lib/string';\nimport { isTupleOf, tuple } from 'r-assign/lib/tuple';\n\nconst isOptionalTuple = isTupleOf([isOptional(isString)]); // [string?]\n\nisOptionalTuple(['abc']); // => true\nisOptionalTuple([]); // => true\nisOptionalTuple([undefined]); // => false, strict optional is used\n\n// Alias:\ntuple([optional(string)]);\n\n// [(string | undefined)?]\nconst isOptionalUndefinedTuple = isTupleOf([isOptionalUndefined(isString)]);\n\nisOptionalUndefinedTuple(['abc']); // => true\nisOptionalUndefinedTuple([]); // => true\nisOptionalUndefinedTuple([undefined]); // => true\n\n// Alias:\ntuple([optionalUndef(string)]);\n\nconst isOptionalObject = isObjectOf({\n    name: isString,\n    age: isOptional(isNumber)\n}); // { name: string; age?: number }\n\nisOptionalObject({\n    name: 'John',\n    age: 22\n}); // => true\nisOptionalObject({\n    name: 'John'\n}); // => true\nisOptionalObject({\n    name: 'John',\n    age: undefined\n}); // => false, strict optional is used\n\n// Alias:\nobject({\n    name: string,\n    age: optional(number)\n});\n\nconst isOptionalUndefinedObject = isObjectOf({\n    name: isString,\n    age: isOptionalUndefined(isNumber)\n}); // { name: string; age?: number | undefined }\n\nisOptionalUndefinedObject({\n    name: 'John',\n    age: 22\n}); // => true\nisOptionalUndefinedObject({\n    name: 'John'\n}); // => true\nisOptionalUndefinedObject({\n    name: 'John',\n    age: undefined\n}); // => true\n\n// Alias:\nobject({\n    name: string,\n    age: optionalUndef(number)\n});\n```\n\n### Partial\n\n```js\nimport {\n    isPartial,\n    isPartialUndefined,\n    partial,\n    partialUndef\n} from 'r-assign/lib/partial';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isObjectOf, object, } from 'r-assign/lib/object';\nimport { isString, string } from 'r-assign/lib/string';\nimport { isTupleOf, tuple } from 'r-assign/lib/tuple';\n\n// Partial<[string]> -> [string?]\nconst isPartialTuple = isPartial(isTupleOf([isString]));\n\nisPartialTuple(['abc']); // => true\nisPartialTuple([]); // => true\nisPartialTuple([undefined]); // => false, strict optional is used\n\n// Alias:\npartial(tuple([string]));\n\n// Partial<[string | undefined]> -> [(string | undefined)?]\nconst isPartialUndefinedTuple = isPartialUndefined(isTupleOf([isString]));\n\nisPartialUndefinedTuple(['abc']); // => true\nisPartialUndefinedTuple([]); // => true\nisPartialUndefinedTuple([undefined]); // => true\n\n// Alias:\npartialUndef(tuple([string]));\n\n// Partial<{ name: string; age: number }> -> { name?: string; age?: number }\nconst isPartialObject = isPartial(isObjectOf({\n    name: isString,\n    age: isNumber\n}));\n\nisPartialObject({\n    name: 'John',\n    age: 22\n}); // => true\nisPartialObject({\n    name: 'John'\n}); // => true\nisPartialObject({\n    age: 22\n}); // => true\nisPartialObject({}); // => true, all properties are optional\nisPartialObject({\n    name: 'John',\n    age: undefined\n}); // => false, properties are strict optional\n\n// Alias:\npartial(object({\n    name: string,\n    age: number\n}));\n\n// Partial<{                   ->  {\n//  name: string | undefined;  ->    name?: string | undefined;\n//  age: number | undefined;   ->    age?: number | undefined;\n// }>                          ->  }\nconst isPartialUndefinedObject = isPartialUndefined(isObjectOf({\n    name: isString,\n    age: isNumber\n}));\n\nisPartialUndefinedObject({\n    name: 'John',\n    age: 22\n}); // => true\nisPartialUndefinedObject({\n    name: 'John'\n}); // => true\nisPartialUndefinedObject({\n    name: 'John',\n    age: undefined\n}); // => true\n\n// Alias:\npartialUndef(object({\n    name: string,\n    age: number\n}));\n```\n\n### Required\n\n```js\nimport {\n    isRequired,\n    required\n} from 'r-assign/lib/required';\nimport {\n    isOptional,\n    optional\n} from 'r-assign/lib/optional';\nimport { isNumber, number } from 'r-assign/lib/number';\nimport { isObjectOf, object, } from 'r-assign/lib/object';\nimport { isString, string } from 'r-assign/lib/string';\nimport { isTupleOf, tuple } from 'r-assign/lib/tuple';\n\n// Required<[string?]> -> [string]\nconst isRequiredTuple = isRequired(isTupleOf([isOptional(isString)]));\n\nisRequiredTuple(['abc']); // => true\nisRequiredTuple([]); // => false, is required already\n\n// Alias:\npartial(tuple([optional(string)]));\n\n// Required<{ name: string; age?: number }> -> { name: string; age: number }\nconst isRequiredObject = isRequired(isObjectOf({\n    name: isString,\n    age: isOptional(isNumber)\n}));\n\nisRequiredObject({\n    name: 'John',\n    age: 22\n}); // => true\nisRequiredObject({\n    name: 'John'\n}); // => false, is required already\n\n// Alias:\nrequired(object({\n    name: string,\n    age: optional(number)\n}));\n```\n\n## Assert type\n`r-assign` also provides a way to assert the type of the input, it will throw an\nerror if the input does not match the defined type. Thrown error message can be\ncustomized. This is useful for validating functions input or for debugging\npurposes.\n\n```js\nimport { assertType } from 'r-assign/lib/assert-type';\nimport { isString } from 'r-assign/lib/string';\n\nconst expectString = (value) => {\n    assertType(isString, value, 'Expected string');\n\n    // value is string\n    // Do something with the value\n};\n```\n\n## Parse type\n`r-assign` allows parsing values and match them with the provided type, it will\nthrow an error in case they do not match or just return the value in case they\nmatch. For object values it may return a deep clone of the input value for\nloose matching. Function values will be wrapped in a function that will validate\nthe input and the output when it is called.\n\n```js\nimport rAssign from 'r-assign';\nimport { parseType } from 'r-assign/lib/parse-type';\nimport { isString } from 'r-assign/lib/string';\n\ntry {\n    const result = rAssign({\n        data: parseType(isString)\n    }, { /* Unknown data */ });\n} catch (error) {\n    /* Process error */\n}\n```\n\n`parseType()` function can be used with the `rAssign` function for commodity\nand can be configured with type guards for more complex parsing. For proper\nusage parsing utility functions should be wrapped inside a `try...catch`\nstatement to avoid unhandled errors. `parseType()` function can be used outside\nof `rAssign` to extract the required value that is not part of an object.\n\n```js\nimport { parseType } from 'r-assign/lib/parse-type';\nimport { isString } from 'r-assign/lib/string';\n\nconst parseString = parseType(isString);\n\ntry {\n    const result = parseString(/* Unknown data */);\n} catch (error) {\n    /* Process error */\n}\n```\n\n## Get type\n`getType()` function is very similar with `parseType()` except that it accepts a\ndefault value that is returned when the input does not match the provided type.\nThe default value has to match the provided type.\n\n```js\nimport rAssign from 'r-assign';\nimport { getType } from 'r-assign/lib/get-type';\nimport { isString } from 'r-assign/lib/string';\n\nconst result = rAssign({\n    data: getType(isString, 'abc') // Default value will be \"abc\"\n}, { /* Unknown data */ });\n```\n\n`getType()` function can also be used outside of `rAssign`.\n\n```js\nimport { getType } from 'r-assign/lib/get-type';\nimport { isString } from 'r-assign/lib/string';\n\nconst getString = getType(isString, 'abc');\n\nconst result = getString(/* Unknown data */);\n```\n\n## Set same\nTo improve the process of extracting object values with `parseType()` and\n`getType()`, `r-assign` provides a way to set a flag to skip the creation of a\nnew object when the input value matches the provided type using `setSame()`\nfunction. It can be applied to `array`, `object`, `tuple` and `record` type\nguards.\n\n```js\nimport { parseType } from 'r-assign/lib/parse-type';\nimport { getType } from 'r-assign/lib/get-type';\nimport { isObjectOf, object } from 'r-assign/lib/object';\nimport { isString, string } from 'r-assign/lib/string';\nimport { setSame, same } from 'r-assign/lib/same';\n\nconst isSomeObject = isObjectOf({\n    name: isString,\n    age: isString\n});\n\nsetSame(isSomeObject);\n\n// Alias:\nsame(isSomeObject);\n\nconst parseSomeObject = parseType(isSomeObject);\n\nconst getSomeObject = getType(isSomeObject, {\n    name: 'John',\n    age: '22'\n});\n\n// Parse some object\nparseSomeObject(/* Unknown data */);\n\n// Get some object\ngetSomeObject(/* Unknown data */);\n\n// Disable same flag\nsetSame(isSomeObject, false);\n\n// Alias:\nsame(isSomeObject, false);\n```\n\n## Converting data\nWhen there is a variety of data types that can be converted to string or date\ntypes, `r-assign` provides utility functions for that purpose using the\nfollowing functions:\n- `asString` - converts any value to string, will NOT stringify objects to JSON,\n  it behaves exactly as calling `.toString()` method on the provided values.\n- `asDate` - converts any string or number to date, will throw an error\n  if the provided value is not a valid date, it behaves exactly as calling the\n  `new Date()` constructor on the provided values.\n\n```js\nimport rAssign from 'r-assign';\nimport { asDate } from 'r-assign/lib/date';\nimport { asString } from 'r-assign/lib/string';\n\nconst input = {\n    created: '2020-01-01',\n    edited: 1609459200000,\n    status: null\n};\n\nconst result = rAssign({\n    created: asDate,\n    edited: asDate,\n    status: asString\n}, input);\n\n// {\n//     created: new Date('2020-01-01'),\n//     edited: new Date('2021-01-01'),\n//     status: 'null'\n// }\n```\n\n## Working with TypeScript\n`r-assign` is designed to be used in both JavaScript and TypeScript projects.\nThe output of the `rAssign` function is automatically inferred, it is also\npossible to infer a type out of the provided schema using the `InferType` type\nthat is exported from the package. In the case of a type guard the type\n`InferTypeGuard` should be used, it is exported from `r-assign/lib`.\n\n```ts\nimport rAssign, { InferType } from 'r-assign';\nimport {\n    isBoolean,\n    isNumber,\n    isObjectOf,\n    isOptional,\n    isString,\n\tisUndefined,\n\tisUnionOf,\n    getType,\n    parseType,\n    InferTypeGuard\n} from 'r-assign/lib';\n\nconst personSchema = {\n    name: parseType(isString),\n    age: getType(isNumber, 0),\n    active: getType(isUnionOf([isBoolean, isUndefined]), false)\n};\n\nconst result = rAssign(personSchema, { /* Unknown data */ });\n\n// {\n//     name: string;\n//     age: number;\n//     active?: boolean;\n// };\n\ntype PersonType = InferType<typeof personSchema>;\n\n// type PersonType = {\n//     name: string;\n//     age: number;\n//     active?: boolean;\n// };\n\n// Or use a type guard and infer the type from it\nconst isPerson = isObjectOf({\n    name: isString,\n    age: isNumber,\n    active: isOptional(isBoolean)\n});\n\ntype PersonType = InferTypeGuard<typeof isPerson>;\n\n// type PersonType = {\n//     name: string;\n//     age: number;\n//     active?: boolean;\n// };\n```\n\n## Mapping properties\nOne of the main features of `r-assign` is to map values, utility functions can\nbe combined to implement this functional.\n\n```js\nimport rAssign from 'r-assign';\nimport { isNumber, getType } from 'r-assign/lib';\n\nconst getFiniteNumber = getType(isNumber, 0);\n\nconst incrementNumber = (value) => {\n\n    const number = getFiniteNumber(value);\n\n    return number + 1;\n};\n\nconst result = rAssign({\n    value: incrementNumber\n}, { /* Unknown data */ });\n```\n\n## Filtering properties\nFiltering properties in `r-assign` is a side effect of the thing that only\nproperties that are defined inside transform schema are added to the output\nobject. Another use case of filtering would be to accept some values for a\nproperties and reject other.\n\nAs a simple example let's exclude the number `42` from the accepted values:\n\n```js\nimport rAssign from 'r-assign';\nimport { isNumber, getType } from 'r-assign/lib';\n\nconst getFiniteNumber = getType(isNumber, 0);\n\nconst acceptNumbersExcept42 = (value) => {\n\n    const number = getFiniteNumber(value);\n\n    if (number === 42) {\n        return undefined;\n    }\n\n    return number;\n};\n\nconst result = rAssign({\n    value: acceptNumbersExcept42\n}, { /* Unknown data */ });\n```\n\n## Complex interactions\nBy design `r-assign` can interact with multiple properties and create new ones\nusing the source object that is accessed as the third argument in transform\nfunctions.\n\nAs a simple example let's get a `port` value with multiple conditions, in case\nthere is set another property in the source object like `https` set to `true`.\n\n```js\nimport rAssign from 'r-assign';\nimport { isNumber, getType } from 'r-assign/lib';\n\nconst httpDefaultPort = 80;\nconst httpsDefaultPort = 443;\nconst lastReservedPort = 1023;\nconst getFiniteNumber = getType(isNumber, httpDefaultPort);\n\nconst getPort = (value, key, source) => {\n\n    // Limit the usage of the transform function to the `port` property\n    if (key !== 'port') {\n        throw new Error('Invalid key, expected \"port\"');\n    }\n\n    const port = getFiniteNumber(value);\n\n    // Check if the port is outside the reserved range\n    if (port > lastReservedPort) {\n        return port;\n    }\n\n    // Check for the presence of the `https` property in the source object\n    if (source.https === true) {\n        return httpsDefaultPort;\n    }\n\n    return httpDefaultPort;\n};\n\nconst result = rAssign({\n    port: getPort\n}, { /* Unknown data */ });\n```","readmeFilename":"readme.md"}