@farming-labs/orm-runtime 0.0.45 → 0.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -135,6 +135,12 @@ async function createDriverFromRuntime(options) {
135
135
  dialect: resolveDialect(runtime, options.dialect)
136
136
  });
137
137
  }
138
+ case "edgedb": {
139
+ const { createEdgeDbDriver } = await import("@farming-labs/orm-edgedb");
140
+ return createEdgeDbDriver({
141
+ client: runtime.client
142
+ });
143
+ }
138
144
  case "d1": {
139
145
  const { createD1Driver } = await import("@farming-labs/orm-d1");
140
146
  return createD1Driver({
@@ -156,6 +162,15 @@ async function createDriverFromRuntime(options) {
156
162
  transforms: options.firestore?.transforms
157
163
  });
158
164
  }
165
+ case "kv": {
166
+ const { createKvDriver } = await import("@farming-labs/orm-kv");
167
+ return createKvDriver({
168
+ client: runtime.client,
169
+ base: options.kv?.base,
170
+ prefixes: options.kv?.prefixes,
171
+ transforms: options.kv?.transforms
172
+ });
173
+ }
159
174
  case "dynamodb": {
160
175
  const { createDynamodbDriver } = await import("@farming-labs/orm-dynamodb");
161
176
  return createDynamodbDriver({
@@ -243,4 +258,4 @@ export {
243
258
  createDriverFromRuntime,
244
259
  createOrmFromRuntime
245
260
  };
246
- //# sourceMappingURL=chunk-SBMUEYHG.js.map
261
+ //# sourceMappingURL=chunk-3OA6RHLW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverConfig } from \"@farming-labs/orm-edgedb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig } from \"@farming-labs/orm-kv\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"edgedb\": {\n const { createEdgeDbDriver } = await import(\"@farming-labs/orm-edgedb\");\n return createEdgeDbDriver<TSchema>({\n client: runtime.client as EdgeDbDriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kv\": {\n const { createKvDriver } = await import(\"@farming-labs/orm-kv\");\n return createKvDriver<TSchema>({\n client: runtime.client as KvDriverConfig<TSchema>[\"client\"],\n base: options.kv?.base,\n prefixes: options.kv?.prefixes,\n transforms: options.kv?.transforms as KvDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverHandle } from \"@farming-labs/orm-edgedb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig, KvDriverHandle } from \"@farming-labs/orm-kv\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | EdgeDbDriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | KvDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n kv?: {\n base?: KvDriverConfig<TSchema>[\"base\"];\n prefixes?: KvDriverConfig<TSchema>[\"prefixes\"];\n transforms?: KvDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":[]}
package/dist/index.cjs CHANGED
@@ -168,6 +168,12 @@ async function createDriverFromRuntime(options) {
168
168
  dialect: resolveDialect(runtime, options.dialect)
169
169
  });
170
170
  }
171
+ case "edgedb": {
172
+ const { createEdgeDbDriver } = await import("@farming-labs/orm-edgedb");
173
+ return createEdgeDbDriver({
174
+ client: runtime.client
175
+ });
176
+ }
171
177
  case "d1": {
172
178
  const { createD1Driver } = await import("@farming-labs/orm-d1");
173
179
  return createD1Driver({
@@ -189,6 +195,15 @@ async function createDriverFromRuntime(options) {
189
195
  transforms: options.firestore?.transforms
190
196
  });
191
197
  }
198
+ case "kv": {
199
+ const { createKvDriver } = await import("@farming-labs/orm-kv");
200
+ return createKvDriver({
201
+ client: runtime.client,
202
+ base: options.kv?.base,
203
+ prefixes: options.kv?.prefixes,
204
+ transforms: options.kv?.transforms
205
+ });
206
+ }
192
207
  case "dynamodb": {
193
208
  const { createDynamodbDriver } = await import("@farming-labs/orm-dynamodb");
194
209
  return createDynamodbDriver({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":["import_orm"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverConfig } from \"@farming-labs/orm-edgedb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig } from \"@farming-labs/orm-kv\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"edgedb\": {\n const { createEdgeDbDriver } = await import(\"@farming-labs/orm-edgedb\");\n return createEdgeDbDriver<TSchema>({\n client: runtime.client as EdgeDbDriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kv\": {\n const { createKvDriver } = await import(\"@farming-labs/orm-kv\");\n return createKvDriver<TSchema>({\n client: runtime.client as KvDriverConfig<TSchema>[\"client\"],\n base: options.kv?.base,\n prefixes: options.kv?.prefixes,\n transforms: options.kv?.transforms as KvDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverHandle } from \"@farming-labs/orm-edgedb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig, KvDriverHandle } from \"@farming-labs/orm-kv\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | EdgeDbDriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | KvDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n kv?: {\n base?: KvDriverConfig<TSchema>[\"base\"];\n prefixes?: KvDriverConfig<TSchema>[\"prefixes\"];\n transforms?: KvDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":["import_orm"]}
package/dist/index.d.cts CHANGED
@@ -1,10 +1,12 @@
1
1
  import { SchemaDefinition, OrmDriver, OrmClient } from '@farming-labs/orm';
2
- import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-DV_gGI8g.cjs';
3
- export { b as AutoDialect, M as MongooseConnectionLike } from './shared-DV_gGI8g.cjs';
2
+ import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-B2N69_A9.cjs';
3
+ export { b as AutoDialect, M as MongooseConnectionLike } from './shared-B2N69_A9.cjs';
4
4
  import '@farming-labs/orm-drizzle';
5
5
  import '@farming-labs/orm-d1';
6
6
  import '@farming-labs/orm-dynamodb';
7
+ import '@farming-labs/orm-edgedb';
7
8
  import '@farming-labs/orm-firestore';
9
+ import '@farming-labs/orm-kv';
8
10
  import '@farming-labs/orm-mongo';
9
11
  import '@farming-labs/orm-mongoose';
10
12
  import '@farming-labs/orm-kysely';
package/dist/index.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import { SchemaDefinition, OrmDriver, OrmClient } from '@farming-labs/orm';
2
- import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-DV_gGI8g.js';
3
- export { b as AutoDialect, M as MongooseConnectionLike } from './shared-DV_gGI8g.js';
2
+ import { C as CreateDriverFromRuntimeOptions, A as AutoDriverHandle, a as CreateOrmFromRuntimeOptions } from './shared-B2N69_A9.js';
3
+ export { b as AutoDialect, M as MongooseConnectionLike } from './shared-B2N69_A9.js';
4
4
  import '@farming-labs/orm-drizzle';
5
5
  import '@farming-labs/orm-d1';
6
6
  import '@farming-labs/orm-dynamodb';
7
+ import '@farming-labs/orm-edgedb';
7
8
  import '@farming-labs/orm-firestore';
9
+ import '@farming-labs/orm-kv';
8
10
  import '@farming-labs/orm-mongo';
9
11
  import '@farming-labs/orm-mongoose';
10
12
  import '@farming-labs/orm-kysely';
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createDriverFromRuntime,
3
3
  createOrmFromRuntime
4
- } from "./chunk-SBMUEYHG.js";
4
+ } from "./chunk-3OA6RHLW.js";
5
5
  export {
6
6
  createDriverFromRuntime,
7
7
  createOrmFromRuntime
package/dist/setup.cjs CHANGED
@@ -179,6 +179,12 @@ async function createDriverFromRuntime(options) {
179
179
  dialect: resolveDialect(runtime, options.dialect)
180
180
  });
181
181
  }
182
+ case "edgedb": {
183
+ const { createEdgeDbDriver } = await import("@farming-labs/orm-edgedb");
184
+ return createEdgeDbDriver({
185
+ client: runtime.client
186
+ });
187
+ }
182
188
  case "d1": {
183
189
  const { createD1Driver } = await import("@farming-labs/orm-d1");
184
190
  return createD1Driver({
@@ -200,6 +206,15 @@ async function createDriverFromRuntime(options) {
200
206
  transforms: options.firestore?.transforms
201
207
  });
202
208
  }
209
+ case "kv": {
210
+ const { createKvDriver } = await import("@farming-labs/orm-kv");
211
+ return createKvDriver({
212
+ client: runtime.client,
213
+ base: options.kv?.base,
214
+ prefixes: options.kv?.prefixes,
215
+ transforms: options.kv?.transforms
216
+ });
217
+ }
203
218
  case "dynamodb": {
204
219
  const { createDynamodbDriver } = await import("@farming-labs/orm-dynamodb");
205
220
  return createDynamodbDriver({
@@ -725,6 +740,12 @@ async function applySchemaInternal(stage, options) {
725
740
  if (runtime.kind === "firestore") {
726
741
  return;
727
742
  }
743
+ if (runtime.kind === "kv") {
744
+ return;
745
+ }
746
+ if (runtime.kind === "edgedb") {
747
+ return;
748
+ }
728
749
  if (runtime.kind === "dynamodb") {
729
750
  await ensureDynamoDbTables(
730
751
  options.schema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/setup.ts","../src/index.ts","../src/shared.ts"],"sourcesContent":["import { execFile } from \"node:child_process\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport {\n createManifest,\n renderPrismaSchema,\n renderSafeSql,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { CreateTableCommand, DescribeTableCommand } from \"@aws-sdk/client-dynamodb\";\nimport type { DynamoDbBaseClientLike } from \"@farming-labs/orm-dynamodb\";\nimport type { DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { MongoDbLike } from \"@farming-labs/orm-mongo\";\nimport { createOrmFromRuntime } from \"./index\";\nimport {\n hasFunction,\n isRecord,\n resolveDialect,\n resolveMongoDb,\n resolveRuntime,\n type AutoDialect,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\ntype PrismaProvider = \"sqlite\" | \"postgresql\" | \"mysql\";\n\nexport type PushSchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type ApplySchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type BootstrapDatabaseOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateOrmFromRuntimeOptions<TSchema, TClient>;\n\ntype SqlQueryClient = {\n query(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqlExecuteClient = {\n execute(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqliteExecClient = {\n exec(sql: string): Promise<unknown> | unknown;\n};\n\ntype D1PreparedStatementLike = {\n bind(...params: unknown[]): D1PreparedStatementLike;\n run(): Promise<unknown> | unknown;\n};\n\ntype D1DatabaseLike = {\n prepare(sql: string): D1PreparedStatementLike;\n batch?(statements: readonly D1PreparedStatementLike[]): Promise<unknown> | unknown;\n};\n\ntype InitializableConnectionLike = {\n isInitialized?: boolean;\n initialize?(): Promise<unknown>;\n};\n\ntype MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: readonly unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\ntype MikroormEntityManagerLike = {\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n};\n\ntype MikroormRuntimeLike = {\n connect?(): Promise<unknown>;\n em?: MikroormEntityManagerLike;\n isConnected?(): Promise<boolean>;\n};\n\ntype KyselyExecuteClient = {\n executeQuery(query: {\n sql: string;\n parameters: readonly unknown[];\n query: {\n kind: \"RawNode\";\n sqlFragments: readonly string[];\n parameters: readonly unknown[];\n };\n queryId: object;\n }): Promise<unknown>;\n};\n\ntype MongoIndexCollectionLike = {\n createIndex(\n keys: Record<string, 1 | -1>,\n options?: { unique?: boolean; name?: string },\n ): Promise<unknown>;\n};\n\nconst ormPrimaryKey = \"__orm_pk\";\n\ntype MongoSchemaTargetLike = {\n collection(name: string): MongoIndexCollectionLike;\n createCollection?(name: string): Promise<unknown>;\n};\n\nexport class RuntimeSetupError extends Error {\n readonly stage: \"apply\" | \"push\" | \"bootstrap\";\n readonly runtimeKind: string;\n readonly dialect?: string;\n readonly statement?: string;\n override readonly cause?: unknown;\n\n constructor(input: {\n stage: \"apply\" | \"push\" | \"bootstrap\";\n runtimeKind: string;\n dialect?: string;\n message: string;\n statement?: string;\n cause?: unknown;\n }) {\n super(input.message);\n this.name = \"RuntimeSetupError\";\n this.stage = input.stage;\n this.runtimeKind = input.runtimeKind;\n this.dialect = input.dialect;\n this.statement = input.statement;\n this.cause = input.cause;\n }\n}\n\nconst execFileAsync = promisify(execFile);\nconst defaultPrismaPackageRoot = process.cwd();\n\nfunction prismaProviderForDialect(dialect: AutoDialect): PrismaProvider {\n switch (dialect) {\n case \"sqlite\":\n return \"sqlite\";\n case \"postgres\":\n return \"postgresql\";\n case \"mysql\":\n return \"mysql\";\n }\n}\n\nfunction withDatabaseEnv(rendered: string) {\n return rendered.replace(/url\\s+=\\s+.+/, `url = env(\"DATABASE_URL\")`);\n}\n\nfunction renderRuntimePrismaSchema(schema: SchemaDefinition<any>, provider: PrismaProvider) {\n return withDatabaseEnv(renderPrismaSchema(schema, { provider }));\n}\n\nfunction splitSqlStatements(sql: string) {\n const statements: string[] = [];\n let current = \"\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n for (let index = 0; index < sql.length; index += 1) {\n const char = sql[index]!;\n const next = sql[index + 1];\n\n current += char;\n\n if (quote === \"'\") {\n if (char === \"'\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"'\") {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === '\"') {\n if (char === '\"' && next === '\"') {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === '\"') {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === \"`\") {\n if (char === \"`\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"`\") {\n quote = null;\n }\n\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n continue;\n }\n\n if (char === \";\") {\n const statement = current.trim();\n if (statement) {\n statements.push(statement);\n }\n current = \"\";\n }\n }\n\n const trailing = current.trim();\n if (trailing) {\n statements.push(trailing.endsWith(\";\") ? trailing : `${trailing};`);\n }\n\n return statements.map((statement) => (statement.endsWith(\";\") ? statement : `${statement};`));\n}\n\nasync function runSqlStatements(\n dialect: AutoDialect,\n statements: readonly string[],\n run: (sql: string) => Promise<unknown> | unknown,\n) {\n for (const statement of statements) {\n try {\n await run(statement);\n } catch (error) {\n if (isEquivalentSqlSetupError(dialect, statement, error)) {\n continue;\n }\n throw error;\n }\n }\n}\n\nfunction resolvePrismaDatabaseUrl(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n): string {\n if (options.prisma?.databaseUrl) {\n return options.prisma.databaseUrl;\n }\n\n const client = runtime.client as Record<string, unknown>;\n const engineConfig = isRecord(client._engineConfig) ? client._engineConfig : undefined;\n\n const overrideDatasources = isRecord(engineConfig?.overrideDatasources)\n ? engineConfig.overrideDatasources\n : undefined;\n for (const datasource of Object.values(overrideDatasources ?? {})) {\n if (!isRecord(datasource)) continue;\n if (typeof datasource.url === \"string\" && datasource.url.length > 0) {\n return datasource.url;\n }\n }\n\n const inlineDatasources = isRecord(engineConfig?.inlineDatasources)\n ? engineConfig.inlineDatasources\n : undefined;\n for (const datasource of Object.values(inlineDatasources ?? {})) {\n if (!isRecord(datasource) || !isRecord(datasource.url)) continue;\n if (typeof datasource.url.value === \"string\" && datasource.url.value.length > 0) {\n return datasource.url.value;\n }\n if (\n typeof datasource.url.fromEnvVar === \"string\" &&\n process.env[datasource.url.fromEnvVar]?.length\n ) {\n return process.env[datasource.url.fromEnvVar]!;\n }\n }\n\n throw new Error(\n 'pushSchema() for a Prisma runtime requires a resolvable database URL. Pass \"prisma.databaseUrl\" when the Prisma client does not expose one.',\n );\n}\n\nfunction resolveDrizzleRuntimeClient(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const runtimeClient =\n options.drizzle?.client ??\n (runtime.client as DrizzleDriverConfig<any>[\"db\"] | undefined)?.$client ??\n undefined;\n\n if (!runtimeClient) {\n throw new Error(\n 'pushSchema() for a Drizzle runtime requires a Drizzle database with a \"$client\" property or an explicit \"drizzle.client\" option.',\n );\n }\n\n return runtimeClient;\n}\n\nfunction asMongoSchemaTarget(value: unknown): MongoSchemaTargetLike {\n if (hasFunction(value, \"collection\")) {\n return value as MongoSchemaTargetLike;\n }\n\n throw new Error(\"Unsupported Mongo schema target. Expected a MongoDB Db or Mongoose connection.\");\n}\n\nfunction isMongoNamespaceExistsError(error: unknown) {\n if (isRecord(error) && error.code === 48) {\n return true;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return /already exists|NamespaceExists/i.test(message);\n}\n\nfunction isMongoEquivalentIndexError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return /Index already exists with a different name/i.test(message);\n}\n\nfunction mongoIndexSpecsForModel(model: ReturnType<typeof createManifest>[\"models\"][string]) {\n const deduped = new Map<string, { keys: Record<string, 1>; unique: boolean; name: string }>();\n\n for (const field of Object.values(model.fields)) {\n if (field.kind === \"id\") {\n if (field.column !== \"_id\") {\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_pk_unique`,\n });\n }\n continue;\n }\n\n if (!field.unique) continue;\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_unique`,\n });\n }\n\n for (const constraint of [...model.constraints.unique, ...model.constraints.indexes]) {\n const keys = Object.fromEntries(constraint.columns.map((column) => [column, 1])) as Record<\n string,\n 1\n >;\n deduped.set(JSON.stringify({ keys, unique: constraint.unique }), {\n keys,\n unique: constraint.unique,\n name: constraint.name,\n });\n }\n\n return [...deduped.values()];\n}\n\nasync function ensureMongoCollectionsAndIndexes(\n schema: SchemaDefinition<any>,\n target: MongoSchemaTargetLike,\n) {\n const manifest = createManifest(schema);\n\n for (const model of Object.values(manifest.models)) {\n if (typeof target.createCollection === \"function\") {\n try {\n await target.createCollection(model.table);\n } catch (error) {\n if (!isMongoNamespaceExistsError(error)) {\n throw error;\n }\n }\n }\n\n const collection = target.collection(model.table);\n for (const index of mongoIndexSpecsForModel(model)) {\n try {\n await collection.createIndex(index.keys, {\n name: index.name,\n unique: index.unique,\n });\n } catch (error) {\n if (!isMongoEquivalentIndexError(error)) {\n throw error;\n }\n }\n }\n }\n}\n\nasync function applySqlSchemaToClient(client: unknown, dialect: AutoDialect, sql: string) {\n if (dialect === \"sqlite\" && hasFunction(client, \"prepare\") && hasFunction(client, \"batch\")) {\n const statements = splitSqlStatements(sql);\n await runSqlStatements(dialect, statements, (statement) =>\n (client as D1DatabaseLike).prepare(statement).bind().run(),\n );\n return;\n }\n\n if (dialect === \"sqlite\" && hasFunction(client, \"exec\")) {\n await (client as SqliteExecClient).exec(sql);\n return;\n }\n\n const statements = splitSqlStatements(sql);\n\n if (hasFunction(client, \"query\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlQueryClient).query(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"execute\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlExecuteClient).execute(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"executeQuery\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as KyselyExecuteClient).executeQuery({\n sql: statement,\n parameters: [],\n query: {\n kind: \"RawNode\",\n sqlFragments: [statement],\n parameters: [],\n },\n queryId: {},\n }),\n );\n return;\n }\n\n throw new Error(\n `Could not apply generated ${dialect} schema statements to the provided runtime client.`,\n );\n}\n\nasync function ensureInitializedConnection(client: unknown) {\n if (isRecord(client) && client.isInitialized === false && hasFunction(client, \"initialize\")) {\n await (client as InitializableConnectionLike).initialize?.();\n }\n}\n\nfunction resolveMikroormConnection(client: unknown) {\n if (hasFunction(client, \"getConnection\")) {\n return (client as MikroormEntityManagerLike).getConnection();\n }\n\n if (isRecord(client) && isRecord(client.em) && hasFunction(client.em, \"getConnection\")) {\n return (client.em as MikroormEntityManagerLike).getConnection();\n }\n\n throw new Error(\"Could not resolve a MikroORM SQL connection from the provided runtime client.\");\n}\n\nasync function ensureConnectedMikroorm(client: unknown) {\n if (isRecord(client) && hasFunction(client, \"isConnected\") && hasFunction(client, \"connect\")) {\n if (!(await (client as MikroormRuntimeLike).isConnected?.())) {\n await (client as MikroormRuntimeLike).connect?.();\n }\n return;\n }\n\n const connection = resolveMikroormConnection(client);\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nasync function runPrismaDbPush(schemaPath: string, databaseUrl: string, packageRoot: string) {\n await execFileAsync(\n \"pnpm\",\n [\"exec\", \"prisma\", \"db\", \"push\", \"--schema\", schemaPath, \"--skip-generate\"],\n {\n cwd: packageRoot,\n env: {\n ...process.env,\n DATABASE_URL: databaseUrl,\n },\n },\n );\n}\n\nfunction isEquivalentSqlSetupError(dialect: AutoDialect, statement: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const code = isRecord(error) ? error.code : undefined;\n const errno = isRecord(error) ? error.errno : undefined;\n const isIndexStatement = /^\\s*create\\s+(unique\\s+)?index\\b/i.test(statement);\n\n if (!isIndexStatement) {\n return false;\n }\n\n if (dialect === \"mysql\") {\n return code === \"ER_DUP_KEYNAME\" || errno === 1061 || /duplicate key name/i.test(message);\n }\n\n if (dialect === \"sqlite\") {\n return /index .+ already exists/i.test(message);\n }\n\n return code === \"42P07\" || /already exists/i.test(message);\n}\n\nfunction wrapSetupError(\n stage: \"apply\" | \"push\" | \"bootstrap\",\n runtime: ReturnType<typeof resolveRuntime>,\n error: unknown,\n statement?: string,\n) {\n if (error instanceof RuntimeSetupError) {\n return error;\n }\n\n const runtimeLabel = runtime.dialect ? `${runtime.kind} (${runtime.dialect})` : runtime.kind;\n const detail = error instanceof Error ? error.message : String(error);\n const suffix = statement ? ` Statement: ${statement}` : \"\";\n const helperName =\n stage === \"apply\" ? \"applySchema()\" : stage === \"push\" ? \"pushSchema()\" : \"bootstrapDatabase()\";\n\n return new RuntimeSetupError({\n stage,\n runtimeKind: runtime.kind,\n dialect: runtime.dialect,\n statement,\n cause: error,\n message: `${helperName} failed for ${runtimeLabel} runtime. ${detail}${suffix}`.trim(),\n });\n}\n\nasync function pushPrismaSchema(\n schema: SchemaDefinition<any>,\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const dialect = resolveDialect(runtime, options.dialect);\n const provider = prismaProviderForDialect(dialect);\n const databaseUrl = resolvePrismaDatabaseUrl(runtime, options);\n const packageRoot = options.prisma?.packageRoot ?? defaultPrismaPackageRoot;\n const tempDir = await mkdtemp(path.join(tmpdir(), \"farm-orm-runtime-prisma-\"));\n const schemaPath = path.join(tempDir, \"schema.prisma\");\n\n try {\n await writeFile(schemaPath, renderRuntimePrismaSchema(schema, provider), \"utf8\");\n await runPrismaDbPush(schemaPath, databaseUrl, packageRoot);\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n\nasync function ensureDynamoDbTable(client: DynamoDbBaseClientLike, tableName: string) {\n try {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n } catch (error) {\n if (\n !isRecord(error) ||\n (error.name !== \"ResourceNotFoundException\" && error.code !== \"ResourceNotFoundException\")\n ) {\n throw error;\n }\n\n await client.send(\n new CreateTableCommand({\n TableName: tableName,\n BillingMode: \"PAY_PER_REQUEST\",\n KeySchema: [\n {\n AttributeName: ormPrimaryKey,\n KeyType: \"HASH\",\n },\n ],\n AttributeDefinitions: [\n {\n AttributeName: ormPrimaryKey,\n AttributeType: \"S\",\n },\n ],\n }),\n );\n }\n\n for (let attempt = 0; attempt < 50; attempt += 1) {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n throw new Error(`Timed out while waiting for DynamoDB table \"${tableName}\" to become active.`);\n}\n\nasync function ensureDynamoDbTables(\n schema: SchemaDefinition<any>,\n client: DynamoDbBaseClientLike,\n tables?: Record<string, string | undefined>,\n) {\n const manifest = createManifest(schema);\n\n for (const [modelName, model] of Object.entries(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The DynamoDB runtime does not support schema-qualified tables for model \"${modelName}\". Use flat table names instead.`,\n );\n }\n await ensureDynamoDbTable(client, tables?.[modelName] ?? model.table);\n }\n}\n\nasync function applySchemaInternal<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n stage: \"apply\" | \"push\",\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n if (runtime.kind === \"prisma\") {\n await pushPrismaSchema(options.schema, runtime, options);\n return;\n }\n\n if (runtime.kind === \"mongo\") {\n const db = resolveMongoDb(runtime, options);\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n if (runtime.kind === \"firestore\") {\n return;\n }\n\n if (runtime.kind === \"dynamodb\") {\n await ensureDynamoDbTables(\n options.schema,\n runtime.client as DynamoDbBaseClientLike,\n options.dynamodb?.tables as Record<string, string | undefined> | undefined,\n );\n return;\n }\n\n if (runtime.kind === \"d1\") {\n const manifest = createManifest(options.schema);\n for (const model of Object.values(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The D1 runtime does not support schema-qualified tables for model \"${model.name}\". Use flat table names instead.`,\n );\n }\n }\n\n await applySqlSchemaToClient(\n runtime.client,\n \"sqlite\",\n renderSafeSql(options.schema, { dialect: \"sqlite\" }),\n );\n return;\n }\n\n if (runtime.kind === \"redis\") {\n return;\n }\n\n if (runtime.kind === \"unstorage\") {\n return;\n }\n\n if (runtime.kind === \"mongoose\") {\n const connection = runtime.client as Record<string, unknown>;\n const db = isRecord(connection.db) ? connection.db : connection;\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n const dialect = resolveDialect(runtime, options.dialect);\n const sql = renderSafeSql(options.schema, { dialect });\n\n if (runtime.kind === \"sql\") {\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"drizzle\") {\n await applySqlSchemaToClient(resolveDrizzleRuntimeClient(runtime, options), dialect, sql);\n return;\n }\n\n if (runtime.kind === \"typeorm\") {\n await ensureInitializedConnection(runtime.client);\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"mikroorm\") {\n await ensureConnectedMikroorm(runtime.client);\n await applySqlSchemaToClient(resolveMikroormConnection(runtime.client), dialect, sql);\n return;\n }\n\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n } catch (error) {\n throw wrapSetupError(stage, runtime, error);\n }\n}\n\nexport async function applySchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: ApplySchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"apply\", options);\n}\n\nexport async function pushSchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: PushSchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"push\", options);\n}\n\nexport async function bootstrapDatabase<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: BootstrapDatabaseOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n await pushSchema(options);\n return await createOrmFromRuntime(options);\n } catch (error) {\n throw wrapSetupError(\"bootstrap\", runtime, error);\n }\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n};\n","import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAAyB;AACzB,sBAAuC;AACvC,qBAAuB;AACvB,uBAAiB;AACjB,uBAA0B;AAC1B,IAAAA,cAKO;AACP,6BAAyD;;;ACXzD,IAAAC,cAKO;;;ACLP,iBAAuD;AAoHhD,SAAS,SAAS,OAAkD;AACzE,SAAO,CAAC,CAAC,SAAS,OAAO,UAAU;AACrC;AAEO,SAAS,mBACd,SACA,SACA;AACA,SAAQ,QAAQ,WAAW,MAAM,QAAQ;AAC3C;AAEO,SAAS,YACd,OACA,MACqD;AACrD,SAAO,SAAS,KAAK,KAAK,OAAO,MAAM,IAAI,MAAM;AACnD;AAEO,SAAS,eACd,SACkC;AAClC,MAAI,QAAQ,SAAS;AACnB,WAAO,QAAQ;AAAA,EACjB;AAEA,MAAI,QAAQ,WAAW,QAAW;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,aAAO,mCAAuB,QAAQ,MAAM;AAC9C;AAEO,SAAS,eACd,SACA,UACa;AACb,QAAM,UAAU,YAAY,QAAQ;AACpC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI;AAAA,MACR,6DAA6D,QAAQ,IAAI;AAAA,IAC3E;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,oBACd,QACA,YACA;AACA,QAAM,eAAW,2BAAe,MAAM;AACtC,QAAM,mBAAmB,OAAO,OAAO,WAAW,UAAU,CAAC,CAAC;AAC9D,QAAM,SAAS,CAAC;AAEhB,aAAW,aAAa,OAAO,KAAK,OAAO,MAAM,GAAgC;AAC/E,UAAM,gBAAgB,SAAS,OAAO,SAAS,EAAE;AACjD,UAAM,gBACJ,iBAAiB;AAAA,MACf,CAAC,cAAc,UAAU,YAAY,mBAAmB;AAAA,IAC1D,KAAK,WAAW,SAAS,OAAO,SAAS,CAAC;AAE5C,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR,sDAAsD,OAAO,SAAS,CAAC,uCAAuC,aAAa;AAAA,MAC7H;AAAA,IACF;AAEA,WAAO,SAAS,IAAI;AAAA,EACtB;AAEA,SAAO;AACT;AAEO,SAAS,eACd,SACA,SACA;AACA,MAAI,QAAQ,OAAO,IAAI;AACrB,WAAO,QAAQ,MAAM;AAAA,EACvB;AAEA,MAAI,QAAQ,WAAW,MAAM;AAC3B,WAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,eAAe,QAAQ;AAC7B,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAQ,QAAQ,OAA2B,GAAG,YAAY;AAC5D;AAEO,SAAS,0BACd,SACA,IACA,SACA;AACA,MAAI,QAAQ,OAAO,cAAc;AAC/B,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,cAAc,QAAQ,MAAM;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,YAAY,YAAY,QAAQ,QAAQ,cAAc,GAAG;AAC9E,WAAO;AAAA,MACL,QAAQ,QAAQ;AAAA,MAChB,cAAc;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,WAAW,SAAS,EAAE,IAAK,GAA+B,QAAQ,IAAI;AAC5E,MAAI,YAAY,UAAU,cAAc,GAAG;AACzC,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,cAAc;AAAA,IAChB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB;AACF;;;AD5MA,eAAe,2BACb,SACA,SACA;AACA,QAAM,EAAE,mBAAmB,sBAAsB,oBAAoB,mBAAmB,IACtF,MAAM,OAAO,uBAAuB;AAEtC,MAAI,YAAY,UAAU;AACxB,WAAO,mBAA4B,QAAQ,MAA4B;AAAA,EACzE;AAEA,MAAI,YAAY,YAAY;AAC1B,QAAI,QAAQ,WAAW,QAAQ;AAC7B,aAAO,mBAA4B,QAAQ,MAAoB;AAAA,IACjE;AAEA,WAAO,qBAA8B,QAAQ,MAAsB;AAAA,EACrE;AAEA,MAAI,QAAQ,WAAW,QAAQ;AAC7B,WAAO,kBAA2B,QAAQ,MAAuB;AAAA,EACnE;AAEA,SAAO,kBAA2B,QAAQ,MAA6B;AACzE;AAEA,eAAsB,wBAIpB,SACwD;AACxD,QAAM,UAAU,eAAe,OAAO;AAEtC,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK,UAAU;AACb,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,0BAA0B;AACtE,aAAO,mBAA4B;AAAA,QACjC,QAAQ,QAAQ;AAAA,QAChB,QAAQ,QAAQ,QAAQ;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,KAAK,WAAW;AACd,YAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,2BAA2B;AACxE,aAAO,oBAA6B;AAAA,QAClC,IAAI,QAAQ;AAAA,QACZ,QAAQ,QAAQ,SAAS;AAAA,QACzB,SAAS,eAAe,SAAS,QAAQ,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IACA,KAAK,UAAU;AACb,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,0BAA0B;AACtE,aAAO,mBAA4B;AAAA,QACjC,IAAI,QAAQ;AAAA,QACZ,SAAS,eAAe,SAAS,QAAQ,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IACA,KAAK,MAAM;AACT,YAAM,EAAE,eAAe,IAAI,MAAM,OAAO,sBAAsB;AAC9D,aAAO,eAAwB;AAAA,QAC7B,QAAQ,QAAQ;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,IACA,KAAK,YAAY;AACf,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,4BAA4B;AAC1E,aAAO,qBAA8B;AAAA,QACnC,KAAK,QAAQ;AAAA,QACb,SAAS,eAAe,SAAS,QAAQ,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,6BAA6B;AAC5E,aAAO,sBAA+B;AAAA,QACpC,IAAI,mBAAmB,SAAS,OAAO;AAAA,QACvC,aAAa,QAAQ,WAAW;AAAA,QAChC,YAAY,QAAQ,WAAW;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,KAAK,YAAY;AACf,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,4BAA4B;AAC1E,aAAO,qBAA8B;AAAA,QACnC,QAAQ,QAAQ;AAAA,QAChB,gBAAgB,QAAQ,UAAU;AAAA,QAClC,QAAQ,QAAQ,UAAU;AAAA,QAC1B,YAAY,QAAQ,UAAU;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,6BAA6B;AAC5E,aAAO,sBAA+B;AAAA,QACpC,SAAS,QAAQ;AAAA,QACjB,MAAM,QAAQ,WAAW;AAAA,QACzB,UAAU,QAAQ,WAAW;AAAA,QAC7B,YAAY,QAAQ,WAAW;AAAA,MACjC,CAAC;AAAA,IACH;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,yBAAyB;AACpE,aAAO,kBAA2B;AAAA,QAChC,QAAQ,QAAQ;AAAA,QAChB,MAAM,QAAQ,OAAO;AAAA,QACrB,UAAU,QAAQ,OAAO;AAAA,QACzB,YAAY,QAAQ,OAAO;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,EAAE,sBAAsB,IAAI,MAAM,OAAO,6BAA6B;AAC5E,aAAO,sBAA+B;AAAA,QACpC,WAAW,QAAQ;AAAA,QACnB,SAAS,eAAe,SAAS,QAAQ,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IACA,KAAK,WAAW;AACd,YAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,2BAA2B;AACxE,aAAO,oBAA6B;AAAA,QAClC,YAAY,QAAQ;AAAA,QACpB,SAAS,eAAe,SAAS,QAAQ,OAAO;AAAA,MAClD,CAAC;AAAA,IACH;AAAA,IACA,KAAK;AACH,aAAQ,MAAM;AAAA,QACZ;AAAA,QACA,eAAe,SAAS,QAAQ,OAAO;AAAA,MACzC;AAAA,IACF,KAAK,SAAS;AACZ,YAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,yBAAyB;AACpE,YAAM,KAAK,eAAe,SAAS,OAAO;AAC1C,YAAM,gBAAgB,0BAA0B,SAAS,IAAI,OAAO;AAEpE,aAAO,kBAA2B;AAAA,QAChC,aAAa,QAAQ,OAAO;AAAA,QAC5B;AAAA,QACA,QAAQ,cAAc;AAAA,QACtB,cAAc,cAAc;AAAA,QAC5B,YAAY,QAAQ,OAAO;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,IACA,KAAK,YAAY;AACf,YAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,4BAA4B;AAC1E,YAAM,aAAa,QAAQ;AAE3B,aAAO,qBAA8B;AAAA,QACnC,QAAQ,QAAQ,UAAU,UAAU,oBAAoB,QAAQ,QAAQ,UAAU;AAAA,QAClF;AAAA,QACA,cAAc,QAAQ,UAAU;AAAA,QAChC,YAAY,QAAQ,UAAU;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,eAAsB,qBAIpB,SACwD;AACxD,QAAM,SAAS,MAAM,wBAAwB,OAAO;AACpD,aAAO,uBAAU;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB;AAAA,EACF,CAAC;AACH;;;ADtFA,IAAM,gBAAgB;AAOf,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACS;AAAA,EAElB,YAAY,OAOT;AACD,UAAM,MAAM,OAAO;AACnB,SAAK,OAAO;AACZ,SAAK,QAAQ,MAAM;AACnB,SAAK,cAAc,MAAM;AACzB,SAAK,UAAU,MAAM;AACrB,SAAK,YAAY,MAAM;AACvB,SAAK,QAAQ,MAAM;AAAA,EACrB;AACF;AAEA,IAAM,oBAAgB,4BAAU,kCAAQ;AACxC,IAAM,2BAA2B,QAAQ,IAAI;AAE7C,SAAS,yBAAyB,SAAsC;AACtE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,gBAAgB,UAAkB;AACzC,SAAO,SAAS,QAAQ,gBAAgB,gCAAgC;AAC1E;AAEA,SAAS,0BAA0B,QAA+B,UAA0B;AAC1F,SAAO,oBAAgB,gCAAmB,QAAQ,EAAE,SAAS,CAAC,CAAC;AACjE;AAEA,SAAS,mBAAmB,KAAa;AACvC,QAAM,aAAuB,CAAC;AAC9B,MAAI,UAAU;AACd,MAAI,QAAgC;AAEpC,WAAS,QAAQ,GAAG,QAAQ,IAAI,QAAQ,SAAS,GAAG;AAClD,UAAM,OAAO,IAAI,KAAK;AACtB,UAAM,OAAO,IAAI,QAAQ,CAAC;AAE1B,eAAW;AAEX,QAAI,UAAU,KAAK;AACjB,UAAI,SAAS,OAAO,SAAS,KAAK;AAChC,mBAAW;AACX,iBAAS;AACT;AAAA,MACF;AAEA,UAAI,SAAS,QAAQ,SAAS,KAAK;AACjC,mBAAW;AACX,iBAAS;AACT;AAAA,MACF;AAEA,UAAI,SAAS,KAAK;AAChB,gBAAQ;AAAA,MACV;AAEA;AAAA,IACF;AAEA,QAAI,UAAU,KAAK;AACjB,UAAI,SAAS,OAAO,SAAS,KAAK;AAChC,mBAAW;AACX,iBAAS;AACT;AAAA,MACF;AAEA,UAAI,SAAS,KAAK;AAChB,gBAAQ;AAAA,MACV;AAEA;AAAA,IACF;AAEA,QAAI,UAAU,KAAK;AACjB,UAAI,SAAS,OAAO,SAAS,KAAK;AAChC,mBAAW;AACX,iBAAS;AACT;AAAA,MACF;AAEA,UAAI,SAAS,QAAQ,SAAS,KAAK;AACjC,mBAAW;AACX,iBAAS;AACT;AAAA,MACF;AAEA,UAAI,SAAS,KAAK;AAChB,gBAAQ;AAAA,MACV;AAEA;AAAA,IACF;AAEA,QAAI,SAAS,OAAO,SAAS,OAAO,SAAS,KAAK;AAChD,cAAQ;AACR;AAAA,IACF;AAEA,QAAI,SAAS,KAAK;AAChB,YAAM,YAAY,QAAQ,KAAK;AAC/B,UAAI,WAAW;AACb,mBAAW,KAAK,SAAS;AAAA,MAC3B;AACA,gBAAU;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,WAAW,QAAQ,KAAK;AAC9B,MAAI,UAAU;AACZ,eAAW,KAAK,SAAS,SAAS,GAAG,IAAI,WAAW,GAAG,QAAQ,GAAG;AAAA,EACpE;AAEA,SAAO,WAAW,IAAI,CAAC,cAAe,UAAU,SAAS,GAAG,IAAI,YAAY,GAAG,SAAS,GAAI;AAC9F;AAEA,eAAe,iBACb,SACA,YACA,KACA;AACA,aAAW,aAAa,YAAY;AAClC,QAAI;AACF,YAAM,IAAI,SAAS;AAAA,IACrB,SAAS,OAAO;AACd,UAAI,0BAA0B,SAAS,WAAW,KAAK,GAAG;AACxD;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,yBACP,SACA,SACQ;AACR,MAAI,QAAQ,QAAQ,aAAa;AAC/B,WAAO,QAAQ,OAAO;AAAA,EACxB;AAEA,QAAM,SAAS,QAAQ;AACvB,QAAM,eAAe,SAAS,OAAO,aAAa,IAAI,OAAO,gBAAgB;AAE7E,QAAM,sBAAsB,SAAS,cAAc,mBAAmB,IAClE,aAAa,sBACb;AACJ,aAAW,cAAc,OAAO,OAAO,uBAAuB,CAAC,CAAC,GAAG;AACjE,QAAI,CAAC,SAAS,UAAU,EAAG;AAC3B,QAAI,OAAO,WAAW,QAAQ,YAAY,WAAW,IAAI,SAAS,GAAG;AACnE,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,oBAAoB,SAAS,cAAc,iBAAiB,IAC9D,aAAa,oBACb;AACJ,aAAW,cAAc,OAAO,OAAO,qBAAqB,CAAC,CAAC,GAAG;AAC/D,QAAI,CAAC,SAAS,UAAU,KAAK,CAAC,SAAS,WAAW,GAAG,EAAG;AACxD,QAAI,OAAO,WAAW,IAAI,UAAU,YAAY,WAAW,IAAI,MAAM,SAAS,GAAG;AAC/E,aAAO,WAAW,IAAI;AAAA,IACxB;AACA,QACE,OAAO,WAAW,IAAI,eAAe,YACrC,QAAQ,IAAI,WAAW,IAAI,UAAU,GAAG,QACxC;AACA,aAAO,QAAQ,IAAI,WAAW,IAAI,UAAU;AAAA,IAC9C;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,4BACP,SACA,SACA;AACA,QAAM,gBACJ,QAAQ,SAAS,UAChB,QAAQ,QAAuD,WAChE;AAEF,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAAuC;AAClE,MAAI,YAAY,OAAO,YAAY,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,gFAAgF;AAClG;AAEA,SAAS,4BAA4B,OAAgB;AACnD,MAAI,SAAS,KAAK,KAAK,MAAM,SAAS,IAAI;AACxC,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO,kCAAkC,KAAK,OAAO;AACvD;AAEA,SAAS,4BAA4B,OAAgB;AACnD,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO,8CAA8C,KAAK,OAAO;AACnE;AAEA,SAAS,wBAAwB,OAA4D;AAC3F,QAAM,UAAU,oBAAI,IAAwE;AAE5F,aAAW,SAAS,OAAO,OAAO,MAAM,MAAM,GAAG;AAC/C,QAAI,MAAM,SAAS,MAAM;AACvB,UAAI,MAAM,WAAW,OAAO;AAC1B,cAAMC,QAAO,EAAE,CAAC,MAAM,MAAM,GAAG,EAAE;AACjC,gBAAQ,IAAI,KAAK,UAAU,EAAE,MAAAA,OAAM,QAAQ,KAAK,CAAC,GAAG;AAAA,UAClD,MAAAA;AAAA,UACA,QAAQ;AAAA,UACR,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,MAAM;AAAA,QACtC,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,OAAQ;AACnB,UAAM,OAAO,EAAE,CAAC,MAAM,MAAM,GAAG,EAAE;AACjC,YAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,QAAQ,KAAK,CAAC,GAAG;AAAA,MAClD;AAAA,MACA,QAAQ;AAAA,MACR,MAAM,GAAG,MAAM,KAAK,IAAI,MAAM,MAAM;AAAA,IACtC,CAAC;AAAA,EACH;AAEA,aAAW,cAAc,CAAC,GAAG,MAAM,YAAY,QAAQ,GAAG,MAAM,YAAY,OAAO,GAAG;AACpF,UAAM,OAAO,OAAO,YAAY,WAAW,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAI/E,YAAQ,IAAI,KAAK,UAAU,EAAE,MAAM,QAAQ,WAAW,OAAO,CAAC,GAAG;AAAA,MAC/D;AAAA,MACA,QAAQ,WAAW;AAAA,MACnB,MAAM,WAAW;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,SAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AAC7B;AAEA,eAAe,iCACb,QACA,QACA;AACA,QAAM,eAAW,4BAAe,MAAM;AAEtC,aAAW,SAAS,OAAO,OAAO,SAAS,MAAM,GAAG;AAClD,QAAI,OAAO,OAAO,qBAAqB,YAAY;AACjD,UAAI;AACF,cAAM,OAAO,iBAAiB,MAAM,KAAK;AAAA,MAC3C,SAAS,OAAO;AACd,YAAI,CAAC,4BAA4B,KAAK,GAAG;AACvC,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,aAAa,OAAO,WAAW,MAAM,KAAK;AAChD,eAAW,SAAS,wBAAwB,KAAK,GAAG;AAClD,UAAI;AACF,cAAM,WAAW,YAAY,MAAM,MAAM;AAAA,UACvC,MAAM,MAAM;AAAA,UACZ,QAAQ,MAAM;AAAA,QAChB,CAAC;AAAA,MACH,SAAS,OAAO;AACd,YAAI,CAAC,4BAA4B,KAAK,GAAG;AACvC,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,uBAAuB,QAAiB,SAAsB,KAAa;AACxF,MAAI,YAAY,YAAY,YAAY,QAAQ,SAAS,KAAK,YAAY,QAAQ,OAAO,GAAG;AAC1F,UAAMC,cAAa,mBAAmB,GAAG;AACzC,UAAM;AAAA,MAAiB;AAAA,MAASA;AAAA,MAAY,CAAC,cAC1C,OAA0B,QAAQ,SAAS,EAAE,KAAK,EAAE,IAAI;AAAA,IAC3D;AACA;AAAA,EACF;AAEA,MAAI,YAAY,YAAY,YAAY,QAAQ,MAAM,GAAG;AACvD,UAAO,OAA4B,KAAK,GAAG;AAC3C;AAAA,EACF;AAEA,QAAM,aAAa,mBAAmB,GAAG;AAEzC,MAAI,YAAY,QAAQ,OAAO,GAAG;AAChC,UAAM;AAAA,MAAiB;AAAA,MAAS;AAAA,MAAY,CAAC,cAC1C,OAA0B,MAAM,SAAS;AAAA,IAC5C;AACA;AAAA,EACF;AAEA,MAAI,YAAY,QAAQ,SAAS,GAAG;AAClC,UAAM;AAAA,MAAiB;AAAA,MAAS;AAAA,MAAY,CAAC,cAC1C,OAA4B,QAAQ,SAAS;AAAA,IAChD;AACA;AAAA,EACF;AAEA,MAAI,YAAY,QAAQ,cAAc,GAAG;AACvC,UAAM;AAAA,MAAiB;AAAA,MAAS;AAAA,MAAY,CAAC,cAC1C,OAA+B,aAAa;AAAA,QAC3C,KAAK;AAAA,QACL,YAAY,CAAC;AAAA,QACb,OAAO;AAAA,UACL,MAAM;AAAA,UACN,cAAc,CAAC,SAAS;AAAA,UACxB,YAAY,CAAC;AAAA,QACf;AAAA,QACA,SAAS,CAAC;AAAA,MACZ,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,6BAA6B,OAAO;AAAA,EACtC;AACF;AAEA,eAAe,4BAA4B,QAAiB;AAC1D,MAAI,SAAS,MAAM,KAAK,OAAO,kBAAkB,SAAS,YAAY,QAAQ,YAAY,GAAG;AAC3F,UAAO,OAAuC,aAAa;AAAA,EAC7D;AACF;AAEA,SAAS,0BAA0B,QAAiB;AAClD,MAAI,YAAY,QAAQ,eAAe,GAAG;AACxC,WAAQ,OAAqC,cAAc;AAAA,EAC7D;AAEA,MAAI,SAAS,MAAM,KAAK,SAAS,OAAO,EAAE,KAAK,YAAY,OAAO,IAAI,eAAe,GAAG;AACtF,WAAQ,OAAO,GAAiC,cAAc;AAAA,EAChE;AAEA,QAAM,IAAI,MAAM,+EAA+E;AACjG;AAEA,eAAe,wBAAwB,QAAiB;AACtD,MAAI,SAAS,MAAM,KAAK,YAAY,QAAQ,aAAa,KAAK,YAAY,QAAQ,SAAS,GAAG;AAC5F,QAAI,CAAE,MAAO,OAA+B,cAAc,GAAI;AAC5D,YAAO,OAA+B,UAAU;AAAA,IAClD;AACA;AAAA,EACF;AAEA,QAAM,aAAa,0BAA0B,MAAM;AACnD,MAAI,YAAY,YAAY,aAAa,GAAG;AAC1C,UAAM,YAAY,MAAM,WAAW,YAAY;AAC/C,QAAI,UAAW;AAAA,EACjB;AAEA,MAAI,YAAY,YAAY,kBAAkB,GAAG;AAC/C,UAAM,WAAW,iBAAiB;AAClC;AAAA,EACF;AAEA,MAAI,YAAY,YAAY,SAAS,GAAG;AACtC,UAAM,WAAW,QAAQ,EAAE,eAAe,MAAM,CAAC;AAAA,EACnD;AACF;AAEA,eAAe,gBAAgB,YAAoB,aAAqB,aAAqB;AAC3F,QAAM;AAAA,IACJ;AAAA,IACA,CAAC,QAAQ,UAAU,MAAM,QAAQ,YAAY,YAAY,iBAAiB;AAAA,IAC1E;AAAA,MACE,KAAK;AAAA,MACL,KAAK;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,SAAsB,WAAmB,OAAgB;AAC1F,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,QAAM,OAAO,SAAS,KAAK,IAAI,MAAM,OAAO;AAC5C,QAAM,QAAQ,SAAS,KAAK,IAAI,MAAM,QAAQ;AAC9C,QAAM,mBAAmB,oCAAoC,KAAK,SAAS;AAE3E,MAAI,CAAC,kBAAkB;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,SAAS;AACvB,WAAO,SAAS,oBAAoB,UAAU,QAAQ,sBAAsB,KAAK,OAAO;AAAA,EAC1F;AAEA,MAAI,YAAY,UAAU;AACxB,WAAO,2BAA2B,KAAK,OAAO;AAAA,EAChD;AAEA,SAAO,SAAS,WAAW,kBAAkB,KAAK,OAAO;AAC3D;AAEA,SAAS,eACP,OACA,SACA,OACA,WACA;AACA,MAAI,iBAAiB,mBAAmB;AACtC,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,QAAQ,UAAU,GAAG,QAAQ,IAAI,KAAK,QAAQ,OAAO,MAAM,QAAQ;AACxF,QAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,QAAM,SAAS,YAAY,eAAe,SAAS,KAAK;AACxD,QAAM,aACJ,UAAU,UAAU,kBAAkB,UAAU,SAAS,iBAAiB;AAE5E,SAAO,IAAI,kBAAkB;AAAA,IAC3B;AAAA,IACA,aAAa,QAAQ;AAAA,IACrB,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,IACP,SAAS,GAAG,UAAU,eAAe,YAAY,aAAa,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,EACvF,CAAC;AACH;AAEA,eAAe,iBACb,QACA,SACA,SACA;AACA,QAAM,UAAU,eAAe,SAAS,QAAQ,OAAO;AACvD,QAAM,WAAW,yBAAyB,OAAO;AACjD,QAAM,cAAc,yBAAyB,SAAS,OAAO;AAC7D,QAAM,cAAc,QAAQ,QAAQ,eAAe;AACnD,QAAM,UAAU,UAAM,yBAAQ,iBAAAC,QAAK,SAAK,uBAAO,GAAG,0BAA0B,CAAC;AAC7E,QAAM,aAAa,iBAAAA,QAAK,KAAK,SAAS,eAAe;AAErD,MAAI;AACF,cAAM,2BAAU,YAAY,0BAA0B,QAAQ,QAAQ,GAAG,MAAM;AAC/E,UAAM,gBAAgB,YAAY,aAAa,WAAW;AAAA,EAC5D,UAAE;AACA,cAAM,oBAAG,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EACpD;AACF;AAEA,eAAe,oBAAoB,QAAgC,WAAmB;AACpF,MAAI;AACF,UAAM,YAAa,MAAM,OAAO;AAAA,MAC9B,IAAI,4CAAqB;AAAA,QACvB,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAEA,QAAI,UAAU,OAAO,gBAAgB,UAAU;AAC7C;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,QACE,CAAC,SAAS,KAAK,KACd,MAAM,SAAS,+BAA+B,MAAM,SAAS,6BAC9D;AACA,YAAM;AAAA,IACR;AAEA,UAAM,OAAO;AAAA,MACX,IAAI,0CAAmB;AAAA,QACrB,WAAW;AAAA,QACX,aAAa;AAAA,QACb,WAAW;AAAA,UACT;AAAA,YACE,eAAe;AAAA,YACf,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA,sBAAsB;AAAA,UACpB;AAAA,YACE,eAAe;AAAA,YACf,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,UAAU,GAAG,UAAU,IAAI,WAAW,GAAG;AAChD,UAAM,YAAa,MAAM,OAAO;AAAA,MAC9B,IAAI,4CAAqB;AAAA,QACvB,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAEA,QAAI,UAAU,OAAO,gBAAgB,UAAU;AAC7C;AAAA,IACF;AAEA,UAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EACxD;AAEA,QAAM,IAAI,MAAM,+CAA+C,SAAS,qBAAqB;AAC/F;AAEA,eAAe,qBACb,QACA,QACA,QACA;AACA,QAAM,eAAW,4BAAe,MAAM;AAEtC,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,SAAS,MAAM,GAAG;AAChE,QAAI,MAAM,QAAQ;AAChB,YAAM,IAAI;AAAA,QACR,4EAA4E,SAAS;AAAA,MACvF;AAAA,IACF;AACA,UAAM,oBAAoB,QAAQ,SAAS,SAAS,KAAK,MAAM,KAAK;AAAA,EACtE;AACF;AAEA,eAAe,oBACb,OACA,SACA;AACA,QAAM,UAAU,eAAe,OAAO;AAEtC,MAAI;AACF,QAAI,QAAQ,SAAS,UAAU;AAC7B,YAAM,iBAAiB,QAAQ,QAAQ,SAAS,OAAO;AACvD;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,SAAS;AAC5B,YAAM,KAAK,eAAe,SAAS,OAAO;AAC1C,YAAM,iCAAiC,QAAQ,QAAQ,oBAAoB,EAAE,CAAC;AAC9E;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,aAAa;AAChC;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,YAAY;AAC/B,YAAM;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ,UAAU;AAAA,MACpB;AACA;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,MAAM;AACzB,YAAM,eAAW,4BAAe,QAAQ,MAAM;AAC9C,iBAAW,SAAS,OAAO,OAAO,SAAS,MAAM,GAAG;AAClD,YAAI,MAAM,QAAQ;AAChB,gBAAM,IAAI;AAAA,YACR,sEAAsE,MAAM,IAAI;AAAA,UAClF;AAAA,QACF;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,QAAQ;AAAA,QACR;AAAA,YACA,2BAAc,QAAQ,QAAQ,EAAE,SAAS,SAAS,CAAC;AAAA,MACrD;AACA;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,SAAS;AAC5B;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,aAAa;AAChC;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,YAAY;AAC/B,YAAM,aAAa,QAAQ;AAC3B,YAAM,KAAK,SAAS,WAAW,EAAE,IAAI,WAAW,KAAK;AACrD,YAAM,iCAAiC,QAAQ,QAAQ,oBAAoB,EAAE,CAAC;AAC9E;AAAA,IACF;AAEA,UAAM,UAAU,eAAe,SAAS,QAAQ,OAAO;AACvD,UAAM,UAAM,2BAAc,QAAQ,QAAQ,EAAE,QAAQ,CAAC;AAErD,QAAI,QAAQ,SAAS,OAAO;AAC1B,YAAM,uBAAuB,QAAQ,QAAQ,SAAS,GAAG;AACzD;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,WAAW;AAC9B,YAAM,uBAAuB,4BAA4B,SAAS,OAAO,GAAG,SAAS,GAAG;AACxF;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,WAAW;AAC9B,YAAM,4BAA4B,QAAQ,MAAM;AAChD,YAAM,uBAAuB,QAAQ,QAAQ,SAAS,GAAG;AACzD;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,YAAY;AAC/B,YAAM,wBAAwB,QAAQ,MAAM;AAC5C,YAAM,uBAAuB,0BAA0B,QAAQ,MAAM,GAAG,SAAS,GAAG;AACpF;AAAA,IACF;AAEA,UAAM,uBAAuB,QAAQ,QAAQ,SAAS,GAAG;AAAA,EAC3D,SAAS,OAAO;AACd,UAAM,eAAe,OAAO,SAAS,KAAK;AAAA,EAC5C;AACF;AAEA,eAAsB,YACpB,SACA;AACA,QAAM,oBAAoB,SAAS,OAAO;AAC5C;AAEA,eAAsB,WACpB,SACA;AACA,QAAM,oBAAoB,QAAQ,OAAO;AAC3C;AAEA,eAAsB,kBACpB,SACA;AACA,QAAM,UAAU,eAAe,OAAO;AAEtC,MAAI;AACF,UAAM,WAAW,OAAO;AACxB,WAAO,MAAM,qBAAqB,OAAO;AAAA,EAC3C,SAAS,OAAO;AACd,UAAM,eAAe,aAAa,SAAS,KAAK;AAAA,EAClD;AACF;","names":["import_orm","import_orm","keys","statements","path"]}
1
+ {"version":3,"sources":["../src/setup.ts","../src/index.ts","../src/shared.ts"],"sourcesContent":["import { execFile } from \"node:child_process\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport {\n createManifest,\n renderPrismaSchema,\n renderSafeSql,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { CreateTableCommand, DescribeTableCommand } from \"@aws-sdk/client-dynamodb\";\nimport type { DynamoDbBaseClientLike } from \"@farming-labs/orm-dynamodb\";\nimport type { DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { MongoDbLike } from \"@farming-labs/orm-mongo\";\nimport { createOrmFromRuntime } from \"./index\";\nimport {\n hasFunction,\n isRecord,\n resolveDialect,\n resolveMongoDb,\n resolveRuntime,\n type AutoDialect,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\ntype PrismaProvider = \"sqlite\" | \"postgresql\" | \"mysql\";\n\nexport type PushSchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type ApplySchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type BootstrapDatabaseOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateOrmFromRuntimeOptions<TSchema, TClient>;\n\ntype SqlQueryClient = {\n query(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqlExecuteClient = {\n execute(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqliteExecClient = {\n exec(sql: string): Promise<unknown> | unknown;\n};\n\ntype D1PreparedStatementLike = {\n bind(...params: unknown[]): D1PreparedStatementLike;\n run(): Promise<unknown> | unknown;\n};\n\ntype D1DatabaseLike = {\n prepare(sql: string): D1PreparedStatementLike;\n batch?(statements: readonly D1PreparedStatementLike[]): Promise<unknown> | unknown;\n};\n\ntype InitializableConnectionLike = {\n isInitialized?: boolean;\n initialize?(): Promise<unknown>;\n};\n\ntype MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: readonly unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\ntype MikroormEntityManagerLike = {\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n};\n\ntype MikroormRuntimeLike = {\n connect?(): Promise<unknown>;\n em?: MikroormEntityManagerLike;\n isConnected?(): Promise<boolean>;\n};\n\ntype KyselyExecuteClient = {\n executeQuery(query: {\n sql: string;\n parameters: readonly unknown[];\n query: {\n kind: \"RawNode\";\n sqlFragments: readonly string[];\n parameters: readonly unknown[];\n };\n queryId: object;\n }): Promise<unknown>;\n};\n\ntype MongoIndexCollectionLike = {\n createIndex(\n keys: Record<string, 1 | -1>,\n options?: { unique?: boolean; name?: string },\n ): Promise<unknown>;\n};\n\nconst ormPrimaryKey = \"__orm_pk\";\n\ntype MongoSchemaTargetLike = {\n collection(name: string): MongoIndexCollectionLike;\n createCollection?(name: string): Promise<unknown>;\n};\n\nexport class RuntimeSetupError extends Error {\n readonly stage: \"apply\" | \"push\" | \"bootstrap\";\n readonly runtimeKind: string;\n readonly dialect?: string;\n readonly statement?: string;\n override readonly cause?: unknown;\n\n constructor(input: {\n stage: \"apply\" | \"push\" | \"bootstrap\";\n runtimeKind: string;\n dialect?: string;\n message: string;\n statement?: string;\n cause?: unknown;\n }) {\n super(input.message);\n this.name = \"RuntimeSetupError\";\n this.stage = input.stage;\n this.runtimeKind = input.runtimeKind;\n this.dialect = input.dialect;\n this.statement = input.statement;\n this.cause = input.cause;\n }\n}\n\nconst execFileAsync = promisify(execFile);\nconst defaultPrismaPackageRoot = process.cwd();\n\nfunction prismaProviderForDialect(dialect: AutoDialect): PrismaProvider {\n switch (dialect) {\n case \"sqlite\":\n return \"sqlite\";\n case \"postgres\":\n return \"postgresql\";\n case \"mysql\":\n return \"mysql\";\n }\n}\n\nfunction withDatabaseEnv(rendered: string) {\n return rendered.replace(/url\\s+=\\s+.+/, `url = env(\"DATABASE_URL\")`);\n}\n\nfunction renderRuntimePrismaSchema(schema: SchemaDefinition<any>, provider: PrismaProvider) {\n return withDatabaseEnv(renderPrismaSchema(schema, { provider }));\n}\n\nfunction splitSqlStatements(sql: string) {\n const statements: string[] = [];\n let current = \"\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n for (let index = 0; index < sql.length; index += 1) {\n const char = sql[index]!;\n const next = sql[index + 1];\n\n current += char;\n\n if (quote === \"'\") {\n if (char === \"'\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"'\") {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === '\"') {\n if (char === '\"' && next === '\"') {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === '\"') {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === \"`\") {\n if (char === \"`\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"`\") {\n quote = null;\n }\n\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n continue;\n }\n\n if (char === \";\") {\n const statement = current.trim();\n if (statement) {\n statements.push(statement);\n }\n current = \"\";\n }\n }\n\n const trailing = current.trim();\n if (trailing) {\n statements.push(trailing.endsWith(\";\") ? trailing : `${trailing};`);\n }\n\n return statements.map((statement) => (statement.endsWith(\";\") ? statement : `${statement};`));\n}\n\nasync function runSqlStatements(\n dialect: AutoDialect,\n statements: readonly string[],\n run: (sql: string) => Promise<unknown> | unknown,\n) {\n for (const statement of statements) {\n try {\n await run(statement);\n } catch (error) {\n if (isEquivalentSqlSetupError(dialect, statement, error)) {\n continue;\n }\n throw error;\n }\n }\n}\n\nfunction resolvePrismaDatabaseUrl(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n): string {\n if (options.prisma?.databaseUrl) {\n return options.prisma.databaseUrl;\n }\n\n const client = runtime.client as Record<string, unknown>;\n const engineConfig = isRecord(client._engineConfig) ? client._engineConfig : undefined;\n\n const overrideDatasources = isRecord(engineConfig?.overrideDatasources)\n ? engineConfig.overrideDatasources\n : undefined;\n for (const datasource of Object.values(overrideDatasources ?? {})) {\n if (!isRecord(datasource)) continue;\n if (typeof datasource.url === \"string\" && datasource.url.length > 0) {\n return datasource.url;\n }\n }\n\n const inlineDatasources = isRecord(engineConfig?.inlineDatasources)\n ? engineConfig.inlineDatasources\n : undefined;\n for (const datasource of Object.values(inlineDatasources ?? {})) {\n if (!isRecord(datasource) || !isRecord(datasource.url)) continue;\n if (typeof datasource.url.value === \"string\" && datasource.url.value.length > 0) {\n return datasource.url.value;\n }\n if (\n typeof datasource.url.fromEnvVar === \"string\" &&\n process.env[datasource.url.fromEnvVar]?.length\n ) {\n return process.env[datasource.url.fromEnvVar]!;\n }\n }\n\n throw new Error(\n 'pushSchema() for a Prisma runtime requires a resolvable database URL. Pass \"prisma.databaseUrl\" when the Prisma client does not expose one.',\n );\n}\n\nfunction resolveDrizzleRuntimeClient(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const runtimeClient =\n options.drizzle?.client ??\n (runtime.client as DrizzleDriverConfig<any>[\"db\"] | undefined)?.$client ??\n undefined;\n\n if (!runtimeClient) {\n throw new Error(\n 'pushSchema() for a Drizzle runtime requires a Drizzle database with a \"$client\" property or an explicit \"drizzle.client\" option.',\n );\n }\n\n return runtimeClient;\n}\n\nfunction asMongoSchemaTarget(value: unknown): MongoSchemaTargetLike {\n if (hasFunction(value, \"collection\")) {\n return value as MongoSchemaTargetLike;\n }\n\n throw new Error(\"Unsupported Mongo schema target. Expected a MongoDB Db or Mongoose connection.\");\n}\n\nfunction isMongoNamespaceExistsError(error: unknown) {\n if (isRecord(error) && error.code === 48) {\n return true;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return /already exists|NamespaceExists/i.test(message);\n}\n\nfunction isMongoEquivalentIndexError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return /Index already exists with a different name/i.test(message);\n}\n\nfunction mongoIndexSpecsForModel(model: ReturnType<typeof createManifest>[\"models\"][string]) {\n const deduped = new Map<string, { keys: Record<string, 1>; unique: boolean; name: string }>();\n\n for (const field of Object.values(model.fields)) {\n if (field.kind === \"id\") {\n if (field.column !== \"_id\") {\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_pk_unique`,\n });\n }\n continue;\n }\n\n if (!field.unique) continue;\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_unique`,\n });\n }\n\n for (const constraint of [...model.constraints.unique, ...model.constraints.indexes]) {\n const keys = Object.fromEntries(constraint.columns.map((column) => [column, 1])) as Record<\n string,\n 1\n >;\n deduped.set(JSON.stringify({ keys, unique: constraint.unique }), {\n keys,\n unique: constraint.unique,\n name: constraint.name,\n });\n }\n\n return [...deduped.values()];\n}\n\nasync function ensureMongoCollectionsAndIndexes(\n schema: SchemaDefinition<any>,\n target: MongoSchemaTargetLike,\n) {\n const manifest = createManifest(schema);\n\n for (const model of Object.values(manifest.models)) {\n if (typeof target.createCollection === \"function\") {\n try {\n await target.createCollection(model.table);\n } catch (error) {\n if (!isMongoNamespaceExistsError(error)) {\n throw error;\n }\n }\n }\n\n const collection = target.collection(model.table);\n for (const index of mongoIndexSpecsForModel(model)) {\n try {\n await collection.createIndex(index.keys, {\n name: index.name,\n unique: index.unique,\n });\n } catch (error) {\n if (!isMongoEquivalentIndexError(error)) {\n throw error;\n }\n }\n }\n }\n}\n\nasync function applySqlSchemaToClient(client: unknown, dialect: AutoDialect, sql: string) {\n if (dialect === \"sqlite\" && hasFunction(client, \"prepare\") && hasFunction(client, \"batch\")) {\n const statements = splitSqlStatements(sql);\n await runSqlStatements(dialect, statements, (statement) =>\n (client as D1DatabaseLike).prepare(statement).bind().run(),\n );\n return;\n }\n\n if (dialect === \"sqlite\" && hasFunction(client, \"exec\")) {\n await (client as SqliteExecClient).exec(sql);\n return;\n }\n\n const statements = splitSqlStatements(sql);\n\n if (hasFunction(client, \"query\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlQueryClient).query(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"execute\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlExecuteClient).execute(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"executeQuery\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as KyselyExecuteClient).executeQuery({\n sql: statement,\n parameters: [],\n query: {\n kind: \"RawNode\",\n sqlFragments: [statement],\n parameters: [],\n },\n queryId: {},\n }),\n );\n return;\n }\n\n throw new Error(\n `Could not apply generated ${dialect} schema statements to the provided runtime client.`,\n );\n}\n\nasync function ensureInitializedConnection(client: unknown) {\n if (isRecord(client) && client.isInitialized === false && hasFunction(client, \"initialize\")) {\n await (client as InitializableConnectionLike).initialize?.();\n }\n}\n\nfunction resolveMikroormConnection(client: unknown) {\n if (hasFunction(client, \"getConnection\")) {\n return (client as MikroormEntityManagerLike).getConnection();\n }\n\n if (isRecord(client) && isRecord(client.em) && hasFunction(client.em, \"getConnection\")) {\n return (client.em as MikroormEntityManagerLike).getConnection();\n }\n\n throw new Error(\"Could not resolve a MikroORM SQL connection from the provided runtime client.\");\n}\n\nasync function ensureConnectedMikroorm(client: unknown) {\n if (isRecord(client) && hasFunction(client, \"isConnected\") && hasFunction(client, \"connect\")) {\n if (!(await (client as MikroormRuntimeLike).isConnected?.())) {\n await (client as MikroormRuntimeLike).connect?.();\n }\n return;\n }\n\n const connection = resolveMikroormConnection(client);\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nasync function runPrismaDbPush(schemaPath: string, databaseUrl: string, packageRoot: string) {\n await execFileAsync(\n \"pnpm\",\n [\"exec\", \"prisma\", \"db\", \"push\", \"--schema\", schemaPath, \"--skip-generate\"],\n {\n cwd: packageRoot,\n env: {\n ...process.env,\n DATABASE_URL: databaseUrl,\n },\n },\n );\n}\n\nfunction isEquivalentSqlSetupError(dialect: AutoDialect, statement: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const code = isRecord(error) ? error.code : undefined;\n const errno = isRecord(error) ? error.errno : undefined;\n const isIndexStatement = /^\\s*create\\s+(unique\\s+)?index\\b/i.test(statement);\n\n if (!isIndexStatement) {\n return false;\n }\n\n if (dialect === \"mysql\") {\n return code === \"ER_DUP_KEYNAME\" || errno === 1061 || /duplicate key name/i.test(message);\n }\n\n if (dialect === \"sqlite\") {\n return /index .+ already exists/i.test(message);\n }\n\n return code === \"42P07\" || /already exists/i.test(message);\n}\n\nfunction wrapSetupError(\n stage: \"apply\" | \"push\" | \"bootstrap\",\n runtime: ReturnType<typeof resolveRuntime>,\n error: unknown,\n statement?: string,\n) {\n if (error instanceof RuntimeSetupError) {\n return error;\n }\n\n const runtimeLabel = runtime.dialect ? `${runtime.kind} (${runtime.dialect})` : runtime.kind;\n const detail = error instanceof Error ? error.message : String(error);\n const suffix = statement ? ` Statement: ${statement}` : \"\";\n const helperName =\n stage === \"apply\" ? \"applySchema()\" : stage === \"push\" ? \"pushSchema()\" : \"bootstrapDatabase()\";\n\n return new RuntimeSetupError({\n stage,\n runtimeKind: runtime.kind,\n dialect: runtime.dialect,\n statement,\n cause: error,\n message: `${helperName} failed for ${runtimeLabel} runtime. ${detail}${suffix}`.trim(),\n });\n}\n\nasync function pushPrismaSchema(\n schema: SchemaDefinition<any>,\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const dialect = resolveDialect(runtime, options.dialect);\n const provider = prismaProviderForDialect(dialect);\n const databaseUrl = resolvePrismaDatabaseUrl(runtime, options);\n const packageRoot = options.prisma?.packageRoot ?? defaultPrismaPackageRoot;\n const tempDir = await mkdtemp(path.join(tmpdir(), \"farm-orm-runtime-prisma-\"));\n const schemaPath = path.join(tempDir, \"schema.prisma\");\n\n try {\n await writeFile(schemaPath, renderRuntimePrismaSchema(schema, provider), \"utf8\");\n await runPrismaDbPush(schemaPath, databaseUrl, packageRoot);\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n\nasync function ensureDynamoDbTable(client: DynamoDbBaseClientLike, tableName: string) {\n try {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n } catch (error) {\n if (\n !isRecord(error) ||\n (error.name !== \"ResourceNotFoundException\" && error.code !== \"ResourceNotFoundException\")\n ) {\n throw error;\n }\n\n await client.send(\n new CreateTableCommand({\n TableName: tableName,\n BillingMode: \"PAY_PER_REQUEST\",\n KeySchema: [\n {\n AttributeName: ormPrimaryKey,\n KeyType: \"HASH\",\n },\n ],\n AttributeDefinitions: [\n {\n AttributeName: ormPrimaryKey,\n AttributeType: \"S\",\n },\n ],\n }),\n );\n }\n\n for (let attempt = 0; attempt < 50; attempt += 1) {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n throw new Error(`Timed out while waiting for DynamoDB table \"${tableName}\" to become active.`);\n}\n\nasync function ensureDynamoDbTables(\n schema: SchemaDefinition<any>,\n client: DynamoDbBaseClientLike,\n tables?: Record<string, string | undefined>,\n) {\n const manifest = createManifest(schema);\n\n for (const [modelName, model] of Object.entries(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The DynamoDB runtime does not support schema-qualified tables for model \"${modelName}\". Use flat table names instead.`,\n );\n }\n await ensureDynamoDbTable(client, tables?.[modelName] ?? model.table);\n }\n}\n\nasync function applySchemaInternal<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n stage: \"apply\" | \"push\",\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n if (runtime.kind === \"prisma\") {\n await pushPrismaSchema(options.schema, runtime, options);\n return;\n }\n\n if (runtime.kind === \"mongo\") {\n const db = resolveMongoDb(runtime, options);\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n if (runtime.kind === \"firestore\") {\n return;\n }\n\n if (runtime.kind === \"kv\") {\n return;\n }\n\n if (runtime.kind === \"edgedb\") {\n return;\n }\n\n if (runtime.kind === \"dynamodb\") {\n await ensureDynamoDbTables(\n options.schema,\n runtime.client as DynamoDbBaseClientLike,\n options.dynamodb?.tables as Record<string, string | undefined> | undefined,\n );\n return;\n }\n\n if (runtime.kind === \"d1\") {\n const manifest = createManifest(options.schema);\n for (const model of Object.values(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The D1 runtime does not support schema-qualified tables for model \"${model.name}\". Use flat table names instead.`,\n );\n }\n }\n\n await applySqlSchemaToClient(\n runtime.client,\n \"sqlite\",\n renderSafeSql(options.schema, { dialect: \"sqlite\" }),\n );\n return;\n }\n\n if (runtime.kind === \"redis\") {\n return;\n }\n\n if (runtime.kind === \"unstorage\") {\n return;\n }\n\n if (runtime.kind === \"mongoose\") {\n const connection = runtime.client as Record<string, unknown>;\n const db = isRecord(connection.db) ? connection.db : connection;\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n const dialect = resolveDialect(runtime, options.dialect);\n const sql = renderSafeSql(options.schema, { dialect });\n\n if (runtime.kind === \"sql\") {\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"drizzle\") {\n await applySqlSchemaToClient(resolveDrizzleRuntimeClient(runtime, options), dialect, sql);\n return;\n }\n\n if (runtime.kind === \"typeorm\") {\n await ensureInitializedConnection(runtime.client);\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"mikroorm\") {\n await ensureConnectedMikroorm(runtime.client);\n await applySqlSchemaToClient(resolveMikroormConnection(runtime.client), dialect, sql);\n return;\n }\n\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n } catch (error) {\n throw wrapSetupError(stage, runtime, error);\n }\n}\n\nexport async function applySchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: ApplySchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"apply\", options);\n}\n\nexport async function pushSchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: PushSchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"push\", options);\n}\n\nexport async function bootstrapDatabase<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: BootstrapDatabaseOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n await pushSchema(options);\n return await createOrmFromRuntime(options);\n } catch (error) {\n throw wrapSetupError(\"bootstrap\", runtime, error);\n }\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n};\n","import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverConfig } from \"@farming-labs/orm-edgedb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig } from \"@farming-labs/orm-kv\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"edgedb\": {\n const { createEdgeDbDriver } = await import(\"@farming-labs/orm-edgedb\");\n return createEdgeDbDriver<TSchema>({\n client: runtime.client as EdgeDbDriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kv\": {\n const { createKvDriver } = await import(\"@farming-labs/orm-kv\");\n return createKvDriver<TSchema>({\n client: runtime.client as KvDriverConfig<TSchema>[\"client\"],\n base: options.kv?.base,\n prefixes: options.kv?.prefixes,\n transforms: options.kv?.transforms as KvDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type { EdgeDbDriverHandle } from \"@farming-labs/orm-edgedb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type { KvDriverConfig, KvDriverHandle } from \"@farming-labs/orm-kv\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | EdgeDbDriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | KvDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n kv?: {\n base?: KvDriverConfig<TSchema>[\"base\"];\n prefixes?: KvDriverConfig<TSchema>[\"prefixes\"];\n transforms?: KvDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":["import_orm","import_orm","keys","statements","path"]}
package/dist/setup.d.cts CHANGED
@@ -1,11 +1,13 @@
1
1
  import * as _farming_labs_orm from '@farming-labs/orm';
2
2
  import { SchemaDefinition } from '@farming-labs/orm';
3
- import { C as CreateDriverFromRuntimeOptions, a as CreateOrmFromRuntimeOptions, A as AutoDriverHandle } from './shared-DV_gGI8g.cjs';
4
- export { b as AutoDialect, M as MongooseConnectionLike } from './shared-DV_gGI8g.cjs';
3
+ import { C as CreateDriverFromRuntimeOptions, a as CreateOrmFromRuntimeOptions, A as AutoDriverHandle } from './shared-B2N69_A9.cjs';
4
+ export { b as AutoDialect, M as MongooseConnectionLike } from './shared-B2N69_A9.cjs';
5
5
  import '@farming-labs/orm-drizzle';
6
6
  import '@farming-labs/orm-d1';
7
7
  import '@farming-labs/orm-dynamodb';
8
+ import '@farming-labs/orm-edgedb';
8
9
  import '@farming-labs/orm-firestore';
10
+ import '@farming-labs/orm-kv';
9
11
  import '@farming-labs/orm-mongo';
10
12
  import '@farming-labs/orm-mongoose';
11
13
  import '@farming-labs/orm-kysely';
package/dist/setup.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  import * as _farming_labs_orm from '@farming-labs/orm';
2
2
  import { SchemaDefinition } from '@farming-labs/orm';
3
- import { C as CreateDriverFromRuntimeOptions, a as CreateOrmFromRuntimeOptions, A as AutoDriverHandle } from './shared-DV_gGI8g.js';
4
- export { b as AutoDialect, M as MongooseConnectionLike } from './shared-DV_gGI8g.js';
3
+ import { C as CreateDriverFromRuntimeOptions, a as CreateOrmFromRuntimeOptions, A as AutoDriverHandle } from './shared-B2N69_A9.js';
4
+ export { b as AutoDialect, M as MongooseConnectionLike } from './shared-B2N69_A9.js';
5
5
  import '@farming-labs/orm-drizzle';
6
6
  import '@farming-labs/orm-d1';
7
7
  import '@farming-labs/orm-dynamodb';
8
+ import '@farming-labs/orm-edgedb';
8
9
  import '@farming-labs/orm-firestore';
10
+ import '@farming-labs/orm-kv';
9
11
  import '@farming-labs/orm-mongo';
10
12
  import '@farming-labs/orm-mongoose';
11
13
  import '@farming-labs/orm-kysely';
package/dist/setup.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  resolveDialect,
6
6
  resolveMongoDb,
7
7
  resolveRuntime
8
- } from "./chunk-SBMUEYHG.js";
8
+ } from "./chunk-3OA6RHLW.js";
9
9
 
10
10
  // src/setup.ts
11
11
  import { execFile } from "child_process";
@@ -465,6 +465,12 @@ async function applySchemaInternal(stage, options) {
465
465
  if (runtime.kind === "firestore") {
466
466
  return;
467
467
  }
468
+ if (runtime.kind === "kv") {
469
+ return;
470
+ }
471
+ if (runtime.kind === "edgedb") {
472
+ return;
473
+ }
468
474
  if (runtime.kind === "dynamodb") {
469
475
  await ensureDynamoDbTables(
470
476
  options.schema,
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/setup.ts"],"sourcesContent":["import { execFile } from \"node:child_process\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport {\n createManifest,\n renderPrismaSchema,\n renderSafeSql,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { CreateTableCommand, DescribeTableCommand } from \"@aws-sdk/client-dynamodb\";\nimport type { DynamoDbBaseClientLike } from \"@farming-labs/orm-dynamodb\";\nimport type { DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { MongoDbLike } from \"@farming-labs/orm-mongo\";\nimport { createOrmFromRuntime } from \"./index\";\nimport {\n hasFunction,\n isRecord,\n resolveDialect,\n resolveMongoDb,\n resolveRuntime,\n type AutoDialect,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\ntype PrismaProvider = \"sqlite\" | \"postgresql\" | \"mysql\";\n\nexport type PushSchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type ApplySchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type BootstrapDatabaseOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateOrmFromRuntimeOptions<TSchema, TClient>;\n\ntype SqlQueryClient = {\n query(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqlExecuteClient = {\n execute(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqliteExecClient = {\n exec(sql: string): Promise<unknown> | unknown;\n};\n\ntype D1PreparedStatementLike = {\n bind(...params: unknown[]): D1PreparedStatementLike;\n run(): Promise<unknown> | unknown;\n};\n\ntype D1DatabaseLike = {\n prepare(sql: string): D1PreparedStatementLike;\n batch?(statements: readonly D1PreparedStatementLike[]): Promise<unknown> | unknown;\n};\n\ntype InitializableConnectionLike = {\n isInitialized?: boolean;\n initialize?(): Promise<unknown>;\n};\n\ntype MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: readonly unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\ntype MikroormEntityManagerLike = {\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n};\n\ntype MikroormRuntimeLike = {\n connect?(): Promise<unknown>;\n em?: MikroormEntityManagerLike;\n isConnected?(): Promise<boolean>;\n};\n\ntype KyselyExecuteClient = {\n executeQuery(query: {\n sql: string;\n parameters: readonly unknown[];\n query: {\n kind: \"RawNode\";\n sqlFragments: readonly string[];\n parameters: readonly unknown[];\n };\n queryId: object;\n }): Promise<unknown>;\n};\n\ntype MongoIndexCollectionLike = {\n createIndex(\n keys: Record<string, 1 | -1>,\n options?: { unique?: boolean; name?: string },\n ): Promise<unknown>;\n};\n\nconst ormPrimaryKey = \"__orm_pk\";\n\ntype MongoSchemaTargetLike = {\n collection(name: string): MongoIndexCollectionLike;\n createCollection?(name: string): Promise<unknown>;\n};\n\nexport class RuntimeSetupError extends Error {\n readonly stage: \"apply\" | \"push\" | \"bootstrap\";\n readonly runtimeKind: string;\n readonly dialect?: string;\n readonly statement?: string;\n override readonly cause?: unknown;\n\n constructor(input: {\n stage: \"apply\" | \"push\" | \"bootstrap\";\n runtimeKind: string;\n dialect?: string;\n message: string;\n statement?: string;\n cause?: unknown;\n }) {\n super(input.message);\n this.name = \"RuntimeSetupError\";\n this.stage = input.stage;\n this.runtimeKind = input.runtimeKind;\n this.dialect = input.dialect;\n this.statement = input.statement;\n this.cause = input.cause;\n }\n}\n\nconst execFileAsync = promisify(execFile);\nconst defaultPrismaPackageRoot = process.cwd();\n\nfunction prismaProviderForDialect(dialect: AutoDialect): PrismaProvider {\n switch (dialect) {\n case \"sqlite\":\n return \"sqlite\";\n case \"postgres\":\n return \"postgresql\";\n case \"mysql\":\n return \"mysql\";\n }\n}\n\nfunction withDatabaseEnv(rendered: string) {\n return rendered.replace(/url\\s+=\\s+.+/, `url = env(\"DATABASE_URL\")`);\n}\n\nfunction renderRuntimePrismaSchema(schema: SchemaDefinition<any>, provider: PrismaProvider) {\n return withDatabaseEnv(renderPrismaSchema(schema, { provider }));\n}\n\nfunction splitSqlStatements(sql: string) {\n const statements: string[] = [];\n let current = \"\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n for (let index = 0; index < sql.length; index += 1) {\n const char = sql[index]!;\n const next = sql[index + 1];\n\n current += char;\n\n if (quote === \"'\") {\n if (char === \"'\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"'\") {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === '\"') {\n if (char === '\"' && next === '\"') {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === '\"') {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === \"`\") {\n if (char === \"`\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"`\") {\n quote = null;\n }\n\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n continue;\n }\n\n if (char === \";\") {\n const statement = current.trim();\n if (statement) {\n statements.push(statement);\n }\n current = \"\";\n }\n }\n\n const trailing = current.trim();\n if (trailing) {\n statements.push(trailing.endsWith(\";\") ? trailing : `${trailing};`);\n }\n\n return statements.map((statement) => (statement.endsWith(\";\") ? statement : `${statement};`));\n}\n\nasync function runSqlStatements(\n dialect: AutoDialect,\n statements: readonly string[],\n run: (sql: string) => Promise<unknown> | unknown,\n) {\n for (const statement of statements) {\n try {\n await run(statement);\n } catch (error) {\n if (isEquivalentSqlSetupError(dialect, statement, error)) {\n continue;\n }\n throw error;\n }\n }\n}\n\nfunction resolvePrismaDatabaseUrl(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n): string {\n if (options.prisma?.databaseUrl) {\n return options.prisma.databaseUrl;\n }\n\n const client = runtime.client as Record<string, unknown>;\n const engineConfig = isRecord(client._engineConfig) ? client._engineConfig : undefined;\n\n const overrideDatasources = isRecord(engineConfig?.overrideDatasources)\n ? engineConfig.overrideDatasources\n : undefined;\n for (const datasource of Object.values(overrideDatasources ?? {})) {\n if (!isRecord(datasource)) continue;\n if (typeof datasource.url === \"string\" && datasource.url.length > 0) {\n return datasource.url;\n }\n }\n\n const inlineDatasources = isRecord(engineConfig?.inlineDatasources)\n ? engineConfig.inlineDatasources\n : undefined;\n for (const datasource of Object.values(inlineDatasources ?? {})) {\n if (!isRecord(datasource) || !isRecord(datasource.url)) continue;\n if (typeof datasource.url.value === \"string\" && datasource.url.value.length > 0) {\n return datasource.url.value;\n }\n if (\n typeof datasource.url.fromEnvVar === \"string\" &&\n process.env[datasource.url.fromEnvVar]?.length\n ) {\n return process.env[datasource.url.fromEnvVar]!;\n }\n }\n\n throw new Error(\n 'pushSchema() for a Prisma runtime requires a resolvable database URL. Pass \"prisma.databaseUrl\" when the Prisma client does not expose one.',\n );\n}\n\nfunction resolveDrizzleRuntimeClient(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const runtimeClient =\n options.drizzle?.client ??\n (runtime.client as DrizzleDriverConfig<any>[\"db\"] | undefined)?.$client ??\n undefined;\n\n if (!runtimeClient) {\n throw new Error(\n 'pushSchema() for a Drizzle runtime requires a Drizzle database with a \"$client\" property or an explicit \"drizzle.client\" option.',\n );\n }\n\n return runtimeClient;\n}\n\nfunction asMongoSchemaTarget(value: unknown): MongoSchemaTargetLike {\n if (hasFunction(value, \"collection\")) {\n return value as MongoSchemaTargetLike;\n }\n\n throw new Error(\"Unsupported Mongo schema target. Expected a MongoDB Db or Mongoose connection.\");\n}\n\nfunction isMongoNamespaceExistsError(error: unknown) {\n if (isRecord(error) && error.code === 48) {\n return true;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return /already exists|NamespaceExists/i.test(message);\n}\n\nfunction isMongoEquivalentIndexError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return /Index already exists with a different name/i.test(message);\n}\n\nfunction mongoIndexSpecsForModel(model: ReturnType<typeof createManifest>[\"models\"][string]) {\n const deduped = new Map<string, { keys: Record<string, 1>; unique: boolean; name: string }>();\n\n for (const field of Object.values(model.fields)) {\n if (field.kind === \"id\") {\n if (field.column !== \"_id\") {\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_pk_unique`,\n });\n }\n continue;\n }\n\n if (!field.unique) continue;\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_unique`,\n });\n }\n\n for (const constraint of [...model.constraints.unique, ...model.constraints.indexes]) {\n const keys = Object.fromEntries(constraint.columns.map((column) => [column, 1])) as Record<\n string,\n 1\n >;\n deduped.set(JSON.stringify({ keys, unique: constraint.unique }), {\n keys,\n unique: constraint.unique,\n name: constraint.name,\n });\n }\n\n return [...deduped.values()];\n}\n\nasync function ensureMongoCollectionsAndIndexes(\n schema: SchemaDefinition<any>,\n target: MongoSchemaTargetLike,\n) {\n const manifest = createManifest(schema);\n\n for (const model of Object.values(manifest.models)) {\n if (typeof target.createCollection === \"function\") {\n try {\n await target.createCollection(model.table);\n } catch (error) {\n if (!isMongoNamespaceExistsError(error)) {\n throw error;\n }\n }\n }\n\n const collection = target.collection(model.table);\n for (const index of mongoIndexSpecsForModel(model)) {\n try {\n await collection.createIndex(index.keys, {\n name: index.name,\n unique: index.unique,\n });\n } catch (error) {\n if (!isMongoEquivalentIndexError(error)) {\n throw error;\n }\n }\n }\n }\n}\n\nasync function applySqlSchemaToClient(client: unknown, dialect: AutoDialect, sql: string) {\n if (dialect === \"sqlite\" && hasFunction(client, \"prepare\") && hasFunction(client, \"batch\")) {\n const statements = splitSqlStatements(sql);\n await runSqlStatements(dialect, statements, (statement) =>\n (client as D1DatabaseLike).prepare(statement).bind().run(),\n );\n return;\n }\n\n if (dialect === \"sqlite\" && hasFunction(client, \"exec\")) {\n await (client as SqliteExecClient).exec(sql);\n return;\n }\n\n const statements = splitSqlStatements(sql);\n\n if (hasFunction(client, \"query\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlQueryClient).query(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"execute\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlExecuteClient).execute(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"executeQuery\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as KyselyExecuteClient).executeQuery({\n sql: statement,\n parameters: [],\n query: {\n kind: \"RawNode\",\n sqlFragments: [statement],\n parameters: [],\n },\n queryId: {},\n }),\n );\n return;\n }\n\n throw new Error(\n `Could not apply generated ${dialect} schema statements to the provided runtime client.`,\n );\n}\n\nasync function ensureInitializedConnection(client: unknown) {\n if (isRecord(client) && client.isInitialized === false && hasFunction(client, \"initialize\")) {\n await (client as InitializableConnectionLike).initialize?.();\n }\n}\n\nfunction resolveMikroormConnection(client: unknown) {\n if (hasFunction(client, \"getConnection\")) {\n return (client as MikroormEntityManagerLike).getConnection();\n }\n\n if (isRecord(client) && isRecord(client.em) && hasFunction(client.em, \"getConnection\")) {\n return (client.em as MikroormEntityManagerLike).getConnection();\n }\n\n throw new Error(\"Could not resolve a MikroORM SQL connection from the provided runtime client.\");\n}\n\nasync function ensureConnectedMikroorm(client: unknown) {\n if (isRecord(client) && hasFunction(client, \"isConnected\") && hasFunction(client, \"connect\")) {\n if (!(await (client as MikroormRuntimeLike).isConnected?.())) {\n await (client as MikroormRuntimeLike).connect?.();\n }\n return;\n }\n\n const connection = resolveMikroormConnection(client);\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nasync function runPrismaDbPush(schemaPath: string, databaseUrl: string, packageRoot: string) {\n await execFileAsync(\n \"pnpm\",\n [\"exec\", \"prisma\", \"db\", \"push\", \"--schema\", schemaPath, \"--skip-generate\"],\n {\n cwd: packageRoot,\n env: {\n ...process.env,\n DATABASE_URL: databaseUrl,\n },\n },\n );\n}\n\nfunction isEquivalentSqlSetupError(dialect: AutoDialect, statement: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const code = isRecord(error) ? error.code : undefined;\n const errno = isRecord(error) ? error.errno : undefined;\n const isIndexStatement = /^\\s*create\\s+(unique\\s+)?index\\b/i.test(statement);\n\n if (!isIndexStatement) {\n return false;\n }\n\n if (dialect === \"mysql\") {\n return code === \"ER_DUP_KEYNAME\" || errno === 1061 || /duplicate key name/i.test(message);\n }\n\n if (dialect === \"sqlite\") {\n return /index .+ already exists/i.test(message);\n }\n\n return code === \"42P07\" || /already exists/i.test(message);\n}\n\nfunction wrapSetupError(\n stage: \"apply\" | \"push\" | \"bootstrap\",\n runtime: ReturnType<typeof resolveRuntime>,\n error: unknown,\n statement?: string,\n) {\n if (error instanceof RuntimeSetupError) {\n return error;\n }\n\n const runtimeLabel = runtime.dialect ? `${runtime.kind} (${runtime.dialect})` : runtime.kind;\n const detail = error instanceof Error ? error.message : String(error);\n const suffix = statement ? ` Statement: ${statement}` : \"\";\n const helperName =\n stage === \"apply\" ? \"applySchema()\" : stage === \"push\" ? \"pushSchema()\" : \"bootstrapDatabase()\";\n\n return new RuntimeSetupError({\n stage,\n runtimeKind: runtime.kind,\n dialect: runtime.dialect,\n statement,\n cause: error,\n message: `${helperName} failed for ${runtimeLabel} runtime. ${detail}${suffix}`.trim(),\n });\n}\n\nasync function pushPrismaSchema(\n schema: SchemaDefinition<any>,\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const dialect = resolveDialect(runtime, options.dialect);\n const provider = prismaProviderForDialect(dialect);\n const databaseUrl = resolvePrismaDatabaseUrl(runtime, options);\n const packageRoot = options.prisma?.packageRoot ?? defaultPrismaPackageRoot;\n const tempDir = await mkdtemp(path.join(tmpdir(), \"farm-orm-runtime-prisma-\"));\n const schemaPath = path.join(tempDir, \"schema.prisma\");\n\n try {\n await writeFile(schemaPath, renderRuntimePrismaSchema(schema, provider), \"utf8\");\n await runPrismaDbPush(schemaPath, databaseUrl, packageRoot);\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n\nasync function ensureDynamoDbTable(client: DynamoDbBaseClientLike, tableName: string) {\n try {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n } catch (error) {\n if (\n !isRecord(error) ||\n (error.name !== \"ResourceNotFoundException\" && error.code !== \"ResourceNotFoundException\")\n ) {\n throw error;\n }\n\n await client.send(\n new CreateTableCommand({\n TableName: tableName,\n BillingMode: \"PAY_PER_REQUEST\",\n KeySchema: [\n {\n AttributeName: ormPrimaryKey,\n KeyType: \"HASH\",\n },\n ],\n AttributeDefinitions: [\n {\n AttributeName: ormPrimaryKey,\n AttributeType: \"S\",\n },\n ],\n }),\n );\n }\n\n for (let attempt = 0; attempt < 50; attempt += 1) {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n throw new Error(`Timed out while waiting for DynamoDB table \"${tableName}\" to become active.`);\n}\n\nasync function ensureDynamoDbTables(\n schema: SchemaDefinition<any>,\n client: DynamoDbBaseClientLike,\n tables?: Record<string, string | undefined>,\n) {\n const manifest = createManifest(schema);\n\n for (const [modelName, model] of Object.entries(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The DynamoDB runtime does not support schema-qualified tables for model \"${modelName}\". Use flat table names instead.`,\n );\n }\n await ensureDynamoDbTable(client, tables?.[modelName] ?? model.table);\n }\n}\n\nasync function applySchemaInternal<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n stage: \"apply\" | \"push\",\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n if (runtime.kind === \"prisma\") {\n await pushPrismaSchema(options.schema, runtime, options);\n return;\n }\n\n if (runtime.kind === \"mongo\") {\n const db = resolveMongoDb(runtime, options);\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n if (runtime.kind === \"firestore\") {\n return;\n }\n\n if (runtime.kind === \"dynamodb\") {\n await ensureDynamoDbTables(\n options.schema,\n runtime.client as DynamoDbBaseClientLike,\n options.dynamodb?.tables as Record<string, string | undefined> | undefined,\n );\n return;\n }\n\n if (runtime.kind === \"d1\") {\n const manifest = createManifest(options.schema);\n for (const model of Object.values(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The D1 runtime does not support schema-qualified tables for model \"${model.name}\". Use flat table names instead.`,\n );\n }\n }\n\n await applySqlSchemaToClient(\n runtime.client,\n \"sqlite\",\n renderSafeSql(options.schema, { dialect: \"sqlite\" }),\n );\n return;\n }\n\n if (runtime.kind === \"redis\") {\n return;\n }\n\n if (runtime.kind === \"unstorage\") {\n return;\n }\n\n if (runtime.kind === \"mongoose\") {\n const connection = runtime.client as Record<string, unknown>;\n const db = isRecord(connection.db) ? connection.db : connection;\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n const dialect = resolveDialect(runtime, options.dialect);\n const sql = renderSafeSql(options.schema, { dialect });\n\n if (runtime.kind === \"sql\") {\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"drizzle\") {\n await applySqlSchemaToClient(resolveDrizzleRuntimeClient(runtime, options), dialect, sql);\n return;\n }\n\n if (runtime.kind === \"typeorm\") {\n await ensureInitializedConnection(runtime.client);\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"mikroorm\") {\n await ensureConnectedMikroorm(runtime.client);\n await applySqlSchemaToClient(resolveMikroormConnection(runtime.client), dialect, sql);\n return;\n }\n\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n } catch (error) {\n throw wrapSetupError(stage, runtime, error);\n }\n}\n\nexport async function applySchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: ApplySchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"apply\", options);\n}\n\nexport async function pushSchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: PushSchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"push\", options);\n}\n\nexport async function bootstrapDatabase<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: BootstrapDatabaseOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n await pushSchema(options);\n return await createOrmFromRuntime(options);\n } catch (error) {\n throw wrapSetupError(\"bootstrap\", runtime, error);\n }\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n};\n"],"mappings":"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","names":["keys","statements"]}
1
+ {"version":3,"sources":["../src/setup.ts"],"sourcesContent":["import { execFile } from \"node:child_process\";\nimport { mkdtemp, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport {\n createManifest,\n renderPrismaSchema,\n renderSafeSql,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport { CreateTableCommand, DescribeTableCommand } from \"@aws-sdk/client-dynamodb\";\nimport type { DynamoDbBaseClientLike } from \"@farming-labs/orm-dynamodb\";\nimport type { DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { MongoDbLike } from \"@farming-labs/orm-mongo\";\nimport { createOrmFromRuntime } from \"./index\";\nimport {\n hasFunction,\n isRecord,\n resolveDialect,\n resolveMongoDb,\n resolveRuntime,\n type AutoDialect,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\ntype PrismaProvider = \"sqlite\" | \"postgresql\" | \"mysql\";\n\nexport type PushSchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type ApplySchemaOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type BootstrapDatabaseOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateOrmFromRuntimeOptions<TSchema, TClient>;\n\ntype SqlQueryClient = {\n query(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqlExecuteClient = {\n execute(sql: string, params?: readonly unknown[]): Promise<unknown> | unknown;\n};\n\ntype SqliteExecClient = {\n exec(sql: string): Promise<unknown> | unknown;\n};\n\ntype D1PreparedStatementLike = {\n bind(...params: unknown[]): D1PreparedStatementLike;\n run(): Promise<unknown> | unknown;\n};\n\ntype D1DatabaseLike = {\n prepare(sql: string): D1PreparedStatementLike;\n batch?(statements: readonly D1PreparedStatementLike[]): Promise<unknown> | unknown;\n};\n\ntype InitializableConnectionLike = {\n isInitialized?: boolean;\n initialize?(): Promise<unknown>;\n};\n\ntype MikroormConnectionLike = {\n connect?(options?: { skipOnConnect?: boolean }): Promise<unknown> | unknown;\n ensureConnection?(): Promise<unknown> | unknown;\n execute(\n sql: string,\n params?: readonly unknown[],\n method?: \"all\" | \"get\" | \"run\",\n ctx?: unknown,\n ): Promise<unknown> | unknown;\n isConnected?(): Promise<boolean> | boolean;\n};\n\ntype MikroormEntityManagerLike = {\n getConnection(type?: \"read\" | \"write\"): MikroormConnectionLike;\n};\n\ntype MikroormRuntimeLike = {\n connect?(): Promise<unknown>;\n em?: MikroormEntityManagerLike;\n isConnected?(): Promise<boolean>;\n};\n\ntype KyselyExecuteClient = {\n executeQuery(query: {\n sql: string;\n parameters: readonly unknown[];\n query: {\n kind: \"RawNode\";\n sqlFragments: readonly string[];\n parameters: readonly unknown[];\n };\n queryId: object;\n }): Promise<unknown>;\n};\n\ntype MongoIndexCollectionLike = {\n createIndex(\n keys: Record<string, 1 | -1>,\n options?: { unique?: boolean; name?: string },\n ): Promise<unknown>;\n};\n\nconst ormPrimaryKey = \"__orm_pk\";\n\ntype MongoSchemaTargetLike = {\n collection(name: string): MongoIndexCollectionLike;\n createCollection?(name: string): Promise<unknown>;\n};\n\nexport class RuntimeSetupError extends Error {\n readonly stage: \"apply\" | \"push\" | \"bootstrap\";\n readonly runtimeKind: string;\n readonly dialect?: string;\n readonly statement?: string;\n override readonly cause?: unknown;\n\n constructor(input: {\n stage: \"apply\" | \"push\" | \"bootstrap\";\n runtimeKind: string;\n dialect?: string;\n message: string;\n statement?: string;\n cause?: unknown;\n }) {\n super(input.message);\n this.name = \"RuntimeSetupError\";\n this.stage = input.stage;\n this.runtimeKind = input.runtimeKind;\n this.dialect = input.dialect;\n this.statement = input.statement;\n this.cause = input.cause;\n }\n}\n\nconst execFileAsync = promisify(execFile);\nconst defaultPrismaPackageRoot = process.cwd();\n\nfunction prismaProviderForDialect(dialect: AutoDialect): PrismaProvider {\n switch (dialect) {\n case \"sqlite\":\n return \"sqlite\";\n case \"postgres\":\n return \"postgresql\";\n case \"mysql\":\n return \"mysql\";\n }\n}\n\nfunction withDatabaseEnv(rendered: string) {\n return rendered.replace(/url\\s+=\\s+.+/, `url = env(\"DATABASE_URL\")`);\n}\n\nfunction renderRuntimePrismaSchema(schema: SchemaDefinition<any>, provider: PrismaProvider) {\n return withDatabaseEnv(renderPrismaSchema(schema, { provider }));\n}\n\nfunction splitSqlStatements(sql: string) {\n const statements: string[] = [];\n let current = \"\";\n let quote: \"'\" | '\"' | \"`\" | null = null;\n\n for (let index = 0; index < sql.length; index += 1) {\n const char = sql[index]!;\n const next = sql[index + 1];\n\n current += char;\n\n if (quote === \"'\") {\n if (char === \"'\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"'\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"'\") {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === '\"') {\n if (char === '\"' && next === '\"') {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === '\"') {\n quote = null;\n }\n\n continue;\n }\n\n if (quote === \"`\") {\n if (char === \"`\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"\\\\\" && next === \"`\") {\n current += next;\n index += 1;\n continue;\n }\n\n if (char === \"`\") {\n quote = null;\n }\n\n continue;\n }\n\n if (char === \"'\" || char === '\"' || char === \"`\") {\n quote = char;\n continue;\n }\n\n if (char === \";\") {\n const statement = current.trim();\n if (statement) {\n statements.push(statement);\n }\n current = \"\";\n }\n }\n\n const trailing = current.trim();\n if (trailing) {\n statements.push(trailing.endsWith(\";\") ? trailing : `${trailing};`);\n }\n\n return statements.map((statement) => (statement.endsWith(\";\") ? statement : `${statement};`));\n}\n\nasync function runSqlStatements(\n dialect: AutoDialect,\n statements: readonly string[],\n run: (sql: string) => Promise<unknown> | unknown,\n) {\n for (const statement of statements) {\n try {\n await run(statement);\n } catch (error) {\n if (isEquivalentSqlSetupError(dialect, statement, error)) {\n continue;\n }\n throw error;\n }\n }\n}\n\nfunction resolvePrismaDatabaseUrl(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n): string {\n if (options.prisma?.databaseUrl) {\n return options.prisma.databaseUrl;\n }\n\n const client = runtime.client as Record<string, unknown>;\n const engineConfig = isRecord(client._engineConfig) ? client._engineConfig : undefined;\n\n const overrideDatasources = isRecord(engineConfig?.overrideDatasources)\n ? engineConfig.overrideDatasources\n : undefined;\n for (const datasource of Object.values(overrideDatasources ?? {})) {\n if (!isRecord(datasource)) continue;\n if (typeof datasource.url === \"string\" && datasource.url.length > 0) {\n return datasource.url;\n }\n }\n\n const inlineDatasources = isRecord(engineConfig?.inlineDatasources)\n ? engineConfig.inlineDatasources\n : undefined;\n for (const datasource of Object.values(inlineDatasources ?? {})) {\n if (!isRecord(datasource) || !isRecord(datasource.url)) continue;\n if (typeof datasource.url.value === \"string\" && datasource.url.value.length > 0) {\n return datasource.url.value;\n }\n if (\n typeof datasource.url.fromEnvVar === \"string\" &&\n process.env[datasource.url.fromEnvVar]?.length\n ) {\n return process.env[datasource.url.fromEnvVar]!;\n }\n }\n\n throw new Error(\n 'pushSchema() for a Prisma runtime requires a resolvable database URL. Pass \"prisma.databaseUrl\" when the Prisma client does not expose one.',\n );\n}\n\nfunction resolveDrizzleRuntimeClient(\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const runtimeClient =\n options.drizzle?.client ??\n (runtime.client as DrizzleDriverConfig<any>[\"db\"] | undefined)?.$client ??\n undefined;\n\n if (!runtimeClient) {\n throw new Error(\n 'pushSchema() for a Drizzle runtime requires a Drizzle database with a \"$client\" property or an explicit \"drizzle.client\" option.',\n );\n }\n\n return runtimeClient;\n}\n\nfunction asMongoSchemaTarget(value: unknown): MongoSchemaTargetLike {\n if (hasFunction(value, \"collection\")) {\n return value as MongoSchemaTargetLike;\n }\n\n throw new Error(\"Unsupported Mongo schema target. Expected a MongoDB Db or Mongoose connection.\");\n}\n\nfunction isMongoNamespaceExistsError(error: unknown) {\n if (isRecord(error) && error.code === 48) {\n return true;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n return /already exists|NamespaceExists/i.test(message);\n}\n\nfunction isMongoEquivalentIndexError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return /Index already exists with a different name/i.test(message);\n}\n\nfunction mongoIndexSpecsForModel(model: ReturnType<typeof createManifest>[\"models\"][string]) {\n const deduped = new Map<string, { keys: Record<string, 1>; unique: boolean; name: string }>();\n\n for (const field of Object.values(model.fields)) {\n if (field.kind === \"id\") {\n if (field.column !== \"_id\") {\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_pk_unique`,\n });\n }\n continue;\n }\n\n if (!field.unique) continue;\n const keys = { [field.column]: 1 } satisfies Record<string, 1>;\n deduped.set(JSON.stringify({ keys, unique: true }), {\n keys,\n unique: true,\n name: `${model.table}_${field.column}_unique`,\n });\n }\n\n for (const constraint of [...model.constraints.unique, ...model.constraints.indexes]) {\n const keys = Object.fromEntries(constraint.columns.map((column) => [column, 1])) as Record<\n string,\n 1\n >;\n deduped.set(JSON.stringify({ keys, unique: constraint.unique }), {\n keys,\n unique: constraint.unique,\n name: constraint.name,\n });\n }\n\n return [...deduped.values()];\n}\n\nasync function ensureMongoCollectionsAndIndexes(\n schema: SchemaDefinition<any>,\n target: MongoSchemaTargetLike,\n) {\n const manifest = createManifest(schema);\n\n for (const model of Object.values(manifest.models)) {\n if (typeof target.createCollection === \"function\") {\n try {\n await target.createCollection(model.table);\n } catch (error) {\n if (!isMongoNamespaceExistsError(error)) {\n throw error;\n }\n }\n }\n\n const collection = target.collection(model.table);\n for (const index of mongoIndexSpecsForModel(model)) {\n try {\n await collection.createIndex(index.keys, {\n name: index.name,\n unique: index.unique,\n });\n } catch (error) {\n if (!isMongoEquivalentIndexError(error)) {\n throw error;\n }\n }\n }\n }\n}\n\nasync function applySqlSchemaToClient(client: unknown, dialect: AutoDialect, sql: string) {\n if (dialect === \"sqlite\" && hasFunction(client, \"prepare\") && hasFunction(client, \"batch\")) {\n const statements = splitSqlStatements(sql);\n await runSqlStatements(dialect, statements, (statement) =>\n (client as D1DatabaseLike).prepare(statement).bind().run(),\n );\n return;\n }\n\n if (dialect === \"sqlite\" && hasFunction(client, \"exec\")) {\n await (client as SqliteExecClient).exec(sql);\n return;\n }\n\n const statements = splitSqlStatements(sql);\n\n if (hasFunction(client, \"query\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlQueryClient).query(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"execute\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as SqlExecuteClient).execute(statement),\n );\n return;\n }\n\n if (hasFunction(client, \"executeQuery\")) {\n await runSqlStatements(dialect, statements, (statement) =>\n (client as KyselyExecuteClient).executeQuery({\n sql: statement,\n parameters: [],\n query: {\n kind: \"RawNode\",\n sqlFragments: [statement],\n parameters: [],\n },\n queryId: {},\n }),\n );\n return;\n }\n\n throw new Error(\n `Could not apply generated ${dialect} schema statements to the provided runtime client.`,\n );\n}\n\nasync function ensureInitializedConnection(client: unknown) {\n if (isRecord(client) && client.isInitialized === false && hasFunction(client, \"initialize\")) {\n await (client as InitializableConnectionLike).initialize?.();\n }\n}\n\nfunction resolveMikroormConnection(client: unknown) {\n if (hasFunction(client, \"getConnection\")) {\n return (client as MikroormEntityManagerLike).getConnection();\n }\n\n if (isRecord(client) && isRecord(client.em) && hasFunction(client.em, \"getConnection\")) {\n return (client.em as MikroormEntityManagerLike).getConnection();\n }\n\n throw new Error(\"Could not resolve a MikroORM SQL connection from the provided runtime client.\");\n}\n\nasync function ensureConnectedMikroorm(client: unknown) {\n if (isRecord(client) && hasFunction(client, \"isConnected\") && hasFunction(client, \"connect\")) {\n if (!(await (client as MikroormRuntimeLike).isConnected?.())) {\n await (client as MikroormRuntimeLike).connect?.();\n }\n return;\n }\n\n const connection = resolveMikroormConnection(client);\n if (hasFunction(connection, \"isConnected\")) {\n const connected = await connection.isConnected();\n if (connected) return;\n }\n\n if (hasFunction(connection, \"ensureConnection\")) {\n await connection.ensureConnection();\n return;\n }\n\n if (hasFunction(connection, \"connect\")) {\n await connection.connect({ skipOnConnect: false });\n }\n}\n\nasync function runPrismaDbPush(schemaPath: string, databaseUrl: string, packageRoot: string) {\n await execFileAsync(\n \"pnpm\",\n [\"exec\", \"prisma\", \"db\", \"push\", \"--schema\", schemaPath, \"--skip-generate\"],\n {\n cwd: packageRoot,\n env: {\n ...process.env,\n DATABASE_URL: databaseUrl,\n },\n },\n );\n}\n\nfunction isEquivalentSqlSetupError(dialect: AutoDialect, statement: string, error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n const code = isRecord(error) ? error.code : undefined;\n const errno = isRecord(error) ? error.errno : undefined;\n const isIndexStatement = /^\\s*create\\s+(unique\\s+)?index\\b/i.test(statement);\n\n if (!isIndexStatement) {\n return false;\n }\n\n if (dialect === \"mysql\") {\n return code === \"ER_DUP_KEYNAME\" || errno === 1061 || /duplicate key name/i.test(message);\n }\n\n if (dialect === \"sqlite\") {\n return /index .+ already exists/i.test(message);\n }\n\n return code === \"42P07\" || /already exists/i.test(message);\n}\n\nfunction wrapSetupError(\n stage: \"apply\" | \"push\" | \"bootstrap\",\n runtime: ReturnType<typeof resolveRuntime>,\n error: unknown,\n statement?: string,\n) {\n if (error instanceof RuntimeSetupError) {\n return error;\n }\n\n const runtimeLabel = runtime.dialect ? `${runtime.kind} (${runtime.dialect})` : runtime.kind;\n const detail = error instanceof Error ? error.message : String(error);\n const suffix = statement ? ` Statement: ${statement}` : \"\";\n const helperName =\n stage === \"apply\" ? \"applySchema()\" : stage === \"push\" ? \"pushSchema()\" : \"bootstrapDatabase()\";\n\n return new RuntimeSetupError({\n stage,\n runtimeKind: runtime.kind,\n dialect: runtime.dialect,\n statement,\n cause: error,\n message: `${helperName} failed for ${runtimeLabel} runtime. ${detail}${suffix}`.trim(),\n });\n}\n\nasync function pushPrismaSchema(\n schema: SchemaDefinition<any>,\n runtime: ReturnType<typeof resolveRuntime>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n const dialect = resolveDialect(runtime, options.dialect);\n const provider = prismaProviderForDialect(dialect);\n const databaseUrl = resolvePrismaDatabaseUrl(runtime, options);\n const packageRoot = options.prisma?.packageRoot ?? defaultPrismaPackageRoot;\n const tempDir = await mkdtemp(path.join(tmpdir(), \"farm-orm-runtime-prisma-\"));\n const schemaPath = path.join(tempDir, \"schema.prisma\");\n\n try {\n await writeFile(schemaPath, renderRuntimePrismaSchema(schema, provider), \"utf8\");\n await runPrismaDbPush(schemaPath, databaseUrl, packageRoot);\n } finally {\n await rm(tempDir, { recursive: true, force: true });\n }\n}\n\nasync function ensureDynamoDbTable(client: DynamoDbBaseClientLike, tableName: string) {\n try {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n } catch (error) {\n if (\n !isRecord(error) ||\n (error.name !== \"ResourceNotFoundException\" && error.code !== \"ResourceNotFoundException\")\n ) {\n throw error;\n }\n\n await client.send(\n new CreateTableCommand({\n TableName: tableName,\n BillingMode: \"PAY_PER_REQUEST\",\n KeySchema: [\n {\n AttributeName: ormPrimaryKey,\n KeyType: \"HASH\",\n },\n ],\n AttributeDefinitions: [\n {\n AttributeName: ormPrimaryKey,\n AttributeType: \"S\",\n },\n ],\n }),\n );\n }\n\n for (let attempt = 0; attempt < 50; attempt += 1) {\n const described = (await client.send(\n new DescribeTableCommand({\n TableName: tableName,\n }),\n )) as { Table?: { TableStatus?: string } };\n\n if (described.Table?.TableStatus === \"ACTIVE\") {\n return;\n }\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n\n throw new Error(`Timed out while waiting for DynamoDB table \"${tableName}\" to become active.`);\n}\n\nasync function ensureDynamoDbTables(\n schema: SchemaDefinition<any>,\n client: DynamoDbBaseClientLike,\n tables?: Record<string, string | undefined>,\n) {\n const manifest = createManifest(schema);\n\n for (const [modelName, model] of Object.entries(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The DynamoDB runtime does not support schema-qualified tables for model \"${modelName}\". Use flat table names instead.`,\n );\n }\n await ensureDynamoDbTable(client, tables?.[modelName] ?? model.table);\n }\n}\n\nasync function applySchemaInternal<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n stage: \"apply\" | \"push\",\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n if (runtime.kind === \"prisma\") {\n await pushPrismaSchema(options.schema, runtime, options);\n return;\n }\n\n if (runtime.kind === \"mongo\") {\n const db = resolveMongoDb(runtime, options);\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n if (runtime.kind === \"firestore\") {\n return;\n }\n\n if (runtime.kind === \"kv\") {\n return;\n }\n\n if (runtime.kind === \"edgedb\") {\n return;\n }\n\n if (runtime.kind === \"dynamodb\") {\n await ensureDynamoDbTables(\n options.schema,\n runtime.client as DynamoDbBaseClientLike,\n options.dynamodb?.tables as Record<string, string | undefined> | undefined,\n );\n return;\n }\n\n if (runtime.kind === \"d1\") {\n const manifest = createManifest(options.schema);\n for (const model of Object.values(manifest.models)) {\n if (model.schema) {\n throw new Error(\n `The D1 runtime does not support schema-qualified tables for model \"${model.name}\". Use flat table names instead.`,\n );\n }\n }\n\n await applySqlSchemaToClient(\n runtime.client,\n \"sqlite\",\n renderSafeSql(options.schema, { dialect: \"sqlite\" }),\n );\n return;\n }\n\n if (runtime.kind === \"redis\") {\n return;\n }\n\n if (runtime.kind === \"unstorage\") {\n return;\n }\n\n if (runtime.kind === \"mongoose\") {\n const connection = runtime.client as Record<string, unknown>;\n const db = isRecord(connection.db) ? connection.db : connection;\n await ensureMongoCollectionsAndIndexes(options.schema, asMongoSchemaTarget(db));\n return;\n }\n\n const dialect = resolveDialect(runtime, options.dialect);\n const sql = renderSafeSql(options.schema, { dialect });\n\n if (runtime.kind === \"sql\") {\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"drizzle\") {\n await applySqlSchemaToClient(resolveDrizzleRuntimeClient(runtime, options), dialect, sql);\n return;\n }\n\n if (runtime.kind === \"typeorm\") {\n await ensureInitializedConnection(runtime.client);\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n return;\n }\n\n if (runtime.kind === \"mikroorm\") {\n await ensureConnectedMikroorm(runtime.client);\n await applySqlSchemaToClient(resolveMikroormConnection(runtime.client), dialect, sql);\n return;\n }\n\n await applySqlSchemaToClient(runtime.client, dialect, sql);\n } catch (error) {\n throw wrapSetupError(stage, runtime, error);\n }\n}\n\nexport async function applySchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: ApplySchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"apply\", options);\n}\n\nexport async function pushSchema<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: PushSchemaOptions<TSchema, TClient>,\n) {\n await applySchemaInternal(\"push\", options);\n}\n\nexport async function bootstrapDatabase<TSchema extends SchemaDefinition<any>, TClient = unknown>(\n options: BootstrapDatabaseOptions<TSchema, TClient>,\n) {\n const runtime = resolveRuntime(options);\n\n try {\n await pushSchema(options);\n return await createOrmFromRuntime(options);\n } catch (error) {\n throw wrapSetupError(\"bootstrap\", runtime, error);\n }\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n};\n"],"mappings":"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","names":["keys","statements"]}
@@ -2,7 +2,9 @@ import { DetectedDatabaseDialect, OrmDriverHandle, SchemaDefinition, DetectedDat
2
2
  import { DrizzleDialect, DrizzleDriverConfig } from '@farming-labs/orm-drizzle';
3
3
  import { D1DriverHandle } from '@farming-labs/orm-d1';
4
4
  import { DynamoDbDriverHandle, DynamoDbDriverConfig } from '@farming-labs/orm-dynamodb';
5
+ import { EdgeDbDriverHandle } from '@farming-labs/orm-edgedb';
5
6
  import { FirestoreDriverHandle, FirestoreDbLike, FirestoreDriverConfig } from '@farming-labs/orm-firestore';
7
+ import { KvDriverHandle, KvDriverConfig } from '@farming-labs/orm-kv';
6
8
  import { MongoCollectionMap, MongoDbLike, MongoDriverConfig, MongoSessionLike } from '@farming-labs/orm-mongo';
7
9
  import { MongooseModelLike, MongooseFieldTransform, MongooseSessionLike, MongooseSessionSourceLike } from '@farming-labs/orm-mongoose';
8
10
  import { KyselyDialect } from '@farming-labs/orm-kysely';
@@ -15,7 +17,7 @@ import { TypeormDriverHandle } from '@farming-labs/orm-typeorm';
15
17
  import { UnstorageDriverHandle, UnstorageDriverConfig } from '@farming-labs/orm-unstorage';
16
18
 
17
19
  type AutoDialect = DetectedDatabaseDialect;
18
- type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | D1DriverHandle<any> | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | DynamoDbDriverHandle<any> | FirestoreDriverHandle<any> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | MikroormDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown> | RedisDriverHandle<any> | SequelizeDriverHandle<TClient, SequelizeDriverDialect> | TypeormDriverHandle<TClient, AutoDialect> | UnstorageDriverHandle<any>;
20
+ type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | D1DriverHandle<any> | EdgeDbDriverHandle<any> | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | DynamoDbDriverHandle<any> | FirestoreDriverHandle<any> | KvDriverHandle<any> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | MikroormDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown> | RedisDriverHandle<any> | SequelizeDriverHandle<TClient, SequelizeDriverDialect> | TypeormDriverHandle<TClient, AutoDialect> | UnstorageDriverHandle<any>;
19
21
  type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = {
20
22
  schema: TSchema;
21
23
  client?: TClient;
@@ -37,6 +39,11 @@ type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClie
37
39
  collections?: FirestoreDriverConfig<TSchema>["collections"];
38
40
  transforms?: FirestoreDriverConfig<TSchema>["transforms"];
39
41
  };
42
+ kv?: {
43
+ base?: KvDriverConfig<TSchema>["base"];
44
+ prefixes?: KvDriverConfig<TSchema>["prefixes"];
45
+ transforms?: KvDriverConfig<TSchema>["transforms"];
46
+ };
40
47
  redis?: {
41
48
  base?: RedisDriverConfig<TSchema>["base"];
42
49
  prefixes?: RedisDriverConfig<TSchema>["prefixes"];
@@ -2,7 +2,9 @@ import { DetectedDatabaseDialect, OrmDriverHandle, SchemaDefinition, DetectedDat
2
2
  import { DrizzleDialect, DrizzleDriverConfig } from '@farming-labs/orm-drizzle';
3
3
  import { D1DriverHandle } from '@farming-labs/orm-d1';
4
4
  import { DynamoDbDriverHandle, DynamoDbDriverConfig } from '@farming-labs/orm-dynamodb';
5
+ import { EdgeDbDriverHandle } from '@farming-labs/orm-edgedb';
5
6
  import { FirestoreDriverHandle, FirestoreDbLike, FirestoreDriverConfig } from '@farming-labs/orm-firestore';
7
+ import { KvDriverHandle, KvDriverConfig } from '@farming-labs/orm-kv';
6
8
  import { MongoCollectionMap, MongoDbLike, MongoDriverConfig, MongoSessionLike } from '@farming-labs/orm-mongo';
7
9
  import { MongooseModelLike, MongooseFieldTransform, MongooseSessionLike, MongooseSessionSourceLike } from '@farming-labs/orm-mongoose';
8
10
  import { KyselyDialect } from '@farming-labs/orm-kysely';
@@ -15,7 +17,7 @@ import { TypeormDriverHandle } from '@farming-labs/orm-typeorm';
15
17
  import { UnstorageDriverHandle, UnstorageDriverConfig } from '@farming-labs/orm-unstorage';
16
18
 
17
19
  type AutoDialect = DetectedDatabaseDialect;
18
- type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | D1DriverHandle<any> | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | DynamoDbDriverHandle<any> | FirestoreDriverHandle<any> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | MikroormDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown> | RedisDriverHandle<any> | SequelizeDriverHandle<TClient, SequelizeDriverDialect> | TypeormDriverHandle<TClient, AutoDialect> | UnstorageDriverHandle<any>;
20
+ type AutoDriverHandle<TClient = unknown> = PrismaDriverHandle | D1DriverHandle<any> | EdgeDbDriverHandle<any> | SqlDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"drizzle", TClient, DrizzleDialect> | DynamoDbDriverHandle<any> | FirestoreDriverHandle<any> | KvDriverHandle<any> | OrmDriverHandle<"kysely", TClient, KyselyDialect> | MikroormDriverHandle<TClient, AutoDialect> | OrmDriverHandle<"mongo", unknown> | OrmDriverHandle<"mongoose", unknown> | RedisDriverHandle<any> | SequelizeDriverHandle<TClient, SequelizeDriverDialect> | TypeormDriverHandle<TClient, AutoDialect> | UnstorageDriverHandle<any>;
19
21
  type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClient = unknown> = {
20
22
  schema: TSchema;
21
23
  client?: TClient;
@@ -37,6 +39,11 @@ type CreateDriverFromRuntimeOptions<TSchema extends SchemaDefinition<any>, TClie
37
39
  collections?: FirestoreDriverConfig<TSchema>["collections"];
38
40
  transforms?: FirestoreDriverConfig<TSchema>["transforms"];
39
41
  };
42
+ kv?: {
43
+ base?: KvDriverConfig<TSchema>["base"];
44
+ prefixes?: KvDriverConfig<TSchema>["prefixes"];
45
+ transforms?: KvDriverConfig<TSchema>["transforms"];
46
+ };
40
47
  redis?: {
41
48
  base?: RedisDriverConfig<TSchema>["base"];
42
49
  prefixes?: RedisDriverConfig<TSchema>["prefixes"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/orm-runtime",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -25,21 +25,23 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@aws-sdk/client-dynamodb": "^3.888.0",
28
- "@farming-labs/orm": "0.0.45",
29
- "@farming-labs/orm-d1": "0.0.45",
30
- "@farming-labs/orm-mongo": "0.0.45",
31
- "@farming-labs/orm-drizzle": "0.0.45",
32
- "@farming-labs/orm-dynamodb": "0.0.45",
33
- "@farming-labs/orm-mikroorm": "0.0.45",
34
- "@farming-labs/orm-kysely": "0.0.45",
35
- "@farming-labs/orm-sequelize": "0.0.45",
36
- "@farming-labs/orm-sql": "0.0.45",
37
- "@farming-labs/orm-typeorm": "0.0.45",
38
- "@farming-labs/orm-mongoose": "0.0.45",
39
- "@farming-labs/orm-prisma": "0.0.45",
40
- "@farming-labs/orm-redis": "0.0.45",
41
- "@farming-labs/orm-unstorage": "0.0.45",
42
- "@farming-labs/orm-firestore": "0.0.45"
28
+ "@farming-labs/orm": "0.0.47",
29
+ "@farming-labs/orm-kysely": "0.0.47",
30
+ "@farming-labs/orm-mikroorm": "0.0.47",
31
+ "@farming-labs/orm-mongo": "0.0.47",
32
+ "@farming-labs/orm-mongoose": "0.0.47",
33
+ "@farming-labs/orm-firestore": "0.0.47",
34
+ "@farming-labs/orm-kv": "0.0.47",
35
+ "@farming-labs/orm-sequelize": "0.0.47",
36
+ "@farming-labs/orm-typeorm": "0.0.47",
37
+ "@farming-labs/orm-sql": "0.0.47",
38
+ "@farming-labs/orm-drizzle": "0.0.47",
39
+ "@farming-labs/orm-prisma": "0.0.47",
40
+ "@farming-labs/orm-unstorage": "0.0.47",
41
+ "@farming-labs/orm-dynamodb": "0.0.47",
42
+ "@farming-labs/orm-redis": "0.0.47",
43
+ "@farming-labs/orm-d1": "0.0.47",
44
+ "@farming-labs/orm-edgedb": "0.0.47"
43
45
  },
44
46
  "devDependencies": {
45
47
  "tsup": "^8.4.0"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/shared.ts"],"sourcesContent":["import {\n createOrm,\n type OrmClient,\n type OrmDriver,\n type SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverConfig } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig } from \"@farming-labs/orm-dynamodb\";\nimport type { FirestoreDriverConfig } from \"@farming-labs/orm-firestore\";\nimport type { KyselyDialect, KyselyDriverConfig } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverConfig, MikroormDriverDialect } from \"@farming-labs/orm-mikroorm\";\nimport type { MongoDriverConfig } from \"@farming-labs/orm-mongo\";\nimport type { MongooseDriverConfig } from \"@farming-labs/orm-mongoose\";\nimport type { PrismaDriverConfig } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverConfig, SequelizeDriverDialect } from \"@farming-labs/orm-sequelize\";\nimport type {\n MysqlConnectionLike,\n MysqlPoolLike,\n PgClientLike,\n PgPoolLike,\n SqliteDatabaseLike,\n} from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverConfig } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig } from \"@farming-labs/orm-unstorage\";\nimport {\n inferMongooseModels,\n resolveDialect,\n resolveFirestoreDb,\n resolveMongoDb,\n resolveMongoSessionSource,\n resolveRuntime,\n type AutoDriverHandle,\n type CreateDriverFromRuntimeOptions,\n type CreateOrmFromRuntimeOptions,\n type MongooseConnectionLike,\n} from \"./shared\";\n\nasync function createSqlDriverFromRuntime<TSchema extends SchemaDefinition<any>>(\n runtime: Awaited<ReturnType<typeof resolveRuntime>>,\n dialect: ReturnType<typeof resolveDialect>,\n) {\n const { createMysqlDriver, createPgClientDriver, createPgPoolDriver, createSqliteDriver } =\n await import(\"@farming-labs/orm-sql\");\n\n if (dialect === \"sqlite\") {\n return createSqliteDriver<TSchema>(runtime.client as SqliteDatabaseLike);\n }\n\n if (dialect === \"postgres\") {\n if (runtime.source === \"pool\") {\n return createPgPoolDriver<TSchema>(runtime.client as PgPoolLike);\n }\n\n return createPgClientDriver<TSchema>(runtime.client as PgClientLike);\n }\n\n if (runtime.source === \"pool\") {\n return createMysqlDriver<TSchema>(runtime.client as MysqlPoolLike);\n }\n\n return createMysqlDriver<TSchema>(runtime.client as MysqlConnectionLike);\n}\n\nexport async function createDriverFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateDriverFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmDriver<TSchema, AutoDriverHandle<TClient>>> {\n const runtime = resolveRuntime(options);\n\n switch (runtime.kind) {\n case \"prisma\": {\n const { createPrismaDriver } = await import(\"@farming-labs/orm-prisma\");\n return createPrismaDriver<TSchema>({\n client: runtime.client as PrismaDriverConfig<TSchema>[\"client\"],\n models: options.prisma?.models,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"drizzle\": {\n const { createDrizzleDriver } = await import(\"@farming-labs/orm-drizzle\");\n return createDrizzleDriver<TSchema>({\n db: runtime.client as DrizzleDriverConfig<TSchema>[\"db\"],\n client: options.drizzle?.client,\n dialect: resolveDialect(runtime, options.dialect) as DrizzleDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"kysely\": {\n const { createKyselyDriver } = await import(\"@farming-labs/orm-kysely\");\n return createKyselyDriver<TSchema>({\n db: runtime.client as KyselyDriverConfig<TSchema>[\"db\"],\n dialect: resolveDialect(runtime, options.dialect) as KyselyDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"d1\": {\n const { createD1Driver } = await import(\"@farming-labs/orm-d1\");\n return createD1Driver<TSchema>({\n client: runtime.client as D1DriverConfig<TSchema>[\"client\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mikroorm\": {\n const { createMikroormDriver } = await import(\"@farming-labs/orm-mikroorm\");\n return createMikroormDriver<TSchema>({\n orm: runtime.client as MikroormDriverConfig<TSchema>[\"orm\"],\n dialect: resolveDialect(runtime, options.dialect) as MikroormDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"firestore\": {\n const { createFirestoreDriver } = await import(\"@farming-labs/orm-firestore\");\n return createFirestoreDriver<TSchema>({\n db: resolveFirestoreDb(runtime, options),\n collections: options.firestore?.collections,\n transforms: options.firestore?.transforms as FirestoreDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"dynamodb\": {\n const { createDynamodbDriver } = await import(\"@farming-labs/orm-dynamodb\");\n return createDynamodbDriver<TSchema>({\n client: runtime.client as DynamoDbDriverConfig<TSchema>[\"client\"],\n documentClient: options.dynamodb?.documentClient,\n tables: options.dynamodb?.tables,\n transforms: options.dynamodb?.transforms as DynamoDbDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"unstorage\": {\n const { createUnstorageDriver } = await import(\"@farming-labs/orm-unstorage\");\n return createUnstorageDriver<TSchema>({\n storage: runtime.client as UnstorageDriverConfig<TSchema>[\"storage\"],\n base: options.unstorage?.base,\n prefixes: options.unstorage?.prefixes,\n transforms: options.unstorage?.transforms as UnstorageDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"redis\": {\n const { createRedisDriver } = await import(\"@farming-labs/orm-redis\");\n return createRedisDriver<TSchema>({\n client: runtime.client as RedisDriverConfig<TSchema>[\"client\"],\n base: options.redis?.base,\n prefixes: options.redis?.prefixes,\n transforms: options.redis?.transforms as RedisDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sequelize\": {\n const { createSequelizeDriver } = await import(\"@farming-labs/orm-sequelize\");\n return createSequelizeDriver<TSchema>({\n sequelize: runtime.client as SequelizeDriverConfig<TSchema>[\"sequelize\"],\n dialect: resolveDialect(runtime, options.dialect) as SequelizeDriverDialect,\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"typeorm\": {\n const { createTypeormDriver } = await import(\"@farming-labs/orm-typeorm\");\n return createTypeormDriver<TSchema>({\n dataSource: runtime.client as TypeormDriverConfig<TSchema>[\"dataSource\"],\n dialect: resolveDialect(runtime, options.dialect),\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"sql\":\n return (await createSqlDriverFromRuntime<TSchema>(\n runtime,\n resolveDialect(runtime, options.dialect),\n )) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n case \"mongo\": {\n const { createMongoDriver } = await import(\"@farming-labs/orm-mongo\");\n const db = resolveMongoDb(runtime, options);\n const sessionSource = resolveMongoSessionSource(runtime, db, options);\n\n return createMongoDriver<TSchema>({\n collections: options.mongo?.collections,\n db,\n client: sessionSource.client,\n startSession: sessionSource.startSession,\n transforms: options.mongo?.transforms as MongoDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n case \"mongoose\": {\n const { createMongooseDriver } = await import(\"@farming-labs/orm-mongoose\");\n const connection = runtime.client as MongooseConnectionLike;\n\n return createMongooseDriver<TSchema>({\n models: options.mongoose?.models ?? inferMongooseModels(options.schema, connection),\n connection,\n startSession: options.mongoose?.startSession,\n transforms: options.mongoose?.transforms as MongooseDriverConfig<TSchema>[\"transforms\"],\n }) as OrmDriver<TSchema, AutoDriverHandle<TClient>>;\n }\n }\n}\n\nexport async function createOrmFromRuntime<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n>(\n options: CreateOrmFromRuntimeOptions<TSchema, TClient>,\n): Promise<OrmClient<TSchema, AutoDriverHandle<TClient>>> {\n const driver = await createDriverFromRuntime(options);\n return createOrm({\n schema: options.schema,\n driver,\n }) as OrmClient<TSchema, AutoDriverHandle<TClient>>;\n}\n\nexport type {\n AutoDialect,\n AutoDriverHandle,\n CreateDriverFromRuntimeOptions,\n CreateOrmFromRuntimeOptions,\n MongooseConnectionLike,\n} from \"./shared\";\n","import { createManifest, requireDatabaseRuntime } from \"@farming-labs/orm\";\nimport type {\n DetectedDatabaseDialect,\n DetectedDatabaseRuntime,\n ModelName,\n OrmDriverHandle,\n SchemaDefinition,\n} from \"@farming-labs/orm\";\nimport type { DrizzleDialect, DrizzleDriverConfig } from \"@farming-labs/orm-drizzle\";\nimport type { D1DriverHandle } from \"@farming-labs/orm-d1\";\nimport type { DynamoDbDriverConfig, DynamoDbDriverHandle } from \"@farming-labs/orm-dynamodb\";\nimport type {\n FirestoreDbLike,\n FirestoreDriverConfig,\n FirestoreDriverHandle,\n} from \"@farming-labs/orm-firestore\";\nimport type {\n MongoCollectionMap,\n MongoDbLike,\n MongoDriverConfig,\n MongoSessionLike,\n MongoSessionSourceLike,\n} from \"@farming-labs/orm-mongo\";\nimport type {\n MongooseFieldTransform,\n MongooseModelLike,\n MongooseSessionLike,\n MongooseSessionSourceLike,\n} from \"@farming-labs/orm-mongoose\";\nimport type { KyselyDialect } from \"@farming-labs/orm-kysely\";\nimport type { MikroormDriverHandle } from \"@farming-labs/orm-mikroorm\";\nimport type { PrismaDriverConfig, PrismaDriverHandle } from \"@farming-labs/orm-prisma\";\nimport type { RedisDriverConfig, RedisDriverHandle } from \"@farming-labs/orm-redis\";\nimport type { SequelizeDriverDialect, SequelizeDriverHandle } from \"@farming-labs/orm-sequelize\";\nimport type { SqlDriverHandle } from \"@farming-labs/orm-sql\";\nimport type { TypeormDriverHandle } from \"@farming-labs/orm-typeorm\";\nimport type { UnstorageDriverConfig, UnstorageDriverHandle } from \"@farming-labs/orm-unstorage\";\n\nexport type AutoDialect = DetectedDatabaseDialect;\n\nexport type AutoDriverHandle<TClient = unknown> =\n | PrismaDriverHandle\n | D1DriverHandle<any>\n | SqlDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"drizzle\", TClient, DrizzleDialect>\n | DynamoDbDriverHandle<any>\n | FirestoreDriverHandle<any>\n | OrmDriverHandle<\"kysely\", TClient, KyselyDialect>\n | MikroormDriverHandle<TClient, AutoDialect>\n | OrmDriverHandle<\"mongo\", unknown>\n | OrmDriverHandle<\"mongoose\", unknown>\n | RedisDriverHandle<any>\n | SequelizeDriverHandle<TClient, SequelizeDriverDialect>\n | TypeormDriverHandle<TClient, AutoDialect>\n | UnstorageDriverHandle<any>;\n\nexport type CreateDriverFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = {\n schema: TSchema;\n client?: TClient;\n runtime?: DetectedDatabaseRuntime<TClient>;\n dialect?: AutoDialect;\n databaseName?: string;\n prisma?: Pick<PrismaDriverConfig<TSchema>, \"models\"> & {\n databaseUrl?: string;\n packageRoot?: string;\n };\n drizzle?: Pick<DrizzleDriverConfig<TSchema>, \"client\">;\n dynamodb?: {\n documentClient?: DynamoDbDriverConfig<TSchema>[\"documentClient\"];\n tables?: DynamoDbDriverConfig<TSchema>[\"tables\"];\n transforms?: DynamoDbDriverConfig<TSchema>[\"transforms\"];\n };\n firestore?: {\n db?: FirestoreDbLike;\n collections?: FirestoreDriverConfig<TSchema>[\"collections\"];\n transforms?: FirestoreDriverConfig<TSchema>[\"transforms\"];\n };\n redis?: {\n base?: RedisDriverConfig<TSchema>[\"base\"];\n prefixes?: RedisDriverConfig<TSchema>[\"prefixes\"];\n transforms?: RedisDriverConfig<TSchema>[\"transforms\"];\n };\n unstorage?: {\n base?: UnstorageDriverConfig<TSchema>[\"base\"];\n prefixes?: UnstorageDriverConfig<TSchema>[\"prefixes\"];\n transforms?: UnstorageDriverConfig<TSchema>[\"transforms\"];\n };\n mongo?: {\n collections?: MongoCollectionMap<TSchema>;\n db?: MongoDbLike;\n transforms?: MongoDriverConfig<TSchema>[\"transforms\"];\n startSession?: () => Promise<MongoSessionLike>;\n };\n mongoose?: {\n models?: Record<ModelName<TSchema>, MongooseModelLike>;\n transforms?: Partial<Record<string, Partial<Record<string, MongooseFieldTransform>>>>;\n startSession?: () => Promise<MongooseSessionLike>;\n };\n};\n\nexport type CreateOrmFromRuntimeOptions<\n TSchema extends SchemaDefinition<any>,\n TClient = unknown,\n> = CreateDriverFromRuntimeOptions<TSchema, TClient>;\n\nexport type MongooseConnectionLike = MongooseSessionSourceLike & {\n models?: Record<string, MongooseModelLike & { collection?: { collectionName?: string } }>;\n};\n\ntype MongoClientLike = MongoSessionSourceLike & {\n db(name?: string): MongoDbLike;\n};\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\";\n}\n\nexport function resolveFirestoreDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n return (options.firestore?.db ?? runtime.client) as FirestoreDbLike;\n}\n\nexport function hasFunction<TName extends string>(\n value: unknown,\n name: TName,\n): value is Record<TName, (...args: any[]) => unknown> {\n return isRecord(value) && typeof value[name] === \"function\";\n}\n\nexport function resolveRuntime<TClient>(\n options: CreateDriverFromRuntimeOptions<any, TClient>,\n): DetectedDatabaseRuntime<TClient> {\n if (options.runtime) {\n return options.runtime;\n }\n\n if (options.client === undefined) {\n throw new Error(\n 'createDriverFromRuntime() requires either a detected \"runtime\" or a raw \"client\".',\n );\n }\n\n return requireDatabaseRuntime(options.client);\n}\n\nexport function resolveDialect(\n runtime: DetectedDatabaseRuntime<any>,\n override?: AutoDialect,\n): AutoDialect {\n const dialect = override ?? runtime.dialect;\n if (!dialect) {\n throw new Error(\n `Could not determine the database dialect for the detected ${runtime.kind} runtime. Pass a \"dialect\" option explicitly.`,\n );\n }\n return dialect;\n}\n\nexport function inferMongooseModels<TSchema extends SchemaDefinition<any>>(\n schema: TSchema,\n connection: MongooseConnectionLike,\n) {\n const manifest = createManifest(schema);\n const registeredModels = Object.values(connection.models ?? {});\n const models = {} as Record<ModelName<TSchema>, MongooseModelLike>;\n\n for (const modelName of Object.keys(schema.models) as Array<ModelName<TSchema>>) {\n const expectedTable = manifest.models[modelName].table;\n const inferredModel =\n registeredModels.find(\n (candidate) => candidate.collection?.collectionName === expectedTable,\n ) ?? connection.models?.[String(modelName)];\n\n if (!inferredModel) {\n throw new Error(\n `Could not infer a Mongoose model for schema model \"${String(modelName)}\". Register a model for collection \"${expectedTable}\" or pass mongoose.models explicitly.`,\n );\n }\n\n models[modelName] = inferredModel;\n }\n\n return models;\n}\n\nexport function resolveMongoDb(\n runtime: DetectedDatabaseRuntime<any>,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.db) {\n return options.mongo.db;\n }\n\n if (runtime.source === \"db\") {\n return runtime.client as MongoDbLike;\n }\n\n const databaseName = options.databaseName;\n if (!databaseName) {\n throw new Error(\n 'MongoClient auto-creation requires a \"databaseName\" option so the helper can resolve the target database.',\n );\n }\n\n return (runtime.client as MongoClientLike).db(databaseName);\n}\n\nexport function resolveMongoSessionSource(\n runtime: DetectedDatabaseRuntime<any>,\n db: MongoDbLike,\n options: CreateDriverFromRuntimeOptions<any>,\n) {\n if (options.mongo?.startSession) {\n return {\n client: undefined,\n startSession: options.mongo.startSession,\n };\n }\n\n if (runtime.source === \"client\" && hasFunction(runtime.client, \"startSession\")) {\n return {\n client: runtime.client as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n const dbClient = isRecord(db) ? (db as Record<string, unknown>)[\"client\"] : undefined;\n if (hasFunction(dbClient, \"startSession\")) {\n return {\n client: dbClient as MongoSessionSourceLike,\n startSession: undefined,\n };\n }\n\n return {\n client: undefined,\n startSession: undefined,\n };\n}\n"],"mappings":"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","names":[]}