UNPKG

hono

Version:

Web framework built on Web Standards

54 lines (53 loc) 1.37 kB
// 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 };