BEACON

← candidates

npm happy2 @0.0.18

score
0.7333 high
flagged 2026-07-30 19:49
signals by category
topology 2 enrichment 1

maintainers added: —

package profile →

Signals fired

signalweightrationale
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": 162
}

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"
  }
}