"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const minurl_shared = require("./lib-minurl.shared.cjs");
function urlToPath(path) {
  if (typeof path === "string") {
    path = new URL(path);
  } else if (!minurl_shared.isUrl(path)) {
    const error = new TypeError(
      'The "path" argument must be of type string or an instance of URL. Received `' + path + "`"
    );
    error.code = "ERR_INVALID_ARG_TYPE";
    throw error;
  }
  if (path.protocol !== "file:") {
    const error = new TypeError("The URL must be of scheme file");
    error.code = "ERR_INVALID_URL_SCHEME";
    throw error;
  }
  return getPathFromURLPosix(path);
}
function getPathFromURLPosix(url) {
  if (url.hostname !== "") {
    const error = new TypeError(
      'File URL host must be "localhost" or empty on darwin'
    );
    error.code = "ERR_INVALID_FILE_URL_HOST";
    throw error;
  }
  const pathname = url.pathname;
  let index = -1;
  while (++index < pathname.length) {
    if (pathname.codePointAt(index) === 37 && pathname.codePointAt(index + 1) === 50) {
      const third = pathname.codePointAt(index + 2);
      if (third === 70 || third === 102) {
        const error = new TypeError(
          "File URL path must not include encoded / characters"
        );
        error.code = "ERR_INVALID_FILE_URL_PATH";
        throw error;
      }
    }
  }
  return decodeURIComponent(pathname);
}
exports.isUrl = minurl_shared.isUrl;
exports.urlToPath = urlToPath;
//# sourceMappingURL=lib-minurl.browser.cjs.map
