@cloudbase/app
Version:
cloudbase javascript sdk core
136 lines • 17.1 kB
JavaScript
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);
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import adapterForWxMp, { WxRequest, WxMpWebSocket, wxMpStorage, parseQueryString } from '@cloudbase/adapter-wx_mp';
import { StorageType } from '@cloudbase/adapter-interface';
export var Platform = {};
export var getWxDefaultAdapter = function () {
WxRequest.prototype.upload = function (options) {
var _this = this;
var self = this;
return new Promise(function (resolve) {
var url = options.url, file = options.file, data = options.data, headers = options.headers;
var fs = wx.getFileSystemManager();
var task = wx.request({
url: url,
method: options.method,
header: __assign({ 'content-type': ' ' }, headers),
data: fs.readFileSync(file),
timeout: _this._timeout,
success: function (res) {
var result = {
statusCode: res.statusCode,
data: res.data || {},
};
if (res.statusCode === 200 && (data === null || data === void 0 ? void 0 : data.success_action_status)) {
result.statusCode = parseInt(data.success_action_status, 10);
}
resolve(result);
},
fail: function (err) {
resolve(err);
},
complete: function (err) {
if (!(err === null || err === void 0 ? void 0 : err.errMsg)) {
return;
}
if (!self._timeout || self._restrictedMethods.indexOf('upload') === -1) {
return;
}
var errMsg = err.errMsg;
if (errMsg === 'request:fail timeout') {
console.warn(self._timeoutMsg);
try {
task.abort();
}
catch (e) { }
}
},
});
});
};
function isPlugin() {
return (typeof App === 'undefined'
&& typeof getApp === 'undefined'
&& !wx.onAppHide
&& !wx.offAppHide
&& !wx.onAppShow
&& !wx.offAppShow);
}
adapterForWxMp.genAdapter = function genAdapter(options) {
var adapter = {
root: { globalThis: {} },
reqClass: WxRequest,
wsClass: WxMpWebSocket,
captchaOptions: {
openURIWithCallback: function (_url) {
var EventBus = options.EventBus;
var queryObj = {};
var url = _url;
console.log('openURIWithCallback', _url);
var matched = _url.match(/^(data:.*?)(\?[^#\s]*)?$/);
if (matched) {
url = matched[1];
console.log('openURIWithCallback url', url);
var search = matched[2];
if (search) {
queryObj = parseQueryString(search);
}
}
console.log('openURIWithCallback queryObj', queryObj);
var token = queryObj.token, restQueryObj = __rest(queryObj, ["token"]);
if (/^data:/.test(url) && !token) {
return Promise.reject({
error: 'invalid_argument',
error_description: "invalie captcha data: ".concat(_url),
});
}
if (!token) {
return Promise.reject({
error: 'unimplemented',
error_description: 'need to impl captcha data',
});
}
return new Promise(function (resolve) {
console.log('wait for captcha...');
EventBus.$emit('CAPTCHA_DATA_CHANGE', __assign(__assign({}, restQueryObj), { token: token, url: url }));
EventBus.$once('RESOLVE_CAPTCHA_DATA', function (res) {
resolve(res);
});
});
},
},
localStorage: wxMpStorage,
primaryStorage: StorageType.local,
getAppSign: function () {
var info = wx.getAccountInfoSync();
if (isPlugin()) {
return info && info.plugin ? info.plugin.appId : '';
}
return info && info.miniProgram ? info.miniProgram.appId : '';
},
};
return adapter;
};
return adapterForWxMp;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUNsSCxPQUFPLEVBQXlCLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBTWpGLE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFBO0FBRWxELE1BQU0sQ0FBQyxJQUFNLG1CQUFtQixHQUFHO0lBQ2pDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsT0FBOEI7UUFBeEMsaUJBNkM1QjtRQTNDQyxJQUFNLElBQUksR0FBRyxJQUFJLENBQUE7UUFDakIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU87WUFDakIsSUFBQSxHQUFHLEdBQTBCLE9BQU8sSUFBakMsRUFBRSxJQUFJLEdBQW9CLE9BQU8sS0FBM0IsRUFBRSxJQUFJLEdBQWMsT0FBTyxLQUFyQixFQUFFLE9BQU8sR0FBSyxPQUFPLFFBQVosQ0FBWTtZQUM1QyxJQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtZQUNwQyxJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUN0QixHQUFHLEtBQUE7Z0JBQ0gsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixNQUFNLGFBQ0osY0FBYyxFQUFFLEdBQUcsSUFDaEIsT0FBTyxDQUNYO2dCQUNELElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDM0IsT0FBTyxFQUFFLEtBQUksQ0FBQyxRQUFRO2dCQUN0QixPQUFPLFlBQUMsR0FBMEM7b0JBQ2hELElBQU0sTUFBTSxHQUFHO3dCQUNiLFVB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QyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDL0QsQ0FBQztTQUNGLENBQUE7UUFDRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDLENBQUE7SUFFRCxPQUFPLGNBQWMsQ0FBQTtBQUN2QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcbmltcG9ydCBhZGFwdGVyRm9yV3hNcCwgeyBXeFJlcXVlc3QsIFd4TXBXZWJTb2NrZXQsIHd4TXBTdG9yYWdlLCBwYXJzZVF1ZXJ5U3RyaW5nIH0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLXd4X21wJ1xuaW1wb3J0IHsgSVVwbG9hZFJlcXVlc3RPcHRpb25zLCBTdG9yYWdlVHlwZSB9IGZyb20gJ0BjbG91ZGJhc2UvYWRhcHRlci1pbnRlcmZhY2UnXG5cbmRlY2xhcmUgY29uc3Qgd3g6IGFueVxuZGVjbGFyZSBjb25zdCBBcHA6IGFueVxuZGVjbGFyZSBjb25zdCBnZXRBcHA6IGFueVxuXG5leHBvcnQgY29uc3QgUGxhdGZvcm06IElDbG91ZGJhc2VQbGF0Zm9ybUluZm8gPSB7fVxuXG5leHBvcnQgY29uc3QgZ2V0V3hEZWZhdWx0QWRhcHRlciA9ICgpID0+IHtcbiAgV3hSZXF1ZXN0LnByb3RvdHlwZS51cGxvYWQgPSBmdW5jdGlvbiAob3B0aW9uczogSVVwbG9hZFJlcXVlc3RPcHRpb25zKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGNvbnN0IHsgdXJsLCBmaWxlLCBkYXRhLCBoZWFkZXJzIH0gPSBvcHRpb25zXG4gICAgICBjb25zdCBmcyA9IHd4LmdldEZpbGVTeXN0ZW1NYW5hZ2VyKCkgLy8g6K+75Y+W5paH5Lu2IOS6jOi/m+WItuWGheWuuVxuICAgICAgY29uc3QgdGFzayA9IHd4LnJlcXVlc3Qoe1xuICAgICAgICB1cmwsXG4gICAgICAgIG1ldGhvZDogb3B0aW9ucy5tZXRob2QsXG4gICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnICcsIC8vIOWwj+eoi+W6jyBjb250ZW50LXR5cGUg6buY6K6k5Li6IGFwcGxpY2F0aW9uL2pzb27vvIwg6L+Z6YeM5LiA5a6a6KaB5by65Yi25Li6IOepuu+8jCDlkKbliJnnrb7lkI3plJnor69cbiAgICAgICAgICAuLi5oZWFkZXJzLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiBmcy5yZWFkRmlsZVN5bmMoZmlsZSksIC8vIOWwhuS6jOi/m+WItuaWh+S7tui9rOS4uuWtl+espuS4suebtOaOpei1i+WAvOWIsCByZXF1ZXN0IHBheWxvYWTvvIwg5LiN6KaB5LulIGZvcm0g55qE5pa55byP5Lyg6L6TXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMuX3RpbWVvdXQsXG4gICAgICAgIHN1Y2Nlc3MocmVzOiB7IHN0YXR1c0NvZGU6IG51bWJlcjsgZGF0YTogdW5rbm93biB9KSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgICAgc3RhdHVzQ29kZTogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICBkYXRhOiByZXMuZGF0YSB8fCB7fSxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDAgJiYgZGF0YT8uc3VjY2Vzc19hY3Rpb25fc3RhdHVzKSB7XG4gICAgICAgICAgICByZXN1bHQuc3RhdHVzQ29kZSA9IHBhcnNlSW50KGRhdGEuc3VjY2Vzc19hY3Rpb25fc3RhdHVzLCAxMClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpXG4gICAgICAgIH0sXG4gICAgICAgIGZhaWwoZXJyOiB1bmtub3duKSB7XG4gICAgICAgICAgcmVzb2x2ZShlcnIpXG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlKGVycjogeyBlcnJNc2c6IHN0cmluZyB9KSB7XG4gICAgICAgICAgaWYgKCFlcnI/LmVyck1zZykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc2VsZi5fdGltZW91dCB8fCBzZWxmLl9yZXN0cmljdGVkTWV0aG9kcy5pbmRleE9mKCd1cGxvYWQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGVyck1zZyB9ID0gZXJyXG4gICAgICAgICAgaWYgKGVyck1zZyA9PT0gJ3JlcXVlc3Q6ZmFpbCB0aW1lb3V0Jykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHNlbGYuX3RpbWVvdXRNc2cpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0YXNrLmFib3J0KClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gaXNQbHVnaW4oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiBBcHAgPT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2V0QXBwID09PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgIXd4Lm9uQXBwSGlkZVxuICAgICAgJiYgIXd4Lm9mZkFwcEhpZGVcbiAgICAgICYmICF3eC5vbkFwcFNob3dcbiAgICAgICYmICF3eC5vZmZBcHBTaG93XG4gICAgKVxuICB9XG4gIGFkYXB0ZXJGb3JXeE1wLmdlbkFkYXB0ZXIgPSBmdW5jdGlvbiBnZW5BZGFwdGVyKG9wdGlvbnMpIHtcbiAgICBjb25zdCBhZGFwdGVyID0ge1xuICAgICAgcm9vdDogeyBnbG9iYWxUaGlzOiB7fSB9LFxuICAgICAgcmVxQ2xhc3M6IFd4UmVxdWVzdCxcbiAgICAgIHdzQ2xhc3M6IFd4TXBXZWJTb2NrZXQsXG4gICAgICBjYXB0Y2hhT3B0aW9uczoge1xuICAgICAgICBvcGVuVVJJV2l0aENhbGxiYWNrOiAoX3VybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgICAgIGNvbnN0IHsgRXZlbnRCdXMgfSA9IG9wdGlvbnNcbiAgICAgICAgICBsZXQgcXVlcnlPYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICAgICAgICAgIGxldCB1cmwgPSBfdXJsXG4gICAgICAgICAgY29uc29sZS5sb2coJ29wZW5VUklXaXRoQ2FsbGJhY2snLCBfdXJsKVxuICAgICAgICAgIGNvbnN0IG1hdGNoZWQgPSBfdXJsLm1hdGNoKC9eKGRhdGE6Lio/KShcXD9bXiNcXHNdKik/JC8pXG4gICAgICAgICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICAgICAgdXJsID0gbWF0Y2hlZFsxXVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ29wZW5VUklXaXRoQ2FsbGJhY2sgdXJsJywgdXJsKVxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gbWF0Y2hlZFsyXVxuICAgICAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgICAgICBxdWVyeU9iaiA9IHBhcnNlUXVlcnlTdHJpbmcoc2VhcmNoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmxvZygnb3BlblVSSVdpdGhDYWxsYmFjayBxdWVyeU9iaicsIHF1ZXJ5T2JqKVxuICAgICAgICAgIGNvbnN0IHsgdG9rZW4sIC4uLnJlc3RRdWVyeU9iaiB9ID0gcXVlcnlPYmpcbiAgICAgICAgICBpZiAoL15kYXRhOi8udGVzdCh1cmwpICYmICF0b2tlbikge1xuICAgICAgICAgICAgLy8g5aaC5p6c5pivIGRhdGE6IOW8gOWktOeahCBVUkwg5LiU5rKh5pyJIHRva2Vu77yM5YiZ55u05o6l6L+U5ZueXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICAgICAgICBlcnJvcjogJ2ludmFsaWRfYXJndW1lbnQnLFxuICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogYGludmFsaWUgY2FwdGNoYSBkYXRhOiAke191cmx9YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gICAgICAgICAgICAgIGVycm9yOiAndW5pbXBsZW1lbnRlZCcsXG4gICAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAnbmVlZCB0byBpbXBsIGNhcHRjaGEgZGF0YScsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3YWl0IGZvciBjYXB0Y2hhLi4uJylcbiAgICAgICAgICAgIEV2ZW50QnVzLiRlbWl0KCdDQVBUQ0hBX0RBVEFfQ0hBTkdFJywgeyAuLi5yZXN0UXVlcnlPYmosIHRva2VuLCB1cmwgfSlcblxuICAgICAgICAgICAgLy8g55uR5ZCs5LqL5Lu25oC757q/77yM562J5b6F6aqM6K+B56CB5pWw5o2u5Y+Y5YyWXG4gICAgICAgICAgICBFdmVudEJ1cy4kb25jZSgnUkVTT0xWRV9DQVBUQ0hBX0RBVEEnLCAocmVzOiB7IGNhcHRjaGFfdG9rZW46IHN0cmluZzsgZXhwaXJlc19pbjogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbG9jYWxTdG9yYWdlOiB3eE1wU3RvcmFnZSxcbiAgICAgIHByaW1hcnlTdG9yYWdlOiBTdG9yYWdlVHlwZS5sb2NhbCxcbiAgICAgIGdldEFwcFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKVxuICAgICAgICBpZiAoaXNQbHVnaW4oKSkge1xuICAgICAgICAgIC8vIOaPkuS7tueOr+Wig+i/lOWbnuaPkuS7tmFwcGlkXG4gICAgICAgICAgcmV0dXJuIGluZm8gJiYgaW5mby5wbHVnaW4gPyBpbmZvLnBsdWdpbi5hcHBJZCA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZm8gJiYgaW5mby5taW5pUHJvZ3JhbSA/IGluZm8ubWluaVByb2dyYW0uYXBwSWQgOiAnJ1xuICAgICAgfSxcbiAgICB9XG4gICAgcmV0dXJuIGFkYXB0ZXJcbiAgfVxuXG4gIHJldHVybiBhZGFwdGVyRm9yV3hNcFxufVxuIl19