"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { defaultTestConfig: () => defaultTestConfig, defineConfig: () => defineConfig, loadConfigFromFile: () => loadConfigFromFile, loadConfigFromPackageJson: () => loadConfigFromPackageJson }); module.exports = __toCommonJS(index_exports); // ../debug/dist/index.mjs var __defProp2 = Object.defineProperty; var __export2 = (target, all) => { for (var name in all) __defProp2(target, name, { get: all[name], enumerable: true }); }; var colors_exports = {}; __export2(colors_exports, { $: () => $, bgBlack: () => bgBlack, bgBlue: () => bgBlue, bgCyan: () => bgCyan, bgGreen: () => bgGreen, bgMagenta: () => bgMagenta, bgRed: () => bgRed, bgWhite: () => bgWhite, bgYellow: () => bgYellow, black: () => black, blue: () => blue, bold: () => bold, cyan: () => cyan, dim: () => dim, gray: () => gray, green: () => green, grey: () => grey, hidden: () => hidden, inverse: () => inverse, italic: () => italic, magenta: () => magenta, red: () => red, reset: () => reset, strikethrough: () => strikethrough, underline: () => underline, white: () => white, yellow: () => yellow }); var FORCE_COLOR; var NODE_DISABLE_COLORS; var NO_COLOR; var TERM; var isTTY = true; if (typeof process !== "undefined") { ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {}); isTTY = process.stdout && process.stdout.isTTY; } var $ = { enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY) }; function init(x, y) { let rgx = new RegExp(`\\x1b\\[${y}m`, "g"); let open = `\x1B[${x}m`, close = `\x1B[${y}m`; return function(txt) { if (!$.enabled || txt == null) return txt; return open + (!!~("" + txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close; }; } var reset = init(0, 0); var bold = init(1, 22); var dim = init(2, 22); var italic = init(3, 23); var underline = init(4, 24); var inverse = init(7, 27); var hidden = init(8, 28); var strikethrough = init(9, 29); var black = init(30, 39); var red = init(31, 39); var green = init(32, 39); var yellow = init(33, 39); var blue = init(34, 39); var magenta = init(35, 39); var cyan = init(36, 39); var white = init(37, 39); var gray = init(90, 39); var grey = init(90, 39); var bgBlack = init(40, 49); var bgRed = init(41, 49); var bgGreen = init(42, 49); var bgYellow = init(43, 49); var bgBlue = init(44, 49); var bgMagenta = init(45, 49); var bgCyan = init(46, 49); var bgWhite = init(47, 49); var MAX_ARGS_HISTORY = 100; var COLORS = ["green", "yellow", "blue", "magenta", "cyan", "red"]; var argsHistory = []; var lastTimestamp = Date.now(); var lastColor = 0; var processEnv = typeof process !== "undefined" ? process.env : {}; globalThis.DEBUG ??= processEnv.DEBUG ?? ""; globalThis.DEBUG_COLORS ??= processEnv.DEBUG_COLORS ? processEnv.DEBUG_COLORS === "true" : true; var topProps = { enable(namespace) { if (typeof namespace === "string") { globalThis.DEBUG = namespace; } }, disable() { const prev = globalThis.DEBUG; globalThis.DEBUG = ""; return prev; }, // this is the core logic to check if logging should happen or not enabled(namespace) { const listenedNamespaces = globalThis.DEBUG.split(",").map((s) => { return s.replace(/[.+?^${}()|[\]\\]/g, "\\$&"); }); const isListened = listenedNamespaces.some((listenedNamespace) => { if (listenedNamespace === "" || listenedNamespace[0] === "-") return false; return namespace.match(RegExp(listenedNamespace.split("*").join(".*") + "$")); }); const isExcluded = listenedNamespaces.some((listenedNamespace) => { if (listenedNamespace === "" || listenedNamespace[0] !== "-") return false; return namespace.match(RegExp(listenedNamespace.slice(1).split("*").join(".*") + "$")); }); return isListened && !isExcluded; }, log: (...args) => { const [namespace, format, ...rest] = args; const logWithFormatting = console.warn ?? console.log; logWithFormatting(`${namespace} ${format}`, ...rest); }, formatters: {} // not implemented }; function debugCreate(namespace) { const instanceProps = { color: COLORS[lastColor++ % COLORS.length], enabled: topProps.enabled(namespace), namespace, log: topProps.log, extend: () => { } // not implemented }; const debugCall = (...args) => { const { enabled, namespace: namespace2, color, log } = instanceProps; if (args.length !== 0) { argsHistory.push([namespace2, ...args]); } if (argsHistory.length > MAX_ARGS_HISTORY) { argsHistory.shift(); } if (topProps.enabled(namespace2) || enabled) { const stringArgs = args.map((arg) => { if (typeof arg === "string") { return arg; } return safeStringify(arg); }); const ms = `+${Date.now() - lastTimestamp}ms`; lastTimestamp = Date.now(); if (globalThis.DEBUG_COLORS) { log(colors_exports[color](bold(namespace2)), ...stringArgs, colors_exports[color](ms)); } else { log(namespace2, ...stringArgs, ms); } } }; return new Proxy(debugCall, { get: (_, prop) => instanceProps[prop], set: (_, prop, value) => instanceProps[prop] = value }); } var Debug = new Proxy(debugCreate, { get: (_, prop) => topProps[prop], set: (_, prop, value) => topProps[prop] = value }); function safeStringify(value, indent = 2) { const cache = /* @__PURE__ */ new Set(); return JSON.stringify( value, (key, value2) => { if (typeof value2 === "object" && value2 !== null) { if (cache.has(value2)) { return `[Circular *]`; } cache.add(value2); } else if (typeof value2 === "bigint") { return value2.toString(); } return value2; }, indent ); } // ../driver-adapter-utils/dist/index.mjs function isDriverAdapterError(error) { return error["name"] === "DriverAdapterError" && typeof error["cause"] === "object"; } function ok(value) { return { ok: true, value, map(fn) { return ok(fn(value)); }, flatMap(fn) { return fn(value); } }; } function err(error) { return { ok: false, error, map() { return err(error); }, flatMap() { return err(error); } }; } var debug = Debug("driver-adapter-utils"); var ErrorRegistryInternal = class { registeredErrors = []; consumeError(id) { return this.registeredErrors[id]; } registerNewError(error) { let i = 0; while (this.registeredErrors[i] !== void 0) { i++; } this.registeredErrors[i] = { error }; return i; } }; var bindMigrationAwareSqlAdapterFactory = (adapterFactory) => { const errorRegistry = new ErrorRegistryInternal(); const boundFactory = { adapterName: adapterFactory.adapterName, provider: adapterFactory.provider, errorRegistry, connect: async (...args) => { const ctx = await wrapAsync(errorRegistry, adapterFactory.connect.bind(adapterFactory))(...args); return ctx.map((ctx2) => bindAdapter(ctx2, errorRegistry)); }, connectToShadowDb: async (...args) => { const ctx = await wrapAsync(errorRegistry, adapterFactory.connectToShadowDb.bind(adapterFactory))(...args); return ctx.map((ctx2) => bindAdapter(ctx2, errorRegistry)); } }; return boundFactory; }; var bindAdapter = (adapter, errorRegistry = new ErrorRegistryInternal()) => { const boundAdapter = { adapterName: adapter.adapterName, errorRegistry, queryRaw: wrapAsync(errorRegistry, adapter.queryRaw.bind(adapter)), executeRaw: wrapAsync(errorRegistry, adapter.executeRaw.bind(adapter)), executeScript: wrapAsync(errorRegistry, adapter.executeScript.bind(adapter)), dispose: wrapAsync(errorRegistry, adapter.dispose.bind(adapter)), provider: adapter.provider, startTransaction: async (...args) => { const ctx = await wrapAsync(errorRegistry, adapter.startTransaction.bind(adapter))(...args); return ctx.map((ctx2) => bindTransaction(errorRegistry, ctx2)); } }; if (adapter.getConnectionInfo) { boundAdapter.getConnectionInfo = wrapSync(errorRegistry, adapter.getConnectionInfo.bind(adapter)); } return boundAdapter; }; var bindTransaction = (errorRegistry, transaction) => { return { adapterName: transaction.adapterName, provider: transaction.provider, options: transaction.options, queryRaw: wrapAsync(errorRegistry, transaction.queryRaw.bind(transaction)), executeRaw: wrapAsync(errorRegistry, transaction.executeRaw.bind(transaction)), commit: wrapAsync(errorRegistry, transaction.commit.bind(transaction)), rollback: wrapAsync(errorRegistry, transaction.rollback.bind(transaction)) }; }; function wrapAsync(registry, fn) { return async (...args) => { try { return ok(await fn(...args)); } catch (error) { debug("[error@wrapAsync]", error); if (isDriverAdapterError(error)) { return err(error.cause); } const id = registry.registerNewError(error); return err({ kind: "GenericJs", id }); } }; } function wrapSync(registry, fn) { return (...args) => { try { return ok(fn(...args)); } catch (error) { debug("[error@wrapSync]", error); if (isDriverAdapterError(error)) { return err(error.cause); } const id = registry.registerNewError(error); return err({ kind: "GenericJs", id }); } }; } var mockAdapterErrors = { queryRaw: new Error("Not implemented: queryRaw"), executeRaw: new Error("Not implemented: executeRaw"), startTransaction: new Error("Not implemented: startTransaction"), executeScript: new Error("Not implemented: executeScript"), dispose: new Error("Not implemented: dispose") }; // src/PrismaConfig.ts var import_effect3 = require("effect"); var import_Function = require("effect/Function"); // src/defineConfig.ts var import_effect = require("effect"); // src/defaultConfig.ts function defaultConfig() { return makePrismaConfigInternal({ loadedFromFile: null, deprecatedPackageJson: null }); } // src/defineConfig.ts function validateExperimentalFeatures(config) { const experimental = config.experimental || {}; if (config.adapter && !experimental.adapter) { return import_effect.Either.left(new Error("The `adapter` configuration requires `experimental.adapter` to be set to `true`.")); } if (config.studio && !experimental.studio) { return import_effect.Either.left(new Error("The `studio` configuration requires `experimental.studio` to be set to `true`.")); } if (config.tables?.external && !experimental.externalTables) { return import_effect.Either.left( new Error("The `tables.external` configuration requires `experimental.externalTables` to be set to `true`.") ); } if (config.migrations?.initShadowDb && !experimental.externalTables) { return import_effect.Either.left( new Error( "The `migrations.initShadowDb` configuration requires `experimental.externalTables` to be set to `true`." ) ); } return import_effect.Either.right(config); } var debug2 = Debug("prisma:config:defineConfig"); function defineConfig(configInput) { const validationResult = validateExperimentalFeatures(configInput); if (validationResult._tag === "Left") { throw validationResult.left; } const config = defaultConfig(); debug2("[default]: %o", config); defineExperimentalConfig(config, configInput); defineSchemaConfig(config, configInput); defineAdapterConfig(config, configInput); defineStudioConfig(config, configInput); defineMigrationsConfig(config, configInput); defineTablesConfig(config, configInput); defineEnumsConfig(config, configInput); defineTypedSqlConfig(config, configInput); defineViewsConfig(config, configInput); return config; } function defineExperimentalConfig(config, configInput) { if (!configInput.experimental) { return; } config.experimental = configInput.experimental; debug2("[config.experimental]: %o", config.experimental); } function defineSchemaConfig(config, configInput) { if (!configInput.schema) { return; } config.schema = configInput.schema; debug2("[config.schema]: %o", config.schema); } function defineMigrationsConfig(config, configInput) { if (!configInput.migrations) { return; } config.migrations = configInput.migrations; debug2("[config.migrations]: %o", config.migrations); } function defineTypedSqlConfig(config, configInput) { if (!configInput.typedSql) { return; } config.typedSql = configInput.typedSql; debug2("[config.typedSql]: %o", config.typedSql); } function defineViewsConfig(config, configInput) { if (!configInput.views) { return; } config.views = configInput.views; debug2("[config.views]: %o", config.views); } function defineTablesConfig(config, configInput) { if (!configInput.tables) { return; } config.tables = configInput.tables; debug2("[config.tables]: %o", config.tables); } function defineEnumsConfig(config, configInput) { if (!configInput.enums) { return; } config.enums = configInput.enums; debug2("[config.enums]: %o", config.enums); } function defineStudioConfig(config, configInput) { if (!configInput.studio?.adapter) { return; } const { adapter: getAdapterFactory } = configInput.studio; config.studio = { adapter: async () => { const adapterFactory = await getAdapterFactory(); debug2("[config.studio.adapter]: %o", adapterFactory.adapterName); return adapterFactory; } }; debug2("[config.studio]: %o", config.studio); } function defineAdapterConfig(config, configInput) { if (!configInput.adapter) { return; } const { adapter: getAdapterFactory } = configInput; config.adapter = async () => { const adapterFactory = await getAdapterFactory(); debug2("[config.adapter]: %o", adapterFactory.adapterName); return bindMigrationAwareSqlAdapterFactory(adapterFactory); }; debug2("[config.adapter]: %o", config.adapter); } // src/loadConfigFromPackageJson.ts var import_promises = require("node:fs/promises"); var import_node_process = __toESM(require("node:process")); var import_effect2 = require("effect"); var import_package = require("empathic/package"); var PrismaConfigPackageJsonShape = import_effect2.Schema.Struct({ schema: import_effect2.Schema.optional(import_effect2.Schema.String), seed: import_effect2.Schema.optional(import_effect2.Schema.NonEmptyString) }); async function loadConfigFromPackageJson(cwd = import_node_process.default.cwd()) { const pkgPath = (0, import_package.up)({ cwd }); if (pkgPath === void 0) { return null; } const pkgJson = await (0, import_promises.readFile)(pkgPath, { encoding: "utf-8" }).then((p) => JSON.parse(p)); const deprecatedConfig = pkgJson["prisma"]; if (deprecatedConfig === void 0) { return null; } if (Object.keys(deprecatedConfig).length === 1 && deprecatedConfig["prismaCommit"] !== void 0) { return null; } return { config: deprecatedConfig, loadedFromFile: pkgPath }; } // src/PrismaConfig.ts var debug3 = Debug("prisma:config:PrismaConfig"); var SqlMigrationAwareDriverAdapterFactoryShape = import_effect3.Schema.declare( (input) => { return typeof input === "function"; }, { identifier: "SqlMigrationAwareDriverAdapterFactory", encode: import_effect3.identity, decode: import_effect3.identity } ); var ErrorCapturingSqlMigrationAwareDriverAdapterFactoryShape = import_effect3.Schema.declare( (input) => { return typeof input === "function"; }, { identifier: "ErrorCapturingSqlMigrationAwareDriverAdapterFactory", encode: import_effect3.identity, decode: import_effect3.identity } ); var ExperimentalConfigShape = import_effect3.Schema.Struct({ adapter: import_effect3.Schema.optional(import_effect3.Schema.Boolean), studio: import_effect3.Schema.optional(import_effect3.Schema.Boolean), externalTables: import_effect3.Schema.optional(import_effect3.Schema.Boolean) }); if (false) { __testExperimentalConfigShapeValueA; __testExperimentalConfigShapeValueB; } var MigrationsConfigShape = import_effect3.Schema.Struct({ path: import_effect3.Schema.optional(import_effect3.Schema.String), initShadowDb: import_effect3.Schema.optional(import_effect3.Schema.String), seed: import_effect3.Schema.optional(import_effect3.Schema.NonEmptyString) }); if (false) { __testMigrationsConfigShapeValueA; __testMigrationsConfigShapeValueB; } var TablesConfigShape = import_effect3.Schema.Struct({ external: import_effect3.Schema.optional(import_effect3.Schema.mutable(import_effect3.Schema.Array(import_effect3.Schema.String))) }); if (false) { __testTablesConfigShapeValueA; __testTablesConfigShapeValueB; } var EnumsConfigShape = import_effect3.Schema.Struct({ external: import_effect3.Schema.optional(import_effect3.Schema.mutable(import_effect3.Schema.Array(import_effect3.Schema.String))) }); if (false) { __testEnumsConfigShapeValueA; __testEnumsConfigShapeValueB; } var ViewsConfigShape = import_effect3.Schema.Struct({ path: import_effect3.Schema.optional(import_effect3.Schema.String) }); if (false) { __testViewsConfigShapeValueA; __testViewsConfigShapeValueB; } var TypedSqlConfigShape = import_effect3.Schema.Struct({ path: import_effect3.Schema.optional(import_effect3.Schema.String) }); if (false) { __testTypedSqlConfigShapeValueA; __testTypedSqlConfigShapeValueB; } var PrismaStudioConfigShape = import_effect3.Schema.Struct({ /** * Instantiates the Prisma driver adapter to use for Prisma Studio. */ adapter: SqlMigrationAwareDriverAdapterFactoryShape }); if (false) { __testPrismaStudioConfigShapeValueA; __testPrismaStudioConfigShapeValueB; } if (false) { __testPrismaConfig; __testPrismaConfigInternal; } var PrismaConfigShape = import_effect3.Schema.Struct({ experimental: import_effect3.Schema.optional(ExperimentalConfigShape), schema: import_effect3.Schema.optional(import_effect3.Schema.String), studio: import_effect3.Schema.optional(PrismaStudioConfigShape), adapter: import_effect3.Schema.optional(SqlMigrationAwareDriverAdapterFactoryShape), migrations: import_effect3.Schema.optional(MigrationsConfigShape), tables: import_effect3.Schema.optional(TablesConfigShape), enums: import_effect3.Schema.optional(EnumsConfigShape), views: import_effect3.Schema.optional(ViewsConfigShape), typedSql: import_effect3.Schema.optional(TypedSqlConfigShape) }); if (false) { __testPrismaConfigValueA; __testPrismaConfigValueB; } function validateExperimentalFeatures2(config) { const experimental = config.experimental || {}; if (config.adapter && !experimental.adapter) { return import_effect3.Either.left(new Error("The `adapter` configuration requires `experimental.adapter` to be set to `true`.")); } if (config.studio && !experimental.studio) { return import_effect3.Either.left(new Error("The `studio` configuration requires `experimental.studio` to be set to `true`.")); } if (config.tables?.external && !experimental.externalTables) { return import_effect3.Either.left( new Error("The `tables.external` configuration requires `experimental.externalTables` to be set to `true`.") ); } if (config.enums?.external && !experimental.externalTables) { return import_effect3.Either.left( new Error("The `enums.external` configuration requires `experimental.externalTables` to be set to `true`.") ); } if (config.migrations?.initShadowDb && !experimental.externalTables) { return import_effect3.Either.left( new Error( "The `migrations.initShadowDb` configuration requires `experimental.externalTables` to be set to `true`." ) ); } return import_effect3.Either.right(config); } function parsePrismaConfigShape(input) { return (0, import_Function.pipe)( import_effect3.Schema.decodeUnknownEither(PrismaConfigShape, {})(input, { onExcessProperty: "error" }), import_effect3.Either.flatMap(validateExperimentalFeatures2) ); } var PRISMA_CONFIG_INTERNAL_BRAND = Symbol.for("PrismaConfigInternal"); var PrismaConfigInternalShape = import_effect3.Schema.Struct({ ...import_effect3.Struct.omit(PrismaConfigShape.fields, "adapter"), adapter: import_effect3.Schema.optional(ErrorCapturingSqlMigrationAwareDriverAdapterFactoryShape), loadedFromFile: import_effect3.Schema.NullOr(import_effect3.Schema.String), deprecatedPackageJson: import_effect3.Schema.NullOr( import_effect3.Schema.Struct({ config: PrismaConfigPackageJsonShape, loadedFromFile: import_effect3.Schema.String }) ) }); if (false) { __testPrismaConfigInternalValueA; __testPrismaConfigInternalValueB; } function brandPrismaConfigInternal(config) { Object.defineProperty(config, "__brand", { value: PRISMA_CONFIG_INTERNAL_BRAND, writable: true, configurable: true, enumerable: false }); return config; } function parsePrismaConfigInternalShape(input) { debug3("Parsing PrismaConfigInternal: %o", input); if (typeof input === "object" && input !== null && input["__brand"] === PRISMA_CONFIG_INTERNAL_BRAND) { debug3("Short-circuit: input is already a PrismaConfigInternal object"); return import_effect3.Either.right(input); } return (0, import_Function.pipe)( import_effect3.Schema.decodeUnknownEither(PrismaConfigInternalShape, {})(input, { onExcessProperty: "error" }), // Brand the output type to make `PrismaConfigInternal` opaque, without exposing the `Effect/Brand` type // to the public API. // This is done to work around the following issues: // - https://github.com/microsoft/rushstack/issues/1308 // - https://github.com/microsoft/rushstack/issues/4034 // - https://github.com/microsoft/TypeScript/issues/58914 import_effect3.Either.map(brandPrismaConfigInternal) ); } function makePrismaConfigInternal(makeArgs) { return (0, import_Function.pipe)(PrismaConfigInternalShape.make(makeArgs), brandPrismaConfigInternal); } function parseDefaultExport(defaultExport) { const parseResultEither = (0, import_Function.pipe)( // If the given config conforms to the `PrismaConfig` shape, feed it to `defineConfig`. parsePrismaConfigShape(defaultExport), import_effect3.Either.map((config) => { debug3("Parsed `PrismaConfig` shape: %o", config); return defineConfig(config); }), // Otherwise, try to parse it as a `PrismaConfigInternal` shape. import_effect3.Either.orElse(() => parsePrismaConfigInternalShape(defaultExport)) ); if (import_effect3.Either.isLeft(parseResultEither)) { throw parseResultEither.left; } return parseResultEither.right; } // src/defaultTestConfig.ts function defaultTestConfig() { return makePrismaConfigInternal({ loadedFromFile: null, deprecatedPackageJson: null }); } // src/loadConfigFromFile.ts var import_node_path = __toESM(require("node:path")); var import_node_process2 = __toESM(require("node:process")); var debug4 = Debug("prisma:config:loadConfigFromFile"); var SUPPORTED_EXTENSIONS = [".js", ".ts", ".mjs", ".cjs", ".mts", ".cts"]; async function loadConfigFromFile({ configFile, configRoot = import_node_process2.default.cwd() }) { const start = performance.now(); const getTime = () => `${(performance.now() - start).toFixed(2)}ms`; const diagnostics = []; const deprecatedPrismaConfigFromJson = await loadConfigFromPackageJson(configRoot); if (deprecatedPrismaConfigFromJson) { diagnostics.push({ _tag: "warn", value: ({ warn, link }) => () => warn( `The configuration property \`package.json#prisma\` is deprecated and will be removed in Prisma 7. Please migrate to a Prisma config file (e.g., \`prisma.config.ts\`). For more information, see: ${link("https://pris.ly/prisma-config")} ` ) }); } try { const { configModule, resolvedPath, error } = await loadConfigTsOrJs(configRoot, configFile); if (error) { return { resolvedPath, error, diagnostics }; } debug4(`Config file loaded in %s`, getTime()); if (resolvedPath === null) { debug4(`No config file found in the current working directory %s`, configRoot); return { resolvedPath: null, config: defaultConfig(), diagnostics }; } let parsedConfig; try { parsedConfig = parseDefaultExport(configModule); } catch (e) { const error2 = e; return { resolvedPath, error: { _tag: "ConfigFileSyntaxError", error: error2 }, diagnostics }; } diagnostics.push({ _tag: "log", value: ({ log, dim: dim2 }) => () => log(dim2(`Loaded Prisma config from ${import_node_path.default.relative(configRoot, resolvedPath)}. `)) }); const prismaConfig = transformPathsInConfigToAbsolute(parsedConfig, resolvedPath); if (deprecatedPrismaConfigFromJson) { diagnostics.push({ _tag: "warn", value: ({ warn, link }) => () => warn(`The Prisma config file in ${import_node_path.default.relative( configRoot, resolvedPath )} overrides the deprecated \`package.json#prisma\` property in ${import_node_path.default.relative( configRoot, deprecatedPrismaConfigFromJson.loadedFromFile )}. For more information, see: ${link("https://pris.ly/prisma-config")} `) }); } return { config: { ...prismaConfig, loadedFromFile: resolvedPath }, resolvedPath, diagnostics }; } catch (e) { const error = e; return { resolvedPath: configRoot, error: { _tag: "UnknownError", error }, diagnostics }; } } async function loadConfigTsOrJs(configRoot, configFile) { const { loadConfig: loadConfigWithC12 } = await import("c12"); const { deepmerge } = await import("deepmerge-ts"); try { const { config, configFile: _resolvedPath, meta } = await loadConfigWithC12({ cwd: configRoot, // configuration base name name: "prisma", // the config file to load (without file extensions), defaulting to `${cwd}.${name}` configFile, // do not load .env files dotenv: false, // do not load RC config rcFile: false, // do not extend remote config files giget: false, // do not extend the default config extend: false, // do not load from nearest package.json packageJson: false, // @ts-expect-error: this is a type-error in `c12` itself merger: deepmerge, jitiOptions: { interopDefault: true, moduleCache: false, extensions: SUPPORTED_EXTENSIONS } }); const resolvedPath = _resolvedPath ? import_node_path.default.normalize(_resolvedPath) : void 0; const doesConfigFileExist = resolvedPath !== void 0 && meta !== void 0; if (configFile && !doesConfigFileExist) { debug4(`The given config file was not found at %s`, resolvedPath); return { require: null, resolvedPath: import_node_path.default.join(configRoot, configFile), error: { _tag: "ConfigFileNotFound" } }; } if (doesConfigFileExist) { const extension = import_node_path.default.extname(import_node_path.default.basename(resolvedPath)); if (!SUPPORTED_EXTENSIONS.includes(extension)) { return { configModule: config, resolvedPath, error: { _tag: "ConfigLoadError", error: new Error(`Unsupported Prisma config file extension: ${extension}`) } }; } } return { configModule: config, resolvedPath: doesConfigFileExist ? resolvedPath : null, error: null }; } catch (e) { const error = e; debug4("jiti import failed: %s", error.message); const configFileMatch = error.message.match(/prisma\.config\.(\w+)/); const extension = configFileMatch?.[1]; const filenameWithExtension = import_node_path.default.join(configRoot, extension ? `prisma.config.${extension}` : ""); debug4("faulty config file: %s", filenameWithExtension); return { error: { _tag: "ConfigLoadError", error }, resolvedPath: filenameWithExtension }; } } function transformPathsInConfigToAbsolute(prismaConfig, resolvedPath) { function resolvePath(value) { if (!value) { return void 0; } return import_node_path.default.resolve(import_node_path.default.dirname(resolvedPath), value); } return { ...prismaConfig, schema: resolvePath(prismaConfig.schema), migrations: { ...prismaConfig.migrations, path: resolvePath(prismaConfig.migrations?.path) }, typedSql: { ...prismaConfig.typedSql, path: resolvePath(prismaConfig.typedSql?.path) }, views: { ...prismaConfig.views, path: resolvePath(prismaConfig.views?.path) } }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { defaultTestConfig, defineConfig, loadConfigFromFile, loadConfigFromPackageJson });