mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-15 19:24:23 +08:00
- 在连接表单中独立维护 Namespace ID 与 contextPath - 为无命名空间列表权限的账号回退到已配置作用域 - 细分数据编辑、结构管理与导入保护并阻止陈旧操作 - 补齐侧边栏请求代际和连接 URI 回归测试
74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
export const NACOS_NAMESPACE_ID_PARAM = "namespaceId";
|
|
|
|
export type NacosConnectionScope = {
|
|
configured: boolean;
|
|
namespaceId: string;
|
|
requestNamespaceId: string;
|
|
};
|
|
|
|
const normalizeNacosConnectionParamsText = (raw: unknown): string => {
|
|
let text = String(raw ?? "").trim();
|
|
const queryIndex = text.indexOf("?");
|
|
if (queryIndex >= 0) {
|
|
text = text.slice(queryIndex + 1);
|
|
}
|
|
const hashIndex = text.indexOf("#");
|
|
if (hashIndex >= 0) {
|
|
text = text.slice(0, hashIndex);
|
|
}
|
|
return text
|
|
.replace(/^[?&]+/, "")
|
|
.replace(/[;\r\n]+/g, "&")
|
|
.trim();
|
|
};
|
|
|
|
const parseNacosConnectionParams = (raw: unknown): URLSearchParams =>
|
|
new URLSearchParams(normalizeNacosConnectionParamsText(raw));
|
|
|
|
export const resolveNacosConnectionScope = (
|
|
connectionParams: unknown,
|
|
): NacosConnectionScope => {
|
|
const params = parseNacosConnectionParams(connectionParams);
|
|
const namespaceId = String(
|
|
params.get(NACOS_NAMESPACE_ID_PARAM) ?? "",
|
|
).trim();
|
|
const configured = namespaceId !== "";
|
|
return {
|
|
configured,
|
|
namespaceId,
|
|
requestNamespaceId:
|
|
configured && namespaceId.toLowerCase() !== "public"
|
|
? namespaceId
|
|
: "",
|
|
};
|
|
};
|
|
|
|
export const setNacosConnectionScope = (
|
|
connectionParams: unknown,
|
|
namespaceId: unknown,
|
|
): string => {
|
|
const params = parseNacosConnectionParams(connectionParams);
|
|
const normalizedNamespaceId = String(namespaceId ?? "").trim();
|
|
if (normalizedNamespaceId) {
|
|
params.set(NACOS_NAMESPACE_ID_PARAM, normalizedNamespaceId);
|
|
} else {
|
|
params.delete(NACOS_NAMESPACE_ID_PARAM);
|
|
}
|
|
return params.toString();
|
|
};
|
|
|
|
export const extractNacosConnectionScope = (
|
|
connectionParams: unknown,
|
|
): {
|
|
connectionParams: string;
|
|
scope: NacosConnectionScope;
|
|
} => {
|
|
const params = parseNacosConnectionParams(connectionParams);
|
|
const scope = resolveNacosConnectionScope(params.toString());
|
|
params.delete(NACOS_NAMESPACE_ID_PARAM);
|
|
return {
|
|
connectionParams: params.toString(),
|
|
scope,
|
|
};
|
|
};
|