file-routing-expressjs
Version:
A dependency-free, flexible, system-based file routing for Express.
1 lines • 2.79 kB
Source Map (JSON)
{"version":3,"sources":["../../src/helpers/builders.ts"],"sourcesContent":["import path from \"path\";\nimport { filenameIsJSorTS, pathExistsAndIsFile } from \"./validators\";\nimport { removeLeadingBackSlashesFromName } from \"./cleaners\";\nimport { REGEX_RIGHT_SLASH_AND_FLAGS_REGEX, REGEX_LEFT_SLASH_REGEX } from \"../constants/regex\";\n\nexport function buildRoutePattern(\n route: string,\n name: string,\n isParam: boolean,\n pattern?: string | RegExp,\n isFile: boolean = false\n) {\n const fileIsIndex = isFile && name.trim().toLowerCase() === \"index\";\n\n name = fileIsIndex ? \"\" : buildRouteWithOneLeadingSlash(name.trim());\n route = buildRouteWithOneLeadingSlash(route);\n\n if (pattern) {\n let raw = pattern.toString()\n .replace(REGEX_LEFT_SLASH_REGEX, \"\")\n .replace(REGEX_RIGHT_SLASH_AND_FLAGS_REGEX, \"\");\n\n pattern = `(${raw})`;\n }\n\n let endpoint = `${route}${name}`;\n\n if (pattern) {\n endpoint = isParam\n ? `${endpoint}${pattern}`\n : `${endpoint}/${pattern}`;\n }\n\n return buildRouteWithOneLeadingSlash(endpoint);\n}\n\nexport function buildRouteWithOneLeadingSlash(value: string) {\n return `/${removeLeadingBackSlashesFromName(value)}`;\n}\n\nexport function filenameToJSorTS(dir: string, filename: string) {\n if(filenameIsJSorTS(filename)) {\n const file = path.join(dir, filename);\n if(pathExistsAndIsFile(file)) return file;\n } else {\n const jsFile = path.join(dir, `${filename}.js`);\n const tsFile = path.join(dir, `${filename}.ts`);\n\n if(pathExistsAndIsFile(jsFile)) {\n return jsFile;\n }\n\n if(pathExistsAndIsFile(tsFile)) {\n return tsFile;\n }\n }\n\n return undefined;\n}"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAS,kBAAkB,2BAA2B;AACtD,SAAS,wCAAwC;AACjD,SAAS,mCAAmC,8BAA8B;AAEnE,SAAS,kBACZ,OACA,MACA,SACA,SACA,SAAkB,OACpB;AACE,QAAM,cAAc,UAAU,KAAK,KAAK,EAAE,YAAY,MAAM;AAE5D,SAAO,cAAc,KAAK,8BAA8B,KAAK,KAAK,CAAC;AACnE,UAAQ,8BAA8B,KAAK;AAE3C,MAAI,SAAS;AACT,QAAI,MAAM,QAAQ,SAAS,EACtB,QAAQ,wBAAwB,EAAE,EAClC,QAAQ,mCAAmC,EAAE;AAElD,cAAU,IAAI,GAAG;AAAA,EACrB;AAEA,MAAI,WAAW,GAAG,KAAK,GAAG,IAAI;AAE9B,MAAI,SAAS;AACT,eAAW,UACL,GAAG,QAAQ,GAAG,OAAO,KACrB,GAAG,QAAQ,IAAI,OAAO;AAAA,EAChC;AAEA,SAAO,8BAA8B,QAAQ;AACjD;AAEO,SAAS,8BAA8B,OAAe;AACzD,SAAO,IAAI,iCAAiC,KAAK,CAAC;AACtD;AAEO,SAAS,iBAAiB,KAAa,UAAkB;AAC5D,MAAG,iBAAiB,QAAQ,GAAG;AAC3B,UAAM,OAAO,KAAK,KAAK,KAAK,QAAQ;AACpC,QAAG,oBAAoB,IAAI,EAAG,QAAO;AAAA,EACzC,OAAO;AACH,UAAM,SAAS,KAAK,KAAK,KAAK,GAAG,QAAQ,KAAK;AAC9C,UAAM,SAAS,KAAK,KAAK,KAAK,GAAG,QAAQ,KAAK;AAE9C,QAAG,oBAAoB,MAAM,GAAG;AAC5B,aAAO;AAAA,IACX;AAEA,QAAG,oBAAoB,MAAM,GAAG;AAC5B,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}