import { removeLastSlash, removeFirstSlash } from '../slash/slash.mjs';

function queryString(options) {
  var needEncode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  var query = Object.keys(options).map(function (key) {
    var _a;
    return "".concat(key, "=").concat(needEncode ? encodeURIComponent((_a = options[key]) !== null && _a !== void 0 ? _a : '') : options[key]);
  });
  return query.join('&');
}
function routeChangePath(url, options) {
  if (options) {
    var query = queryString(options, true);
    if (query) {
      return "".concat(url, "?").concat(query);
    }
  }
  return url;
}
/**
 * 获取当前路由部分的 url
 * @return {string}
 * @example
 * ```ts
 * // 在当前页面中调用
 * getRoutePartUrl();
 * // 'pages/home/home?from=index'
 * ```
 */
function getRoutePartUrl() {
  var pages = getCurrentPages();
  var page = pages[pages.length - 1];
  if (!page) return '';
  var fullPath = page.$page.fullPath;
  if (fullPath) {
    return fullPath;
  }
  return "".concat(routeChangePath(page.route, page.options));
}
/**
 * 小程序中，获取页面对应的 url 链接
 * @param {string} baseLink 基础 URL
 * @return {string}
 * @example
 * ```ts
 * // 在当前页面中调用
 * getUrlInMP('https://example.com');
 * // 'https://example.com/pages/home/home?from=index'
 * ```
 */
function getUrlInMP(baseLink) {
  var detail = getRoutePartUrl();
  return "".concat(removeLastSlash(baseLink), "/").concat(removeFirstSlash(detail));
}

export { getRoutePartUrl, getUrlInMP, queryString, routeChangePath };
