{
  "name": "drizzle-cube",
  "version": "0.6.4",
  "description": "Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.",
  "main": "./dist/server/index.js",
  "types": "./dist/server/index.d.ts",
  "type": "module",
  "bin": {
    "drizzle-cube": "./dist/cli/index.cjs"
  },
  "sideEffects": [
    "*.css",
    "./dist/client/styles.css"
  ],
  "exports": {
    ".": {
      "import": {
        "types": "./dist/server/index.d.ts",
        "default": "./dist/server/index.js"
      },
      "require": {
        "types": "./dist/cjs/server/index.d.ts",
        "default": "./dist/server/index.cjs"
      }
    },
    "./server": {
      "import": {
        "types": "./dist/server/index.d.ts",
        "default": "./dist/server/index.js"
      },
      "require": {
        "types": "./dist/cjs/server/index.d.ts",
        "default": "./dist/server/index.cjs"
      }
    },
    "./client": {
      "types": "./dist/client/index.d.ts",
      "import": "./dist/client/index.js"
    },
    "./client/charts": {
      "types": "./dist/client/charts.d.ts",
      "import": "./dist/client/charts.js"
    },
    "./client/hooks": {
      "types": "./dist/client/hooks.d.ts",
      "import": "./dist/client/hooks.js"
    },
    "./client/providers": {
      "types": "./dist/client/providers.d.ts",
      "import": "./dist/client/providers.js"
    },
    "./client/components": {
      "types": "./dist/client/components.d.ts",
      "import": "./dist/client/components.js"
    },
    "./client/utils": {
      "types": "./dist/client/utils.d.ts",
      "import": "./dist/client/utils.js"
    },
    "./client/icons": {
      "types": "./dist/client/icons.d.ts",
      "import": "./dist/client/icons.js"
    },
    "./client/schema": {
      "types": "./dist/client/schema.d.ts",
      "import": "./dist/client/schema.js"
    },
    "./client/styles.css": "./dist/client/styles.css",
    "./adapters/hono": {
      "import": {
        "types": "./dist/adapters/hono/index.d.ts",
        "default": "./dist/adapters/hono/index.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/hono/index.d.ts",
        "default": "./dist/adapters/hono/index.cjs"
      }
    },
    "./adapters/express": {
      "import": {
        "types": "./dist/adapters/express/index.d.ts",
        "default": "./dist/adapters/express/index.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/express/index.d.ts",
        "default": "./dist/adapters/express/index.cjs"
      }
    },
    "./adapters/fastify": {
      "import": {
        "types": "./dist/adapters/fastify/index.d.ts",
        "default": "./dist/adapters/fastify/index.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/fastify/index.d.ts",
        "default": "./dist/adapters/fastify/index.cjs"
      }
    },
    "./adapters/nextjs": {
      "import": {
        "types": "./dist/adapters/nextjs/index.d.ts",
        "default": "./dist/adapters/nextjs/index.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/nextjs/index.d.ts",
        "default": "./dist/adapters/nextjs/index.cjs"
      }
    },
    "./adapters/core": {
      "import": {
        "types": "./dist/adapters/core/index.d.ts",
        "default": "./dist/adapters/core/index.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/core/index.d.ts",
        "default": "./dist/adapters/core/index.cjs"
      }
    },
    "./adapters/utils": {
      "import": {
        "types": "./dist/adapters/utils.d.ts",
        "default": "./dist/adapters/utils.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/utils.d.ts",
        "default": "./dist/adapters/utils.cjs"
      }
    },
    "./adapters/types": {
      "import": {
        "types": "./dist/adapters/types.d.ts",
        "default": "./dist/adapters/types.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/types.d.ts",
        "default": "./dist/adapters/types.cjs"
      }
    },
    "./mcp": {
      "import": {
        "types": "./dist/adapters/mcp-tools.d.ts",
        "default": "./dist/adapters/mcp-tools.js"
      },
      "require": {
        "types": "./dist/cjs/adapters/mcp-tools.d.ts",
        "default": "./dist/adapters/mcp-tools.cjs"
      }
    }
  },
  "files": [
    "dist/",
    "README.md",
    "LICENSE"
  ],
  "scripts": {
    "dev": "concurrently \"npm run dev:server\" \"npm run dev:client\"",
    "dev:server": "tsx watch dev/server/index.ts",
    "dev:client": "cd dev/client && vite",
    "dev:build": "concurrently \"npm run dev:build-server\" \"npm run dev:build-client\"",
    "dev:build-server": "vite build src/server --watch --mode development",
    "dev:build-client": "vite build src/client --watch --mode development",
    "dev:mcp-app": "vite build --config vite.config.mcp-app.ts --watch",
    "prebuild": "node -e \"require('node:fs').rmSync('dist/cjs', { recursive: true, force: true })\"",
    "build": "npm run build:server && npm run build:mcp-app && npm run build:client && npm run build:adapters && npm run build:cli",
    "build:mcp-app": "vite build --config vite.config.mcp-app.ts && tsx scripts/generate-mcp-app-html.ts",
    "build:server": "vite build --config vite.config.server.ts",
    "build:client": "vite build --config vite.config.client.ts",
    "analyze:client": "vite build --config vite.config.client.ts && open dist/client-bundle-stats.html",
    "build:adapters": "vite build --config vite.config.adapters.ts",
    "build:cli": "vite build --config vite.config.cli.ts",
    "test": "vitest run",
    "test:watch": "vitest --watch",
    "test:server": "vitest run --config vitest.config.server.ts",
    "test:server:watch": "vitest --watch --config vitest.config.server.ts",
    "test:coverage": "vitest run --coverage",
    "test:coverage:watch": "vitest --watch --coverage",
    "test:coverage:ui": "vitest --ui --coverage",
    "test:coverage:postgres": "COVERAGE_DIR=./coverage/postgres vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:mysql": "TEST_DB_TYPE=mysql COVERAGE_DIR=./coverage/mysql vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:sqlite": "TEST_DB_TYPE=sqlite COVERAGE_DIR=./coverage/sqlite vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:duckdb": "TEST_DB_TYPE=duckdb COVERAGE_DIR=./coverage/duckdb vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:databend": "TEST_DB_TYPE=databend COVERAGE_DIR=./coverage/databend vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:snowflake": "TEST_DB_TYPE=snowflake COVERAGE_DIR=./coverage/snowflake vitest run --coverage --config vitest.config.server.ts",
    "test:coverage:all": "npm run test:coverage:postgres && npm run test:coverage:mysql && npm run test:coverage:sqlite && npm run test:coverage:duckdb && npm run test:coverage:databend && npm run coverage:index",
    "test:coverage:complete": "npm run test:coverage:all && npm run test:client:coverage && npm run coverage:index",
    "test:client": "vitest run --config vitest.config.client.ts",
    "test:client:watch": "vitest --watch --config vitest.config.client.ts",
    "test:client:coverage": "vitest run --coverage --config vitest.config.client.ts",
    "test:client:ui": "vitest --ui --config vitest.config.client.ts",
    "test:e2e": "playwright test",
    "test:e2e:ui": "playwright test --ui",
    "coverage:index": "node scripts/merge-coverage.js",
    "coverage:open": "open coverage/index.html",
    "coverage:merged:open": "open coverage/merged/index.html",
    "coverage:client:open": "open coverage/client/index.html",
    "test:postgres": "vitest run --config vitest.config.server.ts",
    "test:mysql": "TEST_DB_TYPE=mysql vitest run --config vitest.config.server.ts",
    "test:sqlite": "TEST_DB_TYPE=sqlite vitest run --config vitest.config.server.ts",
    "test:duckdb": "TEST_DB_TYPE=duckdb vitest run --config vitest.config.server.ts",
    "test:databend": "TEST_DB_TYPE=databend vitest run --config vitest.config.server.ts",
    "test:snowflake": "TEST_DB_TYPE=snowflake vitest run --config vitest.config.server.ts",
    "test:all": "vitest run && TEST_DB_TYPE=mysql vitest run --config vitest.config.server.ts && TEST_DB_TYPE=sqlite vitest run --config vitest.config.server.ts && TEST_DB_TYPE=duckdb vitest run --config vitest.config.server.ts && TEST_DB_TYPE=databend vitest run --config vitest.config.server.ts",
    "test:setup": "docker-compose up -d",
    "test:teardown": "docker-compose down",
    "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.tests.json && tsc --noEmit -p tsconfig.client.tests.json",
    "lint": "eslint 'src/**/*.{ts,tsx}' 'tests/**/*.ts' 'perf/**/*.ts'",
    "lint:fix": "eslint 'src/**/*.{ts,tsx}' 'tests/**/*.ts' 'perf/**/*.ts' --fix",
    "quality": "sh -c 'fallow audit \"$@\"; exit 0' --",
    "quality:health": "fallow health",
    "quality:graph": "npx madge --image dependency-graph.svg --extensions ts,tsx src",
    "perf": "tsx perf/run.ts",
    "perf:seed": "tsx perf/run.ts --seed-only",
    "check:exports": "attw --pack . && publint --level error",
    "prepublishOnly": "npm run lint && npm run typecheck && npm run build && npm run check:exports",
    "dev:db:up": "cd dev && docker-compose up -d",
    "dev:db:down": "cd dev && docker-compose down",
    "dev:db:migrate": "cd dev && tsx scripts/migrate.ts",
    "dev:db:seed": "cd dev && tsx scripts/seed.ts",
    "dev:setup": "npm run dev:db:up && npm run dev:db:migrate && npm run dev:db:seed",
    "i18n:push": "source .env 2>/dev/null; crowdin upload sources && crowdin upload translations",
    "i18n:pull": "source .env 2>/dev/null; crowdin download",
    "preview": "npm run build:client && npm run preview:build && concurrently \"npm run dev:server\" \"npm run preview:serve\"",
    "preview:build": "cd dev/client && vite build --config vite.config.preview.ts",
    "preview:serve": "cd dev/client && vite preview --config vite.config.preview.ts"
  },
  "keywords": [
    "drizzle-orm",
    "drizzle",
    "cube",
    "cubejs",
    "semantic-layer",
    "analytics",
    "dashboard",
    "react",
    "typescript",
    "type-safe",
    "sql-injection-protection",
    "hono",
    "postgres",
    "mysql",
    "sqlite"
  ],
  "author": "Clifton Cunningham <clifton.cunningham@gmail.com>",
  "license": "MIT",
  "homepage": "https://try.drizzle-cube.dev",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/cliftonc/drizzle-cube.git"
  },
  "bugs": {
    "url": "https://github.com/cliftonc/drizzle-cube/issues"
  },
  "peerDependencies": {
    "@anthropic-ai/sdk": ">=0.30.0",
    "@google/generative-ai": ">=0.21.0",
    "@neondatabase/serverless": "^1.0.1",
    "@nivo/heatmap": "^0.99.0",
    "@xyflow/react": "^12.0.0",
    "cors": "^2.8.5",
    "d3": "^7.9.0",
    "drizzle-orm": "^0.45.0",
    "elkjs": "^0.9.0 || ^0.11.1",
    "exceljs": ">=4.0.0",
    "express": "^5.0.0",
    "fastify": "^5.0.0",
    "hono": "^4.0.0",
    "modern-screenshot": "^4.4.0",
    "openai": ">=4.0.0",
    "react": "^18.0.0",
    "react-dom": "^18.0.0",
    "react-grid-layout": "^2.1.1",
    "react-is": "^19.2.3",
    "recharts": "^3.5.1"
  },
  "peerDependenciesMeta": {
    "react": {
      "optional": true
    },
    "react-dom": {
      "optional": true
    },
    "react-grid-layout": {
      "optional": true
    },
    "react-is": {
      "optional": true
    },
    "drizzle-orm": {
      "optional": true
    },
    "hono": {
      "optional": true
    },
    "express": {
      "optional": true
    },
    "fastify": {
      "optional": true
    },
    "cors": {
      "optional": true
    },
    "@neondatabase/serverless": {
      "optional": true
    },
    "next": {
      "optional": true
    },
    "@nivo/heatmap": {
      "optional": true
    },
    "modern-screenshot": {
      "optional": true
    },
    "@duckdb/node-api": {
      "optional": true
    },
    "@leonardovida-md/drizzle-neo-duckdb": {
      "optional": true
    },
    "databend-driver": {
      "optional": true
    },
    "drizzle-databend": {
      "optional": true
    },
    "snowflake-sdk": {
      "optional": true
    },
    "drizzle-snowflake": {
      "optional": true
    },
    "@anthropic-ai/sdk": {
      "optional": true
    },
    "openai": {
      "optional": true
    },
    "@google/generative-ai": {
      "optional": true
    },
    "@xyflow/react": {
      "optional": true
    },
    "elkjs": {
      "optional": true
    },
    "exceljs": {
      "optional": true
    }
  },
  "optionalDependencies": {
    "@duckdb/node-api": "^1.4.3-r.3",
    "@leonardovida-md/drizzle-neo-duckdb": "^1.2.2"
  },
  "devDependencies": {
    "@anthropic-ai/sdk": "^0.105.0",
    "@arethetypeswrong/cli": "^0.18.3",
    "@crowdin/cli": "^4.14.1",
    "@eslint/eslintrc": "^3.3.1",
    "@eslint/js": "^10.0.0",
    "@fastify/cors": "^11.1.0",
    "@google/generative-ai": "^0.24.1",
    "@hono/node-server": "^2.0.0",
    "@iconify-icons/heroicons-outline": "^1.2.5",
    "@iconify-icons/heroicons-solid": "^1.2.6",
    "@iconify-icons/tabler": "^1.2.95",
    "@iconify/react": "^6.0.0",
    "@neondatabase/serverless": "^1.0.1",
    "@nivo/heatmap": "^0.99.0",
    "@playwright/test": "^1.58.2",
    "@tailwindcss/postcss": "^4.1.12",
    "@tanstack/react-query-devtools": "^5.91.2",
    "@testing-library/dom": "^10.4.1",
    "@testing-library/jest-dom": "^6.8.0",
    "@testing-library/react": "^16.3.0",
    "@testing-library/user-event": "^14.6.1",
    "@types/better-sqlite3": "^7.6.0",
    "@types/cors": "^2.8.17",
    "@types/d3": "^7.4.3",
    "@types/express": "^5.0.0",
    "@types/node": "^24.0.0",
    "@types/react": "^18.0.0",
    "@types/react-dom": "^18.0.0",
    "@types/supertest": "^7.0.0",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "@vitejs/plugin-react": "^6.0.0",
    "@vitest/coverage-v8": "^4.0.0",
    "@vitest/ui": "^4.0.0",
    "@xyflow/react": "^12.10.1",
    "better-sqlite3": "^12.0.0",
    "concurrently": "^10.0.0",
    "cors": "^2.8.5",
    "d3": "^7.9.0",
    "databend-driver": "^0.34.0",
    "dotenv": "^17.2.3",
    "drizzle-databend": "^0.1.12",
    "drizzle-kit": "^0.31.8",
    "drizzle-orm": "^0.45.0",
    "drizzle-snowflake": "^0.1.13",
    "elkjs": "^0.11.1",
    "eslint": "^10.0.0",
    "eslint-plugin-react-hooks": "^7.0.1",
    "eslint-plugin-unused-imports": "^4.4.1",
    "exceljs": "^4.4.0",
    "express": "^5.1.0",
    "fallow": "2.100.0",
    "fastify": "^5.6.2",
    "globals": "^17.0.0",
    "hono": "^4.0.0",
    "html2canvas": "^1.4.1",
    "jsdom": "^29.0.0",
    "modern-screenshot": "^4.6.7",
    "msw": "^2.12.7",
    "mysql2": "^3.14.3",
    "next": "^15.5.9",
    "openai": "^6.25.0",
    "postcss": "^8.5.6",
    "postgres": "^3.4.7",
    "publint": "^0.3.21",
    "react": "^18.0.0",
    "react-dom": "^18.0.0",
    "react-grid-layout": "^2.1.1",
    "react-hook-form": "^7.68.0",
    "react-resizable": "^4.0.0",
    "recharts": "^3.5.1",
    "rollup-plugin-visualizer": "^7.0.0",
    "snowflake-sdk": "^2.3.4",
    "sql-formatter": "^15.6.6",
    "supertest": "^7.0.0",
    "tailwindcss": "^4.1.12",
    "tsx": "^4.20.5",
    "typescript": "^5.0.0",
    "vite": "^8.0.0",
    "vite-plugin-dts": "^5.0.0",
    "vite-plugin-singlefile": "^2.3.2",
    "vitest": "^4.0.0",
    "zod": "^4.0.0"
  },
  "overrides": {
    "esbuild": ">=0.25.0",
    "ajv-draft-04": {
      "ajv": "^8.17.1"
    }
  },
  "dependencies": {
    "@modelcontextprotocol/ext-apps": "^1.3.2",
    "@modelcontextprotocol/sdk": "^1.28.0",
    "@tanstack/react-query": "^5.90.12",
    "highlight.js": "^11.9.0",
    "lz-string": "^1.5.0",
    "markdown-to-jsx": "^9.7.6",
    "react-intersection-observer": "^10.0.0",
    "react-router-dom": "^7.10.1",
    "zustand": "^5.0.9"
  }
}
