@cloudbase/app 2.21.9 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,136 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import adapterForWxMp, { WxRequest, WxMpWebSocket, wxMpStorage, parseQueryString } from '@cloudbase/adapter-wx_mp';
24
+ import { StorageType } from '@cloudbase/adapter-interface';
1
25
  export var Platform = {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL2FkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUEyQixFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcydcblxuZXhwb3J0IGNvbnN0IFBsYXRmb3JtOiBJQ2xvdWRiYXNlUGxhdGZvcm1JbmZvID0ge31cbiJdfQ==
26
+ export var getWxDefaultAdapter = function () {
27
+ WxRequest.prototype.upload = function (options) {
28
+ var _this = this;
29
+ var self = this;
30
+ return new Promise(function (resolve) {
31
+ var url = options.url, file = options.file, data = options.data, headers = options.headers;
32
+ var fs = wx.getFileSystemManager();
33
+ var task = wx.request({
34
+ url: url,
35
+ method: options.method,
36
+ header: __assign({ 'content-type': ' ' }, headers),
37
+ data: fs.readFileSync(file),
38
+ timeout: _this._timeout,
39
+ success: function (res) {
40
+ var result = {
41
+ statusCode: res.statusCode,
42
+ data: res.data || {},
43
+ };
44
+ if (res.statusCode === 200 && (data === null || data === void 0 ? void 0 : data.success_action_status)) {
45
+ result.statusCode = parseInt(data.success_action_status, 10);
46
+ }
47
+ resolve(result);
48
+ },
49
+ fail: function (err) {
50
+ resolve(err);
51
+ },
52
+ complete: function (err) {
53
+ if (!(err === null || err === void 0 ? void 0 : err.errMsg)) {
54
+ return;
55
+ }
56
+ if (!self._timeout || self._restrictedMethods.indexOf('upload') === -1) {
57
+ return;
58
+ }
59
+ var errMsg = err.errMsg;
60
+ if (errMsg === 'request:fail timeout') {
61
+ console.warn(self._timeoutMsg);
62
+ try {
63
+ task.abort();
64
+ }
65
+ catch (e) { }
66
+ }
67
+ },
68
+ });
69
+ });
70
+ };
71
+ function isPlugin() {
72
+ return (typeof App === 'undefined'
73
+ && typeof getApp === 'undefined'
74
+ && !wx.onAppHide
75
+ && !wx.offAppHide
76
+ && !wx.onAppShow
77
+ && !wx.offAppShow);
78
+ }
79
+ adapterForWxMp.genAdapter = function genAdapter(options) {
80
+ var adapter = {
81
+ root: { globalThis: {} },
82
+ reqClass: WxRequest,
83
+ wsClass: WxMpWebSocket,
84
+ captchaOptions: {
85
+ openURIWithCallback: function (_url) {
86
+ var EventBus = options.EventBus;
87
+ var queryObj = {};
88
+ var url = _url;
89
+ console.log('openURIWithCallback', _url);
90
+ var matched = _url.match(/^(data:.*?)(\?[^#\s]*)?$/);
91
+ if (matched) {
92
+ url = matched[1];
93
+ console.log('openURIWithCallback url', url);
94
+ var search = matched[2];
95
+ if (search) {
96
+ queryObj = parseQueryString(search);
97
+ }
98
+ }
99
+ console.log('openURIWithCallback queryObj', queryObj);
100
+ var token = queryObj.token, restQueryObj = __rest(queryObj, ["token"]);
101
+ if (/^data:/.test(url) && !token) {
102
+ return Promise.reject({
103
+ error: 'invalid_argument',
104
+ error_description: "invalie captcha data: ".concat(_url),
105
+ });
106
+ }
107
+ if (!token) {
108
+ return Promise.reject({
109
+ error: 'unimplemented',
110
+ error_description: 'need to impl captcha data',
111
+ });
112
+ }
113
+ return new Promise(function (resolve) {
114
+ console.log('wait for captcha...');
115
+ EventBus.$emit('CAPTCHA_DATA_CHANGE', __assign(__assign({}, restQueryObj), { token: token, url: url }));
116
+ EventBus.$once('RESOLVE_CAPTCHA_DATA', function (res) {
117
+ resolve(res);
118
+ });
119
+ });
120
+ },
121
+ },
122
+ localStorage: wxMpStorage,
123
+ primaryStorage: StorageType.local,
124
+ getAppSign: function () {
125
+ var info = wx.getAccountInfoSync();
126
+ if (isPlugin()) {
127
+ return info && info.plugin ? info.plugin.appId : '';
128
+ }
129
+ return info && info.miniProgram ? info.miniProgram.appId : '';
130
+ },
131
+ };
132
+ return adapter;
133
+ };
134
+ return adapterForWxMp;
135
+ };
136
+ //# 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/LmVyck1zZykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghc2VsZi5fdGltZW91dCB8fCBzZWxmLl9yZXN0cmljdGVkTWV0aG9kcy5pbmRleE9mKCd1cGxvYWQnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGVyck1zZyB9ID0gZXJyXG4gICAgICAgICAgaWYgKGVyck1zZyA9PT0gJ3JlcXVlc3Q6ZmFpbCB0aW1lb3V0Jykge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKHNlbGYuX3RpbWVvdXRNc2cpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0YXNrLmFib3J0KClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gaXNQbHVnaW4oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiBBcHAgPT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2V0QXBwID09PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgIXd4Lm9uQXBwSGlkZVxuICAgICAgJiYgIXd4Lm9mZkFwcEhpZGVcbiAgICAgICYmICF3eC5vbkFwcFNob3dcbiAgICAgICYmICF3eC5vZmZBcHBTaG93XG4gICAgKVxuICB9XG4gIGFkYXB0ZXJGb3JXeE1wLmdlbkFkYXB0ZXIgPSBmdW5jdGlvbiBnZW5BZGFwdGVyKG9wdGlvbnMpIHtcbiAgICBjb25zdCBhZGFwdGVyID0ge1xuICAgICAgcm9vdDogeyBnbG9iYWxUaGlzOiB7fSB9LFxuICAgICAgcmVxQ2xhc3M6IFd4UmVxdWVzdCxcbiAgICAgIHdzQ2xhc3M6IFd4TXBXZWJTb2NrZXQsXG4gICAgICBjYXB0Y2hhT3B0aW9uczoge1xuICAgICAgICBvcGVuVVJJV2l0aENhbGxiYWNrOiAoX3VybDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBFdmVudEJ1cyB9ID0gb3B0aW9uc1xuICAgICAgICAgIGxldCBxdWVyeU9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9XG4gICAgICAgICAgbGV0IHVybCA9IF91cmxcbiAgICAgICAgICBjb25zb2xlLmxvZygnb3BlblVSSVdpdGhDYWxsYmFjaycsIF91cmwpXG4gICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IF91cmwubWF0Y2goL14oZGF0YTouKj8pKFxcP1teI1xcc10qKT8kLylcbiAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgdXJsID0gbWF0Y2hlZFsxXVxuICAgICAgICAgICAgY29uc29sZS5sb2coJ29wZW5VUklXaXRoQ2FsbGJhY2sgdXJsJywgdXJsKVxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gbWF0Y2hlZFsyXVxuICAgICAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgICAgICBxdWVyeU9iaiA9IHBhcnNlUXVlcnlTdHJpbmcoc2VhcmNoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmxvZygnb3BlblVSSVdpdGhDYWxsYmFjayBxdWVyeU9iaicsIHF1ZXJ5T2JqKVxuICAgICAgICAgIGNvbnN0IHsgdG9rZW4sIC4uLnJlc3RRdWVyeU9iaiB9ID0gcXVlcnlPYmpcbiAgICAgICAgICBpZiAoL15kYXRhOi8udGVzdCh1cmwpICYmICF0b2tlbikge1xuICAgICAgICAgICAgLy8g5aaC5p6c5pivIGRhdGE6IOW8gOWktOeahCBVUkwg5LiU5rKh5pyJIHRva2Vu77yM5YiZ55u05o6l6L+U5ZueXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qoe1xuICAgICAgICAgICAgICBlcnJvcjogJ2ludmFsaWRfYXJndW1lbnQnLFxuICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogYGludmFsaWUgY2FwdGNoYSBkYXRhOiAke191cmx9YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gICAgICAgICAgICAgIGVycm9yOiAndW5pbXBsZW1lbnRlZCcsXG4gICAgICAgICAgICAgIGVycm9yX2Rlc2NyaXB0aW9uOiAnbmVlZCB0byBpbXBsIGNhcHRjaGEgZGF0YScsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3YWl0IGZvciBjYXB0Y2hhLi4uJylcbiAgICAgICAgICAgIEV2ZW50QnVzLiRlbWl0KCdDQVBUQ0hBX0RBVEFfQ0hBTkdFJywgeyAuLi5yZXN0UXVlcnlPYmosIHRva2VuLCB1cmwgfSlcblxuICAgICAgICAgICAgLy8g55uR5ZCs5LqL5Lu25oC757q/77yM562J5b6F6aqM6K+B56CB5pWw5o2u5Y+Y5YyWXG4gICAgICAgICAgICBFdmVudEJ1cy4kb25jZSgnUkVTT0xWRV9DQVBUQ0hBX0RBVEEnLCAocmVzOiB7IGNhcHRjaGFfdG9rZW46IHN0cmluZzsgZXhwaXJlc19pbjogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbG9jYWxTdG9yYWdlOiB3eE1wU3RvcmFnZSxcbiAgICAgIHByaW1hcnlTdG9yYWdlOiBTdG9yYWdlVHlwZS5sb2NhbCxcbiAgICAgIGdldEFwcFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKVxuICAgICAgICBpZiAoaXNQbHVnaW4oKSkge1xuICAgICAgICAgIC8vIOaPkuS7tueOr+Wig+i/lOWbnuaPkuS7tmFwcGlkXG4gICAgICAgICAgcmV0dXJuIGluZm8gJiYgaW5mby5wbHVnaW4gPyBpbmZvLnBsdWdpbi5hcHBJZCA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZm8gJiYgaW5mby5taW5pUHJvZ3JhbSA/IGluZm8ubWluaVByb2dyYW0uYXBwSWQgOiAnJ1xuICAgICAgfSxcbiAgICB9XG4gICAgcmV0dXJuIGFkYXB0ZXJcbiAgfVxuXG4gIHJldHVybiBhZGFwdGVyRm9yV3hNcFxufVxuIl19