{
  "version": 3,
  "sources": ["../../src/workers/router.ts", "../../src/controllers/tunnel.ts", "../../src/controllers/constants.ts", "../../src/controllers/path.ts", "../../src/controllers/response.ts", "../../src/controllers/compare.ts"],
  "sourcesContent": ["import { parentPort } from 'worker_threads'\r\nimport { tunnel } from '../controllers/tunnel'\r\n\r\nparentPort!.on(\r\n  'message',\r\n  async ({ config, basePath, data, requestId }: WorkerProps) => {\r\n    await tunnel(\r\n      {\r\n        data,\r\n        config,\r\n        basePath,\r\n      },\r\n      (state, data) => {\r\n        parentPort?.postMessage({\r\n          requestId,\r\n          state,\r\n          data,\r\n        })\r\n      },\r\n    )\r\n  },\r\n)\r\n", "import { createReadStream } from 'fs'\r\nimport { StatusCodes } from 'http-status-codes'\r\nimport _ from 'lodash'\r\nimport { lookup } from 'mime-types'\r\nimport { join } from 'path'\r\nimport { unescape } from 'querystring'\r\nimport { pathToFileURL } from 'url'\r\nimport { defaultPaths, globPatterns } from './constants'\r\nimport {\r\n  encapsulateModule,\r\n  getFolderPath,\r\n  globFind,\r\n  globFindAll,\r\n  normalizePath,\r\n} from './path'\r\nimport { sendResponseParser } from './response'\r\n\r\nexport async function tunnel(\r\n  { data, config, basePath }: Omit<WorkerProps, 'requestId'>,\r\n  endCallback: (state: ResponseState, data: ResponseData) => void,\r\n) {\r\n  const context = {\r\n    ...data,\r\n    params: {},\r\n    query: new URLSearchParams(data.query || ''),\r\n  } as IntREST.IntRequest\r\n\r\n  // Send response if static file found\r\n  const staticFolder = await getFolderPath(basePath, globPatterns.staticFolder)\r\n  if (staticFolder) {\r\n    const staticFile = await globFind(staticFolder, context.path)\r\n    if (staticFile) {\r\n      const mimeType = lookup(staticFile)\r\n      if (mimeType) {\r\n        return await sendResponse(\r\n          {\r\n            status: StatusCodes.OK,\r\n            body: createReadStream(staticFile),\r\n            headers: {\r\n              'Content-Type': mimeType,\r\n            },\r\n          },\r\n          context.headers,\r\n          endCallback,\r\n        )\r\n      }\r\n    }\r\n  }\r\n\r\n  try {\r\n    const identities = await getIdentities(context.path)\r\n\r\n    // Send response not found if no route found\r\n    if (!identities.length) {\r\n      return await sendResponse(\r\n        {\r\n          status: StatusCodes.NOT_FOUND,\r\n          body: {\r\n            message: config.messages?.NOT_FOUND || 'Not found',\r\n          },\r\n          headers: {\r\n            'Content-Type': 'application/json',\r\n          },\r\n        },\r\n        context.headers,\r\n        endCallback,\r\n      )\r\n    }\r\n\r\n    const method = context.method\r\n    const basePathCompiled = normalizePath(\r\n      join(defaultPaths.compiledFolder, defaultPaths.compiledRoutes),\r\n    )\r\n    const routes = await Promise.all(\r\n      identities.map(async (i) => {\r\n        const routeModule = await import(\r\n          encapsulateModule(\r\n            pathToFileURL(\r\n              normalizePath(join(basePathCompiled, i.pathname, 'route.mjs')),\r\n            ).toString(),\r\n          )\r\n        )\r\n        return {\r\n          handler: (routeModule[method] ||\r\n            routeModule['ALL'] ||\r\n            routeModule.default) as IntREST.RequestHandler | undefined,\r\n          identity: i,\r\n        }\r\n      }),\r\n    )\r\n    const route = routes.find((r) => typeof r.handler === 'function')\r\n\r\n    // Send response not allowed if method not found in route\r\n    if (!route?.handler) {\r\n      return await sendResponse(\r\n        {\r\n          status: StatusCodes.METHOD_NOT_ALLOWED,\r\n          body: {\r\n            message:\r\n              config.messages?.METHOD_NOT_ALLOWED || 'Method not allowed',\r\n          },\r\n          headers: {\r\n            'Content-Type': 'application/json',\r\n          },\r\n        },\r\n        context.headers,\r\n        endCallback,\r\n      )\r\n    }\r\n\r\n    const paramExtract = route.identity.paramExtract\r\n    const pathname = route.identity.pathname\r\n    const paramKeys = route.identity.paramKeys\r\n    const paramValues = Array.from(data.path.match(paramExtract) || []).slice(1)\r\n    context.params = _.zipObject(paramKeys, paramValues.map(unescape))\r\n\r\n    const middlewares = await getMiddlewares(pathname)\r\n\r\n    const response = await callRecursiveMiddlewares({\r\n      middlewares,\r\n      context,\r\n      config,\r\n      requestHandler: route.handler,\r\n    })\r\n\r\n    if (!response) throw new Error('Response not found')\r\n\r\n    return await sendResponse(response, context.headers, endCallback)\r\n  } catch (error) {\r\n    console.error(error)\r\n    if (error instanceof Error) {\r\n      return await sendResponse(\r\n        {\r\n          status: StatusCodes.INTERNAL_SERVER_ERROR,\r\n          body: {\r\n            message: error.message,\r\n          },\r\n          headers: {\r\n            'Content-Type': 'application/json',\r\n          },\r\n        },\r\n        context.headers,\r\n        endCallback,\r\n      )\r\n    } else if (typeof error === 'object' && error != null) {\r\n      return await sendResponse(error, context.headers, endCallback)\r\n    }\r\n\r\n    throw error\r\n  }\r\n}\r\n\r\nasync function sendResponse(\r\n  resData: IntREST.IntResponse,\r\n  reqHeaders: IntREST.IntRequest['headers'],\r\n  endCallback: (state: ResponseState, data: ResponseData) => void,\r\n) {\r\n  return await sendResponseParser(resData, reqHeaders, 'void', (ev) => {\r\n    const { state, data } = ev\r\n    endCallback(state, data)\r\n  })\r\n}\r\n\r\nasync function getIdentities(route: string) {\r\n  const basePath = normalizePath(\r\n    join(\r\n      process.cwd(),\r\n      defaultPaths.compiledFolder,\r\n      defaultPaths.compiledRoutes,\r\n    ),\r\n  )\r\n  const identitiesPaths = await globFindAll(\r\n    basePath,\r\n    globPatterns.identityPoints,\r\n  )\r\n  const identitiesModules = await Promise.all(\r\n    identitiesPaths.map((p) =>\r\n      import(encapsulateModule(pathToFileURL(p).toString())).then(\r\n        (m) => m as AutoGeneratedVars,\r\n      ),\r\n    ),\r\n  )\r\n  return identitiesModules\r\n    .filter((m) => m.paramExtract.test(route))\r\n    .sort((a, b) => (a.pathname > b.pathname ? 1 : -1))\r\n    .sort(sortCompiledRoutes)\r\n}\r\n\r\nasync function getMiddlewares(pathname: string) {\r\n  const basePath = normalizePath(\r\n    join(\r\n      process.cwd(),\r\n      defaultPaths.compiledFolder,\r\n      defaultPaths.compiledRoutes,\r\n    ),\r\n  )\r\n  const pathnames = pathname\r\n    .split('/')\r\n    .map((_, i, l) => (i > 0 ? l.slice(0, i + 1).join('/') : '/'))\r\n    .map((p) => normalizePath(join(basePath, p, 'middleware.mjs')))\r\n  const middlewarePaths = await globFindAll(\r\n    basePath,\r\n    globPatterns.middlewarePoints,\r\n  )\r\n  const validMiddlewarePaths = middlewarePaths.filter((p) =>\r\n    pathnames.some((pn) => p === pn),\r\n  )\r\n\r\n  const middlewareModules = await Promise.all(\r\n    validMiddlewarePaths.map(async (p) => ({\r\n      handler: await import(\r\n        encapsulateModule(pathToFileURL(p).toString())\r\n      ).then((m) => (m.middleware || m.default) as IntREST.MiddlewareHandler),\r\n      pathname: p.replace(basePath, ''),\r\n    })),\r\n  )\r\n  return middlewareModules.filter((m) => typeof m.handler === 'function')\r\n}\r\n\r\nfunction sortCompiledRoutes(a: AutoGeneratedVars, b: AutoGeneratedVars) {\r\n  const aSlipt = a.pathname.split('/')\r\n  const bSlipt = b.pathname.split('/')\r\n  for (let i = 0; i < aSlipt.length; i++) {\r\n    if (aSlipt[i][0] === '[' && bSlipt[i]?.[0] === '[') continue\r\n    if (aSlipt[i][0] === '[') return 1\r\n    if (bSlipt[i]?.[0] === '[') return -1\r\n  }\r\n  if (b.route.toLowerCase() > a.route.toLowerCase()) return -1\r\n  if (b.route.toLowerCase() < a.route.toLowerCase()) return 1\r\n  return 0\r\n}\r\n\r\ninterface MiddlewareModule {\r\n  handler: IntREST.MiddlewareHandler\r\n  pathname: string\r\n}\r\n\r\ninterface CallRecursiveMiddlewaresArgs {\r\n  middlewares: MiddlewareModule[]\r\n  context: IntREST.IntRequest\r\n  config: IntREST.Config\r\n  requestHandler: IntREST.RequestHandler\r\n}\r\n\r\nasync function callRecursiveMiddlewares({\r\n  middlewares,\r\n  context,\r\n  config,\r\n  requestHandler,\r\n}: CallRecursiveMiddlewaresArgs): Promise<IntREST.IntResponse> {\r\n  if (!middlewares.length)\r\n    return (\r\n      (await requestHandler(context)) || {\r\n        status: StatusCodes.NOT_FOUND,\r\n      }\r\n    )\r\n\r\n  const middleware = middlewares[0]\r\n\r\n  const timeoutId = setTimeout(() => {\r\n    throw new Error(`Middleware handler timeout: ${middleware.pathname}`)\r\n  }, config.limits?.middleware?.timeout || 5000)\r\n\r\n  const response = await middleware.handler(\r\n    context,\r\n    async (c?: CustomRequestData) => {\r\n      clearTimeout(timeoutId)\r\n      context.custom = _.merge(context.custom, c)\r\n      return callRecursiveMiddlewares({\r\n        middlewares: middlewares.slice(1),\r\n        context,\r\n        config,\r\n        requestHandler,\r\n      })\r\n    },\r\n  )\r\n  clearTimeout(timeoutId)\r\n  return response\r\n}\r\n", "export const isDev = () => process.env.NODE_ENV === 'development'\r\n\r\nexport const globPatterns = {\r\n  env: ['.env', '.env{.local,.development,.production}'],\r\n  entryFolder: ['routes', 'src/routes'],\r\n  assetsFolder: ['assets', 'src/assets'],\r\n  staticFolder: ['static', 'src/static', 'public', 'src/public'],\r\n  configFile: 'intrest.config.{mjs,cjs,js}',\r\n  envFile: '.env{.local,.development,.production}',\r\n  bootstrapEntry: 'bootstrap.ts',\r\n  bootstrapCompiled: 'bootstrap.mjs',\r\n  entryPoints: '**/{route,middleware,validation}.ts',\r\n  identityPoints: '**/__identity.mjs',\r\n  middlewarePoints: '**/middleware.mjs',\r\n  routeFile: 'route.{mjs,cjs,js,ts}',\r\n  middlewareFile: 'middleware.{mjs,cjs,js,ts}',\r\n} as const\r\n\r\nexport const regexpPatterns = {\r\n  env: /^\\.env(?:\\.[a-z-_]*)?$/,\r\n  config: /^intrest\\.config\\.[mc]?js$/,\r\n  bootstrap: /^bootstrap\\.ts$/,\r\n  entry: /(?:^|\\/)(?:route|middleware|validation)\\.ts$/,\r\n  observable: /(?:route)\\.ts$/,\r\n  reservedChars: /(?:[.*+?^=!:${}()|\\[\\]\\/\\\\])/g,\r\n  startSlashesOrNot: /^[\\\\\\/]*/,\r\n  endSlashesOrNot: /[\\\\\\/]*$/,\r\n  multiSlashes: /[\\\\\\/]+/g,\r\n  isBusboyContentType: /^(?:x-www-form-urlencoded|multipart\\/form-data.*)$/i,\r\n  isJSONContentType: /^application\\/json$/i,\r\n  isXMLContentType: /^application\\/xml$/i,\r\n  isAcceptableContentType:\r\n    /^(?:x-www-form-urlencoded|multipart\\/form-data.*|application\\/(?:json|xml))$/i,\r\n} as const\r\n\r\nexport const defaultPaths = {\r\n  compiledFolder: '.intrest',\r\n  compiledRoutes: 'routes',\r\n  workerMultiWorker: 'multi.mjs',\r\n  workerSingleWorker: 'single.mjs',\r\n  workerRouter: 'router.mjs',\r\n  routeIdentity: '__identity.mjs',\r\n} as const\r\n\r\nexport const defaultOutputPaths = {\r\n  vercel: '.vercel/output',\r\n}\r\n", "import { glob } from 'glob'\r\nimport { join, normalize } from 'path'\r\nimport { pathToFileURL } from 'url'\r\nimport { globPatterns, isDev } from './constants'\r\n\r\n/**\r\n * Normalize the path and replace all backslash with slash\r\n *\r\n * @param pathname\r\n * @returns\r\n */\r\nexport function normalizePath(pathname: string) {\r\n  return normalize(pathname).replace(/[\\/\\\\]+/g, '/')\r\n}\r\n\r\n/**\r\n * Get the module from the given path\r\n * If the path is not given or the module is not found, return empty object\r\n */\r\nexport async function getModule(configPath?: string) {\r\n  if (!configPath) return {} as Record<string, any>\r\n  const configURL = pathToFileURL(configPath)\r\n  configURL.searchParams.set('update', Date.now().toString())\r\n  try {\r\n    return (\r\n      (await import(configURL.toString()).then(\r\n        (m) => m as Record<string, any>,\r\n      )) || {}\r\n    )\r\n  } catch (err) {\r\n    return {} as Record<string, any>\r\n  }\r\n}\r\n\r\n/**\r\n * Find the first file that match the glob pattern\r\n */\r\nexport async function globFind(\r\n  ...pattern: string[]\r\n): Promise<string | undefined> {\r\n  const res = await glob(normalizePath(join(...pattern)), {\r\n    ignore: ['**/node_modules/**'],\r\n    windowsPathsNoEscape: true,\r\n  })\r\n  return res[0] && normalizePath(res[0])\r\n}\r\n\r\n/**\r\n * Find the first file that match the glob pattern list\r\n */\r\nexport async function globFindList(\r\n  ...pattern: string[][]\r\n): Promise<string | undefined> {\r\n  const list = pattern.map((p) => normalizePath(join(...p)))\r\n  const res = await glob(list, {\r\n    ignore: ['**/node_modules/**'],\r\n    windowsPathsNoEscape: true,\r\n  })\r\n  return res[0] && normalizePath(res[0])\r\n}\r\n\r\n/**\r\n * Find all files that match the glob pattern\r\n */\r\nexport async function globFindAll(...pattern: string[]): Promise<string[]> {\r\n  const res = await glob(normalizePath(join(...pattern)), {\r\n    ignore: ['**/node_modules/**'],\r\n    windowsPathsNoEscape: true,\r\n  })\r\n  return res.map(normalizePath)\r\n}\r\n\r\n/**\r\n * Find all files that match the glob pattern list\r\n */\r\nexport async function globFindAllList(\r\n  ...pattern: string[][]\r\n): Promise<string[]> {\r\n  const list = pattern.map((p) => normalizePath(join(...p)))\r\n  const res = await glob(list.reverse(), {\r\n    ignore: ['**/node_modules/**'],\r\n    windowsPathsNoEscape: true,\r\n  })\r\n  return res.map(normalizePath)\r\n}\r\n\r\n/**\r\n * Escape the path with the given escape string\r\n */\r\nexport function escapePath(pathname: string, ...escape: string[]) {\r\n  return normalizePath(pathname)\r\n    .replace(normalizePath(join(...escape)), '')\r\n    .replace(/^\\//, '')\r\n}\r\n\r\n/**\r\n * Clear the extension of the path\r\n */\r\nexport function clearExtension(path: string) {\r\n  return normalizePath(path).replace(/\\.[a-z0-9]+$/i, '')\r\n}\r\n\r\n/**\r\n * Find the list of env files that match the glob pattern\r\n * inside the given base path\r\n */\r\nexport async function findEnvPaths(basePath: string) {\r\n  return globFindAllList(...globPatterns.env.map((p) => [basePath, p]))\r\n}\r\n\r\n/**\r\n * Get the first env file that match the glob pattern\r\n * inside the given base path\r\n */\r\nexport async function getEnvPath(basePath: string) {\r\n  return (await findEnvPaths(basePath))[0] as string | undefined\r\n}\r\n\r\n/**\r\n * Find the app folder that match the glob pattern\r\n * inside the given base path\r\n */\r\nexport async function getFolderPath(\r\n  basePath: string,\r\n  possibleFolders: readonly string[],\r\n) {\r\n  return (\r\n    (await globFindAllList(...possibleFolders.map((p) => [basePath, p])))[0] ||\r\n    possibleFolders[1]\r\n  )\r\n}\r\n\r\n/**\r\n * Add the update query to the module path for development\r\n * to prevent the module from being cached\r\n */\r\nexport function encapsulateModule(v: string) {\r\n  if (!isDev()) return v\r\n  return `${v}?update=${Date.now()}`\r\n}\r\n", "import { existsSync } from 'fs'\r\nimport { StatusCodes } from 'http-status-codes'\r\nimport _ from 'lodash'\r\nimport { dirname } from 'path'\r\nimport { join } from 'path'\r\nimport rangeParser from 'range-parser'\r\nimport { Readable } from 'stream'\r\nimport { isBuffer } from './compare'\r\nimport { defaultPaths } from './constants'\r\nimport { escapePath, globFindAll, normalizePath } from './path'\r\n\r\nfunction isRange(\r\n  range?: rangeParser.Result | rangeParser.Ranges,\r\n): range is rangeParser.Ranges {\r\n  return !!(\r\n    range &&\r\n    Array.isArray(range) &&\r\n    range.length &&\r\n    range.type === 'bytes'\r\n  )\r\n}\r\n\r\n/**\r\n * Send the response data to the client through the worker port\r\n * auto detect the type of response and send the data\r\n */\r\nexport async function sendResponseParser(\r\n  res: IntREST.IntResponse,\r\n  reqHeaders: IntREST.IntRequest['headers'],\r\n  requestId: string,\r\n  sendMessage: (msg: TransferResponse) => void,\r\n) {\r\n  // Get content length and type from the response headers\r\n  const lengthHeaderKey = Object.keys(res.headers || {}).find((k) =>\r\n    /^content-length$/i.test(k),\r\n  )\r\n  const typeHeaderKey = Object.keys(res.headers || {}).find((k) =>\r\n    /^content-type$/i.test(k),\r\n  )\r\n  const contentLength = _.get(\r\n    res.headers || {},\r\n    lengthHeaderKey || 'Content-Length',\r\n    Infinity,\r\n  )\r\n  const contentType = _.get(res.headers || {}, typeHeaderKey || 'Content-Type')\r\n\r\n  // Get the range from the request headers\r\n  const range = reqHeaders.range\r\n    ? rangeParser(+contentLength, reqHeaders.range, { combine: true })\r\n    : undefined\r\n\r\n  // If has range in request header, add content range and status code and remove content-length\r\n  if (isRange(range)) {\r\n    res.status =\r\n      !res.status || res.status === StatusCodes.OK\r\n        ? StatusCodes.PARTIAL_CONTENT\r\n        : res.status\r\n    res.headers = {\r\n      ...res.headers,\r\n      'Content-Range':\r\n        `bytes ${range[0].start}-${range[0].end}` +\r\n        (contentLength && isFinite(+contentLength) ? `/${contentLength}` : ''),\r\n    }\r\n    delete res.headers[lengthHeaderKey || 'Content-Length']\r\n  }\r\n\r\n  // Check if the response has headers to send to the client\r\n  for (const entry of Object.entries(res.headers || {})) {\r\n    sendMessage({\r\n      requestId,\r\n      state: 'set',\r\n      data: entry,\r\n    })\r\n  }\r\n  // Check if the response has cookies to send to the client\r\n  for (const [key, cookieData] of Object.entries(res.cookies || {})) {\r\n    if (Array.isArray(cookieData)) {\r\n      for (const cookie of cookieData) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'cookie',\r\n          data: {\r\n            name: key,\r\n            value: cookie.value,\r\n            options: cookie.options,\r\n          },\r\n        })\r\n      }\r\n    } else {\r\n      sendMessage({\r\n        requestId,\r\n        state: 'cookie',\r\n        data: {\r\n          name: key,\r\n          value: cookieData.value,\r\n          options: cookieData.options,\r\n        },\r\n      })\r\n    }\r\n  }\r\n  // Check if the response has cookies to clear in the client\r\n  for (const [key, cookieData] of Object.entries(res.clearCookies || {})) {\r\n    if (Array.isArray(cookieData)) {\r\n      for (const cookie of cookieData) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'clear-cookie',\r\n          data: {\r\n            name: key,\r\n            options: cookie,\r\n          },\r\n        })\r\n      }\r\n    } else {\r\n      sendMessage({\r\n        requestId,\r\n        state: 'clear-cookie',\r\n        data: {\r\n          name: key,\r\n          options: cookieData,\r\n        },\r\n      })\r\n    }\r\n  }\r\n\r\n  // Send the status code to the client\r\n  sendMessage({\r\n    requestId,\r\n    state: 'status',\r\n    data: res.status || StatusCodes.OK,\r\n  })\r\n\r\n  // Check if the response has a body to send to the client\r\n  if (res.body) {\r\n    // If the response body is a buffer or string\r\n    // send the data to the client like a buffer\r\n    if (typeof res.body === 'string' || isBuffer(res.body)) {\r\n      // If the response has no content type\r\n      // set the content type to text/plain\r\n      if (!contentType) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'set',\r\n          data: ['Content-Type', 'text/plain'],\r\n        })\r\n      }\r\n      const data = Buffer.from(res.body)\r\n      // If the response has a range header\r\n      // send only the range of the buffer\r\n      if (isRange(range)) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'write',\r\n          data: data.subarray(range[0].start, range[0].end + 1),\r\n        })\r\n      } else {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'write',\r\n          data,\r\n        })\r\n      }\r\n      // If the response body is a readable stream\r\n    } else if (res.body instanceof Readable) {\r\n      // If the response not has a content type\r\n      // set the content type to application/octet-stream\r\n      if (!contentType) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'set',\r\n          data: ['Content-Type', 'application/octet-stream'],\r\n        })\r\n      }\r\n      const reader = res.body\r\n      if (isRange(range)) {\r\n        const start = range[0].start\r\n        const end = range[0].end\r\n        let readed = 0\r\n\r\n        await new Promise<void>((resolve, reject) => {\r\n          reader.on('data', (c) => {\r\n            const chunk = Buffer.from(c)\r\n            if (chunk.length + readed < start) {\r\n              readed += chunk.length\r\n              return\r\n            }\r\n            if (readed > end) {\r\n              reader.destroy()\r\n              return resolve()\r\n            }\r\n            const offset = Math.max(start - readed, 0)\r\n            const length = Math.min(end + 1 - readed, chunk.length)\r\n            readed += length\r\n            const data = chunk.subarray(offset, offset + length)\r\n            sendMessage({\r\n              requestId,\r\n              state: 'write',\r\n              data,\r\n            })\r\n          })\r\n          reader.on('end', () => {\r\n            resolve()\r\n          })\r\n          reader.on('error', (err) => {\r\n            reject(err)\r\n          })\r\n        })\r\n      } else {\r\n        await new Promise<void>((resolve, reject) => {\r\n          reader.on('data', (chunk) => {\r\n            sendMessage({\r\n              requestId,\r\n              state: 'write',\r\n              data: chunk,\r\n            })\r\n          })\r\n          reader.on('end', () => {\r\n            resolve()\r\n          })\r\n          reader.on('error', (err) => {\r\n            reject(err)\r\n          })\r\n        })\r\n      }\r\n    } else {\r\n      // If the response body is a object\r\n      if (!contentType) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'set',\r\n          data: ['Content-Type', 'application/json'],\r\n        })\r\n      }\r\n      const body = JSON.stringify(res.body)\r\n      const data = Buffer.from(body)\r\n      if (isRange(range)) {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'write',\r\n          data: data.subarray(range[0].start, range[0].end + 1),\r\n        })\r\n      } else {\r\n        sendMessage({\r\n          requestId,\r\n          state: 'write',\r\n          data,\r\n        })\r\n      }\r\n    }\r\n  }\r\n\r\n  // Send the end of the response to the client\r\n  sendMessage({\r\n    requestId,\r\n    state: 'end',\r\n    data: undefined,\r\n  })\r\n}\r\n\r\n/**\r\n * Find the middleware pathnames in the compiled directory\r\n */\r\nexport async function findMiddlewarePathnames(\r\n  basePath: string,\r\n  routeFilePath: string,\r\n) {\r\n  // Get the directory of the route file path\r\n  // and escape it from root project path\r\n  const dir = dirname(\r\n    escapePath(\r\n      routeFilePath,\r\n      normalizePath(\r\n        join(\r\n          basePath,\r\n          defaultPaths.compiledFolder,\r\n          defaultPaths.compiledRoutes,\r\n        ),\r\n      ),\r\n    ),\r\n  )\r\n  // Get all directories from the route file path recursively\r\n  const directories = recursiveDirectoryList(dir)\r\n  // Create a list of possible middleware paths\r\n  const searchList = directories.map((r) =>\r\n    normalizePath(\r\n      join(\r\n        ...[\r\n          basePath,\r\n          defaultPaths.compiledFolder,\r\n          defaultPaths.compiledRoutes,\r\n          r,\r\n          'middleware.mjs',\r\n        ].filter(Boolean),\r\n      ),\r\n    ),\r\n  )\r\n  // Filter the list to get only the existing paths\r\n  return searchList.filter((r) => existsSync(r))\r\n}\r\n\r\n/**\r\n * Find all route pathnames in the compiled directory\r\n */\r\nexport async function getAllRoutePathnames(basePath: string) {\r\n  return await globFindAll(\r\n    basePath,\r\n    defaultPaths.compiledFolder,\r\n    defaultPaths.compiledRoutes,\r\n    '**',\r\n    'route.mjs',\r\n  )\r\n}\r\n\r\n/**\r\n * Parse route pathname to route path\r\n */\r\nexport function parseRoutePathname(pathname: string) {\r\n  return (\r\n    pathname\r\n      // Remove groups\r\n      .replace(/[\\/\\\\]?\\([A-z\u00C0-\u00FA0-9-_$]+\\)/gi, '')\r\n      // Remove filename and extension\r\n      .replace(/route\\.(mj|cj|j|t)s$/, '')\r\n      // Remove the '\\' of end of the path\r\n      .replace(/\\/*$/, '')\r\n      // Ensure that starts with `/`\r\n      .replace(/^\\/*/, '/')\r\n  )\r\n}\r\n\r\nexport function parseRoutePathnameToRegexp(pathname: string, basePath: string) {\r\n  const escapedRoute = escapePath(pathname, basePath)\r\n  const cleanedRoute = parseRoutePathname(escapedRoute)\r\n\r\n  if (/\\[\\.\\.\\.[A-z\u00C0-\u00FA0-9-_$]+\\].+$/.test(cleanedRoute)) {\r\n    throw new Error(`Invalid route path: ${escapedRoute}`)\r\n  }\r\n\r\n  // Compile the route path to a regexp\r\n  return {\r\n    pathname,\r\n    route: cleanedRoute,\r\n    vars: Array.from(\r\n      cleanedRoute.matchAll(/\\[(?:\\.{3,3})?([A-z\u00C0-\u00FA0-9-_$]+)\\]/g),\r\n    ).map((m) => m[1]),\r\n    paramRegexp: new RegExp(\r\n      cleanedRoute\r\n        .replace(/\\[([A-z\u00C0-\u00FA0-9-_$]+)\\]/g, '([A-z\u00C0-\u00FA0-9-_:$.@%]+)')\r\n        .replace(/\\[\\.{3,3}([A-z\u00C0-\u00FA0-9-_$]+)\\]/g, '?([A-z\u00C0-\u00FA0-9-_:$%.@/]*)')\r\n        .replace(/[\\/\\\\]/, '\\\\/')\r\n        .replace(/^\\^*/, '^')\r\n        .replace(/\\$*$/, '\\\\/?$'),\r\n    ),\r\n  }\r\n}\r\n\r\n/**\r\n * Find the route pathnames in the compiled directory\r\n */\r\nexport async function findRoutePathnames(basePath: string, route?: string) {\r\n  const routesPathnames = await getAllRoutePathnames(basePath)\r\n  const maps = routesPathnames.map((r) =>\r\n    parseRoutePathnameToRegexp(\r\n      r,\r\n      normalizePath(\r\n        join(\r\n          basePath,\r\n          defaultPaths.compiledFolder,\r\n          defaultPaths.compiledRoutes,\r\n        ),\r\n      ),\r\n    ),\r\n  )\r\n\r\n  // Filter the list to get only the match routes if route is defined\r\n  if (route) {\r\n    return maps\r\n      .filter((m) => m.paramRegexp.test(route))\r\n      .sort(sortCompiledRoutes)\r\n  }\r\n  return maps.sort(sortCompiledRoutes)\r\n}\r\n\r\ninterface CompiledRoute {\r\n  pathname: string\r\n  route: string\r\n  vars: string[]\r\n  paramRegexp: RegExp\r\n}\r\n\r\n/**\r\n * Sort the compiled routes by priority\r\n */\r\nexport function sortCompiledRoutes(a: CompiledRoute, b: CompiledRoute) {\r\n  const aSlipt = a.pathname.split('/')\r\n  const bSlipt = b.pathname.split('/')\r\n  for (let i = 0; i < aSlipt.length; i++) {\r\n    if (aSlipt[i][0] === '[' && bSlipt[i][0] === '[') continue\r\n    if (aSlipt[i][0] === '[') return 1\r\n    if (bSlipt[i]?.[0] === '[') return -1\r\n  }\r\n  if (b.route.toLowerCase() > a.route.toLowerCase()) return -1\r\n  if (b.route.toLowerCase() < a.route.toLowerCase()) return 1\r\n  return b.pathname.length - a.pathname.length\r\n}\r\n\r\n/**\r\n * Get all directories from a path recursively\r\n */\r\nexport function recursiveDirectoryList(path: string) {\r\n  const dirs = normalizePath(path)\r\n    .split('/')\r\n    .map((_, i, arr) => arr.slice(0, i + 1).join('/'))\r\n  if (!dirs.includes('')) dirs.unshift('')\r\n  return dirs\r\n}\r\n", "import {\n  isAnyArrayBuffer,\n  isUint16Array,\n  isUint32Array,\n  isUint8Array,\n} from 'util/types'\n\nexport function isBuffer(data: any): data is Buffer {\n  if (isAnyArrayBuffer(data)) return true\n  if (isUint8Array(data)) return true\n  if (isUint16Array(data)) return true\n  if (isUint32Array(data)) return true\n\n  return false\n}\n"],
  "mappings": "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",
  "names": ["parentPort", "createReadStream", "StatusCodes", "_", "lookup", "join", "unescape", "pathToFileURL", "isDev", "globPatterns", "defaultPaths", "glob", "join", "normalize", "normalizePath", "pathname", "normalize", "globFind", "pattern", "res", "glob", "normalizePath", "join", "globFindAll", "pattern", "glob", "normalizePath", "join", "globFindAllList", "list", "p", "getFolderPath", "basePath", "possibleFolders", "globFindAllList", "p", "encapsulateModule", "v", "isDev", "StatusCodes", "_", "rangeParser", "Readable", "isAnyArrayBuffer", "isUint16Array", "isUint32Array", "isUint8Array", "isBuffer", "data", "isRange", "range", "sendResponseParser", "res", "reqHeaders", "requestId", "sendMessage", "lengthHeaderKey", "k", "typeHeaderKey", "contentLength", "_", "contentType", "rangeParser", "StatusCodes", "entry", "key", "cookieData", "cookie", "isBuffer", "data", "Readable", "reader", "start", "end", "readed", "resolve", "reject", "c", "chunk", "offset", "length", "err", "body", "tunnel", "data", "config", "basePath", "endCallback", "context", "staticFolder", "getFolderPath", "globPatterns", "staticFile", "globFind", "mimeType", "lookup", "sendResponse", "StatusCodes", "createReadStream", "identities", "getIdentities", "method", "basePathCompiled", "normalizePath", "join", "defaultPaths", "route", "i", "routeModule", "encapsulateModule", "pathToFileURL", "r", "paramExtract", "pathname", "paramKeys", "paramValues", "_", "unescape", "middlewares", "getMiddlewares", "response", "callRecursiveMiddlewares", "error", "resData", "reqHeaders", "sendResponseParser", "ev", "state", "identitiesPaths", "globFindAll", "p", "m", "a", "b", "sortCompiledRoutes", "pathnames", "l", "validMiddlewarePaths", "pn", "aSlipt", "bSlipt", "requestHandler", "middleware", "timeoutId", "parentPort", "config", "basePath", "data", "requestId", "tunnel", "state"]
}
