{ "name": "@photo/contracts", "version": "0.1.0", "private": true, "type": "module", "description": "API contract single source of truth (OpenAPI 3.1 + error codes); types generated via openapi-typescript and committed under src/generated/. Subpaths ./constants and ./errors are the browser-safe entries (root index re-exports internal-sync with node:crypto — browser apps like viewer must import runtime values from those; errors.ts is pure TS).", "//": "lint runs `eslint .` against the root flat config (Task 7). test is ts-jest with full type-checking (Task 6 type tests).", "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { ".": { "types": "./dist/index.d.ts", "default": "./dist/index.js" }, "./constants": { "types": "./dist/constants.d.ts", "default": "./dist/constants.js" }, "./errors": { "types": "./dist/errors.d.ts", "default": "./dist/errors.js" }, "./realtime": { "types": "./dist/realtime.d.ts", "default": "./dist/realtime.js" }, "./openapi.yaml": "./openapi.yaml", "./package.json": "./package.json" }, "scripts": { "gen": "openapi-typescript openapi.yaml -o src/generated/openapi.d.ts", "lint:api": "redocly lint openapi.yaml", "build": "tsc -p tsconfig.json && node -e \"require('fs').cpSync('src/generated', 'dist/generated', { recursive: true })\"", "typecheck": "tsc --noEmit", "test": "jest", "lint": "eslint ." }, "devDependencies": { "@redocly/cli": "^1.0.0", "@types/jest": "^29.5.0", "@types/node": "^22.10.0", "jest": "^29.7.0", "openapi-typescript": "^7.0.0", "ts-jest": "^29.2.0", "typescript": "^5.6.0" } }