{"_id":"@all-wits/witslog","_rev":"12-1ba6807db62588ebe0e0b049eb99a43c","name":"@all-wits/witslog","dist-tags":{"latest":"0.6.4"},"versions":{"0.1.0":{"name":"@all-wits/witslog","version":"0.1.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.1.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"dist":{"shasum":"14a06b586e0b440d4047619ba2f4141db39ef179","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.1.0.tgz","fileCount":12,"integrity":"sha512-Kr0CYHvkshDUKN7uQ+dA/eDdxgO5qyWc4IR0ROWmLmDkSulLyXIBrCqAa91IeXhzPY9j/iCUHXPznKwG4t1oUQ==","signatures":[{"sig":"MEQCIDHO9ao4LLOfLHxqIeg+n0xADtrSOxg2f7guoNMFbcm5AiBJU+E4oB0rfbcBg3OmGsEfgMC4FXB0sk19/e9K9gPUNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21403191},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"2c090508987605bfe85ddec61ed358853ea7b11b","scripts":{"test":"node --test"},"_npmUser":{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"10.8.2","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"20.20.2","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/witslog_0.1.0_1784190583966_0.040300365634543756","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@all-wits/witslog","version":"0.2.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.2.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"dist":{"shasum":"8b2c22d9013d756fdfc75810324475148c75b552","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.2.0.tgz","fileCount":12,"integrity":"sha512-QlSMF4K5IE08E8gXEMBHx+cc0JM0jFlK7Ic2mX0wNmY2SsaTTrPwhQSv0kMRjysms51nqXVeiiMXPSJzpVm0Yg==","signatures":[{"sig":"MEYCIQCVIN24z9wer0OuHMTlWGo8BObewwyXFBV1nUkNFKmnFwIhAIeFlSzuhXPt5i7d7JKDLMu/zSUxhef/r9qyCJ1SVgvA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21973325},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"9920ae43d489ad0f51247faa2fe41a660778e102","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/witslog_0.2.0_1784286245778_0.9665588299730445","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@all-wits/witslog","version":"0.2.1","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.2.1","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"dist":{"shasum":"3f3584f5aa64d817ce64430e9324b598760e8ef7","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.2.1.tgz","fileCount":12,"integrity":"sha512-EwRawdSHZyhx5v8C7AOPZZYJvn1S9Z6uheuY5dBUAyRTupSrs19c04boKQMi4UM9NZ+0Twu6YGeuYE7xEwk+IQ==","signatures":[{"sig":"MEYCIQC4d6ME7wfW31jyBB3PiVXoz+0qG7plMEs4QVtMvbOAMAIhAPu+x69xJlSHRSLQes6Dw/OMdJAWr2EihB5Fj4KwOSHN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21974346},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"d6002278e6ee451bf515a868e7a7e3d8db235bc0","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/witslog_0.2.1_1784287048801_0.4304041392425286","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@all-wits/witslog","version":"0.3.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.3.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"dist":{"shasum":"11c40b9465b7862bd3f7bef943733b9ab0c865de","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.3.0.tgz","fileCount":12,"integrity":"sha512-FvKjjbfwkoy6a3nVdAozRlhCJLgdS22yPs25qenSB91PbiSjI9HF9aoVaK43pfK+M9rIeAp1u8A1E54tOtIaog==","signatures":[{"sig":"MEUCIQDLOYsjcdbSWmG4c7HCNcqvMwhVuoHUoqJgYYgNZCYgFwIgdMwxIAyKGvfPtuyDgbPPB5TSYSucN/EPOkRYCTT9pEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22006981},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"649f88997a130b38ddba14e0f6afc1957551d1b5","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/witslog_0.3.0_1784293720907_0.3385352220677138","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@all-wits/witslog","version":"0.4.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.4.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"d9c9d955c8008764d19f6f3d9a2c56bf7ab1a98c","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.4.0.tgz","fileCount":19,"integrity":"sha512-IbGv+9MxZ5lpN2zFYsAnODb5Wg+whne1bdN14NZLcKKV+XbrBgBhvsvujdvIWWED5DnqebUuC9xo8ya4fPI/8Q==","signatures":[{"sig":"MEUCIA0J7xItZElQPx5ZtEEpZOONiP8tKO4mvA1pFaQNXO7/AiEAxXm4iFMpvslnx1OEaq1EWMHt5Sbz/jRka3oXtsPhl1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50844984},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"5343db01e19f340c8c54241855ec5f5eb955a24b","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/witslog_0.4.0_1784346510165_0.9964700216185993","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@all-wits/witslog","version":"0.4.1","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.4.1","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"72fac84d9cc8c2226ddb9b5745e2d3b10ee8d1f5","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.4.1.tgz","fileCount":19,"integrity":"sha512-ev86rJ8E+10Z5RTLfz7A66TSgv113isv145n689S/Unx3xA9HqRDo+pMNr43cehY44vpKsKJfWhs2RdvUGS2eQ==","signatures":[{"sig":"MEYCIQDhWnUPJgawKtZ7lcQ/HZgWE5Wj+Y3Khk1uyylh/Rd8ggIhANSugcr2sMkjGbUB8m7JtRHUurzCAegkcA3P8qPkNspG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50848480},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"a7f29826d7ca41779e44c306ac324bd372386226","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.4.1_1784604673019_0.5211280992740024","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@all-wits/witslog","version":"0.5.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.5.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"f8fd177e5e54c8be0be0995393238c56597c51bc","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.5.0.tgz","fileCount":27,"integrity":"sha512-DN1NgShIxUL4hB013oXYEqyAjdGGBDD/nb0wncvXB27/k2vT4x67rvbku2SZtwMTBtqYb59o+9teGiF7zlg+cQ==","signatures":[{"sig":"MEQCIGnNzWs1wGlTEpmHDkCsMwzhBBqJve2Lpvqo3MjVF+hfAiByUEDIFBn+AMbnXEgZWtL5uQGykOJzuY1jC15D7CnMSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51023026},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"c3a206ab5cac8495044abb4467323b70233e7ce1","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.5.0_1784692128073_0.850119169886288","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@all-wits/witslog","version":"0.6.0","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.6.0","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"48b64765e6b085b89956acf82527150c7b4f5ff8","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.6.0.tgz","fileCount":29,"integrity":"sha512-Rj4jHyVcKTqKo8pGVV3pipHvOvl6GR/+U6JeA9Xc5VbDEke6bMCSfPK4dze+3xLCcyoY5T9ybouVWh31ZkD1AQ==","signatures":[{"sig":"MEYCIQCkYzxRhw0XTdAOyC9Puw/ubAZT2FYpx6FHt9CRWUpRXAIhAJfHk99vBVgniGXWucksSaxillMoT1s4fIGnldyjRlWA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50959805},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"f82ef7df42c2c1df670d99236c987fce93d3c42b","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.6.0_1784703629004_0.49852859577451203","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@all-wits/witslog","version":"0.6.1","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.6.1","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"d05d0d6e2e75ee5dc2387d0c0298f7d86f99b597","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.6.1.tgz","fileCount":31,"integrity":"sha512-W3QNTW2Pr7S9VdvI7kdKO9QZRNuu0JwvN9iH89M8TdtLI11JzS7NNkA6lW4CXgVpkKFe3rR6QKVs2C0IdMiFLQ==","signatures":[{"sig":"MEQCIFiZkqg8hPNYbUItnJFb3MxEbjhDIpPOPSJEDLBtnTs6AiBOkXOsEL89DMhesCRSEN0w7hrBQur+KvepPVzGZQ+row==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51109630},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"5200986e0f7b9dac04c5d0bd6ef6f5b3eebebf19","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.6.1_1784715451389_0.9276852600964325","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@all-wits/witslog","version":"0.6.2","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.6.2","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"be4b611b89e36457b00435b333fd8be53ddd221c","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.6.2.tgz","fileCount":31,"integrity":"sha512-UE99bwcZpsU2X0jhRDhtSdJeeRbgKY2jOQCPeJiBM+tr3XYTnscoOtwebZQcSELaSAUI4GkfCBhdLsjZRDTwnA==","signatures":[{"sig":"MEUCIGteGnJ/8hBm440agM+W+iebTYdyey66GiHqveUUREmzAiEAieOZ7Purk9b31MlMPIzYDXACBEuwyXVCr4ypMBhYtfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51120925},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"cc01fa540c6e7544fb5e9864e39a007221717350","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.6.2_1784725897888_0.634824559398238","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@all-wits/witslog","version":"0.6.3","keywords":["logging","errors","sqlite","observability"],"author":{"name":"witslog team"},"license":"Apache-2.0","_id":"@all-wits/witslog@0.6.3","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"homepage":"https://github.com/all-wits/witslog#readme","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"bin":{"witslog":"bin/witslog.js"},"dist":{"shasum":"a71d86ca73f68bb2a68f3659abc11b1e9a769d1a","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.6.3.tgz","fileCount":31,"integrity":"sha512-RTTnEct1jbzXNuLb+gAV/za4+70VNh6YodAUG4VxiLCtzOZy8qo/Rtfz24FTMStmunwhIKLUOUqdB786CjIEew==","signatures":[{"sig":"MEUCIQDebmxmAiEKHUxAWC2fQ8fRBBDYIXTQOLiQwtWLhUaXRQIgd+/5Ipxb/+PqAY7mlDE3jWLyKJi2XBnxvy0xhCmC4sk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51172564},"main":"index.js","types":"index.d.ts","engines":{"node":">=18"},"gitHead":"02505b809acd77ce1acb32901693a5ad5d0b1399","scripts":{"test":"node --test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"repository":{"url":"git+https://github.com/all-wits/witslog.git","type":"git","directory":"bindings/node"},"_npmVersion":"12.0.1","description":"Framework-agnostic Node.js SDK for witslog structured error logging","directories":{},"_nodeVersion":"26.5.0","dependencies":{"koffi":"^2.9.0"},"_hasShrinkwrap":false,"devDependencies":{"webpack":"^5.94.0"},"_npmOperationalInternal":{"tmp":"tmp/witslog_0.6.3_1784779749279_0.810510201158539","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@all-wits/witslog","version":"0.6.4","description":"Framework-agnostic Node.js SDK for witslog structured error logging","license":"Apache-2.0","author":{"name":"witslog team"},"repository":{"type":"git","url":"git+https://github.com/all-wits/witslog.git","directory":"bindings/node"},"main":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","default":"./index.js"},"./fetch":{"types":"./fetch.d.ts","default":"./fetch.js"},"./browser":{"types":"./browser.d.ts","default":"./browser.js"},"./frameworks/*":{"types":"./frameworks/*.d.ts","default":"./frameworks/*.js"},"./package.json":"./package.json"},"bin":{"witslog":"bin/witslog.js"},"scripts":{"test":"node --test"},"engines":{"node":">=18"},"keywords":["logging","errors","sqlite","observability"],"dependencies":{"koffi":"^2.9.0"},"devDependencies":{"webpack":"^5.94.0"},"gitHead":"084759d503af065fa322570087f6534f7a116a98","_id":"@all-wits/witslog@0.6.4","bugs":{"url":"https://github.com/all-wits/witslog/issues"},"homepage":"https://github.com/all-wits/witslog#readme","_nodeVersion":"26.5.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-6+QvkPexG617uyzpeb4K/RJFmmDFOllnYP7s9dEr80L9OeC2ZykO/P1+GojVI1g01/GNYYpc04Dw/cTj3Khw6Q==","shasum":"8fc44e0e971c72179eac79e98e3c6b1efa91b978","tarball":"https://registry.npmjs.org/@all-wits/witslog/-/witslog-0.6.4.tgz","fileCount":33,"unpackedSize":52713553,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@all-wits%2fwitslog@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCvIpPQvUQtW1TFRr99N8cRX3kPFOPpjnlCqLlWa3HwCQIhAOdPjZQDeem6O9GghkbJzCbC/LNjKvwLxEizEZTT7lWl"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c9cf55fc-793b-4637-b282-5efc55ff80f5"}},"directories":{},"maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/witslog_0.6.4_1784871601098_0.20179895522776992"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T08:29:43.844Z","modified":"2026-07-24T05:40:01.874Z","0.1.0":"2026-07-16T08:29:44.231Z","0.2.0":"2026-07-17T11:04:06.063Z","0.2.1":"2026-07-17T11:17:29.076Z","0.3.0":"2026-07-17T13:08:41.178Z","0.4.0":"2026-07-18T03:48:30.687Z","0.4.1":"2026-07-21T03:31:13.432Z","0.5.0":"2026-07-22T03:48:48.563Z","0.6.0":"2026-07-22T07:00:29.393Z","0.6.1":"2026-07-22T10:17:31.771Z","0.6.2":"2026-07-22T13:11:38.255Z","0.6.3":"2026-07-23T04:09:09.739Z","0.6.4":"2026-07-24T05:40:01.539Z"},"bugs":{"url":"https://github.com/all-wits/witslog/issues"},"author":{"name":"witslog team"},"license":"Apache-2.0","homepage":"https://github.com/all-wits/witslog#readme","keywords":["logging","errors","sqlite","observability"],"repository":{"type":"git","url":"git+https://github.com/all-wits/witslog.git","directory":"bindings/node"},"description":"Framework-agnostic Node.js SDK for witslog structured error logging","maintainers":[{"name":"vincenthe3231","email":"vincenthe3231@gmail.com"}],"readme":"<div align=\"center\">\n\n# 🪵 witslog (Node.js SDK)\n\n[![npm](https://img.shields.io/npm/v/%40all-wits%2Fwitslog?label=npm&logo=npm)](https://www.npmjs.com/package/@all-wits/witslog)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/all-wits/witslog/blob/main/LICENSE)\n[![node](https://img.shields.io/node/v/%40all-wits%2Fwitslog?logo=nodedotjs)](https://www.npmjs.com/package/@all-wits/witslog)\n[![CI](https://img.shields.io/github/actions/workflow/status/all-wits/witslog/release-node-sdk.yml?logo=githubactions)](https://github.com/all-wits/witslog/actions/workflows/release-node-sdk.yml)\n\n**Framework-agnostic Node.js SDK for [witslog](https://github.com/all-wits/witslog/blob/main/README.md) structured error logging.**\n\n</div>\n\n---\n\nThin wrapper over the native `witslog-ffi` C ABI via [`koffi`](https://koffi.dev) — one\ndependency, **prebuilt, no native build step**. As of 0.4.0 it also bundles the real `witslog`\nCLI binary per platform, so `witslog query`/`stats`/`export`/`serve-mcp`/`doctor` etc. (the\nread/ops surface that has no FFI equivalent — see CONTRACT.md) work straight after install, no\nseparate CLI install required. See [CONTRACT.md](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md)\nfor the full SDK↔native ABI, and [CHANGELOG.md](https://github.com/all-wits/witslog/blob/main/bindings/node/CHANGELOG.md)\nfor this package's release history.\n\n## 📦 Install\n\n```bash\nnpm install @all-wits/witslog\n```\n\n```bash\npnpm add @all-wits/witslog\n```\n\n```bash\nbun add @all-wits/witslog\n```\n\nNative libraries **and** the `witslog` CLI binary for Windows x64, Linux x64/arm64, and macOS\n(Apple Silicon) are bundled — `npm install` / `pnpm add` / `bun add` alone is enough on those\nplatforms, for both the SDK and `npx witslog <command>` / a global-install `witslog` on your\nPATH. See [Platform support](#-platform-support) below for the current gap.\n\n## 🚀 Quick Start\n\n```js\nconst witslog = require('@all-wits/witslog');\n\nwitslog.init({ createProject: true }); // scaffolds .witslog/ if missing, then mounts\nwitslog.error('myapp', 'db timeout', { context: { request_id: 'r1' }, tags: ['db'] });\n\ntry {\n  risky();\n} catch (e) {\n  witslog.exception('myapp', e);      // captures err.stack (and, if e.cause is set —\n                                       // e.g. Node's own fetch() failures — the full\n                                       // cause chain, folded into stacktrace + context.root_cause)\n}\n```\n\n`init()` needs a `.witslog/` project directory to write into — pass `createProject: true`\n(scaffolds one at `process.cwd()`) or `createProject: '/path/to/project'` the first time you\nmount in a fresh project; it's a no-op on later runs once `.witslog/` already exists.\n\n**As of 0.4.0, `npm install @all-wits/witslog` also gives you the real `witslog` CLI** — on the\n4 bundled platforms (see [Platform support](#-platform-support)), a plain `npm install` wires up\n`npx witslog <command>` (and a global install puts `witslog` on your PATH) with the same binary\n[`docs/install.md`](https://github.com/all-wits/witslog/blob/main/docs/install.md) or Homebrew/Scoop/`cargo install` would give you —\n`witslog init`, `witslog query`, `witslog stats`, `witslog serve-mcp`, all of it:\n\n```bash\nnpx witslog init .\nnpx witslog query \"db timeout*\"\n```\n\nOn a real terminal, `npx witslog init` also asks (arrow keys/spacebar/enter, plain language,\nno jargon) whether you want to protect sensitive data you might log later — say yes and it\ngenerates a secret key, shows it to you once (never saved to disk — you store it yourself), and\nwires up `.witslog/config.toml`. Skip the prompt with `npx witslog init --encrypt` or `--yes`;\npiped/CI usage never sees a prompt either way. Revisit the choice anytime with\n`npx witslog config`. See\n[CONTRACT.md's \"Metadata encryption\" section](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md#metadata-encryption-fr-p9-004)\nfor what this does and doesn't cover.\n\nFor programmatic use `createProject: true` remains the way to scaffold `.witslog/` from code\nwithout shelling out:\n\n```js\nconst witslog = require('@all-wits/witslog');\nwitslog.init({ createProject: true }); // scaffolds .witslog/, cross-platform\n```\n\nIf you *also* separately install the [`witslog` CLI](https://github.com/all-wits/witslog/blob/main/docs/install.md) (`cargo install`,\nHomebrew, Scoop, or a release binary), or the bundled binary isn't available for your platform,\npoint `WITSLOG_CLI=/path/to/witslog` at it — the npm-bundled and separately-installed CLIs are\ninterchangeable, pick whichever is already in your toolchain.\n\n> **⚠️ For MCP (AI-assistant integration), install the CLI globally instead of relying on the\n> npm-bundled binary** — see the [root README's MCP section](https://github.com/all-wits/witslog/blob/main/README.md#-integration-with-ai-mcp)\n> for why: macOS Intel has no npm-bundled CLI at all (only [curl/irm](https://github.com/all-wits/witslog/blob/main/docs/install.md)/\n> Homebrew/Scoop/`cargo install` cover it), and an MCP config generated from a path inside this\n> project's `node_modules/` breaks if `node_modules` is ever removed or reinstalled elsewhere. The\n> npm-bundled `npx witslog <command>` is for ad-hoc/manual use from inside a project — a globally\n> installed CLI is what `serve-mcp --print-mcp-config` should point an MCP client at.\n\n> **ℹ️ MCP tools are self-teaching**: `initialize` returns worked-example `instructions`, and\n> every tool description carries an `Example: {...}` call — helps lightweight/under-informed\n> models pick the right tool (e.g. `search_errors` vs. `latest_errors`) on the first try. See\n> the [root README's MCP section](https://github.com/all-wits/witslog/blob/main/README.md#-integration-with-ai-mcp).\n\n> **🔒 Security:** `argv` enrichment defaults on and captures the full command line. If your\n> app may receive secrets as bare CLI args, call `witslog.init({ enrich: { argv: false } })` —\n> see [CONTRACT.md](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md#security-note-argv-enrichment-vs-secrets).\n\n## 🧩 Express\n\n```js\nconst { witslogErrorHandler } = require('@all-wits/witslog/frameworks/express');\n\nwitslog.init();\napp.use(witslogErrorHandler('myapp'));   // last, after routes\n```\n\n### 🌐 Browser-side error capture\n\nPairs with the browser reporter — a zero-dep client that batches `window.onerror` /\nunhandled-rejection events (plus, opt-in, `console.error`/`console.warn` and resource-load\nfailures) and ships them via `navigator.sendBeacon` to this ingest endpoint. Available two\nways: as the npm subpath `@all-wits/witslog/browser` (0.6.1+, packaged copy) for\nbundler/import usage, or the standalone\n[`bindings/browser/witslog-browser.js`](https://github.com/all-wits/witslog/tree/main/bindings/browser)\nfor a plain `<script src>` — same API either way.\n\n```js\nimport WitslogBrowser from '@all-wits/witslog/browser';\n\nconst reporter = WitslogBrowser.init({\n  endpoint: '/api/witslog-ingest',\n  app: 'my-web-app',\n  captureConsole: true, // also captures console.error/warn + resource-load failures\n});\n```\n\n```js\nconst { witslogBrowserIngest } = require('@all-wits/witslog/frameworks/express');\n\napp.use(witslogBrowserIngest({\n  allowedOrigins: ['https://your-app.example'], // required — fail-closed, default []\n}));\n```\n\n> **🔒 Security:** the request body is untrusted input that lands in `events.message`, which\n> MCP serves verbatim to an AI assistant. This handler is armed fail-closed: empty origin\n> allowlist by default, refuses to run under `NODE_ENV=production` unless `{ force: true }`,\n> rate-limited per client, and severity clamped to `error`/`warn` (never `fatal`/`critical`).\n> `tags: ['browser']` is advisory only, not a trust boundary. See\n> [CONTRACT.md](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md) for the\n> Python/PHP ingest recipe and the full guardrail rationale.\n\n## 🧵 Zero-boilerplate auto-instrumentation\n\nMount instrumentation once instead of hand-writing `try/catch` +\n`witslog.exception`/`witslog.error` at every route handler and outbound `fetch` call.\n\n### Instrumented fetch — `witslogFetch`\n\nExplicit wrapper around `fetch` (no global monkeypatch — safe alongside Next.js's own fetch\ncaching/instrumentation). Swap it in at your outbound-request choke points:\n\n```js\nconst { witslogFetch } = require('@all-wits/witslog/fetch');\n\nconst res = await witslogFetch(upstreamUrl, init, {\n  application: 'my-proxy',\n  tags: ['proxy'],\n  context: { path: '/cards/123' },\n});\n```\n\nAuto-captures a correlation id (`x-request-id` by default, propagated to the outbound\nrequest), `context.timing.latency_ms`, and on failure:\n\n- **Thrown error** (network unreachable/timeout) — logs via `exception()` (full `.cause`\n  chain, `error_code: 'UPSTREAM_UNREACHABLE'`), then rethrows the original error unchanged.\n- **Non-2xx response** — peeks the body via `.clone()` (your code still gets the untouched\n  `Response`), extracts `error_code`/`message`/`details` from a `{error:{code,message,details}}`\n  body when present, and logs at **`warn` for 4xx** (expected client-caused conflicts) /\n  **`error` for 5xx**.\n\n### Next.js adapter\n\n```ts\n// instrumentation.ts — Next.js's own server-boot hook. Captures every uncaught error in\n// route handlers, Server Components, Server Actions, and middleware — zero per-route code.\nimport { register as registerWitslog, onRequestError as witslogOnRequestError } from '@all-wits/witslog/frameworks/next';\n\nexport function register() {\n  registerWitslog('my-app', { createProject: true });\n}\nexport const onRequestError = witslogOnRequestError;\n```\n\n`withWitslog(handler, opts?)` wraps a single route handler explicitly, for Next < 15 or when\nyou want per-route timing/correlation without global instrumentation.\n\n`witslogNextIngest(options)` is the Next.js Route Handler-shaped equivalent of\n`witslogBrowserIngest` above (Express's raw `req`/`res` and Next's Web `Request`/`Response`\naren't interchangeable, so this is a separate export, not a re-export — same guardrails):\n\n```ts\n// app/api/witslog-ingest/route.ts — do NOT start the folder name with `_`;\n// Next.js's App Router treats any path segment starting with `_` as a\n// private folder excluded from routing, so app/api/__witslog/route.ts\n// would silently never register a route (every POST 404s).\nimport { witslogNextIngest } from '@all-wits/witslog/frameworks/next';\nexport const POST = witslogNextIngest({ allowedOrigins: ['https://your-app.example'] });\n```\n\n### React Query client capture\n\nSubscribes to a TanStack `QueryClient`'s `MutationCache`/`QueryCache` — the same event\nstream TanStack Query Devtools itself observes — so every failed query/mutation (key,\nvariables, error) is captured with zero per-hook code. Browser-safe, no hard\n`@tanstack/react-query` dependency.\n\n```js\nimport { attachWitslog } from '@all-wits/witslog/frameworks/react-query';\n\n// `report` is any {enqueue(event)} sink — typically WitslogBrowser.init(...)\n// from bindings/browser/witslog-browser.js, which ships events to witslogNextIngest/witslogBrowserIngest\nattachWitslog(queryClient, { report: myBrowserReporter, tags: ['my-app'] });\n```\n\nSee [CONTRACT.md](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md#node-sdk-auto-instrumentation-fetch-nextjs-react-query-adapters)\nfor the full design (including the `context.root_cause` convention `exception()`/`witslogFetch`\nuse, and how `clampContext` bounds what an ingest endpoint accepts).\n\n### Correlation id + network-tab-equivalent capture\n\nCloses the \"a React Query failure can't be correlated with the proxy log for the same\nrequest\" gap, plus transport-layer failures React Query never sees (WebSocket disconnects,\ndirect axios calls).\n\n```js\n// client.ts — mints/reuses a correlation id per request (propagated as a header,\n// default x-request-id), stamps correlationId/latencyMs onto the response/rejected\n// error. Does NOT log every rejection itself (attachWitslog already captures every\n// React-Query-managed failure) — opt a specific call into direct capture instead:\nimport { witslogAxiosInterceptor } from '@all-wits/witslog/frameworks/axios';\n\nwitslogAxiosInterceptor(apiClient, { report: myBrowserReporter, tags: ['my-app'] });\n\n// a call that bypasses React Query entirely (e.g. an imperative token fetch)\napiClient.get('/collab/ticket', { witslogDirectCapture: true });\n```\n\n`frameworks/react-query.js`'s `buildEvent` reads `error.correlationId`/`error.latencyMs`\n(when stamped by the interceptor above) into `correlation_id`/`context.timing.latency_ms`,\nand independently computes latency from TanStack Query v5's\n`state.submittedAt`/`state.errorUpdatedAt` when those aren't present — no extra wiring\nneeded for either.\n\n`bindings/browser/witslog-websocket.js`'s `witslogWebSocketWatch(opts)` (vendored file,\nalongside `witslog-browser.js` — not an npm subpath) returns `{onClose, onDisconnect}`\nhandlers shaped for `HocuspocusProvider`'s constructor options, logging abnormal closes\n(`code` not 1000/1001) with `error_code: WS_CLOSE_<code>` and\n`context.ws: {code, reason, wasClean}`:\n\n```js\nconst { witslogWebSocketWatch } = require('./witslog-websocket');\nconst watch = witslogWebSocketWatch({ report: myBrowserReporter });\nnew HocuspocusProvider({ ..., onClose: watch.onClose, onDisconnect: watch.onDisconnect });\n```\n\n### Hocuspocus/Yjs collab-provider adapter (Node-side)\n\n`frameworks/hocuspocus.js` — `attachWitslogHocuspocus(provider, opts)` — is the Node-process\ncounterpart to `witslog-websocket.js` above, purpose-built for a `HocuspocusProvider` (or any\n`EventEmitter`-shaped target exposing `on(event, fn)`/`off(event, fn)`) rather than a raw\n`CloseEvent` hook. Two improvements over the vendored watcher for this target specifically:\n`isAbnormalClose(code, wasClean)` treats any `wasClean:true` close as normal — the vendored\nwatcher checks `code` alone, so a clean disconnect that synthesizes close code 1005 (\"No Status\nRcvd\", which the browser does locally on a routine `provider.destroy()`/tab-nav/HMR reload) is\nmisclassified as abnormal — and it additionally captures `authenticationFailed`\n(`error_code: COLLAB_AUTH_FAILED`). Like the vendored watcher, it flushes the reporter\nimmediately after every emit (connection loss/auth failure is rare and urgent, unlike\nhigh-volume sources such as react-query/axios that rely on the reporter's batch window), and\nduck-types against the target's public API — no hard `@hocuspocus/provider` dependency.\n\n```js\nconst { HocuspocusProvider } = require('@hocuspocus/provider');\nconst { attachWitslogHocuspocus } = require('@all-wits/witslog/frameworks/hocuspocus');\n\nconst hp = new HocuspocusProvider({ url, name, document, token });\nconst detach = attachWitslogHocuspocus(hp, { report: myBrowserReporter, tags: ['my-app'] });\n// later: detach(); hp.destroy();\n```\n\nTests: `test/hocuspocus.test.js`.\n\n## 🧱 Works with your Node.js stack\n\n`@all-wits/witslog` is a plain npm/pnpm/bun package with no bundler-specific glue — it works\nin **any Node.js process**, which covers the server side of most modern frameworks:\n\n- **Next.js** — call it from Route Handlers / API Routes, Server Actions, or Server\n  Components (`witslog.init()` once at module scope, `witslog.error(...)` in a `catch`). **Next.js\n  bundles server route code by default (webpack/turbopack), and that breaks resolution of\n  `koffi`'s native `.node` addon** — you'll hit:\n  ```\n  Error: Cannot find the native Koffi module; did you bundle it correctly?\n  ```\n  Fix: tell Next to `require()` both packages natively instead of bundling them, in\n  `next.config.ts`:\n  ```ts\n  const nextConfig: NextConfig = {\n    serverExternalPackages: [\"@all-wits/witslog\", \"koffi\"],\n  };\n  ```\n  (Next.js ≥15; pre-15 use `experimental.serverComponentsExternalPackages` instead.) This is the\n  same fix any native-addon npm package needs under Next.js (e.g. Prisma, Sharp) — no witslog code\n  change can make a `.node` binary bundler-safe, so this config is required, not optional.\n- **Nuxt.js** — same idea inside server routes / the Nitro server (`server/api/*.ts`,\n  `server/plugins/*.ts`).\n- **Vite** — use it in a Vite **SSR** entry (`vite-node`, `vite-plugin-ssr`, a custom\n  `server.js`) or in `vite.config.js` build hooks — anywhere Vite code actually executes in\n  Node, not in code shipped to the browser.\n\n> ⚠️ **Not for browser bundles.** The native `witslog_ffi` library is loaded via `koffi`,\n> which needs a real Node.js process — it cannot run inside client-rendered **Vue.js**\n> components, React components, or any code that ends up in a browser bundle. If you're\n> using Vue.js/React purely client-side, log from your Node backend (API route, SSR\n> middleware, server action) instead of the browser-rendered component itself.\n\n## 📖 API\n\n| Function | Description |\n|----------|--------------|\n| `init(config?)` | Mount the SDK; pass `{ createProject: true }` to scaffold `.witslog/` first, plus optional enrich/redact/buffer config (see [CONTRACT.md](https://github.com/all-wits/witslog/blob/main/bindings/CONTRACT.md)). |\n| `error/warn/info(app, message, opts?)` | Log at the given severity. `opts`: `context`, `tags`, `metadata`, `error_code`, `exception`, `stacktrace`, `correlation_id`, `parent_event_id`, `category`, `version`, `environment`. |\n| `log(app, message, opts?)` | Same as `error`, explicit severity via `opts.severity`. |\n| `exception(app, err, opts?)` | Log a caught `Error`, capturing `err.stack` and, when set, `err.cause`'s full chain (folded into `stacktrace` + `context.root_cause`). |\n| `flush()` / `shutdown()` | Drain buffered events before exit. |\n\n### Auto-instrumentation (see [above](#-zero-boilerplate-auto-instrumentation))\n\n| Import | Function | Description |\n|--------|----------|--------------|\n| `@all-wits/witslog/fetch` | `witslogFetch(input, init, opts?)` | Instrumented `fetch` wrapper. |\n| `@all-wits/witslog/frameworks/next` | `register(app, config?)` / `onRequestError(err, req, ctx)` / `withWitslog(handler, opts?)` | Next.js server-error capture. |\n| `@all-wits/witslog/frameworks/next` | `witslogNextIngest(options)` | Browser-ingest endpoint, Next.js Route Handler shape. |\n| `@all-wits/witslog/frameworks/react-query` | `attachWitslog(queryClient, opts)` | Global React Query mutation/query failure capture. |\n| `@all-wits/witslog/frameworks/axios` | `witslogAxiosInterceptor(axiosInstance, opts?)` | Correlation-id propagation + latency stamping on an axios instance. |\n| `@all-wits/witslog/browser` (0.6.1+) | `WitslogBrowser.init(config)` | Browser-side client reporter — `window.onerror`/unhandled-rejection by default, plus `console.error`/`console.warn` + resource-load failures with `captureConsole: true`. |\n| `bindings/browser/witslog-websocket.js` (vendored, not an npm subpath) | `witslogWebSocketWatch(opts)` | Abnormal WebSocket close/disconnect capture (browser-side). |\n| `@all-wits/witslog/frameworks/hocuspocus` | `attachWitslogHocuspocus(provider, opts)` | Node-side Hocuspocus/Yjs collab-provider adapter — close/disconnect + `authenticationFailed` capture, `wasClean`-aware. |\n\n## 🌍 Platform support\n\n| Platform | Status |\n|----------|--------|\n| Windows x64 | ✅ |\n| Linux x64 | ✅ |\n| Linux arm64 | ✅ |\n| macOS arm64 (Apple Silicon) | ✅ |\n| macOS x64 (Intel) | ⬜ not yet built by CI — [see CHANGELOG](https://github.com/all-wits/witslog/blob/main/CHANGELOG.md#known-limitations) |\n\nIf your platform isn't bundled, point at a local build via `WITSLOG_LIB=/path/to/witslog_ffi.*`\n(native lib) and `WITSLOG_CLI=/path/to/witslog[.exe]` (CLI binary).\n\n## 🧪 Test\n\n```bash\npnpm install && pnpm test\n```\n\n## 📄 License\n\nApache License 2.0 — see [LICENSE](https://github.com/all-wits/witslog/blob/main/LICENSE).\n","readmeFilename":"README.md"}