npm happy2 @0.0.18
score
0.7333
high
flagged
2026-07-30 19:46
Signals fired
| signal | weight | rationale |
|---|---|---|
| topology | ||
| typosquat | 1.0 | lev=1 to watched 'happy' |
| dist_tag_anomaly | 0.5 | dist-tags.latest=0.0.18 but max published is 0.0.22-canary.30468944092.1 |
| enrichment | ||
| repo_too_new_for_version_history | 0.7 | claimed repo created 19d ago but package has 162 versions (expect >= 132d for that history) |
Prior profile (what it deviated from)
{
"had_install_script": false,
"maintainers": [
"steve.kite"
],
"versions": 159
}
Evidence (package doc at flag time)
{
"dependencies_count": 16,
"dist": {
"integrity": "sha512-qplu9809kE9GVXm3r2ySeApLGQoQ92ObSziEOjgLBAYz39fa5umytxR8/yhlFowTO2AlZ3I7WT1PGgOvOylH2Q==",
"tarball": "https://registry.npmjs.org/happy2/-/happy2-0.0.18.tgz",
"unpackedSize": 16281967
},
"dist-tags": {
"canary": "0.0.22-canary.30591734671.1",
"latest": "0.0.18"
},
"latest_version": "0.0.18",
"maintainers": [
{
"email": "steve@korshakov.com",
"name": "steve.kite"
}
],
"num_versions": 162,
"repository": {
"type": "git",
"url": "git+https://github.com/slopus/happy2.git"
},
"scripts": {
"build": "pnpm -r --if-present build && VITE_HAPPY2_SERVER_URL='/' pnpm --filter happy2-web exec vite build --outDir ../happy2-server/dist/web --emptyOutDir false",
"check": "pnpm check:validation && tsx packages/happy2-server/tooling/server-coverage/cli.ts check && pnpm build",
"check:release": "pnpm check:validation && pnpm build",
"check:validation": "pnpm format:check && pnpm lint && pnpm --dir packages/happy2-server architecture:check && pnpm typecheck && pnpm test:coverage-tooling && pnpm test:non-server && pnpm coverage:server:unit && pnpm coverage:server:gym",
"clean": "pnpm -r --if-present clean",
"coverage:server": "pnpm test:coverage-tooling && pnpm coverage:server:unit && pnpm coverage:server:gym && tsx packages/happy2-server/tooling/server-coverage/cli.ts check",
"coverage:server:baseline": "pnpm test:coverage-tooling && pnpm coverage:server:unit && pnpm coverage:server:gym && tsx packages/happy2-server/tooling/server-coverage/cli.ts baseline",
"coverage:server:gym": "pnpm --dir packages/happy2-gym test:server:coverage",
"coverage:server:unit": "pnpm --dir packages/happy2-server test:coverage",
"dev": "node scripts/dev.mjs",
"dev:desktop": "node scripts/dev-desktop.mjs",
"dev:server": "pnpm --dir packages/happy2-server dev",
"dev:web": "pnpm --filter happy2-web dev",
"format": "oxfmt --write eslint scripts tsconfig.json && pnpm -r --if-present format",
"format:check": "oxfmt --check eslint scripts tsconfig.json && pnpm -r --if-present format:check",
"lint": "oxlint eslint scripts && pnpm -r --if-present lint",
"prepack": "pnpm run build",
"release": "tsx scripts/release.ts",
"start": "node packages/happy2-server/dist/runner.js",
"test": "pnpm test:coverage-tooling && pnpm -r --if-present test",
"test:coverage-tooling": "pnpm --dir packages/happy2-server test:coverage-tooling",
"test:non-server": "pnpm --parallel --filter happy2-state --filter happy2-ui --filter happy2-app test && pnpm --dir packages/happy2-gym test:playwright",
"test:watch": "pnpm -r --parallel --if-present test:watch",
"typecheck": "tsc --project tsconfig.json && pnpm -r --if-present typecheck",
"web": "node scripts/web.mjs"
},
"signal_details": {
"dist_tag_anomaly": "dist-tags.latest=0.0.18 but max published is 0.0.22-canary.30468944092.1",
"repo_too_new_for_version_history": "claimed repo created 19d ago but package has 162 versions (expect >= 132d for that history)",
"typosquat": "lev=1 to watched 'happy'"
},
"time": {
"created": "2026-07-16T06:12:09.863Z",
"modified": "2026-07-30T23:52:14.923Z"
}
}