{"_id":"@4a/abtest","_rev":"3-f8c87bcc5bc5739a2792cfbb67b6a54d","name":"@4a/abtest","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@4a/abtest","version":"0.1.0","description":"abtest,AB实验模型","main":"lib/abtest.js","scripts":{"test":"mocha test/**/*.spec.js"},"repository":{"type":"git","url":"git+https://github.com/gavinning/abtest.git"},"keywords":["abtest"],"author":{"name":"gavinning"},"license":"MIT","bugs":{"url":"https://github.com/gavinning/abtest/issues"},"homepage":"https://github.com/gavinning/abtest#readme","devDependencies":{"ioredis":"^4.16.1","mocha":"^7.1.1"},"dependencies":{"debug":"^4.1.1"},"gitHead":"cd1c78ad5833481a743a1c500ea52c6ec29a8837","_id":"@4a/abtest@0.1.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-25pfv2W888SIMuf0QjBUkdnO89aw7G7KiQanWgikfRUiqXbnG2cWArMQuazyaY7qttLcR17DAJbxYBu8iqtRyg==","shasum":"bb611211aa5d0ac3c4d2b836b7e293f4b7cbc9bc","tarball":"https://registry.npmjs.org/@4a/abtest/-/abtest-0.1.0.tgz","fileCount":5,"unpackedSize":5390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiY7QCRA9TVsSAnZWagAAI1sP/jxwhbe23OkIeAVTRu9+\nNaKhDBic/6tS9cLaLT+hpem7MXgb7HPxa4LqAeSwGZZKKcBmDTBgnYwQbCHS\nWv2kZ6YhRY5eHL14ojPMa8dTHNmuEXp/8OROmyWovFFHBf8UXdJAnH86kXfP\n09DjJXmqj8qM4rGi8LxzSVMwKDC0kEua9By96i72XEwpKfSMvtoka+4wnEW5\nBh/3n5y6iEG5k70bW50cQDpr0cOdcb/+QyDHdOa1VV9ebp9y+4gcuk79k174\nk9REgZUGZL3aGNTFMJY3naCtYCHgyBuXWleSgyDZDf3u6eR8Qx2n3GICBJVh\n6sXKCVNHAZdcPDe/6ljs1DAJPOyUw1Ybj588EoHGSQttXA4pYJ3R0tA4b/Ki\n1CUD3suF9JXD84Zje6f4v6EaOmuyIwZwg72X2f0JdLiwZq/KtQzY/XXEoGJl\no030hXWNr9h/QkSWeix6fdwOpnwW3DZqkVenq+w/898KyVCDOYsasJcXMaVt\n4snXlYIvzUti//WVlJ3DKCw1eXsf5j7oPRXaLlRTpOProWcRjpBK7aRktPY8\nNvkiISjNBsXXnhINdMPHmJa29HBvwV9ClJxgPDOVB5Ng3Z5R2vjwOyjH2iAv\nfbRXLwaBV6RtZ59lzS4eMJZowlkAtx51cc3wyzQEx0VJjhtLS1mvzpJ3ZBRU\ntTGI\r\n=LpMx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBt4lGMyGq3bWs+u5M7/b7H4AY7+hZ/5GP0P0A7i/Yu/AiEAtc7/CEWhXI/LUDZjlp6dILGOgm5aBxhZTPJh3yelVrk="}]},"maintainers":[{"name":"gavinning","email":"gavinning@qq.com"}],"_npmUser":{"name":"gavinning","email":"gavinning@qq.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abtest_0.1.0_1586073295922_0.6611651551676905"},"_hasShrinkwrap":false},"0.2.0":{"name":"@4a/abtest","version":"0.2.0","description":"abtest,AB实验模型","main":"dist/index.js","scripts":{"dev":"tsc --watch","build":"tsc","prepublish":"npm run build","test":"mocha test/**/*.spec.js"},"repository":{"type":"git","url":"git+https://github.com/gavinning/abtest.git"},"keywords":["abtest"],"author":{"name":"gavinning"},"license":"MIT","bugs":{"url":"https://github.com/gavinning/abtest/issues"},"homepage":"https://github.com/gavinning/abtest#readme","devDependencies":{"@types/debug":"^4.1.7","@types/ioredis":"^4.28.7","ioredis":"^4.16.1","mocha":"^7.1.1","typescript":"^4.5.4"},"dependencies":{"debug":"^4.3.3"},"gitHead":"3ef8aa5af883040765865ad7cf6c6762b2dc047b","_id":"@4a/abtest@0.2.0","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-mCytb0vsMVMud40q63+9VBPzITTVmHOOSnwrvrE1q+wFGH+1SHsK3RcmfkSC+qMZUM7HM3TnceRHWZ4DPh84Mw==","shasum":"99ab681faf9eb6b6cb05386e026df56172ce1130","tarball":"https://registry.npmjs.org/@4a/abtest/-/abtest-0.2.0.tgz","fileCount":7,"unpackedSize":64475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4m9ZCRA9TVsSAnZWagAAoBAQAJGeLDaDsARbEkFl2J2W\nBr7KNZR89fn5t0nXDLu0/jy+7bjW4735puqty1tX18J6/qw/KedQWg237x90\nfA4FHEWZ8FopB9HEKxnmkWZyvn4DJzTv1rp79iTgneGdIaIEDDKgRX4FId4P\nE6FDIpp15QoheN0lSqAYoyjGBhpJy7KTv3Tyr0pMc3SESA9kwzsoH9CDDo3b\nIl8FcO3XKVVQFkTLyfPMV4r1Ao8YVYzH0h0gIfxx75+RC61RoL3GixlzwnCW\nJvypeVz4ftTUhRnBJx04Qbi8wBkQu8O3BqRNcpMeDq9A1UsQDNvS3WO1317j\nIbRLvoCtfUzWtK3coRvmb5J/FCskLnuyvoSPrcRGv83dQma8XvQpaanEuFYV\nfM8iay1VsvXHse2zp3UtO/7gZhz/9jC8oDk+i7Qg4CfJ1vRC8ceQG5GvGARj\nacw4Lr7ouCV+NuFvLeAbipMVWwdHa5dTlETNSALlTYMxyFvex8QLycYIcXoj\n6yvvf/ME5vc2uxucL48YF5ucTuoub3XpmJXhfntRpmJGIRd9TUxxoWDn4MRo\n2SalrqKD85WFuSmYVV2oqkJVI/IGLI54WxRa93Q0Ue+Bu0YZuZBbizDTW8/p\nIWsJY5RI1S1le11u9aQm70hN/YdmNcquTbh3JM1CbmWJ2Va/ds7b7C4H8vYa\n14Z3\r\n=9ABR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICM9V5dAgwXgWfEbUQOT1TJ9oDGeKzBQuxU7pOlpANOfAiEAkokwhqDZHUC3Cn7IMX1iKznoLsWO9nnTP4OT7n6oxLE="}]},"_npmUser":{"name":"gavinning","email":"gavinning@qq.com"},"directories":{},"maintainers":[{"name":"gavinning","email":"gavinning@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abtest_0.2.0_1642229593634_0.5818282144681806"},"_hasShrinkwrap":false},"0.2.1":{"name":"@4a/abtest","version":"0.2.1","description":"abtest,AB实验模型","main":"dist/index.js","scripts":{"dev":"tsc --watch","build":"tsc","prepublish":"npm run build","test":"mocha test/**/*.spec.js"},"repository":{"type":"git","url":"git+https://github.com/gavinning/abtest.git"},"keywords":["abtest"],"author":{"name":"gavinning"},"license":"MIT","bugs":{"url":"https://github.com/gavinning/abtest/issues"},"homepage":"https://github.com/gavinning/abtest#readme","devDependencies":{"@types/debug":"^4.1.7","@types/ioredis":"^4.28.7","ioredis":"^4.16.1","mocha":"^7.1.1","typescript":"^4.5.4"},"dependencies":{"debug":"^4.3.3"},"gitHead":"76f39ca21996530e850ccdb51213969af07ff915","_id":"@4a/abtest@0.2.1","_nodeVersion":"14.17.3","_npmVersion":"6.14.13","dist":{"integrity":"sha512-7Tfp8mkO4eS6aDzHAGPWLFwHzUs2VNjoo8b/HOAR1mDTUumTDrhP7T3ho9OBF3C/1VTh9WJ0PvXu9vU+b0WABw==","shasum":"d1b909c719f155a5f20e59c5d61d67400efaaa46","tarball":"https://registry.npmjs.org/@4a/abtest/-/abtest-0.2.1.tgz","fileCount":7,"unpackedSize":64566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5l3YCRA9TVsSAnZWagAAVDMP/0EdmXGiMmkIO8qLU4JL\n4II/qrONBrGq+nB3RdgyIcx/3JydXcOCXpjV94S1zEv2cOMGKg3bNHVd1EGo\nRPy8kMHHK+oRdWA9l6DrHHUXrkUP4q3b3JQ2BPk8yMmAY/ux+lOOfh7xM962\n0NI29xhvGaOYJCo26vOBcT1wnGH34lyvX2WeQM9s5ZgUaQ59ATNxhihcqPAJ\nQJDinwkjEyX7+FyOFMDcz7bKTzJeiayxC3ZlRF0ZeeqHjiD1BP27V0xBqhEQ\nHVP/R380mMgoXaGiiAkqf7zhI8K4RAJEvEhbJM5w51MwnBNtLUDF6rlLCYvl\n0X90iBVRVpTP6ualx6dhy8LK3sDAqFl4VO/vk+IlK/pJCjg5HZslvT3zyLDG\nxqjwnVNyEoNAzV7H+T0RsphZR2D61AxUkWCYEnorgAlXjthmg/R8FXbO8IJT\n0WoP61XVb6PpysfP5n9OXo+vwZWoYsktKwho9VNwT9ou8e0o0R1qcKT7x2/L\nik1dkLqXJyk3+ksBrYAsf6rR4OhuPm99rHU//ulsG6HM2ZRrN2SMX97vSDPA\nAX+PPkp4yXBIwysIMCm2vahPlcDPI3IbfJxGE/Ab0wUPDuCAaIN2yBZj5PM7\n1eAa55748p5/gdwHPnW8asyK2cxeWTw8Lm3Ok0YCIqAnL4XIaszGAHpSRERG\n8ikq\r\n=z/RG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCo/WLP9pWXtSlcUROnZB9tR/4/DtFYtIK7ZCTV5he7pwIgNda/QbKCf7lcUNtEc/RJRoKDmsxs/SjOhYb6qTV4YZk="}]},"_npmUser":{"name":"gavinning","email":"gavinning@qq.com"},"directories":{},"maintainers":[{"name":"gavinning","email":"gavinning@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/abtest_0.2.1_1642487256297_0.4372612198113752"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-05T07:54:55.696Z","0.1.0":"2020-04-05T07:54:56.029Z","modified":"2022-04-04T10:45:58.324Z","0.2.0":"2022-01-15T06:53:13.841Z","0.2.1":"2022-01-18T06:27:36.459Z"},"maintainers":[{"name":"gavinning","email":"gavinning@qq.com"}],"description":"abtest,AB实验模型","homepage":"https://github.com/gavinning/abtest#readme","keywords":["abtest"],"repository":{"type":"git","url":"git+https://github.com/gavinning/abtest.git"},"author":{"name":"gavinning"},"bugs":{"url":"https://github.com/gavinning/abtest/issues"},"license":"MIT","readme":"Abtest\n---\n流量均衡AB实验分组策略\n\n### Install\n```sh\nnpm i @4a/abtest\n```\n\n### Usage\n\n根据``abtestId``和``id``地址执行流量均衡分组\n```ts\n// abtest依赖redis\n// redis实例需支持promise，推荐配合ioredis使用\nimport ABTest from '@4a/abtest'\n\n// or\nconst ABTest = require('@4a/abtest').default.register(redis)\n\n// async函数内调用\nreturn await ABTest.grouping(testId, id) // Number\n\n// 设置redis过期时间，默认7d\n// 实验停止后，redis关联key 7天后过期\n// 实验期间每次命中实验都会刷新有效期\nreturn await ABTest.grouping(testId, id, 7 * 60 * 60)\n```\n\n### Notes\n```yaml\n# \n# 1、流量均衡分组\n# 2、默认分组结果 a:1, b:2, c:0\n# 3、根据id来进行固定分组\n# 4、可同时进行多个实验，按照abtestId区分\n# \n# 5、前端实验分组单步时长，过期时间前端可自行设置\n# \n# c:0 C组表示意外分组流量，其他分组失败的流量也会归到C组\n#\n```\n\nExample\n>  \n> npm test  \n>  \n> DEBUG=abtest npm test\n>  ","readmeFilename":"readme.md"}