hono
Version:
Web framework built on Web Standards
54 lines (53 loc) • 1.37 kB
JavaScript
// src/client/utils.ts
var mergePath = (base, path) => {
base = base.replace(/\/+$/, "");
base = base + "/";
path = path.replace(/^\/+/, "");
return base + path;
};
var replaceUrlParam = (urlString, params) => {
for (const [k, v] of Object.entries(params)) {
const reg = new RegExp("/:" + k + "(?:{[^/]+})?");
urlString = urlString.replace(reg, `/${v}`);
}
return urlString;
};
var replaceUrlProtocol = (urlString, protocol) => {
switch (protocol) {
case "ws":
return urlString.replace(/^http/, "ws");
case "http":
return urlString.replace(/^ws/, "http");
}
};
var removeIndexString = (urlSting) => {
if (/^https?:\/\/[^\/]+?\/index$/.test(urlSting)) {
return urlSting.replace(/\/index$/, "/");
}
return urlSting.replace(/\/index$/, "");
};
function isObject(item) {
return typeof item === "object" && item !== null && !Array.isArray(item);
}
function deepMerge(target, source) {
if (!isObject(target) && !isObject(source)) {
return source;
}
const merged = { ...target };
for (const key in source) {
const value = source[key];
if (isObject(merged[key]) && isObject(value)) {
merged[key] = deepMerge(merged[key], value);
} else {
merged[key] = value;
}
}
return merged;
}
export {
deepMerge,
mergePath,
removeIndexString,
replaceUrlParam,
replaceUrlProtocol
};