kysely-codegen
Version:
`kysely-codegen` generates Kysely type definitions from your database. That's it.
112 lines • 5.16 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadConfig = exports.defineConfig = exports.configSchema = exports.dialectNameSchema = void 0;
const cosmiconfig_1 = require("cosmiconfig");
const zod_1 = require("zod");
const array_expression_node_1 = require("../generator/ast/array-expression-node");
const extends_clause_node_1 = require("../generator/ast/extends-clause-node");
const generic_expression_node_1 = require("../generator/ast/generic-expression-node");
const identifier_node_1 = require("../generator/ast/identifier-node");
const infer_clause_node_1 = require("../generator/ast/infer-clause-node");
const literal_node_1 = require("../generator/ast/literal-node");
const mapped_type_node_1 = require("../generator/ast/mapped-type-node");
const object_expression_node_1 = require("../generator/ast/object-expression-node");
const raw_expression_node_1 = require("../generator/ast/raw-expression-node");
const union_expression_node_1 = require("../generator/ast/union-expression-node");
const log_level_1 = require("../generator/logger/log-level");
const logger_1 = require("../generator/logger/logger");
const dialect_1 = require("../introspector/dialect");
const database_metadata_1 = require("../introspector/metadata/database-metadata");
exports.dialectNameSchema = zod_1.z.enum([
'bun-sqlite',
'kysely-bun-sqlite',
'libsql',
'mssql',
'mysql',
'postgres',
'sqlite',
'worker-bun-sqlite',
]);
const expressionNodeSchema = zod_1.z.union([
zod_1.z.instanceof(array_expression_node_1.ArrayExpressionNode),
zod_1.z.instanceof(extends_clause_node_1.ExtendsClauseNode),
zod_1.z.instanceof(generic_expression_node_1.GenericExpressionNode),
zod_1.z.instanceof(identifier_node_1.IdentifierNode),
zod_1.z.instanceof(infer_clause_node_1.InferClauseNode),
zod_1.z.instanceof(literal_node_1.LiteralNode),
zod_1.z.instanceof(mapped_type_node_1.MappedTypeNode),
zod_1.z.instanceof(object_expression_node_1.ObjectExpressionNode),
zod_1.z.instanceof(raw_expression_node_1.RawExpressionNode),
zod_1.z.instanceof(union_expression_node_1.UnionExpressionNode),
zod_1.z.string(),
]);
const overridesSchema = zod_1.z
.object({ columns: zod_1.z.record(zod_1.z.string(), expressionNodeSchema).optional() })
.optional();
exports.configSchema = zod_1.z.object({
camelCase: zod_1.z.boolean().optional(),
customImports: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
dateParser: zod_1.z.enum(['string', 'timestamp']).optional(),
defaultSchemas: zod_1.z.array(zod_1.z.string()).optional(),
dialect: exports.dialectNameSchema.nullable().optional(),
domains: zod_1.z.boolean().optional(),
envFile: zod_1.z.string().nullable().optional(),
excludePattern: zod_1.z.string().nullable().optional(),
includePattern: zod_1.z.string().nullable().optional(),
logger: zod_1.z.instanceof(logger_1.Logger).optional(),
logLevel: zod_1.z.enum(log_level_1.LOG_LEVELS).optional(),
numericParser: zod_1.z
.enum(['number', 'number-or-string', 'string'])
.optional(),
outFile: zod_1.z.string().nullable().optional(),
overrides: overridesSchema.optional(),
partitions: zod_1.z.boolean().optional(),
postprocess: zod_1.z.function().optional(),
print: zod_1.z.boolean().optional(),
runtimeEnums: zod_1.z
.union([
zod_1.z.boolean(),
zod_1.z.enum(['pascal-case', 'screaming-snake-case']),
])
.optional(),
serializer: zod_1.z
.object({
serializeFile: zod_1.z.function({
input: zod_1.z.tuple([
zod_1.z.instanceof(database_metadata_1.DatabaseMetadata),
zod_1.z.instanceof(dialect_1.IntrospectorDialect),
zod_1.z
.object({
camelCase: zod_1.z.boolean().optional(),
customImports: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
defaultSchemas: zod_1.z.string().array().optional(),
overrides: overridesSchema.optional(),
typeMapping: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
})
.optional(),
]),
output: zod_1.z.string(),
}),
})
.optional(),
singularize: zod_1.z
.union([zod_1.z.boolean(), zod_1.z.record(zod_1.z.string(), zod_1.z.string())])
.optional(),
skipAutogeneratedFileComment: zod_1.z.boolean().optional(),
typeMapping: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
typeOnlyImports: zod_1.z.boolean().optional(),
url: zod_1.z.string().optional(),
verify: zod_1.z.boolean().optional(),
});
const defineConfig = (config) => {
return config;
};
exports.defineConfig = defineConfig;
const loadConfig = (config) => {
const explorer = (0, cosmiconfig_1.cosmiconfigSync)('kysely-codegen');
return config?.configFile
? explorer.load(config.configFile)
: explorer.search();
};
exports.loadConfig = loadConfig;
//# sourceMappingURL=config.js.map