{"version":3,"sources":["../../../src/instance/settings.ts"],"sourcesContent":["import { type ConditionalObjectKeys, type PipeInput, type PipeOutput, v } from 'valleyed'\n\nimport { InMemoryCache, RedisCache, redisConfigPipe } from '../cache'\nimport { MongoDb, mongoDbConfigPipe } from '../dbs'\nimport { KafkaEventBus, RabbitMQEventBus, kafkaConfigPipe, rabbitmqConfigPipe } from '../events'\nimport { RedisJob, redisJobsConfigPipe } from '../jobs'\nimport { ExpressServer, FastifyServer, serverConfigPipe } from '../server'\n\nexport const instanceSettingsPipe = () =>\n\tv.object({\n\t\tapp: v.object({\n\t\t\tname: v.string(),\n\t\t}),\n\t\tlog: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlevel: v.defaults(v.in(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent'] as const), 'info'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tutils: v.defaults(\n\t\t\tv.object({\n\t\t\t\thashSaltRounds: v.defaults(v.number(), 10),\n\t\t\t\tpaginationDefaultLimit: v.defaults(v.number(), 100),\n\t\t\t\tmaxFileUploadSizeInMb: v.defaults(v.number(), 500),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t})\n\nexport type Settings = PipeOutput<ReturnType<typeof instanceSettingsPipe>>\nexport type SettingsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof instanceSettingsPipe>>>\n\nexport type CacheTypes = {\n\t'in-memory': InMemoryCache\n\tredis: RedisCache\n}\n\nexport const cachePipe = () =>\n\tv.discriminate((e) => e?.type, {\n\t\t'in-memory': v.object({ type: v.is('in-memory' as const) }).pipe(() => new InMemoryCache()),\n\t\tredis: v\n\t\t\t.merge(redisConfigPipe(), v.object({ type: v.is('redis' as const) }))\n\t\t\t.pipe(({ type: _, ...config }) => new RedisCache(config)),\n\t})\n\nexport type JobTypes = {\n\tredis: RedisJob\n}\n\nexport const jobsPipe = () =>\n\tv.discriminate((e) => e?.type, {\n\t\tredis: v\n\t\t\t.merge(redisJobsConfigPipe(), v.object({ type: v.is('redis' as const) }))\n\t\t\t.pipe(({ type: _, ...config }) => new RedisJob(config)),\n\t})\n\nexport type EventBusTypes = {\n\tkafka: KafkaEventBus\n\trabbitmq: RabbitMQEventBus\n}\n\nexport const eventBusPipe = () =>\n\tv.discriminate((e: any) => e?.type, {\n\t\tkafka: v\n\t\t\t.merge(kafkaConfigPipe(), v.object({ type: v.is('kafka' as const) }))\n\t\t\t.pipe(({ type: _, ...config }) => new KafkaEventBus(config)),\n\t\trabbitmq: v\n\t\t\t.merge(rabbitmqConfigPipe(), v.object({ type: v.is('rabbitmq' as const) }))\n\t\t\t.pipe(({ type: _, ...config }) => new RabbitMQEventBus(config)),\n\t})\n\nexport type DbTypes = {\n\tmongo: MongoDb\n}\n\nexport const dbPipe = () =>\n\tv\n\t\t.object({\n\t\t\tdb: v.discriminate((e) => e?.type, {\n\t\t\t\tmongo: v.merge(mongoDbConfigPipe(), v.object({ type: v.is('mongo' as const) })),\n\t\t\t}),\n\t\t\tchanges: v.optional(\n\t\t\t\tv.object({\n\t\t\t\t\tdebeziumUrl: v.string(),\n\t\t\t\t\teventBus: v.instanceOf(KafkaEventBus),\n\t\t\t\t}),\n\t\t\t),\n\t\t})\n\t\t.pipe((config) => new MongoDb(config.db, { changes: config.changes }))\n\nexport type ServerTypes = {\n\texpress: ExpressServer\n\tfastify: FastifyServer\n}\n\nexport const serverTypePipe = () =>\n\tserverConfigPipe().pipe((config) => (config.type === 'express' ? new ExpressServer(config) : new FastifyServer(config)))\n"],"mappings":"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","names":[]}