|                                             |  | /* eslint-disable no-use-before-define */const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');const querystring = require('querystring');const {  Base64: { encode: str2Base64 }} = require('js-base64');
const proto = exports;
proto.processObjectSave = async function processObjectSave(sourceObject, targetObject, process, targetBucket) {  checkArgs(sourceObject, 'sourceObject');  checkArgs(targetObject, 'targetObject');  checkArgs(process, 'process');  targetObject = this._objectName(targetObject);  if (targetBucket) {    _checkBucketName(targetBucket);  }
  const params = this._objectRequestParams('POST', sourceObject, {    subres: 'x-oss-process'  });
  const bucketParam = targetBucket ? `,b_${str2Base64(targetBucket)}` : '';  targetObject = str2Base64(targetObject);
  const content = {    'x-oss-process': `${process}|sys/saveas,o_${targetObject}${bucketParam}`  };  params.content = querystring.stringify(content);
  const result = await this.request(params);  return {    res: result.res,    status: result.res.status  };};
function checkArgs(name, key) {  if (!name) {    throw new Error(`${key} is required`);  }  if (typeof name !== 'string') {    throw new Error(`${key} must be String`);  }}
 |