|                                |  | import { formatObjKey } from './formatObjKey';
export async function setSTSToken(this: any) {  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(credentials, 'firstLowerCase');      if (credentials.securityToken) {        credentials.stsToken = credentials.securityToken;      }      checkCredentials(credentials);      Object.assign(this.options, credentials);    }  } else {    this.stsTokenFreshTime = now;  }  return null;}
export 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 ${_}`);    }  });}
 |