@be-link/shield-for-tcb-node-sdk 1.0.7 → 1.0.9
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/index.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ export { backendConfigService } from './modules/config/service';
|
|
|
2
2
|
export type { Service as ConfigControllerTypes } from './modules/config/types';
|
|
3
3
|
export { backendConfigServiceV2, ConfigServiceV2 } from './modules/config/serviceV2';
|
|
4
4
|
export type { ServiceV2 as ConfigControllerTypesV2 } from './modules/config/typesV2';
|
|
5
|
+
export { ShieldConfigManager, backendShieldConfigManager, } from './modules/config/ShieldConfigManager';
|
|
6
|
+
export type { ShieldConfigManagerOptions, Logger } from './modules/config/ShieldConfigManager';
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConfigServiceV2 = exports.backendConfigServiceV2 = exports.backendConfigService = void 0;
|
|
3
|
+
exports.backendShieldConfigManager = exports.ShieldConfigManager = exports.ConfigServiceV2 = exports.backendConfigServiceV2 = exports.backendConfigService = void 0;
|
|
4
4
|
// V1 SDK (YAML 数据源)
|
|
5
5
|
var service_1 = require("./modules/config/service");
|
|
6
6
|
Object.defineProperty(exports, "backendConfigService", { enumerable: true, get: function () { return service_1.backendConfigService; } });
|
|
@@ -8,3 +8,7 @@ Object.defineProperty(exports, "backendConfigService", { enumerable: true, get:
|
|
|
8
8
|
var serviceV2_1 = require("./modules/config/serviceV2");
|
|
9
9
|
Object.defineProperty(exports, "backendConfigServiceV2", { enumerable: true, get: function () { return serviceV2_1.backendConfigServiceV2; } });
|
|
10
10
|
Object.defineProperty(exports, "ConfigServiceV2", { enumerable: true, get: function () { return serviceV2_1.ConfigServiceV2; } });
|
|
11
|
+
// ShieldConfigManager
|
|
12
|
+
var ShieldConfigManager_1 = require("./modules/config/ShieldConfigManager");
|
|
13
|
+
Object.defineProperty(exports, "ShieldConfigManager", { enumerable: true, get: function () { return ShieldConfigManager_1.ShieldConfigManager; } });
|
|
14
|
+
Object.defineProperty(exports, "backendShieldConfigManager", { enumerable: true, get: function () { return ShieldConfigManager_1.backendShieldConfigManager; } });
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShieldConfigManager - SDK 级别的配置管理器
|
|
3
|
+
*
|
|
4
|
+
* 提供配置自动拉取、缓存、定时刷新功能
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* // 方式一:使用单例(推荐)
|
|
9
|
+
* import { backendShieldConfigManager } from '@be-link/shield-for-tcb-node-sdk'
|
|
10
|
+
*
|
|
11
|
+
* await backendShieldConfigManager.setup('BackendBff', 'local')
|
|
12
|
+
* const config = backendShieldConfigManager.getConfig<MyConfig>()
|
|
13
|
+
* backendShieldConfigManager.stop()
|
|
14
|
+
*
|
|
15
|
+
* // 方式二:创建独立实例
|
|
16
|
+
* import { ShieldConfigManager } from '@be-link/shield-for-tcb-node-sdk'
|
|
17
|
+
*
|
|
18
|
+
* const manager = new ShieldConfigManager({
|
|
19
|
+
* serviceName: 'BackendBff',
|
|
20
|
+
* env: 'local',
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* await manager.setup()
|
|
24
|
+
* const config = manager.getConfig<MyConfig>()
|
|
25
|
+
* manager.stop()
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface ShieldConfigManagerOptions {
|
|
29
|
+
/** 服务名称 */
|
|
30
|
+
serviceName: string;
|
|
31
|
+
/** 环境,默认取 NODE_ENV */
|
|
32
|
+
env?: string;
|
|
33
|
+
/** 刷新间隔(ms),默认 5000 */
|
|
34
|
+
refreshIntervalMs?: number;
|
|
35
|
+
/** 请求超时(ms),默认 10000 */
|
|
36
|
+
fetchTimeoutMs?: number;
|
|
37
|
+
/** 自定义日志函数,默认 console */
|
|
38
|
+
logger?: Logger;
|
|
39
|
+
}
|
|
40
|
+
export interface Logger {
|
|
41
|
+
info: (message: string, ...args: any[]) => void;
|
|
42
|
+
warn: (message: string, ...args: any[]) => void;
|
|
43
|
+
error: (message: string, ...args: any[]) => void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 配置管理器
|
|
47
|
+
*
|
|
48
|
+
* 自动从 Shield 配置中心拉取服务配置,支持定时刷新和泛型类型推导
|
|
49
|
+
*/
|
|
50
|
+
export declare class ShieldConfigManager<T = Record<string, any>> {
|
|
51
|
+
#private;
|
|
52
|
+
constructor(options: ShieldConfigManagerOptions);
|
|
53
|
+
/** 当前缓存的配置副本(原始 Record) */
|
|
54
|
+
get config(): Record<string, any> | null;
|
|
55
|
+
/** 是否已完成初始化 */
|
|
56
|
+
get isSetup(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* 等待初始化完成
|
|
59
|
+
* @returns Promise,初始化完成后 resolve
|
|
60
|
+
*/
|
|
61
|
+
waitForSetup(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* 初始化配置管理器,启动定时刷新
|
|
64
|
+
* 幂等:重复调用无效
|
|
65
|
+
*/
|
|
66
|
+
setup(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* 手动刷新配置(立即触发一次拉取)
|
|
69
|
+
*/
|
|
70
|
+
refresh(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* 获取类型化的配置
|
|
73
|
+
* @returns 泛型 T 类型的配置对象
|
|
74
|
+
*/
|
|
75
|
+
getConfig(): T | null;
|
|
76
|
+
/**
|
|
77
|
+
* 停止定时刷新,清理资源
|
|
78
|
+
*/
|
|
79
|
+
stop(): void;
|
|
80
|
+
}
|
|
81
|
+
export declare const backendShieldConfigManager: ShieldConfigManager<Record<string, any>>;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ShieldConfigManager - SDK 级别的配置管理器
|
|
4
|
+
*
|
|
5
|
+
* 提供配置自动拉取、缓存、定时刷新功能
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // 方式一:使用单例(推荐)
|
|
10
|
+
* import { backendShieldConfigManager } from '@be-link/shield-for-tcb-node-sdk'
|
|
11
|
+
*
|
|
12
|
+
* await backendShieldConfigManager.setup('BackendBff', 'local')
|
|
13
|
+
* const config = backendShieldConfigManager.getConfig<MyConfig>()
|
|
14
|
+
* backendShieldConfigManager.stop()
|
|
15
|
+
*
|
|
16
|
+
* // 方式二:创建独立实例
|
|
17
|
+
* import { ShieldConfigManager } from '@be-link/shield-for-tcb-node-sdk'
|
|
18
|
+
*
|
|
19
|
+
* const manager = new ShieldConfigManager({
|
|
20
|
+
* serviceName: 'BackendBff',
|
|
21
|
+
* env: 'local',
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* await manager.setup()
|
|
25
|
+
* const config = manager.getConfig<MyConfig>()
|
|
26
|
+
* manager.stop()
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
32
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
33
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
34
|
+
}
|
|
35
|
+
Object.defineProperty(o, k2, desc);
|
|
36
|
+
}) : (function(o, m, k, k2) {
|
|
37
|
+
if (k2 === undefined) k2 = k;
|
|
38
|
+
o[k2] = m[k];
|
|
39
|
+
}));
|
|
40
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
41
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
42
|
+
}) : function(o, v) {
|
|
43
|
+
o["default"] = v;
|
|
44
|
+
});
|
|
45
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
46
|
+
var ownKeys = function(o) {
|
|
47
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
48
|
+
var ar = [];
|
|
49
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
return ownKeys(o);
|
|
53
|
+
};
|
|
54
|
+
return function (mod) {
|
|
55
|
+
if (mod && mod.__esModule) return mod;
|
|
56
|
+
var result = {};
|
|
57
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
58
|
+
__setModuleDefault(result, mod);
|
|
59
|
+
return result;
|
|
60
|
+
};
|
|
61
|
+
})();
|
|
62
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
63
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
64
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
65
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
66
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
67
|
+
};
|
|
68
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
69
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
70
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
71
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
72
|
+
};
|
|
73
|
+
var _ShieldConfigManager_instances, _ShieldConfigManager_serviceName, _ShieldConfigManager_env, _ShieldConfigManager_refreshIntervalMs, _ShieldConfigManager_fetchTimeoutMs, _ShieldConfigManager_logger, _ShieldConfigManager_config, _ShieldConfigManager_refreshTimer, _ShieldConfigManager_isSetup, _ShieldConfigManager_setupPromise, _ShieldConfigManager_doSetup, _ShieldConfigManager_startRefreshTimer;
|
|
74
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
75
|
+
exports.backendShieldConfigManager = exports.ShieldConfigManager = void 0;
|
|
76
|
+
const serviceV2_1 = require("./serviceV2");
|
|
77
|
+
const shieldClient = __importStar(require("./service"));
|
|
78
|
+
const defaultLogger = {
|
|
79
|
+
info: (msg, ...args) => console.log(`[ShieldConfigManager] ${msg}`, ...args),
|
|
80
|
+
warn: (msg, ...args) => console.warn(`[ShieldConfigManager] ${msg}`, ...args),
|
|
81
|
+
error: (msg, ...args) => console.error(`[ShieldConfigManager] ${msg}`, ...args),
|
|
82
|
+
};
|
|
83
|
+
const DEFAULT_REFRESH_INTERVAL_MS = 5 * 1000;
|
|
84
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 10 * 1000;
|
|
85
|
+
function withTimeout(promise, timeoutMs) {
|
|
86
|
+
return Promise.race([
|
|
87
|
+
promise,
|
|
88
|
+
new Promise((_resolve, reject) => setTimeout(() => reject(new Error(`ShieldConfigManager fetch timeout after ${timeoutMs}ms`)), timeoutMs)),
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 配置管理器
|
|
93
|
+
*
|
|
94
|
+
* 自动从 Shield 配置中心拉取服务配置,支持定时刷新和泛型类型推导
|
|
95
|
+
*/
|
|
96
|
+
class ShieldConfigManager {
|
|
97
|
+
constructor(options) {
|
|
98
|
+
_ShieldConfigManager_instances.add(this);
|
|
99
|
+
_ShieldConfigManager_serviceName.set(this, void 0);
|
|
100
|
+
_ShieldConfigManager_env.set(this, void 0);
|
|
101
|
+
_ShieldConfigManager_refreshIntervalMs.set(this, void 0);
|
|
102
|
+
_ShieldConfigManager_fetchTimeoutMs.set(this, void 0);
|
|
103
|
+
_ShieldConfigManager_logger.set(this, void 0);
|
|
104
|
+
_ShieldConfigManager_config.set(this, null);
|
|
105
|
+
_ShieldConfigManager_refreshTimer.set(this, null);
|
|
106
|
+
_ShieldConfigManager_isSetup.set(this, false);
|
|
107
|
+
_ShieldConfigManager_setupPromise.set(this, null);
|
|
108
|
+
if (!options.serviceName) {
|
|
109
|
+
throw new Error('[ShieldConfigManager] serviceName is required');
|
|
110
|
+
}
|
|
111
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_serviceName, options.serviceName, "f");
|
|
112
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_env, options.env || process.env.NODE_ENV, "f");
|
|
113
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_refreshIntervalMs, options.refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS, "f");
|
|
114
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_fetchTimeoutMs, options.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS, "f");
|
|
115
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_logger, options.logger ?? defaultLogger, "f");
|
|
116
|
+
}
|
|
117
|
+
/** 当前缓存的配置副本(原始 Record) */
|
|
118
|
+
get config() {
|
|
119
|
+
return __classPrivateFieldGet(this, _ShieldConfigManager_config, "f");
|
|
120
|
+
}
|
|
121
|
+
/** 是否已完成初始化 */
|
|
122
|
+
get isSetup() {
|
|
123
|
+
return __classPrivateFieldGet(this, _ShieldConfigManager_isSetup, "f");
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 等待初始化完成
|
|
127
|
+
* @returns Promise,初始化完成后 resolve
|
|
128
|
+
*/
|
|
129
|
+
async waitForSetup() {
|
|
130
|
+
if (!__classPrivateFieldGet(this, _ShieldConfigManager_setupPromise, "f")) {
|
|
131
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_setupPromise, __classPrivateFieldGet(this, _ShieldConfigManager_instances, "m", _ShieldConfigManager_doSetup).call(this), "f");
|
|
132
|
+
}
|
|
133
|
+
return __classPrivateFieldGet(this, _ShieldConfigManager_setupPromise, "f");
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* 初始化配置管理器,启动定时刷新
|
|
137
|
+
* 幂等:重复调用无效
|
|
138
|
+
*/
|
|
139
|
+
async setup() {
|
|
140
|
+
if (__classPrivateFieldGet(this, _ShieldConfigManager_isSetup, "f")) {
|
|
141
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").warn('ShieldConfigManager already initialized, skipping...');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
return this.waitForSetup();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 手动刷新配置(立即触发一次拉取)
|
|
148
|
+
*/
|
|
149
|
+
async refresh() {
|
|
150
|
+
try {
|
|
151
|
+
const config = await withTimeout(serviceV2_1.backendConfigServiceV2.fetchAllConfigs(__classPrivateFieldGet(this, _ShieldConfigManager_serviceName, "f"), __classPrivateFieldGet(this, _ShieldConfigManager_env, "f")), __classPrivateFieldGet(this, _ShieldConfigManager_fetchTimeoutMs, "f"));
|
|
152
|
+
if (config && Object.keys(config).length > 0) {
|
|
153
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_config, config, "f");
|
|
154
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").info('ShieldConfigManager config refreshed', { keys: Object.keys(config) });
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").warn('ShieldConfigManager fetched empty config');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").error('ShieldConfigManager refresh error', error);
|
|
162
|
+
}
|
|
163
|
+
// 兼容旧的逻辑
|
|
164
|
+
try {
|
|
165
|
+
const dynamicConfig = await withTimeout(shieldClient.backendConfigService.fetchGlobalDynamicConfig(), __classPrivateFieldGet(this, _ShieldConfigManager_fetchTimeoutMs, "f"));
|
|
166
|
+
if (dynamicConfig) {
|
|
167
|
+
process.env.authorizationTokenInside = dynamicConfig.tokenKey;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").error('fetch dynamic config error', error);
|
|
172
|
+
}
|
|
173
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").info('ShieldConfigManager config refreshed finally', { config: __classPrivateFieldGet(this, _ShieldConfigManager_config, "f") });
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 获取类型化的配置
|
|
177
|
+
* @returns 泛型 T 类型的配置对象
|
|
178
|
+
*/
|
|
179
|
+
getConfig() {
|
|
180
|
+
return __classPrivateFieldGet(this, _ShieldConfigManager_config, "f") ?? null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 停止定时刷新,清理资源
|
|
184
|
+
*/
|
|
185
|
+
stop() {
|
|
186
|
+
if (__classPrivateFieldGet(this, _ShieldConfigManager_refreshTimer, "f")) {
|
|
187
|
+
clearInterval(__classPrivateFieldGet(this, _ShieldConfigManager_refreshTimer, "f"));
|
|
188
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_refreshTimer, null, "f");
|
|
189
|
+
}
|
|
190
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_isSetup, false, "f");
|
|
191
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_setupPromise, null, "f");
|
|
192
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").info('ShieldConfigManager stopped');
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.ShieldConfigManager = ShieldConfigManager;
|
|
196
|
+
_ShieldConfigManager_serviceName = new WeakMap(), _ShieldConfigManager_env = new WeakMap(), _ShieldConfigManager_refreshIntervalMs = new WeakMap(), _ShieldConfigManager_fetchTimeoutMs = new WeakMap(), _ShieldConfigManager_logger = new WeakMap(), _ShieldConfigManager_config = new WeakMap(), _ShieldConfigManager_refreshTimer = new WeakMap(), _ShieldConfigManager_isSetup = new WeakMap(), _ShieldConfigManager_setupPromise = new WeakMap(), _ShieldConfigManager_instances = new WeakSet(), _ShieldConfigManager_doSetup = async function _ShieldConfigManager_doSetup() {
|
|
197
|
+
try {
|
|
198
|
+
await this.refresh();
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").error('ShieldConfigManager initial refresh failed', error);
|
|
202
|
+
}
|
|
203
|
+
if (!__classPrivateFieldGet(this, _ShieldConfigManager_config, "f")) {
|
|
204
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").error('ShieldConfigManager config is empty after initial refresh');
|
|
205
|
+
}
|
|
206
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_instances, "m", _ShieldConfigManager_startRefreshTimer).call(this);
|
|
207
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_isSetup, true, "f");
|
|
208
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").info('ShieldConfigManager initialized successfully');
|
|
209
|
+
}, _ShieldConfigManager_startRefreshTimer = function _ShieldConfigManager_startRefreshTimer() {
|
|
210
|
+
__classPrivateFieldSet(this, _ShieldConfigManager_refreshTimer, setInterval(() => {
|
|
211
|
+
this.refresh().catch((error) => {
|
|
212
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").error('ShieldConfigManager timer refresh error', error);
|
|
213
|
+
});
|
|
214
|
+
}, __classPrivateFieldGet(this, _ShieldConfigManager_refreshIntervalMs, "f")), "f");
|
|
215
|
+
__classPrivateFieldGet(this, _ShieldConfigManager_logger, "f").info(`ShieldConfigManager refresh timer started (interval: ${__classPrivateFieldGet(this, _ShieldConfigManager_refreshIntervalMs, "f")}ms)`);
|
|
216
|
+
};
|
|
217
|
+
// 导出单例
|
|
218
|
+
exports.backendShieldConfigManager = new ShieldConfigManager({ serviceName: '' });
|
|
@@ -15,7 +15,7 @@ class ConfigService extends BaseService_1.default {
|
|
|
15
15
|
return (0, http_1.callApi)(this.getApiUrl(this.fetchConfig), req);
|
|
16
16
|
}
|
|
17
17
|
fetchGlobalDynamicConfig() {
|
|
18
|
-
return (0, http_1.callApi)(this.getApiUrl(this.fetchGlobalDynamicConfig), undefined);
|
|
18
|
+
return (0, http_1.callApi)(this.getApiUrl(this.fetchGlobalDynamicConfig), undefined).catch(() => ({}));
|
|
19
19
|
}
|
|
20
20
|
getCosTempSecret() {
|
|
21
21
|
return (0, http_1.callApi)(this.getApiUrl(this.getCosTempSecret), undefined);
|