{"_id":"@alert-whatif/core","_rev":"2-1f4277e5afad5248447cac85f0bbc114","name":"@alert-whatif/core","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@alert-whatif/core","version":"0.1.0","keywords":["grafana","alerting","alert-rules","evaluator","observability"],"author":{"name":"Alertcraft"},"license":"MIT","_id":"@alert-whatif/core@0.1.0","maintainers":[{"name":"surfmate.team","email":"surfmate.team@gmail.com"}],"homepage":"https://github.com/David6811/alert-whatif#readme","bugs":{"url":"https://github.com/David6811/alert-whatif/issues"},"dist":{"shasum":"64c2e295b97e4f45ec32dd6024e4e65b7577ac43","tarball":"https://registry.npmjs.org/@alert-whatif/core/-/core-0.1.0.tgz","fileCount":6,"integrity":"sha512-cey/7eB2FCsU3WvdtQ/haj7mxAG/xF56wV3Ns4BkgKzKM3txt8NTTTYepg7zsvBNBOgcn1atrmusoGH+EiTPEQ==","signatures":[{"sig":"MEYCIQCoMWvbSggkVz8TRpm+VTewGkgRovJsPIfkdsx+V9o+jQIhAIMQm/KTQ4YkUw76C4cfnnCSLhMMqbn/i9BfpdjXD1ag","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160807},"main":"./dist/index.js","type":"module","_from":"file:alert-whatif-core-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"surfmate.team","email":"surfmate.team@gmail.com"},"_resolved":"/private/var/folders/gm/lr65krwx7pj_t9q5bjbpm3400000gn/T/7f575ab896426ade7b29f33d7fe37f9a/alert-whatif-core-0.1.0.tgz","_integrity":"sha512-cey/7eB2FCsU3WvdtQ/haj7mxAG/xF56wV3Ns4BkgKzKM3txt8NTTTYepg7zsvBNBOgcn1atrmusoGH+EiTPEQ==","repository":{"url":"git+https://github.com/David6811/alert-whatif.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.2","description":"Framework-agnostic alert evaluator and scenario library. Pure TypeScript — no React, no Vue, no Grafana SDK. Consumed by @alert-whatif/plugin and @alert-whatif/demo.","directories":{},"sideEffects":false,"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.0.0","typescript":"^5.9.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1779790079111_0.09414301875376219","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alert-whatif/core","version":"0.1.1","description":"Framework-agnostic alert evaluator and scenario library. Pure TypeScript — no React, no Vue, no Grafana SDK. Consumed by @alert-whatif/plugin and @alert-whatif/demo.","license":"MIT","author":{"name":"Alertcraft"},"type":"module","sideEffects":false,"main":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"repository":{"type":"git","url":"git+https://github.com/David6811/alert-whatif.git","directory":"packages/core"},"homepage":"https://github.com/David6811/alert-whatif#readme","bugs":{"url":"https://github.com/David6811/alert-whatif/issues"},"keywords":["grafana","alerting","alert-rules","evaluator","observability"],"publishConfig":{"access":"public"},"devDependencies":{"@types/node":"^22.10.0","tsup":"^8.5.1","typescript":"^5.9.0","vitest":"^3.0.0"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"module":"./dist/index.js","types":"./dist/index.d.ts","_id":"@alert-whatif/core@0.1.1","_integrity":"sha512-PJQYqU5tsLF5e0pPJUVhugR8n6iy5G5tS2ZGjn+qD5TxvWFYgLaWhxCU8r4/KvOAhPOcEemt8UrVpe8LcPNboA==","_resolved":"/private/tmp/claude-501/77446c7c005b0220a5202251a87c1561/alert-whatif-core-0.1.1.tgz","_from":"file:alert-whatif-core-0.1.1.tgz","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-PJQYqU5tsLF5e0pPJUVhugR8n6iy5G5tS2ZGjn+qD5TxvWFYgLaWhxCU8r4/KvOAhPOcEemt8UrVpe8LcPNboA==","shasum":"f6187c7b91bde1c1c2f6dddbb66fb3bfdad0ab86","tarball":"https://registry.npmjs.org/@alert-whatif/core/-/core-0.1.1.tgz","fileCount":6,"unpackedSize":160735,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDXQoH9CiL79Bx4MkOCFfZcjKt/upaJb8CGqeCWzRilPwIgZLlrZImkb8pf9rDtf8lFM0n43+igpn3c7kHFxFURIFY="}]},"_npmUser":{"name":"surfmate.team","email":"surfmate.team@gmail.com"},"directories":{},"maintainers":[{"name":"surfmate.team","email":"surfmate.team@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.1.1_1780312221523_0.6047173567053743"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-26T10:07:59.000Z","modified":"2026-06-01T11:10:21.777Z","0.1.0":"2026-05-26T10:07:59.258Z","0.1.1":"2026-06-01T11:10:21.651Z"},"bugs":{"url":"https://github.com/David6811/alert-whatif/issues"},"author":{"name":"Alertcraft"},"license":"MIT","homepage":"https://github.com/David6811/alert-whatif#readme","keywords":["grafana","alerting","alert-rules","evaluator","observability"],"repository":{"type":"git","url":"git+https://github.com/David6811/alert-whatif.git","directory":"packages/core"},"description":"Framework-agnostic alert evaluator and scenario library. Pure TypeScript — no React, no Vue, no Grafana SDK. Consumed by @alert-whatif/plugin and @alert-whatif/demo.","maintainers":[{"name":"surfmate.team","email":"surfmate.team@gmail.com"}],"readme":"# @alert-whatif/core\n\nFramework-agnostic alert evaluator and scenario library for the [alert-whatif](../../README.md) project.\n\nPure TypeScript. **No React, no Vue, no Grafana SDK.** Consumed by:\n\n- [`@alert-whatif/plugin`](../plugin) — Grafana App Plugin (React)\n- [`@alert-whatif/demo`](../demo) — hosted public demo (Vite + React, mock-only)\n\nBoth shells import the same evaluation math from this package, so client-side replay in the demo and server-validated what-if in the plugin can never drift.\n\n## Status\n\nScaffolding only. No business logic yet. Real evaluation primitives — counter → rate → reducer → threshold → state machine → notification — land in **Step 8** of the [build plan](../../docs/00-build-plan.md), after the product vision, architecture, and MVP scope docs are agreed (Steps 5–7).\n\n## Develop\n\n```bash\npnpm test           # run tests once\npnpm test:watch     # watch mode\npnpm typecheck      # tsc --noEmit\n```\n\n## Test stack\n\n[Vitest](https://vitest.dev/) — TypeScript-native, ESM-first, ~3–5× faster than Jest for pure TS packages with an API that is near-identical to Jest's (`describe` / `it` / `expect`).\n\n`@alert-whatif/plugin` uses Jest instead because Grafana's plugin template embeds Jest in its protected `.config/` directory. The two test runners live side-by-side without conflict; the API surface is so similar that contributors moving between packages do not need to context-switch.\n\n## Why a separate package\n\nBecause both shells (plugin + demo) need the same math, and because keeping it in a framework-free package is the only way to guarantee no Grafana / React import accidentally creeps in. Every PR touching this package is required to keep it React-free and Grafana-free; the test suite runs in a Node environment with no DOM and no `@grafana/*` import allowed.\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":"README.md"}