{"_id":"autotel-web","_rev":"28-3e739fe1d7d5962af42733c8e56ba363","name":"autotel-web","dist-tags":{"latest":"1.12.6"},"versions":{"1.1.0":{"name":"autotel-web","version":"1.1.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.1.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"542c32cf63674ee24197412b967a490cfd1ebb5d","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.1.0.tgz","fileCount":14,"integrity":"sha512-1/mBjYDWGtWsYKEIxjyLWchUKKkZvXQPFT8eIOG9U8Kg7eqCrjBRS8a137gKs36XtEcGqHV3ptWPbOitseBKBg==","signatures":[{"sig":"MEUCIQDKdu8cgXfEx3WIA7DG2GJKIDXGjvxjqYT2amKvWtd/zgIgKARNxUg3XqXs4Fv1uTQhD/9gDNw6ie+UKMN1UZJvuKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135157},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"jagreehal","email":"jag.reehal@gmail.com"},"_resolved":"/tmp/89b9be476eba1b940c2eb8ebb252a163/autotel-web-1.1.0.tgz","_integrity":"sha512-1/mBjYDWGtWsYKEIxjyLWchUKKkZvXQPFT8eIOG9U8Kg7eqCrjBRS8a137gKs36XtEcGqHV3ptWPbOitseBKBg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"10.9.4","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.13","typescript":"^5.9.3","@types/node":"^24.10.1","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.1.0_1764140306375_0.4269276785173328","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"autotel-web","version":"1.2.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.2.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"5e8652b3839c867c6297aa9f34eb9acb77513d0d","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.2.0.tgz","fileCount":14,"integrity":"sha512-kb9ihUlNj11ZRw4gtOidfPPMxvObMhAsMv/wwkxbtajj4zQdFjsa9Rv/f+8+j1v0LrmBIB1tRKJDRokQr+hmXg==","signatures":[{"sig":"MEQCIFOSxzU4x4TtiFmpjDB9gXy4NFo1Ykf+dc0CorVZtBqUAiBdvW/EzlfLZ8QydD7X+GuZ7FxrgtlSHARIOroyR9Slew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135157},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"jagreehal","email":"jag.reehal@gmail.com"},"_resolved":"/tmp/bd2f565bcf5cc0c209d0950e6f3fc906/autotel-web-1.2.0.tgz","_integrity":"sha512-kb9ihUlNj11ZRw4gtOidfPPMxvObMhAsMv/wwkxbtajj4zQdFjsa9Rv/f+8+j1v0LrmBIB1tRKJDRokQr+hmXg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"10.9.4","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.14","typescript":"^5.9.3","@types/node":"^24.10.1","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.2.0_1764196312437_0.12056175484507592","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"autotel-web","version":"1.4.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.4.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"1920f8064514dcbc7552fc69183e3558be7ad607","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.4.0.tgz","fileCount":14,"integrity":"sha512-5LyARzlfHQZizZ1dAYMz2DKLkwm89sCMdMv1WRUHJstgfGmkhau7g/11R8d1Er/BDZNZbyIuWywjijBO7K3n/A==","signatures":[{"sig":"MEUCIA42/nQohQAHMEEUbB4poKh9ZlanpOahbDl1MKHrm4pgAiEAieDdWcnNAE3ItZRj2AntGh/KDmL8m/Xr0lax31W1lrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135156},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.4.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/323b99fd5343db6f2dd097239a7651da/autotel-web-1.4.0.tgz","_integrity":"sha512-5LyARzlfHQZizZ1dAYMz2DKLkwm89sCMdMv1WRUHJstgfGmkhau7g/11R8d1Er/BDZNZbyIuWywjijBO7K3n/A==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.7.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.16","typescript":"^5.9.3","@types/node":"^25.0.3","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.4.0_1767481246875_0.8465586014603519","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"autotel-web","version":"1.4.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.4.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"59b67c978884e78d98d32ffd0dc0c92088596efa","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.4.1.tgz","fileCount":14,"integrity":"sha512-VKtAKt9rSwbn0IwT/9Hf5nEjdpnCViu2UyQXyYEDD61Lug0yrDDrLluK1i87Oqq69ncyPFWpE2qwG8leWajdvQ==","signatures":[{"sig":"MEYCIQDp1eB1Nsdz5aup11W7FvFiXul+zft8c+bOKo3wjvOxsQIhAJV7BqmH5QRBPhuBSQRx/r0lkifAVY7PZtxJL6EHV5bQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135156},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.4.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/bd658a27c3ce2b24fec69adbeba5834b/autotel-web-1.4.1.tgz","_integrity":"sha512-VKtAKt9rSwbn0IwT/9Hf5nEjdpnCViu2UyQXyYEDD61Lug0yrDDrLluK1i87Oqq69ncyPFWpE2qwG8leWajdvQ==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.7.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.8","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.4.1_1768428174934_0.8247392942131637","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"autotel-web","version":"1.5.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.5.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"203dc74b96490818e93d6e246cd185782fd4f66c","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.5.0.tgz","fileCount":14,"integrity":"sha512-WT/YPF5BY+NwKZ1OBnyxLrvSiyO68HCKnzMxWBvVKutIV8rtE/HkHvBD0U6pNwLhiz71H4hSsqNcldehd08LQw==","signatures":[{"sig":"MEYCIQCHjI9Fds4KgIT7TUPsCrSVQ+avZBpWW8yKvsI0GtG1DgIhAO2wpP2lhbz/SbWl8zqggo3Xvu5u3+vwSMIOT9R7bgRG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135156},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.5.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/e3fbe24f17f5a74e41bb1b786e1cd01a/autotel-web-1.5.0.tgz","_integrity":"sha512-WT/YPF5BY+NwKZ1OBnyxLrvSiyO68HCKnzMxWBvVKutIV8rtE/HkHvBD0U6pNwLhiz71H4hSsqNcldehd08LQw==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.8.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.17","typescript":"^5.9.3","@types/node":"^25.0.9","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.5.0_1769122696680_0.8339551933844123","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"autotel-web","version":"1.6.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.6.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"1586c4705223bacc2026adf6d82f65f82ac778ae","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.6.0.tgz","fileCount":14,"integrity":"sha512-MMpAsgaN7nOf72+OLOn3hayVf7zeWLDUZPztLmS6b4VdPmjQzic8Y/9KEZfy9BZn4umZVe4TqDGBJUvzfHUw8Q==","signatures":[{"sig":"MEYCIQD2MvIaySP3Ub+pQ9jIhszs0qTGMnQm7fL4AZoHtRb61AIhAJ5FtlqFuh6+yQu/hnAHF3X+PRGG1mxqUbLq2EZ0BC5s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135157},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.6.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/97cb11e3a32075c3a4fea4df1ef6654b/autotel-web-1.6.0.tgz","_integrity":"sha512-MMpAsgaN7nOf72+OLOn3hayVf7zeWLDUZPztLmS6b4VdPmjQzic8Y/9KEZfy9BZn4umZVe4TqDGBJUvzfHUw8Q==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.8.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.6.0_1769466135817_0.1546058864680968","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"autotel-web","version":"1.6.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.6.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"967cf0d137a638c9aa451cf5377079dab9695d4a","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.6.1.tgz","fileCount":14,"integrity":"sha512-h7HYSQr9hJEqhPjOjtOXEoPiPyeTMJLznPAfwsQCa+iiBPNJjQ2AOZyKds6c6NDH98vJH+FTTPhRhmjFUdn7KA==","signatures":[{"sig":"MEQCIGTdRnQthpRr/So6453aZFBv1YtQaDhAsK1ojYLER5Q3AiALE0sxkLNIqxcWGe1KryeDk1SH/Up7Wu/lZrS4EAQAyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135157},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.6.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/216b73e7d544928f121f61f36441c285/autotel-web-1.6.1.tgz","_integrity":"sha512-h7HYSQr9hJEqhPjOjtOXEoPiPyeTMJLznPAfwsQCa+iiBPNJjQ2AOZyKds6c6NDH98vJH+FTTPhRhmjFUdn7KA==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.8.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.0.10","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.6.1_1769556232626_0.4702309520662902","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"autotel-web","version":"1.7.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.7.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"ded748d43b75c1350c3d70584954c65a80c48d5a","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.7.0.tgz","fileCount":14,"integrity":"sha512-1JKHcqf2FYD02uhq0jhYNTRB3Ef7kT11czhLPIiK2Iat6ssK1s9yiBVQjwSD27vz1GfApXuvIbJ+8JaiY3yBIg==","signatures":[{"sig":"MEUCIQC0zhEAknGEDqoCMpXTbgwevehvhfrGzwYCaua7EHbS3AIgRvL+kaKryGftWlZXaRNqoqMc/+fcIU6bc+AOe+SL5Pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135156},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.7.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/8db0d57980430b85580e226814ba918b/autotel-web-1.7.0.tgz","_integrity":"sha512-1JKHcqf2FYD02uhq0jhYNTRB3Ef7kT11czhLPIiK2Iat6ssK1s9yiBVQjwSD27vz1GfApXuvIbJ+8JaiY3yBIg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.8.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.1.0","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.7.0_1769846504112_0.071959416121397","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"autotel-web","version":"1.7.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.7.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"5ef79f8ccef7d3ae2ffd2c827b0968438904cc4e","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.7.1.tgz","fileCount":14,"integrity":"sha512-vFouDdQYjJChsp6Ikd+VjbIZ/ZzsWhk9h/PAYozKhxhGdMJuKGRKJJWzrC/dAqr1pWZgFSXlJVFPpOA0LbenjA==","signatures":[{"sig":"MEUCIQD0REAjs8XbQHYDnEnJBojuYuGqfPBgHePO8qU/dVWrJwIgXrbUjeXHi80dqLemLoV6gE2sSE/jPs/o0HHEnRu7qa8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":135156},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.7.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/6cf0d0cb08682c73b60ecab329ecb6be/autotel-web-1.7.1.tgz","_integrity":"sha512-vFouDdQYjJChsp6Ikd+VjbIZ/ZzsWhk9h/PAYozKhxhGdMJuKGRKJJWzrC/dAqr1pWZgFSXlJVFPpOA0LbenjA==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.9.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.2","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.7.1_1770572458694_0.14695989276899168","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"autotel-web","version":"1.8.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.8.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"4403ad04dc095866262089c2af5f57ef056745b6","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.8.0.tgz","fileCount":26,"integrity":"sha512-KYfzhpmiXFgNxN6oFOHrY7zYbW2xdrpamYFEKeEP6RlrfC8/C9YNhfuS2vbk2m6ejZ/Zrd95fFY7Zprbb2szmA==","signatures":[{"sig":"MEYCIQDib4qu35+C7IgTJ2NpMcmw6j/ZqrtGyWGq1qhwsuSZBgIhAN2eJQO2lepeti1qJ4+Ts3bKJIWBn/y6gic1gVDtljyN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228018},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.8.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/32be49d05ccfdbaccc11b7d1951c9f12/autotel-web-1.8.0.tgz","_integrity":"sha512-KYfzhpmiXFgNxN6oFOHrY7zYbW2xdrpamYFEKeEP6RlrfC8/C9YNhfuS2vbk2m6ejZ/Zrd95fFY7Zprbb2szmA==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.9.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"web-vitals":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^2.5.0","@opentelemetry/resources":"^2.5.0","@opentelemetry/sdk-trace-web":"^2.5.0","@opentelemetry/sdk-trace-base":"^2.5.0","@opentelemetry/instrumentation":"^0.211.0","@opentelemetry/instrumentation-fetch":"^0.211.0","@opentelemetry/exporter-trace-otlp-http":"^0.211.0","@opentelemetry/instrumentation-document-load":"^0.56.0","@opentelemetry/instrumentation-xml-http-request":"^0.211.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.2.3","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.8.0_1770842020194_0.2036110831908673","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"autotel-web","version":"1.9.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.9.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"4b1bae9c4bddeda24db9d6224584c5ff1af85d5a","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.9.0.tgz","fileCount":26,"integrity":"sha512-2qyMEWL+ThKxWmXhuYo7PNHegJbWDo8J/afXLYyC3MLhNovX7JH56YVqr/cYU6NELqBnIjmm7cCdjiTCJKJUSw==","signatures":[{"sig":"MEQCIE4c0YBsI1ZGcGsOhVFKkTZBjJ+hA6B5WUakX5qu0HLSAiBm8lAmWuix5P/rrQZGPXdSN2+sKfgmctyPK6xkjZ3hIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228018},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.9.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/f617091dc8e7308463037f6090f34093/autotel-web-1.9.0.tgz","_integrity":"sha512-2qyMEWL+ThKxWmXhuYo7PNHegJbWDo8J/afXLYyC3MLhNovX7JH56YVqr/cYU6NELqBnIjmm7cCdjiTCJKJUSw==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.10.1","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"web-vitals":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^2.5.1","@opentelemetry/resources":"^2.5.1","@opentelemetry/sdk-trace-web":"^2.5.1","@opentelemetry/sdk-trace-base":"^2.5.1","@opentelemetry/instrumentation":"^0.212.0","@opentelemetry/instrumentation-fetch":"^0.212.0","@opentelemetry/exporter-trace-otlp-http":"^0.212.0","@opentelemetry/instrumentation-document-load":"^0.57.0","@opentelemetry/instrumentation-xml-http-request":"^0.212.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.0","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.9.0_1771881630453_0.22642268372280583","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"autotel-web","version":"1.10.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.10.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"78a3496231dcd3b31d09bf3c1679d9eb81c8fd46","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.10.0.tgz","fileCount":26,"integrity":"sha512-mYJcAyA0C3pfO/0yvxR4TrkFmYGM5LLMkKCKXpUPJ00SwuXE0fwTer0++lPNo3hUzDhewr4yH3gSdVfKT410SA==","signatures":[{"sig":"MEYCIQDChUQLypigfZYAhamU2YW5ODbrqQXIMkQcnQIJdEOVXAIhAMWEuOFSne+e7HfbZOypPg2Taq1AXSpQYhTFnbUyTbM+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228000},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.10.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/5f7eecc33f8e3af82c883de1d86432ed/autotel-web-1.10.0.tgz","_integrity":"sha512-mYJcAyA0C3pfO/0yvxR4TrkFmYGM5LLMkKCKXpUPJ00SwuXE0fwTer0++lPNo3hUzDhewr4yH3gSdVfKT410SA==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.11.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"web-vitals":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^2.5.1","@opentelemetry/resources":"^2.5.1","@opentelemetry/sdk-trace-web":"^2.5.1","@opentelemetry/sdk-trace-base":"^2.5.1","@opentelemetry/instrumentation":"^0.212.0","@opentelemetry/instrumentation-fetch":"^0.212.0","@opentelemetry/exporter-trace-otlp-http":"^0.212.0","@opentelemetry/instrumentation-document-load":"^0.57.0","@opentelemetry/instrumentation-xml-http-request":"^0.212.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.3","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.10.0_1772401576002_0.8279659261687446","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"autotel-web","version":"1.10.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.10.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"93a09dbe7ebd7d65914668d7a75fdd561037b877","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.10.1.tgz","fileCount":26,"integrity":"sha512-iN/hPz9DaAjwgQDQOy3kGV/zL4EgBClxNW9jvzURA8q7A7XGPyg/nUuOAR4fQFJjycCFD5DhhSeU77/vVxsf4A==","signatures":[{"sig":"MEUCIQDLSn0lNy6NGxX2Tc+Z3cXmJUduBj+0YV1vGePBfM3HvwIgcMf54wmP6Gi7w11AYV6sWAo2iMXQ1OBl07lPamDFj2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228000},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.10.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/e4187091799a4b653e7b42fa5055a58a/autotel-web-1.10.1.tgz","_integrity":"sha512-iN/hPz9DaAjwgQDQOy3kGV/zL4EgBClxNW9jvzURA8q7A7XGPyg/nUuOAR4fQFJjycCFD5DhhSeU77/vVxsf4A==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.11.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"web-vitals":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^2.6.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-trace-web":"^2.6.0","@opentelemetry/sdk-trace-base":"^2.6.0","@opentelemetry/instrumentation":"^0.213.0","@opentelemetry/instrumentation-fetch":"^0.213.0","@opentelemetry/exporter-trace-otlp-http":"^0.213.0","@opentelemetry/instrumentation-document-load":"^0.58.0","@opentelemetry/instrumentation-xml-http-request":"^0.213.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.5","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.10.1_1772902666836_0.19114089455942485","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"autotel-web","version":"1.11.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.11.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"d80bb49556dd5a55ad1c89cad765628b6a7e623b","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.11.0.tgz","fileCount":39,"integrity":"sha512-PDRgOHd8+FICrOK2kfMHDiEBt08+cQm5A54oVyQJfUIUoxeA+qY1e6o2UP3TSQhHvLIjAyxspEMauDWRmNTiwA==","signatures":[{"sig":"MEUCIHZiH2f0vhwiBXJgRnObtd3bA6NYctv3ytzE2ZAXvarpAiEAit7y2ftdLkTVtzAaucbpTshUbplv8b3ZonBqv0wKm2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291860},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.11.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/631af450bdfbdbb02fdfcd1b36a7e96f/autotel-web-1.11.0.tgz","_integrity":"sha512-PDRgOHd8+FICrOK2kfMHDiEBt08+cQm5A54oVyQJfUIUoxeA+qY1e6o2UP3TSQhHvLIjAyxspEMauDWRmNTiwA==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.11.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","dependencies":{"web-vitals":"^5.1.0","@opentelemetry/api":"^1.9.0","@opentelemetry/core":"^2.6.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-trace-web":"^2.6.0","@opentelemetry/sdk-trace-base":"^2.6.0","@opentelemetry/instrumentation":"^0.213.0","@opentelemetry/instrumentation-fetch":"^0.213.0","@opentelemetry/exporter-trace-otlp-http":"^0.213.0","@opentelemetry/instrumentation-document-load":"^0.58.0","@opentelemetry/instrumentation-xml-http-request":"^0.213.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.0.18","typescript":"^5.9.3","@types/node":"^25.3.5","vitest-mock-extended":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.11.0_1773133819022_0.46630801174103165","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"autotel-web","version":"1.11.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.11.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"6cc5632f0ded211290be2aeee22f1425c08dc072","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.11.1.tgz","fileCount":40,"integrity":"sha512-tKVYgVN7J/a3TwOKUeVKp0kToSzgKsBlz3ZnLuSIrhhPMeL8/dZblM9ylXJQLH9c0470edxBrXW7XzL4rIza6g==","signatures":[{"sig":"MEYCIQD6EBMcL8/qHONasnoC1S2dqAUHGDxWiApV6MSpk3gyPQIhANT9cvsAdtfMOjxGkluZhqKmXvUiTW620dtlFKQzFiiL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315359},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.11.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/e25dbb831b934c3a47818d4c9a10910c/autotel-web-1.11.1.tgz","_integrity":"sha512-tKVYgVN7J/a3TwOKUeVKp0kToSzgKsBlz3ZnLuSIrhhPMeL8/dZblM9ylXJQLH9c0470edxBrXW7XzL4rIza6g==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.12.1","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"web-vitals":"^5.2.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.6.1","@opentelemetry/resources":"^2.6.1","@opentelemetry/sdk-trace-web":"^2.6.1","@opentelemetry/sdk-trace-base":"^2.6.1","@opentelemetry/instrumentation":"^0.214.0","@opentelemetry/instrumentation-fetch":"^0.214.0","@opentelemetry/exporter-trace-otlp-http":"^0.214.0","@opentelemetry/instrumentation-document-load":"^0.59.0","@opentelemetry/instrumentation-xml-http-request":"^0.214.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.11.1_1775683981878_0.8625190240415133","host":"s3://npm-registry-packages-npm-production"}},"1.11.2":{"name":"autotel-web","version":"1.11.2","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.11.2","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"7f9894ed451c539edebdb6d1411f75509a966f9d","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.11.2.tgz","fileCount":40,"integrity":"sha512-gebs03dsnqvJZKJ9jwNp51ulY3o34NcuY4bKSlAZnx692CiC7of/hg1mKPbirjaBUpQjd/GAiq1t/xzMd7BuLw==","signatures":[{"sig":"MEQCIDes5sf3XpG/VI/J2E4zq7ic1ZZschbcgC8g7bdiqi/XAiA5HUqZGR1nSYx8tEWwpqDg8yOend5hQncWiz5D5Gi/ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315407},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.11.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"npx eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"npx eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/6e97b63b473e2ec41fcdf6277177f139/autotel-web-1.11.2.tgz","_integrity":"sha512-gebs03dsnqvJZKJ9jwNp51ulY3o34NcuY4bKSlAZnx692CiC7of/hg1mKPbirjaBUpQjd/GAiq1t/xzMd7BuLw==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.13.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"web-vitals":"^5.2.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.0","@opentelemetry/resources":"^2.7.0","@opentelemetry/sdk-trace-web":"^2.7.0","@opentelemetry/sdk-trace-base":"^2.7.0","@opentelemetry/instrumentation":"^0.215.0","@opentelemetry/instrumentation-fetch":"^0.215.0","@opentelemetry/exporter-trace-otlp-http":"^0.215.0","@opentelemetry/instrumentation-document-load":"^0.60.0","@opentelemetry/instrumentation-xml-http-request":"^0.215.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.5","typescript":"^6.0.3","@types/node":"^25.6.0","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.11.2_1777270344188_0.007910133459656965","host":"s3://npm-registry-packages-npm-production"}},"1.11.5":{"name":"autotel-web","version":"1.11.5","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.11.5","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"03f0ca73c8fb452b6e3c38c17bb05607690a4e9a","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.11.5.tgz","fileCount":40,"integrity":"sha512-Jql96+Mrf/Yw6my6SbKHyp0vxJB+RXd0NoTaucWHR8S2G6lRx4TbyqHNb9cBrXR2OMDTUbFbi7NVhtrTbSfdYw==","signatures":[{"sig":"MEUCIExGquE4cvc3UWlFzhadZghnSY3zf7HYndvMfJdBReFgAiEA7KofP2JV9u04migAc1F7mgvM9vulOD9B/6wn39AMvYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.11.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315399},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.11.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/bc2549843ba33d5a23ff9608ec826331/autotel-web-1.11.5.tgz","_integrity":"sha512-Jql96+Mrf/Yw6my6SbKHyp0vxJB+RXd0NoTaucWHR8S2G6lRx4TbyqHNb9cBrXR2OMDTUbFbi7NVhtrTbSfdYw==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.13.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"web-vitals":"^5.2.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.216.0","@opentelemetry/instrumentation-fetch":"^0.216.0","@opentelemetry/exporter-trace-otlp-http":"^0.216.0","@opentelemetry/instrumentation-document-load":"^0.61.0","@opentelemetry/instrumentation-xml-http-request":"^0.216.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.5","typescript":"^6.0.3","@types/node":"^25.6.0","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.11.5_1777961197119_0.7710886803844386","host":"s3://npm-registry-packages-npm-production"}},"1.11.6":{"name":"autotel-web","version":"1.11.6","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.11.6","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"830fb8f0348ea820feba4bbf7fe235db83367010","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.11.6.tgz","fileCount":40,"integrity":"sha512-pkO5re9qdn1Y3lIJRAIYHlDuWVhup2ufVgwa4FbijN8Fg4egCGiBMezTVidZUP9qpxUZrYbCEPGPYJ3oFiUIAg==","signatures":[{"sig":"MEUCIQCngTQMRquseyj/Fc0Ix+CEsnUxfrNsSb/LYORK51DZagIgJ2MY7pLRCHKlL9REUs+A7ddfuLjLbAymcPB8tjyIKtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.11.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":315399},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.11.6.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/fd65c8554d468188eebee2e45829a9ff/autotel-web-1.11.6.tgz","_integrity":"sha512-pkO5re9qdn1Y3lIJRAIYHlDuWVhup2ufVgwa4FbijN8Fg4egCGiBMezTVidZUP9qpxUZrYbCEPGPYJ3oFiUIAg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.14.1","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"web-vitals":"^5.2.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.6","typescript":"^6.0.3","@types/node":"^25.7.0","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.11.6_1778712704638_0.2034802589423248","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"autotel-web","version":"1.12.0","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.12.0","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"bffed998944053105b5397db2239f8622333947f","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.0.tgz","fileCount":43,"integrity":"sha512-snFqd7Ujvk07GcITzvWgwADSLVrjVVToNAkaW5Eg50BVNgLGW4TXZ9L3fCmz2kKCeL577bTwVF5Lx1e3/OPu/Q==","signatures":[{"sig":"MEQCIBXTcjwcFga6AJInd/v45ADFpYAcIBcytD368M0ZVO2CAiAtbMnfXCQt97KFSjdqqiotzlo3fx7bDh9IHOzM4gNabQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363334},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.12.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/c61a8421555a8ada17134d8693adaff0/autotel-web-1.12.0.tgz","_integrity":"sha512-snFqd7Ujvk07GcITzvWgwADSLVrjVVToNAkaW5Eg50BVNgLGW4TXZ9L3fCmz2kKCeL577bTwVF5Lx1e3/OPu/Q==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.16.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"web-vitals":"^5.2.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.6","typescript":"^6.0.3","@types/node":"^25.7.0","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.12.0_1779990805416_0.03582122607218863","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"autotel-web","version":"1.12.1","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.12.1","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"e00bd40c13d9e5dc459f458b813aa46b89f13328","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.1.tgz","fileCount":43,"integrity":"sha512-/ZAO8FXkGjGS/S3IHoeQ6X9NUVdDwKgPsgjOihxPHuOwOkDiKywyMz3I5dJgDdmO6WdzNylY4wL5+Bdv8h8kWQ==","signatures":[{"sig":"MEUCIBiKm0KnGvepiR9S7opbjIfmpF8MUxYf1NVn59CYdfGKAiEA1/GGAAACgMtJCrOY4j8zppEEvRW6XK3+vM2ohdAxBAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":363334},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.12.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:dda88766-c236-4413-8a45-fcd94f45e126"}},"_resolved":"/tmp/03096785ecc8b0c2ad31f04f134b3aad/autotel-web-1.12.1.tgz","_integrity":"sha512-/ZAO8FXkGjGS/S3IHoeQ6X9NUVdDwKgPsgjOihxPHuOwOkDiKywyMz3I5dJgDdmO6WdzNylY4wL5+Bdv8h8kWQ==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.16.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"web-vitals":"^5.3.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.12.1_1780081637548_0.8016784921746074","host":"s3://npm-registry-packages-npm-production"}},"1.12.3":{"name":"autotel-web","version":"1.12.3","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.12.3","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"aa0c4909ca79e093302988f946daf5882ac7c8e1","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.3.tgz","fileCount":43,"integrity":"sha512-goHxehnKkxEWkavq09rXcWASfx9+IUTj/gBCpZlVOXj3JNXTITavMAjF7pXif/L3DPoqyYyqj4m1a8iOxOcaSQ==","signatures":[{"sig":"MEYCIQDGZ9P45xVqz6Q6E4ZSl9TlqE1pmPRhnaeX3zihodXHHAIhAOkDkcWhQ9MR5FBK35xjzW9v8YjAVzQj7EEhnby/dyRQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363334},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.12.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsup","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"jagreehal","email":"jag.reehal@gmail.com"},"_resolved":"/private/var/folders/sp/__ydkqk53ss4hb4k3wbv1wbc0000gn/T/5f939a074f1ab7efab74f524ed2ae989/autotel-web-1.12.3.tgz","_integrity":"sha512-goHxehnKkxEWkavq09rXcWASfx9+IUTj/gBCpZlVOXj3JNXTITavMAjF7pXif/L3DPoqyYyqj4m1a8iOxOcaSQ==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.13.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"web-vitals":"^5.3.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.3","vitest":"^4.1.7","typescript":"^6.0.3","@types/node":"^25.9.1","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.12.3_1780704301541_0.04257708281000916","host":"s3://npm-registry-packages-npm-production"}},"1.12.4":{"name":"autotel-web","version":"1.12.4","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.12.4","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"37d276884677f5da0e5f93ce00926bb99ed2d5fd","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.4.tgz","fileCount":47,"integrity":"sha512-vZS3E64IUVHbUITK8/FfgJRwM9twi71fy3o/SUFzBEcK23nQYpAChAlBXbddela6EzrTwim50nqw6soXfFIjgg==","signatures":[{"sig":"MEYCIQCl3rIXF9dO+s5UlESwFI07ElhXP902PMfH5WX0kKJ7fwIhALLiHX00Cbo2T38r14Ym8p1PMZ+GCGQN2mWq1gtbHnQI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.12.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":365741},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.12.4.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:326be9e5-e0e1-49ac-9ea9-ffdd2d7d8d84"}},"_resolved":"/tmp/d2b97951f1dac1e697d7eaf6b7a45c21/autotel-web-1.12.4.tgz","_integrity":"sha512-vZS3E64IUVHbUITK8/FfgJRwM9twi71fy3o/SUFzBEcK23nQYpAChAlBXbddela6EzrTwim50nqw6soXfFIjgg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.17.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"web-vitals":"^5.3.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","tsdown":"^0.22.2","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^25.9.2","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.12.4_1781945495662_0.804588276205453","host":"s3://npm-registry-packages-npm-production"}},"1.12.5":{"name":"autotel-web","version":"1.12.5","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"url":"https://jagreehal.com","name":"Jag Reehal","email":"jag@jagreehal.com"},"license":"MIT","_id":"autotel-web@1.12.5","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"dist":{"shasum":"dfe109ec312a777fc04e649e6aed28ecb6daeaf7","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.5.tgz","fileCount":16,"integrity":"sha512-2dgjARrde6ydBwR7MEvXmTV8jD/vRsv9FveOEk3Z1eijldeUCCcs3tJ2ieOzUUG/fPXCZHw0SzwCj+nHsomhkg==","signatures":[{"sig":"MEYCIQC8eBsaiQ+XLUK318izWN6hOm1aneFiy4jjtjPzPwcB+gIhAK+eXCQz6pSvjf6PljaHWipeHDC6sHy7/MqKl1AOTUWc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.12.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236186},"main":"./dist/index.js","type":"module","_from":"file:autotel-web-1.12.5.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"scripts":{"dev":"tsdown --watch","lint":"eslint src/**/*.ts","test":"vitest run","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint src/**/*.ts --fix","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:326be9e5-e0e1-49ac-9ea9-ffdd2d7d8d84"}},"_resolved":"/tmp/373b20d34dd854c4331244fb5cfb9006/autotel-web-1.12.5.tgz","_integrity":"sha512-2dgjARrde6ydBwR7MEvXmTV8jD/vRsv9FveOEk3Z1eijldeUCCcs3tJ2ieOzUUG/fPXCZHw0SzwCj+nHsomhkg==","repository":{"url":"git+https://github.com/jagreehal/autotel.git","type":"git","directory":"packages/autotel-web"},"_npmVersion":"11.17.0","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"web-vitals":"^5.3.0","@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.3","tsdown":"^0.22.2","vitest":"^4.1.8","typescript":"^6.0.3","@types/node":"^25.9.2","vitest-mock-extended":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/autotel-web_1.12.5_1781991065352_0.7800019851275972","host":"s3://npm-registry-packages-npm-production"}},"1.12.6":{"name":"autotel-web","version":"1.12.6","description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./full":{"types":"./dist/full.d.ts","import":"./dist/full.js"},"./privacy":{"types":"./dist/privacy.d.ts","import":"./dist/privacy.js"}},"keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"author":{"name":"Jag Reehal","email":"jag@jagreehal.com","url":"https://jagreehal.com"},"license":"Apache-2.0","dependencies":{"@opentelemetry/api":"^1.9.1","@opentelemetry/core":"^2.7.1","@opentelemetry/exporter-trace-otlp-http":"^0.218.0","@opentelemetry/instrumentation":"^0.218.0","@opentelemetry/instrumentation-document-load":"^0.63.0","@opentelemetry/instrumentation-fetch":"^0.218.0","@opentelemetry/instrumentation-xml-http-request":"^0.218.0","@opentelemetry/resources":"^2.7.1","@opentelemetry/sdk-trace-base":"^2.7.1","@opentelemetry/sdk-trace-web":"^2.7.1","web-vitals":"^5.3.0"},"devDependencies":{"@types/node":"^26.1.0","rimraf":"^6.1.3","tsdown":"^0.22.3","typescript":"^6.0.3","vitest":"^4.1.10","vitest-mock-extended":"^4.0.0"},"repository":{"type":"git","url":"git+https://github.com/jagreehal/autotel.git","directory":"packages/autotel-web"},"bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","scripts":{"build":"tsdown","dev":"tsdown --watch","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","clean":"rimraf dist"},"_id":"autotel-web@1.12.6","_integrity":"sha512-jqt/Zkh3zIqrnlKoVcwc+q9lehwsqymirCyLEhjA8oqom2Z/fHWNCtLir8kRfAQqnrmsYHEwI1J+0i1w05fwyQ==","_resolved":"/tmp/86010b40ba2157472efbadef709aa316/autotel-web-1.12.6.tgz","_from":"file:autotel-web-1.12.6.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-jqt/Zkh3zIqrnlKoVcwc+q9lehwsqymirCyLEhjA8oqom2Z/fHWNCtLir8kRfAQqnrmsYHEwI1J+0i1w05fwyQ==","shasum":"7806cf9d7acd3624245cfd1f42f4d016e56eee79","tarball":"https://registry.npmjs.org/autotel-web/-/autotel-web-1.12.6.tgz","fileCount":16,"unpackedSize":245414,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/autotel-web@1.12.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDnpS4G8f6egvaSMjTRKUjiJtXMnhWuqPk56zy6fmv/1gIgR5bK9jRSkXKH6W3TDmlSpTyOErUctci6NFT4NYCFyiU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:326be9e5-e0e1-49ac-9ea9-ffdd2d7d8d84"}},"directories":{},"maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/autotel-web_1.12.6_1783978684656_0.4371495233554583"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-26T06:58:26.301Z","modified":"2026-07-13T21:38:05.180Z","1.1.0":"2025-11-26T06:58:26.594Z","1.2.0":"2025-11-26T22:31:52.630Z","1.4.0":"2026-01-03T23:00:47.015Z","1.4.1":"2026-01-14T22:02:55.075Z","1.5.0":"2026-01-22T22:58:16.847Z","1.6.0":"2026-01-26T22:22:15.975Z","1.6.1":"2026-01-27T23:23:52.804Z","1.7.0":"2026-01-31T08:01:44.246Z","1.7.1":"2026-02-08T17:40:58.844Z","1.8.0":"2026-02-11T20:33:40.335Z","1.9.0":"2026-02-23T21:20:30.612Z","1.10.0":"2026-03-01T21:46:16.162Z","1.10.1":"2026-03-07T16:57:46.994Z","1.11.0":"2026-03-10T09:10:19.189Z","1.11.1":"2026-04-08T21:33:02.016Z","1.11.2":"2026-04-27T06:12:24.364Z","1.11.5":"2026-05-05T06:06:37.393Z","1.11.6":"2026-05-13T22:51:44.794Z","1.12.0":"2026-05-28T17:53:25.666Z","1.12.1":"2026-05-29T19:07:17.709Z","1.12.2":"2026-06-04T00:25:48.504Z","1.12.3":"2026-06-06T00:05:01.683Z","1.12.4":"2026-06-20T08:51:35.781Z","1.12.5":"2026-06-20T21:31:05.486Z","1.12.6":"2026-07-13T21:38:04.842Z"},"bugs":{"url":"https://github.com/jagreehal/autotel/issues"},"author":{"name":"Jag Reehal","email":"jag@jagreehal.com","url":"https://jagreehal.com"},"license":"Apache-2.0","homepage":"https://github.com/jagreehal/autotel/tree/main/packages/autotel-web#readme","keywords":["opentelemetry","otel","browser","web","distributed-tracing","w3c-trace-context","traceparent","observability","tracing","spa","react","vue","nextjs"],"repository":{"type":"git","url":"git+https://github.com/jagreehal/autotel.git","directory":"packages/autotel-web"},"description":"Ultra-lightweight browser SDK for distributed tracing - propagates W3C traceparent headers to backends using Autotel (~2-5KB gzipped)","maintainers":[{"name":"jagreehal","email":"jag.reehal@gmail.com"}],"readme":"# autotel-web\n\nUltra-lightweight browser SDK for distributed tracing (**1.6KB gzipped**)\n\n**Purpose:** Enable distributed tracing between browser and backend applications. The browser propagates W3C `traceparent` headers, and your backend (using [Autotel](../autotel)) automatically continues the trace.\n\n**Core Philosophy:** The backend does all the real tracing :  timing, spans, errors, export :  while the browser only propagates the trace context via headers.\n\n**No OpenTelemetry dependencies. No exporters. No collectors. No CORS. Just header injection.**\n\n```\n┌─────────┐  traceparent   ┌─────────┐   spans    ┌───────────┐\n│ Browser │  ----------->  │ Backend │  ------->  │ Collector │\n│  1.6KB  │    header      │ (OTel)  │   export   │ (Datadog) │\n└─────────┘                └─────────┘            └───────────┘\n```\n\n## Features\n\n✅ **Tiny bundle** - **1.6KB gzipped** (33x smaller than full OTel browser SDK)\n✅ **Zero dependencies** - No `@opentelemetry/*` packages needed\n✅ **W3C trace propagation** - Automatic `traceparent` header injection on fetch/XHR\n✅ **SSR-safe** - Works with Next.js, Remix, and other SSR frameworks\n✅ **Framework-agnostic** - Works with React, Vue, Svelte, Angular, vanilla JS\n✅ **No Zone.js** - [Context propagation without global patching](#context-propagation-without-zonejs)\n\n## Installation\n\n```bash\nnpm install autotel-web\n# or\npnpm add autotel-web\n# or\nyarn add autotel-web\n```\n\n**Important:** You do NOT need to install any `@opentelemetry/*` packages yourself. One install gives you both modes below.\n\n### Lean vs Full mode\n\n- **Lean (default)** :  `import { init } from 'autotel-web'`. Zero dependencies, ~1.6KB gzipped. Only injects W3C `traceparent` on fetch/XHR; no real spans in the browser. Backend does the real tracing.\n- **Full**: `import { initFull } from 'autotel-web/full'`. Real spans (navigation, fetch/XHR, optional user interaction), optional `http.client.network_timing` events, **Web Vitals** (LCP, INP, CLS, FCP, TTFB), **unhandled error capture**, optional long-task capture, sampling, and OTLP export. No Zone.js; bundle size is larger (~40-50KB gzipped). Use when you need client-side spans and export from the browser.\n\nUse lean mode by default; use full mode when you need real browser spans and network timing. You can use dynamic import to load full mode only when needed: `import('autotel-web/full').then(({ initFull }) => initFull(config))`.\n\n## Quick Start\n\n### 1. Initialize in Browser\n\n```typescript\nimport { init } from 'autotel-web'\n\n// Call once, client-side only\ninit({ service: 'my-frontend-app' })\n\n// That's it! All fetch/XHR calls now include traceparent headers\nfetch('/api/users')  // <-- traceparent header automatically injected!\n```\n\n### 2. Backend Receives Trace\n\nYour backend using Autotel automatically extracts the `traceparent` header and continues the trace:\n\n```typescript\n// Backend (Express + Autotel)\nimport { init, trace } from 'autotel'\n\ninit({\n  service: 'my-api',\n  endpoint: 'http://localhost:4318'  // Your OTel collector\n})\n\napp.get('/api/users', async (req, res) => {\n  // Autotel automatically extracts traceparent from req.headers\n  // and creates a child span\n  const users = await trace(async () => {\n    return db.users.findAll()\n  })()\n\n  res.json(users)\n})\n```\n\n### 3. View Distributed Trace\n\nOpen your observability platform (Honeycomb, Datadog, Jaeger, etc.) and see the complete trace from browser → backend → database!\n\n## Browser Span Export (lean mode)\n\nBy default, lean mode only injects `traceparent` headers — no spans are exported from the browser. This means trace UIs like Jaeger may show \"missing parent span\" because the browser's spanId doesn't exist in the collector.\n\nTo fix this, set the `endpoint` option. autotel-web will export a lightweight span via `navigator.sendBeacon` for each fetch, so the browser span appears in your collector as the trace root:\n\n```typescript\ninit({\n  service: 'my-frontend',\n  endpoint: '', // same-origin — requires /v1/traces proxy (see below)\n})\n```\n\n### Collector Proxy\n\nBrowsers can't send directly to most collectors (CORS). Add a simple proxy route to your API:\n\n**Hono:**\n\n```typescript\napp.post('/v1/traces', async (c) => {\n  const body = await c.req.arrayBuffer()\n  await fetch(`${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body,\n  })\n  return c.json({ ok: true })\n})\n```\n\n**Express:**\n\n```typescript\napp.post('/v1/traces', express.raw({ type: 'application/json' }), async (req, res) => {\n  await fetch(`${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: req.body,\n  })\n  res.json({ ok: true })\n})\n```\n\nIf using Vite in dev, proxy `/v1/traces` to your API:\n\n```typescript\n// vite.config.ts\nserver: {\n  proxy: {\n    '/v1/traces': { target: 'http://localhost:8787', changeOrigin: true },\n  },\n},\n```\n\n### PostHog Reverse Proxy\n\nIf you use PostHog for analytics, route events through the same API to bypass ad blockers (typically increases event capture by 10-30%):\n\n**Hono:**\n\n```typescript\nconst POSTHOG_HOST = process.env.POSTHOG_HOST || 'https://eu.i.posthog.com'\n\napp.post('/ingest/*', async (c) => {\n  const path = c.req.path.replace('/ingest', '')\n  const body = await c.req.arrayBuffer()\n  const resp = await fetch(`${POSTHOG_HOST}${path}`, {\n    method: 'POST',\n    headers: { 'Content-Type': c.req.header('content-type') || 'application/json' },\n    body,\n  })\n  return new Response(resp.body, { status: resp.status, headers: resp.headers })\n})\n\napp.get('/ingest/decide*', async (c) => {\n  const url = new URL(c.req.url)\n  const resp = await fetch(`${POSTHOG_HOST}/decide${url.search}`)\n  return new Response(resp.body, { status: resp.status, headers: resp.headers })\n})\n```\n\n**Browser (posthog-js):**\n\n```typescript\nimport posthog from 'posthog-js'\n\nposthog.init('phc_your_key', {\n  api_host: '/ingest',                  // same-origin proxy\n  ui_host: 'https://eu.i.posthog.com',  // keep toolbar working\n})\n```\n\n**Vite proxy (dev):**\n\n```typescript\nproxy: {\n  '/ingest': { target: 'http://localhost:8787', changeOrigin: true },\n}\n```\n\nSee [PostHog reverse proxy docs](https://posthog.com/docs/advanced/proxy) for production setups (managed proxy, Cloudflare Workers, etc.).\n\nThe resulting trace tree:\n\n```\nbrowser /api/transfer (CLIENT, root)        ← autotel-web\n  └─ POST /api/transfer (SERVER)            ← autotel / autotel-hono\n       └─ sendMoney (INTERNAL)              ← your app\n            ├─ validate\n            ├─ fetchRate\n            └─ ...\n```\n\n## Full mode (real spans)\n\nWhen you need real browser spans, network timing events, and optional export from the client, use full mode. Same install: `autotel-web`. No Zone.js.\n\n```typescript\nimport { initFull } from 'autotel-web/full'\n\ninitFull({\n  service: 'my-app',\n  endpoint: 'https://your-collector.example.com/v1/traces',  // OTLP HTTP\n  sampleRate: 0.1,                    // e.g. 10% in production\n  captureNavigation: true,            // document load spans (default: true)\n  captureFetch: true,\n  captureXHR: true,\n  captureNetworkTiming: true,         // http.client.network_timing events (semantic-conventions#3385)\n  captureErrors: true,                // unhandled errors → span.recordException (default: true)\n  captureWebVitals: true,             // LCP, INP, CLS, FCP, TTFB as web_vitals span (default: true)\n  webVitals: { reportAllChanges: false },  // pass through to web-vitals (default: false)\n  captureLongTasks: false,            // long-task spans (main thread >= 50ms); opt-in, can be noisy\n  copyHttpSpanAttributesToEvent: false,\n  userInteraction: {\n    enabled: true,\n    selectors: ['button', 'a', '[data-track]'],\n  },\n  privacy: { allowedOrigins: ['api.myapp.com'], respectDoNotTrack: true },\n  debug: false,\n})\n```\n\nWith sensible defaults, **one `initFull()`** gives you: **navigation spans**, **fetch/XHR spans** with W3C propagation, **http.client.network_timing** events, **Web Vitals** (LCP, INP, CLS, FCP, TTFB) as a single `web_vitals` span per page, and **unhandled error capture** (window errors and unhandled promise rejections). Optional: **user interaction** spans (clicks on configurable selectors), **long-task** spans (opt-in via `captureLongTasks: true`), **sampling** (`sampleRate` or custom `sampler`), and **setAttribute** / **addEvent** / **span()** on the active span. Async context propagation is best-effort (no Zone.js).\n\n## Framework Integration\n\n### React (Client-Only)\n\n```typescript\n// src/App.tsx\nimport { useEffect } from 'react'\nimport { init } from 'autotel-web'\n\nfunction App() {\n  useEffect(() => {\n    init({ service: 'my-react-app' })\n  }, [])\n\n  return <div>Your app</div>\n}\n```\n\n### Next.js App Router (SSR-Safe)\n\n```typescript\n// app/telemetry-init.tsx (Client Component)\n'use client'\n\nimport { useEffect } from 'react'\nimport { init } from 'autotel-web'\n\nexport function TelemetryInit() {\n  useEffect(() => {\n    init({ service: 'my-nextjs-app' })\n  }, [])\n\n  return null\n}\n\n// app/layout.tsx\nimport { TelemetryInit } from './telemetry-init'\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>\n        <TelemetryInit />\n        {children}\n      </body>\n    </html>\n  )\n}\n```\n\n### Next.js Pages Router\n\n```typescript\n// pages/_app.tsx\nimport { useEffect } from 'react'\nimport { init } from 'autotel-web'\nimport type { AppProps } from 'next/app'\n\nexport default function App({ Component, pageProps }: AppProps) {\n  useEffect(() => {\n    init({ service: 'my-nextjs-app' })\n  }, [])\n\n  return <Component {...pageProps} />\n}\n```\n\n### Remix\n\n```typescript\n// app/entry.client.tsx\nimport { RemixBrowser } from '@remix-run/react'\nimport { startTransition, StrictMode } from 'react'\nimport { hydrateRoot } from 'react-dom/client'\nimport { init } from 'autotel-web'\n\n// Initialize before hydration\ninit({ service: 'my-remix-app' })\n\nstartTransition(() => {\n  hydrateRoot(\n    document,\n    <StrictMode>\n      <RemixBrowser />\n    </StrictMode>\n  )\n})\n```\n\n### Vue\n\n```typescript\n// src/main.ts\nimport { createApp } from 'vue'\nimport { init } from 'autotel-web'\nimport App from './App.vue'\n\ninit({ service: 'my-vue-app' })\n\ncreateApp(App).mount('#app')\n```\n\n### Vanilla JavaScript\n\n```html\n<!-- index.html -->\n<script type=\"module\">\n  import { init } from 'autotel-web'\n\n  init({ service: 'my-vanilla-app' })\n\n  // Now all fetch calls include traceparent headers\n  fetch('/api/data')\n    .then(res => res.json())\n    .then(data => console.log(data))\n</script>\n```\n\n## W3C Trace Context Propagation\n\nautotel-web **implements the W3C Trace Context format directly**, without pulling in the OpenTelemetry propagator. It generates and injects `traceparent` headers on all outgoing HTTP requests using native browser APIs (`crypto.getRandomValues()`).\n\n### Header Format\n\n```\ntraceparent: 00-{trace-id}-{span-id}-{trace-flags}\n```\n\n**Example:**\n```\ntraceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\n```\n\n- `00` - Version\n- `4bf92f3577b34da6a3ce929d0e0e4736` - Trace ID (128-bit hex)\n- `00f067aa0ba902b7` - Span ID (64-bit hex)\n- `01` - Trace flags (sampled=1)\n\n### Verification\n\nYou can verify the header is being sent using browser DevTools:\n\n1. Open DevTools → Network tab\n2. Make a fetch/XHR request\n3. Check Request Headers\n4. Look for `traceparent` header\n\n## Backend Integration\n\n### Automatic Extraction (Express)\n\nAutotel automatically extracts `traceparent` from incoming requests:\n\n```typescript\nimport express from 'express'\nimport { init, trace } from 'autotel'\n\ninit({\n  service: 'my-api',\n  endpoint: 'http://localhost:4318'\n})\n\nconst app = express()\n\napp.get('/api/users/:id', async (req, res) => {\n  // Parent context is automatically extracted from req.headers.traceparent\n  const user = await trace(async () => {\n    return db.users.findById(req.params.id)\n  })()\n\n  res.json(user)\n})\n```\n\n### Manual Extraction (Next.js API Routes)\n\nFor frameworks where automatic extraction doesn't work, use `extractTraceContext`:\n\n```typescript\n// app/api/users/route.ts (Next.js App Router)\nimport { init } from 'autotel'\nimport { context, trace as otelTrace } from '@opentelemetry/api'\nimport { W3CTraceContextPropagator } from '@opentelemetry/core'\n\ninit({ service: 'my-api', endpoint: 'http://localhost:4318' })\n\nconst propagator = new W3CTraceContextPropagator()\n\nexport async function GET(request: Request) {\n  // Extract parent context from headers\n  const parentContext = propagator.extract(\n    context.active(),\n    request.headers,\n    {\n      get: (headers, key) => headers.get(key) ?? undefined,\n      keys: (headers) => Array.from(headers.keys()),\n    }\n  )\n\n  // Run in extracted context\n  return context.with(parentContext, async () => {\n    const tracer = otelTrace.getTracer('my-api')\n\n    return tracer.startActiveSpan('fetchUsers', async (span) => {\n      try {\n        const users = await db.users.findAll()\n        span.end()\n        return Response.json(users)\n      } catch (error) {\n        span.recordException(error)\n        span.end()\n        throw error\n      }\n    })\n  })\n}\n```\n\n## API Reference\n\n### `init(config)`\n\nInitialize the browser SDK. Call once, client-side only.\n\n```typescript\ninterface AutotelWebConfig {\n  /** Service name for the browser application */\n  service: string\n\n  /** Enable fetch instrumentation (default: true) */\n  instrumentFetch?: boolean\n\n  /** Enable XMLHttpRequest instrumentation (default: true) */\n  instrumentXHR?: boolean\n\n  /** Enable debug logging (default: false) */\n  debug?: boolean\n\n  /**\n   * OTLP endpoint for exporting browser spans.\n   * When set, a real span is sent via sendBeacon for each fetch,\n   * so the traceparent spanId exists in the collector.\n   * Use '' for same-origin (requires /v1/traces proxy).\n   */\n  endpoint?: string\n\n  /** Privacy controls for traceparent header injection */\n  privacy?: PrivacyConfig\n\n  /**\n   * Business-context baggage propagated end-to-end as a W3C `baggage` header.\n   * Set values at runtime with `setBaggage()` (e.g. `tenant.id` after login).\n   */\n  baggage?: {\n    /** Initial entries applied at init() (e.g. tenant from the subdomain) */\n    initial?: Record<string, string>\n    /** Cross-origin destinations allowed to receive baggage (same-origin always allowed) */\n    allowedOrigins?: string[]\n  }\n}\n\ninterface PrivacyConfig {\n  /** Only inject traceparent on these origins (whitelist) */\n  allowedOrigins?: string[]\n\n  /** Never inject traceparent on these origins (blacklist) */\n  blockedOrigins?: string[]\n\n  /** Respect Do Not Track browser setting */\n  respectDoNotTrack?: boolean\n\n  /** Respect Global Privacy Control signal */\n  respectGPC?: boolean\n}\n```\n\n**Example:**\n\n```typescript\ninit({\n  service: 'my-spa',\n  debug: false,\n  privacy: {\n    allowedOrigins: ['api.myapp.com'],\n    respectDoNotTrack: true\n  }\n})\n```\n\n### `setBaggage(record)` / `clearBaggage(key?)`\n\nAttach business context (e.g. `tenant.id`) that propagates **end-to-end**. Every subsequent instrumented request carries it as a W3C `baggage` header, and every browser-recorded span is tagged with it. On the backend, autotel's `BaggageSpanProcessor` copies the entries onto server spans — so a single attribute appears on browser **and** server spans in the same trace.\n\n`setBaggage()` merges additively (like Sentry `setTags` / Datadog `setGlobalContextProperty`); tenant is just a key, so the same API later carries `user.id`, plan tier, region, etc.\n\n```typescript\nimport { init, setBaggage, clearBaggage } from 'autotel-web'\n\ninit({ service: 'my-spa', endpoint: 'https://collector.example.com' })\n\n// After login or a tenant switch — values known at runtime, not at init():\nsetBaggage({ 'tenant.id': 'acme' })\n\n// On logout:\nclearBaggage()              // clear everything\nclearBaggage('tenant.id')   // or remove a single key\n```\n\n**Backend (autotel Node) — pick the attribute key you want:**\n\n```typescript\ninit({ service: 'my-api', endpoint: '...', baggage: '' })   // → bare `tenant.id` on server spans\ninit({ service: 'my-api', endpoint: '...', baggage: true }) // → `baggage.tenant.id` (prefixed)\n```\n\n**Security — fail-closed:** baggage is sent **only to same-origin** requests unless you list a destination in `baggage.allowedOrigins`. This keeps customer-identifying values (e.g. `tenant.id`) from leaking to third-party origins (analytics, CDNs). Baggage also never travels wider than `traceparent` — it inherits all `privacy` suppression (DNT/GPC/blocked origins). Local browser spans are always tagged regardless of destination (that telemetry is yours and never leaves your collector).\n\n```typescript\ninit({\n  service: 'my-spa',\n  baggage: { allowedOrigins: ['api.example.com'] }, // cross-origin opt-in\n})\n```\n\n### `initFull(config)` (full mode)\n\nInitialize full browser tracing. Import from `autotel-web/full`. Call once, client-side only.\n\n```typescript\ninterface AutotelWebFullConfig {\n  service: string\n  endpoint?: string                    // OTLP traces URL (e.g. https://api.example.com/v1/traces)\n  spanProcessor?: SpanProcessor        // Custom processor instead of endpoint\n  sampleRate?: number                  // 0-1, e.g. 0.1 in production\n  sampler?: Sampler                    // Custom sampler (overrides sampleRate)\n  captureNavigation?: boolean          // default true\n  captureFetch?: boolean               // default true\n  captureXHR?: boolean                 // default true\n  captureNetworkTiming?: boolean       // http.client.network_timing events (default true)\n  captureErrors?: boolean              // unhandled errors → span.recordException (default true)\n  captureWebVitals?: boolean          // LCP, INP, CLS, FCP, TTFB as web_vitals span (default true)\n  webVitals?: { reportAllChanges?: boolean }  // pass through to web-vitals (default false)\n  captureLongTasks?: boolean          // long-task spans (main thread >= 50ms); opt-in (default false)\n  copyHttpSpanAttributesToEvent?: boolean\n  userInteraction?: { enabled: boolean; selectors?: string[] }\n  privacy?: PrivacyConfig\n  debug?: boolean\n}\n```\n\n### `trace(fn)` and `trace(ctx => fn)`\n\nWrap functions with automatic tracing.\n\n**Direct Pattern (no context access):**\n\n```typescript\nimport { trace } from 'autotel-web'\n\nexport const fetchUser = trace(async (id: string) => {\n  const response = await fetch(`/api/users/${id}`)\n  return response.json()\n})\n\n// Usage\nconst user = await fetchUser('123')\n```\n\n**Factory Pattern (with context access):**\n\n```typescript\nexport const fetchUser = trace(ctx => async (id: string) => {\n  // ctx.traceId, ctx.spanId available (lean mode)\n  const response = await fetch(`/api/users/${id}`)\n  return response.json()\n})\n\n// Usage\nconst user = await fetchUser('123')\n```\n\nFor **custom attributes and real spans** in the browser, use **full mode** (`autotel-web/full`): `setAttribute`, `addEvent`, and `span()` operate on the active OTel span.\n\n### `span(name, fn)` (full mode only)\n\nCreate a manual span. Import from `autotel-web/full`:\n\n```typescript\nimport { span } from 'autotel-web/full'\n\nconst result = await span('processData', (s) => {\n  s.setAttribute('data.size', data.length)\n  const out = processData(data)\n  s.end()\n  return out\n})\n```\n\n### `setAttribute(key, value)` / `addEvent(name, attributes)` (full mode only)\n\nSet attributes or add events on the active span. Import from `autotel-web/full`.\n\n### `getActiveContext()`\n\nGet the current active trace context:\n\n```typescript\nimport { getActiveContext } from 'autotel-web'\n\nconst ctx = getActiveContext()\nif (ctx) {\n  console.log('Trace ID:', ctx.traceId)\n  console.log('Span ID:', ctx.spanId)\n}\n```\n\n## Privacy Controls\n\nautotel-web includes built-in privacy controls to ensure compliance with GDPR, CCPA, and other privacy regulations. Control which origins receive `traceparent` headers and respect user privacy preferences.\n\n### Privacy Configuration\n\n```typescript\ninterface PrivacyConfig {\n  /** Only inject traceparent on these origins (whitelist) */\n  allowedOrigins?: string[]\n\n  /** Never inject traceparent on these origins (blacklist) */\n  blockedOrigins?: string[]\n\n  /** Respect Do Not Track browser setting */\n  respectDoNotTrack?: boolean\n\n  /** Respect Global Privacy Control signal */\n  respectGPC?: boolean\n}\n```\n\n### Example: Restrict to First-Party APIs\n\nOnly inject `traceparent` on your own API endpoints:\n\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    allowedOrigins: ['api.myapp.com', 'myapp.com']\n  }\n})\n\n// ✅ Injects traceparent\nfetch('https://api.myapp.com/users')\n\n// ❌ Does NOT inject traceparent (not in allowlist)\nfetch('https://external-api.com/data')\n```\n\n### Example: Block Third-Party Analytics\n\nBlock `traceparent` injection on analytics and tracking domains:\n\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    blockedOrigins: [\n      'analytics.google.com',\n      'facebook.com',\n      'mixpanel.com',\n      'segment.io'\n    ]\n  }\n})\n\n// ✅ Injects traceparent (not blocked)\nfetch('https://api.myapp.com/users')\n\n// ❌ Does NOT inject traceparent (blocked)\nfetch('https://analytics.google.com/collect')\n```\n\n### Example: Respect User Privacy Signals\n\nRespect Do Not Track (DNT) and Global Privacy Control (GPC):\n\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    respectDoNotTrack: true,  // Disable tracing if user has DNT enabled\n    respectGPC: true           // Disable tracing if user has GPC enabled\n  }\n})\n\n// If user has DNT or GPC enabled:\n// ❌ NO traceparent headers injected on ANY requests\n```\n\n### Example: Combined Privacy Rules\n\nCombine multiple privacy controls for fine-grained control:\n\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    // Only inject on these origins\n    allowedOrigins: ['myapp.com', 'api.myapp.com'],\n\n    // BUT never inject on these (even if in allowlist)\n    blockedOrigins: ['analytics.myapp.com'],\n\n    // AND respect user's privacy preferences\n    respectDoNotTrack: true,\n    respectGPC: true\n  }\n})\n```\n\n### Decision Priority\n\nPrivacy checks follow this order:\n\n1. **Do Not Track** - If enabled and `respectDoNotTrack: true`, block ALL injection\n2. **Global Privacy Control** - If enabled and `respectGPC: true`, block ALL injection\n3. **Blocklist** - If origin matches `blockedOrigins`, block injection\n4. **Allowlist** - If `allowedOrigins` is set, ONLY allow those origins\n5. **Default** - Allow injection (backward compatible)\n\n### Origin Matching\n\nOrigins are matched using **substring matching** for flexibility:\n\n```typescript\ninit({\n  privacy: {\n    allowedOrigins: ['myapp.com']\n  }\n})\n\n// ✅ Matches (contains \"myapp.com\")\nfetch('https://myapp.com/api')\nfetch('https://api.myapp.com/users')\nfetch('https://admin.myapp.com/dashboard')\n\n// ❌ Does NOT match\nfetch('https://otherapp.com/api')\n```\n\n**Case-insensitive:** Origins are normalized to lowercase before matching.\n\n### GDPR & CCPA Compliance\n\nWhen handling EU or California users, consider these configurations:\n\n**Strict Compliance (Recommended):**\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    allowedOrigins: ['myapp.com'],        // First-party only\n    respectDoNotTrack: true,               // Honor DNT\n    respectGPC: true                       // Honor GPC\n  }\n})\n```\n\n**Balanced Approach:**\n```typescript\ninit({\n  service: 'my-app',\n  privacy: {\n    blockedOrigins: [\n      'analytics.google.com',\n      'facebook.com',\n      'doubleclick.net'\n    ],\n    respectGPC: true  // Respect explicit privacy request\n  }\n})\n```\n\n### Debug Logging\n\nEnable debug logging to see privacy decisions:\n\n```typescript\ninit({\n  service: 'my-app',\n  debug: true,  // <-- Enable debug logging\n  privacy: {\n    blockedOrigins: ['analytics.google.com']\n  }\n})\n\n// Console output:\n// [autotel-web] Initialized successfully { service: 'my-app', privacyEnabled: true, ... }\n// [autotel-web] Skipped traceparent on fetch (privacy): https://analytics.google.com/collect Origin is in blockedOrigins list\n// [autotel-web] Injected traceparent on fetch: https://api.myapp.com/users 00-4bf92f...\n```\n\n### Troubleshooting Privacy Issues\n\n**Headers not being injected when expected:**\n\n1. Check if DNT or GPC is enabled in your browser\n2. Verify origin is in `allowedOrigins` (if configured)\n3. Verify origin is NOT in `blockedOrigins`\n4. Enable debug logging to see decision reasons\n\n**Headers still being injected when blocked:**\n\n1. Ensure privacy config is passed correctly to `init()`\n2. Check that `init()` was only called once (subsequent calls are ignored)\n3. Verify origin matching is correct (case-insensitive substring matching)\n\n**Testing Privacy Controls:**\n\n```typescript\n// For unit tests, you can access the privacy manager\nimport { getPrivacyManager } from 'autotel-web'\n\nconst manager = getPrivacyManager()\nif (manager) {\n  const shouldInject = manager.shouldInjectTraceparent('https://api.myapp.com')\n  console.log('Should inject:', shouldInject)\n}\n```\n\n**Checking Browser Privacy Settings:**\n\n```javascript\n// Check if Do Not Track is enabled\nconsole.log('DNT:', navigator.doNotTrack) // '1' = enabled, '0' = disabled\n\n// Check if Global Privacy Control is enabled\nconsole.log('GPC:', navigator.globalPrivacyControl) // true/false/undefined\n```\n\n### Advanced: Custom Privacy Logic\n\nFor advanced use cases, you can import and use the `PrivacyManager` directly:\n\n```typescript\nimport { PrivacyManager } from 'autotel-web/privacy'\n\nconst manager = new PrivacyManager({\n  allowedOrigins: ['myapp.com'],\n  respectDoNotTrack: true\n})\n\n// Check if injection should happen for a specific URL\nconst shouldInject = manager.shouldInjectTraceparent('https://api.myapp.com/users')\nconsole.log('Should inject:', shouldInject)\n\n// Get denial reason (for debugging)\nimport { getDenialReason } from 'autotel-web/privacy'\nconst reason = getDenialReason(manager, 'https://blocked.com/api')\nconsole.log('Denial reason:', reason)\n// Output: \"Origin https://blocked.com is not in allowedOrigins list\"\n```\n\n## Using with Other SDKs\n\n### Sentry\n\nautotel-web and Sentry can coexist. Both will instrument fetch/XHR.\n\n**Recommendation:** Initialize Sentry first, then autotel-web.\n\n```typescript\nimport * as Sentry from '@sentry/browser'\nimport { init } from 'autotel-web'\n\n// 1. Initialize Sentry first\nSentry.init({\n  dsn: 'YOUR_SENTRY_DSN',\n  tracesSampleRate: 1.0,\n})\n\n// 2. Then initialize autotel-web\ninit({ service: 'my-app' })\n```\n\nSentry's instrumentation typically preserves existing `traceparent` headers, so both should work together.\n\n### Datadog RUM\n\nSimilar to Sentry, initialize Datadog RUM first:\n\n```typescript\nimport { datadogRum } from '@datadog/browser-rum'\nimport { init } from 'autotel-web'\n\n// 1. Initialize Datadog RUM first\ndatadogRum.init({\n  applicationId: 'YOUR_APP_ID',\n  clientToken: 'YOUR_CLIENT_TOKEN',\n  site: 'datadoghq.com',\n  service: 'my-app',\n  sessionSampleRate: 100,\n  sessionReplaySampleRate: 100,\n  trackUserInteractions: true,\n  trackResources: true,\n  trackLongTasks: true,\n})\n\n// 2. Then initialize autotel-web\ninit({ service: 'my-app' })\n```\n\n### Conflicts\n\nIf you experience conflicts (e.g., duplicate instrumentation or missing headers):\n\n**Option 1:** Choose one SDK for distributed tracing\n- For full RUM (errors, session replay, performance): Use vendor SDK only\n- For distributed tracing only: Use autotel-web only\n\n**Option 2:** Disable fetch/XHR instrumentation in autotel-web:\n\n```typescript\ninit({\n  service: 'my-app',\n  instrumentFetch: false,\n  instrumentXHR: false\n})\n```\n\nThen manually inject `traceparent` headers:\n\n```typescript\nimport { getActiveContext } from 'autotel-web'\n\nconst ctx = getActiveContext()\nif (ctx) {\n  fetch('/api/data', {\n    headers: {\n      traceparent: `00-${ctx.traceId}-${ctx.spanId}-01`\n    }\n  })\n}\n```\n\n## SSR Safety\n\nautotel-web is **SSR-safe** by design. All browser APIs (WebTracerProvider, ZoneContextManager) are accessed inside `init()`, not at module load time.\n\n### Safe: ✅\n\n```typescript\n// ✅ Safe: init() called in useEffect (client-side only)\nuseEffect(() => {\n  init({ service: 'my-app' })\n}, [])\n\n// ✅ Safe: init() called in entry.client.tsx (Remix)\ninit({ service: 'my-app' })\n\n// ✅ Safe: init() called in 'use client' component (Next.js)\n'use client'\ninit({ service: 'my-app' })\n```\n\n### Unsafe: ❌\n\n```typescript\n// ❌ Unsafe: init() at module top-level\nimport { init } from 'autotel-web'\ninit({ service: 'my-app' })  // This runs during SSR!\nexport default function MyComponent() { ... }\n```\n\n## Bundle Size\n\n- **Lean mode** (`autotel-web`): **~1.6KB gzipped**. Zero dependencies. Pure JavaScript using native `crypto.getRandomValues()`.\n- **Full mode** (`autotel-web/full`): ~40-50KB gzipped (includes OpenTelemetry SDK and instrumentations). No Zone.js. Use when you need real spans and export from the browser.\n\n## Architecture: Header-Only Approach\n\nautotel-web takes a **minimalist approach** to browser tracing:\n\n### What it DOES:\n✅ Generates W3C `traceparent` headers (`00-{traceId}-{spanId}-01`)\n✅ Automatically injects headers on fetch/XHR calls\n✅ Provides a nice DX with `trace()` wrappers\n\n### What it DOESN'T do:\n❌ Create real spans in the browser\n❌ Measure timing/duration\n❌ Export to collectors\n❌ Use OpenTelemetry SDKs\n\n### Why?\n\nThe browser's job is **trace propagation only**. Your backend (using Autotel) receives the `traceparent` header and creates the real spans with timing, errors, and full context.\n\nThis approach:\n- Keeps bundle size tiny (1.6KB vs 55KB for full OTel)\n- Avoids CORS issues (no exporter endpoints)\n- Eliminates Zone.js conflicts (Angular, etc.)\n- Simplifies maintenance (no OTel version updates)\n\nThe backend does all the real work, which is where you want detailed telemetry anyway!\n\n## Why Not Use OpenTelemetry in the Browser?\n\nThe official OpenTelemetry browser SDK (`@opentelemetry/sdk-trace-web`) is a **full-featured tracing implementation** with:\n- Real span creation and lifecycle management\n- Context propagation via Zone.js (~15KB)\n- Span processors and exporters\n- Automatic instrumentations\n- **Result: ~55KB gzipped**\n\n### When to Use Full OTel Browser SDK\n\n✅ You need to **export spans directly from the browser** to a collector\n✅ You need **client-side performance timing** (Core Web Vitals, resource timing)\n✅ You're building a **monitoring/observability product** that requires browser-side analysis\n✅ You need **detailed client-side error tracking** with full span context\n\n### When to Use autotel-web (This Package)\n\n✅ You only need **trace correlation** between frontend and backend → use **lean mode** (`init` from `autotel-web`)\n✅ You want **real browser spans and network timing** but **one install and no Zone.js** → use **full mode** (`initFull` from `autotel-web/full`)\n✅ Your backend **already exports to a collector** (OTLP, Datadog, etc.)\n✅ You want **minimal bundle size impact** (~1.6KB for lean vs ~55KB for full OTel with Zone)\n✅ You want to **avoid Zone.js** (conflicts with Angular, adds complexity)\n✅ You prefer **zero dependencies** and simpler maintenance\n\n**Bottom Line:** For trace correlation only, use lean mode. For real browser spans and network timing with a single install and no Zone.js, use full mode (`autotel-web/full`).\n\n## Performance Impact\n\nautotel-web has **effectively zero performance overhead**:\n\n✅ **No promise wrapping** - Your async code runs unchanged\n✅ **No timer patching** - setTimeout/setInterval work normally\n✅ **No Zone.js** - No global async context tracking\n✅ **No span objects** - No memory allocation for browser spans\n✅ **Header-only** - Just adds one HTTP header per request\n\n**What it does:**\n- Patches `window.fetch` and `XMLHttpRequest.prototype.open` at initialization\n- Generates a 32-byte header value using `crypto.getRandomValues()`\n- Adds the header to outgoing requests\n\n**Benchmark:**\n- Header generation: ~0.01ms\n- Network overhead: +45 bytes per request (traceparent header)\n- Memory: ~2KB for the SDK code\n\n**Real-world impact:** Imperceptible. The network request itself takes orders of magnitude longer than the header injection.\n\n## Context Propagation Without Zone.js\n\nBrowser tracing with OpenTelemetry typically needs **context propagation**: when you start a span (e.g., \"user clicked button\"), any async work that follows: fetch, setTimeout, Promise chains: should run in that same trace context so the backend sees one continuous trace. In Node.js, OpenTelemetry uses AsyncLocalStorage to keep context across async boundaries. In the browser, there is no built-in \"async context\" that follows every boundary. **Zone.js** is the usual way to get that: it patches globals (setTimeout, Promise, fetch, etc.) so that any code that runs \"later\" still runs inside the same zone: and thus the same trace context.\n\nThis section explains when you might need Zone.js, its pitfalls, and how autotel-web gets you reliable tracing without it.\n\n### When You Might Think You Need Zone.js\n\nYou might think you need **async context that survives every boundary** when:\n\n- You start a span in one place (e.g., click handler) and want **all** follow-up work: nested setTimeout, microtasks, fetch callbacks, requestAnimationFrame: to stay under that span without you wrapping each boundary\n- You have deep or framework-driven async (e.g., React state updates → effects → fetch → more effects) and you can't or don't want to wrap every step\n- You rely on \"current span\" or \"current trace ID\" in code that runs in callbacks you don't control (e.g., third-party lib that calls your callback after a delay)\n\nIn those cases, Zone.js gives you one execution context that follows the entire async tree. OpenTelemetry can attach the active span to that zone, and every callback runs in the same context.\n\n### Pitfalls of Zone.js\n\n**1. Bundle size and cost**\nZone.js is on the order of ~12-15 KB minified/gzipped. For a browser SDK that aims to be small (autotel-web lean is ~1.6 KB), adding Zone significantly increases size for every user.\n\n**2. Global patching**\nZone.js patches `setTimeout`, `setInterval`, `Promise`, `fetch`, `XHR`, `addEventListener`, and more. That can:\n\n- Conflict with other libraries that also patch or depend on \"vanilla\" behavior\n- Cause hard-to-debug issues in frameworks (e.g., Angular uses Zone; other frameworks don't and sometimes assume no patching)\n- Break or confuse code that relies on exact timing or microtask ordering\n\n**3. Framework and tooling friction**\nSome bundlers, test runners, and frameworks have had issues with Zone (e.g., Next.js, Vite, or Jest in the past). You can end up debugging \"why is my context wrong only in tests\" or \"why does this break in production build.\"\n\n**4. Implicit behavior**\nContext \"just following\" everywhere is convenient but implicit. When something goes wrong (wrong span, wrong trace), the cause is not obvious: it's \"whatever Zone did.\" Explicit propagation (e.g., \"this span covers this function\") is easier to reason about and debug.\n\n**5. Maintenance**\nZone.js is not part of the web platform. New APIs (e.g., new promise helpers, scheduler APIs) may need new patches. You depend on the Zone maintainers and the OpenTelemetry Zone plugin to keep up.\n\n### How autotel-web Works Without Zone.js\n\nautotel-web is designed so you can get **useful, reliable browser → backend tracing** without Zone.js. It does that in three ways: lean mode, full mode with targeted instrumentation, and an explicit `trace()` API.\n\n#### 1. Lean Mode: No Real Browser Spans\n\nIn **lean mode** (`init()` from `autotel-web`), the browser does **not** create real OpenTelemetry spans. It only:\n\n- Injects the W3C `traceparent` header on every `fetch` and XHR request\n\nSo the \"context\" that matters is on the **request**: the backend receives `traceparent`, continues the trace, and does all span creation and export. There is no \"current span\" in the browser to lose across async boundaries. You don't need Zone for this.\n\n**Use lean mode when:** You care about distributed traces (browser → API → services) and are fine with the backend owning the spans.\n\n#### 2. Full Mode: Instrumentation That Propagates on the Wire\n\nIn **full mode** (`initFull()` from `autotel-web/full`), the browser **does** create real spans (navigation, fetch/XHR, Web Vitals, etc.). Context can be lost across arbitrary async boundaries (e.g., `setTimeout`), but autotel-web focuses on the boundaries that matter for tracing:\n\n- **Fetch / XHR**: The OpenTelemetry fetch and XHR instrumentations wrap the real `fetch` and `XMLHttpRequest`. When your code calls `fetch()`, the instrumentation starts a span and injects `traceparent` into the request. When the response comes back, the callback runs in the same invocation chain as the one that called `fetch`, so the span is still active and can be ended. You don't cross a \"lost\" boundary in the common case.\n- **Document load / navigation**: Handled by the document-load instrumentation; the span covers the load and its natural async work.\n\nSo for \"user did something → app called fetch → backend continued the trace,\" context is preserved **along the path that the instrumentation controls**. You don't need Zone for that.\n\n**Use full mode when:** You want real browser spans (and optional Web Vitals, errors, etc.) and your critical paths are \"start → fetch/XHR → done\" or \"navigation.\"\n\n#### 3. Explicit `trace()` for Critical Paths\n\nWhen you have a flow that **does** cross boundaries where context would be lost (e.g., \"click → setTimeout → fetch → update UI\"), you can wrap the whole logical operation in **one** `trace()`:\n\n```typescript\nimport { trace } from 'autotel-web'\n\nconst handleConvert = trace(ctx => async () => {\n  setLoading(true)\n  await new Promise(r => setTimeout(r, 0))  // context still inside this trace()\n  const res = await fetch('/api/convert', { ... })\n  const data = await res.json()\n  setResult(data)\n  setLoading(false)\n})\n```\n\nBecause the entire flow is inside a single `trace()` call, the fetch call runs \"under\" that logical span; the fetch instrumentation will see the active context (in full mode) or at least the header injection (in lean mode) keeps the same trace ID on the request. You don't need Zone to keep context inside that one async function.\n\n**Use explicit `trace()` when:** You have a clear \"one user action → one chain of async work\" and you're okay wrapping that chain once.\n\n### Summary: Zone.js vs autotel-web\n\n| Need | Zone.js | autotel-web approach |\n|------|--------|------------------------|\n| Trace from browser to backend | Not required | Lean mode: inject `traceparent`; backend continues trace. |\n| Real browser spans (navigation, fetch, Web Vitals) | Not required for the common path | Full mode: instrument fetch/XHR and document load so context is preserved on the wire and in the main async chain. |\n| Context across arbitrary async (setTimeout, third‑party callbacks) | Helps | Explicit `trace()` around the whole flow; or accept best-effort. |\n| Small bundle, no global patching | N/A | Lean mode is ~1.6 KB; full mode avoids Zone. |\n| Fewer framework/tooling issues | N/A | No Zone dependency. |\n\n**Bottom line:** You might need Zone.js if you want \"current span\" to follow **every** async boundary with no explicit wrapping. autotel-web avoids Zone by: (1) not creating real browser spans in lean mode, (2) in full mode, instrumenting the boundaries that matter for tracing (fetch, XHR, load), and (3) offering an explicit `trace()` so you can wrap critical paths once. That covers most real-world needs without Zone's pitfalls.\n\n## Examples\n\nSee the `apps/` directory at the repository root for complete working examples:\n\n- **example-web-vanilla** - Simple HTML + script tag example showing traceparent header injection\n\nMore examples coming soon:\n- React + Vite - Client-side React app\n- Next.js - App Router with SSR\n- Remix - Full-stack Remix app\n- Vue - Vue 3 application\n\n## Troubleshooting\n\n### Headers not appearing\n\n1. Check that `init()` was called:\n```typescript\ninit({ service: 'my-app', debug: true })  // Enable debug logging\n```\n\n2. Verify in DevTools:\n   - Open Network tab\n   - Click on a request\n   - Check \"Request Headers\" for `traceparent`\n\n3. Ensure fetch/XHR instrumentation is enabled:\n```typescript\ninit({\n  service: 'my-app',\n  instrumentFetch: true,  // default: true\n  instrumentXHR: true,    // default: true\n})\n```\n\n### Backend not receiving context\n\n1. Check that backend is using Autotel or OpenTelemetry\n2. Verify CORS headers allow `traceparent`:\n```javascript\n// Express CORS config\napp.use(cors({\n  exposedHeaders: ['traceparent', 'tracestate']\n}))\n```\n\n3. For custom frameworks, manually extract context (see \"Backend Integration\" above)\n\n### Browser spans not appearing in collector\n\nIf you've set `endpoint` but spans don't appear:\n\n1. Check the proxy is working: `curl -X POST http://localhost:8787/v1/traces -H 'Content-Type: application/json' -d '{}'`\n2. Verify Vite proxy config includes `/v1/traces`\n3. Enable `debug: true` — you should see `[autotel-web] flushSpans: sending N span(s)` in the console\n\n### Vite dev server caching stale autotel-web\n\nWhen using `file:` linked autotel packages in development, Vite caches pre-bundled dependencies in `node_modules/.vite/`. After rebuilding autotel-web, clear this cache:\n\n```bash\nrm -rf node_modules/.vite\n# or for monorepos\nrm -rf apps/web/node_modules/.vite\n```\n\nThen restart the Vite dev server. Without this, the browser may run an old version of autotel-web even after rebuilding.\n\n### TypeScript errors\n\nEnsure you're using TypeScript 5.0+ and have `@types/node` installed:\n\n```bash\npnpm add -D typescript@^5.0.0 @types/node\n```\n\n## License\n\nApache-2.0 © Jag Reehal\n\n## Related Packages\n\n- [autotel](../autotel) - Node.js OpenTelemetry SDK\n- [autotel-edge](../autotel-edge) - Edge runtime SDK (Cloudflare Workers, Vercel Edge)\n- [autotel-subscribers](../autotel-subscribers) - Event subscribers (PostHog, Mixpanel, etc.)\n\n---\n\n**Questions?** Open an issue at [github.com/jagreehal/autotel](https://github.com/jagreehal/autotel/issues)\n","readmeFilename":"README.md"}