{"_id":"watchfire","_rev":"17-833d0cf952333224ea79522119470656","name":"watchfire","dist-tags":{"latest":"1.3.0"},"versions":{"0.0.1":{"name":"watchfire","version":"0.0.1","keywords":["error-tracking","source-maps","nextjs","monitoring","sentry-alternative"],"license":"MIT","_id":"watchfire@0.0.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire#readme","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"dist":{"shasum":"9073de596acb4bb921724f47a109bc7086041141","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.0.1.tgz","fileCount":2,"integrity":"sha512-BhdVbOPM24AW9bt5AFPqA2vcywjjhxHMD23KJ2+PamQmt3p+B83cPPoZd3EDN9forBEq8pdEIZpjW7dqQbqvzg==","signatures":[{"sig":"MEQCIEMd90ueNqwspUvTzMj7xUSJSi80W3dMfhLK/E9cMv3/AiAFuoLf1Yp+4w//1P90nDMmRXwQjA29oje3MOLMEWObfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Lightweight, self-hosted error tracking for Next.js — readable stack traces, no vendor, no second service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.0.1_1787652518349_0.7253073802780388","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"watchfire","version":"0.1.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.1.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"b9e06f284745e9ffd79fff16afeb47acd229edea","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.1.0.tgz","fileCount":37,"integrity":"sha512-zVVBeZtlTHSiDiTAugGaCj7EV2jT2RMcbeqoX6my9N/66lhXsq+a++VovT3mOD0tFAVdM9vUCz+dCrOkD73heg==","signatures":[{"sig":"MEUCICm14QYo7EUbw5hv4jrPLBRcukElU+fJbITeEX0TnOlkAiEA/8wQuCYla1mlKzTUXy/68wJM9gm+TT9GXcYQn37VsAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85791},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"bae2d5c8f618cfff9656d3cdcccd7c79e52d1dba","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.1.0_1787656100218_0.8148078398331553","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"watchfire","version":"0.1.1","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.1.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"04123dd7f166f495424fcb3ce6c8be60b91b82dc","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.1.1.tgz","fileCount":37,"integrity":"sha512-ZrWPJdwPz3Rz32CikTjr7Lk/jrlMhvgTbRSL4Fm4fquD33Cq8SINl0tZblV6U1FnsWzlJyjo5etQN86reIsJbw==","signatures":[{"sig":"MEUCIGiPwSypIqqSJkFQDh+sn1iEGuY4msp1AFUIa/wECvScAiEAvkmBDgHX0hxHTPNnhNNJlmpMEBwohUuw9WBwjN+wygQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86369},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"a8f733a87199cd918b8093a04506d271a2f6368b","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.1.1_1787656746526_0.5301827089543767","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"watchfire","version":"0.2.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.2.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"891a5f3442a3e06588380ee768ffa0552d7f1ebb","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.2.0.tgz","fileCount":37,"integrity":"sha512-mywD0TEyyZ9D9mHWpFJukYthIgIGbGPyuvhcJR/cocultwgRIptkQpEIvgDovpfVy8GUe6J56WaYZCJgCSorzg==","signatures":[{"sig":"MEUCIQDSGLUPUiklLcVuBuYEPkXHivEo2QItu/uaHqdHf9c7UwIgVeoozpFrEhobamQUpV9/NjRsvpUjlHvrKT4Xhb1OCFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89371},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"8fc1d8a4387d0fc7e797fbddaa3534f1c0b8adcd","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.2.0_1787657415349_0.07729258421415675","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"watchfire","version":"0.2.1","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.2.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"1ad26a16daea695c66d9a1fa13fc3e0d745d6f57","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.2.1.tgz","fileCount":37,"integrity":"sha512-Ez7pFzJMsxVAXR7ayJ8BJ95inIJOQCvWpuzC6C/etITnsrDMA0cjfqIAxlfr+yzBbRPYjfos43Bj0O87cXyrrg==","signatures":[{"sig":"MEYCIQCtxIPac70BE1Gt6nvlzPsO8eemnKKDyvekSNUNl1UiHAIhAMhS+PDJ/2aPe4JUhBDCr9x+PFqstbKfUls+1XrFDoRV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90351},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"39b2975746a8c8bfefe781e6a7b8d660f0393180","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.2.1_1787657723333_0.40628236051672273","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"watchfire","version":"0.3.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.3.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"a2478db7ec81effba0c5d14aad3db3a1e8931853","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.3.0.tgz","fileCount":37,"integrity":"sha512-7L/LbSCiBECan0NjqN1uL4jgcFkaW+pfehli/RjG5zSYN4lKHRAZl2QoUWnMAqaeB8eodKpZVRKpv5ddVbG56A==","signatures":[{"sig":"MEUCIQDyeseosbys25b1p6cMO2LiZQ5eqIClDgEr91joerd4dgIgEFRwMJjb/65/SuzkdvBXLLcu89IKClLKvcwzWxHtRlc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92745},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"beb9d30bac0b41f9fdb182e15763b26d5176bdd5","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.3.0_1787660037222_0.5258415580931286","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"watchfire","version":"0.3.1","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.3.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"9c5fb07cd5163cc079986bcf18029eb323a1a2c7","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.3.1.tgz","fileCount":37,"integrity":"sha512-1BZ7qJnxXT26T5LI1z/WfGRFxWmolgFzfDapqr7BiC656zIudKSXfLSBYMqdMfksI9ZhD3Dz42NQfwTtGGardw==","signatures":[{"sig":"MEYCIQDr0KwiPd1nz3Li+PFMj2IQUWtN2wNfDbI+8D9aVlx+pAIhAPDCvMZe2VCyQOXhBNG0XHvA52gJuVjgyxXtw2NcfqJB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93303},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"591a3270bee3f51524fc77f7651d278dc653dd2e","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.3.1_1787661084052_0.5041834317464464","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"watchfire","version":"0.3.2","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.3.2","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"9cd8024d91d3cbfc1dd1cfa5a47b04db0e59a80b","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.3.2.tgz","fileCount":37,"integrity":"sha512-vnbXDo7nozS2hWLDltFRF5ewenUHUmmv+D6gn2oKGcEc5IJ3EQPUJ/rivRFMWLCPaS5vvAjbzPKN+dCVntEWwA==","signatures":[{"sig":"MEUCIQCxmZdMzUeFGVZ/WBlTFvoFyLUOsXVCmXBQ7bextOypHwIgJddZrtU09roGLqet3FAM1uGGOKXmGzEK2whXWOUY3TQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93442},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"13faa8d3add40bd56ef7fb93c10535eb4c578bf6","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.3.2_1787661804230_0.06904944355399234","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"watchfire","version":"0.3.3","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@0.3.3","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"cd4721ee78d6cf7a183e995485a58645a29b272d","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-0.3.3.tgz","fileCount":37,"integrity":"sha512-wywGn2+Ek2dC51OwQDtoG3c3HXtASza4PKwHquqXfhjBCmcAVbcLsGe4OG6RGg0mtkJiuIUU8kO60Pf1AO0OyA==","signatures":[{"sig":"MEYCIQC5cNZ7B2r8ppd7u9R/Px+8juRwKMKarp/tYhTJWPMG8wIhAPvCg9Y65nqYl3kyrl48H7DeZH52AkhOWd0Simns7/U4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94707},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"10a8c5dbef2410c2516f93583c5bebfeaf99cab5","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_0.3.3_1787667976766_0.1947073694788548","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"watchfire","version":"1.0.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.0.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"c0f059cff693f02018134d7358cf7706213092b1","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.0.0.tgz","fileCount":37,"integrity":"sha512-h3KIVZDllqf0Tj+iHbFXDrBafuntNTqQc9W+0SdX8c0dlYtB4H/UoP9n0XTpzlI5lXv94nKKAdYZEqYollpxeg==","signatures":[{"sig":"MEUCICHa3FCKuiy5xYXEDllrTaYGQ9AA1jCLV3pVRAtqHVMuAiEAjal4O4rukFihPegCkMEMY5aQJk9dqXFtUScOL5qprOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91550},"type":"module","engines":{"node":">=20"},"exports":{"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"157034909d34b942351ea1ef7b48063cad0f4e3a","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.0.0_1787668561289_0.00787140357269367","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"watchfire","version":"1.1.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.1.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"84a49bd68a4505ad0413814a7a3cf96635fdb635","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.1.0.tgz","fileCount":43,"integrity":"sha512-W7cqpTveHpxqpPepwK4bbI1PlobXy2SkwgFXpFH/H81zRl8OeU081HsOT/gF8d9VJUDqAaTIB8uV/6ieIs8A+Q==","signatures":[{"sig":"MEUCIEoAQSjgMIYpWHQCPpMjyCzGzDCwSevPqUeNtI47j6BtAiEApoclC0IvW+S2kWqlQtLwQpP59FZiiEq7zuizdWZNOLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97685},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"d7dd32b0d48b82521cf5d04b67cdd4c148e62786","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.1.0_1787677592850_0.17528975487443343","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"watchfire","version":"1.1.1","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.1.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"bd1eb5a1794947bc87ee505c7c3fe74e292e85ac","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.1.1.tgz","fileCount":43,"integrity":"sha512-RYQx21UpbmuQLOhtEG9ok/X/nhuKin3nZaUVM+C9uZiipfi8afM8tFTnlqjRCueaQ7TTwA7fGt7Gpawa3yIN9A==","signatures":[{"sig":"MEUCIQC7dh3UCEmiXV2UMZf3Fd2W0u4jtQ9btGKwfZ2YWR36zgIgE/UtQSak+AwPTpzgBZlUdc2vIoFsoCFpNGLHWZKc2uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97814},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"727be672cadba34ad132a83b3ed140bdfc4b2b9d","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.1.1_1787677711909_0.8382121824012789","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"watchfire","version":"1.1.2","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.1.2","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"f7907a7df6595248a2b68dfc2673b0d655963945","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.1.2.tgz","fileCount":43,"integrity":"sha512-lFUddv43OpZmy79HaQ8oOXWQyWBwGvgIjWTifU7LBX5DVpwRbQuqDwMQSjjXUqXgL1tPeWa+ZVZkRdIkm85TPQ==","signatures":[{"sig":"MEUCIQCdERNEe9aO9U+UEKC7s+4ZQCCc0mav869y7JpRMkR0nQIgIXOjuGYiqsxn5javGAsXOcqPwjNAtmNgPnxvcISp9UQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98201},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"727be672cadba34ad132a83b3ed140bdfc4b2b9d","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.1.2_1787677816983_0.5535090194106473","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"watchfire","version":"1.1.3","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.1.3","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"f1e818f9bfe835905866d00a773fa3ef53959762","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.1.3.tgz","fileCount":43,"integrity":"sha512-oWVVbXFIDph5PQCOJIXkLRcsHA1+QM4H3aThjUqk4RbIlkiDQbSihMLFb/nBURBWW3gVnhnk6Ph4Yijy25wj9g==","signatures":[{"sig":"MEUCIQDlbI1k+u86VStKN3CMyOFQMAI71pQQG1h7Yfg/CZlT0wIgYlqGu43cWpGwvdb8w5TGb56J2HCMdBPbFaoTPFn28a0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98550},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"baa0c5e932ab0c70067d818b66d9d23397c9d44f","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.1.3_1787739058032_0.1944016919996825","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"watchfire","version":"1.2.0","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.2.0","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"462a3b1a14a0919750249f24adb5c9e7fe81981a","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.2.0.tgz","fileCount":43,"integrity":"sha512-nzaFYmH/tzbSlBF9IoJKSCrrjOMYOtx4ivjja6rq4vjWX4nQ97VS4W1A/Yt9EG2EBIGLQGxc1x6h+jMvAJ0lFg==","signatures":[{"sig":"MEQCICsPo05G4L5qNE6OtYvfB28jahGakNsUWhx4QQBI1YWLAiB0/oyxYAFEkQsOKdATb0mHzG9jGcs0hO/MGmH92NMfcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98897},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"3d582fc08446ab310f2e192c34b20c9562d4f12d","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.2.0_1787741665855_0.6020774682609855","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"watchfire","version":"1.2.1","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"license":"MIT","_id":"watchfire@1.2.1","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"homepage":"https://github.com/fieldwork-ai/watchfire","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"bin":{"watchfire":"dist/cli/index.js"},"dist":{"shasum":"66573f501d2c392bfd74b8d9477d194e33d6bc4e","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.2.1.tgz","fileCount":43,"integrity":"sha512-qXJNbfgCGjqiMflxbDgb7/zdIAaZHaf+lQdmqVBbfagBV0db68Gy1ldof2YtODf9AEx43vNrGSc+jPHgMIQX9A==","signatures":[{"sig":"MEQCIBF6FX1Ypm5uoNbt0RxF76B2YtuH5CpRUHcSZhXGACycAiAMU6uERIM50A6K6VRo1Rl5uAfL/GrLrBN6aS7L6KKxrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101526},"type":"module","engines":{"node":">=20"},"exports":{"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"gitHead":"3d582fc08446ab310f2e192c34b20c9562d4f12d","scripts":{"e2e":"playwright test","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","test:e2e":"playwright test","typecheck":"tsc --noEmit","capture:map":"tsx e2e/gen-map-fixture.mjs","capture:stacks":"tsx e2e/capture-stacks.ts","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"repository":{"url":"git+https://github.com/fieldwork-ai/watchfire.git","type":"git"},"_npmVersion":"11.16.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"tsx":"^4.23.12","jsdom":"^30.0.1","vitest":"^3.2.0","esbuild":"^0.28.2","typescript":"^5.9.0","@types/node":"^24.0.0","@types/react":"^19.0.0","@playwright/test":"^1.61.1","@aws-sdk/client-s3":"^3.1117.0"},"peerDependencies":{"react":">=18","@aws-sdk/client-s3":"^3.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aws-sdk/client-s3":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/watchfire_1.2.1_1787741990742_0.2572318185188742","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"watchfire","version":"1.3.0","description":"Self-hosted error tracking for Next.js. A library, not a service.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/fieldwork-ai/watchfire.git"},"homepage":"https://github.com/fieldwork-ai/watchfire","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"type":"module","engines":{"node":">=20"},"exports":{"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./react":{"types":"./dist/react/index.d.ts","default":"./dist/react/index.js"},"./next":{"types":"./dist/next/index.d.ts","default":"./dist/next/index.js"},"./stack":{"types":"./dist/stack/index.d.ts","default":"./dist/stack/index.js"},"./ingest":{"types":"./dist/ingest/index.d.ts","default":"./dist/ingest/index.js"},"./sourcemaps":{"types":"./dist/sourcemaps/index.d.ts","default":"./dist/sourcemaps/index.js"}},"bin":{"watchfire":"dist/cli/index.js"},"scripts":{"build":"tsc -p tsconfig.build.json && chmod +x dist/cli/index.js","prepublishOnly":"npm run build && npm test","typecheck":"tsc --noEmit","test":"vitest run","test:e2e":"playwright test","lint":"tsc --noEmit","capture:stacks":"tsx e2e/capture-stacks.ts","capture:map":"tsx e2e/gen-map-fixture.mjs","e2e":"playwright test"},"peerDependencies":{"@aws-sdk/client-s3":"^3.0.0","react":">=18"},"peerDependenciesMeta":{"@aws-sdk/client-s3":{"optional":true},"react":{"optional":true}},"devDependencies":{"@aws-sdk/client-s3":"^3.1117.0","@playwright/test":"^1.61.1","@types/node":"^24.0.0","@types/react":"^19.0.0","esbuild":"^0.28.2","jsdom":"^30.0.1","tsx":"^4.23.12","typescript":"^5.9.0","vitest":"^3.2.0"},"packageManager":"pnpm@10.28.0","gitHead":"fb49c6f4a1fcffd7aa22bba8208277c5843d845f","_id":"watchfire@1.3.0","bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-R671mu21FZY1xf8rf2fdL8787k6GEuKbhZLw/cL7e05Qxw44FaZohm+mdve1qE/Ou/21tWkZSzIkZORPxwk3Qw==","shasum":"b9adc3177651d0ea7e9855edd7837ca57cc79ca9","tarball":"https://registry.npmjs.org/watchfire/-/watchfire-1.3.0.tgz","fileCount":45,"unpackedSize":114634,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCk3t074V+AhVTdgE2cMuo/UZ9m40YyuLxqnl86F6FDyAIgZjSii+z0rMQy3JOv2iaiaMytYR2yD+vxRfdOzA0Lk8w="}]},"_npmUser":{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"},"directories":{},"maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/watchfire_1.3.0_1788203823568_0.5666719363869708"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T10:08:36.055Z","modified":"2026-08-31T19:17:03.886Z","0.0.1":"2026-08-25T10:08:38.479Z","0.1.0":"2026-08-25T11:08:20.372Z","0.1.1":"2026-08-25T11:19:06.691Z","0.2.0":"2026-08-25T11:30:15.456Z","0.2.1":"2026-08-25T11:35:23.478Z","0.3.0":"2026-08-25T12:13:57.369Z","0.3.1":"2026-08-25T12:31:24.210Z","0.3.2":"2026-08-25T12:43:24.374Z","0.3.3":"2026-08-25T14:26:16.961Z","1.0.0":"2026-08-25T14:36:01.433Z","1.1.0":"2026-08-25T17:06:32.993Z","1.1.1":"2026-08-25T17:08:32.062Z","1.1.2":"2026-08-25T17:10:17.131Z","1.1.3":"2026-08-26T10:10:58.172Z","1.2.0":"2026-08-26T10:54:26.012Z","1.2.1":"2026-08-26T10:59:50.885Z","1.3.0":"2026-08-31T19:17:03.714Z"},"bugs":{"url":"https://github.com/fieldwork-ai/watchfire/issues"},"license":"MIT","homepage":"https://github.com/fieldwork-ai/watchfire","keywords":["error-tracking","source-maps","nextjs","monitoring","self-hosted"],"repository":{"type":"git","url":"git+https://github.com/fieldwork-ai/watchfire.git"},"description":"Self-hosted error tracking for Next.js. A library, not a service.","maintainers":[{"name":"rogersnm","email":"rogersnm@hotmail.co.uk"}],"readme":"# Watchfire\n\nSelf-hosted error tracking for Next.js. A library, not a service.\n\n[![CI](https://github.com/fieldwork-ai/watchfire/actions/workflows/ci.yml/badge.svg)](https://github.com/fieldwork-ai/watchfire/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/watchfire)](https://www.npmjs.com/package/watchfire)\n[![license](https://img.shields.io/npm/l/watchfire)](LICENSE)\n\nWatchfire captures JavaScript errors in your users' browsers, resolves the minified stack traces back to your original source using privately held source maps, gives each error a stable fingerprint for grouping, and hands the result to a callback in your code. Error data stays on your infrastructure, and there's no extra service to run.\n\n```\nnpm install watchfire\n```\n\n## Why\n\nHosted error tracking sends stack traces and user context to a third party, which for many teams means a subprocessor agreement and a vendor review. Self-hosting a full platform (Sentry's stack is Kafka, ClickHouse, Redis, and Postgres) is a lot of infrastructure for what is usually a few dozen events a day.\n\nThe hard part of error tracking is resolving minified stack traces against source maps without making the maps public. That fits in a library. Storage, alerting, and dashboards are left to the tools you already run: watchfire delivers each error as a structured event, and you decide what to store and when to alert.\n\nThere's no UI, no issue workflow, and no analytics.\n\n## How it works\n\n```\nbrowser error ──POST──▶ /api/errors (a route in your app)\n                              │\n                              ▼\n                validate → rate-limit → scrub → parse → resolve → fingerprint\n                              │\n                              ▼\n                        onEvent(event)   ← your code: a DB insert, a log line\n```\n\nOne package, six subpath exports and a CLI:\n\n| Import | Contents |\n| --- | --- |\n| `watchfire/browser` | Client SDK: capture, breadcrumbs, batching, repeat suppression, `flush`. 5 kB minified, 2.3 kB gzipped |\n| `watchfire/ingest` | The route handler, a standard `(Request) => Response` function |\n| `watchfire/next` | `withWatchfire`, wraps `next.config` to wire source maps and the release build id |\n| `watchfire/react` | `reportBoundaryError`, for error boundaries |\n| `watchfire/stack` | Stack parsing (Chrome, Safari, and Firefox formats) and fingerprinting |\n| `watchfire/sourcemaps` | Map stores, the runtime resolver, boot-time registration |\n\nThe build tooling targets Next.js; the runtime is framework-neutral.\n\n## Setup\n\n### 1. The build\n\nIn `next.config.ts`, wrap your config:\n\n```ts\nimport { withWatchfire } from \"watchfire/next\";\n\nconst nextConfig = { /* your config */ };\n\nexport default withWatchfire(nextConfig);\n```\n\nThe wrapper enables source map generation and returns your release id as Next's build id, so maps are stored under the same name the browser reports. The release comes from `NEXT_PUBLIC_RELEASE` (pass `release` to override); without one, Next falls back to its own generated id, so local development needs no configuration. A `generateBuildId` you define yourself is respected and not overwritten.\n\nIn `package.json`, run `watchfire maps` after the build:\n\n```json\n\"scripts\": {\n  \"build\": \"next build && watchfire maps\"\n}\n```\n\n`next build` writes a `.map` file beside every chunk. `watchfire maps` moves the maps into a private directory inside the server output, removes the public pointers, and fails the build if any map remains publicly reachable. Maps are stored under a release id, which defaults to Next's build id.\n\n### 2. The server route\n\nCreate `app/api/errors/route.ts`:\n\n```ts\nimport { createIngestHandler, filesystemStore, defaultMapsDir } from \"watchfire/ingest\";\n\nexport const POST = createIngestHandler({\n  maps: filesystemStore(defaultMapsDir()),\n  onEvent: async (event) => {\n    await db.insertInto(\"client_errors\").values({\n      fingerprint: event.fingerprint,\n      message: event.message,\n      frames: JSON.stringify(event.frames),\n    }).execute();\n  },\n});\n```\n\n`onEvent` receives the finished event: parsed, resolved to original source, fingerprinted.\n\n### 3. The browser\n\nCreate `instrumentation-client.ts` at the project root. Next runs any file with that name in the browser before your app code starts, so nothing needs to import it:\n\n```ts\nimport { init } from \"watchfire/browser\";\n\ninit({ endpoint: \"/api/errors\", release: process.env.NEXT_PUBLIC_RELEASE });\n```\n\n`release` must match the id the maps were stored under in step 1. `withWatchfire` reads the same `NEXT_PUBLIC_RELEASE` variable, so setting one env var at build time covers both. A report with an unknown release is still delivered, but without resolved source positions.\n\nReports are batched, and the queue is sent when the page is hidden or torn down. If your own code destroys the page, call `flush()` first, or the report explaining why is the one you lose:\n\n```ts\nimport { captureError, flush } from \"watchfire/browser\";\n\ncaptureError(new Error(\"StaleBundle: reloading\"));\nflush();\nlocation.reload();\n```\n\n## Source maps at runtime\n\nResolution reads maps from local disk, which always matches the release the server is running. This covers errors from browsers on the current bundle.\n\nBrowsers on an older bundle (tabs opened before your last deploy) produce stacks that reference the previous build. To resolve those too, configure a shared store and register each release's maps on boot:\n\n```ts\nimport { layeredStore, s3Store, filesystemStore, registerMaps, defaultMapsDir } from \"watchfire/sourcemaps\";\n\nconst shared = s3Store({ bucket: \"my-app-maps\", client, commands });\nvoid registerMaps({ release, localDir: `${defaultMapsDir()}/${release}`, store: shared });\n```\n\n`registerMaps` only uploads what's missing, so every server can call it on every boot. Without a shared store, stale-bundle errors fall back to function names instead of source positions.\n\n## Default filtering\n\nThe default ignore list contains only errors that are noise in any application: `ResizeObserver loop` notices, cross-origin `Script error` events (which carry no usable information), and errors thrown from browser-extension code, identified by extension URLs in the stack.\n\nSome extension errors arrive with no stack at all, leaving no frame to identify anyone by. A short list of those is matched on the message instead, and the bar for being on it is that the message names an extension API the page cannot reach (`chrome.runtime` errors, and the Firefox pair produced when an extension hands React a privileged event target). A generic `TypeError` is never matched this way.\n\nChunk-load failures, network errors, and aborted requests are reported, since they're often signal: a chunk-load spike measures how many open tabs a deploy broke, and a network-error spike can indicate an outage. To drop or reroute them, use `ignoreErrors` (substrings or regexes, matched against both message and stack) or classify them in `onEvent`.\n\n## Privacy defaults\n\n- Route changes and clicks: recorded as path patterns and CSS selectors, never text content\n- Network breadcrumbs: method, origin, and status; `fetchFullPath: true` adds the path, and query strings are always stripped (callback URLs can contain OAuth codes)\n- Console breadcrumbs: off by default\n- Input values: never captured; there's no option to enable this\n\n## Breadcrumbs\n\nEach report carries a short trail of what happened in the tab beforehand: `fetch` (method, path, status), `click` (a CSS selector), `navigation` (route changes), and `console` if you opt in. `capture.limit` bounds it, default 30.\n\nEviction is not first-in-first-out. An app that polls makes requests the overwhelming majority of everything recorded, and dropping the oldest entry would discard the rarer clicks and navigations first, which are the ones that say what the person was doing. So when the buffer is full the oldest entry of the *largest* kind is dropped. Request chatter evicts request chatter, and a click from a minute ago outlives a hundred polls.\n\nThe trade is worth knowing: the trail is the recent history of each kind in chronological order, not strictly the last N events.\n\n## Grouping\n\nEvery event carries a `fingerprint`; grouping by it gives an issue list. Two properties are enforced by tests:\n\n- **Stable across deploys.** The fingerprint is built from resolved source paths and lines, not generated chunk names, so a rebuild doesn't split an issue. Variable parts of the message (ids, numbers, quoted strings, URLs) are normalized out.\n- **Stable across engines.** Only the top application frame contributes. Engines disagree about deeper framework frames (V8 reports frames JSC elides), which would split one bug into several issues.\n\nWhen a stack yields nothing at all, grouping falls back to the request that failed. Safari reports a dropped fetch as `TypeError: Load failed` with no stack, so every dropped request in an application would otherwise share one key; the breadcrumb trail still knows which endpoint it was. Only the most recent request counts, and only if it failed.\n\nWatchfire's own frames are removed from the stack before it reaches `onEvent`. Breadcrumb capture patches `window.fetch`, so without this the wrapper is frame 0 of every network error, ahead of the code that made the call.\n\nRepeat suppression runs in the browser: at most three reports per distinct error per page load, with the suppressed count attached to the next flush.\n\n## Status\n\nv1.3.0. Covered by 195 unit tests and 33 end-to-end tests that run Chromium, WebKit, and Firefox against a Next 16 build. Parser fixtures are captured from the engines rather than written by hand; the source map decoder is tested against real bundler output. Watchfire is in production at [Fieldwork](https://getfieldwork.ai).\n\nOut of scope: a hosted UI and Sentry protocol compatibility, both of which would turn the library into a service.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}