@visulima/api-platform
Version:
Visulima API platform is a set of tools to build and consume web APIs
1 lines • 62.2 kB
Source Map (JSON)
{"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","../src/framework/cli/command/list/routes/next/collect-api-route-files.ts","../../../node_modules/.pnpm/@visulima+fs@3.1.4_yaml@2.8.0/node_modules/@visulima/fs/dist/packem_shared/assertValidFileOrDirectoryPath-BWWgA1wj.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.4_yaml@2.8.0/node_modules/@visulima/fs/dist/packem_shared/WalkError-DvEBTTaj.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.4_yaml@2.8.0/node_modules/@visulima/fs/dist/packem_shared/walk-include-CMUSRa86.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.4_yaml@2.8.0/node_modules/@visulima/fs/dist/packem_shared/walk-D7YA43g8.mjs","../../../node_modules/.pnpm/@visulima+fs@3.1.4_yaml@2.8.0/node_modules/@visulima/fs/dist/packem_shared/collect-3Paj1Vqw.mjs","../src/framework/cli/command/list/utils.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-4WOECARR.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","import { statSync } from \"node:fs\";\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { collect } from \"@visulima/fs\";\nimport { join } from \"@visulima/path\";\n\nimport { ALLOWED_EXTENSIONS } from \"../../utils\";\n\nconst isDirectory = (path: string): boolean => {\n try {\n return statSync(path).isDirectory();\n } catch {\n return false;\n }\n};\n\nconst collectApiRouteFiles = async (path = \"\"): Promise<string[]> => {\n let apiFolderPath = join(path, \"pages/api\");\n\n // src/pages will be ignored if pages is present in the root directory\n if (!isDirectory(apiFolderPath)) {\n apiFolderPath = join(path, \"src/pages/api\");\n\n if (!isDirectory(apiFolderPath)) {\n return [];\n }\n }\n\n return collect(apiFolderPath, {\n extensions: ALLOWED_EXTENSIONS,\n includeDirs: false,\n });\n};\n\nexport default collectApiRouteFiles;\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\