{"version":3,"file":"index.cjs","names":["namespace?: string","namespace?: string","client: Kysely<any>","Kysely","options: KyselyConfig | KyselyConfigWithNamespace[]","kyselyService: KyselyService","options: KyselyModuleAsyncOptions","optionsFactory: KyselyModuleOptionsFactory","KyselyCoreModule","config: KyselyConfig | KyselyConfigWithNamespace[]","providers: Provider[]","options: KyselyModuleAsyncOptions","provider: Provider","config: KyselyConfig","service: KyselyService","KyselyModule","config: KyselyConfig | KyselyConfigWithNamespace[]","options: KyselyModuleAsyncOptions"],"sources":["../src/constants/kysely.constants.ts","../src/decorators/kysely.decorator.ts","../src/kysely.service.ts","../src/factories/kysely-client.factory.ts","../src/providers/kysely.provider-factory.ts","../node_modules/@oxc-project/runtime/src/helpers/decorate.js","../src/kysely.core.module.ts","../src/kysely.module.ts"],"sourcesContent":["export const KYSELY_MODULE_CONNECTION_TOKEN = (namespace?: string) =>\n  `KyselyModuleConnectionToken${namespace ? \"_\" + namespace : \"\"}`;\nexport const KYSELY_MODULE_OPTIONS_TOKEN = \"KyselyModuleOptionsToken\";\n","import { Inject } from \"@nestjs/common\";\nimport { KYSELY_MODULE_CONNECTION_TOKEN } from \"../constants\";\n\nexport const InjectKysely = (namespace?: string) =>\n  Inject(KYSELY_MODULE_CONNECTION_TOKEN(namespace));\n","import { OnApplicationShutdown } from \"@nestjs/common\";\nimport { Kysely } from \"kysely\";\n\nexport class KyselyService implements OnApplicationShutdown {\n  private storedActiveClients: Set<Kysely<any>> = new Set();\n\n  get activeClients() {\n    return Array.from(this.storedActiveClients);\n  }\n\n  addClient(client: Kysely<any>) {\n    this.storedActiveClients.add(client);\n  }\n\n  async onApplicationShutdown() {\n    for (const client of this.storedActiveClients.values()) {\n      try {\n        await client.destroy();\n        this.storedActiveClients.delete(client);\n      } catch (e) {\n        console.error(`Failed to destroy Kysely client: ${e}`);\n      }\n    }\n  }\n}\n","import { Provider } from \"@nestjs/common\";\nimport { Kysely, KyselyConfig } from \"kysely\";\nimport { KyselyConfigWithNamespace } from \"kysely.interfaces\";\nimport { KYSELY_MODULE_CONNECTION_TOKEN } from \"../constants\";\nimport { KyselyService } from \"../kysely.service\";\n\nexport const createKyselyClient = <DB>(\n  { config, service }: { config: KyselyConfig; service: KyselyService },\n): Kysely<DB> => {\n  const client = new Kysely<DB>(config);\n  service.addClient(client);\n\n  return client;\n};\n\nexport const createKyselyProvider = (\n  options: KyselyConfig | KyselyConfigWithNamespace[],\n): Provider[] => {\n  if (Array.isArray(options)) {\n    return options.map((opt) => {\n      return {\n        inject: [KyselyService],\n        provide: KYSELY_MODULE_CONNECTION_TOKEN(opt.namespace),\n        useFactory: (kyselyService: KyselyService) =>\n          createKyselyClient({ config: opt, service: kyselyService }),\n      };\n    });\n  } else {\n    return [{\n      inject: [KyselyService],\n      provide: KYSELY_MODULE_CONNECTION_TOKEN(),\n      useFactory: (kyselyService: KyselyService) =>\n        createKyselyClient({ config: options, service: kyselyService }),\n    }];\n  }\n};\n","import { Provider } from \"@nestjs/common\";\nimport { KYSELY_MODULE_OPTIONS_TOKEN } from \"../constants\";\nimport {\n  KyselyModuleAsyncOptions,\n  KyselyModuleOptionsFactory,\n} from \"../kysely.interfaces\";\n\nexport const createAsyncProviders = (\n  options: KyselyModuleAsyncOptions,\n): Provider[] => {\n  const { useExisting, useFactory, useClass } = options;\n  if (useExisting || useFactory) return [createAsyncOptionsProvider(options)];\n  if (!useClass) throw new Error(\"Invalid options\");\n\n  return [createAsyncOptionsProvider(options), { provide: useClass, useClass }];\n};\n\nexport const createAsyncOptionsProvider = (\n  options: KyselyModuleAsyncOptions,\n): Provider => {\n  const { useFactory, inject, useExisting, useClass } = options;\n  if (useFactory) {\n    return {\n      inject,\n      provide: KYSELY_MODULE_OPTIONS_TOKEN,\n      useFactory,\n    };\n  }\n\n  if (useExisting) {\n    return {\n      inject: [useExisting || useClass],\n      provide: KYSELY_MODULE_OPTIONS_TOKEN,\n      useFactory: (optionsFactory: KyselyModuleOptionsFactory) =>\n        optionsFactory.createKyselyModuleOptions(),\n    };\n  }\n\n  throw new Error(\"Invalid options\");\n};\n","// Copy from https://github.com/microsoft/TypeScript/blob/d85767abfd83880cea17cea70f9913e9c4496dcc/src/compiler/factory/emitHelpers.ts#L730-L742\n\nfunction __decorate(decorators, target, key, desc) {\n  var c = arguments.length,\n    r =\n      c < 3\n        ? target\n        : desc === null\n          ? (desc = Object.getOwnPropertyDescriptor(target, key))\n          : desc,\n    d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n    r = Reflect.decorate(decorators, target, key, desc);\n  else\n    for (var i = decorators.length - 1; i >= 0; i--)\n      if ((d = decorators[i]))\n        r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\n(module.exports = __decorate),\n  (module.exports.__esModule = true),\n  (module.exports[\"default\"] = module.exports);\n","import { DynamicModule, Global, Module, Provider } from \"@nestjs/common\";\nimport { KyselyConfig } from \"kysely\";\nimport {\n  KYSELY_MODULE_CONNECTION_TOKEN,\n  KYSELY_MODULE_OPTIONS_TOKEN,\n} from \"./constants\";\nimport { createKyselyClient, createKyselyProvider } from \"./factories\";\nimport {\n  KyselyConfigWithNamespace,\n  KyselyModuleAsyncOptions,\n} from \"./kysely.interfaces\";\nimport { createAsyncProviders } from \"./providers\";\nimport { KyselyService } from \"./kysely.service\";\n\n@Global()\n@Module({})\nexport class KyselyCoreModule {\n  public static forRoot(\n    config: KyselyConfig | KyselyConfigWithNamespace[],\n  ): DynamicModule {\n    const providers: Provider[] = createKyselyProvider(config);\n\n    return {\n      exports: providers,\n      module: KyselyCoreModule,\n      providers: [...providers, KyselyService],\n    };\n  }\n\n  public static forRootAsync(options: KyselyModuleAsyncOptions): DynamicModule {\n    const provider: Provider = {\n      inject: [KYSELY_MODULE_OPTIONS_TOKEN, KyselyService],\n      provide: KYSELY_MODULE_CONNECTION_TOKEN(options?.namespace),\n      useFactory: (config: KyselyConfig, service: KyselyService) =>\n        createKyselyClient({ config, service }),\n    };\n\n    return {\n      exports: [provider],\n      imports: options.imports,\n      module: KyselyCoreModule,\n      providers: [...createAsyncProviders(options), provider, KyselyService],\n    };\n  }\n}\n","import { DynamicModule, Module } from \"@nestjs/common\";\nimport { KyselyConfig } from \"kysely\";\nimport { KyselyCoreModule } from \"./kysely.core.module\";\nimport {\n  KyselyConfigWithNamespace,\n  KyselyModuleAsyncOptions,\n} from \"./kysely.interfaces\";\n\n@Module({})\nexport class KyselyModule {\n  public static forRoot(\n    config: KyselyConfig | KyselyConfigWithNamespace[],\n  ): DynamicModule {\n    return {\n      module: KyselyModule,\n      imports: [KyselyCoreModule.forRoot(config)],\n    };\n  }\n\n  public static forRootAsync(options: KyselyModuleAsyncOptions): DynamicModule {\n    return {\n      module: KyselyModule,\n      imports: [KyselyCoreModule.forRootAsync(options)],\n    };\n  }\n}\n"],"x_google_ignoreList":[5],"mappings":"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"}