@smash-sdk/core
Version:
Smash Sdk Core
250 lines (249 loc) • 6.99 kB
JavaScript
;
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;