drizzle-cube
Version:
Drizzle ORM-first semantic layer with Cube.js compatibility. Type-safe analytics and dashboards with SQL injection protection.
250 lines (249 loc) • 8.43 kB
JSON
{
"name": "drizzle-cube",
"version": "0.1.60",
"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",
"exports": {
"./server": {
"types": "./dist/server/index.d.ts",
"import": "./dist/server/index.js",
"require": "./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/styles.css": "./dist/client/styles.css",
"./adapters/hono": {
"types": "./dist/adapters/hono/index.d.ts",
"import": "./dist/adapters/hono/index.js",
"require": "./dist/adapters/hono/index.cjs"
},
"./adapters/express": {
"types": "./dist/adapters/express/index.d.ts",
"import": "./dist/adapters/express/index.js",
"require": "./dist/adapters/express/index.cjs"
},
"./adapters/fastify": {
"types": "./dist/adapters/fastify/index.d.ts",
"import": "./dist/adapters/fastify/index.js",
"require": "./dist/adapters/fastify/index.cjs"
},
"./adapters/nextjs": {
"types": "./dist/adapters/nextjs/index.d.ts",
"import": "./dist/adapters/nextjs/index.js",
"require": "./dist/adapters/nextjs/index.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",
"build": "npm run build:server && npm run build:client && npm run build:adapters",
"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",
"test": "vitest run",
"test:watch": "vitest --watch",
"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",
"test:coverage:mysql": "TEST_DB_TYPE=mysql COVERAGE_DIR=./coverage/mysql vitest run --coverage",
"test:coverage:sqlite": "TEST_DB_TYPE=sqlite COVERAGE_DIR=./coverage/sqlite vitest run --coverage",
"test:coverage:all": "npm run test:coverage:postgres && npm run test:coverage:mysql && npm run test:coverage:sqlite && 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",
"coverage:index": "node scripts/merge-coverage.js",
"coverage:open": "open coverage/index.html",
"coverage:client:open": "open coverage/client/index.html",
"test:postgres": "vitest run",
"test:mysql": "TEST_DB_TYPE=mysql vitest run",
"test:sqlite": "TEST_DB_TYPE=sqlite vitest run",
"test:all": "vitest run && TEST_DB_TYPE=mysql vitest run && TEST_DB_TYPE=sqlite vitest run",
"test:setup": "docker-compose up -d",
"test:teardown": "docker-compose down",
"typecheck": "tsc --noEmit",
"lint": "eslint src/**/*.ts tests/**/*.ts",
"lint:fix": "eslint src/**/*.ts tests/**/*.ts --fix",
"prepublishOnly": "npm run lint && npm run typecheck && npm run build",
"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"
},
"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": "https://github.com/cliftonc/drizzle-cube.git"
},
"bugs": {
"url": "https://github.com/cliftonc/drizzle-cube/issues"
},
"peerDependencies": {
"@neondatabase/serverless": "^1.0.1",
"cors": "^2.8.5",
"d3": "^7.9.0",
"drizzle-orm": "^0.44.4",
"express": "^5.0.0",
"fastify": "^5.0.0",
"hono": "^4.0.0",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-grid-layout": "^1.4.0",
"recharts": "^3.0.0"
},
"peerDependenciesMeta": {
"react": {
"optional": true
},
"react-dom": {
"optional": true
},
"react-grid-layout": {
"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
}
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.1",
"@eslint/js": "^9.34.0",
"@fastify/cors": "^11.1.0",
"@heroicons/react": "^2.2.0",
"@hono/node-server": "^1.19.0",
"@iconify-icons/tabler": "^1.2.95",
"@iconify/react": "^6.0.0",
"@neondatabase/serverless": "^1.0.1",
"@tailwindcss/postcss": "^4.1.12",
"@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/react-grid-layout": "^1.3.5",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@vitejs/plugin-react": "^5.0.0",
"@vitest/coverage-v8": "^4.0.0",
"@vitest/ui": "^4.0.0",
"better-sqlite3": "^12.0.0",
"concurrently": "^9.0.0",
"cors": "^2.8.5",
"drizzle-kit": "^0.31.4",
"drizzle-orm": "^0.44.4",
"eslint": "^9.34.0",
"express": "^5.1.0",
"fastify": "^5.5.0",
"globals": "^16.3.0",
"hono": "^4.0.0",
"jsdom": "^27.0.0",
"mysql2": "^3.14.3",
"next": "^15.0.0",
"postcss": "^8.5.6",
"postgres": "^3.4.7",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-grid-layout": "^1.4.0",
"react-hook-form": "^7.47.0",
"react-resizable": "^3.0.5",
"recharts": "^3.0.0",
"rollup-plugin-visualizer": "^6.0.3",
"sql-formatter": "^15.6.6",
"supertest": "^7.0.0",
"tailwindcss": "^4.1.12",
"tsx": "^4.20.5",
"typescript": "^5.0.0",
"vite": "^7.0.0",
"vite-plugin-dts": "^4.0.0",
"vitest": "^4.0.0",
"zod": "^4.0.0"
},
"dependencies": {
"@tanstack/react-query": "^5.85.5",
"@types/dagre": "^0.7.53",
"dagre": "^0.8.5",
"react-intersection-observer": "^10.0.0",
"react-router-dom": "^7.8.2",
"reactflow": "^11.11.4"
}
}