@servora/proto-utils 0.0.2 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/errors.d.ts +32 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +37 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/request.d.ts +54 -0
- package/dist/client/request.d.ts.map +1 -0
- package/dist/client/request.js +149 -0
- package/dist/client/request.js.map +1 -0
- package/dist/gen/servora/audit/v1/index.d.ts +26 -0
- package/dist/gen/servora/audit/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/audit/v1/index.js +6 -0
- package/dist/gen/servora/audit/v1/index.js.map +1 -0
- package/dist/gen/servora/authn/v1/index.d.ts +6 -0
- package/dist/gen/servora/authn/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/authn/v1/index.js +6 -0
- package/dist/gen/servora/authn/v1/index.js.map +1 -0
- package/dist/gen/servora/authz/v1/index.d.ts +8 -0
- package/dist/gen/servora/authz/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/authz/v1/index.js +6 -0
- package/dist/gen/servora/authz/v1/index.js.map +1 -0
- package/dist/gen/servora/cloudevents/v1/index.d.ts +31 -0
- package/dist/gen/servora/cloudevents/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/cloudevents/v1/index.js +6 -0
- package/dist/gen/servora/cloudevents/v1/index.js.map +1 -0
- package/dist/gen/servora/conf/v1/index.d.ts +9 -0
- package/dist/gen/servora/conf/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/conf/v1/index.js +6 -0
- package/dist/gen/servora/conf/v1/index.js.map +1 -0
- package/dist/gen/servora/core/v1/index.d.ts +157 -0
- package/dist/gen/servora/core/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/core/v1/index.js +6 -0
- package/dist/gen/servora/core/v1/index.js.map +1 -0
- package/dist/gen/servora/infra/db/clickhouse/v1/index.d.ts +22 -0
- package/dist/gen/servora/infra/db/clickhouse/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/infra/db/clickhouse/v1/index.js +6 -0
- package/dist/gen/servora/infra/db/clickhouse/v1/index.js.map +1 -0
- package/dist/gen/servora/infra/kafka/v1/index.d.ts +28 -0
- package/dist/gen/servora/infra/kafka/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/infra/kafka/v1/index.js +6 -0
- package/dist/gen/servora/infra/kafka/v1/index.js.map +1 -0
- package/dist/gen/servora/infra/mail/v1/index.d.ts +20 -0
- package/dist/gen/servora/infra/mail/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/infra/mail/v1/index.js +6 -0
- package/dist/gen/servora/infra/mail/v1/index.js.map +1 -0
- package/dist/gen/servora/infra/redis/v1/index.d.ts +13 -0
- package/dist/gen/servora/infra/redis/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/infra/redis/v1/index.js +6 -0
- package/dist/gen/servora/infra/redis/v1/index.js.map +1 -0
- package/dist/gen/servora/mapper/v1/index.d.ts +7 -0
- package/dist/gen/servora/mapper/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/mapper/v1/index.js +6 -0
- package/dist/gen/servora/mapper/v1/index.js.map +1 -0
- package/dist/gen/servora/obs/audit/v1/index.d.ts +7 -0
- package/dist/gen/servora/obs/audit/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/obs/audit/v1/index.js +6 -0
- package/dist/gen/servora/obs/audit/v1/index.js.map +1 -0
- package/dist/gen/servora/pagination/v1/index.d.ts +26 -0
- package/dist/gen/servora/pagination/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/pagination/v1/index.js +6 -0
- package/dist/gen/servora/pagination/v1/index.js.map +1 -0
- package/dist/gen/servora/security/authn/oidc/v1/index.d.ts +7 -0
- package/dist/gen/servora/security/authn/oidc/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/security/authn/oidc/v1/index.js +6 -0
- package/dist/gen/servora/security/authn/oidc/v1/index.js.map +1 -0
- package/dist/gen/servora/security/authz/openfga/v1/index.d.ts +7 -0
- package/dist/gen/servora/security/authz/openfga/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/security/authz/openfga/v1/index.js +6 -0
- package/dist/gen/servora/security/authz/openfga/v1/index.js.map +1 -0
- package/dist/gen/servora/security/jwt/v1/index.d.ts +9 -0
- package/dist/gen/servora/security/jwt/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/security/jwt/v1/index.js +6 -0
- package/dist/gen/servora/security/jwt/v1/index.js.map +1 -0
- package/dist/gen/servora/security/tls/v1/index.d.ts +7 -0
- package/dist/gen/servora/security/tls/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/security/tls/v1/index.js +6 -0
- package/dist/gen/servora/security/tls/v1/index.js.map +1 -0
- package/dist/gen/servora/transport/http/cors/v1/index.d.ts +12 -0
- package/dist/gen/servora/transport/http/cors/v1/index.d.ts.map +1 -0
- package/dist/gen/servora/transport/http/cors/v1/index.js +6 -0
- package/dist/gen/servora/transport/http/cors/v1/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/query.d.ts +1 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +8 -6
- package/dist/query.js.map +1 -1
- package/package.json +37 -6
- package/src/client/errors.ts +54 -0
- package/src/client/index.ts +2 -0
- package/src/client/request.ts +233 -0
- package/src/gen/servora/audit/v1/index.ts +64 -0
- package/src/gen/servora/authn/v1/index.ts +25 -0
- package/src/gen/servora/authz/v1/index.ts +28 -0
- package/src/gen/servora/cloudevents/v1/index.ts +49 -0
- package/src/gen/servora/conf/v1/index.ts +32 -0
- package/src/gen/servora/core/v1/index.ts +221 -0
- package/src/gen/servora/infra/db/clickhouse/v1/index.ts +33 -0
- package/src/gen/servora/infra/kafka/v1/index.ts +41 -0
- package/src/gen/servora/infra/mail/v1/index.ts +32 -0
- package/src/gen/servora/infra/redis/v1/index.ts +23 -0
- package/src/gen/servora/mapper/v1/index.ts +18 -0
- package/src/gen/servora/obs/audit/v1/index.ts +13 -0
- package/src/gen/servora/pagination/v1/index.ts +37 -0
- package/src/gen/servora/security/authn/oidc/v1/index.ts +13 -0
- package/src/gen/servora/security/authz/openfga/v1/index.ts +13 -0
- package/src/gen/servora/security/jwt/v1/index.ts +17 -0
- package/src/gen/servora/security/tls/v1/index.ts +13 -0
- package/src/gen/servora/transport/http/cors/v1/index.ts +22 -0
- package/src/index.ts +2 -0
- package/src/query.ts +13 -11
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kratos 错误解析工具
|
|
3
|
+
*
|
|
4
|
+
* Kratos 统一错误格式:{ code, reason, message, metadata? }
|
|
5
|
+
* 所有使用 protoc-gen-go-errors 生成的服务均输出此格式。
|
|
6
|
+
*/
|
|
7
|
+
import type { ApiError } from "./request.js";
|
|
8
|
+
export interface KratosErrorBody {
|
|
9
|
+
code: number;
|
|
10
|
+
reason: string;
|
|
11
|
+
message: string;
|
|
12
|
+
metadata?: Record<string, string>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 从 ApiError 中提取 Kratos 结构化错误体。
|
|
16
|
+
* 非 HTTP 错误、或响应体不符合格式时返回 null。
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseKratosError(err: ApiError): KratosErrorBody | null;
|
|
19
|
+
/**
|
|
20
|
+
* 判断 ApiError 是否为指定的 Kratos reason。
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* if (isKratosReason(err, 'EMAIL_NOT_VERIFIED')) { ... }
|
|
24
|
+
*/
|
|
25
|
+
export declare function isKratosReason(err: ApiError, reason: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* 提取用户可读的错误消息,含 network / timeout 降级处理。
|
|
28
|
+
*
|
|
29
|
+
* @param fallback 当无法提取有效消息时的兜底文案,默认 '操作失败'
|
|
30
|
+
*/
|
|
31
|
+
export declare function kratosMessage(err: ApiError, fallback?: string): string;
|
|
32
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI,CAUtE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,SAAS,GAAG,MAAM,CAOtE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从 ApiError 中提取 Kratos 结构化错误体。
|
|
3
|
+
* 非 HTTP 错误、或响应体不符合格式时返回 null。
|
|
4
|
+
*/
|
|
5
|
+
export function parseKratosError(err) {
|
|
6
|
+
if (err.kind !== "http" || !err.responseBody)
|
|
7
|
+
return null;
|
|
8
|
+
const body = err.responseBody;
|
|
9
|
+
if (typeof body.code !== "number" ||
|
|
10
|
+
typeof body.reason !== "string" ||
|
|
11
|
+
typeof body.message !== "string")
|
|
12
|
+
return null;
|
|
13
|
+
return body;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 判断 ApiError 是否为指定的 Kratos reason。
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* if (isKratosReason(err, 'EMAIL_NOT_VERIFIED')) { ... }
|
|
20
|
+
*/
|
|
21
|
+
export function isKratosReason(err, reason) {
|
|
22
|
+
return parseKratosError(err)?.reason === reason;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 提取用户可读的错误消息,含 network / timeout 降级处理。
|
|
26
|
+
*
|
|
27
|
+
* @param fallback 当无法提取有效消息时的兜底文案,默认 '操作失败'
|
|
28
|
+
*/
|
|
29
|
+
export function kratosMessage(err, fallback = "操作失败") {
|
|
30
|
+
if (err.kind === "network")
|
|
31
|
+
return "网络连接失败,请检查网络设置";
|
|
32
|
+
if (err.kind === "timeout")
|
|
33
|
+
return "请求超时,请稍后重试";
|
|
34
|
+
return (parseKratosError(err)?.message ??
|
|
35
|
+
(err.httpStatus ? `请求失败(HTTP ${err.httpStatus})` : fallback));
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAa;IAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,YAAuC,CAAC;IACzD,IACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAEhC,OAAO,IAAI,CAAC;IACd,OAAO,IAAkC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAa,EAAE,MAAc;IAC1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAa,EAAE,QAAQ,GAAG,MAAM;IAC5D,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAC;IACpD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAChD,OAAO,CACL,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO;QAC9B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @servora/proto-utils/client — 通用 HTTP 请求处理器
|
|
3
|
+
*
|
|
4
|
+
* 为 proto 生成的 TypeScript client 提供标准 RequestHandler 实现,包含:
|
|
5
|
+
* - Bearer token 自动注入
|
|
6
|
+
* - Token 自动刷新(单例防重复)
|
|
7
|
+
* - 结构化 ApiError(区分 http / network / timeout)
|
|
8
|
+
* - 全局 onError 回调(延迟到宏任务,避免与 toast.promise 竞态)
|
|
9
|
+
*
|
|
10
|
+
* 消费方通过 @servora/proto-utils 使用本实现,ofetch 由本包依赖提供。
|
|
11
|
+
*/
|
|
12
|
+
export type RequestType = {
|
|
13
|
+
path: string;
|
|
14
|
+
method: string;
|
|
15
|
+
body: string | null;
|
|
16
|
+
};
|
|
17
|
+
export type RequestMeta = {
|
|
18
|
+
service: string;
|
|
19
|
+
method: string;
|
|
20
|
+
};
|
|
21
|
+
export type RequestHandler = (request: RequestType, meta: RequestMeta) => Promise<unknown>;
|
|
22
|
+
export interface TokenStore {
|
|
23
|
+
getAccessToken: () => string | null;
|
|
24
|
+
getRefreshToken: () => string | null;
|
|
25
|
+
setTokens: (accessToken: string, refreshToken: string) => void;
|
|
26
|
+
clear: () => void;
|
|
27
|
+
}
|
|
28
|
+
export interface RequestHandlerOptions {
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
tokenStore?: TokenStore;
|
|
31
|
+
contextHeaders?: (meta: RequestMeta) => Record<string, string>;
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
onError?: (error: ApiError, meta: RequestMeta) => void;
|
|
34
|
+
autoRefreshToken?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export type ApiErrorKind = "http" | "network" | "timeout";
|
|
37
|
+
export declare class ApiError extends Error {
|
|
38
|
+
readonly kind: ApiErrorKind;
|
|
39
|
+
readonly httpStatus?: number;
|
|
40
|
+
readonly responseBody?: unknown;
|
|
41
|
+
readonly service: string;
|
|
42
|
+
readonly method: string;
|
|
43
|
+
constructor(opts: {
|
|
44
|
+
kind: ApiErrorKind;
|
|
45
|
+
message: string;
|
|
46
|
+
httpStatus?: number;
|
|
47
|
+
responseBody?: unknown;
|
|
48
|
+
service: string;
|
|
49
|
+
method: string;
|
|
50
|
+
cause?: unknown;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export declare function createRequestHandler(options?: RequestHandlerOptions): RequestHandler;
|
|
54
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/client/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAC3B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,WAAW,KACd,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACvD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1D,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE;QAChB,IAAI,EAAE,YAAY,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CASF;AASD,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,qBAA0B,GAClC,cAAc,CAoJhB"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @servora/proto-utils/client — 通用 HTTP 请求处理器
|
|
3
|
+
*
|
|
4
|
+
* 为 proto 生成的 TypeScript client 提供标准 RequestHandler 实现,包含:
|
|
5
|
+
* - Bearer token 自动注入
|
|
6
|
+
* - Token 自动刷新(单例防重复)
|
|
7
|
+
* - 结构化 ApiError(区分 http / network / timeout)
|
|
8
|
+
* - 全局 onError 回调(延迟到宏任务,避免与 toast.promise 竞态)
|
|
9
|
+
*
|
|
10
|
+
* 消费方通过 @servora/proto-utils 使用本实现,ofetch 由本包依赖提供。
|
|
11
|
+
*/
|
|
12
|
+
import { ofetch } from "ofetch";
|
|
13
|
+
export class ApiError extends Error {
|
|
14
|
+
kind;
|
|
15
|
+
httpStatus;
|
|
16
|
+
responseBody;
|
|
17
|
+
service;
|
|
18
|
+
method;
|
|
19
|
+
constructor(opts) {
|
|
20
|
+
super(opts.message, { cause: opts.cause });
|
|
21
|
+
this.name = "ApiError";
|
|
22
|
+
this.kind = opts.kind;
|
|
23
|
+
this.httpStatus = opts.httpStatus;
|
|
24
|
+
this.responseBody = opts.responseBody;
|
|
25
|
+
this.service = opts.service;
|
|
26
|
+
this.method = opts.method;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function ensureLeadingSlash(path) {
|
|
30
|
+
return path.startsWith("/") ? path : `/${path}`;
|
|
31
|
+
}
|
|
32
|
+
const REFRESH_PATH = "/v1/auth/refresh-token";
|
|
33
|
+
const AUTH_PATH_PREFIX = "/v1/auth/";
|
|
34
|
+
export function createRequestHandler(options = {}) {
|
|
35
|
+
const { baseUrl = "", tokenStore, contextHeaders, timeoutMs = 30_000, onError, autoRefreshToken = false, } = options;
|
|
36
|
+
let refreshPromise = null;
|
|
37
|
+
async function tryRefreshToken() {
|
|
38
|
+
if (!tokenStore)
|
|
39
|
+
return false;
|
|
40
|
+
const refreshToken = tokenStore.getRefreshToken();
|
|
41
|
+
if (!refreshToken)
|
|
42
|
+
return false;
|
|
43
|
+
if (refreshPromise)
|
|
44
|
+
return refreshPromise;
|
|
45
|
+
refreshPromise = (async () => {
|
|
46
|
+
try {
|
|
47
|
+
const data = await ofetch(REFRESH_PATH, {
|
|
48
|
+
baseURL: baseUrl,
|
|
49
|
+
method: "POST",
|
|
50
|
+
body: { refreshToken },
|
|
51
|
+
timeout: timeoutMs,
|
|
52
|
+
});
|
|
53
|
+
tokenStore.setTokens(data.accessToken, data.refreshToken);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
tokenStore.clear();
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
refreshPromise = null;
|
|
62
|
+
}
|
|
63
|
+
})();
|
|
64
|
+
return refreshPromise;
|
|
65
|
+
}
|
|
66
|
+
async function doRequest(request, meta, isRetry = false) {
|
|
67
|
+
const headers = {
|
|
68
|
+
Accept: "application/json",
|
|
69
|
+
};
|
|
70
|
+
if (request.body) {
|
|
71
|
+
headers["Content-Type"] = "application/json";
|
|
72
|
+
}
|
|
73
|
+
if (tokenStore) {
|
|
74
|
+
const token = tokenStore.getAccessToken();
|
|
75
|
+
if (token) {
|
|
76
|
+
headers.Authorization = `Bearer ${token}`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (contextHeaders) {
|
|
80
|
+
Object.assign(headers, contextHeaders(meta));
|
|
81
|
+
}
|
|
82
|
+
const fetchOptions = {
|
|
83
|
+
baseURL: baseUrl,
|
|
84
|
+
method: request.method,
|
|
85
|
+
headers,
|
|
86
|
+
timeout: timeoutMs,
|
|
87
|
+
};
|
|
88
|
+
if (request.body) {
|
|
89
|
+
fetchOptions.body = request.body;
|
|
90
|
+
}
|
|
91
|
+
const normalizedPath = ensureLeadingSlash(request.path);
|
|
92
|
+
try {
|
|
93
|
+
return await ofetch(normalizedPath, fetchOptions);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
const fetchError = err != null && typeof err === "object"
|
|
97
|
+
? err
|
|
98
|
+
: {};
|
|
99
|
+
const response = fetchError.response;
|
|
100
|
+
if (response) {
|
|
101
|
+
const status = response.status;
|
|
102
|
+
const body = response._data;
|
|
103
|
+
const apiErr = new ApiError({
|
|
104
|
+
kind: "http",
|
|
105
|
+
message: `HTTP ${status} on ${meta.service}.${meta.method}`,
|
|
106
|
+
httpStatus: status,
|
|
107
|
+
responseBody: body,
|
|
108
|
+
service: meta.service,
|
|
109
|
+
method: meta.method,
|
|
110
|
+
cause: err,
|
|
111
|
+
});
|
|
112
|
+
if (autoRefreshToken &&
|
|
113
|
+
status === 401 &&
|
|
114
|
+
!isRetry &&
|
|
115
|
+
!normalizedPath.startsWith(AUTH_PATH_PREFIX)) {
|
|
116
|
+
const refreshed = await tryRefreshToken();
|
|
117
|
+
if (refreshed) {
|
|
118
|
+
return doRequest(request, meta, true);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// 延迟到宏任务再调 onError,让 promise 链先跑完(含 toast.promise 的 _mark),
|
|
122
|
+
// 避免全局 handler 与 sonner.promise error callback 同时弹出双重 toast。
|
|
123
|
+
if (onError) {
|
|
124
|
+
const _err = apiErr;
|
|
125
|
+
setTimeout(() => onError(_err, meta), 0);
|
|
126
|
+
}
|
|
127
|
+
throw apiErr;
|
|
128
|
+
}
|
|
129
|
+
const rawMessage = typeof fetchError.message === "string" ? fetchError.message : "";
|
|
130
|
+
const kind = rawMessage.toLowerCase().includes("timeout")
|
|
131
|
+
? "timeout"
|
|
132
|
+
: "network";
|
|
133
|
+
const apiErr = new ApiError({
|
|
134
|
+
kind,
|
|
135
|
+
message: `${kind} error on ${meta.service}.${meta.method}: ${rawMessage}`,
|
|
136
|
+
service: meta.service,
|
|
137
|
+
method: meta.method,
|
|
138
|
+
cause: err,
|
|
139
|
+
});
|
|
140
|
+
if (onError) {
|
|
141
|
+
const _err = apiErr;
|
|
142
|
+
setTimeout(() => onError(_err, meta), 0);
|
|
143
|
+
}
|
|
144
|
+
throw apiErr;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return doRequest;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/client/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type AuditMode = "AUDIT_MODE_UNSPECIFIED" | "AUDIT_MODE_DISABLED" | "AUDIT_MODE_ENABLED";
|
|
2
|
+
export type ExtensionMapping = {
|
|
3
|
+
name: string | undefined;
|
|
4
|
+
fromField?: string;
|
|
5
|
+
literal?: servoracloudeventsv1_CloudEvent_CloudEventAttributeValue;
|
|
6
|
+
};
|
|
7
|
+
export type servoracloudeventsv1_CloudEvent_CloudEventAttributeValue = {
|
|
8
|
+
ceBoolean?: boolean;
|
|
9
|
+
ceInteger?: number;
|
|
10
|
+
ceString?: string;
|
|
11
|
+
ceBytes?: string;
|
|
12
|
+
ceUri?: string;
|
|
13
|
+
ceUriRef?: string;
|
|
14
|
+
ceTimestamp?: wellKnownTimestamp;
|
|
15
|
+
};
|
|
16
|
+
type wellKnownTimestamp = string;
|
|
17
|
+
export type AuditRule = {
|
|
18
|
+
mode: AuditMode | undefined;
|
|
19
|
+
eventType: string | undefined;
|
|
20
|
+
severity: string | undefined;
|
|
21
|
+
detailMessageField: string | undefined;
|
|
22
|
+
targetIdField: string | undefined;
|
|
23
|
+
extensions: ExtensionMapping[] | undefined;
|
|
24
|
+
};
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/audit/v1/index.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,SAAS,GACjB,wBAAwB,GACxB,qBAAqB,GACrB,oBAAoB,CAAC;AAGzB,MAAM,MAAM,gBAAgB,GAAG;IAE7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,wDAAwD,CAAC;CACpE,CAAC;AAGF,MAAM,MAAM,wDAAwD,GAAG;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAKF,KAAK,kBAAkB,GAAG,MAAM,CAAC;AAKjC,MAAM,MAAM,SAAS,GAAG;IAEtB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAE5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAG9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IAGvC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC,UAAU,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;CAC5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/gen/servora/audit/v1/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8BAA8B;AAC9B,cAAc;;AA6Dd,gDAAgD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/authn/v1/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG;IAEtB,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IAKjC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAC/B,CAAC;AAGF,MAAM,MAAM,cAAc,GAEtB,kBAAkB,GAElB,aAAa,GAEb,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/gen/servora/authn/v1/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8BAA8B;AAC9B,cAAc;;AAsBd,gDAAgD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type AuthzMode = "AUTHZ_MODE_UNSPECIFIED" | "AUTHZ_MODE_NONE" | "AUTHZ_MODE_CHECK";
|
|
2
|
+
export type AuthzRule = {
|
|
3
|
+
mode: AuthzMode | undefined;
|
|
4
|
+
action: string | undefined;
|
|
5
|
+
resourceType: string | undefined;
|
|
6
|
+
resourceIdField: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/authz/v1/index.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAEjB,wBAAwB,GAExB,iBAAiB,GAEjB,kBAAkB,CAAC;AAGvB,MAAM,MAAM,SAAS,GAAG;IAEtB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAE5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAGjC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/gen/servora/authz/v1/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8BAA8B;AAC9B,cAAc;;AAyBd,gDAAgD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type CloudEvent = {
|
|
2
|
+
id: string | undefined;
|
|
3
|
+
source: string | undefined;
|
|
4
|
+
specVersion: string | undefined;
|
|
5
|
+
type: string | undefined;
|
|
6
|
+
attributes: {
|
|
7
|
+
[key: string]: CloudEvent_CloudEventAttributeValue;
|
|
8
|
+
} | undefined;
|
|
9
|
+
binaryData?: string;
|
|
10
|
+
textData?: string;
|
|
11
|
+
protoData?: wellKnownAny;
|
|
12
|
+
};
|
|
13
|
+
export type CloudEvent_CloudEventAttributeValue = {
|
|
14
|
+
ceBoolean?: boolean;
|
|
15
|
+
ceInteger?: number;
|
|
16
|
+
ceString?: string;
|
|
17
|
+
ceBytes?: string;
|
|
18
|
+
ceUri?: string;
|
|
19
|
+
ceUriRef?: string;
|
|
20
|
+
ceTimestamp?: wellKnownTimestamp;
|
|
21
|
+
};
|
|
22
|
+
type wellKnownTimestamp = string;
|
|
23
|
+
interface wellKnownAny {
|
|
24
|
+
"@type": string;
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
export type CloudEventBatch = {
|
|
28
|
+
events: CloudEvent[] | undefined;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/cloudevents/v1/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,UAAU,GAAG;IAEvB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzB,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,mCAAmC,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;AAGF,MAAM,MAAM,mCAAmC,GAAG;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAKF,KAAK,kBAAkB,GAAG,MAAM,CAAC;AAOjC,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/gen/servora/cloudevents/v1/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8BAA8B;AAC9B,cAAc;;AA8Cd,gDAAgD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/conf/v1/index.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,WAAW,GAAG;IAGxB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IAIxB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AAKF,MAAM,MAAM,SAAS,GAAG;IAMtB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/gen/servora/conf/v1/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,8BAA8B;AAC9B,cAAc;;AA6Bd,gDAAgD"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
export type Bootstrap = {
|
|
2
|
+
app: App | undefined;
|
|
3
|
+
server: Server | undefined;
|
|
4
|
+
data: Data | undefined;
|
|
5
|
+
registry: Registry | undefined;
|
|
6
|
+
source: Source | undefined;
|
|
7
|
+
obs: Observability | undefined;
|
|
8
|
+
};
|
|
9
|
+
export type App = {
|
|
10
|
+
env: string | undefined;
|
|
11
|
+
name: string | undefined;
|
|
12
|
+
version: string | undefined;
|
|
13
|
+
metadata: {
|
|
14
|
+
[key: string]: string;
|
|
15
|
+
} | undefined;
|
|
16
|
+
externalUrl: string | undefined;
|
|
17
|
+
};
|
|
18
|
+
export type Server = {
|
|
19
|
+
http: Server_HTTP | undefined;
|
|
20
|
+
grpc: Server_GRPC | undefined;
|
|
21
|
+
};
|
|
22
|
+
export type Server_HTTP = {
|
|
23
|
+
listen: Server_Listen | undefined;
|
|
24
|
+
tls: servorasecuritytlsv1_TLS | undefined;
|
|
25
|
+
advertise: Server_Advertise | undefined;
|
|
26
|
+
};
|
|
27
|
+
export type Server_Listen = {
|
|
28
|
+
network: string | undefined;
|
|
29
|
+
addr: string | undefined;
|
|
30
|
+
timeout: wellKnownDuration | undefined;
|
|
31
|
+
};
|
|
32
|
+
type wellKnownDuration = string;
|
|
33
|
+
export type servorasecuritytlsv1_TLS = {
|
|
34
|
+
enable: boolean | undefined;
|
|
35
|
+
certPath: string | undefined;
|
|
36
|
+
keyPath: string | undefined;
|
|
37
|
+
caPath: string | undefined;
|
|
38
|
+
};
|
|
39
|
+
export type Server_Advertise = {
|
|
40
|
+
endpoint: string | undefined;
|
|
41
|
+
host: string | undefined;
|
|
42
|
+
};
|
|
43
|
+
export type Server_GRPC = {
|
|
44
|
+
listen: Server_Listen | undefined;
|
|
45
|
+
tls: servorasecuritytlsv1_TLS | undefined;
|
|
46
|
+
advertise: Server_Advertise | undefined;
|
|
47
|
+
};
|
|
48
|
+
export type Data = {
|
|
49
|
+
database: Data_Database | undefined;
|
|
50
|
+
client: Data_Client | undefined;
|
|
51
|
+
};
|
|
52
|
+
export type Data_Database = {
|
|
53
|
+
driver: string | undefined;
|
|
54
|
+
source: string | undefined;
|
|
55
|
+
};
|
|
56
|
+
export type Data_Client = {
|
|
57
|
+
services: Data_Client_Service[] | undefined;
|
|
58
|
+
};
|
|
59
|
+
export type Data_Client_Service = {
|
|
60
|
+
name: string | undefined;
|
|
61
|
+
endpoints: Data_Client_Endpoint[] | undefined;
|
|
62
|
+
};
|
|
63
|
+
export type Data_Client_Endpoint = {
|
|
64
|
+
protocol: string | undefined;
|
|
65
|
+
endpoint: string | undefined;
|
|
66
|
+
timeout: wellKnownDuration | undefined;
|
|
67
|
+
tls: servorasecuritytlsv1_TLS | undefined;
|
|
68
|
+
options: wellKnownStruct | undefined;
|
|
69
|
+
};
|
|
70
|
+
type wellKnownStruct = Record<string, unknown>;
|
|
71
|
+
export type Registry = {
|
|
72
|
+
consul?: Consul;
|
|
73
|
+
etcd?: Etcd;
|
|
74
|
+
nacos?: Nacos;
|
|
75
|
+
kubernetes?: Kubernetes;
|
|
76
|
+
};
|
|
77
|
+
export type Consul = {
|
|
78
|
+
addr: string | undefined;
|
|
79
|
+
scheme: string | undefined;
|
|
80
|
+
token: string | undefined;
|
|
81
|
+
datacenter: string | undefined;
|
|
82
|
+
timeout: wellKnownDuration | undefined;
|
|
83
|
+
tags: string[] | undefined;
|
|
84
|
+
key: string | undefined;
|
|
85
|
+
};
|
|
86
|
+
export type Etcd = {
|
|
87
|
+
endpoints: string[] | undefined;
|
|
88
|
+
username: string | undefined;
|
|
89
|
+
password: string | undefined;
|
|
90
|
+
timeout: wellKnownDuration | undefined;
|
|
91
|
+
key: string | undefined;
|
|
92
|
+
namespace: string | undefined;
|
|
93
|
+
};
|
|
94
|
+
export type Nacos = {
|
|
95
|
+
addr: string | undefined;
|
|
96
|
+
port: number | undefined;
|
|
97
|
+
namespace: string | undefined;
|
|
98
|
+
group: string | undefined;
|
|
99
|
+
username: string | undefined;
|
|
100
|
+
password: string | undefined;
|
|
101
|
+
timeout: wellKnownDuration | undefined;
|
|
102
|
+
dataId: string | undefined;
|
|
103
|
+
};
|
|
104
|
+
export type Kubernetes = {
|
|
105
|
+
enable: boolean | undefined;
|
|
106
|
+
};
|
|
107
|
+
export type Source = {
|
|
108
|
+
consul?: Consul;
|
|
109
|
+
etcd?: Etcd;
|
|
110
|
+
nacos?: Nacos;
|
|
111
|
+
};
|
|
112
|
+
export type Observability = {
|
|
113
|
+
log: Log | undefined;
|
|
114
|
+
trace: Trace | undefined;
|
|
115
|
+
metrics: Metrics | undefined;
|
|
116
|
+
};
|
|
117
|
+
export type Log = {
|
|
118
|
+
level: Log_LogLevel | undefined;
|
|
119
|
+
backends: Log_LogBackend[] | undefined;
|
|
120
|
+
};
|
|
121
|
+
export type Log_LogLevel = "LOG_LEVEL_UNSPECIFIED" | "LOG_LEVEL_DEBUG" | "LOG_LEVEL_INFO" | "LOG_LEVEL_WARN" | "LOG_LEVEL_ERROR";
|
|
122
|
+
export type Log_LogBackend = {
|
|
123
|
+
stdout?: Log_StdoutBackend;
|
|
124
|
+
file?: Log_FileBackend;
|
|
125
|
+
otel?: Log_OtelBackend;
|
|
126
|
+
noop?: Log_NoopBackend;
|
|
127
|
+
};
|
|
128
|
+
export type Log_StdoutBackend = {
|
|
129
|
+
format: Log_LogFormat | undefined;
|
|
130
|
+
};
|
|
131
|
+
export type Log_LogFormat = "LOG_FORMAT_UNSPECIFIED" | "LOG_FORMAT_JSON" | "LOG_FORMAT_TEXT";
|
|
132
|
+
export type Log_FileBackend = {
|
|
133
|
+
path: string | undefined;
|
|
134
|
+
maxSize: number | undefined;
|
|
135
|
+
maxBackups: number | undefined;
|
|
136
|
+
maxAge: number | undefined;
|
|
137
|
+
compress: boolean | undefined;
|
|
138
|
+
format: Log_LogFormat | undefined;
|
|
139
|
+
};
|
|
140
|
+
export type Log_OtelBackend = {
|
|
141
|
+
endpoint: string | undefined;
|
|
142
|
+
protocol: Log_OtelProtocol | undefined;
|
|
143
|
+
insecure: boolean | undefined;
|
|
144
|
+
};
|
|
145
|
+
export type Log_OtelProtocol = "OTEL_PROTOCOL_UNSPECIFIED" | "OTEL_PROTOCOL_GRPC" | "OTEL_PROTOCOL_HTTP_PROTOBUF";
|
|
146
|
+
export type Log_NoopBackend = {};
|
|
147
|
+
export type Trace = {
|
|
148
|
+
endpoint: string | undefined;
|
|
149
|
+
insecure: boolean | undefined;
|
|
150
|
+
samplingRatio: number | undefined;
|
|
151
|
+
caPath: string | undefined;
|
|
152
|
+
};
|
|
153
|
+
export type Metrics = {
|
|
154
|
+
enable: boolean | undefined;
|
|
155
|
+
};
|
|
156
|
+
export {};
|
|
157
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/gen/servora/core/v1/index.ts"],"names":[],"mappings":"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"}
|