{"version":3,"sources":["/Users/erunion/code/readme/oas/packages/parser/dist/chunk-CBEZANPG.cjs","../src/lib/urls.ts"],"names":[],"mappings":"AAAA;ACAA,IAAM,eAAA,EAAiB,yBAAA;AAGhB,IAAM,sBAAA,EAAgC,0BAAA;AAUtC,SAAS,yBAAA,CACd,GAAA,EACA,UAAA,EAAqC,CAAC,CAAA,EACtC,cAAA,EACQ;AACR,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,qBAAA,EAAuB,CAAC,QAAA,EAAkB,IAAA,EAAA,GAAiB;AAC5E,IAAA,GAAA,CAAI,KAAA,GAAQ,SAAA,EAAW;AACrB,MAAA,MAAM,MAAA,EAAQ,SAAA,CAAU,IAAI,CAAA;AAE5B,MAAA,GAAA,CAAI,OAAO,MAAA,IAAU,QAAA,EAAU;AAC7B,QAAA,GAAA,CAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,EAAA,GAAK,MAAA,IAAU,KAAA,GAAQ,UAAA,GAAa,KAAA,EAAO;AACjE,UAAA,OAAO,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA;AAAA,QAC7B;AAAA,MACF,EAAA,KAAO;AACL,QAAA,OAAO,MAAA,CAAO,KAAK,CAAA;AAAA,MACrB;AAAA,IACF;AAEA,IAAA,MAAM,SAAA,kBAAW,cAAA,wBAAA,CAAiB,IAAI,GAAA;AACtC,IAAA,OAAO,SAAA,IAAa,KAAA,EAAA,EAAY,SAAA,EAAW,MAAA,CAAO,QAAQ,CAAA;AAAA,EAC5D,CAAC,CAAA;AACH;AAEO,SAAS,kBAAA,CAAmB,GAAA,EAAqB;AACtD,EAAA,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,OAAA,EAAS,CAAC,EAAA,IAAM,GAAA,EAAK;AAC/B,IAAA,OAAO,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,CAAE,CAAA;AAAA,EACxB;AAEA,EAAA,OAAO,GAAA;AACT;AAYO,SAAS,YAAA,CAAa,GAAA,EAAyB,oBAAA,EAA0C,GAAA,EAAa;AAC3G,EAAA,MAAM,cAAA,EAAgB,qBAAA;AACtB,EAAA,GAAA,CAAI,CAAC,GAAA,EAAK,OAAO,aAAA;AAEjB,EAAA,IAAA,EAAM,kBAAA,CAAmB,GAAG,CAAA;AAC5B,EAAA,GAAA,CAAI,CAAC,GAAA,EAAK,OAAO,aAAA;AAGjB,EAAA,GAAA,CAAI,GAAA,CAAI,UAAA,CAAW,GAAG,EAAA,GAAK,CAAC,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA,EAAG;AAChD,IAAA,MAAM,cAAA,EAAgB,IAAI,GAAA,CAAI,aAAa,CAAA;AAC3C,IAAA,aAAA,CAAc,SAAA,EAAW,GAAA;AACzB,IAAA,OAAO,aAAA,CAAc,IAAA;AAAA,EACvB;AAGA,EAAA,GAAA,iBAAI,mBAAA,6BAAqB,UAAA,mBAAW,IAAI,GAAA,EAAG;AACzC,IAAA,OAAO,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA;AACrB,EAAA;AAEoB,EAAA;AACA,IAAA;AACpB,EAAA;AAEO,EAAA;AACT;ADnCwB;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/erunion/code/readme/oas/packages/parser/dist/chunk-CBEZANPG.cjs","sourcesContent":[null,"const PROTOCOL_REGEX = /^[a-z][a-z\\d+.-]*:\\/\\//i;\n\n/** Matches `{name}` globally; capture group `1` contains the name. */\nexport const SERVER_VARIABLE_REGEX: RegExp = /{([-_a-zA-Z0-9:.[\\]]+)}/g;\n\n/**\n * Substitute `{name}` server variables, converting resolved values to strings.\n *\n * @param url Server URL template.\n * @param variables Values by name: primitives or `{ default: value }` objects. Defaults to `{}`.\n * @param resolveMissing Optional fallback for unresolved names; returning `undefined` preserves the template.\n * @returns Substituted URL, with unresolved templates unchanged.\n */\nexport function substituteServerVariables(\n  url: string,\n  variables: Record<string, unknown> = {},\n  resolveMissing?: (name: string) => unknown,\n): string {\n  return url.replace(SERVER_VARIABLE_REGEX, (original: string, name: string) => {\n    if (name in variables) {\n      const value = variables[name];\n\n      if (typeof value === 'object') {\n        if (!Array.isArray(value) && value !== null && 'default' in value) {\n          return String(value.default);\n        }\n      } else {\n        return String(value);\n      }\n    }\n\n    const fallback = resolveMissing?.(name);\n    return fallback === undefined ? original : String(fallback);\n  });\n}\n\nexport function stripTrailingSlash(url: string): string {\n  if (url[url.length - 1] === '/') {\n    return url.slice(0, -1);\n  }\n\n  return url;\n}\n\n/**\n * Normalize a server URL **without validation**:\n * - Default missing schemes to HTTPS.\n * - Use `https://example.com` for empty URLs and root-relative paths.\n * - Remove one trailing `/`, preserving variable templates.\n *\n * @param url Server URL or template.\n * @param urlForProtocolCheck Resolved URL for scheme detection; defaults to `url`.\n * @returns Normalized URL.\n */\nexport function normalizeURL(url: string | undefined, urlForProtocolCheck: string | undefined = url): string {\n  const exampleDotCom = 'https://example.com';\n  if (!url) return exampleDotCom;\n\n  url = stripTrailingSlash(url);\n  if (!url) return exampleDotCom;\n\n  // A root-relative path needs an origin; prefixing HTTPS would turn `/api` into `https:///api`.\n  if (url.startsWith('/') && !url.startsWith('//')) {\n    const urlWithOrigin = new URL(exampleDotCom);\n    urlWithOrigin.pathname = url;\n    return urlWithOrigin.href;\n  }\n\n  // Detect the scheme from resolved values while applying any prefix to the original template.\n  if (urlForProtocolCheck?.startsWith('//')) {\n    return `https:${url}`;\n  }\n\n  if (!PROTOCOL_REGEX.test(urlForProtocolCheck?.trim() ?? '')) {\n    return `https://${url}`;\n  }\n\n  return url;\n}\n"]}