@ork-orm/config
v0.0.1-alpha.1
Published
Shared configuration and Kysely instance management for Ork
Readme
@ork-orm/config
Shared configuration and Kysely instance management for Ork packages.
Purpose
This package centralizes configuration loading and Kysely instance creation across all Ork packages (cli, migrate, client), eliminating duplication and ensuring consistent database setup.
Key Features
- Priority-based config resolution: Explicit config > ork.config.ts > .config/ork.ts
- Centralized provider support: Easy to add new database providers
- Kysely dialect creation: Handles all provider-specific setup
- Type-safe configuration: Zod schema validation
Usage
Basic Kysely Creation
import { createKyselyFromConfig } from '@ork-orm/config'
// Uses config file discovery
const { kysely, config } = await createKyselyFromConfig()
// With explicit config
const { kysely } = await createKyselyFromConfig({
config: {
datasource: { provider: 'postgresql', url: process.env.DATABASE_URL! },
schema: './schema.prisma'
}
})
// From URL (auto-detects provider)
import { createKyselyFromUrl } from '@ork-orm/config'
const { kysely } = await createKyselyFromUrl(process.env.DATABASE_URL!)Configuration Loading Only
import { loadOrkConfig } from '@ork-orm/config'
const { config, configPath } = await loadOrkConfig({
cwd: '/path/to/project'
})Dialect Creation Only
import { createKyselyDialect } from '@ork-orm/config'
const dialect = await createKyselyDialect(config)
const kysely = new Kysely({ dialect })Configuration Priority
- Explicit config parameter (highest priority)
- Explicit configFile parameter
- ork.config.ts/js/mjs
- .config/ork.ts/js/mjs (lowest priority)
Supported Providers
postgresql- Standard PostgreSQLmysql- MySQLsqlite- SQLited1- Cloudflare D1
Adding New Providers
- Add to
SUPPORTED_PROVIDERSinsrc/constants.ts - Add URL pattern to
PROVIDER_URL_PATTERNS - Add metadata to
PROVIDER_METADATA - Add case in
src/dialect-factory.ts - Add peer dependency to
package.json
Package Dependencies
This package uses peer dependencies for database drivers, so only install what you need:
# PostgreSQL
npm install pg @types/pg
# MySQL
npm install mysql2
# SQLite
npm install better-sqlite3 @types/better-sqlite3
# Cloudflare D1
npm install kysely-d1