{"_id":"@jackfranklin/test-data-bot","_rev":"7-eb2006e33627a519e9c1993e83990389","name":"@jackfranklin/test-data-bot","dist-tags":{"latest":"2.1.0"},"versions":{"1.0.0":{"name":"@jackfranklin/test-data-bot","version":"1.0.0","description":"Generate test data for your tests easily.","engines":{"node":">=10.13"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint --quiet 'src/*.ts' && prettier --list-different 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"license":"MIT","devDependencies":{"@types/faker":"^4.1.9","@types/jest":"^25.1.1","@types/lodash":"^4.14.149","@types/node":"^13.5.2","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","prettier":"^1.19.1","ts-jest":"^25.1.0","typescript":"^3.7.5"},"dependencies":{"faker":"4.1.0","lodash":"^4.17.15"},"gitHead":"b13e5bccd5d0e640f55d1a83670012bdcd31a01f","_id":"@jackfranklin/test-data-bot@1.0.0","_nodeVersion":"10.18.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hoTXrkRm84WMlvnTl/oAwqCRkbaKjj6AE5plRIZU+8GQma9AzsHehAHQgA+xLgLaNvr1YlL+qISaGmIadhCnmA==","shasum":"08a448eccb043468cf1fcaf3e5861083809571b8","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-1.0.0.tgz","fileCount":7,"unpackedSize":23927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNVugCRA9TVsSAnZWagAAgSUP/3+tPAU56acH1NLDetvl\nEQYdbAoCmvMtV7idJQbIsRq/pD91GwqllJ5VPcqGt7iwapE1i50ZMSCPuqSe\nQdis81Y+5iBVs31M4WHz/0WgGTc3hVYV5YAeTie2EnIjoICP3xHPoTmJZNza\nbZXOVe6LcOo4t9XGszCF8tnl7kVqwZ2YUWGHec7wMfUelz1E7oqL2rnPUnHm\n6cJqbl7FMBxPe+IIUZBjAzNwhmmkP4khsVlnsXNABAIUYAh22ggh0yMwK3nW\nG35TzBKwiHkQTHp4n5KlI+kYSSXTUDONTzrzYTgpvqtE57Oe906Z2jsWM/2O\ne7BlwULmZm1d0EzGjtYiS+lHiy08o/8cq9CeVcvYpQcb6Z77QfTWizN8CBgu\nZGO9V43OJXXiilDcZ/DRwAhGdh3PkU8Ejna7sNvN2Y5VO3AB6W5jmGKO93uD\nYAAdvctyFRPq9Ttls6JW99/8J9chHgymyczN6Yb5JlrPJOBiHmgtzzqhETU7\nlQYI68fXKzKcMjFjWMAh+xox2l6TrTmsXNdtv2Dtmgs+UXUahu10hL/rRIvt\nennentxRgmUScQUmX4cgW8p80b+xXVe0RgdFFigzavNkk10emSX09Ba6vHPc\n7CyPJx9QhOZi5ZWsv8m0xGDvy0z6hTuudDUe9bsh3c/PXsh4PnJ77R2apf/u\n2x0n\r\n=hozN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC2Tb2/T0A9biDRo8HTy0gYouFcDot519b6koTRRGUguAiEA7CR1lLOK3wh28teAiVjAV/gvydT5aHPNtAZOUyhFNGk="}]},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_1.0.0_1580555168176_0.3669098674509623"},"_hasShrinkwrap":false},"1.1.0":{"name":"@jackfranklin/test-data-bot","version":"1.1.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=10.13"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint --quiet 'src/*.ts' && prettier --list-different 'src/*.ts'","lint-fix":"eslint --quiet --fix 'src/*.ts' && prettier --write 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@types/jest":"^25.1.1","@types/lodash":"^4.14.149","@types/node":"^13.5.2","@typescript-eslint/eslint-plugin":"^2.18.0","@typescript-eslint/parser":"^2.18.0","eslint":"^6.8.0","eslint-config-prettier":"^6.10.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^23.6.0","eslint-plugin-prettier":"^3.1.2","jest":"^25.1.0","prettier":"^2.0.2","ts-jest":"^25.1.0","typescript":"^3.7.5"},"dependencies":{"@types/faker":"^4.1.9","faker":"4.1.0","lodash":"^4.17.15"},"gitHead":"fa7cc5ba18e6d6e26e852fa05129c139eee85334","_id":"@jackfranklin/test-data-bot@1.1.0","_nodeVersion":"10.19.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hK1LrE5XL2yZ6p+vj8xyNBGkwE1hTTagrGfKKbkwTG8nFmtKdovIM2+c23P+LzZgKiFKePRhxi3dT8RFUMPkrQ==","shasum":"35a9b39077adb5dd5b6909537a682321426f311b","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-1.1.0.tgz","fileCount":8,"unpackedSize":26474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeej6xCRA9TVsSAnZWagAA0BcQAIY/Dln3Kb2H3CECVTkV\nghy/mWt8GU0nHE1H5OVJezfV9aECny2YoTpJHeZQBxb+oAY0Koe4ArN+WUKQ\ncF8r6d8FI75dTM1ZxR3APoRk98kMBuOkwwxcQKsleVdLkz8F4Pq/vlTt+sWl\n208vDsuz9t/ZakFVsSwitXPGwK2fMVZaONB70kkfwhrKs33Th/JZigApi/eE\ng8x0sOz8jMIvQwmiJUcVQw9M+yYnixOt9xRhZkTxyQQ2TZPqOf+/g687HW+d\nSDEBtZbWE9/9fMGUGsb3xbacJUIIOQsqbWcc8ZK8al3RmChuVW+p2KsDyMgU\nKQtMXSq7BeRdt4QhTGov9U5LuNkEcytuSz5O8BQmGnSN4+znx6FPJzaxhZIL\nkNMUk6hq3cbQKXEla17bvajHK2IIYDG61/EQmFqpkLNEVVs2V9zF4yMFbz9f\nOF2rpM0P4ETx9WKbCgpLnhjBlTpVl2DLsFHPDQ4U7qQzBWjqu4O3QOj+yzK3\n7AGfSj2s96hTStv4CVDj4FijeFmDqUq13ci2r3f7GasSgEGctzxAUHqGlJAI\nI5zVlJSJ5a//PeVlF4A3bZHZKzE0CFp1mUQxDNYIr3Xukx17zy3JXWY3eHSX\nJYBxwGBK+WA+xq9uFx/bDeNHuM2Kqtlcdk8ZQSU90k3HZGTbksUoMuRudUEJ\n1dPS\r\n=YfP0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLQv9KX68yDi6cTlJvO8if80iVubvsnD5LmVTEyUZKLwIgQRWKJcVHCfEBzpqkthIUXMhGKGY33Wlb0e6hOyOAW5A="}]},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_1.1.0_1585069744804_0.1791669877536275"},"_hasShrinkwrap":false},"1.2.0":{"name":"@jackfranklin/test-data-bot","version":"1.2.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=10.13"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint --quiet 'src/*.ts' && prettier --list-different 'src/*.ts'","lint-fix":"eslint --quiet --fix 'src/*.ts' && prettier --write 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@types/jest":"^25.2.1","@types/lodash":"^4.14.150","@types/node":"^13.13.5","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^23.9.0","eslint-plugin-prettier":"^3.1.3","jest":"^25.5.4","prettier":"^2.0.2","ts-jest":"^25.5.0","typescript":"^3.7.5"},"dependencies":{"@types/faker":"^4.1.9","faker":"4.1.0","lodash":"^4.17.15"},"gitHead":"748cb560b3248192b06185c2f571f54eaea25ad8","_id":"@jackfranklin/test-data-bot@1.2.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-fJwmtJU6HHk4RxKzo2Bh7/C4yJSy3qJ9FBGON/geSDQtyFLanl2tSsqipV/eiwUBwPpB5vBvPGpva8Hy6gZQKA==","shasum":"e9b4b6c809df506c58d3ab18efcf4a23f2acc45c","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-1.2.0.tgz","fileCount":8,"unpackedSize":27504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetegZCRA9TVsSAnZWagAAtdoP/RXGz6wXs1L6CUafMPVE\nLlez7yVcSnGE+VPfE5fDyojU3VecqzPvYXjDJ2zsyryCW39aUN+/esQJmzlW\nlaHH3nqk1T36MSWdqRinIb2xA94WvEJKgP/r0dKS0Qbozm+GgAvZ0rQ6L8fQ\nV39V9CcvOvBCpXPXzzUH6mE4nay1BQ0jLA9CX05/403MPHTuA9Stuj+Ob4VH\n6FxX6C4GZtLTMeYSqBWZSBEKFP4JZMina2WtQ/lVfRTloRy/FTRz+5Ek5Obh\nMZdfP+iK+bGpdVpKPb8G8f5OjmaHsZ7JBO+xfL5WEtrPBcRMv5c4Bcje0T3h\n4LVGm4LhG3QkPO6lmJ4vl/WuBkE/AfNKXJfvhu5af8hwhnzy2sVCFIjod/jk\nhNCUxgyNaAkYH5Xt5xcXxQtp3GkPJTUKqtcCEFWOO/m3bPljjGb/9gHDmHSD\n9b12LH6BRhJp6B+dyepqNGobu7b7HA20l4fYrHkhJyNjy1ARh6zkq/3jMMR7\ng8JxnQsIEoMHnfKmF8Wej1qa2O3rCvN4IkWSkiI1wknB1cLVlS2cxU4HgL+N\nsxgAey2Epmq+SxMHyzFHk5lqoom10at6g0CAFm8MUL64kZmGkWBHc1NBATf0\njB0IDbI66wLXlyU5AX/61O3HlvTJQDNvTTUwtO7b03K6g8cQLrAtbbnuF9V3\neoEs\r\n=frZp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwE2gsbw6vZuE4QJhkocLnq/KN0T21CbTFrhOzQ2fElAiEA1l8wDFI9+df5+gghwAUCMOyaza67TVQprfdvFP8q15o="}]},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_1.2.0_1588979736541_0.7650358007299185"},"_hasShrinkwrap":false},"1.3.0":{"name":"@jackfranklin/test-data-bot","version":"1.3.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=10.13"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint --quiet 'src/*.ts' && prettier --list-different 'src/*.ts'","lint-fix":"eslint --quiet --fix 'src/*.ts' && prettier --write 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@types/jest":"^25.2.1","@types/lodash":"^4.14.150","@types/node":"^14.0.1","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","eslint":"^7.0.0","eslint-config-prettier":"^6.11.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^23.9.0","eslint-plugin-prettier":"^3.1.3","jest":"^25.5.4","prettier":"^2.0.2","ts-jest":"^25.5.0","typescript":"^3.7.5"},"dependencies":{"@types/faker":"^4.1.9","faker":"4.1.0","lodash":"^4.17.15"},"gitHead":"dcc033cf74171bd828e06f80fb50d7e299b692b8","_id":"@jackfranklin/test-data-bot@1.3.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-68OfPjgHT58ftfd0XKVWOp0p/1K+bbxSPu3wdH9N+/Ox9a3aM/d8sS0AFSJ48Vuoww+MkbHDH1cEE5tTkpTPlw==","shasum":"bf8fa6439500e6b7b2959ed1613b715889ae6869","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-1.3.0.tgz","fileCount":8,"unpackedSize":32269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu593CRA9TVsSAnZWagAA7pQQAIdOGi3KB3/MXE/aeWDZ\nCel+XxRaO5KhMTI/LDwRtTZDMapbIynV4PYN0IwVtJjGAfJOrgLphMoG7sqe\nScD0FiNMkBbPhGXauYDJHjbz8cVkrMm7gQ6tgrruRtNid2EeaqSHh2rEvcxE\nOxH3XbwE9cP9k/67lwlanQkFwRMPMB/5mK1G1uZJ5Uhbp6sg3m4ObnyH/H7g\nb2QbHSaulldulmiYYBxKIoJISqijqCEdjNvzR3oC+/XVImBdacmjSGGfdfvT\n/CNyHFYCkCJCz9bzA/73qfUm81UUg315eP3mR9RiNrCVpxZIu4aQq26j9P3g\nEuZnQAsDeOGgYknKt5istrEKl36vwFU/rn0OJxyA6rmSrYjHOJ1PczhLsWrZ\nQcDGSomwEukLcIRLhJCBL1mva/vo7RdF/EzcaurA0qmLW9+UDRBmpIrXEKU3\nsalUig77NrOb3sDZp9jS85iWa1pwrgYo+ARSKi4Rt6Hti3ZoGXlnS5EURrqb\nbndu2j405KMrRAG9UG1sZX4jqhChyWTCh3lm1jRheuO0QUwRd/hjwED0CpZP\nKeWRCXrEpKCgtor6JxrT51jjxxPaLLKwvcIarua7mvS60iygel6llFd2xmcE\nPNrVA45OHD858Z/pSuvjJT5dGjVZ3OmEKNcHXF8Ej5Txqi45h1qCVhxWxPaz\ncYiO\r\n=du+X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl6WlD72VYzmgNejhWTaYNhzdaqnembg/QI51X22kr6AIgMdmITJqyYWTHt2Stx3l3+E8uBIteershKGf9fqUV5qM="}]},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_1.3.0_1589354358500_0.8658351766138528"},"_hasShrinkwrap":false},"1.4.0":{"name":"@jackfranklin/test-data-bot","version":"1.4.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=10.13"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint 'src/*.ts' && prettier --list-different 'src/*.ts'","lint-fix":"eslint --fix 'src/*.ts' && prettier --write 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@types/jest":"^27.0.3","@types/node":"^16.0.0","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.0.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^25.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.4.3","prettier":"^2.5.1","ts-jest":"^27.1.1","typescript":"^4.5.2"},"dependencies":{"@types/faker":"5.5.9","faker":"5.5.3","lodash":"4.17.21","@types/lodash":"4.14.178"},"gitHead":"cd1b4b75e1af7b9781cd4834c7cf737809496313","_id":"@jackfranklin/test-data-bot@1.4.0","_nodeVersion":"16.6.0","_npmVersion":"7.19.1","dist":{"integrity":"sha512-wVb1pZAVDJeYqr0e4/m8seqW7VFUFs4cQFPCRHTkkl7GRtWX8xr0gL5k0Z4YS3lRlx2bs04ica675l9Eco5Bww==","shasum":"b1f882a7eedb35627f27c50da8e6690c840c56dd","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-1.4.0.tgz","fileCount":7,"unpackedSize":31877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsms6CRA9TVsSAnZWagAAEkwP/jRScpADhyU8LGsU5UMw\nxXJl+lXmGdmST+8+UeBraNsngsYRgD5B7LUhpLvNkZyg6SgPG46WNL8TZxCo\nDi8MHDNx1ubMMA3L7emKktraDnCYB9KxT+p9zpnTw2OTMCCm7kc3H5miVTBu\nX+RQKCxu5VR2Og3mk/kcROt7c9N+cGB5af7AkZi5aBhFMpg/10nAhA2odkJd\nM1p6ShLcrylnpnlJ5R8JNYpogf9HMZDIZ5pXwsfqQD9eUZcj7d9FJGJuKuPN\nPpcwl8n5GZh3VhHIHZcLtWUHTdLoX5BA+SrDvebGTLt/CWgB5sTTd2IN21iX\nrIfATX3paxgOj7/tZQdhax8h1oF2+C+o0Q4cHJq2uFTJlNU3pzIPXwThdLvy\nljdV4KqNHHvjqG+vdSgQeFTZcPf3hITvgM7xtbRyiTkmBAnPE36YrNpU1wgI\n+UyHfBXA4FfhledbGddcNww9uC64AtEDsRcA+jT0nqjDnaNSPTt6U3V5Sj5A\npdxogBLrb1OFcQbg05doffOzgQJNykTFc3iyg6hx+uQ5u7/pkXeq0fytKSzY\n0HT2ldzy8mh8de7p9Yh7nsFKCWWTbDzEwugU99IIitnxalajr+M6TMuJp2R+\nuG8EhUNZPrRlORIRlZRLFtEFoewi0JUManKDil2THkSD37pjY5Xs2ybGzSFu\nIIHl\r\n=T1Ab\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+qYA5yoRpuWJj9M/Ma8OXQB21Y89+rkFTrAwyGr1ZcgIgA0ubPH+uWWjoCuAbuYfIVyPkRIB9Roue+qSvXwu4rlI="}]},"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_1.4.0_1639082810683_0.3169761802305544"},"_hasShrinkwrap":false},"2.0.0":{"name":"@jackfranklin/test-data-bot","version":"2.0.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=12"},"main":"build/index.js","scripts":{"test":"jest src","lint":"eslint 'src/*.ts' && prettier --list-different 'src/*.ts'","lint-fix":"eslint --fix 'src/*.ts' && prettier --write 'src/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@types/jest":"^27.0.3","@types/node":"^17.0.9","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.0.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-jest":"^25.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.4.3","prettier":"^2.5.1","ts-jest":"^27.1.1","typescript":"^4.6.2"},"types":"./build/index.d.ts","gitHead":"f395d2de37b6c94f83dbaa587208457f3d1bc343","_id":"@jackfranklin/test-data-bot@2.0.0","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-LA/rc2Y28JdvvPjCEYLx8xGm76bj8yphvybP0iwMiol3qVJlz59zSILuLxGKtxKcyCXoYCC3aUOsRmql1AqjBw==","shasum":"56df4085bc1b516c611fc9b98c349532ad5fce3f","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-2.0.0.tgz","fileCount":7,"unpackedSize":29000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiM3lMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqzrw//eGKizqcfeWoabNgn3UD7OqyebLouGMqr7i3GuXKtmhXZJP9l\r\nW6qB3Ha4YMLsuOPbmU3RX1AjuXSL4dhshTmaRgFJrSjVZ34EizAUHSKJ84CC\r\ncpkHQhu7JuBbOx+6gqHqmndmP3GD/a1CdcnYXcL7iDSRox6RTlrBu4VYFY1k\r\ngse+pq5WW96+jZmv+8K5auGRaloK6cgm7oy6/jzurEH6rAk/i+we2BAXZEMu\r\n/84jFmvzHHjLT/keGwAJLNmbLMntunOlod8zyX6awAiidBAK+cu/ZKJiLC0A\r\nUXlIQLgOAThXOFhTPGNlOmwgxJdyELVkhiyczizYFXDO/sU1q9wPkZPwezvW\r\nRcU6JOepBW17xYDj+XxGgMPqBBPhLekXvXw8fevruRui35KxUDkw5XD/l09V\r\n/yojzLfdJcCyQFm0vbLGDi/Axow4UWMhlK/nti8WTrN7WCcBiNazlqwE9/20\r\noM5vhG9kayqYW5kXmKY0teOsH7C34KbOtFp3iXIxjv1KxSQCQHzLimmiF6Xg\r\nymGT1f4NbMzpkUbxeyGb/STPL+svTfkEPGTrHii3jzbpWtCsi2e7HoyEz4D8\r\nJjIG7ql1C3VZOZso+0CnOjcI1B+O1yyesrFx55IPhsKu+PMu2ro2DLeVyYh6\r\nnQcRd8bbvAdW18ene6yM/P/osE3xVp1TteI=\r\n=ux6d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPOSqBz7/MkC6rfmVSJla+6WN4j/HAOtJ58r/QuWFI+wIhANzRP/jCJNi8Lyef/9d/eMgmtnG6ktHsXHaN91DYTO/s"}]},"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_2.0.0_1647540556044_0.2652711975669291"},"_hasShrinkwrap":false},"2.1.0":{"name":"@jackfranklin/test-data-bot","version":"2.1.0","license":"MIT","description":"Generate test data for your tests easily.","engines":{"node":">=12"},"main":"build/index.js","scripts":{"test":"tap --no-coverage -R=dot","test-with-coverage":"tap -R=dot","lint":"eslint '{src,test}/*.ts' && prettier --list-different '{src,test}/*.ts'","lint-fix":"eslint --fix '{src,test}/*.ts' && prettier --write '{src,test}/*.ts'","build":"tsc --build tsconfig.json","prepare":"npm run build","prepublishOnly":"npm run lint && npm run test"},"tap":{"ts":true},"keywords":["testing","factory-bot","fixtures","test"],"author":{"name":"Jack Franklin"},"homepage":"https://github.com/jackfranklin/test-data-bot#readme","bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"devDependencies":{"@sinonjs/fake-timers":"^10.0.0","@types/node":"^18.0.0","@types/sinon":"^10.0.13","@types/tap":"^15.0.7","@typescript-eslint/eslint-plugin":"^5.6.0","@typescript-eslint/parser":"^5.6.0","eslint":"^8.4.1","eslint-config-prettier":"^8.0.0","eslint-config-unobtrusive":"^1.2.5","eslint-plugin-prettier":"^4.0.0","eslint-plugin-tap":"^1.2.1","prettier":"^2.5.1","sinon":"^15.0.1","tap":"^16.3.0","ts-node":"^10.9.1","typescript":"^4.8.4"},"types":"./build/index.d.ts","gitHead":"bd0ea3c401c9860899b72dfc686ef84e5a0d71c7","_id":"@jackfranklin/test-data-bot@2.1.0","_nodeVersion":"19.7.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-FWcaAJ3nJGxQCUQPeQy0DGgg4eBLJ5BNLjNyGBahf+uVbrOsdBUTu3yYkcHzBGJiqX9NzH+iPxRCg1Qq0MGxgA==","shasum":"408679e2031bd05dce06d984f4d84d8fcf5b31f7","tarball":"https://registry.npmjs.org/@jackfranklin/test-data-bot/-/test-data-bot-2.1.0.tgz","fileCount":7,"unpackedSize":30440,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDna+U+psYm/8YI6nP9rYna7v7OckVxYOo29AiDbMoJ0gIhAKPPk2ZYj37+t0bRwqDZ6nYv0YcZgGK6KTLhBhuCowVm"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/wlvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6Zw/+PWQVOg4nbB+wg7SmJ6WZCTiAqpb5yr7Q/eUBOTETz8jvT0Wj\r\n1Qq2oxVYfKlEmW/ip6oWCehoutvtOHyPJmIiSEKi56WHbh6TRADr/wWodkH2\r\n6522txHy4/SJGYB2hRxUckCPhQ58Lb7fLHomghL3SRzsGucc1gKb9i9HkEZH\r\ncws0l/nENuE1xJ4ercU6PSJKWkjiGCvH7yzWRJR/hal3wo1lvgNgQZK6Y5wq\r\ncWdf8YoWBLzYmXRk/pf8oVwDHH7STSSvN92OWu43CHUKaOj2GDWCyPxwpoZF\r\n1FQQeo1PjHKmQSZ4lvUmxKxlC1dRhEUiWrWjcvDOQUloKEg97MlaDrdqeaLQ\r\nOBoFYryDTdv7soSO4ezEUWiBuEUw/uVaQA4yzAksB76jgS/RYpvv3sTwaL5+\r\nD4QxMaWZKl5TENbBdrQYeaZmcZdg9SQLU01wceF7O13Y08AgFpBUVqpQarww\r\nShO/rMIJ08VU33pLZh/cmbBBKChDK1bA7Jg64YlLao+7sN2lxoPrT2UIhKIe\r\nKRHSjDfS3xcJ+XrSq2t14RHt+AEXM5BH32Qy6fcwR6co6lUrBSv6+eyeCirQ\r\nKeg+fr4DlS7shRmD+TvORDYxNI7t2JGeIcurMa8LIgSprVFF5ENXOgncCks5\r\nCJSm7npXoeysUhtaAnZDjWWiMvcEUvpOzkg=\r\n=nNm9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jackfranklin","email":"jack@jackfranklin.net"},"directories":{},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-data-bot_2.1.0_1677658479145_0.15570062077516034"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-01T11:06:08.148Z","1.0.0":"2020-02-01T11:06:08.344Z","modified":"2023-03-01T08:14:39.412Z","1.1.0":"2020-03-24T17:09:04.891Z","1.2.0":"2020-05-08T23:15:36.687Z","1.3.0":"2020-05-13T07:19:18.627Z","1.4.0":"2021-12-09T20:46:50.828Z","2.0.0":"2022-03-17T18:09:16.188Z","2.1.0":"2023-03-01T08:14:39.310Z"},"maintainers":[{"name":"jackfranklin","email":"jack@jackfranklin.net"}],"description":"Generate test data for your tests easily.","homepage":"https://github.com/jackfranklin/test-data-bot#readme","keywords":["testing","factory-bot","fixtures","test"],"repository":{"type":"git","url":"git+https://github.com/jackfranklin/test-data-bot.git"},"author":{"name":"Jack Franklin"},"bugs":{"url":"https://github.com/jackfranklin/test-data-bot/issues"},"license":"MIT","readme":"# @jackfranklin/test-data-bot\r\n\r\n[![npm version](https://badge.fury.io/js/%40jackfranklin%2Ftest-data-bot.svg)](https://badge.fury.io/js/%40jackfranklin%2Ftest-data-bot)\r\n\r\n**IMPORTANT**: `@jackfranklin/test-data-bot` is the new version of this package, written in TypeScript and initially released as version 1.0.0.\r\n\r\nThe old package, `test-data-bot` (_not scoped to my username on npm_) was last released as 0.8.0 and is not being updated any more. It is recommended to upgrade to 1.0.0, which has some breaking changes documented below.\r\n\r\nIf you want to find the old documentation for `0.8.0`, you can [do so via an old README on GitHub](https://github.com/jackfranklin/test-data-bot/blob/c0fd856cbe8ea26024725aaca47e433fe727ddff/README.md).\r\n\r\n# Motivation and usage\r\n\r\ntest-data-bot was inspired by [Factory Bot](https://github.com/thoughtbot/factory_bot), a Ruby library that makes it really easy to generate fake yet realistic looking data for your unit tests.\r\n\r\nRather than creating random objects each time you want to test something in your system you can instead use a _factory_ that can create fake data. This keeps your tests consistent and means that they always use data that replicates the real thing. If your tests work off objects close to the real thing they are more useful and there's a higher chance of them finding bugs.\r\n\r\n_Rather than the term `factory`, test-data-bot uses `builder`._\r\n\r\ntest-data-bot makes no assumptions about frameworks or libraries, and can be used with any test runner too. test-data-bot is written in TypeScript, so if you use that you'll get nice type safety (see the TypeScript section of this README) but you can use it in JavaScript with no problems.\r\n\r\n```\r\nnpm install --save-dev @jackfranklin/test-data-bot\r\nyarn add --dev @jackfranklin/test-data-bot\r\n```\r\n\r\n## Creating your first builder\r\n\r\nWe use the `build` function to create a builder. You give a builder an object of fields you want to define:\r\n\r\n```js\r\nconst { build } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: 'jack',\r\n  },\r\n});\r\n\r\nconst user = userBuilder.one();\r\nconsole.log(user);\r\n// => { name: 'jack'}\r\n```\r\n\r\n_While the examples in this README use `require`, you can also use `import {build} from '@jackfranklin/test-data-bot'`._\r\n\r\nOnce you've created a builder, you can call the `one` method it returns to generate an instance of that object - in this case, a `user`.\r\n\r\n```\r\nconst user = userBuilder.one();\r\n```\r\n\r\n> You can also call the builder directly to get a single instance - `userBuilder()`. v2.1 of test-data-bot shipped with the `one()` method and that is now the recommended way of constructing these objects.\r\n\r\nIt would be boring though if each user had the same `name` - so test-data-bot lets you generate data via some API methods:\r\n\r\n### Incrementing IDs with `sequence`\r\n\r\nOften you will be creating objects that have an ID that comes from a database, so you need to guarantee that it's unique. You can use `sequence`, which increments every time it's called:\r\n\r\n```js\r\nconst { build, sequence } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    id: sequence(),\r\n  },\r\n});\r\n\r\nconst userOne = userBuilder.one();\r\nconst userTwo = userBuilder.one();\r\n\r\n// userOne.id === 1\r\n// userTwo.id === 2\r\n```\r\n\r\nIf you need more control, you can pass `sequence` a function that will be called with the number. This is useful to ensure completely unique emails, for example:\r\n\r\n```js\r\nconst { build, sequence } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    email: sequence(x => `jack${x}@gmail.com`),\r\n  },\r\n});\r\n\r\nconst userOne = userBuilder.one();\r\nconst userTwo = userBuilder.one();\r\n\r\n// userOne.email === jack1@gmail.com\r\n// userTwo.email === jack2@gmail.com\r\n```\r\n\r\nYou can use the `reset` method to reset the counter used internally when generating a sequence:\r\n\r\n```js\r\nconst { build, sequence } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    id: sequence(),\r\n  },\r\n});\r\n\r\nconst userOne = userBuilder.one();\r\nconst userTwo = userBuilder.one();\r\nuserBuilder.reset();\r\nconst userThree = userBuilder.one();\r\nconst userFour = userBuilder.one();\r\n\r\n// userOne.id === 1\r\n// userTwo.id === 2\r\n// userThree.id === 1 <- the sequence has been reset here\r\n// userFour.id === 2\r\n```\r\n\r\n### Randomly picking between an option with `oneOf`\r\n\r\nIf you want an object to have a random value, picked from a list you control, you can use `oneOf`:\r\n\r\n```js\r\nconst { build, oneOf } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: oneOf('alice', 'bob', 'charlie'),\r\n  },\r\n});\r\n```\r\n\r\n### `bool`\r\n\r\nIf you need something to be either `true` or `false`, you can use `bool`:\r\n\r\n```js\r\nconst { build, bool } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    isAdmin: bool(),\r\n  },\r\n});\r\n```\r\n\r\n### `perBuild`\r\n\r\ntest-data-bot lets you declare a field to always be a particular value:\r\n\r\n```js\r\nconst { build, perBuild } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: 'jack',\r\n    details: {},\r\n  },\r\n});\r\n```\r\n\r\nA user generated from this builder will always be the same data. However, if you generate two users using the builder above, they will have _exactly the same object_ for the `details` key:\r\n\r\n```js\r\nconst userOne = userBuilder.one();\r\nconst userTwo = userBuilder.one();\r\n\r\nuserOne.details === userTwo.details; // true\r\n```\r\n\r\nIf you want to generate a unique object every time, you can use `perBuild` which takes a function and executes it when a builder is built:\r\n\r\n```js\r\nconst { build, perBuild } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: 'jack',\r\n    details: perBuild(() => {\r\n      return {};\r\n    }),\r\n  },\r\n});\r\n\r\nconst userOne = userBuilder.one();\r\nconst userTwo = userBuilder.one();\r\n\r\nuserOne.details === userTwo.details; // false\r\n```\r\n\r\nThis approach also lets you use any additional libraries, say if you wanted to use a library to generate fake data:\r\n\r\n```js\r\nconst myFakeLibrary = require('whatever-library-you-want');\r\nconst { build, perBuild } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: perBuild(() => myFakeLibrary.randomName()),\r\n  },\r\n});\r\n```\r\n\r\n## Overrides per-build\r\n\r\nYou'll often need to generate a random object but control one of the values directly for the purpose of testing. When you call a builder you can pass in overrides which will override the builder defaults:\r\n\r\n```js\r\nconst { build, fake, sequence } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    id: sequence(),\r\n    name: fake(f => f.name.findName()),\r\n  },\r\n});\r\n\r\nconst user = userBuilder.one({\r\n  overrides: {\r\n    id: 1,\r\n    name: 'jack',\r\n  },\r\n});\r\n\r\n// user.id === 1\r\n// user.name === 'jack'\r\n```\r\n\r\nIf you need to edit the object directly, you can pass in a `map` function when you call the builder. This will be called after test-data-bot has generated the fake object, and lets you directly change its properties.\r\n\r\n```js\r\nconst { build, sequence } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build('User', {\r\n  fields: {\r\n    id: sequence(),\r\n    name: 'jack',\r\n  },\r\n});\r\n\r\nconst user = userBuilder.one({\r\n  map: user => {\r\n    user.name = user.name.toUpperCase();\r\n    return user;\r\n  },\r\n});\r\n```\r\n\r\nUsing `overrides` and `map` lets you easily customise a specific object that a builder has created.\r\n\r\n\r\n### Creating multiple instances\r\n\r\nIf you want to create multiple instances of a builder at once, you can use the `many` method on the builder:\r\n\r\n```js\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: 'jack',\r\n  },\r\n});\r\n\r\nconst users = userBuilder.many(20); // Creates an array of 20 users.\r\n```\r\n\r\nIf you want to pass in any build time configuration, you can pass in a second argument which takes the exact same configuration as calling `userBuilder()` directly:\r\n\r\n```js\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: 'jack',\r\n  },\r\n});\r\n\r\nconst users = userBuilder.many(20, {\r\n  overrides: {\r\n    name: 'bob'\r\n  }\r\n}); // Creates an array of 20 users, each called \"bob\"!\r\n```\r\n\r\n### Mapping over all the created objects with `postBuild`\r\n\r\nIf you need to transform an object in a way that test-data-bot doesn't support out the box, you can pass a `postBuild` function when creating a builder. This builder will run every time you create an object from it.\r\n\r\n```js\r\nconst { build, fake } = require('@jackfranklin/test-data-bot');\r\n\r\nconst userBuilder = build({\r\n  fields: {\r\n    name: fake(f => f.name.findName()),\r\n  },\r\n  postBuild: user => {\r\n    user.name = user.name.toUpperCase();\r\n    return user;\r\n  },\r\n});\r\n\r\nconst user = userBuilder.one();\r\n// user.name will be uppercase\r\n```\r\n\r\n## Traits (*new in v1.3*)\r\n\r\nTraits let you define a set of overrides for a factory that can easily be re-applied. Let's imagine you've got a users factory where users can be admins:\r\n\r\n```ts\r\ninterface User {\r\n  name: string;\r\n  admin: boolean;\r\n}\r\n\r\nconst userBuilder = build<User>({\r\n  fields: {\r\n    name: 'jack',\r\n    admin: false,\r\n  },\r\n  traits: {\r\n    admin: {\r\n      overrides: { admin: true },\r\n    },\r\n  },\r\n});\r\n```\r\n\r\nNotice that we've defined the `admin` trait here. You don't need to do this; you could easily override the `admin` field each time:\r\n\r\n```js\r\nconst adminUser = userBuilder.one({ overrides: { admin: true } });\r\n```\r\n\r\nBut imagine that the field changes, or the way you represent admins changes. Or imagine setting an admin is not just one field but a few fields that need to change. Maybe an admin's email address always has to be a certain domain. We can define that behaviour once as a trait:\r\n\r\n```ts\r\nconst userBuilder = build<User>({\r\n  fields: {\r\n    name: 'jack',\r\n    admin: false,\r\n  },\r\n  traits: {\r\n    admin: {\r\n      overrides: { admin: true },\r\n    },\r\n  },\r\n});\r\n```\r\n\r\nAnd now building an admin user is easy:\r\n\r\n```js\r\nconst admin = userBuilder.one({ traits: 'admin' });\r\n```\r\n\r\nYou can define and use multiple traits when building an object. Be aware that if two traits override the same value, the one passed in last wins:\r\n\r\n```\r\n// any properties defined in other-trait will override any that admin sets\r\nconst admin = userBuilder.one({ traits: ['admin', 'other-trait'] });\r\n```\r\n\r\n## TypeScript support\r\n\r\ntest-data-bot is written in TypeScript and ships with the types generated so if you're using TypeScript you will get some nice type support out the box.\r\n\r\nThe builders are generic, so you can describe to test-data-bot exactly what object you're creating:\r\n\r\n```ts\r\ninterface User {\r\n  id: number;\r\n  name: string;\r\n}\r\n\r\nconst userBuilder = build<User>('User', {\r\n  fields: {\r\n    id: sequence(),\r\n    name: perBuild(() => yourCustomFakerLibary().name)\r\n  },\r\n});\r\n\r\nconst users = userBuilder.one();\r\n```\r\n\r\nYou should get TypeScript errors if the builder doesn't satisfy the interface you've given it.\r\n\r\n## What happened to Faker / the `fake` generator?\r\n\r\nPrior to v2.0.0 of this library, we shipped built-in support for using Faker.js to generate data. It was removed because it was a big dependency to ship to all users, even those who don't use faker. If you want to use it you can, in combination with the `perBuild` builder:\r\n\r\n```js\r\nimport {build, perBuild} from '@jackfranklin/test-data-bot';\r\n\r\n// This can be any fake data library you like.\r\nimport fake from 'faker';\r\n\r\nconst userBuilder = build({\r\n  // Within perBuild, call your faker library directly.\r\n  name: perBuild(() => fake().name())\r\n})\r\n```\r\n","readmeFilename":"README.md"}