{
  "name": "@thejrsoft/subway-protocol",
  "version": "1.12.4",
  "description": "Shared WebSocket protocol definitions for JRSoft Subway - v1.12.0 = Pre-License 设备身份强化 (Phase 9a/9d). RegisterMessage 改 discriminated union (DeviceRegisterMessage + NonDeviceRegisterMessage by clientType); DeviceRegisterMessage 加 required deviceFingerprint {type:'installPubkey', value:'sha256:<hex>', proof:base64-ECDSA-P256-SHA256, proofPayload, publicKeyPem?}; NonDevice schema 层 ?:never 挡误带. v1.12.0e: clientId 规范 ^[a-z0-9._:-]{1,64}$ lower-case 强制. Edge 校验序列升级: grace 内 LEGACY warn / 过 grace reject; 黑名单 strict (同 deviceId+新 fp / 同 fp+新 deviceId 双向拒); 全局 DAK 生产关 (ALLOW_GLOBAL_DAK_BOOTSTRAP=false). MessageFactory.createRegisterMessage overload (DEVICE 必填 deviceFingerprint, NonDevice 选项不含 fp 字段). Co-evolution: Round 0-6.5 完整 cycle (协议方 R2/R4/R6 + 设备端 R1/R3/R5/R6.5 + Owner 4 项决策含 Q7 D→E 升级 admin UI alert center). 三方 mutual accountability 6 处校正 0 hard 冲突. 设备端 R5 openssl byte-perfect verify test vector. PROTOCOL_VERSION 1.11.0→1.12.0.",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "bin": {
    "subway-protocol-resolve": "./bin/resolve.js",
    "subway-protocol": "./bin/resolve.js"
  },
  "scripts": {
    "build": "tsc",
    "watch": "tsc -w",
    "clean": "rm -rf dist",
    "validate:asyncapi": "ts-node scripts/validate-asyncapi.ts",
    "generate:asyncapi-enums": "ts-node -e \"import {generateAsyncApiEnums} from './src/asyncapi-sync'; console.log(generateAsyncApiEnums())\"",
    "test": "jest",
    "lint": "eslint src --ext .ts",
    "check:protocol-version": "node scripts/check-protocol-version.js",
    "check:dead-spec": "node scripts/check-dead-spec.js",
    "check:consumer-ack": "bash scripts/check-consumer-ack.sh",
    "prepublishOnly": "npm run clean && npm run build && npm run check:protocol-version && npm run check:dead-spec && npm run check:consumer-ack"
  },
  "keywords": [
    "websocket",
    "protocol",
    "jrsoft",
    "subway"
  ],
  "license": "MIT",
  "publishConfig": {
    "access": "public",
    "registry": "https://registry.npmjs.org/"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/YOUR_ORG/jrsoft-subway.git"
  },
  "files": [
    "dist/**/*",
    "bin/**/*",
    "src/**/*",
    "docs/**/*",
    "examples/**/*",
    "scripts/**/*",
    "*.md",
    "tsconfig.json"
  ],
  "dependencies": {
    "semver": "^7.8.0"
  },
  "devDependencies": {
    "@asyncapi/parser": "^2.1.0",
    "@types/jest": "^29.0.0",
    "@types/node": "^18.0.0",
    "@types/semver": "^7.7.1",
    "@typescript-eslint/eslint-plugin": "^5.0.0",
    "@typescript-eslint/parser": "^5.0.0",
    "eslint": "^8.0.0",
    "jest": "^29.0.0",
    "ts-jest": "^29.0.0",
    "ts-node": "^10.0.0",
    "typescript": "^5.0.0"
  }
}
