Shared configuration and Kysely instance management for Ork
Shared configuration and Kysely instance management for Ork packages.
This package centralizes configuration loading and Kysely instance creation across all Ork packages (cli, migrate, client), eliminating duplication and ensuring consistent database setup.
- 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
``typescript
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!)
`
`typescript
import { loadOrkConfig } from '@ork-orm/config'
const { config, configPath } = await loadOrkConfig({
cwd: '/path/to/project'
})
`
`typescript
import { createKyselyDialect } from '@ork-orm/config'
const dialect = await createKyselyDialect(config)
const kysely = new Kysely({ dialect })
`
1. Explicit config parameter (highest priority)
2. Explicit configFile parameter
3. ork.config.ts/js/mjs
4. .config/ork.ts/js/mjs (lowest priority)
- postgresql - Standard PostgreSQLmysql
- - MySQLsqlite
- - SQLited1
- - Cloudflare D1
1. Add to SUPPORTED_PROVIDERS in src/constants.tsPROVIDER_URL_PATTERNS
2. Add URL pattern to PROVIDER_METADATA
3. Add metadata to src/dialect-factory.ts
4. Add case in package.json
5. Add peer dependency to
This package uses peer dependencies for database drivers, so only install what you need:
`bashPostgreSQL
npm install pg @types/pg