{
  "name": "pipework",
  "version": "0.45.0",
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
  "type": "module",
  "license": "MIT",
  "publishConfig": {
    "access": "public"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/theconstructory/pipework.git"
  },
  "keywords": [
    "saas",
    "multi-tenant",
    "postgresql",
    "drizzle",
    "fastify",
    "typescript",
    "framework"
  ],
  "engines": {
    "node": ">=22"
  },
  "exports": {
    ".": {
      "import": "./dist/index.js",
      "types": "./dist/index.d.ts"
    },
    "./test": {
      "import": "./dist/test/index.js",
      "types": "./dist/test/index.d.ts"
    },
    "./test/setup": {
      "import": "./dist/test/auto-setup.js",
      "types": "./dist/test/auto-setup.d.ts"
    },
    "./vitest-plugin": {
      "import": "./dist/test/vitest-plugin.js",
      "types": "./dist/test/vitest-plugin.d.ts"
    },
    "./vitest": {
      "import": "./dist/test/vitest-workspace.js",
      "types": "./dist/test/vitest-workspace.d.ts"
    },
    "./globals": {
      "types": "./dist/test/globals.d.ts"
    },
    "./eslint": {
      "import": "./dist/lint/index.js",
      "types": "./dist/lint/index.d.ts"
    },
    "./eslint/preset": {
      "import": "./dist/lint/preset.js",
      "types": "./dist/lint/preset.d.ts"
    },
    "./package.json": "./package.json"
  },
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "bin",
    "LICENSE",
    "CHANGELOG.md",
    "REFERENCE.md"
  ],
  "bin": {
    "pipework": "bin/pipework.js"
  },
  "pipework": {
    "boundaries": {
      "rules": {
        "no-raw-pg-import": {
          "exempt": [
            "src/data/db/",
            "src/data/query/",
            "src/test/",
            "src/data/migrate/",
            "src/core/validation/",
            "tests/boundaries/",
            "tests/query/"
          ]
        },
        "no-process-env": {
          "exempt": [
            "src/core/config/",
            "src/cli/",
            "src/workspace/scrub-git-env.ts",
            "tests/"
          ]
        },
        "no-raw-drizzle-connect": {
          "exempt": [
            "src/data/db/",
            "src/test/",
            "src/data/migrate/",
            "tests/boundaries/"
          ]
        },
        "no-raw-drizzle-orm": {
          "exempt": [
            "src/data/db/",
            "src/data/domain/",
            "src/data/drizzle/",
            "src/data/migrate/",
            "src/test/",
            "tests/boundaries/"
          ]
        },
        "no-raw-drizzle-pg-core": {
          "exempt": [
            "src/data/db/",
            "src/data/domain/",
            "src/data/drizzle/",
            "src/data/query/",
            "src/data/migrate/",
            "src/test/",
            "tests/boundaries/",
            "tests/domain/",
            "tests/migrate/",
            "tests/validation/"
          ]
        },
        "no-raw-zod": {
          "exempt": [
            "src/data/schema/",
            "src/data/domain/",
            "src/core/config/",
            "tests/boundaries/"
          ]
        },
        "no-raw-route-handlers": {
          "exempt": [
            "src/request/http/",
            "src/request/fixture/",
            "src/core/lifecycle/",
            "tests/"
          ]
        },
        "no-raw-drizzle-writes": {
          "exempt": [
            "src/data/write/",
            "src/data/query/",
            "src/data/domain/build-factory.ts",
            "tests/boundaries/",
            "tests/db/",
            "tests/query/",
            "tests/resource/",
            "tests/temporal/",
            "tests/tenant/scoped-db.test.ts"
          ]
        }
      }
    }
  },
  "dependencies": {
    "@fastify/cors": "^11.2.0",
    "@fastify/helmet": "^13.0.2",
    "@fastify/rate-limit": "^10.3.0",
    "@typescript-eslint/eslint-plugin": "^8.59.2",
    "@typescript-eslint/parser": "^8.59.2",
    "eslint": "^10.3.0",
    "fastify": "^5.8.5",
    "jose": "^6.2.3",
    "pino": "^10.3.1",
    "postgres": "^3.4.9",
    "zod": "^4.4.3",
    "pipework-flow-parser": "0.1.0"
  },
  "peerDependencies": {
    "typescript": "^6.0.0",
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@stryker-mutator/core": "^9.6.1",
    "@stryker-mutator/typescript-checker": "^9.6.1",
    "@stryker-mutator/vitest-runner": "^9.6.1",
    "@types/node": "^25.6.0",
    "fast-check": "^4.7.0",
    "pino-pretty": "^13.1.3",
    "typescript": "^6.0.3",
    "vitest": "^4.1.5"
  },
  "scripts": {
    "build": "pnpm --filter pipework-flow-parser build && tsc && cp src/test/globals.d.ts dist/test/globals.d.ts",
    "type-check": "pnpm --filter pipework-flow-parser type-check && tsc --noEmit",
    "lint": "eslint src --max-warnings 0",
    "lint:boundaries": "node scripts/check-boundaries.js",
    "lint:jsdoc": "node scripts/check-jsdoc.js",
    "type-check:tests": "tsc --noEmit -p tsconfig.test.json",
    "generate:reference": "node scripts/generate-reference.js",
    "test": "vitest run",
    "test:isolation": "vitest run --config vitest.isolation.config.ts",
    "test:property": "vitest run --config vitest.property.config.ts",
    "test:stress": "vitest run --config vitest.stress.config.ts",
    "test:packages": "pnpm -r --filter='./packages/*' test",
    "test:all": "pnpm test:packages && vitest run && vitest run --config vitest.isolation.config.ts && vitest run --config vitest.property.config.ts && vitest run --config vitest.stress.config.ts",
    "mutate": "stryker run"
  }
}