{"_id":"@amerisleep/analytics","_rev":"11-e7e2a74ec5ce50ac29cf4abbc4493bd4","name":"@amerisleep/analytics","dist-tags":{"latest":"1.7.1"},"versions":{"1.0.0":{"name":"@amerisleep/analytics","version":"1.0.0","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.0.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"12bcc41318c3dc2179def033e89276fa1532ce6d","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.0.0.tgz","fileCount":8,"integrity":"sha512-/zg88k3VcE+Y6DMWeqq6ENx8HEt37pGCACITgmV14qHgP8V5/HuUTdJlcQhqciJjWijKKSfXxE17Zvtrj/8L6Q==","signatures":[{"sig":"MEYCIQCJpf+yINf82Ww35fpd36q4nxLppF95vnPW7Y+pBASM5QIhAOP+pwkaYGo6Higxz3f5mBb4wkl56ZhD1KwssYuU+ifC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132539},"main":"./dist/index.cjs","type":"module","types":"./types/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"030b5fa22dccda1046d7a5164ae48e42266513d7","scripts":{"test":"node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"10.9.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"_nodeVersion":"22.11.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.0.0_1784596909749_0.614716552078457","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@amerisleep/analytics","version":"1.1.2","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.1.2","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"278461f41041e7234126ab01e01f7badf52d31ee","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.1.2.tgz","fileCount":18,"integrity":"sha512-qIv50beXDz9gLPwZ8j9gGq8skEwBH1vm92hYUkQx0FZrTPsFUbU7KOcReFaXbCBYKPnoHCBDfYPQUl7u52ZWiw==","signatures":[{"sig":"MEQCIFpD+cnnJGPc6dDq6r7/DhW5cn+ptcGRq+kfcws07nlBAiBorpgKFXEQwj5CJqbVYTMhcDgPz4a+izQdl7f/OcWcVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227685},"main":"./dist/index.cjs","type":"module","types":"./types/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.cjs"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/devtools.mjs","require":"./dist/devtools.cjs"}},"gitHead":"9544b9ff0f36dfedb422e42e7c67582e2537d003","scripts":{"test":"node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.1.2_1784601562286_0.4904031338076844","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@amerisleep/analytics","version":"1.1.3","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.1.3","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"ec7cdf502c04ddafb8adb4637c2feee07d4b215a","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.1.3.tgz","fileCount":18,"integrity":"sha512-Z+kpiowG3v14KR2uUp0qY6ky0bEENwrShyP4NgkPESAKWscfjWN5It/0nn+k4yV0z3QS5ZrWk7bBJ7btdLktXg==","signatures":[{"sig":"MEYCIQDXoxZy8862DkttlW8jphmLZEbbOfrFQFVQYH8tZQwpQwIhAITN9V7bmxdu/lqufzvFKDOTUNC1dGuvj3UdXlcEg4TC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228711},"main":"./dist/index.cjs","type":"module","types":"./types/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./types/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.cjs"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/devtools.mjs","require":"./dist/devtools.cjs"}},"gitHead":"f575a6342d26308d4e0ca47df1662e83a3093abf","scripts":{"test":"node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.1.3_1784602641076_0.16173933549929354","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amerisleep/analytics","version":"1.2.0","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.2.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"f28ee5e7646b0d925b1cee01a4174e8b95c9d0e0","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.2.0.tgz","fileCount":43,"integrity":"sha512-iLqm6eiX/b8SeemCzd749Lv9tOtdKvL/AtsPobKaaL99bfEUUgTdWjlB1H/3Eal+HzeMahSJqVucVGcDR+XWJQ==","signatures":[{"sig":"MEUCIBm7nlhl2fDpI/iEvxG1Q/Cc+a5K99p0mqHK7pdzJC8YAiEAunXXpbnhtQLfuBxj7RUhR7l1OfIgFcK/AgsNEPAVOuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100100},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"0816152592695389f95814bd2fec7e77b64efd68","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.2.0_1784657867205_0.9323809121831885","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@amerisleep/analytics","version":"1.3.0","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.3.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"13dc6a4f6f8839c0b4aa47d1ebb61034d1d72b41","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.3.0.tgz","fileCount":43,"integrity":"sha512-ZGNJfOd6Slc95RmCuSMWODfurDeDBGyzZ55Gh7mwniqZHt4HMfwwLEX4vbicYL4M1tVIekKZAm+TAUef8zfAGw==","signatures":[{"sig":"MEUCIEtOn7nag7hgd1OVPz311MW+i5CBDTs0xxILgInVIG3CAiEA6LdMeFVW4nXGz6cCTEPXxTV2/ThmnwbCRCUooCHEIVc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103300},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"d794f1af21804384499f23e200322d0d2067b79a","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.3.0_1784671663311_0.026033624323890114","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@amerisleep/analytics","version":"1.3.1","keywords":["analytics","ga4","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.3.1","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"ec194f50c986dc4675e4b352e45d1d686996c188","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.3.1.tgz","fileCount":43,"integrity":"sha512-xuN29J+5tnvFbcEunBhtL2OJ7rogzURiB9R/LBF8xiyS4I32LVxe6CkpKT6QaePL1UV+A10XZahtlKfTWKvGbQ==","signatures":[{"sig":"MEYCIQDTWNIj2JVOxZjJd7NHWVVTuebpIxP9lzYawUKBfXYyeAIhAMurag7CzsVeN0t2ttkxfPJUFs/DFJdXLEa424j74okn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104163},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"4f2268165f426aca36e1c78b385f50f80b1489aa","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.3.1_1784673803627_0.604257802943498","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@amerisleep/analytics","version":"1.4.0","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.4.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"d0f495a100c197c61e8c5be531cfb499a83b93f8","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.4.0.tgz","fileCount":46,"integrity":"sha512-vA01jJewYEKa3EI+5Gupzg4EboSFmPK9qcBHU6dzEK9z+9oh2hiVUZ4qqnCT4aa/5FQwZ1TyQgB3b3REtADP7g==","signatures":[{"sig":"MEUCIBStwDmwmIGsNtZYOnJTNDjfOsuWV9FQ8OzoV83j95stAiEArWAQz1+ETTXtOH9UZgGPtHUIXOSTvyz5heIrRc5nJXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112854},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/google-ads":{"types":"./types/adapters/google-ads.d.ts","import":"./dist/esm/adapters/google-ads.js","require":"./dist/cjs/adapters/google-ads.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"1cf49e1d7e54db3778c410b86c164d1d5d38810b","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.4.0_1784676946451_0.4989466507277751","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@amerisleep/analytics","version":"1.5.0","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.5.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"a0d4c54eb67c7f3a647ec68f33b25c4068dbe498","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.5.0.tgz","fileCount":46,"integrity":"sha512-YelzCHM0WhT8GwNWvLdeKEWzcdjXzoB+OG5EGM0BWCjdyqCaU1HMobHsyjnJRWNQxVw88sGOE2f9DbyeJEjUxQ==","signatures":[{"sig":"MEQCICF7Jj8E+46/6UvmhgoANPee2RSGoeGyqfry/LpvufpNAiBUcl2lxt7Oiy3NgYjSi9rFqH1km0ZFyqy+xIAUDwCAeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114977},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/google-ads":{"types":"./types/adapters/google-ads.d.ts","import":"./dist/esm/adapters/google-ads.js","require":"./dist/cjs/adapters/google-ads.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"3621d3a9980efdad8b6f69baf2e891d07f945d40","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.5.0_1784771780577_0.9111056168330518","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@amerisleep/analytics","version":"1.6.0","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce"],"license":"MIT","_id":"@amerisleep/analytics@1.6.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"906c987bc749b2a9e5d594d8346ba4b32cf1ce73","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.6.0.tgz","fileCount":48,"integrity":"sha512-/LwY5h5EPvrhgELM03oBADWWYhZts7Y9UETE9VQ6+mV6jl4FlNYgVaAMzlaYGGSeXjOaUiJn+dRKKpeaXoFUuQ==","signatures":[{"sig":"MEUCIQDbDux8+/Y7hMknFqF5c/d2TgHFVyGpWY0LvDOI6B2iTgIgIbq3o9Z+Y8GXKbfQle75Zt4w4N8w5eE04FmvtPXDdxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119440},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/google-ads":{"types":"./types/adapters/google-ads.d.ts","import":"./dist/esm/adapters/google-ads.js","require":"./dist/cjs/adapters/google-ads.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"gitHead":"c2f427e04ca32e91df37fc6fa73ffb9e9ccbfc41","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.6.0_1784836625816_0.9564958294836612","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@amerisleep/analytics","version":"1.7.0","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce","openai-pixel"],"license":"MIT","_id":"@amerisleep/analytics@1.7.0","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"homepage":"https://github.com/amerisleep-dev/analytics#readme","bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"dist":{"shasum":"462d3f1e58cae3f8ac1e9a305a313058287c7125","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.7.0.tgz","fileCount":51,"integrity":"sha512-eSeWACDwf0xpYU2NS0futf6o3/8sNKyIdduWLQoHKvm2inBkrpztzBHGuuomAcEEpqhvSeXObzdRrkTSqF96aQ==","signatures":[{"sig":"MEQCIGeBzw8Z5SwWnw2P1VEAXEX1JgXJbAqiK5NCpYwOXLWOAiB4McIgVtF9wZBXJ1AObbkZ7mHhOvOaTy6uB1wVXO+XFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141835},"main":"./dist/cjs/index.js","type":"module","types":"./types/index.d.ts","module":"./dist/esm/index.js","exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/google-ads":{"types":"./types/adapters/google-ads.d.ts","import":"./dist/esm/adapters/google-ads.js","require":"./dist/cjs/adapters/google-ads.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"},"./adapters/openai-pixel":{"types":"./types/adapters/openai-pixel.d.ts","import":"./dist/esm/adapters/openai-pixel.js","require":"./dist/cjs/adapters/openai-pixel.js"}},"gitHead":"1b74c3a00eee3d55d9c3768c481097e6623851dd","scripts":{"test":"npm run build && node --test","build":"node scripts/build.mjs","prepack":"npm run build","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"repository":{"url":"git+https://github.com/amerisleep-dev/analytics.git","type":"git"},"_npmVersion":"11.16.0","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.25.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.7.0_1786581887500_0.3931890123746522","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@amerisleep/analytics","version":"1.7.1","description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","type":"module","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./types/index.d.ts","sideEffects":false,"exports":{".":{"types":"./types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"},"./browser":{"types":"./types/browser.d.ts","import":"./dist/esm/browser.js","require":"./dist/cjs/browser.js"},"./devtools":{"types":"./types/devtools.d.ts","import":"./dist/esm/devtools.js","require":"./dist/cjs/devtools.js"},"./core":{"types":"./types/core.d.ts","import":"./dist/esm/core/index.js","require":"./dist/cjs/core/index.js"},"./commerce":{"types":"./types/commerce.d.ts","import":"./dist/esm/commerce/index.js","require":"./dist/cjs/commerce/index.js"},"./adapters/ga4":{"types":"./types/adapters/ga4.d.ts","import":"./dist/esm/adapters/ga4/index.js","require":"./dist/cjs/adapters/ga4/index.js"},"./adapters/meta-pixel":{"types":"./types/adapters/meta-pixel.d.ts","import":"./dist/esm/adapters/meta-pixel.js","require":"./dist/cjs/adapters/meta-pixel.js"},"./adapters/openai-pixel":{"types":"./types/adapters/openai-pixel.d.ts","import":"./dist/esm/adapters/openai-pixel.js","require":"./dist/cjs/adapters/openai-pixel.js"},"./adapters/google-ads":{"types":"./types/adapters/google-ads.d.ts","import":"./dist/esm/adapters/google-ads.js","require":"./dist/cjs/adapters/google-ads.js"},"./adapters/console":{"types":"./types/adapters/console.d.ts","import":"./dist/esm/adapters/console.js","require":"./dist/cjs/adapters/console.js"},"./adapters/custom-event":{"types":"./types/adapters/custom-event.d.ts","import":"./dist/esm/adapters/custom-event.js","require":"./dist/cjs/adapters/custom-event.js"}},"scripts":{"build":"node scripts/build.mjs","test":"npm run build && node --test","pack:check":"npm pack --dry-run","publish:check":"npm publish --dry-run --access public","prepack":"npm run build"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/amerisleep-dev/analytics.git"},"bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"homepage":"https://github.com/amerisleep-dev/analytics#readme","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce","openai-pixel"],"license":"MIT","devDependencies":{"esbuild":"^0.25.0"},"gitHead":"02876188c75954d60d81bbf3238c1d4751b7cb14","_id":"@amerisleep/analytics@1.7.1","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-lb4e9k/73jHQf9DwzJ8hPjPyDhDtDzcakw1NCn71mW2b/sti66YqvPjK3mJa5VBNYPBhRXWkScT9y09TWy1Ffg==","shasum":"0791f4b006a4e3b6f46a9d9f4616ae83a39ae8dd","tarball":"https://registry.npmjs.org/@amerisleep/analytics/-/analytics-1.7.1.tgz","fileCount":51,"unpackedSize":139132,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBOsiyFRKGSr60vN1wlE5LEcSuMGMnJIXBt8+oZo5UG2AiEA+PxzewBEJtwn8mcrWLE8JEd+7kwR0ncw4q172iFkeNU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1c3fea44-89ec-428c-801d-43931ef9ee45"}},"directories":{},"maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/analytics_1.7.1_1786582804549_0.04246053377734671"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T01:21:49.612Z","modified":"2026-08-13T01:00:04.865Z","1.0.0":"2026-07-21T01:21:49.940Z","1.1.2":"2026-07-21T02:39:22.418Z","1.1.3":"2026-07-21T02:57:21.241Z","1.2.0":"2026-07-21T18:17:47.345Z","1.3.0":"2026-07-21T22:07:43.479Z","1.3.1":"2026-07-21T22:43:23.874Z","1.4.0":"2026-07-21T23:35:46.591Z","1.5.0":"2026-07-23T01:56:20.727Z","1.6.0":"2026-07-23T19:57:05.955Z","1.7.0":"2026-08-13T00:44:47.640Z","1.7.1":"2026-08-13T01:00:04.708Z"},"bugs":{"url":"https://github.com/amerisleep-dev/analytics/issues"},"license":"MIT","homepage":"https://github.com/amerisleep-dev/analytics#readme","keywords":["analytics","ga4","google-ads","meta-pixel","consent","ecommerce","openai-pixel"],"repository":{"type":"git","url":"git+https://github.com/amerisleep-dev/analytics.git"},"description":"Consent-aware, provider-agnostic ecommerce analytics for Amerisleep storefronts.","maintainers":[{"name":"amerisleepcnguyen","email":"cnguyen@amerisleep.com"}],"readme":"# @amerisleep/analytics\n\nConsent-aware, provider-agnostic ecommerce analytics for storefronts. Normalize\ncommerce data once, send it to the providers you use, and let the client handle\nprovider-specific consent and readiness queues.\n\n## Install\n\n```sh\nnpm install @amerisleep/analytics\n```\n\n## How it works\n\n1. Create mappers to turn storefront product and cart data into neutral items.\n2. Create an analytics client with the provider adapters you need.\n3. Keep consent and third-party script loading in the host storefront.\n4. Track shared commerce events with `analytics.track()`.\n\nThe package does not load, configure, or identify third-party tags. The host\nloads each provider's script and calls `notifyAdapterReady()` after its queue or\nconfiguration is ready.\n\n## Quick start\n\nThis browser example sends cart events to GA4, Meta Pixel, OpenAI Pixel, and a\nconfigured Google Ads conversion. Remove adapters you do not use.\n\n```js\nimport {\n  createAnalyticsClient,\n  createMappers,\n  EVENTS,\n  ga4Adapter,\n  googleAdsConversionAdapter,\n  metaPixelAdapter,\n  openAIPixelAdapter,\n} from '@amerisleep/analytics'\n\nconst mappers = createMappers({ brand: 'Amerisleep' })\n\nconst analytics = createAnalyticsClient({\n  consentMode: 'required',\n  getCurrency: () => window.__STOREFRONT_CURRENCY__ || 'USD',\n  adapters: [\n    ga4Adapter({ mappers }),\n    metaPixelAdapter(),\n    openAIPixelAdapter({ mappers }),\n    googleAdsConversionAdapter({\n      mappers,\n      sendToByEvent: {\n        [EVENTS.PURCHASE]: 'AW-XXXXXXXXXX/PURCHASE_LABEL',\n      },\n    }),\n  ],\n})\n\n// Publish the resolved state from the storefront's consent integration.\nanalytics.setConsent({\n  status: 'resolved',\n  functional: true,\n  analytics: true,\n  advertising: true,\n})\n\n// Convert host data before tracking. The same neutral item reaches every adapter.\nanalytics.track(EVENTS.CART_ADD, {\n  items: [mappers.toNeutralItem({\n    productId: 101,\n    variantId: 202,\n    sku: 'AS3-QN',\n    name: 'AS3 Mattress',\n    price: 1399,\n    price_discounted: 1199,\n    quantity: 1,\n  })],\n})\n```\n\n## Track commerce events\n\nUse `EVENTS` rather than provider-specific names. Pass an `items` array for\nproduct, cart, checkout, and purchase events. Event properties such as `value`,\n`amount`, `total`, and `transaction_id` are available when the relevant host\nintegration has them.\n\n| Constant | Event name | Typical use |\n| --- | --- | --- |\n| `EVENTS.PRODUCT_VIEW` | `product_view` | A product detail is viewed |\n| `EVENTS.PRODUCT_LIST_VIEW` | `product_list_view` | A product list is displayed |\n| `EVENTS.PRODUCT_SELECT` | `product_select` | A product is selected from a list |\n| `EVENTS.CART_ADD` / `EVENTS.CART_REMOVE` / `EVENTS.CART_VIEW` | Cart events | Cart changes and cart views |\n| `EVENTS.CHECKOUT_BEGIN` / `EVENTS.CHECKOUT_SHIP` / `EVENTS.CHECKOUT_PAY` | Checkout events | Checkout progress |\n| `EVENTS.PURCHASE` | `purchase` | An order completes |\n| `EVENTS.SEARCH` | `search` | A storefront search runs |\n| `EVENTS.LEAD` / `EVENTS.CONTACT` | Lead events | A lead form or contact request completes |\n| `EVENTS.PROMO_VIEW` | `promotion_view` | A promotion is viewed |\n\nFor a purchase with a provider deduplication identifier, include it in the\nevent metadata or properties:\n\n```js\nanalytics.track(EVENTS.PURCHASE, {\n  transaction_id: 'BC-12345',\n  value: 1299.99,\n  items,\n}, {\n  eventId: 'BC-12345',\n})\n```\n\n## Configuration options\n\n| Option | Where | Purpose |\n| --- | --- | --- |\n| `consentMode` | Client | Use `required` (default) for consent-managed sites, or `not-required` for sites without a consent banner. |\n| `getCurrency` | Client | Returns the ISO currency code used for mapped payloads. Defaults to `USD`. |\n| `adapters` | Client | The provider adapters to receive shared events. |\n| `maxQueueSize` | Client | Maximum pending events per adapter; defaults to 50. |\n| `onDiagnostic` | Client | Observes delivery, queueing, dropped events, and adapter errors. |\n| `mappers` | Commerce adapters | Supplies neutral-item mapping; create a host-specific mapper when needed. |\n| `eventPolicy` | Adapter | Enables or suppresses shared events for that adapter only. |\n| `debug` | Most adapters | Logs mapped payloads and queue/delivery behavior for local validation. |\n\n`createAnalyticsClient()` provides `analytics.EVENTS` and `analytics.utils` for\nthe v1 storefront facade. Use `createBus()` only when you need lower-level\nadapter registration or middleware and will provide those defaults yourself.\n\n## Choose adapters\n\n| Adapter | Import | Host prerequisite |\n| --- | --- | --- |\n| GA4 direct | `ga4Adapter` | Load and configure `gtag` or the GA4 data layer. |\n| GA4 via GTM | `ga4GtmAdapter` | Load the Google Tag Manager data layer. |\n| Meta Pixel | `metaPixelAdapter` | Load and initialize `fbq`. |\n| OpenAI Pixel | `openAIPixelAdapter` | Load `oaiq.min.js` and initialize it with a Pixel ID. |\n| Google Ads | `googleAdsConversionAdapter` | Load/configure `gtag` and map each event to a public `send_to` value. |\n| Console | `consoleAdapter` | No provider script; useful for local inspection. |\n| Custom DOM event | `customEventAdapter` | Listen for the configured browser event. |\n\nUse focused imports when a narrow bundle surface is useful:\n\n```js\nimport { createAnalyticsClient } from '@amerisleep/analytics/core'\nimport { EVENTS, createMappers } from '@amerisleep/analytics/commerce'\nimport { ga4GtmAdapter } from '@amerisleep/analytics/adapters/ga4'\nimport { metaPixelAdapter } from '@amerisleep/analytics/adapters/meta-pixel'\nimport { openAIPixelAdapter } from '@amerisleep/analytics/adapters/openai-pixel'\nimport { googleAdsConversionAdapter } from '@amerisleep/analytics/adapters/google-ads'\n```\n\nRoot imports are stable and tree-shakeable in ESM-aware builds. The package has\nno side effects and does not provide a provider preset.\n\n### Provider notes\n\n- **GA4:** `ga4Adapter` sends directly to `gtag`; `ga4GtmAdapter` pushes the\n  same ecommerce shape to a GTM data layer. Set `requireBootstrap: true` when\n  events must wait for the host's `gtag('js', ...)` and `gtag('config', ...)`.\n- **Meta Pixel:** the host owns the Pixel ID and `fbq('init', ...)`. Set\n  `requireBootstrap: true` to wait for that standard initialization command.\n- **OpenAI Pixel:** the host owns the browser SDK and Pixel ID. The adapter maps\n  supported shared events to OpenAI measurement events, requires advertising\n  consent, and enables OpenAI SDK logging with `debug: true` after host setup.\n  The host should send `page_viewed` itself when needed.\n- **Google Ads:** provide `sendToByEvent`; events without a configured\n  `send_to` value are ignored. Keep only public Google identifiers in storefront\n  configuration—never credentials, customer data, or consent state.\n\n## Consent and provider readiness\n\nFor a consent-managed storefront, publish resolved categories as soon as the\nhost knows them. Supported events are held while the adapter's consent category\nis pending; denied categories discard their pending events.\n\n```js\nanalytics.setConsent({\n  status: 'resolved',\n  functional: false,\n  analytics: true,\n  advertising: false,\n})\n```\n\nWhen a provider loader creates or configures its global after the client is\ncreated, notify the client to flush that adapter's FIFO queue:\n\n```js\nwindow.gtag = function gtag() {\n  window.dataLayer.push(arguments)\n}\n\nanalytics.notifyAdapterReady('ga4')\n// Or notify every adapter after a coordinated provider bootstrap:\nanalytics.notifyAdapterReady()\n```\n\nThe host remains responsible for each provider's own consent API. For example,\nset OpenAI Pixel consent before its `init` command when measurement consent is\nrequired.\n\n## Optional integration recipes\n\n### Provider event policies\n\nUse a policy on an adapter to suppress an otherwise supported shared event. A\npolicy never enables an event the adapter does not map.\n\n```js\nconst ga4Policy = {\n  [EVENTS.PRODUCT_VIEW]: false,\n  [EVENTS.PURCHASE]: true,\n}\n\nga4Adapter({ mappers, eventPolicy: ga4Policy })\n```\n\nFor a page-level exception, use a scoped rule and pass `policyScope` in event\nmetadata:\n\n```js\nconst ga4Policy = {\n  [EVENTS.PRODUCT_VIEW]: {\n    default: false,\n    scopes: { 'special-product-detail': true },\n  },\n}\n\nanalytics.track(EVENTS.PRODUCT_VIEW, { items }, {\n  policyScope: 'special-product-detail',\n})\n```\n\n### Browser lifecycle helpers\n\nConnect an existing host consent or loader event to the client without letting\nthe package read cookies or inject scripts:\n\n```js\nimport { connectBrowserConsent, connectBrowserReadiness } from '@amerisleep/analytics/browser'\n\nconst stopConsent = connectBrowserConsent(analytics, {\n  target: window,\n  eventName: 'storefront:consent',\n  readInitial: () => window.__STOREFRONT_CONSENT__,\n  normalize: (value) => value,\n})\n\nconst stopReadiness = connectBrowserReadiness(analytics, {\n  target: window,\n  events: [{ eventName: 'storefront:providers-ready', adapterIds: ['ga4', 'meta-pixel'] }],\n})\n\n// Call these for a non-singleton storefront teardown.\nstopConsent()\nstopReadiness()\n```\n\n### Local consent testing\n\nEnable devtools only behind a compile-time development flag:\n\n```js\nimport { createDevConsentController } from '@amerisleep/analytics/devtools'\n\nconst devConsent = createDevConsentController({\n  bus: analytics,\n  enabled: import.meta.dev,\n})\n```\n\nUse `?analyticsConsent=pending`, `all`, `none`, `functional`, `analytics`, or\n`advertising` to override consent locally. When enabled, the browser also\nexposes `window.__ANALYTICS_DEV__` with `setConsent`, `clearConsent`, and\n`getState`.\n\n## Releasing\n\nRun `npm pack --dry-run` before publishing. GitHub Actions publishes a matching\n`v*` tag with Trusted Publishing: bump `package.json`, commit the release, and\npush `v<package-version>`. The tag must exactly match the package version.\n","readmeFilename":"README.md"}