UNPKG

@visulima/api-platform

Version:

Visulima API platform is a set of tools to build and consume web APIs

1 lines 62.2 kB
{"version":3,"sources":["../src/framework/cli/command/list/routes/express/map-keys-to-path.ts","../src/framework/cli/command/list/routes/express/path-regex-parser.ts","../src/framework/cli/command/list/routes/express/express-path-parser.ts","../src/framework/cli/command/list/routes/express-routes.ts","../src/framework/cli/command/list/routes/fastify-routes.ts","../src/framework/cli/command/list/routes/hapi-routes.ts","../src/framework/cli/command/list/routes/koa-routes.ts","../src/framework/cli/command/list/routes/next/api-route-file-parser.ts","../../../node_modules/.pnpm/@visulima+fs@3.1.7_yaml@2.8.1/node_modules/@visulima/fs/dist/packem_shared/assertValidFileOrDirectoryPath-BWWgA1wj.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.7_yaml@2.8.1/node_modules/@visulima/fs/dist/packem_shared/WalkError-DvEBTTaj.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.7_yaml@2.8.1/node_modules/@visulima/fs/dist/packem_shared/walk-include-CMUSRa86.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.7_yaml@2.8.1/node_modules/@visulima/fs/dist/packem_shared/walk-D7YA43g8.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.7_yaml@2.8.1/node_modules/@visulima/fs/dist/packem_shared/collect-3Paj1Vqw.mjs","../src/framework/cli/command/list/utils.ts","../src/framework/cli/command/list/routes/next/collect-api-route-files.ts","../src/framework/cli/command/list/get-routes.ts","../src/framework/cli/command/list/routes/routes-group-by.ts","../src/framework/cli/command/list/routes/routes-render.ts","../src/framework/cli/command/list/list-command.ts"],"names":["mapKeysToPath","layerRegexPath","keys","convertedSubPath","key","map_keys_to_path_default","pathRegexParser","mappedPath","match","path_regex_parser_default","parseRouteLayer","layer","basePath","lastRequestHandler","pathParameters","filtered","element","path","traverse","routes","l","expressPathParser","app","router","express_path_parser_default","expressRoutes","route","express_routes_default","getSegment","line","getMethod","fastifyRoutes","lines","segments","allSegments","index","segment","entries","item","methods","spaces","depth","isRoute","seg","_index","previousArray","r","method","fastify_routes_default","hapiRoutes","coreRoutes","hapi_routes_default","koaRoutes","middlewareFunction","koa_routes_default","extensionRegex","apiRouteFileParser","apiRouteFile","cwd","verbose","toNamespacedPath","cwdPath","nodeCwd","specs","parsedJsDocumentFile","parseFile","jsDocumentCommentsToOpenApi","parsedSwaggerJsDocumentFile","swaggerJsDocumentCommentsToOpenApi","readFileSync","spec","pathSpec","methodSpec","api_route_file_parser_default","__defProp","__name","target","value","assertValidFileOrDirectoryPath","fileOrDirectoryPath","WalkError","cause","root","_name","__defProp$1","__name$1","globToRegExp","glob","reString","walkInclude","extensions","skip","extension","pattern","_createWalkEntry","normalizePath","normalize","name","basename","info","stat","walk","directory","followSymlinks","includeDirectories","includeFiles","includeSymlinks","maxDepth","mappedMatch","mappedSkip","resolve","toPath","entry","readdir","join","realpath","error","collect","options","ALLOWED_EXTENSIONS","getAppWorkingDirectoryPath","appFilePath","lastParsedPath","parse","readdirSync","getFrameworkName","packageJSONFilePath","dependencies","getApp","appExport","frameworkName","isDirectory","statSync","collectApiRouteFiles","apiFolderPath","collect_api_route_files_default","getRoutes","appOrPath","apiRouteFiles","routesGroupBy","list","keyGetter","map","collection","routes_group_by_default","renderRoute","routePath","colorMap","chalk","methodText","coloredMethod","spacesCount","dotsCount","dots","routeText","routesRender","routesMap","routes_render_default","listCommand","framework","frameworkPath","process","existsSync","appWorkingDirectoryPath","extname","environmentFilePath","isTypeScriptApp","tscPath","execSync","rmSync","appJsFilePath","defaultExport","ipath","epath","groupedMap","counter","groupedRoutes","renderedRoute","list_command_default"],"mappings":"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","file":"chunk-TEWEO624.mjs","sourcesContent":["import type { ExpressRegex, Key } from \"./types\";\n\n/**\n * Map's the keys/path variables to the regex inside a given path\n *\n * @param layerRegexPath The regex for a router with path parameters\n * @param keys The keys that represent the path parameters\n *\n * @returns The regex for a path variable converted to original string on the express route\n */\nconst mapKeysToPath = (layerRegexPath: ExpressRegex, keys: Key[]): string => {\n if (keys.length === 0) {\n throw new Error(\"must include at least one key to map\");\n }\n\n let convertedSubPath = layerRegexPath.toString();\n\n keys.forEach((key) => {\n convertedSubPath = key.optional\n ? convertedSubPath.replace(\"(?:\\\\/([^\\\\/]+?))?\\\\\", `/:${key.name}?`)\n : convertedSubPath.replace(\"(?:([^\\\\/]+?))\", `:${key.name}`);\n });\n\n return convertedSubPath\n .replace(\"/?(?=\\\\/|$)/i\", \"\")\n .replace(\"/^\", \"\")\n .replaceAll(\"\\\\\", \"\")\n .replaceAll(/\\/{2,}/gu, \"/\");\n};\n\nexport default mapKeysToPath;\n","import mapKeysToPath from \"./map-keys-to-path\";\nimport type { ExpressRegex, Key } from \"./types\";\n\n/** Parses an express layer's regex and converts it to the original format seen in code.\n *\n * @param layerRegexPath The layer's regex pattern\n * @param keys The keys that represent the layer's path parameters\n * @returns The path string for that layer\n * Code inspired and modify from:\n * https://github.com/expressjs/express/issues/3308#issuecomment-300957572\n */\nconst pathRegexParser = (layerRegexPath: ExpressRegex | string, keys: Key[]): string => {\n if (typeof layerRegexPath === \"string\") {\n return layerRegexPath;\n }\n\n if (layerRegexPath.fast_slash) {\n return \"\";\n }\n\n if (layerRegexPath.fast_star) {\n return \"*\";\n }\n\n let mappedPath = \"\";\n\n if (keys.length > 0) {\n mappedPath = mapKeysToPath(layerRegexPath, keys);\n }\n\n const match = /^\\/\\^((?:\\\\[$()*+./?[\\\\\\]^{|}]|[^$()*+./?[\\\\\\]^{|}])*)\\$\\//u.exec(\n layerRegexPath.toString().replace(\"\\\\/?\", \"\").replace(\"(?=\\\\/|$)\", \"$\"),\n ) as string[];\n\n if (Array.isArray(match) && match.length > 1) {\n return (match[1] as string).replaceAll(/\\\\(.)/gu, \"$1\").slice(1);\n }\n\n if (mappedPath) {\n return mappedPath.slice(1);\n }\n\n return layerRegexPath.toString();\n};\n\nexport default pathRegexParser;\n","import type { Express, Router } from \"express\";\n\nimport pathRegexParser from \"./path-regex-parser\";\nimport type { Key, Layer, Parameter, Route, RouteMetaData } from \"./types\";\n\n/**\n * Parses a route object. Route objects are the leafs of an express router tree\n *\n * @param layer The layer of this route object - represents the stack of middleware and other metadata\n * @param keys The full set of keys for this particular route\n * @param basePath The base path as it was initial declared for this route\n * @returns A ExpressPath object holding the metadata for a given route\n */\nconst parseRouteLayer = (layer: Required<Layer>, keys: Key[], basePath: string): RouteMetaData => {\n const lastRequestHandler = layer.route.stack.at(-1) as Layer;\n const pathParameters: Parameter[] = keys.map((key) => {\n return { in: \"path\", name: key.name, required: !key.optional };\n });\n\n const filtered = layer.route.stack.filter((element) => (element.handle as Route).metadata);\n\n if (filtered.length > 1) {\n throw new Error(\"Only one metadata middleware is allowed per route\");\n }\n\n const path = (basePath + layer.route.path).replaceAll(/\\/{2,}/gu, \"/\");\n\n if (filtered.length === 0) {\n return { method: lastRequestHandler.method, path, pathParams: pathParameters };\n }\n\n return {\n metadata: ((filtered[0] as Layer).handle as Route).metadata,\n method: lastRequestHandler.method,\n path,\n pathParams: pathParameters,\n };\n};\n\n/**\n * Recursive traversal method for the express router and middleware tree.\n *\n * @param routes The array of routes to add to\n * @param path The current path segment that we have traversed so far\n * @param layer The current 'layer' of the router tree\n * @param keys The keys for the parameter's in the current path branch of the traversal\n * @returns void - base case saves result to internal object\n */\nconst traverse = (routes: RouteMetaData[], path: string, layer: Layer, keys: Key[]): void => {\n // eslint-disable-next-line no-param-reassign\n keys = [...keys, ...layer.keys];\n\n if (layer.name === \"router\" && layer.handle?.stack !== undefined) {\n for (const l of layer.handle.stack) {\n // eslint-disable-next-line no-param-reassign\n path = path || \"\";\n\n traverse(routes, `${path}/${pathRegexParser(layer.regexp, layer.keys)}`, l as Layer, keys);\n }\n }\n\n if (!layer.route || layer.route.stack.length === 0) {\n return;\n }\n\n routes.push(parseRouteLayer(layer as Required<Layer>, keys, path));\n};\n\n// @TODO use this to parse the express swagger\n\n/**\n * Parses an Express app and generates list of routes with metadata.\n *\n * Can Parse:\n * - Nested Routers and Complex Express Projects\n * - Optional parameters e.g. /:name?\n * - Complex Matching routes e.g. /ma*tch, /ex(ab)?mple\n * - Regex routes e.g. /\\/abc|\\/xyz/\n * - Array of paths e.g. app.get(['/abc', '/xyz']) -> /abc,xyz/\n *\n * @param app The Express app reference. Must be used after all routes have been attached\n *\n * @returns List of routes for this express app with meta-data that has been picked up\n */\nconst expressPathParser = (app: Express): RouteMetaData[] => {\n // eslint-disable-next-line no-underscore-dangle\n const router: Router = app._router || app.router;\n const routes: RouteMetaData[] = [];\n\n for (const layer of router.stack) {\n // @TODO: revisit this type assertion\n traverse(routes, \"\", layer as unknown as Layer, []);\n }\n\n return routes;\n};\n\nexport default expressPathParser;\n","import type { Express } from \"express\";\n\nimport expressPathParser from \"./express/express-path-parser\";\nimport type { RouteMetaData } from \"./express/types\";\nimport type { Route } from \"./types\";\n\nconst expressRoutes = (app: Express): Route[] => {\n const routes: Route[] = [];\n\n expressPathParser(app).forEach((route: RouteMetaData) => {\n routes.push({\n file: \"unknown\",\n method: route.method.toUpperCase(),\n path: route.path,\n tags: [],\n });\n });\n\n return routes;\n};\n\nexport default expressRoutes;\n","import type { FastifyInstance } from \"fastify\";\n\nimport type { Route } from \"./types\";\n\n// \"<spaces> activity (GET)\" -> \"activity\"\nconst getSegment = (line: string) => line.replaceAll(/ \\(.*\\)/gu, \"\").trim();\n\n// \"<spaces> activity (GET)\" -> \"GET\"\nconst getMethod = (line: string) => (line.trim().split(\" \")[1] as string).slice(1, -1);\n\ninterface Segment {\n depth: number;\n index: number;\n isRoute: boolean;\n methods: string[] | null;\n segment: string;\n}\n\nconst fastifyRoutes = (app: FastifyInstance): Route[] => {\n const printedRoutes = app\n .printRoutes()\n .replaceAll(/[─│└├]/gu, \" \")\n .trimEnd();\n\n const lines = printedRoutes.split(\"\\n\");\n\n // eslint-disable-next-line unicorn/no-array-reduce\n const segments = lines.reduce((allSegments: Segment[], line, index) => {\n const segment = getSegment(line);\n const previousSegment = getSegment(lines[index - 1] ?? \"\");\n\n if (previousSegment === segment) {\n const entries: Segment[] = allSegments.filter((item) => item.index < index && item.segment === segment);\n\n const { methods } = entries.at(-1) as Segment;\n\n if (methods !== null) {\n methods.push(getMethod(line));\n }\n\n return allSegments;\n }\n\n // spaces preceding segment / not counting single space between segment and (METHOD)\n const spaces = line.replaceAll(/ \\(.*\\)/gu, \"\").match(/ /gu);\n\n if (spaces === null) {\n throw new Error(\"Invalid spaces\");\n }\n\n const depth = spaces.length / 4;\n const isRoute = line.includes(\"(\");\n const methods = isRoute ? [getMethod(line)] : null;\n\n allSegments.push({\n depth,\n index,\n isRoute,\n methods,\n segment,\n });\n\n return allSegments;\n }, []);\n\n const routes: Route[] = [];\n\n segments\n .filter((item) => item.isRoute)\n .forEach((item) => {\n const ancestorSegments = segments\n .filter((seg) => seg.index < item.index && seg.depth < item.depth)\n // eslint-disable-next-line unicorn/prefer-array-some\n .filter((seg, _index, previousArray) => !previousArray.find((segment) => segment.depth === seg.depth && segment.index > seg.index));\n\n const route = [...ancestorSegments.map((r) => r.segment), item.segment].join(\"\");\n\n if (item.methods === null) {\n throw new Error(\"Invalid methods\");\n }\n\n item.methods.forEach((method: string) => {\n routes.push({\n file: \"unknown\",\n method: method.toUpperCase(),\n path: route,\n tags: [],\n });\n });\n });\n\n return routes;\n};\n\nexport default fastifyRoutes;\n","import type { Server } from \"@hapi/hapi\";\n\nimport type { Route } from \"./types\";\n\nconst hapiRoutes = (app: Server): Route[] => {\n // @ts-expect-error TS2339: Property '_core' does not exist on type 'Server'. Internal API.\n // eslint-disable-next-line no-underscore-dangle\n const core = app._core as any;\n const coreRoutes = core.router.routes;\n const routes: Route[] = [];\n\n [...coreRoutes.keys()].forEach((method: string) => {\n coreRoutes.get(method).routes.forEach((route: any) => {\n routes.push({\n file: \"unknown\",\n method: route.route.method.toUpperCase(),\n path: route.path,\n tags: [],\n });\n });\n });\n\n return routes;\n};\n\nexport default hapiRoutes;\n","import type Koa from \"koa\";\n\nimport type { Route } from \"./types\";\n\nconst koaRoutes = (app: Koa): Route[] => {\n const routes: Route[] = [];\n\n app.middleware\n .filter((middlewareFunction) => (middlewareFunction as any).router)\n\n .flatMap((middlewareFunction) => (middlewareFunction as any).router.stack)\n .forEach((route) => {\n routes.push({\n file: \"unknown\",\n method: route.methods.join(\"|\").toUpperCase(),\n path: route.path,\n tags: [],\n });\n });\n\n return routes;\n};\n\nexport default koaRoutes;\n","import { readFileSync } from \"node:fs\";\nimport { cwd as nodeCwd } from \"node:process\";\n\nimport type { OpenApiObject } from \"@visulima/jsdoc-open-api\";\nimport { jsDocumentCommentsToOpenApi, parseFile, swaggerJsDocumentCommentsToOpenApi } from \"@visulima/jsdoc-open-api\";\nimport { toNamespacedPath } from \"@visulima/path\";\n\nimport type { Route } from \"../types\";\n\n// eslint-disable-next-line regexp/no-unused-capturing-group\nconst extensionRegex = /\\.(js|ts|mjs|cjs)$/u;\n\nconst apiRouteFileParser = (apiRouteFile: string, cwd: string, verbose = false): Route[] => {\n // eslint-disable-next-line no-param-reassign\n apiRouteFile = toNamespacedPath(apiRouteFile);\n\n const cwdPath = toNamespacedPath(nodeCwd());\n\n let specs: OpenApiObject[] = [];\n\n const parsedJsDocumentFile = parseFile(apiRouteFile, jsDocumentCommentsToOpenApi, verbose);\n\n specs = [...specs, ...parsedJsDocumentFile.map((item) => item.spec)];\n\n const parsedSwaggerJsDocumentFile = parseFile(apiRouteFile, swaggerJsDocumentCommentsToOpenApi, verbose);\n\n specs = [...specs, ...parsedSwaggerJsDocumentFile.map((item) => item.spec)];\n\n const routes: Route[] = [];\n\n if (specs.length === 0) {\n const apiRouteFileContent = readFileSync(apiRouteFile, \"utf8\");\n\n apiRouteFileContent.split(/\\r?\\n/u).forEach((line) => {\n const match = /[=aces|]+\\s[\"'|](GET|POST|PUT|PATCH|HEAD|DELETE|OPTIONS)[\"'|]/u.exec(line);\n\n if (match) {\n let [, method] = match;\n\n if (method === \"GET\") {\n method = \"GET|HEAD\";\n }\n\n routes.push({\n file: apiRouteFile.replace(`${cwdPath}/`, \"\"),\n method: method as string,\n path: toNamespacedPath(apiRouteFile.replace(cwd, \"\").replace(extensionRegex, \"\")),\n tags: [],\n });\n }\n });\n\n if (routes.length === 0) {\n routes.push({\n file: apiRouteFile.replace(`${cwdPath}/`, \"\"),\n method: \"GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS\",\n path: toNamespacedPath(apiRouteFile.replace(cwd, \"\").replace(extensionRegex, \"\")),\n tags: [],\n });\n }\n\n return routes;\n }\n\n specs.forEach((spec) => {\n const paths = Object.entries(spec?.paths ?? {});\n\n paths.forEach(([path, pathSpec]) => {\n const methods = Object.entries(pathSpec);\n\n methods.forEach(([method, methodSpec]) => {\n routes.push({\n file: apiRouteFile.replace(`${cwdPath}/`, \"\"),\n method: method.toUpperCase(),\n path: toNamespacedPath(path),\n tags: methodSpec.tags,\n });\n });\n });\n });\n\n return routes;\n};\n\nexport default apiRouteFileParser;\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nconst assertValidFileOrDirectoryPath = /* @__PURE__ */ __name((fileOrDirectoryPath) => {\n if (!fileOrDirectoryPath || !(fileOrDirectoryPath instanceof URL) && typeof fileOrDirectoryPath !== \"string\") {\n throw new TypeError(\"Path must be a non-empty string or URL.\");\n }\n}, \"assertValidFileOrDirectoryPath\");\n\nexport { assertValidFileOrDirectoryPath as default };\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nclass WalkError extends Error {\n static {\n __name(this, \"WalkError\");\n }\n /** File path of the root that's being walked. */\n root;\n /**\n * Constructs a new instance.\n * @param cause The underlying error or reason for the walk failure.\n * @param root The root directory path where the walk operation started or encountered the error.\n */\n constructor(cause, root) {\n super(`${cause instanceof Error ? cause.message : cause} for path \"${root}\"`);\n this.cause = cause;\n this.root = root;\n }\n // eslint-disable-next-line class-methods-use-this\n get name() {\n return \"WalkError\";\n }\n // eslint-disable-next-line class-methods-use-this,@typescript-eslint/explicit-module-boundary-types\n set name(_name) {\n throw new Error(\"Cannot overwrite name of WalkError\");\n }\n}\n\nexport { WalkError as default };\n","var __defProp$1 = Object.defineProperty;\nvar __name$1 = (target, value) => __defProp$1(target, \"name\", { value, configurable: true });\nconst globToRegExp = /* @__PURE__ */ __name$1((glob) => {\n const reString = glob.replace(/\\.\\*/g, \".([^/]*)\").replace(/\\*\\*/g, \"(.*)\").replace(/(?<!\\.)\\*(?!\\*)/g, \"([^/]*)\").replace(/\\?/g, \"[^/]\").replace(/\\.(?!\\*)/g, \"\\\\.\").replace(/\\{/g, \"(\").replace(/\\}/g, \")\").replace(/,/g, \"|\").replace(/\\[!(.*?)\\]/g, \"[^$1]\");\n return new RegExp(`^${reString}$`);\n}, \"globToRegExp\");\n\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nconst walkInclude = /* @__PURE__ */ __name((path, extensions, match, skip) => {\n if (Array.isArray(extensions) && extensions.length > 0 && !extensions.some((extension) => path.endsWith(extension))) {\n return false;\n }\n if (match && !match.some((pattern) => pattern.test(path))) {\n return false;\n }\n return !skip?.some((pattern) => pattern.test(path));\n}, \"walkInclude\");\n\nexport { globToRegExp as g, walkInclude as w };\n","import { readdir, realpath, stat } from 'node:fs/promises';\nimport { resolve, join, normalize, basename } from '@visulima/path';\nimport { toPath } from '@visulima/path/utils';\nimport WalkError from './WalkError-DvEBTTaj.mjs';\nimport assertValidFileOrDirectoryPath from './assertValidFileOrDirectoryPath-BWWgA1wj.mjs';\nimport { g as globToRegExp, w as walkInclude } from './walk-include-CMUSRa86.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nconst _createWalkEntry = /* @__PURE__ */ __name(async (path) => {\n const normalizePath = normalize(path);\n const name = basename(normalizePath);\n const info = await stat(normalizePath);\n return {\n isDirectory: /* @__PURE__ */ __name(() => info.isDirectory(), \"isDirectory\"),\n isFile: /* @__PURE__ */ __name(() => info.isFile(), \"isFile\"),\n isSymbolicLink: /* @__PURE__ */ __name(() => info.isSymbolicLink(), \"isSymbolicLink\"),\n name,\n path: normalizePath\n };\n}, \"_createWalkEntry\");\nasync function* walk(directory, {\n extensions,\n followSymlinks = false,\n includeDirs: includeDirectories = true,\n includeFiles = true,\n includeSymlinks = true,\n match,\n maxDepth = Number.POSITIVE_INFINITY,\n skip\n} = {}) {\n assertValidFileOrDirectoryPath(directory);\n if (maxDepth < 0) {\n return;\n }\n const mappedMatch = match ? match.map((pattern) => typeof pattern === \"string\" ? globToRegExp(pattern) : pattern) : void 0;\n const mappedSkip = skip ? skip.map((pattern) => typeof pattern === \"string\" ? globToRegExp(pattern) : pattern) : void 0;\n directory = resolve(toPath(directory));\n if (includeDirectories && walkInclude(directory, extensions, mappedMatch, mappedSkip)) {\n yield await _createWalkEntry(directory);\n }\n if (maxDepth < 1 || !walkInclude(directory, void 0, void 0, mappedSkip)) {\n return;\n }\n try {\n for await (const entry of await readdir(directory, {\n withFileTypes: true\n })) {\n let path = join(directory, entry.name);\n if (entry.isSymbolicLink()) {\n if (followSymlinks) {\n path = await realpath(path);\n } else if (includeSymlinks && walkInclude(path, extensions, mappedMatch, mappedSkip)) {\n yield {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n isDirectory: entry.isDirectory,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n isFile: entry.isFile,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n isSymbolicLink: entry.isSymbolicLink,\n name: entry.name,\n path\n };\n } else {\n continue;\n }\n }\n if (entry.isSymbolicLink() || entry.isDirectory()) {\n yield* walk(path, {\n extensions,\n followSymlinks,\n includeDirs: includeDirectories,\n includeFiles,\n includeSymlinks,\n match: mappedMatch,\n maxDepth: maxDepth - 1,\n skip: mappedSkip\n });\n } else if (entry.isFile() && includeFiles && walkInclude(path, extensions, mappedMatch, mappedSkip)) {\n yield {\n isDirectory: /* @__PURE__ */ __name(() => entry.isDirectory(), \"isDirectory\"),\n isFile: /* @__PURE__ */ __name(() => entry.isFile(), \"isFile\"),\n isSymbolicLink: /* @__PURE__ */ __name(() => entry.isSymbolicLink(), \"isSymbolicLink\"),\n name: entry.name,\n path\n };\n }\n }\n } catch (error) {\n if (error instanceof WalkError) {\n throw error;\n }\n throw new WalkError(error, directory);\n }\n}\n__name(walk, \"walk\");\n\nexport { walk as default };\n","import walk from './walk-D7YA43g8.mjs';\n\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nconst collect = /* @__PURE__ */ __name(async (directory, options = {}) => {\n if (!Array.isArray(options.extensions)) {\n options.extensions = [\"js\", \"mjs\", \"cjs\", \"ts\"];\n }\n const entries = [];\n for await (const entry of walk(directory, options)) {\n entries.push(entry.path);\n }\n return entries;\n}, \"collect\");\n\nexport { collect as default };\n","import { readdirSync, readFileSync } from \"node:fs\";\n\nimport { parse } from \"@visulima/path\";\nimport type { PackageJson } from \"type-fest\";\n\ninterface AppExport {\n [key: string]: any;\n app?: string | { app?: string };\n}\n\nexport const ALLOWED_EXTENSIONS = [\".js\", \".ts\", \".mjs\", \".cjs\"];\n\nexport const getAppWorkingDirectoryPath = (appFilePath: string): string | null => {\n let lastParsedPath = parse(appFilePath);\n\n // Once the following condition returns false it means we traversed the whole file system\n // eslint-disable-next-line no-loops/no-loops\n while (lastParsedPath.base && lastParsedPath.root !== lastParsedPath.dir) {\n const parentDirectionItems = readdirSync(lastParsedPath.dir);\n\n const packageJSON = parentDirectionItems.find((item) => item === \"package.json\");\n\n if (packageJSON) {\n return lastParsedPath.dir;\n }\n\n lastParsedPath = parse(lastParsedPath.dir);\n }\n\n return null;\n};\n\nexport const getFrameworkName = (directory: string): \"express\" | \"fastify\" | \"hapi\" | \"koa\" | \"next\" | null => {\n const packageJSONFilePath = `${directory}/package.json`;\n\n const { dependencies } = JSON.parse(readFileSync(packageJSONFilePath).toString()) as PackageJson;\n\n if (dependencies?.express) {\n return \"express\";\n }\n\n if (dependencies?.koa && (dependencies[\"@koa/router\"] || dependencies[\"koa-router\"])) {\n return \"koa\";\n }\n\n if (dependencies?.next) {\n return \"next\";\n }\n\n if (dependencies?.[\"@hapi/hapi\"]) {\n return \"hapi\";\n }\n\n if (dependencies?.fastify) {\n return \"fastify\";\n }\n\n return null;\n};\n\nexport const getApp = (appExport: AppExport, frameworkName: \"express\" | \"fastify\" | \"hapi\" | \"koa\" | \"next\" | null): AppExport | string | null => {\n const isExportEmpty = Object.keys(appExport).length === 0;\n\n if (isExportEmpty) {\n return null;\n }\n\n if (frameworkName === \"hapi\") {\n if (typeof (appExport.app as { app?: string }).app === \