{"version":3,"sources":["../../../src/server/pipes.ts"],"sourcesContent":["import { type PipeOutput, v } from 'valleyed'\n\nimport { EventBus } from '../events'\nimport type { AuthUser } from '../types'\nimport { BaseRequestAuthMethod } from './requests-auth-methods'\nimport { Methods } from './types'\n\nconst serverBasePipe = () =>\n\tv.object({\n\t\tport: v.number(),\n\t\tcors: v.optional(\n\t\t\tv.object({\n\t\t\t\torigin: v.optional(v.or([v.array(v.string()), v.is(true as const)])),\n\t\t\t\tmethods: v.optional(v.array(v.in(Object.values(Methods)))),\n\t\t\t\tcredentials: v.optional(v.boolean()),\n\t\t\t}),\n\t\t),\n\t\teventBus: v.optional(v.instanceOf(EventBus)),\n\t\tpublicPath: v.optional(v.string()),\n\t\thealthPath: v.optional(v.string()),\n\t\topenapi: v.defaults(\n\t\t\tv.object({\n\t\t\t\tdocsVersion: v.defaults(v.string(), '1.0.0'),\n\t\t\t\tdocsBaseUrl: v.defaults(v.array(v.string()), ['/']),\n\t\t\t\tdocsPath: v.defaults(v.string(), '/__docs'),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\trequests: v.defaults(\n\t\t\tv.object({\n\t\t\t\tlog: v.defaults(v.boolean(), true),\n\t\t\t\trateLimit: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 60 * 60 * 1000),\n\t\t\t\t\t\tlimit: v.defaults(v.number(), 5000),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t\tslowdown: v.defaults(\n\t\t\t\t\tv.object({\n\t\t\t\t\t\tenabled: v.defaults(v.boolean(), false),\n\t\t\t\t\t\tperiodInMs: v.defaults(v.number(), 10 * 60 * 1000),\n\t\t\t\t\t\tdelayAfter: v.defaults(v.number(), 2000),\n\t\t\t\t\t\tdelayInMs: v.defaults(v.number(), 500),\n\t\t\t\t\t}),\n\t\t\t\t\t{},\n\t\t\t\t),\n\t\t\t}),\n\t\t\t{},\n\t\t),\n\t\tsocketsAuthMethods: v.defaults(v.array(v.instanceOf(BaseRequestAuthMethod<AuthUser>)), []),\n\t})\n\nexport const serverConfigPipe = () =>\n\tv.discriminate((d: any) => d.type, {\n\t\tfastify: v.merge(\n\t\t\tserverBasePipe(),\n\t\t\tv.object({\n\t\t\t\ttype: v.is('fastify' as const),\n\t\t\t}),\n\t\t),\n\t\texpress: v.merge(\n\t\t\tserverBasePipe(),\n\t\t\tv.object({\n\t\t\t\ttype: v.is('express' as const),\n\t\t\t}),\n\t\t),\n\t})\n\nexport type ServerConfig = PipeOutput<ReturnType<typeof serverConfigPipe>>\n"],"mappings":"AAAA,SAA0B,SAAS;AAEnC,SAAS,gBAAgB;AAEzB,SAAS,6BAA6B;AACtC,SAAS,eAAe;AAExB,MAAM,iBAAiB,MACtB,EAAE,OAAO;AAAA,EACR,MAAM,EAAE,OAAO;AAAA,EACf,MAAM,EAAE;AAAA,IACP,EAAE,OAAO;AAAA,MACR,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAa,CAAC,CAAC,CAAC;AAAA,MACnE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,MACzD,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpC,CAAC;AAAA,EACF;AAAA,EACA,UAAU,EAAE,SAAS,EAAE,WAAW,QAAQ,CAAC;AAAA,EAC3C,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,EACjC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;AAAA,EACjC,SAAS,EAAE;AAAA,IACV,EAAE,OAAO;AAAA,MACR,aAAa,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO;AAAA,MAC3C,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAAA,MAClD,UAAU,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS;AAAA,IAC3C,CAAC;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,UAAU,EAAE;AAAA,IACX,EAAE,OAAO;AAAA,MACR,KAAK,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI;AAAA,MACjC,WAAW,EAAE;AAAA,QACZ,EAAE,OAAO;AAAA,UACR,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAAA,UACtC,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,KAAK,GAAI;AAAA,UACjD,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,GAAI;AAAA,QACnC,CAAC;AAAA,QACD,CAAC;AAAA,MACF;AAAA,MACA,UAAU,EAAE;AAAA,QACX,EAAE,OAAO;AAAA,UACR,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAAA,UACtC,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,KAAK,KAAK,GAAI;AAAA,UACjD,YAAY,EAAE,SAAS,EAAE,OAAO,GAAG,GAAI;AAAA,UACvC,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG;AAAA,QACtC,CAAC;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,qBAA+B,CAAC,GAAG,CAAC,CAAC;AAC1F,CAAC;AAEK,MAAM,mBAAmB,MAC/B,EAAE,aAAa,CAAC,MAAW,EAAE,MAAM;AAAA,EAClC,SAAS,EAAE;AAAA,IACV,eAAe;AAAA,IACf,EAAE,OAAO;AAAA,MACR,MAAM,EAAE,GAAG,SAAkB;AAAA,IAC9B,CAAC;AAAA,EACF;AAAA,EACA,SAAS,EAAE;AAAA,IACV,eAAe;AAAA,IACf,EAAE,OAAO;AAAA,MACR,MAAM,EAAE,GAAG,SAAkB;AAAA,IAC9B,CAAC;AAAA,EACF;AACD,CAAC;","names":[]}