{"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":"AAAA,OAAsE,KAAAA,MAAS,WAE/E,OAAS,iBAAAC,EAAe,cAAAC,EAAY,mBAAAC,MAAuB,WAC3D,OAAS,WAAAC,EAAS,qBAAAC,MAAyB,SAC3C,OAAS,iBAAAC,EAAe,oBAAAC,EAAkB,mBAAAC,EAAiB,sBAAAC,MAA0B,YACrF,OAAS,YAAAC,EAAU,uBAAAC,MAA2B,UAC9C,OAAS,iBAAAC,EAAe,iBAAAC,EAAe,oBAAAC,MAAwB,YAExD,MAAMC,EAAuB,IACnCf,EAAE,OAAO,CACR,IAAKA,EAAE,OAAO,CACb,KAAMA,EAAE,OAAO,CAChB,CAAC,EACD,IAAKA,EAAE,SACNA,EAAE,OAAO,CACR,MAAOA,EAAE,SAASA,EAAE,GAAG,CAAC,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,QAAQ,CAAU,EAAG,MAAM,CACxG,CAAC,EACD,CAAC,CACF,EACA,MAAOA,EAAE,SACRA,EAAE,OAAO,CACR,eAAgBA,EAAE,SAASA,EAAE,OAAO,EAAG,EAAE,EACzC,uBAAwBA,EAAE,SAASA,EAAE,OAAO,EAAG,GAAG,EAClD,sBAAuBA,EAAE,SAASA,EAAE,OAAO,EAAG,GAAG,CAClD,CAAC,EACD,CAAC,CACF,CACD,CAAC,EAUWgB,EAAY,IACxBhB,EAAE,aAAciB,GAAMA,GAAG,KAAM,CAC9B,YAAajB,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,WAAoB,CAAE,CAAC,EAAE,KAAK,IAAM,IAAIC,CAAe,EAC1F,MAAOD,EACL,MAAMG,EAAgB,EAAGH,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,OAAgB,CAAE,CAAC,CAAC,EACnE,KAAK,CAAC,CAAE,KAAMkB,EAAG,GAAGC,CAAO,IAAM,IAAIjB,EAAWiB,CAAM,CAAC,CAC1D,CAAC,EAMWC,EAAW,IACvBpB,EAAE,aAAciB,GAAMA,GAAG,KAAM,CAC9B,MAAOjB,EACL,MAAMW,EAAoB,EAAGX,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,OAAgB,CAAE,CAAC,CAAC,EACvE,KAAK,CAAC,CAAE,KAAMkB,EAAG,GAAGC,CAAO,IAAM,IAAIT,EAASS,CAAM,CAAC,CACxD,CAAC,EAOWE,EAAe,IAC3BrB,EAAE,aAAciB,GAAWA,GAAG,KAAM,CACnC,MAAOjB,EACL,MAAMQ,EAAgB,EAAGR,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,OAAgB,CAAE,CAAC,CAAC,EACnE,KAAK,CAAC,CAAE,KAAMkB,EAAG,GAAGC,CAAO,IAAM,IAAIb,EAAca,CAAM,CAAC,EAC5D,SAAUnB,EACR,MAAMS,EAAmB,EAAGT,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,UAAmB,CAAE,CAAC,CAAC,EACzE,KAAK,CAAC,CAAE,KAAMkB,EAAG,GAAGC,CAAO,IAAM,IAAIZ,EAAiBY,CAAM,CAAC,CAChE,CAAC,EAMWG,EAAS,IACrBtB,EACE,OAAO,CACP,GAAIA,EAAE,aAAciB,GAAMA,GAAG,KAAM,CAClC,MAAOjB,EAAE,MAAMK,EAAkB,EAAGL,EAAE,OAAO,CAAE,KAAMA,EAAE,GAAG,OAAgB,CAAE,CAAC,CAAC,CAC/E,CAAC,EACD,QAASA,EAAE,SACVA,EAAE,OAAO,CACR,YAAaA,EAAE,OAAO,EACtB,SAAUA,EAAE,WAAWM,CAAa,CACrC,CAAC,CACF,CACD,CAAC,EACA,KAAMa,GAAW,IAAIf,EAAQe,EAAO,GAAI,CAAE,QAASA,EAAO,OAAQ,CAAC,CAAC,EAO1DI,EAAiB,IAC7BT,EAAiB,EAAE,KAAMK,GAAYA,EAAO,OAAS,UAAY,IAAIP,EAAcO,CAAM,EAAI,IAAIN,EAAcM,CAAM,CAAE","names":["v","InMemoryCache","RedisCache","redisConfigPipe","MongoDb","mongoDbConfigPipe","KafkaEventBus","RabbitMQEventBus","kafkaConfigPipe","rabbitmqConfigPipe","RedisJob","redisJobsConfigPipe","ExpressServer","FastifyServer","serverConfigPipe","instanceSettingsPipe","cachePipe","e","_","config","jobsPipe","eventBusPipe","dbPipe","serverTypePipe"]}