"use strict";
							 | 
						|
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						|
								exports.checkCredentials = exports.setSTSToken = void 0;
							 | 
						|
								const formatObjKey_1 = require("./formatObjKey");
							 | 
						|
								async function setSTSToken() {
							 | 
						|
								    if (!this.options)
							 | 
						|
								        this.options = {};
							 | 
						|
								    const now = new Date();
							 | 
						|
								    if (this.stsTokenFreshTime) {
							 | 
						|
								        if (+now - this.stsTokenFreshTime >= this.options.refreshSTSTokenInterval) {
							 | 
						|
								            this.stsTokenFreshTime = now;
							 | 
						|
								            let credentials = await this.options.refreshSTSToken();
							 | 
						|
								            credentials = formatObjKey_1.formatObjKey(credentials, 'firstLowerCase');
							 | 
						|
								            if (credentials.securityToken) {
							 | 
						|
								                credentials.stsToken = credentials.securityToken;
							 | 
						|
								            }
							 | 
						|
								            checkCredentials(credentials);
							 | 
						|
								            Object.assign(this.options, credentials);
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								    else {
							 | 
						|
								        this.stsTokenFreshTime = now;
							 | 
						|
								    }
							 | 
						|
								    return null;
							 | 
						|
								}
							 | 
						|
								exports.setSTSToken = setSTSToken;
							 | 
						|
								function checkCredentials(obj) {
							 | 
						|
								    const stsTokenKey = ['accessKeySecret', 'accessKeyId', 'stsToken'];
							 | 
						|
								    const objKeys = Object.keys(obj);
							 | 
						|
								    stsTokenKey.forEach(_ => {
							 | 
						|
								        if (!objKeys.find(key => key === _)) {
							 | 
						|
								            throw Error(`refreshSTSToken must return contains ${_}`);
							 | 
						|
								        }
							 | 
						|
								    });
							 | 
						|
								}
							 | 
						|
								exports.checkCredentials = checkCredentials;
							 |