{"_id":"a-b-doer","_rev":"23-fa28f16d01de72501dbf5a87eaef3094","name":"a-b-doer","dist-tags":{"latest":"5.1.1"},"versions":{"1.0.0":{"name":"a-b-doer","version":"1.0.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.0.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"e199d800d5e2c341d6255f9ed286d51a5dbd9f87","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.0.0.tgz","fileCount":21,"integrity":"sha512-SRC/E+rq5Q9KOlmrXQkjO2ofIykl3g7DflANU6+YeDSK6bnPMarbMe6fyL3g+SmlIDj8XW/qT7d0JPkyP+CqiA==","signatures":[{"sig":"MEUCIQCtHLzSPuAxei9zA8VLgVRPUY6JCM31iJALUUpg5k8wrgIgTExTcz+999bEYY5e53XyhkdeZ7mIzyfk+kxeRbEc+UM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":69398,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAC1tCRA9TVsSAnZWagAAjvAP/Rw9bFEOmJ2bLNWPvRI3\nv8Aq64R9e7QekVRMB08n9PVzKqgFG9Dqe9VTFPjrlDji8HDkB4V9WVePaxYg\nTdzM2y0RKVnZ2bZvlv8gfoqncn0GW/ZUY97NQqIfPjdvDlRazEcBtpdogAJi\nI47+0DZsmkw7uMieBkgUjTFsPdAe58qTCq6IKFSANsYI8VSrEfV7xnJ2586n\nKi2mRT/BGXpr1CuvpH2DoPkcBM5VxtH5pFey4YqzIwBncL3onjfsllnu3VcP\nkbgBnlIuYQroBHRYhR5CuZGmdBWMTkTS/BXh3cD0/9wOI4WuclpLegG50Or4\nZwLlhwdZ8rWonbcO9DtAeoTvnTRUDWDUYkZeDpCbz9HpGyH79wppkZ8hcpvL\nIjFYsceiXMAs+UFSng/U2idHgUiAiGVd5ZMA43eVnmdSAy+idcby1gr0sBuc\n8QYvSPW83llZu9pL1d2MQ8n6RTrb+1HkTQHaEqKxZpRrKzY5SY0n6wZdnFEl\nsp8dLwpMOmmfgMbACJRQ8OfTC2x7iVQ+aOaeQjeXfat0tmtcFdBKvxY86vsG\nEAVcbZMRyk7TR3cBu5yb4UY2KUTu4YNHmzc1KO1dj2iMpI0r15zvfzKRtvJz\nTZJnOqEar4r0FPW6dIsbho2dVu5tYJDmCMnLuJOW/xWE1w/JAbQgW4yK/M1X\n4V9h\r\n=Kjb8\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./jest/global-setup.js","globalTeardown":"./jest/global-teardown.js","testEnvironment":"./jest/puppeteer-environment.js","setupFilesAfterEnv":["./jest/setup.js"]},"main":"./main.js","husky":{"hooks":{"pre-commit":"npm run build; git add hooks.js dist/*"}},"gitHead":"11461cf97118239db51aa72cecf2d6c2178d60b9","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.10","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.0.0","chalk":"^4.1.0","preact":"^10.5.9","rollup":"^2.36.1","core-js":"^3.8.2","postcss":"^8.2.3","node-sass":"^5.0.0","@babel/cli":"^7.12.10","@babel/core":"^7.12.10","string-hash":"^1.1.3","autoprefixer":"^10.2.1","puppeteer-core":"^5.5.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.12.11","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.1","@rollup/plugin-babel":"^5.2.2","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.12.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.3.4","@rollup/plugin-commonjs":"^17.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.0.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.12.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.12.1"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^4.3.7","rimraf":"^3.0.2","puppeteer":"^5.5.0","npm-run-all":"^4.1.5"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.0.0_1610624364873_0.43714490687896834","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"a-b-doer","version":"1.1.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.1.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"27e5c1dcabf2ed27f79e395460898c246ab329df","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.1.1.tgz","fileCount":22,"integrity":"sha512-chhvSxo5agabqTKX+l8Jb91oVeFmGjq29LkbecDpuahmKA4aCQEpKS1cVOIEpntnMHQLFqP4gC2tNXTk3qJNzA==","signatures":[{"sig":"MEYCIQCXY4YJtYkAVAWzafYXFPksrAwGxKo53kKL5CLRR+Bc0AIhANiq1CZu9g2/Bh2HcSgJ/m6A7M5xtSzbG5AH1imTD4nN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB/0MCRA9TVsSAnZWagAA8cMP/0ukzvPW8PRFF49l2BQ8\nz47dbkcAynm4qmi0kAhSbKk3y/0dueaC7aePwF/fhvU1vNaa37hUq9bP1rg0\nqG8e/zJ+x71Lxa7E1nRVPY6zis4fEWeIZrW3EyAG2xIZPcCGCLRxqyTX4GJo\nbuMu7DZlsvDS7IninzPtg2tQQG1qQwmrILIkWh4CNIYYxRFQGleTKTBTKOBX\noQQrLDFE8m6Ihc/7AxINMPT0OqT/6El25ZKJKojL5c/dCix+RrXSCWkN5cLn\npoWFgQ3VsuAA4J3RIpNu8lp7Lnn1K/5n8DAWS1+ehWchtwoXJ+KpB+Df6F6W\nR3utH5xuhDwt8dvLxRplEwfvYbA9NIJu7mWAII08ZiGorIvkNMUA6lInk/53\nw51l4no5/VllH7AcMSP6JzFd+jpsXOFwGA8I5IC1qjFxBym+yWkwTI/GPpxY\ndJWWOYeU2Q+rrvpWzoU0ufS9OulO1KBZtsrDkvAwlMad5BWGTSkZqtvaICsl\np/jCoyHwrH/C3BaRIEHUO8iliQBjbN8l3vfh5cil9w1LQ2iqPVvOZgu/qdDC\nxrvD2+R5o8hzQijxjCqi0u1eNPKEJ5D44G73lra7vNpBRyypb2T30XFn3R+P\neBC2QmcAhSfLhFcu8xSaKfu/pT/h1Dgpso3qC8xcvTmb7I4HHH7J+nWueXQV\nmMuF\r\n=Fvtt\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./jest/global-setup.js","globalTeardown":"./jest/global-teardown.js","testEnvironment":"./jest/puppeteer-environment.js","setupFilesAfterEnv":["./jest/setup.js"]},"main":"./main.js","husky":{"hooks":{"pre-commit":"npm run build; git add hooks.js dist/*"}},"gitHead":"964ef60a4f404f9fa0c920b5bb46ea9791f0cae6","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.10","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.0.0","chalk":"^4.1.0","preact":"^10.5.9","rollup":"^2.36.1","core-js":"^3.8.2","postcss":"^8.2.3","node-sass":"^5.0.0","@babel/cli":"^7.12.10","@babel/core":"^7.12.10","string-hash":"^1.1.3","autoprefixer":"^10.2.1","puppeteer-core":"^5.5.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.12.11","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.1","@rollup/plugin-babel":"^5.2.2","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.12.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.3.4","@rollup/plugin-commonjs":"^17.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.0.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.12.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.12.1"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^4.3.7","rimraf":"^3.0.2","puppeteer":"^5.5.0","npm-run-all":"^4.1.5","standard-version":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.1.1_1611136267877_0.673332144543529","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"a-b-doer","version":"1.2.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.2.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"53b64e76259a64de9f6067c99dfe791fef6f481c","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.2.0.tgz","fileCount":22,"integrity":"sha512-D4ino1phUB4w6gWTE36dzaQtd+UJsmzzq/hdyo7ZbzW6pIl09rGhpnf4Q97kDhbNdoaOQU0ftS/CMCysc/iLcQ==","signatures":[{"sig":"MEUCIC6eQgCc8ZQ+2C+nP/eQlrNcGCSQ8UojpypFGX/5DucrAiEA9rdKZub3ERSoaEvKw43q9i6rg2AgqjyEMR3BJBhXZ78=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI6AKCRA9TVsSAnZWagAAVAEP/iGvU6oo1F41Ho+1Evq4\ne65AX40pu6/XD0R/Dpc+VlprBLNdi8WbynoFuq3I5/iQGoIXNHd7wcHiIeXL\nkdM8dwWri2blHAo/TdQSzHIT7M43V8u5qRrW65AOh/FFRIsGETgGfoCgduwc\nZiTeEzvLKRPorU8++/ATyFW5iTotlZhDchfmEM7EbGiZybqs3xtTrv7qCKi/\nePzk/osmPfvoWI2YLbqOQS7rN0tCtnednKksrLXMxbZlTo7JZ57OahcR8Xr7\nwRIKSGdGfAzUX0xWKlcbj6oAtBiJQb9t3uN7vDwdMymfH9EVeb+nC8GPxnsT\nfrDf5K9AO+Fh93JSBD0yls/ICp1zMBwJWM+plMmly4rnhsf7cze8n2f4JVOc\nWv9jlwfBTGZcGls95aXTYuUNHGU/HzqEpd8YAYRYNZCxRexKO+Wduf4gKwT8\nUHNyjrQM3BsxXK50JSb+9eg4GfePY0TLKVlAZ9ek3WbpakJ2glupjz3jAsNO\nAhH3KwV81jowDNpqES8nqeLZ3qjTs/MiAk2uKjhSwtay9yCQfvFnLMgB/hCG\nb/8z9TwJW+kDFgqtBf7T7pzPyXu2HM8qVbs0f/ZusmtuvHCXouaQDjzPLumj\nsrDwswjgg/4NxA4X789+nnXAgyvdGe6PuRrzkYyo+YhdcUK2O5sORsikJ7cG\nP5Rl\r\n=/GSW\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","husky":{"hooks":{"pre-commit":"npm run build; git add hooks.js dist/*"}},"gitHead":"22bcfaef2a7b167feefb9541b6e0247dfa97bad5","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.10","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.0.0","chalk":"^4.1.0","preact":"^10.5.9","rollup":"^2.36.1","core-js":"^3.8.2","postcss":"^8.2.3","node-sass":"^5.0.0","@babel/cli":"^7.12.10","@babel/core":"^7.12.10","string-hash":"^1.1.3","autoprefixer":"^10.2.1","puppeteer-core":"^5.5.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.12.11","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.1","@rollup/plugin-babel":"^5.2.2","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.12.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.3.4","@rollup/plugin-commonjs":"^17.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.0.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.12.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.12.1"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^4.3.7","rimraf":"^3.0.2","puppeteer":"^5.5.0","npm-run-all":"^4.1.5","standard-version":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.2.0_1612947465650_0.8068324680000325","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"a-b-doer","version":"1.2.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.2.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"cd62eee9d4f5c070a71497325a404504789ded14","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.2.1.tgz","fileCount":22,"integrity":"sha512-zIK3YSx22qoho+MUCfn5jAZtAP0bkAJpwctTh7Raq/058tEYWxHtwg5cWxCtn2sz0lLNI55QcBsRCcocdI10HA==","signatures":[{"sig":"MEUCIQDRQv6umpjBrev3KM2crDkm4WpvR44azxEU072hKHYneAIgDLICTe/ha3/ihG0pEOlqg/MG39P/2JZtVIWHlstcLvk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNKu7CRA9TVsSAnZWagAATx4P/iCx4etYvCGkflOnz5HS\n3OYWGnoS66EoA197R1cBKyjIQswAKWbHxDhnuZom3V2EkvwF6Bjn0+1iE1Uw\n+iYZMAALSDDFIVibvjoBodEaw3fiQ7pPxASq+/0y7AcQ/NxcbUIyfClsj6CR\nUmfWmNXsljfkgkN7YSGWd99C8oUWNL0j2t48wEEY5XkRGMksO1o+7SjkAuQ8\nQb5O2zDa07y5bmRS4fRfd664+4MgpYENF0fMddhOz5Wt2cX0m1BwVDebt95v\nFO3h71yGGaZCXJrmF9Npz5yIO/tzK8AB2RzJrQpANHolmf5j1eN0whv3dK9O\ne0qxOXHAPUzDQPvQpN5ejj8LUpjaKys4QHYcCpfht7G0M6wenTAhp+L3H3NU\nHKXhHvlmzRgeYG8a8KtWD7FQLAqmyyTOYNzcEjgoMQtXkwIfH8oflFkLdzXN\nbqpDx/nDEcxTZjAdOoG4L0KtgAasuGybZR7MfPwhDpfC1xcG681KxcOLZUyX\nDN38KesOZZJM0yMZZDdJzgWjvIWcgIyD9lgmjKILQdE/S93uthA+gDatnxQS\nkKQcNjAN8aB8tSzESJBw61/R8otZ8kKrsENL0V03/6wIyt/CzWu2YMATt3wF\nVoTPa2UZNW69wzQ7aasVY4XTy2eQzG2XeadRWL/kPxmnFM8Utpp6cPH+Q6nW\ng0mh\r\n=DQ21\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","husky":{"hooks":{"pre-commit":"npm run build; git add hooks.js dist/*"}},"gitHead":"c3652dc00f973a1bd1e23b40a5c93f61aff3ace9","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.10","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.0.0","chalk":"^4.1.0","preact":"^10.5.9","rollup":"^2.36.1","core-js":"^3.8.2","postcss":"^8.2.3","node-sass":"^5.0.0","@babel/cli":"^7.12.10","@babel/core":"^7.12.10","string-hash":"^1.1.3","autoprefixer":"^10.2.1","puppeteer-core":"^5.5.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.12.11","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.1","@rollup/plugin-babel":"^5.2.2","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.12.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.3.4","@rollup/plugin-commonjs":"^17.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.0.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.12.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.12.1"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^4.3.7","rimraf":"^3.0.2","puppeteer":"^5.5.0","npm-run-all":"^4.1.5","standard-version":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.2.1_1614064570415_0.9927745469336358","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"a-b-doer","version":"1.3.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.3.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"ac97367f8b1ce512a6e0da6390434eb1d0782c71","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.3.0.tgz","fileCount":22,"integrity":"sha512-ZntI6SWJ9e+orLwTTuHM34Tza88Ly5e613r7NWTjDHM4zuH5U3m2kjDLj0BL+aQ/FZcnjJ+Z5rS4I6yHzDGQLQ==","signatures":[{"sig":"MEQCID3h5uRZHcmNs8U20ebnyi1jsphmwZSFVUx+qIbsznLXAiAEkgLgRUCH6Tg0syvoI82QQKCRKuSTtckcq1N3z0k68Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":81003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUhRyCRA9TVsSAnZWagAAiYoP/jsNgyk3ryl24pNm9UxU\nIdu6FA0cjGocWqipEbxPfc7MeddiV2qSXHqcuUrfCk3StNUhZRT7vw11eKUt\ncz4m7atcZtH0xAq+VUb4lCeeCG9E5n745YHHha75FwopQkpxwPLYeOaSpg/p\nHYyEYRWw6LEyLWJX1TLM2SjnU3cXDTJ+lspi8sbLDYO3X77EJXpzVCpaaElb\nguQAUjQZfiGn6UMzVRp7v6NRifHDPuqRNarGbhIxYmqAB6L8xpyxWsWqzQVe\n6VfObPeA8PUNCLH9rJJpHMwsmK/eaEtLeHcB8rBm84K+Z1lXOCgUhWOH5OKz\nMHXLVfImYioE3yvehBxIlsK32jlxnucXxfxcpwm9Wx93MLs8OsW2nSDi8J+f\nBHmagU6Y3mXMtfjlTEnlyw5i0Q8Y6BMqkONXeIHxfb2hQwrnsDKbGocmjqz6\nt1XllpQukpeJZkEIDGahsNYlPtek16dxiL97sgcxL4H6KnktBaIu3ztkurDH\nT0OPlej7iWCXIfmnmPXnc6uKOuFh2dNHaByS4Fer1+8urDxTXStzx9sM6oLd\nk5GxHKcZEzv6TTRdlcjtqKYg2dS4ZVRO/1ItfHiinhfbZI5VBvLe+iIuRLv4\n+SCzFchk2wtAQYwpp03kB72YLNcSIddlaTknciHKR7vFzD7TqHc/MxGmoPm5\neIZ5\r\n=o3kg\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","husky":{"hooks":{"pre-commit":"npm run build; git add hooks.js dist/*"}},"gitHead":"b3bfd08c2fcfb7a39d2063231126ffd29cb2bfa2","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.10","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.0.0","chalk":"^4.1.0","preact":"^10.5.9","rollup":"^2.36.1","core-js":"^3.8.2","postcss":"^8.2.3","node-sass":"^5.0.0","@babel/cli":"^7.12.10","@babel/core":"^7.12.10","string-hash":"^1.1.3","autoprefixer":"^10.2.1","puppeteer-core":"^5.5.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.12.11","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.1","@rollup/plugin-babel":"^5.2.2","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.12.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.3.4","@rollup/plugin-commonjs":"^17.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.0.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.12.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-optional-chaining":"^7.12.7","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.12.1"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^4.3.7","rimraf":"^3.0.2","puppeteer":"^5.5.0","npm-run-all":"^4.1.5","standard-version":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.3.0_1615991922134_0.22571545474423949","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"a-b-doer","version":"1.4.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.4.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"1a8de7af9be1771c93d897a134fce0b1daf59890","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.4.0.tgz","fileCount":22,"integrity":"sha512-Vh6FjuJ3DCFwD2x30ZEVAKiUaEltPYemVRnYAEVz3BI5BLWQuUj66NSdD/e+eytVL32QY0EbSMx2EJe4fivcRA==","signatures":[{"sig":"MEUCIFzOJeiaa7NPaiBYacrGWK6MjkqNvqWHipVzzRwgtNbrAiEAoOyo0DDwTZToFy3VJLgMaKVJgtOKNB4UWpucA8tegpc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":86229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiqwlCRA9TVsSAnZWagAAC3oP/0Bi17sMDBPlrXhJQvs1\neDkwFs7WiGUo+WkX1ZGiIUJvfxECeA3jSOse8gQUuIGTky/vR8yD2Hc1BzUD\nxE9Gh82QFxK0fjGNA4Q3vLmMI95MZtme1Cay3YDhbb3UGtMMZT2IFuIF8NVZ\n8PHjDbL3egnhS6DxJOsl1s39P4GLUYJoubgvaSvNn5V3W5z0YWX0OQKuBOAQ\nUChgXgXqE3hPWlVxR6515G+AJMJDcdKk2ooEuIbCeul97vEq8DgdaCWVkhOj\nnbDV0urlo2W6Hla3L1jbMpUWAgvfcrbc2Dp5YeK7bfCpvlHVm9QSuMw2zmwn\nnxPi/R0rpA051Zf5DvL71QlxbW8vkgH9Q9wVMBknOn3JszIAqi5o0muL7359\nbeJQxLWVRiBDXFIO4xX2hEKcLdqmUmOWYRi5RYZiechAiuHx9ITw08KGhvem\nqs6kOFEq/v+FtVQhSAGKdcjFCAYPZ9UG05Lz5Z+fusTOb8C9x2e18UNSIwtT\nQlHvC8T22DBE63VA6nzWRbgB5HbA90Ea5ZaJCqfmcrRmyvY09/k4nWL4qCd9\nkpuHEZ8kMJDPGmkwnTYU/VyEram1R9U/x87IWRC3CKv9K3pGhA9pjJf2rMav\nlYYDOQyjk2S4OQQ1YlCBsxm4fb8gm2yCzixktWAtPhH/0e7uqduNApubF8Vx\n2RpF\r\n=8nv5\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","gitHead":"57514522af496d04379f040c919c10e8dc72375e","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.13","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.15.1","dependencies":{"less":"^4.1.1","chalk":"^4.1.0","preact":"^10.5.13","rollup":"^2.44.0","core-js":"^3.10.0","postcss":"^8.2.9","node-sass":"^5.0.0","@babel/cli":"^7.13.14","@babel/core":"^7.13.14","string-hash":"^1.1.3","autoprefixer":"^10.2.5","puppeteer-core":"^9.0.0","postcss-modules":"^4.0.0","@babel/preset-env":"^7.13.12","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.2","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.14.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.4.2","@rollup/plugin-commonjs":"^18.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^11.2.1","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.13.12","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.13.0","@babel/plugin-proposal-optional-chaining":"^7.13.12","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.13.8"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.6","jest":"^26.6.3","husky":"^6.0.0","rimraf":"^3.0.2","puppeteer":"^9.0.0","npm-run-all":"^4.1.5","standard-version":"^9.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.4.0_1619700772903_0.7486034173081764","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"a-b-doer","version":"1.4.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@1.4.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"007a6a18759712c086aa12e6336c8d8c2ab1f1f3","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-1.4.1.tgz","fileCount":22,"integrity":"sha512-Pb7p0EnxJ9mjTRkG71rVge6Q3T3S0zsBciNJqJtveSqPr1u+PEEz1l82OwumAngVZUCnUW89GKyuiWlzpVfDJQ==","signatures":[{"sig":"MEUCICdUYy181ADmmC2bri3/aiSukjA2gOKm/hP7wzfLRrgFAiEApqkz3GAZ2UHjARz/ktkOc51/4d18ntIH7s687oJUm4s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":87977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCosuCRA9TVsSAnZWagAA4DQP/Aj5mUTgfHmlTpvLrpoE\ncrSndTYf9pMOsnCoxq9pKVnQB/hklspFiC19ZvJyzkoVIz3Anqu6rGZ4BaT4\n+zN7cKytA/nR6CyN4mOd1fgKshYrb65yEai2drzrsZv7N1owYemyaT5bIa/T\nqqSIP9ajlG5EHHQwSJu1OqYuES6wimUPQpqHg1TmX5L5XOXQ07fdDfnoZ7A2\n9UgXTMAT+O6eqxW+VH3CH/2P7QemyjVqhbwiRvVKuWjJHSTUkqKfOsTSlv6B\nznTx6ccD/ZVM+8dWyxWRdJJfJflS3wrmu1+b6bVWINFm0nA17Nf7JYiSQjzT\nx7nGMPqc6JuwWEmDua5NgRTa8fN/KL/j2hrBz2ADFXxq0V/gk+2m4hUM8lJv\nrU69nWkq6Wj3oN7wen/eq4gsNpkOmY3PRml7cNTXGByVCW6Dy9zkpJT2eElJ\n4bCkEKFFhwJo76/kWjWJvNNv0pPrPxnrNY5mo+8Pnh7P+VP9Lsd4OW0RGUAU\no6mHYFagGiAGWXjUVL+uwRv5tHwJzhJprIwu1YHJvMC98i/qyfcfWhwfQ/qn\nwAI+dEvGTNkqzfgvvZ9629ik9qVAsNitzQWuHv9/TWKwUhI6ZqH1XCBxojUX\na16OuFTc5JvhtpLESyzIaPgezrefpgOmAsU2Awk1IXCslPeEQvUiSenjUIPE\nd++t\r\n=TqSc\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","gitHead":"1ad952fd5bd9fe9879e756c9f61c287fc5c511a5","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","preinstall":"npm install --package-lock-only --ignore-scripts --no-audit; npx npm-force-resolutions","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.11","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"resolutions":{"meow":"8.1.2","cssnano":"5.0.6","css-what":"5.0.1","trim-newlines":"3.0.1"},"_nodeVersion":"14.16.0","dependencies":{"less":"^4.1.1","chalk":"^4.1.1","preact":"^10.5.13","rollup":"^2.52.2","core-js":"^3.15.1","postcss":"^8.3.5","node-sass":"^6.0.0","@babel/cli":"^7.14.5","@babel/core":"^7.14.6","string-hash":"^1.1.3","autoprefixer":"^10.2.6","puppeteer-core":"^10.0.0","postcss-modules":"^4.1.3","@babel/preset-env":"^7.14.7","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.2","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.0.6","rollup-plugin-styles":"^3.14.1","rollup-plugin-terser":"^7.0.2","@rollup/plugin-replace":"^2.4.2","@rollup/plugin-commonjs":"^19.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^13.0.0","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.14.5","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.1.7","jest":"^27.0.5","husky":"^6.0.0","rimraf":"^3.0.2","puppeteer":"^10.0.0","npm-run-all":"^4.1.5","standard-version":"^9.3.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_1.4.1_1628080942497_0.9268780621394692","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"a-b-doer","version":"2.0.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@2.0.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"e9257f08509acd0d287f51236db879eb1292de7e","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-2.0.0.tgz","fileCount":24,"integrity":"sha512-InWbt2778qLsHdBfxjPACvcC33vRvJEQNylX49FCpR/AulKmWiNSrvuiFzZRhq7K0hyXPkrI9c3MQXAfb2gBeQ==","signatures":[{"sig":"MEUCIQCrDD4iLWf4A9yK0YoqAe1xYQTh+FFrSUmimU8fnFzq/AIgb1RBBUgFnUc/iDDsAWG3Zdpve45M3r02IQn2F72S9Wo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":99848},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","gitHead":"89c84e06047928afff111d6cfd7ef439c8d39671","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","preinstall":"npm install --package-lock-only --ignore-scripts --no-audit; npx npm-force-resolutions","build:hooks":"babel ./src/hooks.js -o ./hooks.js","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"resolutions":{"meow":"8.1.2","cssnano":"5.0.6","css-what":"5.0.1","trim-newlines":"3.0.1"},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^4.1.2","preact":"^10.5.14","rollup":"^2.58.0","core-js":"^3.18.1","postcss":"^8.3.8","chokidar":"^3.5.2","node-sass":"^6.0.1","@babel/cli":"^7.15.7","@babel/core":"^7.15.5","string-hash":"^1.1.3","autoprefixer":"^10.3.6","lodash.merge":"^4.6.2","puppeteer-core":"^10.4.0","postcss-modules":"^4.2.2","@babel/preset-env":"^7.15.6","rollup-plugin-ejs":"^2.2.0","@rollup/plugin-alias":"^3.1.5","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^3.14.1","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.1","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-commonjs":"^21.0.0","rollup-plugin-inline-svg":"^2.0.0","@rollup/plugin-node-resolve":"^13.0.5","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.14.9","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.2.4","husky":"^7.0.2","rimraf":"^3.0.2","puppeteer":"^10.4.0","npm-run-all":"^4.1.5","standard-version":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_2.0.0_1633443012880_0.19520771240492607","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"a-b-doer","version":"3.0.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@3.0.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"a8f41214bc8c8b50d464243a072a838d91dfb196","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-3.0.0.tgz","fileCount":33,"integrity":"sha512-684vzBHhNRw14HTxfmrgKZ4QD/onJL0hQwqkoRobn7Gz1LwovKOMw+wzVZ1adwkL2ofZWevtrt3Pu7EUdPdi+A==","signatures":[{"sig":"MEQCIDi9YJBQIHPckSKhT+PscDxKSUMLXxPIXKuw6/pHbelNAiA3+kkg7kl6DiompYDUHBNXl6bOCzJraucF8A15ZK0uEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsy3nCRA9TVsSAnZWagAA300P/1UJ5SEFCLTbR7wt1VPu\nY/KdVzk0e5Ks2BS0YjEzPb1+Qz2EgV05Ed6seZIID+VMg7XOUNc1nsDJijcV\n4t2hxB2cXJNsFIvCXnogPizEgz3tWMA376JfqXV1zu1ZWSC5lVKbo2GDFVuS\nqVcalo2qHJ8MOx5DuroAE51GedlqCfA48/dDSuRHQ91G4UuKhlhD3he5Slw3\nzu2PKGIiiHpGxZpyqzXQVBq50UFR7owdvMdf/V+EtH/7zVZG6XUNjFSUCPAh\nTfYuVO1/gYwbpiJ2EKVIh33QlZDr3DXvfVISAeNMTfieYDDn7zfJNHsDfjW9\nfC4/IqdFaA89qAxxUyq5PmGFPu0CH4G1EfwlU/+7vedfz2Cu2TRxCnQuILbd\nMEkZgnQHTKizAF2TxD+Mj3HPkw0Thcnbecr22TvzDdW6yCAC1Bdy3kHd6QwM\nCHUvUdrvTjuyppNaKa6xFOR1WMLNbVC7kSA0pQ4FODCeDl5zUJETCpzDmZNu\nI9DB3MXTtJ7iXEU3twfuLBvvFtLw+MbD8SjjJP7WUG9is85Y0B2/6kfbMhFr\ntrlyf+AM2aQIM5CYZbitAC4E6CVbn2XmLkfT5+iAdOA5c97NZpFXsXzV9GgK\nEZjfDnLslHmdW0EAV+jLOi5p13HtGTwdQaM6KPL/adCVgzAM59DX/DiI8fbe\nyIM9\r\n=tqwx\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","gitHead":"1b727f3affd4a9a6ef5aa6d88651c23c835a0a83","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^4.1.2","tslib":"^2.3.1","dotenv":"^10.0.0","preact":"^10.5.14","rollup":"^2.58.0","core-js":"^3.18.1","postcss":"^8.3.8","chokidar":"^3.5.2","node-sass":"^6.0.1","@babel/cli":"^7.15.7","typescript":"^4.4.4","@babel/core":"^7.15.5","string-hash":"^1.1.3","autoprefixer":"^10.3.6","lodash.merge":"^4.6.2","puppeteer-core":"^10.4.0","postcss-modules":"^4.2.2","@babel/preset-env":"^7.15.6","rollup-plugin-iife":"^0.5.0","@rollup/plugin-alias":"^3.1.5","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^3.14.1","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.1","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-commonjs":"^21.0.0","@babel/preset-typescript":"^7.16.0","rollup-plugin-inline-svg":"^2.0.0","rollup-plugin-typescript2":"^0.30.0","@rollup/plugin-node-resolve":"^13.0.5","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.14.9","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.2.4","husky":"^7.0.2","rimraf":"^3.0.2","puppeteer":"^10.4.0","npm-run-all":"^4.1.5","expect-puppeteer":"^6.0.0","standard-version":"^9.3.1","jest-fail-on-console":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_3.0.0_1639132647726_0.253887963189827","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"a-b-doer","version":"3.0.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@3.0.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"2bc1906832f83a92dc417dbfcc94b1fa20db0f8b","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-3.0.1.tgz","fileCount":33,"integrity":"sha512-6QIp2I8TWMyg/e+tZXrHtyCx/6lFFfkWW4frRfmOIuaIX+qA1klS9+mWzKO7cdEiyVNNaGl45HOr/+IS6+fHiA==","signatures":[{"sig":"MEYCIQDebP+CFm362tdhf3JJVXXLkYfxBPpkd6liO+e5duifVwIhAOU3Qsx8kuj0dnH3uMak7eoJdHgWQgiTwRvdijudgBE3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwxf3CRA9TVsSAnZWagAAsoAQAJaXmihkgW5F2JyuU9w0\nqJwowQeMfwa2/8jz5bIzjfYBG0XCrU3WOVfullI+dvqc4BP+25OqHCeZWnA8\nGQ48ySGUKcqkG1+hm22TD6f6zcVeMQ1rWleDxVUV0L71Hhk6OqO8rUjjVS5T\nb5AWAH/yx63vEVR6Le4meQnL3X/DNA0rOeWverN1A/pDE0px2k2iJtwGEys2\nPJ6ZRmmAxaj+Vbxz1MQWs1f1uCEYPBvsHRm3jwxfj1hZ80DJRMttXkMhL1rD\n9DjHtqtFDO1KCanb+mtBJSyHQKmyXQ/ttv9gSw1Tyx3Bb9AUmkzEuRWJ0Gx2\nyKlpz/2mv86sf/OwiwjikRtSCMb1/WNyfWPtSe8DqWVEyAs03gisuckrplfp\nhu5glYxKA9xTRgACi8wyfoyblhu7ReB1oztLRzw3sbcSh0JWJUas1KhXM7Y5\n6Bs0TLZHBlnW+ZJwc8BsndqofEQY/405hQvYCagE4vruUh/iBZkH067B2fZA\n/RNxadmyKwqcCxJRVq3weP8CwNM84S8HPZW5kwn7rjfqXW5LU6ICMFTM+7Wv\n+ATH0mCjTogeP8QFEoKktcC2aT1ymgeUSuXlVEYMKZyqcSVRLGDkQqvtWiyC\ng3jtEFVfolnuQWEDvJrCopJY5O3L5xYtAnl5DONvvwbITsWg9xQtjPsQrK7p\njw60\r\n=05Y1\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","setupFilesAfterEnv":["./test/setup.js"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","gitHead":"409118005e6e993dad0d32e5b4f28da0b8c5d0cd","scripts":{"test":"jest --runInBand","build":"npm-run-all clean build:*","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","build:bin":"babel ./bin -d ./dist/bin","build:lib":"babel ./lib -d ./dist/lib","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^4.1.2","tslib":"^2.3.1","dotenv":"^10.0.0","preact":"^10.5.14","rollup":"^2.58.0","core-js":"^3.18.1","postcss":"^8.3.8","chokidar":"^3.5.2","node-sass":"^6.0.1","@babel/cli":"^7.15.7","typescript":"^4.4.4","@babel/core":"^7.15.5","string-hash":"^1.1.3","autoprefixer":"^10.3.6","lodash.merge":"^4.6.2","puppeteer-core":"^10.4.0","postcss-modules":"^4.2.2","@babel/preset-env":"^7.15.6","rollup-plugin-iife":"^0.5.0","@rollup/plugin-alias":"^3.1.5","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^3.14.1","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.1","@rollup/plugin-replace":"^3.0.0","@rollup/plugin-commonjs":"^21.0.0","@babel/preset-typescript":"^7.16.0","rollup-plugin-inline-svg":"^2.0.0","rollup-plugin-typescript2":"^0.30.0","@rollup/plugin-node-resolve":"^13.0.5","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-react-jsx":"^7.14.9","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-optional-chaining":"^7.14.5","babel-plugin-transform-async-to-promises":"^0.8.15","@babel/plugin-proposal-nullish-coalescing-operator":"^7.14.5"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.2.4","husky":"^7.0.2","rimraf":"^3.0.2","puppeteer":"^10.4.0","npm-run-all":"^4.1.5","expect-puppeteer":"^6.0.0","standard-version":"^9.3.1","jest-fail-on-console":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_3.0.1_1640175607584_0.13009738629233714","host":"s3://npm-registry-packages"}},"3.1.0":{"name":"a-b-doer","version":"3.1.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@3.1.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"6b8e0f25243d338d441ac69a0ccf8dda0778635b","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-3.1.0.tgz","fileCount":27,"integrity":"sha512-ATkYfbcTRGkjPQQIy0cgEMBhDLU7dbmpFSrrODHWRMiVDCZRe5KLF09Cq9L6TZz5EJ+DyVcsGXR93D5WRUdC1w==","signatures":[{"sig":"MEUCIGGHR3PM830DU+dnlyv/d4Rql7rTPaRbUhYembtXr60FAiEAn9QfCDD52xoVtl5wAY68n9roouPxzYAJyPNKXvWbD/g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiC3LMCRA9TVsSAnZWagAAwrwQAJxhQUFsATJQwIKnGWp1\nK2WJzzxNFNWRKQ1v8BSfH/kDguUgFCqVjpTd2sFrSRx4wuKLjp2c3YXeMB9u\nnRcQsVIko8xCY/hDGfN/q3CfGaY+PPdkTVk8xuPXIKfp/P2otlASIB5TmiBa\nmROTVd0zOA5DAbBuz652P1M5+FaKgZU6Qfyk078qE6SvmvTg1/8OoTEY028s\n5YTF3O9M/F9bMKyiiQCQls8r5FL1lF+Ycbko3X5Yoj057dpO9Kgg6YeiFhtH\n3ej22H5smZMB/xSO38A9bs7SS4KgeigxfWidAM6eP6lWBn0MsHhUTUF0bXdA\ndqjw9TFpEixrqXpkdDbeOCjM1G2BLH1Zk9Vi9Svd8mOPtigmSK6rPiQBul98\nr42ZtnrbUOwRNVuMVopJcl5o2T7LdAu7wcEBkejReTdVrP+Zxy6Aahb1VhqX\n8vrw48Is8MLw+Xoy4yMGB3+z/JkHhfnqqIii/z+9ZOLBII0Z7mPVVcABmwxJ\nrI0NOzViSAtGhteAanM7CUNLBWIzUicDGW+Tk4VRA3BgDTUE/E6ooUxpQWmx\nI+RytDbM1nNPOdHtyBY+SthRVSa6G/wFFjurbv75eUILrbId2pTa68pNAQ54\nkILKn+jVrPXgfIcy/Gatxy+ACHFI3OloYOwPY3XtrOeFBGDS4MauUxoQ2Hwp\nU27g\r\n=hGMd\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"\\.jsx?$":["babel-jest",{"plugins":["@babel/transform-runtime","babel-plugin-transform-import-meta"],"presets":["@babel/preset-env"]}]},"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"setupFilesAfterEnv":["./test/setup.js"],"transformIgnorePatterns":["/node_modules/(?!(chalk|ansi-styles)/)"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","type":"module","gitHead":"a90af756217793fdfbdaee62987d4c3c2488df5b","scripts":{"test":"jest --runInBand","build":"rollup ./bin/abdo.js -c","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^5.0.0","tslib":"^2.3.1","dotenv":"^14.3.2","preact":"^10.6.5","rollup":"^2.66.1","core-js":"^3.20.3","postcss":"^8.4.5","chokidar":"^3.5.3","minimist":"^1.2.5","node-sass":"^7.0.1","@babel/cli":"^7.16.8","typescript":"^4.5.5","@babel/core":"^7.16.12","string-hash":"^1.1.3","autoprefixer":"^10.4.2","lodash.merge":"^4.6.2","puppeteer-core":"^13.1.2","postcss-modules":"^4.3.0","@babel/preset-env":"^7.16.11","rollup-plugin-iife":"^0.5.0","@rollup/plugin-alias":"^3.1.9","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^4.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-replace":"^3.0.1","@rollup/plugin-commonjs":"^21.0.1","@babel/preset-typescript":"^7.16.7","rollup-plugin-inline-svg":"^2.0.0","rollup-plugin-typescript2":"^0.31.1","@rollup/plugin-node-resolve":"^13.1.3","rollup-plugin-node-externals":"^3.1.2","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.16.10","@babel/plugin-transform-react-jsx":"^7.16.7","babel-plugin-transform-import-meta":"^2.1.0","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","babel-plugin-transform-async-to-promises":"^0.8.18","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.4.7","husky":"^7.0.4","rimraf":"^3.0.2","puppeteer":"^13.1.2","babel-jest":"^27.4.6","expect-puppeteer":"^6.0.2","standard-version":"^9.3.2","jest-fail-on-console":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_3.1.0_1644917452239_0.6139871596691362","host":"s3://npm-registry-packages"}},"3.1.1":{"name":"a-b-doer","version":"3.1.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@3.1.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"fd2b5376331ce8e2ec293dbea2fd921a75eb16b9","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-3.1.1.tgz","fileCount":27,"integrity":"sha512-vK72RU9JmKjmTQzT3WcGfC0sETgbKdM/bawIS65M0n7mT39+JeED/qpY5XYlojjWH/+rKIy6dfP3Jrv5rD8YpQ==","signatures":[{"sig":"MEQCIHk8k1IFaNbeqcqQM08RhItyDNfVAUSaFn9UXJuiA/g8AiALK/dcQ2b/77ekZ1tHicmWAia+M4q4Qcs9uYEwRLrbbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiE2JPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoC1Q/8DZNha6y7XQZCgKy79R/9uuW1DJq5IQ7S7fqB46BObk0YfoWC\r\n0nl2MT0cTY1ECaq44bi17BtQSMV7jnW3pGUl8B1Ee1juDGqDM1Ml4EgL93VP\r\n8mLttEa9qU+apsRhB3ccz/bvLhUIFAdVdB+hFf4EWEMM7XlZhFRlM9zHw06+\r\nzCc8M24Z28Xnb1Z2WyIXdyhKb5QC/b28by9QM8mg+jdeq4MJgwjoG1mdVX3T\r\nXnNvL7hOkZvRzUmdZCluGzIHgrHE3MJt+CD5btU9qVeRp4CTl7rnDxrvqgo6\r\nqOBzRI9cIhPyxRYepQItOOA6kb+BnoSc4hmi4rf19r2yFe/SqriJWG3TiqUq\r\nJJkSeao9GaQ6SMoKPAGtDbBrLm5mNs658L8p9Nw4uL13zY8EdqaIRLVd8LZ7\r\nffFvLdn3ir2qjn3/eFV+hox+P9sRLQqr7Ia+AL0U8c2WISvipt16toKHPKO5\r\nFa1t8kiZ/veoxjjb3PuSduZqYx5Mv2EAt0K/EgLQ72FXgnY1MaLhGW7XSAIn\r\n2/hzXSnFRfsLU/Y6Ur3klT6MMa5+mrFKG8kuIDygNgCZFlWFObF6KwLoRSOw\r\n99zJ32I3XfBwzmFZze1A6b2CCcYI7JeOl65IjLrWgcTwVjPY0Mvl7u2+0sar\r\nsBL9CaUO2hvuQTpw6I4AWho8s8fg/yaJAfs=\r\n=VfQk\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"\\.jsx?$":["babel-jest",{"plugins":["@babel/transform-runtime","babel-plugin-transform-import-meta"],"presets":["@babel/preset-env"]}]},"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"setupFilesAfterEnv":["./test/setup.js"],"transformIgnorePatterns":["/node_modules/(?!(chalk|ansi-styles)/)"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","type":"module","gitHead":"9dc1792b725464c98a800ae368da39ccfa7a1ba5","scripts":{"test":"jest --runInBand","build":"rollup ./bin/abdo.js -c","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^5.0.0","tslib":"^2.3.1","dotenv":"^14.3.2","preact":"^10.6.5","rollup":"^2.66.1","core-js":"^3.20.3","postcss":"^8.4.5","chokidar":"^3.5.3","minimist":"^1.2.5","node-sass":"^7.0.1","@babel/cli":"^7.16.8","typescript":"^4.5.5","@babel/core":"^7.16.12","string-hash":"^1.1.3","autoprefixer":"^10.4.2","lodash.merge":"^4.6.2","puppeteer-core":"^13.1.2","postcss-modules":"^4.3.0","@babel/preset-env":"^7.16.11","rollup-plugin-iife":"^0.5.0","@rollup/plugin-alias":"^3.1.9","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^4.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-replace":"^3.0.1","@rollup/plugin-commonjs":"^21.0.1","@babel/preset-typescript":"^7.16.7","rollup-plugin-inline-svg":"^2.0.0","rollup-plugin-typescript2":"^0.31.1","@rollup/plugin-node-resolve":"^13.1.3","rollup-plugin-node-externals":"^3.1.2","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.16.10","@babel/plugin-transform-react-jsx":"^7.16.7","babel-plugin-transform-import-meta":"^2.1.0","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","babel-plugin-transform-async-to-promises":"^0.8.18","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.4.7","husky":"^7.0.4","rimraf":"^3.0.2","puppeteer":"^13.1.2","babel-jest":"^27.4.6","expect-puppeteer":"^6.0.2","standard-version":"^9.3.2","jest-fail-on-console":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_3.1.1_1645437519615_0.769100790170058","host":"s3://npm-registry-packages"}},"3.1.2":{"name":"a-b-doer","version":"3.1.2","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@3.1.2","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"e03311922c31e7c941e096829a29e86b0df26eb6","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-3.1.2.tgz","fileCount":27,"integrity":"sha512-p7AHTKDGBdtHfb++Cybs/IR6LAihbcCDgJjArUgSF0ejWNveyxZIuurgntGX1lmMFhP7ae1SvEdBUw8tv1tdtA==","signatures":[{"sig":"MEQCIESxsoy3WHNnnNLcbznvGe371GLb7RCbzDam2P5VFP4dAiAr7zpJ2TRVwNhlUlkW5P+EQRXzVgAJDG6BrR8KSyChZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKfjoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpboBAAhJQ0vk5ltSEEOEUrY//UQRXeWfGTbWvW7PdIp2sjfGoFI9Ys\r\n8Chk7Zx0m4AmzXnlbdUq8W5MYpqIH2MU0axzuSYKkWqGMieh1HO0spa+M7Jb\r\nDm2EuyB3Ypq5DAqJiV2+ueECYHOkJMD48+pP3wkgNHzxVnuuGrvE5LEoiOyH\r\nFjfkGTo7ZTPidJrP3HbQcOMOm2PBqM/ldjelYf0NcggMYShcompM55ByQoMl\r\nnHV9MBuM/IijaE2+3botr9MfapiZGHq3zeJGm3NMiisRbFX3ZDzUFrwUueeP\r\nHwHYTGhnF0dMyD1C5AOVie6fa4Q5PF72E0SIAUFaag94WW6Sn9DLdDhhgtR0\r\nxHXinAtrKytibwNAtbelL1UEoFyAquRinh6+DETaMsyHHKlc7cE/qivah86D\r\nHRFctLKiiVPevat8Db3upT/4kumFlXbxwTT9/5KgSwOFoBzKyCraNMb0P61d\r\nQnJsR9aKTGt0lkNofKgfhImAWyrWYyEqITWJfT27G47aSc1Oatzj3NeFelrV\r\nwoCO34ybYokuRg7hETGRSWJicOAgRvm2VztZVEGY9oJTIs0JuH33xgptjgR+\r\ngVYWJ7DMePTMepekDLdeVvYCoDlnaOua3dXkGoPaMZL5/JaoPjbDIojDBkVP\r\n3iSiWGZ0pN3xHNDj5DofOPvdn/5a6gZT8us=\r\n=p90S\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"\\.jsx?$":["babel-jest",{"plugins":["@babel/transform-runtime","babel-plugin-transform-import-meta"],"presets":["@babel/preset-env"]}]},"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"setupFilesAfterEnv":["./test/setup.js"],"transformIgnorePatterns":["/node_modules/(?!(chalk|ansi-styles)/)"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","type":"module","gitHead":"44b066fad2328cf0b8a78a5c03c00cd7dd121508","scripts":{"test":"jest --runInBand","build":"rollup ./bin/abdo.js -c","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^5.0.0","tslib":"^2.3.1","dotenv":"^14.3.2","preact":"^10.6.5","rollup":"^2.66.1","core-js":"^3.20.3","postcss":"^8.4.5","chokidar":"^3.5.3","minimist":"^1.2.5","node-sass":"^7.0.1","@babel/cli":"^7.16.8","typescript":"^4.5.5","@babel/core":"^7.16.12","string-hash":"^1.1.3","autoprefixer":"^10.4.2","lodash.merge":"^4.6.2","puppeteer-core":"^13.1.2","postcss-modules":"^4.3.0","@babel/preset-env":"^7.16.11","rollup-plugin-iife":"^0.5.0","@rollup/plugin-alias":"^3.1.9","@rollup/plugin-babel":"^5.3.0","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^4.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-replace":"^3.0.1","@rollup/plugin-commonjs":"^21.0.1","@babel/preset-typescript":"^7.16.7","rollup-plugin-inline-svg":"^2.0.0","rollup-plugin-typescript2":"^0.31.1","@rollup/plugin-node-resolve":"^13.1.3","rollup-plugin-node-externals":"^3.1.2","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.16.10","@babel/plugin-transform-react-jsx":"^7.16.7","babel-plugin-transform-import-meta":"^2.1.0","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.16.7","@babel/plugin-proposal-optional-chaining":"^7.16.7","babel-plugin-transform-async-to-promises":"^0.8.18","@babel/plugin-proposal-nullish-coalescing-operator":"^7.16.7"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^7.2.0","jest":"^27.4.7","husky":"^7.0.4","rimraf":"^3.0.2","puppeteer":"^13.1.2","babel-jest":"^27.4.6","expect-puppeteer":"^6.0.2","standard-version":"^9.3.2","jest-fail-on-console":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_3.1.2_1646917864499_0.2604548921515608","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"a-b-doer","version":"4.0.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@4.0.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"b2207e18c89818b8c26e9620237bbef4c4137a14","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-4.0.0.tgz","fileCount":32,"integrity":"sha512-0B68leHHX+mlwJR94YG0bibJ4TTk3+ViHAbOS3xZLLoQuMIJIuQ/Ddo/UNaSsxe+ZKM6HyEufr5rVRQk/WkTTQ==","signatures":[{"sig":"MEQCIHClrcKRHtvtHsZTlV1fFmmG9yvcA9mBa5L/7K2MheITAiA5yAtnLQdmCTAfFT0+ZpjboeZERYTtRDdgH36fy6xIsA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqy2vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqXxAAkSFKEryTXMdHviQeD88ezkbe5BStPGBTrF6E13/hEwdLaMaU\r\nUnaf8xDthwGk3vYbJvR80eOIvpEDoAdC8OKwWFIeiD0KSU0vrl4mEp9jqU/s\r\nle5SR1IZWvmm5K3gO3FIZoPasV1VAY8XmgdRYtF53Z1bzr5HXVR+cnv3poVX\r\nluld4Ig4ge1NaFBpD0ZXGkEP6K1dR0Z5hP9CeTFQZttdpsONI4khyjzyFj+P\r\n2BQ2yHvdda9gC/HjsBGcvYZqGOjC5o+J0VbmOdiGwET4A5rbKByLz9lXBFYD\r\nAEX0uR4juTPMUagOcHEqBskkZeIAguMFPiKoebeFMSuITrdC6oLh44/u5okJ\r\nMhGiWvyVXMofKra4LA0e4OvEm5gr29C/22LaLAd0jYFhT23yhlhbtZoCQQTW\r\ndciAUmIvqUtFCBQEmLrqX9uD6MW/5YiQ3DpEoetSaNm/Z4vLARttwHG2Aqf3\r\nJOBWqU7qpqt0zCguKv6cwEDVpkapU4ODTcD1Pk0NBk3V6G7Cpt74h7VKjoKL\r\nV3Xlr0kDTAhaX1kSAlMjHcbsNQ/I7coAOjwz/OAhYTXsbpi30NeN2uy5KbZJ\r\nSuNw64DBjtiHNKl3iF2HwZlfj95lgGaeK6dAJH6CBHEyGcLBYN7iIt3J6haO\r\nz6Iwi49+yFaqHtThwjAYNbxgeLLU9RV40pY=\r\n=djRU\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"\\.jsx?$":["babel-jest",{"plugins":["@babel/transform-runtime","babel-plugin-transform-import-meta"],"presets":["@babel/preset-env"]}]},"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"setupFilesAfterEnv":["./test/setup.js"],"transformIgnorePatterns":["/node_modules/(?!(chalk|ansi-styles)/)"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","type":"module","gitHead":"14078b09294f3d0cfc79c2207f8de698cdd931dc","scripts":{"test":"jest --runInBand","build":"rollup ./bin/abdo.js -c","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.14","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.17.5","dependencies":{"less":"^4.1.2","chalk":"^5.0.1","tslib":"^2.4.0","dotenv":"^16.0.1","preact":"^10.7.3","rollup":"^2.75.5","core-js":"^3.22.8","esbuild":"^0.14.42","postcss":"^8.4.14","chokidar":"^3.5.3","minimist":"^1.2.6","node-sass":"^7.0.1","@babel/cli":"^7.17.10","typescript":"^4.7.3","@babel/core":"^7.18.2","string-hash":"^1.1.3","autoprefixer":"^10.4.7","lodash.merge":"^4.6.2","puppeteer-core":"^14.2.1","postcss-modules":"^4.3.1","@babel/preset-env":"^7.18.2","@rollup/plugin-alias":"^3.1.9","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^4.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-esbuild":"^4.9.1","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-replace":"^4.0.0","@rollup/plugin-commonjs":"^21.1.0","@babel/preset-typescript":"^7.17.12","rollup-plugin-inline-svg":"^3.0.3","@rollup/plugin-node-resolve":"^13.3.0","rollup-plugin-node-externals":"^4.0.0","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.18.2","@babel/plugin-transform-react-jsx":"^7.17.12","babel-plugin-transform-import-meta":"^2.1.1","@emotion/babel-plugin-jsx-pragmatic":"^0.1.5","@babel/plugin-proposal-class-properties":"^7.17.12","@babel/plugin-proposal-optional-chaining":"^7.17.12","babel-plugin-transform-async-to-promises":"^0.8.18","@babel/plugin-proposal-nullish-coalescing-operator":"^7.17.12"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^8.0.3","jest":"^28.1.0","husky":"^8.0.1","rimraf":"^3.0.2","puppeteer":"^14.2.1","babel-jest":"^28.1.0","expect-puppeteer":"^6.1.0","standard-version":"^9.5.0","jest-fail-on-console":"^2.4.2"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_4.0.0_1655385519065_0.54546395162988","host":"s3://npm-registry-packages"}},"4.1.0":{"name":"a-b-doer","version":"4.1.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@4.1.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"f40ffe8b8d078f4fe80aaca5290b25aefddd2aba","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-4.1.0.tgz","fileCount":32,"integrity":"sha512-V+A7GzD4mY8ZloDBqvSHj0yvL9QAvDlSDM8CB/F4B5p8kizLl9hvBXfH45lwLwYvP0tEgO2m487SOPZ01fc9PA==","signatures":[{"sig":"MEUCIQCPRnu9GpXA/kbSd9Rs+k3Wk/ExUKKKamyl2l13lADWXgIgFKDcup7KPZCkmv/sDqYG4+T6xV62qqwRTdaH3Bz23x0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186453,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR/xFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp75w//e4IXnldxQF7cY6QEETAbahl5+54sQS7VzTfgnVW1KDM2nTa9\r\no2JP9kJBVKTafRlxsayMTAWJ2PFIpv8Q6cKOgSKmT0ohbMA9R2K1bQuOpZOH\r\n5GCaN4rgoyfI8FE7wJ6Vmf3zC12eK/m37a8PRoOjtH8FQzwkJ/FDWMhv+7Rw\r\nd2qsl9qdzhgX4pkl1fTrwgngXHSUd4lbKT/ypI1J3u57JvwvvKXjvwFu/Y5k\r\nLqQeh52SacIOJuP+jWxtWDe2iUv5sr+TXnbGZ3kdPWiz4LXAX7pGELXcam2/\r\nibK0NfzZRr/XbDtYNdvRtfk7ouihZY2I+gEDxNag9Fh94UWvQU/ab9ZvZbe0\r\nzkLbtY2Gc8DCP/usujzUQmcra3N75JIuou8Mlv+exix8fZv7e4sVc7SpSUm0\r\n5HEbLlqTaFDcImaP6yS0bE5aI1jauADNgs9ULEFpODLaX+T8UqH4DjdkeOb8\r\nhk75xN6O2N4z/J1G213342gRrVQu51aCyU2AztIWMpMdP3SGYXvWIb37zCfR\r\ngTfa4pfzc7rNG6w9vPT0Q0c2xRp5srMD12B+FOUJhGg4s8L18jRgzaX1BOoB\r\nLleHsAaejL7YU0kvd7VrcQe0gl0MCHlJq9XVEw1sxG4So9VO0yCCqdslRZLH\r\nYuQMKTpTviTgVJQYIKp2cGzSfP7njtpLa3M=\r\n=zngf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"transform":{"\\.jsx?$":["babel-jest",{"plugins":["@babel/transform-runtime","babel-plugin-transform-import-meta"],"presets":["@babel/preset-env"]}]},"globalSetup":"./test/global-setup.js","globalTeardown":"./test/global-teardown.js","testEnvironment":"./test/puppeteer-environment.js","moduleNameMapper":{"#(.*)":"<rootDir>/node_modules/$1"},"setupFilesAfterEnv":["./test/setup.js"],"transformIgnorePatterns":["/node_modules/(?!(chalk|ansi-styles)/)"],"modulePathIgnorePatterns":[".build"]},"main":"./main.js","type":"module","engines":{"node":">=14.18.0"},"gitHead":"881335740b71630d1f0751867a38c04cb9303bbd","scripts":{"test":"jest --runInBand","build":"rollup ./bin/abdo.js -c","clean":"rimraf ./dist","prepare":"husky install","release":"standard-version","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"6.14.15","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"14.18.3","dependencies":{"less":"^4.1.3","chalk":"^5.0.1","tslib":"^2.4.0","dotenv":"^16.0.2","preact":"^10.11.0","rollup":"^2.79.1","core-js":"^3.25.3","esbuild":"^0.15.9","postcss":"^8.4.16","chokidar":"^3.5.3","minimist":"^1.2.6","node-sass":"^7.0.3","@babel/cli":"^7.19.3","typescript":"^4.8.4","@babel/core":"^7.19.3","string-hash":"^1.1.3","autoprefixer":"^10.4.12","lodash.merge":"^4.6.2","puppeteer-core":"^16.2.0","postcss-modules":"^5.0.0","@babel/preset-env":"^7.19.3","@rollup/plugin-alias":"^3.1.9","@rollup/plugin-babel":"^5.3.1","@rollup/plugin-image":"^2.1.1","rollup-plugin-styles":"^4.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-esbuild":"^4.10.1","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-replace":"^4.0.0","@rollup/plugin-commonjs":"^22.0.2","@babel/preset-typescript":"^7.18.6","rollup-plugin-inline-svg":"^3.0.3","@rollup/plugin-node-resolve":"^14.1.0","rollup-plugin-node-externals":"^5.0.0","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.19.1","@babel/plugin-transform-react-jsx":"^7.19.0","babel-plugin-transform-import-meta":"^2.2.0","@emotion/babel-plugin-jsx-pragmatic":"^0.2.0","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-optional-chaining":"^7.18.9","babel-plugin-transform-async-to-promises":"^0.8.18","@babel/plugin-proposal-nullish-coalescing-operator":"^7.18.6"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^8.0.3","jest":"^29.1.1","husky":"^8.0.1","rimraf":"^3.0.2","puppeteer":"^16.2.0","babel-jest":"^29.1.0","expect-puppeteer":"^6.1.1","standard-version":"^9.5.0","jest-fail-on-console":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_4.1.0_1665662020989_0.9916096197689157","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"a-b-doer","version":"5.0.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@5.0.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"12455da06b9fcc77d03f9648afe3a7437b5c10fa","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-5.0.0.tgz","fileCount":43,"integrity":"sha512-WfLN+cnkVdwnONMUvoOGo28PXv4AzHPENAi4v+4ZTAnavtE0vkrLSkhkA/qS8ttXp9xn/MV7OTAE75N/Gmymjg==","signatures":[{"sig":"MEQCID8FjF9d70XLDRolBY2BN096V/5V2Mu6e598BOYPVDflAiAKnd8RwP2Uq1bgSvAzAdTOA3Uus5X9xvloQbtBqVjrzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":279016},"main":"./main.js","type":"module","engines":{"node":">=16.0.0"},"exports":{".":"./main.js","./hooks":"./hooks.js","./bundler":"./bundler.js","./internal":"./internal.js"},"gitHead":"d749f4f8d8c21f1b91aad5b4499438292f11b7e8","scripts":{"test":"npm run test:js -- --run; npm run test:styles -- --run; npm run test:config -- --run","build":"rollup -c","clean":"rimraf ./dist","release":"standard-version","test:js":"vitest -c ./test/js/vitest.config.js test/js","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","test:config":"vitest -c ./test/config/vitest.config.js test/config","test:styles":"vitest -c ./test/styles/vitest.config.js  test/styles","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"overrides":{"rollup-plugin-styles":{"rollup":"4.20.0"}},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"10.1.0","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"20.9.0","dependencies":{"glob":"^11.0.0","less":"^4.2.0","sass":"^1.77.8","vite":"^5.4.1","chalk":"^5.3.0","tslib":"^2.6.3","dotenv":"^16.4.5","mkdirp":"^3.0.1","preact":"^10.23.2","rimraf":"^6.0.1","rollup":"4.20.0","terser":"^5.31.6","core-js":"^3.38.0","esbuild":"^0.23.0","chokidar":"^3.6.0","minimist":"^1.2.8","@babel/cli":"^7.24.8","typescript":"^5.5.4","@babel/core":"^7.25.2","string-hash":"^1.1.3","browserslist":"^4.23.3","@prefresh/vite":"^2.4.6","lodash.ismatch":"^4.4.0","puppeteer-core":"^23.1.0","vite-plugin-svgr":"^4.2.0","@babel/preset-env":"^7.25.3","@rollup/pluginutils":"^5.1.0","@prefresh/babel-plugin":"^0.5.1","@rollup/plugin-replace":"^5.0.7","@babel/preset-typescript":"^7.24.7","@vitejs/plugin-basic-ssl":"^1.1.0","rollup-plugin-inline-svg":"^3.0.3","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.24.7","babel-plugin-transform-import-meta":"^2.2.1","babel-plugin-transform-async-to-promises":"^0.8.18"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^11.0.0","jest":"^29.7.0","husky":"^9.1.4","jsdom":"^24.1.1","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.0.5","puppeteer":"^23.1.0","babel-jest":"^29.7.0","expect-puppeteer":"^10.0.0","standard-version":"^9.5.0","eslint-plugin-react":"^7.35.0","@rollup/plugin-alias":"5.1.0","@testing-library/dom":"^10.4.0","eslint-config-preact":"^1.4.0","jest-fail-on-console":"^3.3.0","rollup-plugin-styles":"^4.0.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/jest-dom":"^6.4.8"},"optionalDependencies":{"@rollup/rollup-linux-x64-gnu":"^4.21.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_5.0.0_1725603426195_0.8195448076596896","host":"s3://npm-registry-packages"}},"5.0.1":{"name":"a-b-doer","version":"5.0.1","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@5.0.1","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"d548ee9245e0cd92d938a346c26b3a2453f3962b","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-5.0.1.tgz","fileCount":42,"integrity":"sha512-G23Pmsst6NVhhM6x19SPk26pebsuI5jMbkqfGagxif9OwgUOr4PhqUQyIZNEDcnx39NFLv7QXs7JDMuYr+zF+w==","signatures":[{"sig":"MEQCIHyE4Yd2oIVxCcB/bf67VfCGN8BusEj6OBVNsdNSNoniAiBsytPQsMIWMveDc46oJog8jTc8bGdF3l+BGBqjxryAZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":279693},"main":"./main.js","type":"module","engines":{"node":">=16.0.0"},"exports":{".":"./main.js","./hooks":"./hooks.js","./bundler":"./bundler.js","./internal":"./internal.js"},"gitHead":"c7032d9521d99c6db2f8e524855cfb2710f7a8a4","scripts":{"test":"npm run test:js -- --run; npm run test:styles -- --run; npm run test:config -- --run","build":"rollup -c","clean":"rimraf ./dist","release":"standard-version","test:js":"vitest -c ./test/js/vitest.config.js test/js","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","test:config":"vitest -c ./test/config/vitest.config.js test/config","test:styles":"vitest -c ./test/styles/vitest.config.js  test/styles","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"overrides":{"rollup-plugin-styles":{"rollup":"4.20.0"}},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"10.1.0","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"20.9.0","dependencies":{"glob":"^11.0.0","less":"^4.2.0","sass":"^1.77.8","vite":"^5.4.1","chalk":"^5.3.0","tslib":"^2.6.3","dotenv":"^16.4.5","mkdirp":"^3.0.1","preact":"^10.23.2","rimraf":"^6.0.1","rollup":"4.20.0","terser":"^5.31.6","core-js":"^3.38.0","esbuild":"^0.23.0","chokidar":"^3.6.0","minimist":"^1.2.8","@babel/cli":"^7.24.8","typescript":"^5.5.4","@babel/core":"^7.25.2","string-hash":"^1.1.3","browserslist":"^4.23.3","@prefresh/vite":"^2.4.6","lodash.ismatch":"^4.4.0","puppeteer-core":"^23.1.0","vite-plugin-svgr":"^4.2.0","@babel/preset-env":"^7.25.3","@rollup/pluginutils":"^5.1.0","@prefresh/babel-plugin":"^0.5.1","@rollup/plugin-replace":"^5.0.7","@babel/preset-typescript":"^7.24.7","@vitejs/plugin-basic-ssl":"^1.1.0","rollup-plugin-inline-svg":"^3.0.3","rollup-plugin-node-externals":"^7.1.2","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.24.7","babel-plugin-transform-import-meta":"^2.2.1","babel-plugin-transform-async-to-promises":"^0.8.18"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^11.0.0","jest":"^29.7.0","husky":"^9.1.4","jsdom":"^24.1.1","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.0.5","puppeteer":"^23.1.0","babel-jest":"^29.7.0","expect-puppeteer":"^10.0.0","standard-version":"^9.5.0","eslint-plugin-react":"^7.35.0","@rollup/plugin-alias":"5.1.0","@testing-library/dom":"^10.4.0","eslint-config-preact":"^1.4.0","jest-fail-on-console":"^3.3.0","rollup-plugin-styles":"^4.0.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/jest-dom":"^6.4.8"},"optionalDependencies":{"@rollup/rollup-linux-x64-gnu":"^4.21.0"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_5.0.1_1727086322477_0.21397280562890097","host":"s3://npm-registry-packages"}},"5.0.2":{"name":"a-b-doer","version":"5.0.2","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@5.0.2","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"1d6f73438091e023595d62d5f87dca8f3e2760de","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-5.0.2.tgz","fileCount":42,"integrity":"sha512-C2ZzVFt0o4PjlVGq5m2r0uywPdvWLvCdIm0KFzyHX8sbk56fwhQHeWNS1lHVFuGe4+aWb+N1jGAamUJnzVs+TA==","signatures":[{"sig":"MEQCIFDmALqo+L/0XOza4SAWrMDO4tvPBAmsWe9+sjJoudd8AiBkA5blfalmPmkTsH8YbNHbL3RQqTbYddRhK5T3QYHtnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":279693},"main":"./main.js","type":"module","engines":{"node":">=16.0.0"},"exports":{".":"./main.js","./hooks":"./hooks.js","./bundler":"./bundler.js","./internal":"./internal.js"},"gitHead":"64b3f3e91ecd9e8b57af4ca5e6ee360d48fd8b2f","scripts":{"test":"npm run test:js -- --run; npm run test:styles -- --run; npm run test:config -- --run","build":"rollup -c","clean":"rimraf ./dist","release":"standard-version","test:js":"vitest -c ./test/js/vitest.config.js test/js","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","test:config":"vitest -c ./test/config/vitest.config.js test/config","test:styles":"vitest -c ./test/styles/vitest.config.js  test/styles","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"overrides":{"rollup-plugin-styles":{"rollup":"4.22.4"}},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"10.1.0","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"20.9.0","dependencies":{"glob":"^11.0.0","less":"^4.2.0","sass":"^1.79.3","vite":"^5.4.7","chalk":"^5.3.0","tslib":"^2.7.0","dotenv":"^16.4.5","mkdirp":"^3.0.1","preact":"^10.24.0","rimraf":"^6.0.1","rollup":"4.22.4","terser":"^5.33.0","core-js":"^3.38.1","esbuild":"^0.24.0","chokidar":"^4.0.1","minimist":"^1.2.8","@babel/cli":"^7.25.6","typescript":"^5.6.2","@babel/core":"^7.25.2","string-hash":"^1.1.3","browserslist":"^4.23.3","@prefresh/vite":"^2.4.6","lodash.ismatch":"^4.4.0","puppeteer-core":"^23.4.0","vite-plugin-svgr":"^4.2.0","@babel/preset-env":"^7.25.4","@rollup/pluginutils":"^5.1.2","@prefresh/babel-plugin":"^0.5.1","@rollup/plugin-replace":"^6.0.1","@babel/preset-typescript":"^7.24.7","@vitejs/plugin-basic-ssl":"^1.1.0","rollup-plugin-inline-svg":"^3.0.3","rollup-plugin-node-externals":"^7.1.3","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.25.4","babel-plugin-transform-import-meta":"^2.2.1","babel-plugin-transform-async-to-promises":"^0.8.18"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^11.0.0","jest":"^29.7.0","husky":"^9.1.6","jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.1.1","puppeteer":"^23.4.0","babel-jest":"^29.7.0","expect-puppeteer":"^10.1.1","standard-version":"^9.5.0","eslint-plugin-react":"^7.36.1","@rollup/plugin-alias":"5.1.1","@testing-library/dom":"^10.4.0","eslint-config-preact":"^1.5.0","jest-fail-on-console":"^3.3.0","rollup-plugin-styles":"^4.0.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/jest-dom":"^6.5.0"},"optionalDependencies":{"@rollup/rollup-linux-x64-gnu":"^4.22.4"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_5.0.2_1727161150142_0.8334888637756457","host":"s3://npm-registry-packages"}},"5.1.0":{"name":"a-b-doer","version":"5.1.0","keywords":["ab-testing","ab-test","variants","variant-testing"],"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","_id":"a-b-doer@5.1.0","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"bin":{"abdo":"dist/bin/abdo.js"},"dist":{"shasum":"c47551a39656ec4af1bb69aeb738e2b59da26897","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-5.1.0.tgz","fileCount":47,"integrity":"sha512-gEJxzujK8/7SzzBPjTZDR+a+NuusEkY2Reqfo+oBqLH813FVEu2JaIhrCta54/hnX6g6rWUjMyhhxzlj/LhqnQ==","signatures":[{"sig":"MEUCIQC5214VrzZoD8T7Crv7MQELwoEpb8n9Be4YkvqDIIylAgIgbm+Gf1LEOIBxr6oU1w8ND85zu9IP/CrCirdsPirs3/s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":305243},"main":"./main.js","type":"module","engines":{"node":">=16.0.0"},"exports":{".":"./main.js","./hooks":"./hooks.js","./bundler":"./bundler.js","./internal":"./internal.js"},"gitHead":"0768d9e4625945834049dd8a36b26c8b90ac772d","scripts":{"test":"npm run test:js -- --run; npm run test:styles -- --run; npm run test:config -- --run","build":"rollup -c","clean":"rimraf ./dist","release":"standard-version","test:js":"vitest -c ./test/js/vitest.config.js test/js","try:build":"node ./dist/bin/abdo.js build","try:watch":"node ./dist/bin/abdo.js watch","pre-release":"standard-version --prerelease --skip.tag --skip.changelog","test:config":"vitest -c ./test/config/vitest.config.js test/config","test:styles":"vitest -c ./test/styles/vitest.config.js  test/styles","try:preview":"node ./dist/bin/abdo.js preview","try:build-all":"node ./dist/bin/abdo.js build-all","try:screenshot":"node ./dist/bin/abdo.js screenshot"},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com"},"overrides":{"rollup-plugin-styles":{"rollup":"4.22.4"}},"repository":{"url":"git+https://github.com/ColumbiaRoad/a-b-doer.git","type":"git"},"_npmVersion":"10.2.4","description":"Utility library which makes developing of A/B test variants easier (maybe)","directories":{},"_nodeVersion":"20.11.1","dependencies":{"glob":"^11.0.0","less":"^4.2.0","sass":"^1.79.3","vite":"^5.4.7","chalk":"^5.3.0","tslib":"^2.7.0","dotenv":"^16.4.5","mkdirp":"^3.0.1","preact":"^10.24.0","rimraf":"^6.0.1","rollup":"4.22.4","terser":"^5.33.0","core-js":"^3.38.1","esbuild":"^0.24.0","chokidar":"^4.0.1","minimist":"^1.2.8","@babel/cli":"^7.25.6","typescript":"^5.6.2","@babel/core":"^7.25.2","string-hash":"^1.1.3","browserslist":"^4.23.3","@prefresh/vite":"^2.4.6","lodash.ismatch":"^4.4.0","puppeteer-core":"^23.4.0","vite-plugin-svgr":"^4.2.0","@babel/preset-env":"^7.25.4","@rollup/pluginutils":"^5.1.2","@prefresh/babel-plugin":"^0.5.1","@rollup/plugin-replace":"^6.0.1","@babel/preset-typescript":"^7.24.7","@vitejs/plugin-basic-ssl":"^1.1.0","rollup-plugin-inline-svg":"^3.0.3","rollup-plugin-node-externals":"^7.1.3","rollup-plugin-svg-hyperscript":"^0.1.2","@babel/plugin-transform-runtime":"^7.25.4","babel-plugin-transform-import-meta":"^2.2.1","babel-plugin-transform-async-to-promises":"^0.8.18"},"_hasShrinkwrap":false,"devDependencies":{"glob":"^11.0.0","jest":"^29.7.0","husky":"^9.1.6","jsdom":"^25.0.1","eslint":"^8.57.0","rimraf":"^6.0.1","vitest":"^2.1.1","puppeteer":"^23.4.0","babel-jest":"^29.7.0","expect-puppeteer":"^10.1.1","standard-version":"^9.5.0","eslint-plugin-react":"^7.36.1","@rollup/plugin-alias":"5.1.1","@testing-library/dom":"^10.4.0","eslint-config-preact":"^1.5.0","jest-fail-on-console":"^3.3.0","rollup-plugin-styles":"^4.0.0","rollup-plugin-esbuild":"^6.1.1","@testing-library/jest-dom":"^6.5.0"},"optionalDependencies":{"@rollup/rollup-linux-x64-gnu":"^4.22.4"},"_npmOperationalInternal":{"tmp":"tmp/a-b-doer_5.1.0_1729670279411_0.04238708053100981","host":"s3://npm-registry-packages"}},"5.1.1":{"name":"a-b-doer","version":"5.1.1","description":"Utility library which makes developing of A/B test variants easier (maybe)","main":"./main.js","scripts":{"build":"rollup -c","clean":"rimraf ./dist","try:build":"node ./dist/bin/abdo.js build","try:build-all":"node ./dist/bin/abdo.js build-all","try:watch":"node ./dist/bin/abdo.js watch","try:preview":"node ./dist/bin/abdo.js preview","try:screenshot":"node ./dist/bin/abdo.js screenshot","test":"npm run test:js -- --run && npm run test:styles -- --run && npm run test:config -- --run","test:js":"vitest -c ./test/js/vitest.config.js test/js","test:styles":"vitest -c ./test/styles/vitest.config.js  test/styles","test:config":"vitest -c ./test/config/vitest.config.js test/config","release":"standard-version","pre-release":"standard-version --prerelease --skip.tag --skip.changelog"},"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","keywords":["ab-testing","ab-test","variants","variant-testing"],"dependencies":{"@babel/cli":"^7.25.6","@babel/core":"^7.25.2","@babel/plugin-transform-runtime":"^7.25.4","@babel/preset-env":"^7.25.4","@babel/preset-typescript":"^7.24.7","@prefresh/babel-plugin":"^0.5.1","@prefresh/vite":"^2.4.6","@rollup/plugin-replace":"^6.0.1","@rollup/pluginutils":"^5.1.2","@vitejs/plugin-basic-ssl":"^1.1.0","babel-plugin-transform-async-to-promises":"^0.8.18","babel-plugin-transform-import-meta":"^2.2.1","browserslist":"^4.23.3","chalk":"^5.3.0","chokidar":"^4.0.1","core-js":"^3.38.1","dotenv":"^16.4.5","esbuild":"^0.24.0","glob":"^11.0.0","less":"^4.2.0","lodash.ismatch":"^4.4.0","minimist":"^1.2.8","mkdirp":"^3.0.1","preact":"^10.24.0","puppeteer-core":"^23.4.0","rimraf":"^6.0.1","rollup":"4.22.4","rollup-plugin-inline-svg":"^3.0.3","rollup-plugin-node-externals":"^7.1.3","rollup-plugin-svg-hyperscript":"^0.1.2","sass":"^1.79.3","string-hash":"^1.1.3","terser":"^5.33.0","tslib":"^2.7.0","typescript":"^5.6.2","vite":"^5.4.7","vite-plugin-svgr":"^4.2.0"},"devDependencies":{"@rollup/plugin-alias":"5.1.1","@testing-library/dom":"^10.4.0","@testing-library/jest-dom":"^6.5.0","babel-jest":"^29.7.0","eslint":"^8.57.0","eslint-config-preact":"^1.5.0","eslint-plugin-react":"^7.36.1","expect-puppeteer":"^10.1.1","glob":"^11.0.0","husky":"^9.1.6","jest":"^29.7.0","jest-fail-on-console":"^3.3.0","jsdom":"^25.0.1","puppeteer":"^23.4.0","rimraf":"^6.0.1","rollup-plugin-esbuild":"^6.1.1","rollup-plugin-styles":"^4.0.0","standard-version":"^9.5.0","vitest":"^2.1.1"},"optionalDependencies":{"@rollup/rollup-linux-x64-gnu":"^4.22.4"},"bin":{"abdo":"dist/bin/abdo.js"},"repository":{"type":"git","url":"git+https://github.com/ColumbiaRoad/a-b-doer.git"},"bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","type":"module","engines":{"node":">=16.0.0"},"overrides":{"rollup-plugin-styles":{"rollup":"4.22.4"}},"exports":{".":"./main.js","./hooks":"./hooks.js","./bundler":"./bundler.js","./internal":"./internal.js"},"_id":"a-b-doer@5.1.1","gitHead":"2fb0f9ce8535796fd5ea95b6042cff6afdcbf6cc","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-BCZak7/YrsSDFa6wvHtSn4MHRhsj15byuCrHxng3rsWhsADYa7KFHQpyqEUcyOanIyqaPnOFUx0VwObuPLW8Mg==","shasum":"a553447310c6ce6858d4ae7eb871e2c775aab0e5","tarball":"https://registry.npmjs.org/a-b-doer/-/a-b-doer-5.1.1.tgz","fileCount":47,"unpackedSize":302760,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAJCAuJ6YeNteV3rZZy3xk5m+bh77KFBae5EVPwMBCd9AiAH9BnM/PQYJTwQnYE7NYFSkt3CXY5carVtIVxmcUd2Ew=="}]},"_npmUser":{"name":"parttee","email":"timo.partti@gmail.com","actor":{"name":"parttee","email":"timo.partti@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/a-b-doer_5.1.1_1750142722696_0.9058802919023357"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-14T11:39:24.873Z","modified":"2025-06-17T06:45:23.037Z","1.0.0":"2021-01-14T11:39:25.051Z","1.1.0":"2021-01-15T13:17:09.288Z","1.1.1":"2021-01-20T09:51:08.036Z","1.2.0":"2021-02-10T08:57:45.786Z","1.2.1":"2021-02-23T07:16:10.618Z","1.3.0":"2021-03-17T14:38:42.239Z","1.4.0":"2021-04-29T12:52:53.072Z","1.4.1":"2021-08-04T12:42:22.657Z","2.0.0":"2021-10-05T14:10:13.027Z","3.0.0":"2021-12-10T10:37:27.925Z","3.0.1":"2021-12-22T12:20:07.774Z","3.1.0":"2022-02-15T09:30:52.379Z","3.1.1":"2022-02-21T09:58:39.812Z","3.1.2":"2022-03-10T13:11:04.611Z","4.0.0":"2022-06-16T13:18:39.286Z","4.1.0":"2022-10-13T11:53:41.217Z","5.0.0":"2024-09-06T06:17:06.546Z","5.0.1":"2024-09-23T10:12:02.709Z","5.0.2":"2024-09-24T06:59:10.348Z","5.1.0":"2024-10-23T07:57:59.660Z","5.1.1":"2025-06-17T06:45:22.879Z"},"bugs":{"url":"https://github.com/ColumbiaRoad/a-b-doer/issues"},"author":{"name":"Timo Partti","email":"timo.partti@columbiaroad.com"},"license":"MIT","homepage":"https://github.com/ColumbiaRoad/a-b-doer#readme","keywords":["ab-testing","ab-test","variants","variant-testing"],"repository":{"type":"git","url":"git+https://github.com/ColumbiaRoad/a-b-doer.git"},"description":"Utility library which makes developing of A/B test variants easier (maybe)","maintainers":[{"name":"parttee","email":"timo.partti@gmail.com"}],"readme":"![A/B doer](https://raw.githubusercontent.com/ColumbiaRoad/a-b-doer/main/ab-doer.png)\n\nUtility library which makes developing of A/B test variants easier (maybe) and you don't have to use any online editors to create those variants. The lib supports JSX templates with custom JSX parser. Output size is tried to be minimal, e.g. following test is just 5.1kb when minified, and 4.1kb without class component, namespace, class + className prop, extended types support (see option `features`):\n\n```js\nimport { append } from 'a-b-doer';\nimport { useState } from 'a-b-doer/hooks';\nconst Foo = () => {\n  const [inc, setInc] = useState(1);\n  return <div onClick={() => setInc(inc + 1)}>{inc}</div>;\n};\nappend(<Foo />, document.body);\n```\n\nYou can enable preact for more advanced tests, but those tests outputs a little bit larger bundles (adds at least ~5kb, the example above is 10.2kb with preact when `append` is replaced with `render`) and it could be an issue if bundle size is very limited\n\n---\n\n# Installing\n\n```\nnpm i a-b-doer --save-dev\n\n# or with yarn\n\nyarn add a-b-doer --dev\n```\n\n# Prerequisites\n\nCreate abd.config.json (or abd.config.js) to project root with the following minimum settings:\n\n```json\n{\n  \"browser\": \"<insert browser executable path here>\"\n}\n```\n\nBrowser executable path is probably in macOs \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\" and in Windows \"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\". With unix-like (not macOs) systems you could check the path with command `which google-chrome` or something like it.\n\nIf you're using javascript configuration, then the file should export the config object\n\n```js\nmodule.exports = {\n  browser: '<insert browser executable path here>',\n};\n```\n\n# Usage\n\nTests can be developed with command `abdo watch path/to/test/folder`. Command opens the test's URL in a browser and injects the built js and style files to site's DOM. This command also starts a file watcher for the folder and refreshes the browser on file changes.\n\nIf you want to just build the test without opening the browser `abdo build path/to/test/folder`\n\nTests can be previewed with command `abdo preview path/to/test/folder`. If the folder contains multiple entries, all of them will be opened to the same browser.\n\nYou can build all tests from a folder with command `abdo build-all path/to/test/folder`\n\nTake screenshots for every variant with command `abdo screenshot path/to/test/folder`. If path matches multiple tests/variants, screenshot will be taken from every variant + originals. Screenshots will be saved under the build folder of the test\n\nYou can add these commands to package.json scripts\n\n```\n{\n  ...\n  scripts: {\n    \"build\": \"abdo build\",\n    \"build-all\": \"abdo build-all\",\n    \"start\": \"abdo watch\",\n    \"preview\": \"abdo preview\",\n    \"screenshot\": \"abdo screenshot\"\n  }\n}\n```\n\n# Test structure\n\nTests can be created to under any folder. All tests should at least have buildspec.json (or buildspec.js) created in test's own folder or its parent folder.\n\n```\ntests/\n\t|- SomeTest/\n\t|\t|- buildspec.json\n\t|\t|- index.js (default)\n\t|\t|- styles.scss\n\t|\n\t|- SomeNestedTest\n\t\t|- buildspec.json\n\t\t|- NestedOne/\n\t\t\t|- index.js\n\t\t|- NestedTwo/\n\t\t\t|- index.js\n```\n\n## Test files\n\nIn JS files ES6, imports, etc are supported and also Vite will bundle and minify them. By default styles can be created with SCSS/SASS/CSS (imports are supported as well). Vite supports other formats as well, but you must add required modules/config for them. If js file is the bundle entry, then styles should be imported in that file `import \"./styles.scss\"` and Vite will handle it.\n\nBy default, JS supports nullish coalescing and optional chaining.\n\nIf you're more familiar with path aliases in import calls, there is path alias for `@/*` which points to root so it can be used like this `import SVGIcon from '@/icons/FooIcon.svg';`.\n\n## Usage examples, jsx templates\n\nJSX files are also supported and you can create custom components with either functional style or class style syntax. Custom component syntax is like in preact but implemented in much simpler way. This means that all hooks and component render cycle methods are not implemented (if you need them, use preact). This library uses a simple createElement utility which works with babel and transforms jsx to virtual nodes that'll be rendered automatically to DOM nodes when they're added to DOM with library's own DOM utilities.\n\nThe lib handles element attributes as is and does not do any camelCase to hyphenated conversion to them. Also some namespaced attributes are supported by default.\n\n```js\nimport { append, pollQuerySelector, Component } from 'a-b-doer';\nimport SomeSvgImage from '@/images/some-svg-image.svg';\nimport './styles.scss';\n\nimport { Tpl } from './template.jsx';\n\npollQuerySelector('html body', (target) => {\n  append(Tpl({ test: 1 }), target);\n});\n\n// or\n\nimport { Tpl } from './template.jsx';\n\npollQuerySelector('html body', (target) => {\n  const child = target.querySelector('.child');\n  const AttrChild = target.querySelector('.attr-child');\n\n  append(\n    <Tpl test=\"1\">\n      {/* without extra attributes */}\n      {child}\n      {/* with altered attributes */}\n      <AttrChild class=\"new-class\" />\n    </Tpl>,\n    target\n  );\n});\n\n// template.jsx\nimport { useState, useEffect } from 'a-b-doer/hooks';\nexport const Tpl = (props) => {\n  useEffect(() => {\n    console.log('Mounted');\n    return () => {\n      console.log('Unmounted');\n    };\n  }, []);\n  const [state, setState] = useState({});\n  return (\n    <div onClick={() => console.log('testing')}>\n      <h3>click me {props.test}</h3>\n      <SomeSvgImage />\n    </div>\n  );\n};\n// OR with class syntax\nexport class Tpl extends Component {\n  componentDidMount() {\n    this.setState({ foo: 1 });\n    console.log('Mounted');\n  }\n  componentDidUpdate(prevProps) {\n    console.log('Updated', prevProps);\n  }\n  componentWillUnmount() {\n    console.log('Unmounted');\n  }\n  render() {\n    console.log(this.state);\n    return (\n      <div onClick={() => console.log('testing')}>\n        <h3>click me {this.props.test}</h3>\n        <SomeSvgImage />\n      </div>\n    );\n  }\n}\n```\n\nTest templates with `preact: true`\n\n```js\nimport { render } from 'preact';\nimport { useState } from 'preact/hooks';\nimport clsx from 'clsx';\nimport styles from './styles.scss';\n\nconst MyComponent = (props) => {\n  const { val } = props;\n  const [value, setValue] = useState(val);\n\n  return (\n    <div class={{ [styles.active]: value > 1 }}>\n      <button onClick={() => setValue(value + 1)}>Increment</button>\n    </div>\n  );\n};\n\npollQuerySelector('html #app', (target) => {\n  render(<MyComponent val={1} />, target);\n});\n```\n\n### Namespace attributes\n\nSupported attribute namespaces by default are these:\n\n```js\n{\n  svg: '2000/svg',\n  xlink: '1999/xlink',\n  xmlns: '2000/xmlns/',\n}\n```\n\nIf namespace doesn't start with http, it will be prefixed with `http://www.w3.org/`. You can extend this support by overriding window.\\_\\_namespaces or by modifying the namespace object. Namespaced attribute will first be splitted in half and if the second part has a own namespace, it will be used and otherwise the attribute prefix will be used as searched namespace key.\n\n## Polyfills\n\nThis lib uses NodeList.forEach, Array.from and Promise (if \"wait\" prefixed utils are used) polyfills if [browserlist config](https://github.com/browserslist/browserslist) contains `ie 11`.\n\n## DOM Utilities for queries\n\n### pollQuerySelector\n\nType `(selector: string | Selector, callback: (node: HTMLElement) => void, wait?: number = 5000) => void`\n\nRuns given query selector for every 100ms until the wait timeout (ms) has passed and calls the callback if selector returns something.\n\n### pollQuerySelectorAll\n\nType `(selector: string | Selector, callback: (nodes: HTMLElement[]) => void, wait?: number = 5000) => void`\n\nRuns given query selector for every 100ms until the wait timeout (ms) has passed and calls the callback if selector returns something.\n\n### createSelector (alias cs)\n\nType `(domNode: HTMLElement, selector: string) => Selector`\n\nCreates a selector that can be used e.g. inside of another pollQuerySelector. This is useful if you don't want to use document as a selector scope.\n\n```js\nimport { createSelector, pollQuerySelector } from 'a-b-doer';\n\n// Poll .selector class in document scope\npollQuerySelector('.selector', (target) => {\n  // Do something\n  // ...\n  // Poll img element in .selector class scope\n  pollQuerySelector(createSelector(target, 'img'), (img) => {\n    // Do something with the img\n  });\n});\n```\n\n### waitElement\n\nType `(selector: string | Selector, timeout?: number = 5000) => Promise<HTMLElement>`\n\nReturns a promise which will be resolved if given selector is found. It runs the dom query every 100ms until the timeout (ms) has passed.\n\nNote: polyfills Promise automatically\n\n```js\nimport { waitElement } from 'a-b-doer';\n\n(async () => {\n  // Wait 5 seconds for element to be visible in the DOM\n  const node = await waitElement('.foo');\n  if (node) {\n    console.log(node.attributes, node.parentElement);\n  }\n})();\n\n// or without async/await\nwaitElement('.foo').then(function (node) {\n  console.log(node.attributes, node.parentElement);\n});\n```\n\n### waitElements\n\nType `(selector: string | Selector, timeout?: number = 5000) => Promise<NodeListOf<HTMLElement> | []>`\n\nSame as waitElement, but resolved value is always an array.\n\nNote: polyfills Promise automatically\n\n```js\nimport { waitElements } from 'a-b-doer';\n\n(async () => {\n  // Always an array\n  const nodes = await waitElements('.foo');\n  nodes.forEach((node) => {\n    console.log(node.attributes, node.parentElement);\n  });\n})();\n\n// or without async/await\nwaitElements('.foo').then(function (nodes) {\n  nodes.forEach((node) => {\n    console.log(node.attributes, node.parentElement);\n  });\n});\n```\n\n### waitFor\n\nType `(() => any, timeout?: number = 5000) => Promise<any | undefined>`\n\nReturns a promise which will be resolved if given function returns truthy value. It calls the function every 100ms until the timeout (ms) has passed.\n\nNote: polyfills Promise automatically\n\n```js\nimport { waitFor } from 'a-b-doer';\n\n(async () => {\n  // Wait 10 seconds for window variable to be set.\n  const someLazyVar = await waitFor(() => window.someLazyVar, 10000);\n  // Do something with the lazy variable. Return value is undefined if the window variable is not found in given time frame.\n  console.log(someLazyVar);\n})();\n\n// or without async/await\nwaitFor(() => window.someLazyVar, 10000).then(function (someLazyVar) {\n  console.log(someLazyVar);\n});\n```\n\n### setDefaultTimeout\n\nType `(timeout: number) => void`\n\nSets the default timeout for all poll/wait dom utilities (default timeout is 5000 ms)\n\n### setDefaultPollDelay\n\nType `(timeout: number) => void`\n\nSets the default delay between polls for all poll/wait dom utilities (default delay is 100 ms)\n\n## DOM Utilities for adding an element\n\nThe lib exports some helpers for adding the created element to dom. Those helpers tries to make sure that there would not be duplicate elements with same data-o attribute (created from test path or can be provided in buildspec file with id property)\n\n### append\n\nInserts JSX or DOM node after the last child of given parent DOM node\n\n### prepend\n\nInserts JSX or DOM node before the first child given parent DOM node\n\n### insertBefore\n\nInserts JSX or DOM node in the children list of given target's parent, just before the target\n\n### insertAfter\n\nInserts JSX or DOM node in the children list of given target's parent, just after the target\n\n## Hooks\n\n### useRef\n\nType `() => { current: null }`\n\nuseRef function returns an object that has current property set to null. Useful when assigned to component prop which is required if you want to pass parent node to some child component.\n\n```js\nimport { append } from 'a-b-doer';\nimport { useRef } from 'a-b-doer/hooks';\n\nconst node = useRef();\nappend(\n  <div ref={node}>\n    <Sub node={node} />\n  </div>,\n  document.body\n);\n\nconst componentRef = useRef();\nappend(\n  <SomeFunctionalComponent ref={componentRef} fooProp={1} barProp={\"a\"} />\n  document.body\n);\n```\n\n### useEffect\n\nEffect hook that'll be called after component render. If useEffect call returns a function, it will be called when component leaves from DOM (like in preact).\nIf component is so called root component and has either a return value in useEffect or componentWillUnmount method, it will be called when the root element was removed from DOM (by any interaction). All sub components has the same functionality but the DOM node removal must happen by some component logic in parent components.\n\n```js\nimport { append } from 'a-b-doer';\nimport { useEffect } from 'a-b-doer/hooks';\n\nconst SomeFunctionalComponent = (props) => {\n  useEffect({} => {\n    console.log(\"Do something when element was added to DOM.\")\n    return () => {\n      console.log(\"Do something when element was removed from DOM.\")\n    }\n  }, [])\n\n   useEffect({} => {\n    console.log(\"Do something when foo changes.\")\n  }, [props.foo])\n\n  return <div>Foo</div>\n}\n\nappend(\n  <SomeFunctionalComponent ref={componentRef} foo={1} />\n  document.body\n);\n```\n\n### useState\n\nState hook for creating stateful values. This hook retuns a stateful value and a function to update it (like in preact).\n\n```js\nimport { append } from 'a-b-doer';\nimport { useState } from 'a-b-doer/hooks';\n\nconst SomeFunctionalComponent = (props) => {\n  const [value, setValue] = useState(0);\n  return <a onClick={() = setValue(value + 1)}>Click {value}</a>\n}\n\nappend(\n  <SomeFunctionalComponent ref={componentRef} foo={1} />\n  document.body\n);\n```\n\n## buildspec.json usage\n\nThese settings can also be used to override settings from global config.\n\n### url\n\nType `string | Array<string>`\n\nWeb page url(s) for the test. If this is an array, the first proper url will be the main url which is opened when the code changes. Puppeteer will watch navigation events for these urls and load the assets when the url matches one of these. URL can also be RegExp like string which starts and ends with `/`. RegExp url cannot be the only url.\n\n### entry\n\nType `string` (optional)\n\nEntry file for Vite. Can be at least js or scss file.\n\n### buildDir\n\nType `string` (optional)\n\nDefault `.build`\n\nOutput directory for Vite.\n\n### entry\n\nType `string` (optional)\n\nEntry file for Vite. Can be at least js or scss file.\n\n### minify\n\nType `boolean` (optional)\n\nDefault `true`\n\nShould the bundle be minified.\n\n### modules\n\nType `boolean` (optional)\n\nDefault `true`\n\nCSS/SCSS module support.\n\n### preact\n\nType `boolean` (optional)\n\nDefault `false`\n\nShould test script use preact? If true, 'h' will be imported automatically. Bundle size is approximately 5kb bigger (without preact/compat)\n\n### activationEvent\n\nType `string` (optional)\n\nUse dataLayer event to activate the test in watch and preview modes. By default this is empty and the test will be acticated on DOM load.\n\nExample:\n\n```json\n{\n  ...\n  \"activationEvent\": \"optimize.activate.mytest\",\n  ...\n}\n```\n\nActivate the test by calling dataLayer.push({ event: \"optimize.activate.mytest\" }) manually or with e.g. Google Tag Manager.\n\n### chunks\n\nType `boolean`\n\nDefault `false`\n\nEnabled support of manual code splitting and produces chunks in ES module format. Following example creates two chunks where there's the lib code in one chunk and all component code in another. Note, chunking requires an export for the main code. It can be default or named. If there's both, the default export will be used otherwise the first named export.\n\n```js\nimport { append, pollQuerySelector, waitElement } from 'a-b-doer';\n\nexport default async () => {\n  pollQuerySelector('#wrapper', (target) => {\n    import('./src/TestComponent').then(({ default: TestComponent }) => {\n      append(<TestComponent />, target);\n    });\n  });\n\n  // OR\n\n  const target = await waitElement('#wrapper');\n  const { default: TestComponent } = await import('./src/TestComponent');\n  append(<TestComponent />, target);\n};\n```\n\n### id\n\nType `string` (optional)\n\nDefault `t-xxxxxxxx` (hash from test folder)\n\nID which is returned from getTestID() call. Is automatically used in data-o attributes.\n\n### windowSize\n\nType `Array<number>` (optional)\n\nDefault `[1920, 1080]`\n\nWindow dimension in pixels (width, height).\n\n### historyChanges\n\nType `Boolean` (optional)\n\nDefault `true`\n\nShould preview and watcher detect when URL is changed with history API? If true, and URL changes back to the test URL A/B doer will append tested assets to the DOM.\n\n### debug\n\nType `Boolean` (optional)\n\nDefault `false`\n\nAdds some extra logging for debug\n\n### features\n\nType `Object` (optional)\n\nDefault `{ classes: true, className: true, namespaces: true, jsx: 'auto', hooks: 'auto' }`\n\n- classes: Support class component syntax\n- className: Populate className with class prop and class prop with className\n- namespaces: Support namespace attributes and elements. Some namespaces are defined by default\n- jsx: Support jsx syntax\n- hooks: Support functional component hooks, e.g. useState\n- extendedVnodes: Support custom types for JSX VNodes, those are DOM Element and HTML string\n\nYou can manually control which parts of the code should be left out by terser on minification. Supported options are listed above, but only `jsx` and `hooks` supports also `auto` mode which means that their values are determined by the usage. Setting some feature to `false` will tell to terser that those code blocks are dead and can be dropped. Setting some feature to `true` will always include those codes to the bundle.\n\n---\n\n### Example buildspec.json\n\n```json\n{\n  \"url\": [\"https://www.columbiaroad.com\", \"/https?:\\\\/\\\\/www\\\\.columbiaroad\\\\.com/\"],\n  \"modules\": false\n}\n```\n\n## abd.config.json usage\n\nGlobal config file for all tests. This is a great place to configure all global buildspec options.\n\n### browser\n\nType `string`\n\nPath to browser excutable.\n\n### userDataDir\n\nType `string` (optional)\n\nUser data directory for puppeteer chromium.\n\nYou can e.g. copy you bookmarks to file < userDataDir >/Default/Bookmark\n\nYou should add userData folder to your gitignore because it will be populated with Chromium profile stuff.\n\n### include and exclude\n\nType `string | RegExp | Array[String|RegExp]` (optional)\n\nA valid picomatch pattern, or array of patterns. If options.include is omitted or has zero length, filter will return true by default. Otherwise, an ID must match one or more of the picomatch patterns, and must not match any of the options.exclude patterns.\n\nNote that picomatch patterns are very similar to minimatch patterns.\n\nWith this you can e.g. exclude js files that are in the same folder as buildspec.json but is not a variant.\n\n### devtools\n\nType `boolean` (optional)\n\nDefault `true`\n\nIs devtools open when browser opens\n\n### sourcemap\n\nType `boolean` (optional)\n\nDefault `true`\n\nInlines source maps to the bundle with local file urls. This works only in watch mode.\n\n### toolbar\n\nType `boolean | (page: puppeteer.Page, config: a-b-doer.config, initial: boolean) => string` (optional)\n\nDefault `false`\n\nShows closable toolbar on bottom of the screen. Toolbars contains useful utils like page screenshot. You can add custom html to the toolbar by defining this as a function which returns a HTML string.\n\n### browserArgs\n\nType `string[]` (optional)\n\nDefault `[]`\n\nExtra browser args for Puppeteer\n\n### Example abd.config.json\n\n```json\n{\n  \"browser\": \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\",\n  \"userDataDir\": \"./puppeteer\"\n}\n```\n\n### modules\n\nType `boolean | (id: string) => boolean` (optional)\n\nDefault `true`\n\nLoad style files as modules. When enabled, all style files with `global.` in filename will be loaded as \"global\" (without hashed properties)\n\n### Advanced example config.js with custom bundler options\n\n```js\nimport fooPlugin from 'vite-foo-plugin';\nimport { extendConfig, PluginsPattern } from 'a-b-doer/bundler';\n\n/*\nSupported plugins for pattern match are currently:\na-b-doer:preact-debug\na-b-doer:css-entry-plugin\na-b-doer:css-modules\na-b-doer:css-modules-serve\nreplace\nreplace2\nvite-plugin-svgr\n\nNote, changing the configuration for these plugins might break something.\n*/\n\nexport default {\n  browser: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',\n  userDataDir: './puppeteer',\n  exclude: ['**/components/**/*', '**/src/**/*'],\n  // Override vite config\n  bundler: {\n    // Add extra entry to alias config\n    resolve: extendConfig((config = {}) => ({\n      ...config,\n      alias: [{ find: 'some-library', replacement: 'some-other-library' }, ...(config.alias || [])],\n    })),\n    plugins: extendConfig((plugins) =>\n      new PluginsPattern(plugins) // or PluginsPattern.create(plugins)\n        // Add extra entries to replace plugin\n        .match({ name: 'replace' }, ({ plugin, options }) =>\n          plugin({\n            ...options,\n            values: {\n              ...options.values,\n              'process.env.SOME': 2,\n              '##OTHER##': '2',\n            },\n          })\n        )\n        // Remove a default plugin\n        .match({ name: 'preact-debug' }, () => null),\n        // Add extra input plugin to Vite configuration\n        .concat(fooPlugin({ foo: 1 }))\n    ),\n    output: {\n      // Some super options for bundler output\n    },\n  },\n};\n```\n\n#### Hashed file names\n\nYou can turn on hashed file names by setting bundler option `{ output: { entryFileNames: \"[name].[hash].js\" } }`. `assetFileNames` option will be same as `entryFileNames` if not explicitly set to something else so both js and css file names will be in the format set by `entryFileNames`.\n\nIf A/B Doer finds entryFileNames option with a hash tag, it will clear the build directory before each build.\n\n## Events\n\n### onBefore\n\nType `(page: Page) => void` (optional)\n\nRun an async function after the page is created and before any variant codes or events has been created. This is the correct place to attach own listeners to the page.\n\n### onLoad\n\nType `(page: Page) => void` (optional)\n\nRun an async function after the page has loaded with the variant asset code. This will be run after `page.goto` has finished loading and just before taking the screenshot.\n\n### Example\n\n```js\nmodule.exports = {\n  url: 'https://example.com',\n  // Assign custom page events before navigation.\n  onBefore: async (page) => {\n    page.on('domcontentloaded', () => console.log('domcontentloaded was loaded'));\n  },\n  // Check element count after the page has finished loading with the variant asset code.\n  onLoad: async (page) => {\n    const foo = await page.evaluate(() => document.querySelectorAll('.foo').length);\n  },\n};\n```\n\n# Screenshots\n\n## config.screenshot\n\nType `Object` (optional)\n\nFollowing options to control Puppeteer before taking the screenshots.\n\n### waitFor\n\nType `number | string | function` (optional)\n\nTell Puppeteer to wait something before taking the screenshot.\n\n### waitForOptions\n\nType `Object` (optional)\n\nPuppeteer waitFor<Function|Timeout|Selector> function options, see https://pptr.dev/#?product=Puppeteer&version=v11.0.0&show=api-pagewaitforselectororfunctionortimeout-options-args\n\n### type\n\nType `string` (optional)\n\nSpecify screenshot type, can be either jpeg, png or webp. Defaults to 'png'.\n\n### quality\n\nType `number` (optional)\n\nThe quality of the image, between 0-100. Not applicable to png images.\n\n### fullPage\n\nType `boolean` (optional)\n\nDefault `true`\n\nWhen true, takes a screenshot of the full scrollable page.\n\n### clip\n\nType `Object` (optional)\n\nAn object which specifies clipping region of the page. Should have the following fields:\n\n- x `number` x-coordinate of top-left corner of clip area\n- y `number` y-coordinate of top-left corner of clip area\n- width `number` width of clipping area\n- height `number` height of clipping area\n\n### omitBackground\n\nType `boolean` (optional)\n\nHides default white background and allows capturing screenshots with transparency. Defaults to false.\n\n### encoding\n\nType `string` (optional)\n\nThe encoding of the image, can be either base64 or binary. Defaults to binary.\n\n### captureBeyondViewport\n\nType `boolean` (optional)\n\nWhen true, captures screenshot beyond the viewport. Whe false, falls back to old behaviour, and cuts the screenshot by the viewport size. Defaults to true.\n\n## Screenshot events\n\n### onBefore\n\nSee events.onBefore\n\nExtra onBefore event for screenshots. Will be runned after the main onBefore\n\n### onLoad\n\nSee events.onLoad\n\nExtra onLoad event for screenshots. Will be runned after the main onLoad\n\n### Example buildspec.js with screenshot options\n\n```js\nimport gobalConfig from '../abd.config.js';\n\nexport default {\n  browser: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',\n  userDataDir: './puppeteer',\n  onLoad: async (page) => {\n    console.log('Do something on preview and on screenshot');\n  },\n  screenshot: {\n    ...gobalConfig.screenshot,\n    waitFor: 1000,\n    onLoad: async (page) => {\n      console.log('Do this only on screenshot');\n      gobalConfig.screenshot.onLoad(page);\n      await page.evaluate(() => {\n        document.querySelectorAll('.something').forEach((node) => node.remove());\n      });\n    },\n  },\n};\n```\n\n## Screenshot cli commands\n\n- `--build or -b` Force rebuild, otherwise already built bundle will be used (if there is one).\n- `--url=\"https://example.com\"` or `--url=1` or `-u \"https://example.com\"` Force specific url. If the value is a number, puppeteer will use url found from that index in buildspec url array.\n- `--name=someName` or `-n someName` Name for the screenshot. It will be part of the screenshot image name. Default value is the entry file name with an extension.\n- Any option from screenshot config can be overridden by cli command argument, e.g. `--waitFor=1000`\n","readmeFilename":"README.md"}