UNPKG

@smash-sdk/core

Version:

Smash Sdk Core

250 lines (249 loc) 6.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.config = exports.Config = void 0; const sdkError_1 = require("../errors/sdkError"); const node_1 = require("../helper/node"); const index_1 = require("./types/index"); const version_1 = require("../version"); const refreshTokenManager_1 = require("../helper/refreshTokenManager"); const globalKey = Symbol('smashSdkConfig_' + version_1.version); ; class Config { get hosts() { if ((0, node_1.isNode)()) { if (!global.smashSdkHosts) { global.smashSdkHosts = {}; } return global.smashSdkHosts; } else { if (!window.smashSdkHosts) { window.smashSdkHosts = {}; } return window.smashSdkHosts; } } set hosts(hosts) { if ((0, node_1.isNode)()) { global.smashSdkHosts = hosts; } else { window.smashSdkHosts = hosts; } } get token() { if ((0, node_1.isNode)()) { return global.smashSdkToken; } else { return window.smashSdkToken; } } set token(token) { if ((0, node_1.isNode)()) { global.smashSdkToken = token; } else { window.smashSdkToken = token; } } get region() { if ((0, node_1.isNode)()) { return global.smashSdkRegion; } else { return window.smashSdkRegion; } } set region(region) { if ((0, node_1.isNode)()) { global.smashSdkRegion = region; } else { window.smashSdkRegion = region; } } get timeout() { if ((0, node_1.isNode)()) { return global.smashSdkTimeout; } else { return window.smashSdkTimeout; } } set timeout(timeout) { if ((0, node_1.isNode)()) { global.smashSdkTimeout = timeout; } else { window.smashSdkTimeout = timeout; } } get httpAgent() { if ((0, node_1.isNode)()) { return global.smashSdkHttpAgent; } else { return window.smashSdkHttpAgent; } } set httpAgent(httpAgent) { if ((0, node_1.isNode)()) { global.smashSdkHttpAgent = httpAgent; } else { window.smashSdkHttpAgent = httpAgent; } } get httpsAgent() { if ((0, node_1.isNode)()) { return global.smashSdkHttpsAgent; } else { return window.smashSdkHttpsAgent; } } set httpsAgent(httpsAgent) { if ((0, node_1.isNode)()) { global.smashSdkHttpsAgent = httpsAgent; } else { window.smashSdkHttpsAgent = httpsAgent; } } get refreshTokenMethod() { if ((0, node_1.isNode)()) { return global.smashSdkRefreshTokenMethod; } else { return window.smashSdkRefreshTokenMethod; } } set refreshTokenMethod(refreshTokenMethod) { if ((0, node_1.isNode)()) { global.smashSdkRefreshTokenMethod = refreshTokenMethod; } else { window.smashSdkRefreshTokenMethod = refreshTokenMethod; } if (refreshTokenMethod) { this.refreshtokenManager = new refreshTokenManager_1.RefreshTokenManager(refreshTokenMethod); } else { this.refreshtokenManager = undefined; } } get refreshtokenManager() { if ((0, node_1.isNode)()) { return global.smashSdkRefreshTokenManager; } else { return window.smashSdkRefreshTokenManager; } } set refreshtokenManager(refreshTokenManager) { if ((0, node_1.isNode)()) { global.smashSdkRefreshTokenManager = refreshTokenManager; } else { window.smashSdkRefreshTokenManager = refreshTokenManager; } } static get Instance() { if ((0, node_1.isNode)()) { if (!global[globalKey]) { Config.instance = new Config(); global[globalKey] = Config.instance; } Config.instance = global[globalKey]; } else { if (!window[globalKey]) { Config.instance = new Config(); window[globalKey] = Config.instance; } Config.instance = window[globalKey]; } return Config.instance; } constructor() { if ((0, node_1.isNode)()) { if (process?.env) { if (process?.env[index_1.SmashEnvRegion]) { this.setRegion(process.env[index_1.SmashEnvRegion]); } if (process?.env[index_1.SmashEnvToken]) { this.setToken(process.env[index_1.SmashEnvToken]); } } } } getHost(service, region = "global") { if (region === "global" && this.hosts[service][region]) { return this.hosts[service][region]; } else if (this.hosts[service][region]) { return this.hosts[service][region]; } else { throw new sdkError_1.InvalidRegionError("Invalid region asked: " + region + " for service " + service + ", available regions are " + Object.keys(this.hosts[service]).join(", ") + "."); } } setHosts(service, hosts, overwrite = true) { if (overwrite === true) { this.hosts[service] = hosts; } else { const keys = Object.keys(hosts); keys.forEach(key => { if (!this.hosts[service]) { this.hosts[service] = {}; } if (!this.hosts[service][key]) { this.hosts[service][key] = hosts[key]; } }); } } setRegion(region) { this.region = region; } getRegion() { return this.region; } setToken(token) { this.token = token; } getToken() { return this.token; } setRefreshTokenMethod(refreshtokenMethod) { this.refreshTokenMethod = refreshtokenMethod; } getRefreshTokenMethod() { return this.refreshTokenMethod; } getRefreshTokenManager() { return this.refreshtokenManager; } setTimeout(timeout) { this.timeout = timeout; } getTimeout() { return this.timeout; } setHttpAgent(httpAgent) { this.httpAgent = httpAgent; } getHttpAgent() { return this.httpAgent; } setHttpsAgent(httpsAgent) { this.httpsAgent = httpsAgent; } getHttpsAgent() { return this.httpsAgent; } } exports.Config = Config; exports.config = Config.Instance;