{"version":3,"sources":["../src/route-decorator.ts","../src/utils/lambda-is-running.ts"],"sourcesContent":["import path from \"path\";\nimport { HttpRouteConfig } from \"./types/function\";\nimport { lambdaIsRunning } from \"./utils/lambda-is-running\";\n\ntype RouteConfig = HttpRouteConfig;\n\nconst routeConfigs = new Map<string, RouteConfig & { context: string }>();\n\nfunction getContext(match: RegExpMatchArray) {\n\tif (match && match[1]) {\n\t\tconst fullPath = match[1];\n\n\t\tconst directory = path.dirname(fullPath);\n\t\treturn directory;\n\t}\n\n\treturn null;\n}\n\nconst defineConfig = (\n\tconfig: RouteConfig & {\n\t\tcontext: string;\n\t},\n) => {\n\tlet functionName: string | undefined;\n\n\tif (config.name) {\n\t\tfunctionName = config.name;\n\t}\n\n\tif (!functionName && config.events.find((event) => \"http\" in event)) {\n\t\tconst path = (\n\t\t\tconfig.events.find((event) => \"http\" in event) as {\n\t\t\t\thttp: { path: string };\n\t\t\t}\n\t\t).http.path;\n\n\t\t// functionName = path.replace(/\\//g, \"-\");\n\t\tfunctionName = path.split(\"/\")[path.split(\"/\").length - 1];\n\t}\n\n\tif (!functionName) {\n\t\tthrow new Error(\"Could not find function name for route\");\n\t}\n\n\treturn {\n\t\t...config,\n\t\tname: functionName,\n\t};\n};\n\nexport const createHandler = (\n\tconfig: RouteConfig,\n\thandler: (...args: any[]) => any,\n) => {\n\tif (lambdaIsRunning()) {\n\t\treturn handler;\n\t}\n\n\t// Registra a configuração usando o nome do arquivo + nome da função como chave\n\tconst matchPath = new Error()\n\t\t.stack!.split(\"\\n\")[2]\n\t\t.match(/\\(([^:]+):\\d+:\\d+\\)/);\n\n\tif (!matchPath) {\n\t\tthrow new Error(\"Could not find handler path\");\n\t}\n\n\tconst context = getContext(matchPath);\n\n\tif (!context) {\n\t\tthrow new Error(\"Could not find handler context\");\n\t}\n\n\tconst fileName =\n\t\tnew Error().stack!.split(\"\\n\")[2].match(/[/\\\\]([\\w\\-. ]+)\\.[jt]s/)?.[1] ||\n\t\t\"unknown\";\n\n\tconst key = `${fileName}.${defineConfig({ ...config, context }).name}`;\n\n\trouteConfigs.set(key, { ...config, context });\n\n\treturn handler;\n};\n\nexport const getRouteConfigs = () => {\n\treturn Array.from(routeConfigs.entries()).map(\n\t\t([handlerRoutePath, config]) => ({\n\t\t\thandlerRoutePath,\n\t\t\t...defineConfig(config),\n\t\t}),\n\t);\n};\n","export enum LAMBDA_NAMES {\n\tAWS = \"AWS_LAMBDA_FUNCTION_NAME\",\n\tAZURE = \"AZURE_FUNCTIONS_ENVIRONMENT\",\n\tGOOGLE = \"GOOGLE_CLOUD_FUNCTION_NAME\",\n}\n\nexport const lambdaIsRunning = () => {\n\tif (\n\t\tprocess.env[LAMBDA_NAMES.AWS] ||\n\t\tprocess.env[LAMBDA_NAMES.AZURE] ||\n\t\tprocess.env[LAMBDA_NAMES.GOOGLE]\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n"],"mappings":";;;;AAAA,OAAOA,UAAU;;;ACMV,IAAMC,kBAAkB,6BAAA;AAC9B,MACCC,QAAQC,IAAG,0BAAA,KACXD,QAAQC,IAAG,6BAAA,KACXD,QAAQC,IAAG,4BAAA,GACV;AACD,WAAO;EACR;AAEA,SAAO;AACR,GAV+B;;;ADA/B,IAAMC,eAAe,oBAAIC,IAAAA;AAEzB,SAASC,WAAWC,OAAuB;AAC1C,MAAIA,SAASA,MAAM,CAAA,GAAI;AACtB,UAAMC,WAAWD,MAAM,CAAA;AAEvB,UAAME,YAAYC,KAAKC,QAAQH,QAAAA;AAC/B,WAAOC;EACR;AAEA,SAAO;AACR;AATSH;AAWT,IAAMM,eAAe,wBACpBC,WAAAA;AAIA,MAAIC;AAEJ,MAAID,OAAOE,MAAM;AAChBD,mBAAeD,OAAOE;EACvB;AAEA,MAAI,CAACD,gBAAgBD,OAAOG,OAAOC,KAAK,CAACC,UAAU,UAAUA,KAAAA,GAAQ;AACpE,UAAMR,QACLG,OAAOG,OAAOC,KAAK,CAACC,UAAU,UAAUA,KAAAA,EAGvCC,KAAKT;AAGPI,mBAAeJ,MAAKU,MAAM,GAAA,EAAKV,MAAKU,MAAM,GAAA,EAAKC,SAAS,CAAA;EACzD;AAEA,MAAI,CAACP,cAAc;AAClB,UAAM,IAAIQ,MAAM,wCAAA;EACjB;AAEA,SAAO;IACN,GAAGT;IACHE,MAAMD;EACP;AACD,GA9BqB;AAgCd,IAAMS,gBAAgB,wBAC5BV,QACAW,YAAAA;AAEA,MAAIC,gBAAAA,GAAmB;AACtB,WAAOD;EACR;AAGA,QAAME,YAAY,IAAIJ,MAAAA,EACpBK,MAAOP,MAAM,IAAA,EAAM,CAAA,EACnBb,MAAM,qBAAA;AAER,MAAI,CAACmB,WAAW;AACf,UAAM,IAAIJ,MAAM,6BAAA;EACjB;AAEA,QAAMM,UAAUtB,WAAWoB,SAAAA;AAE3B,MAAI,CAACE,SAAS;AACb,UAAM,IAAIN,MAAM,gCAAA;EACjB;AAEA,QAAMO,WACL,IAAIP,MAAAA,EAAQK,MAAOP,MAAM,IAAA,EAAM,CAAA,EAAGb,MAAM,yBAAA,IAA6B,CAAA,KACrE;AAED,QAAMuB,MAAM,GAAGD,QAAAA,IAAYjB,aAAa;IAAE,GAAGC;IAAQe;EAAQ,CAAA,EAAGb,IAAI;AAEpEX,eAAa2B,IAAID,KAAK;IAAE,GAAGjB;IAAQe;EAAQ,CAAA;AAE3C,SAAOJ;AACR,GAhC6B;AAkCtB,IAAMQ,kBAAkB,6BAAA;AAC9B,SAAOC,MAAMC,KAAK9B,aAAa+B,QAAO,CAAA,EAAIC,IACzC,CAAC,CAACC,kBAAkBxB,MAAAA,OAAa;IAChCwB;IACA,GAAGzB,aAAaC,MAAAA;EACjB,EAAA;AAEF,GAP+B;","names":["path","lambdaIsRunning","process","env","routeConfigs","Map","getContext","match","fullPath","directory","path","dirname","defineConfig","config","functionName","name","events","find","event","http","split","length","Error","createHandler","handler","lambdaIsRunning","matchPath","stack","context","fileName","key","set","getRouteConfigs","Array","from","entries","map","handlerRoutePath"]}