UNPKG

@cloudbase/app

Version:
103 lines 13.6 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OAUTH2_LOGINTYPE_PREFIX = exports.LOGINTYPE = exports.getBaseEndPoint = exports.setRegionLevelEndpoint = exports.setGatewayEndPointWithEnv = exports.getEndPointInfo = exports.setEndPointInfo = exports.DEFAULT_PROTOCOL = exports.DATA_VERSION = exports.getSdkName = exports.setSdkName = exports.getSdkVersion = exports.setSdkVersion = void 0; var utilities_1 = require("@cloudbase/utilities"); var setUtilitiesSdkName = utilities_1.constants.setSdkName, setUtilitiesProtocol = utilities_1.constants.setProtocol; var sdkVersion = ''; var sdkName = '@cloudbase/js-sdk'; function setSdkVersion(version) { sdkVersion = version; } exports.setSdkVersion = setSdkVersion; function getSdkVersion() { return sdkVersion; } exports.getSdkVersion = getSdkVersion; function setSdkName(name) { sdkName = name; setUtilitiesSdkName(name); } exports.setSdkName = setSdkName; function getSdkName() { return sdkName; } exports.getSdkName = getSdkName; exports.DATA_VERSION = '2020-01-10'; var END_POINT_INFO_ARR = []; var END_POINT_INFO_SEARCH_KEYS = ['env', 'endPointKey', 'region']; exports.DEFAULT_PROTOCOL = 'https:'; function findMatchedInfo(info) { return END_POINT_INFO_ARR.find(function (targetInfo) { return END_POINT_INFO_SEARCH_KEYS.filter(function (searchKey) { return info[searchKey] != null; }).every(function (searchKey) { return targetInfo[searchKey] === info[searchKey]; }); }); } function setEndPointInfo(newInfo) { var _a, _b; if (newInfo.protocol && !/:$/.test(newInfo.protocol)) { newInfo.protocol = "".concat(newInfo.protocol, ":"); } var endPointInfo = findMatchedInfo(newInfo); if (endPointInfo) { if (newInfo.baseUrl != null) { endPointInfo.baseUrl = newInfo.baseUrl; } if (newInfo.protocol != null) { endPointInfo.protocol = newInfo.protocol; } } else { END_POINT_INFO_ARR.push(__assign(__assign({}, newInfo), { protocol: (_a = newInfo.protocol) !== null && _a !== void 0 ? _a : exports.DEFAULT_PROTOCOL })); } if (newInfo.endPointKey === 'CLOUD_API') { setUtilitiesProtocol(((_b = newInfo.protocol) !== null && _b !== void 0 ? _b : exports.DEFAULT_PROTOCOL)); } } exports.setEndPointInfo = setEndPointInfo; function getEndPointInfo(env, endPointKey, region) { return findMatchedInfo({ env: env, endPointKey: endPointKey, region: region }); } exports.getEndPointInfo = getEndPointInfo; function setGatewayEndPointWithEnv(env, protocol, init) { var baseUrl = "//".concat(env, ".api.tcloudbasegateway.com/v1"); if (init) { baseUrl = "//".concat(env, ".api.intl.tcloudbasegateway.com/v1"); } setEndPointInfo({ endPointKey: 'GATEWAY', env: env, baseUrl: baseUrl, protocol: protocol }); } exports.setGatewayEndPointWithEnv = setGatewayEndPointWithEnv; function setRegionLevelEndpoint(env, region, protocol) { var baseUrl = "//".concat(env, ".").concat(region || 'ap-shanghai', ".tcb-api.tencentcloudapi.com/web"); setEndPointInfo({ env: env, region: region, baseUrl: baseUrl, protocol: protocol, endPointKey: 'CLOUD_API' }); } exports.setRegionLevelEndpoint = setRegionLevelEndpoint; function getBaseEndPoint(env, endPointKey) { if (endPointKey === void 0) { endPointKey = 'CLOUD_API'; } var info = getEndPointInfo(env, endPointKey || 'CLOUD_API'); var PROTOCOL = info.protocol, BASE_URL = info.baseUrl; var webEndpoint = "".concat(PROTOCOL).concat(BASE_URL); return webEndpoint.match(/(http(s)?:)?\/\/([^/?#]*)/)[0]; } exports.getBaseEndPoint = getBaseEndPoint; var LOGINTYPE; (function (LOGINTYPE) { LOGINTYPE["NULL"] = "NULL"; LOGINTYPE["ANONYMOUS"] = "ANONYMOUS"; LOGINTYPE["WECHAT"] = "WECHAT"; LOGINTYPE["WECHAT_PUBLIC"] = "WECHAT-PUBLIC"; LOGINTYPE["WECHAT_OPEN"] = "WECHAT-OPEN"; LOGINTYPE["CUSTOM"] = "CUSTOM"; LOGINTYPE["EMAIL"] = "EMAIL"; LOGINTYPE["USERNAME"] = "USERNAME"; LOGINTYPE["PHONE"] = "PHONE"; })(LOGINTYPE = exports.LOGINTYPE || (exports.LOGINTYPE = {})); exports.OAUTH2_LOGINTYPE_PREFIX = 'OAUTH2'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnN0YW50cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSxrREFBZ0Q7QUFHeEMsSUFBWSxtQkFBbUIsR0FBd0MscUJBQVMsV0FBakQsRUFBZSxvQkFBb0IsR0FBSyxxQkFBUyxZQUFkLENBQWM7QUFJeEYsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFBO0FBQ25CLElBQUksT0FBTyxHQUFHLG1CQUFtQixDQUFBO0FBRWpDLFNBQWdCLGFBQWEsQ0FBQyxPQUFlO0lBQzNDLFVBQVUsR0FBRyxPQUFPLENBQUE7QUFDdEIsQ0FBQztBQUZELHNDQUVDO0FBQ0QsU0FBZ0IsYUFBYTtJQUMzQixPQUFPLFVBQVUsQ0FBQTtBQUNuQixDQUFDO0FBRkQsc0NBRUM7QUFDRCxTQUFnQixVQUFVLENBQUMsSUFBWTtJQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFBO0lBQ2QsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDM0IsQ0FBQztBQUhELGdDQUdDO0FBQ0QsU0FBZ0IsVUFBVTtJQUN4QixPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRkQsZ0NBRUM7QUFDWSxRQUFBLFlBQVksR0FBRyxZQUFZLENBQUE7QUFpQnhDLElBQU0sa0JBQWtCLEdBQXdCLEVBQUUsQ0FBQTtBQUdsRCxJQUFNLDBCQUEwQixHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUV0RCxRQUFBLGdCQUFnQixHQUF1QixRQUFRLENBQUE7QUFFNUQsU0FBUyxlQUFlLENBQUMsSUFBa0I7SUFFekMsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsVUFBQSxTQUFTLElBQUksT0FBQSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUF2QixDQUF1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O0FBRUQsSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25CLDBCQUFhLENBQUE7SUFDYixvQ0FBdUIsQ0FBQTtJQUN2Qiw4QkFBaUIsQ0FBQTtJQUNqQiw0Q0FBK0IsQ0FBQTtJQUMvQix3Q0FBMkIsQ0FBQTtJQUMzQiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0lBQ2Ysa0NBQXFCLENBQUE7SUFDckIsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFVcEI7QUFFWSxRQUFBLHVCQUF1QixHQUFHLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVuZFBvaW50S2V5IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJ1xuXG4vLyBAdHMtaWdub3JlXG5jb25zdCB7IHNldFNka05hbWU6IHNldFV0aWxpdGllc1Nka05hbWUsIHNldFByb3RvY29sOiBzZXRVdGlsaXRpZXNQcm90b2NvbCB9ID0gY29uc3RhbnRzXG4vKipcbiAqIFNES1xuICovXG5sZXQgc2RrVmVyc2lvbiA9ICcnXG5sZXQgc2RrTmFtZSA9ICdAY2xvdWRiYXNlL2pzLXNkaydcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNka1ZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gIHNka1ZlcnNpb24gPSB2ZXJzaW9uXG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2RrVmVyc2lvbigpIHtcbiAgcmV0dXJuIHNka1ZlcnNpb25cbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRTZGtOYW1lKG5hbWU6IHN0cmluZykge1xuICBzZGtOYW1lID0gbmFtZVxuICBzZXRVdGlsaXRpZXNTZGtOYW1lKG5hbWUpXG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2RrTmFtZSgpIHtcbiAgcmV0dXJuIHNka05hbWVcbn1cbmV4cG9ydCBjb25zdCBEQVRBX1ZFUlNJT04gPSAnMjAyMC0wMS0xMCdcblxuaW50ZXJmYWNlIEVuZFBvaW50SW5mbyB7XG4gIGVudjogc3RyaW5nXG4gIGVuZFBvaW50S2V5OiBFbmRQb2ludEtleVxuICByZWdpb24/OiBzdHJpbmdcbiAgYmFzZVVybD86IHN0cmluZ1xuICBwcm90b2NvbD86IFByb3RvY29sXG59XG5cbnR5cGUgUHJvdG9jb2wgPSAnaHR0cCcgfCAnaHR0cHMnIHwgJ2h0dHA6JyB8ICdodHRwczonXG5cbi8qKlxuICogIOaJgOaciSBlbmRQb2ludCDkv6Hmga9cbiAqICDpgb/lhY3nm7TmjqXmk43kvZzor6XmlbDnu4RcbiAqICDkvb/nlKggc2V0RW5kUG9pbnRJbmZv44CBIGdldEVuZFBvaW50SW5mb1xuICovXG5jb25zdCBFTkRfUE9JTlRfSU5GT19BUlI6IEFycmF5PEVuZFBvaW50SW5mbz4gPSBbXVxuXG4vKiog55So5p2l5p+l5om+IGVuZFBvaW50IOeahOWtl+autSAqL1xuY29uc3QgRU5EX1BPSU5UX0lORk9fU0VBUkNIX0tFWVMgPSBbJ2VudicsICdlbmRQb2ludEtleScsICdyZWdpb24nXVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QUk9UT0NPTDogJ2h0dHA6JyB8ICdodHRwczonID0gJ2h0dHBzOidcblxuZnVuY3Rpb24gZmluZE1hdGNoZWRJbmZvKGluZm86IEVuZFBvaW50SW5mbykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgZXFlcWVxXG4gIHJldHVybiBFTkRfUE9JTlRfSU5GT19BUlIuZmluZCh0YXJnZXRJbmZvID0+IEVORF9QT0lOVF9JTkZPX1NFQVJDSF9LRVlTLmZpbHRlcihzZWFyY2hLZXkgPT4gaW5mb1tzZWFyY2hLZXldICE9IG51bGwpLmV2ZXJ5KHNlYXJjaEtleSA9PiB0YXJnZXRJbmZvW3NlYXJjaEtleV0gPT09IGluZm9bc2VhcmNoS2V5XSwpLClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVuZFBvaW50SW5mbyhuZXdJbmZvOiBFbmRQb2ludEluZm8pIHtcbiAgaWYgKG5ld0luZm8ucHJvdG9jb2wgJiYgIS86JC8udGVzdChuZXdJbmZvLnByb3RvY29sKSkge1xuICAgIG5ld0luZm8ucHJvdG9jb2wgPSBgJHtuZXdJbmZvLnByb3RvY29sfTpgIGFzIFByb3RvY29sXG4gIH1cblxuICBjb25zdCBlbmRQb2ludEluZm8gPSBmaW5kTWF0Y2hlZEluZm8obmV3SW5mbylcbiAgaWYgKGVuZFBvaW50SW5mbykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICBpZiAobmV3SW5mby5iYXNlVXJsICE9IG51bGwpIHtcbiAgICAgIGVuZFBvaW50SW5mby5iYXNlVXJsID0gbmV3SW5mby5iYXNlVXJsXG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICBpZiAobmV3SW5mby5wcm90b2NvbCAhPSBudWxsKSB7XG4gICAgICBlbmRQb2ludEluZm8ucHJvdG9jb2wgPSBuZXdJbmZvLnByb3RvY29sXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIEVORF9QT0lOVF9JTkZPX0FSUi5wdXNoKHsgLi4ubmV3SW5mbywgcHJvdG9jb2w6IG5ld0luZm8ucHJvdG9jb2wgPz8gREVGQVVMVF9QUk9UT0NPTCB9KVxuICB9XG5cbiAgLy8g5L+d5oyB5pen5Luj56CB6YC76L6RXG4gIGlmIChuZXdJbmZvLmVuZFBvaW50S2V5ID09PSAnQ0xPVURfQVBJJykge1xuICAgIHNldFV0aWxpdGllc1Byb3RvY29sKChuZXdJbmZvLnByb3RvY29sID8/IERFRkFVTFRfUFJPVE9DT0wpIGFzICdodHRwOicgfCAnaHR0cHM6JylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5kUG9pbnRJbmZvKGVudjogc3RyaW5nLCBlbmRQb2ludEtleTogRW5kUG9pbnRLZXksIHJlZ2lvbj86IHN0cmluZykge1xuICByZXR1cm4gZmluZE1hdGNoZWRJbmZvKHsgZW52LCBlbmRQb2ludEtleSwgcmVnaW9uIH0pXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldEVuZFBvaW50V2l0aEtleSB7XG4gIGtleTogRW5kUG9pbnRLZXlcbiAgdXJsPzogc3RyaW5nXG4gIHByb3RvY29sPzogJ2h0dHAnIHwgJ2h0dHBzJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0R2F0ZXdheUVuZFBvaW50V2l0aEVudihlbnY6IHN0cmluZywgcHJvdG9jb2w/OiBQcm90b2NvbCwgaW5pdD86IGJvb2xlYW4pIHtcbiAgbGV0IGJhc2VVcmwgPSBgLy8ke2Vudn0uYXBpLnRjbG91ZGJhc2VnYXRld2F5LmNvbS92MWBcblxuICBpZiAoaW5pdCkge1xuICAgIGJhc2VVcmwgPSBgLy8ke2Vudn0uYXBpLmludGwudGNsb3VkYmFzZWdhdGV3YXkuY29tL3YxYFxuICB9XG5cbiAgc2V0RW5kUG9pbnRJbmZvKHsgZW5kUG9pbnRLZXk6ICdHQVRFV0FZJywgZW52LCBiYXNlVXJsLCBwcm90b2NvbCB9KVxufVxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZ2lvbkxldmVsRW5kcG9pbnQoZW52OiBzdHJpbmcsIHJlZ2lvbjogc3RyaW5nLCBwcm90b2NvbD86IFByb3RvY29sKSB7XG4gIGNvbnN0IGJhc2VVcmwgPSBgLy8ke2Vudn0uJHtyZWdpb24gfHwgJ2FwLXNoYW5naGFpJ30udGNiLWFwaS50ZW5jZW50Y2xvdWRhcGkuY29tL3dlYmBcbiAgc2V0RW5kUG9pbnRJbmZvKHsgZW52LCByZWdpb24sIGJhc2VVcmwsIHByb3RvY29sLCBlbmRQb2ludEtleTogJ0NMT1VEX0FQSScgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJhc2VFbmRQb2ludChlbnY6IHN0cmluZywgZW5kUG9pbnRLZXk6IEVuZFBvaW50S2V5ID0gJ0NMT1VEX0FQSScpIHtcbiAgY29uc3QgaW5mbyA9IGdldEVuZFBvaW50SW5mbyhlbnYsIGVuZFBvaW50S2V5IHx8ICdDTE9VRF9BUEknKVxuXG4gIGNvbnN0IHsgcHJvdG9jb2w6IFBST1RPQ09MLCBiYXNlVXJsOiBCQVNFX1VSTCB9ID0gaW5mb1xuICBjb25zdCB3ZWJFbmRwb2ludCA9IGAke1BST1RPQ09MfSR7QkFTRV9VUkx9YFxuICAvLyBAdG9kbyDkuLTml7blhbzlrrnlsI/nqIvluo9cbiAgcmV0dXJuIHdlYkVuZHBvaW50Lm1hdGNoKC8oaHR0cChzKT86KT9cXC9cXC8oW14vPyNdKikvKVswXVxuICAvLyByZXR1cm4gYCR7bmV3IFVSTCh3ZWJFbmRwb2ludCkub3JpZ2lufWBcbn1cblxuZXhwb3J0IGVudW0gTE9HSU5UWVBFIHtcbiAgTlVMTCA9ICdOVUxMJyxcbiAgQU5PTllNT1VTID0gJ0FOT05ZTU9VUycsXG4gIFdFQ0hBVCA9ICdXRUNIQVQnLFxuICBXRUNIQVRfUFVCTElDID0gJ1dFQ0hBVC1QVUJMSUMnLFxuICBXRUNIQVRfT1BFTiA9ICdXRUNIQVQtT1BFTicsXG4gIENVU1RPTSA9ICdDVVNUT00nLFxuICBFTUFJTCA9ICdFTUFJTCcsXG4gIFVTRVJOQU1FID0gJ1VTRVJOQU1FJyxcbiAgUEhPTkUgPSAnUEhPTkUnLFxufVxuXG5leHBvcnQgY29uc3QgT0FVVEgyX0xPR0lOVFlQRV9QUkVGSVggPSAnT0FVVEgyJ1xuIl19