@cloudbase/auth 1.7.1-alpha.0 → 2.0.0-alpha.1

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.
Files changed (51) hide show
  1. package/dist/cjs/index.d.ts +50 -101
  2. package/dist/cjs/index.js +411 -735
  3. package/dist/esm/index.d.ts +50 -101
  4. package/dist/esm/index.js +412 -732
  5. package/package.json +52 -54
  6. package/src/index.ts +408 -726
  7. package/dist/cjs/constants.d.ts +0 -12
  8. package/dist/cjs/constants.js +0 -17
  9. package/dist/cjs/providers/anonymousAuthProvider.d.ts +0 -15
  10. package/dist/cjs/providers/anonymousAuthProvider.js +0 -255
  11. package/dist/cjs/providers/base.d.ts +0 -20
  12. package/dist/cjs/providers/base.js +0 -151
  13. package/dist/cjs/providers/customAuthProvider.d.ts +0 -5
  14. package/dist/cjs/providers/customAuthProvider.js +0 -149
  15. package/dist/cjs/providers/emailAuthProvider.d.ts +0 -9
  16. package/dist/cjs/providers/emailAuthProvider.js +0 -248
  17. package/dist/cjs/providers/oauth2AuthProvider.d.ts +0 -61
  18. package/dist/cjs/providers/oauth2AuthProvider.js +0 -404
  19. package/dist/cjs/providers/phoneAuthProvider.d.ts +0 -17
  20. package/dist/cjs/providers/phoneAuthProvider.js +0 -217
  21. package/dist/cjs/providers/usernameAuthProvider.d.ts +0 -5
  22. package/dist/cjs/providers/usernameAuthProvider.js +0 -168
  23. package/dist/cjs/providers/weixinAuthProvider.d.ts +0 -28
  24. package/dist/cjs/providers/weixinAuthProvider.js +0 -294
  25. package/dist/esm/constants.d.ts +0 -12
  26. package/dist/esm/constants.js +0 -14
  27. package/dist/esm/providers/anonymousAuthProvider.d.ts +0 -15
  28. package/dist/esm/providers/anonymousAuthProvider.js +0 -252
  29. package/dist/esm/providers/base.d.ts +0 -20
  30. package/dist/esm/providers/base.js +0 -148
  31. package/dist/esm/providers/customAuthProvider.d.ts +0 -5
  32. package/dist/esm/providers/customAuthProvider.js +0 -146
  33. package/dist/esm/providers/emailAuthProvider.d.ts +0 -9
  34. package/dist/esm/providers/emailAuthProvider.js +0 -245
  35. package/dist/esm/providers/oauth2AuthProvider.d.ts +0 -61
  36. package/dist/esm/providers/oauth2AuthProvider.js +0 -401
  37. package/dist/esm/providers/phoneAuthProvider.d.ts +0 -17
  38. package/dist/esm/providers/phoneAuthProvider.js +0 -214
  39. package/dist/esm/providers/usernameAuthProvider.d.ts +0 -5
  40. package/dist/esm/providers/usernameAuthProvider.js +0 -165
  41. package/dist/esm/providers/weixinAuthProvider.d.ts +0 -28
  42. package/dist/esm/providers/weixinAuthProvider.js +0 -291
  43. package/src/constants.ts +0 -13
  44. package/src/providers/anonymousAuthProvider.ts +0 -125
  45. package/src/providers/base.ts +0 -66
  46. package/src/providers/customAuthProvider.ts +0 -68
  47. package/src/providers/emailAuthProvider.ts +0 -139
  48. package/src/providers/oauth2AuthProvider.ts +0 -585
  49. package/src/providers/phoneAuthProvider.ts +0 -130
  50. package/src/providers/usernameAuthProvider.ts +0 -76
  51. package/src/providers/weixinAuthProvider.ts +0 -193
@@ -1,294 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
- return c > 3 && r && Object.defineProperty(target, key, r), r;
20
- };
21
- var __metadata = (this && this.__metadata) || function (k, v) {
22
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
23
- };
24
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
25
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
26
- return new (P || (P = Promise))(function (resolve, reject) {
27
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
28
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
29
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
30
- step((generator = generator.apply(thisArg, _arguments || [])).next());
31
- });
32
- };
33
- var __generator = (this && this.__generator) || function (thisArg, body) {
34
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
35
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
36
- function verb(n) { return function (v) { return step([n, v]); }; }
37
- function step(op) {
38
- if (f) throw new TypeError("Generator is already executing.");
39
- while (_) try {
40
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
41
- if (y = 0, t) op = [op[0] & 2, t.value];
42
- switch (op[0]) {
43
- case 0: case 1: t = op; break;
44
- case 4: _.label++; return { value: op[1], done: false };
45
- case 5: _.label++; y = op[1]; op = [0]; continue;
46
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
47
- default:
48
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
49
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
50
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
51
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
52
- if (t[2]) _.ops.pop();
53
- _.trys.pop(); continue;
54
- }
55
- op = body.call(thisArg, _);
56
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
57
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
58
- }
59
- };
60
- Object.defineProperty(exports, "__esModule", { value: true });
61
- exports.WeixinAuthProvider = void 0;
62
- var base_1 = require("./base");
63
- var utilities_1 = require("@cloudbase/utilities/");
64
- var __1 = require("..");
65
- var constants_1 = require("../constants");
66
- var getSdkName = utilities_1.constants.getSdkName, ERRORS = utilities_1.constants.ERRORS, COMMUNITY_SITE_URL = utilities_1.constants.COMMUNITY_SITE_URL;
67
- var RUNTIME = utilities_1.adapters.RUNTIME;
68
- var getQuery = utilities_1.utils.getQuery, getHash = utilities_1.utils.getHash, removeParam = utilities_1.utils.removeParam, printWarn = utilities_1.utils.printWarn;
69
- var catchErrorsDecorator = utilities_1.helpers.catchErrorsDecorator;
70
- var WeixinAuthProvider = (function (_super) {
71
- __extends(WeixinAuthProvider, _super);
72
- function WeixinAuthProvider(config, appid, scope, state) {
73
- var _this = _super.call(this, config) || this;
74
- _this._runtime = config.runtime;
75
- _this._appid = appid;
76
- _this._scope = scope;
77
- _this._state = state || 'weixin';
78
- return _this;
79
- }
80
- WeixinAuthProvider.prototype.signIn = function () {
81
- return __awaiter(this, void 0, void 0, function () {
82
- return __generator(this, function (_a) {
83
- return [2, printWarn(ERRORS.OPERATION_FAIL, 'API signIn has been deprecated, please use signInWithRedirect insteed')];
84
- });
85
- });
86
- };
87
- WeixinAuthProvider.prototype.signInWithRedirect = function () {
88
- return __awaiter(this, void 0, void 0, function () {
89
- return __generator(this, function (_a) {
90
- return [2, this._redirect()];
91
- });
92
- });
93
- };
94
- WeixinAuthProvider.prototype.getRedirectResult = function (options) {
95
- return __awaiter(this, void 0, void 0, function () {
96
- var code;
97
- return __generator(this, function (_a) {
98
- code = getWeixinCode();
99
- if (!code) {
100
- return [2, null];
101
- }
102
- return [2, this._signInWithCode(code, options)];
103
- });
104
- });
105
- };
106
- WeixinAuthProvider.prototype.getLinkRedirectResult = function (options) {
107
- if (options === void 0) { options = {}; }
108
- return __awaiter(this, void 0, void 0, function () {
109
- var _a, withUnionId, code, appid, loginType, hybridMiniapp;
110
- return __generator(this, function (_b) {
111
- _a = options.withUnionId, withUnionId = _a === void 0 ? false : _a;
112
- code = getWeixinCode();
113
- if (!code) {
114
- return [2, null];
115
- }
116
- appid = this._appid;
117
- loginType = (function (scope) {
118
- switch (scope) {
119
- case 'snsapi_login':
120
- return 'WECHAT-OPEN';
121
- default:
122
- return 'WECHAT-PUBLIC';
123
- }
124
- })(this._scope);
125
- hybridMiniapp = this._runtime === RUNTIME.WX_MP ? '1' : '0';
126
- return [2, this._request.send('auth.linkWithWeixinCode', {
127
- payload: {
128
- appid: appid,
129
- loginType: loginType,
130
- code: code,
131
- hybridMiniapp: hybridMiniapp,
132
- withUnionId: withUnionId
133
- }
134
- })];
135
- });
136
- });
137
- };
138
- WeixinAuthProvider.prototype._redirect = function () {
139
- var currUrl = removeParam('code', location.href);
140
- currUrl = removeParam('state', currUrl);
141
- currUrl = encodeURIComponent(currUrl);
142
- var host = '//open.weixin.qq.com/connect/oauth2/authorize';
143
- if (this._scope === 'snsapi_login') {
144
- host = '//open.weixin.qq.com/connect/qrconnect';
145
- }
146
- try {
147
- location.href = host + "?appid=" + this._appid + "&redirect_uri=" + currUrl + "&response_type=code&scope=" + this._scope + "&state=" + this._state + "#wechat_redirect";
148
- }
149
- catch (e) {
150
- throw new Error("[" + getSdkName() + "][" + ERRORS.UNKOWN_ERROR + "]" + e);
151
- }
152
- };
153
- WeixinAuthProvider.prototype._signInWithCode = function (code, options) {
154
- return __awaiter(this, void 0, void 0, function () {
155
- var _a, accessTokenKey, accessTokenExpireKey, refreshTokenKey, loginType, refreshTokenRes, refreshToken, loginState;
156
- return __generator(this, function (_b) {
157
- switch (_b.label) {
158
- case 0:
159
- _a = this._cache.keys, accessTokenKey = _a.accessTokenKey, accessTokenExpireKey = _a.accessTokenExpireKey, refreshTokenKey = _a.refreshTokenKey;
160
- loginType = (function (scope) {
161
- switch (scope) {
162
- case 'snsapi_login':
163
- return 'WECHAT-OPEN';
164
- default:
165
- return 'WECHAT-PUBLIC';
166
- }
167
- })(this._scope);
168
- return [4, this._getRefreshTokenByWXCode(this._appid, loginType, code, options)];
169
- case 1:
170
- refreshTokenRes = _b.sent();
171
- refreshToken = refreshTokenRes.refreshToken;
172
- return [4, this._cache.setStoreAsync(refreshTokenKey, refreshToken)];
173
- case 2:
174
- _b.sent();
175
- if (!refreshTokenRes.accessToken) return [3, 4];
176
- return [4, this._cache.setStoreAsync(accessTokenKey, refreshTokenRes.accessToken)];
177
- case 3:
178
- _b.sent();
179
- _b.label = 4;
180
- case 4:
181
- if (!refreshTokenRes.accessTokenExpire) return [3, 6];
182
- return [4, this._cache.setStoreAsync(accessTokenExpireKey, String(refreshTokenRes.accessTokenExpire + Date.now()))];
183
- case 5:
184
- _b.sent();
185
- _b.label = 6;
186
- case 6:
187
- __1.eventBus.fire(__1.EVENTS.LOGIN_STATE_CHANGED);
188
- __1.eventBus.fire(__1.EVENTS.LOGIN_TYPE_CHANGED, {
189
- env: this._config.env,
190
- loginType: constants_1.LOGINTYPE.WECHAT,
191
- persistence: this._config.persistence
192
- });
193
- return [4, this.refreshUserInfo()];
194
- case 7:
195
- _b.sent();
196
- loginState = new __1.LoginState({
197
- envId: this._config.env,
198
- cache: this._cache,
199
- request: this._request
200
- });
201
- return [4, loginState.checkLocalStateAsync()];
202
- case 8:
203
- _b.sent();
204
- return [2, loginState];
205
- }
206
- });
207
- });
208
- };
209
- WeixinAuthProvider.prototype._getRefreshTokenByWXCode = function (appid, loginType, code, options) {
210
- if (options === void 0) { options = {}; }
211
- return __awaiter(this, void 0, void 0, function () {
212
- var _a, withUnionId, _b, createUser, syncUserInfo, action, hybridMiniapp;
213
- return __generator(this, function (_c) {
214
- _a = options.withUnionId, withUnionId = _a === void 0 ? false : _a, _b = options.createUser, createUser = _b === void 0 ? true : _b;
215
- syncUserInfo = this._scope === 'snsapi_base' ? false : options.syncUserInfo || false;
216
- action = 'auth.signIn';
217
- hybridMiniapp = this._runtime === RUNTIME.WX_MP ? '1' : '0';
218
- return [2, this._request.send(action, {
219
- appid: appid,
220
- loginType: loginType,
221
- hybridMiniapp: hybridMiniapp,
222
- syncUserInfo: syncUserInfo,
223
- loginCredential: code,
224
- withUnionId: withUnionId,
225
- createUser: createUser
226
- }).then(function (res) {
227
- if (res.code) {
228
- throw new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "] failed login via wechat: " + res.code);
229
- }
230
- if (res.refresh_token) {
231
- return {
232
- refreshToken: res.refresh_token,
233
- accessToken: res.access_token,
234
- accessTokenExpire: res.access_token_expire
235
- };
236
- }
237
- else {
238
- throw new Error("[" + getSdkName() + "][" + ERRORS.OPERATION_FAIL + "] action:getJwt not return refreshToken");
239
- }
240
- })];
241
- });
242
- });
243
- };
244
- __decorate([
245
- catchErrorsDecorator({
246
- title: '跳转微信公众号授权失败',
247
- messages: [
248
- '请确认以下各项:',
249
- ' 1 - 调用 auth().weixinAuthProvider().signInWithRedirect() 的语法或参数是否正确',
250
- "\u5982\u679C\u95EE\u9898\u4F9D\u7136\u5B58\u5728\uFF0C\u5EFA\u8BAE\u5230\u5B98\u65B9\u95EE\u7B54\u793E\u533A\u63D0\u95EE\u6216\u5BFB\u627E\u5E2E\u52A9\uFF1A" + COMMUNITY_SITE_URL
251
- ]
252
- }),
253
- __metadata("design:type", Function),
254
- __metadata("design:paramtypes", []),
255
- __metadata("design:returntype", Promise)
256
- ], WeixinAuthProvider.prototype, "signInWithRedirect", null);
257
- __decorate([
258
- catchErrorsDecorator({
259
- title: '微信公众号登录失败',
260
- messages: [
261
- '请确认以下各项:',
262
- ' 1 - 调用 auth().weixinAuthProvider().getRedirectResult() 的语法或参数是否正确',
263
- ' 2 - 当前环境是否开通了微信公众号登录授权',
264
- ' 3 - 微信公众号的 AppId 与 AppSecret 配置是否正确',
265
- "\u5982\u679C\u95EE\u9898\u4F9D\u7136\u5B58\u5728\uFF0C\u5EFA\u8BAE\u5230\u5B98\u65B9\u95EE\u7B54\u793E\u533A\u63D0\u95EE\u6216\u5BFB\u627E\u5E2E\u52A9\uFF1A" + COMMUNITY_SITE_URL
266
- ]
267
- }),
268
- __metadata("design:type", Function),
269
- __metadata("design:paramtypes", [Object]),
270
- __metadata("design:returntype", Promise)
271
- ], WeixinAuthProvider.prototype, "getRedirectResult", null);
272
- __decorate([
273
- catchErrorsDecorator({
274
- title: '获取微信重定向绑定结果',
275
- messages: [
276
- '请确认以下各项:',
277
- ' 1 - 调用 auth().weixinAuthProvider().getLinkRedirectResult() 的语法或参数是否正确',
278
- ' 2 - 当前环境是否开通了微信公众号登录授权',
279
- ' 3 - 微信公众号的 AppId 与 AppSecret 配置是否正确',
280
- "\u5982\u679C\u95EE\u9898\u4F9D\u7136\u5B58\u5728\uFF0C\u5EFA\u8BAE\u5230\u5B98\u65B9\u95EE\u7B54\u793E\u533A\u63D0\u95EE\u6216\u5BFB\u627E\u5E2E\u52A9\uFF1A" + COMMUNITY_SITE_URL
281
- ]
282
- }),
283
- __metadata("design:type", Function),
284
- __metadata("design:paramtypes", [Object]),
285
- __metadata("design:returntype", Promise)
286
- ], WeixinAuthProvider.prototype, "getLinkRedirectResult", null);
287
- return WeixinAuthProvider;
288
- }(base_1.AuthProvider));
289
- exports.WeixinAuthProvider = WeixinAuthProvider;
290
- function getWeixinCode() {
291
- return getQuery('code') || getHash('code');
292
- }
293
- ;
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VpeGluQXV0aFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy93ZWl4aW5BdXRoUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUFzQztBQUl0QyxtREFBMkU7QUFDM0Usd0JBQWtEO0FBQ2xELDBDQUF5QztBQUVqQyxJQUFBLFVBQVUsR0FBaUMscUJBQVMsV0FBMUMsRUFBRSxNQUFNLEdBQXlCLHFCQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUsscUJBQVMsbUJBQWQsQ0FBZTtBQUNyRCxJQUFBLE9BQU8sR0FBSyxvQkFBUSxRQUFiLENBQWM7QUFDckIsSUFBQSxRQUFRLEdBQXNDLGlCQUFLLFNBQTNDLEVBQUUsT0FBTyxHQUE2QixpQkFBSyxRQUFsQyxFQUFFLFdBQVcsR0FBZ0IsaUJBQUssWUFBckIsRUFBRSxTQUFTLEdBQUssaUJBQUssVUFBVixDQUFXO0FBQ3BELElBQUEsb0JBQW9CLEdBQUssbUJBQU8scUJBQVosQ0FBYTtBQUV6QztJQUF3QyxzQ0FBWTtJQU1sRCw0QkFBWSxNQUE2RixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsS0FBYztRQUF2SixZQUNFLGtCQUFNLE1BQU0sQ0FBQyxTQU1kO1FBSkMsS0FBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQy9CLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLFFBQVEsQ0FBQzs7SUFDbEMsQ0FBQztJQUVZLG1DQUFNLEdBQW5COzs7Z0JBQ0UsV0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBQyx1RUFBdUUsQ0FBQyxFQUFDOzs7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ZW50IjpbImltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBJQ2xvdWRiYXNlQXV0aENvbmZpZyB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvYXV0aCc7XG5pbXBvcnQgeyBJQ2xvdWRiYXNlQ2FjaGUgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2NhY2hlJztcbmltcG9ydCB7IElDbG91ZGJhc2VSZXF1ZXN0IH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9yZXF1ZXN0JztcbmltcG9ydCB7IGNvbnN0YW50cywgYWRhcHRlcnMsdXRpbHMsIGhlbHBlcnMgfSBmcm9tICdAY2xvdWRiYXNlL3V0aWxpdGllcy8nO1xuaW1wb3J0IHsgZXZlbnRCdXMsIEVWRU5UUywgTG9naW5TdGF0ZSB9IGZyb20gJy4uJztcbmltcG9ydCB7IExPR0lOVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHsgZ2V0U2RrTmFtZSwgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50cztcbmNvbnN0IHsgUlVOVElNRSB9ID0gYWRhcHRlcnM7XG5jb25zdCB7IGdldFF1ZXJ5LCBnZXRIYXNoLCByZW1vdmVQYXJhbSwgcHJpbnRXYXJuIH0gPSB1dGlscztcbmNvbnN0IHsgY2F0Y2hFcnJvcnNEZWNvcmF0b3IgfSA9IGhlbHBlcnM7XG5cbmV4cG9ydCBjbGFzcyBXZWl4aW5BdXRoUHJvdmlkZXIgZXh0ZW5kcyBBdXRoUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zY29wZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBpZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydW50aW1lOnN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IElDbG91ZGJhc2VBdXRoQ29uZmlnJntjYWNoZTpJQ2xvdWRiYXNlQ2FjaGUscmVxdWVzdDpJQ2xvdWRiYXNlUmVxdWVzdCxydW50aW1lOnN0cmluZ30sIGFwcGlkOiBzdHJpbmcsIHNjb3BlOiBzdHJpbmcsIHN0YXRlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoY29uZmlnKTtcblxuICAgIHRoaXMuX3J1bnRpbWUgPSBjb25maWcucnVudGltZTtcbiAgICB0aGlzLl9hcHBpZCA9IGFwcGlkO1xuICAgIHRoaXMuX3Njb3BlID0gc2NvcGU7XG4gICAgdGhpcy5fc3RhdGUgPSBzdGF0ZSB8fCAnd2VpeGluJztcbiAgfVxuICBcbiAgcHVibGljIGFzeW5jIHNpZ25Jbigpe1xuICAgIHJldHVybiBwcmludFdhcm4oRVJST1JTLk9QRVJBVElPTl9GQUlMLCdBUEkgc2lnbkluIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugc2lnbkluV2l0aFJlZGlyZWN0IGluc3RlZWQnKTtcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIHRpdGxlOiAn6Lez6L2s5b6u5L+h5YWs5LyX5Y+35o6I5p2D5aSx6LSlJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGF1dGgoKS53ZWl4aW5BdXRoUHJvdmlkZXIoKS5zaWduSW5XaXRoUmVkaXJlY3QoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBzaWduSW5XaXRoUmVkaXJlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZGlyZWN0KCk7XG4gIH1cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICB0aXRsZTogJ+W+ruS/oeWFrOS8l+WPt+eZu+W9leWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOiwg+eUqCBhdXRoKCkud2VpeGluQXV0aFByb3ZpZGVyKCkuZ2V0UmVkaXJlY3RSZXN1bHQoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeeOr+Wig+aYr+WQpuW8gOmAmuS6huW+ruS/oeWFrOS8l+WPt+eZu+W9leaOiOadgycsXG4gICAgICAnICAzIC0g5b6u5L+h5YWs5LyX5Y+355qEIEFwcElkIOS4jiBBcHBTZWNyZXQg6YWN572u5piv5ZCm5q2j56GuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBwdWJsaWMgYXN5bmMgZ2V0UmVkaXJlY3RSZXN1bHQob3B0aW9uczp7IHdpdGhVbmlvbklkPzogYm9vbGVhbjsgc3luY1VzZXJJbmZvPzogYm9vbGVhbiB9KSB7XG4gICAgY29uc3QgY29kZSA9IGdldFdlaXhpbkNvZGUoKTtcbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2lnbkluV2l0aENvZGUoY29kZSxvcHRpb25zKTtcbiAgfVxuICBAY2F0Y2hFcnJvcnNEZWNvcmF0b3Ioe1xuICAgIHRpdGxlOiAn6I635Y+W5b6u5L+h6YeN5a6a5ZCR57uR5a6a57uT5p6cJyxcbiAgICBtZXNzYWdlczogW1xuICAgICAgJ+ivt+ehruiupOS7peS4i+WQhOmhue+8micsXG4gICAgICAnICAxIC0g6LCD55SoIGF1dGgoKS53ZWl4aW5BdXRoUHJvdmlkZXIoKS5nZXRMaW5rUmVkaXJlY3RSZXN1bHQoKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgJyAgMiAtIOW9k+WJjeeOr+Wig+aYr+WQpuW8gOmAmuS6huW+ruS/oeWFrOS8l+WPt+eZu+W9leaOiOadgycsXG4gICAgICAnICAzIC0g5b6u5L+h5YWs5LyX5Y+355qEIEFwcElkIOS4jiBBcHBTZWNyZXQg6YWN572u5piv5ZCm5q2j56GuJyxcbiAgICAgIGDlpoLmnpzpl67popjkvp3nhLblrZjlnKjvvIzlu7rorq7liLDlrpjmlrnpl67nrZTnpL7ljLrmj5Dpl67miJblr7vmib7luK7liqnvvJoke0NPTU1VTklUWV9TSVRFX1VSTH1gXG4gICAgXVxuICB9KVxuICBhc3luYyBnZXRMaW5rUmVkaXJlY3RSZXN1bHQob3B0aW9uczogeyB3aXRoVW5pb25JZD86IGJvb2xlYW4gfSA9IHt9KSB7XG4gICAgY29uc3QgeyB3aXRoVW5pb25JZCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGNvZGUgPSBnZXRXZWl4aW5Db2RlKCk7XG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyBfYXBwaWQ6IGFwcGlkIH0gPSB0aGlzO1xuICAgIGNvbnN0IGxvZ2luVHlwZSA9IChzY29wZSA9PiB7XG4gICAgICBzd2l0Y2ggKHNjb3BlKSB7XG4gICAgICAgIGNhc2UgJ3Nuc2FwaV9sb2dpbic6XG4gICAgICAgICAgcmV0dXJuICdXRUNIQVQtT1BFTic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdXRUNIQVQtUFVCTElDJztcbiAgICAgIH1cbiAgICB9KSh0aGlzLl9zY29wZSk7XG4gICAgY29uc3QgaHlicmlkTWluaWFwcCA9IHRoaXMuX3J1bnRpbWUgPT09IFJVTlRJTUUuV1hfTVAgPyAnMScgOiAnMCc7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVlc3Quc2VuZCgnYXV0aC5saW5rV2l0aFdlaXhpbkNvZGUnLCB7IFxuICAgICAgcGF5bG9hZDogeyBcbiAgICAgICAgYXBwaWQsIFxuICAgICAgICBsb2dpblR5cGUsIFxuICAgICAgICBjb2RlLCBcbiAgICAgICAgaHlicmlkTWluaWFwcCwgXG4gICAgICAgIHdpdGhVbmlvbklkXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWRpcmVjdCgpOiBhbnkge1xuICAgIGxldCBjdXJyVXJsID0gcmVtb3ZlUGFyYW0oJ2NvZGUnLCBsb2NhdGlvbi5ocmVmKTtcbiAgICBjdXJyVXJsID0gcmVtb3ZlUGFyYW0oJ3N0YXRlJywgY3VyclVybCk7XG4gICAgY3VyclVybCA9IGVuY29kZVVSSUNvbXBvbmVudChjdXJyVXJsKTtcblxuICAgIGxldCBob3N0ID0gJy8vb3Blbi53ZWl4aW4ucXEuY29tL2Nvbm5lY3Qvb2F1dGgyL2F1dGhvcml6ZSc7XG4gICAgaWYgKHRoaXMuX3Njb3BlID09PSAnc25zYXBpX2xvZ2luJykge1xuICAgICAgaG9zdCA9ICcvL29wZW4ud2VpeGluLnFxLmNvbS9jb25uZWN0L3FyY29ubmVjdCc7XG4gICAgfVxuICAgIHRyeXtcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBgJHtob3N0fT9hcHBpZD0ke3RoaXMuX2FwcGlkfSZyZWRpcmVjdF91cmk9JHtjdXJyVXJsfSZyZXNwb25zZV90eXBlPWNvZGUmc2NvcGU9JHt0aGlzLl9zY29wZX0mc3RhdGU9JHt0aGlzLl9zdGF0ZX0jd2VjaGF0X3JlZGlyZWN0YDtcbiAgICB9Y2F0Y2goZSl7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFske2dldFNka05hbWUoKX1dWyR7RVJST1JTLlVOS09XTl9FUlJPUn1dJHtlfWApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2lnbkluV2l0aENvZGUoY29kZTpzdHJpbmcsb3B0aW9ucykge1xuICAgIGNvbnN0IHsgYWNjZXNzVG9rZW5LZXksIGFjY2Vzc1Rva2VuRXhwaXJlS2V5LCByZWZyZXNoVG9rZW5LZXkgfSA9IHRoaXMuX2NhY2hlLmtleXM7XG4gICAgLy8g5pyJY29kZe+8jOeUqGNvZGXmjaJyZWZyZXNoIHRva2VuXG4gICAgY29uc3QgbG9naW5UeXBlID0gKHNjb3BlID0+IHtcbiAgICAgIHN3aXRjaCAoc2NvcGUpIHtcbiAgICAgICAgY2FzZSAnc25zYXBpX2xvZ2luJzpcbiAgICAgICAgICByZXR1cm4gJ1dFQ0hBVC1PUEVOJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ1dFQ0hBVC1QVUJMSUMnO1xuICAgICAgfVxuICAgIH0pKHRoaXMuX3Njb3BlKTtcblxuICAgIGNvbnN0IHJlZnJlc2hUb2tlblJlcyA9IGF3YWl0IHRoaXMuX2dldFJlZnJlc2hUb2tlbkJ5V1hDb2RlKHRoaXMuX2FwcGlkLCBsb2dpblR5cGUsIGNvZGUsb3B0aW9ucyk7XG4gICAgY29uc3QgeyByZWZyZXNoVG9rZW4gfSA9IHJlZnJlc2hUb2tlblJlcztcblxuICAgIC8vIOacrOWcsOWtmOS4i1xuICAgIGF3YWl0IHRoaXMuX2NhY2hlLnNldFN0b3JlQXN5bmMocmVmcmVzaFRva2VuS2V5LCByZWZyZXNoVG9rZW4pO1xuICAgIGlmIChyZWZyZXNoVG9rZW5SZXMuYWNjZXNzVG9rZW4pIHtcbiAgICAgIGF3YWl0IHRoaXMuX2NhY2hlLnNldFN0b3JlQXN5bmMoYWNjZXNzVG9rZW5LZXksIHJlZnJlc2hUb2tlblJlcy5hY2Nlc3NUb2tlbik7XG4gICAgfVxuICAgIGlmIChyZWZyZXNoVG9rZW5SZXMuYWNjZXNzVG9rZW5FeHBpcmUpIHtcbiAgICAgIGF3YWl0IHRoaXMuX2NhY2hlLnNldFN0b3JlQXN5bmMoYWNjZXNzVG9rZW5FeHBpcmVLZXksIFN0cmluZyhyZWZyZXNoVG9rZW5SZXMuYWNjZXNzVG9rZW5FeHBpcmUgKyBEYXRlLm5vdygpKSk7XG4gICAgfVxuICAgIGV2ZW50QnVzLmZpcmUoRVZFTlRTLkxPR0lOX1NUQVRFX0NIQU5HRUQpO1xuICAgIC8vIOaKm+WHuueZu+W9leexu+Wei+abtOaUueS6i+S7tlxuICAgIGV2ZW50QnVzLmZpcmUoRVZFTlRTLkxPR0lOX1RZUEVfQ0hBTkdFRCwgeyBcbiAgICAgIGVudjogdGhpcy5fY29uZmlnLmVudixcbiAgICAgIGxvZ2luVHlwZTogTE9HSU5UWVBFLldFQ0hBVCwgXG4gICAgICBwZXJzaXN0ZW5jZTogdGhpcy5fY29uZmlnLnBlcnNpc3RlbmNlIFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMucmVmcmVzaFVzZXJJbmZvKCk7XG4gICAgY29uc3QgbG9naW5TdGF0ZSA9IG5ldyBMb2dpblN0YXRlKHtcbiAgICAgIGVudklkOiB0aGlzLl9jb25maWcuZW52LFxuICAgICAgY2FjaGU6IHRoaXMuX2NhY2hlLFxuICAgICAgcmVxdWVzdDogdGhpcy5fcmVxdWVzdFxuICAgIH0pO1xuICAgIGF3YWl0IGxvZ2luU3RhdGUuY2hlY2tMb2NhbFN0YXRlQXN5bmMoKTtcbiAgICBcbiAgICByZXR1cm4gbG9naW5TdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2dldFJlZnJlc2hUb2tlbkJ5V1hDb2RlKFxuICAgIGFwcGlkOiBzdHJpbmcsIFxuICAgIGxvZ2luVHlwZTogc3RyaW5nLCBcbiAgICBjb2RlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogYW55ID0ge31cbiAgKTogUHJvbWlzZTx7IHJlZnJlc2hUb2tlbjogc3RyaW5nOyBhY2Nlc3NUb2tlbjogc3RyaW5nOyBhY2Nlc3NUb2tlbkV4cGlyZTogbnVtYmVyIH0+IHtcbiAgICBjb25zdCB7IHdpdGhVbmlvbklkID0gZmFsc2UsIGNyZWF0ZVVzZXIgPSB0cnVlIH0gPSBvcHRpb25zO1xuICAgIC8vIHNuc2FwaV91c2VyaW5mbyDlkowgc25zYXBpX2xvZ2luIOaJjeWPr+S7peiOt+WPlueUqOaIt+eahOW+ruS/oeS/oeaBr1xuICAgIGNvbnN0IHN5bmNVc2VySW5mbyA9IHRoaXMuX3Njb3BlID09PSAnc25zYXBpX2Jhc2UnID8gZmFsc2UgOiBvcHRpb25zLnN5bmNVc2VySW5mbyB8fCBmYWxzZTtcblxuICAgIGNvbnN0IGFjdGlvbiA9ICdhdXRoLnNpZ25Jbic7XG4gICAgY29uc3QgaHlicmlkTWluaWFwcCA9IHRoaXMuX3J1bnRpbWUgPT09IFJVTlRJTUUuV1hfTVAgPyAnMScgOiAnMCc7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVlc3Quc2VuZChhY3Rpb24sIHsgXG4gICAgICBhcHBpZCwgXG4gICAgICBsb2dpblR5cGUsIFxuICAgICAgaHlicmlkTWluaWFwcCxcbiAgICAgIHN5bmNVc2VySW5mbyxcbiAgICAgIGxvZ2luQ3JlZGVudGlhbDogY29kZSxcbiAgICAgIHdpdGhVbmlvbklkLFxuICAgICAgY3JlYXRlVXNlclxuICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgIGlmIChyZXMuY29kZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFske2dldFNka05hbWUoKX1dWyR7RVJST1JTLk9QRVJBVElPTl9GQUlMfV0gZmFpbGVkIGxvZ2luIHZpYSB3ZWNoYXQ6ICR7cmVzLmNvZGV9YCk7XG4gICAgICB9XG4gICAgICBpZiAocmVzLnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZWZyZXNoVG9rZW46IHJlcy5yZWZyZXNoX3Rva2VuLFxuICAgICAgICAgIGFjY2Vzc1Rva2VuOiByZXMuYWNjZXNzX3Rva2VuLFxuICAgICAgICAgIGFjY2Vzc1Rva2VuRXhwaXJlOiByZXMuYWNjZXNzX3Rva2VuX2V4cGlyZVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBbJHtnZXRTZGtOYW1lKCl9XVske0VSUk9SUy5PUEVSQVRJT05fRkFJTH1dIGFjdGlvbjpnZXRKd3Qgbm90IHJldHVybiByZWZyZXNoVG9rZW5gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRXZWl4aW5Db2RlICgpIHtcbiAgcmV0dXJuIGdldFF1ZXJ5KCdjb2RlJykgfHwgZ2V0SGFzaCgnY29kZScpO1xufTsiXX0=
@@ -1,12 +0,0 @@
1
- export declare enum LOGINTYPE {
2
- ANONYMOUS = "ANONYMOUS",
3
- WECHAT = "WECHAT",
4
- WECHAT_PUBLIC = "WECHAT-PUBLIC",
5
- WECHAT_OPEN = "WECHAT-OPEN",
6
- CUSTOM = "CUSTOM",
7
- EMAIL = "EMAIL",
8
- USERNAME = "USERNAME",
9
- NULL = "NULL",
10
- PHONE = "PHONE"
11
- }
12
- export declare const OAUTH2_LOGINTYPE_PREFIX = "OAUTH2";
@@ -1,14 +0,0 @@
1
- export var LOGINTYPE;
2
- (function (LOGINTYPE) {
3
- LOGINTYPE["ANONYMOUS"] = "ANONYMOUS";
4
- LOGINTYPE["WECHAT"] = "WECHAT";
5
- LOGINTYPE["WECHAT_PUBLIC"] = "WECHAT-PUBLIC";
6
- LOGINTYPE["WECHAT_OPEN"] = "WECHAT-OPEN";
7
- LOGINTYPE["CUSTOM"] = "CUSTOM";
8
- LOGINTYPE["EMAIL"] = "EMAIL";
9
- LOGINTYPE["USERNAME"] = "USERNAME";
10
- LOGINTYPE["NULL"] = "NULL";
11
- LOGINTYPE["PHONE"] = "PHONE";
12
- })(LOGINTYPE || (LOGINTYPE = {}));
13
- export var OAUTH2_LOGINTYPE_PREFIX = 'OAUTH2';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25CLG9DQUF1QixDQUFBO0lBQ3ZCLDhCQUFpQixDQUFBO0lBQ2pCLDRDQUErQixDQUFBO0lBQy9CLHdDQUEyQixDQUFBO0lBQzNCLDhCQUFpQixDQUFBO0lBQ2pCLDRCQUFlLENBQUE7SUFDZixrQ0FBcUIsQ0FBQTtJQUNyQiwwQkFBYSxDQUFBO0lBQ2IsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcsU0FBUyxLQUFULFNBQVMsUUFVcEI7QUFFRCxNQUFNLENBQUMsSUFBTSx1QkFBdUIsR0FBRyxRQUFRLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBMT0dJTlRZUEUge1xuICBBTk9OWU1PVVMgPSAnQU5PTllNT1VTJyxcbiAgV0VDSEFUID0gJ1dFQ0hBVCcsXG4gIFdFQ0hBVF9QVUJMSUMgPSAnV0VDSEFULVBVQkxJQycsXG4gIFdFQ0hBVF9PUEVOID0gJ1dFQ0hBVC1PUEVOJyxcbiAgQ1VTVE9NID0gJ0NVU1RPTScsXG4gIEVNQUlMID0gJ0VNQUlMJyxcbiAgVVNFUk5BTUUgPSAnVVNFUk5BTUUnLFxuICBOVUxMID0gJ05VTEwnLFxuICBQSE9ORSA9ICdQSE9ORSdcbn1cblxuZXhwb3J0IGNvbnN0IE9BVVRIMl9MT0dJTlRZUEVfUFJFRklYID0gJ09BVVRIMidcbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { AuthProvider } from './base';
2
- import { ICloudbaseAuthConfig, ILoginState } from '@cloudbase/types/auth';
3
- import { ICloudbaseCache } from '@cloudbase/types/cache';
4
- import { ICloudbaseRequest } from '@cloudbase/types/request';
5
- export declare class AnonymousAuthProvider extends AuthProvider {
6
- constructor(config: ICloudbaseAuthConfig & {
7
- cache: ICloudbaseCache;
8
- request: ICloudbaseRequest;
9
- });
10
- signIn(): Promise<ILoginState>;
11
- linkAndRetrieveDataWithTicket(ticket: string): Promise<ILoginState>;
12
- private _setAnonymousUUID;
13
- private _clearAnonymousUUID;
14
- private _onConverted;
15
- }
@@ -1,252 +0,0 @@
1
- var __extends = (this && this.__extends) || (function () {
2
- var extendStatics = function (d, b) {
3
- extendStatics = Object.setPrototypeOf ||
4
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
- return extendStatics(d, b);
7
- };
8
- return function (d, b) {
9
- extendStatics(d, b);
10
- function __() { this.constructor = d; }
11
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
- };
13
- })();
14
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- };
20
- var __metadata = (this && this.__metadata) || function (k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
- };
23
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
24
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
25
- return new (P || (P = Promise))(function (resolve, reject) {
26
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
27
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
28
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
29
- step((generator = generator.apply(thisArg, _arguments || [])).next());
30
- });
31
- };
32
- var __generator = (this && this.__generator) || function (thisArg, body) {
33
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
34
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
35
- function verb(n) { return function (v) { return step([n, v]); }; }
36
- function step(op) {
37
- if (f) throw new TypeError("Generator is already executing.");
38
- while (_) try {
39
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
40
- if (y = 0, t) op = [op[0] & 2, t.value];
41
- switch (op[0]) {
42
- case 0: case 1: t = op; break;
43
- case 4: _.label++; return { value: op[1], done: false };
44
- case 5: _.label++; y = op[1]; op = [0]; continue;
45
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
46
- default:
47
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
48
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
49
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
50
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
51
- if (t[2]) _.ops.pop();
52
- _.trys.pop(); continue;
53
- }
54
- op = body.call(thisArg, _);
55
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
56
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
57
- }
58
- };
59
- import { AuthProvider } from './base';
60
- import { constants, utils, helpers, events } from '@cloudbase/utilities';
61
- import { LOGINTYPE } from '../constants';
62
- import { EVENTS, eventBus, LoginState } from '..';
63
- var ERRORS = constants.ERRORS, COMMUNITY_SITE_URL = constants.COMMUNITY_SITE_URL;
64
- var throwError = utils.throwError, isString = utils.isString;
65
- var addEventListener = events.addEventListener;
66
- var catchErrorsDecorator = helpers.catchErrorsDecorator;
67
- var AnonymousAuthProvider = (function (_super) {
68
- __extends(AnonymousAuthProvider, _super);
69
- function AnonymousAuthProvider(config) {
70
- var _this = _super.call(this, config) || this;
71
- _this._onConverted = _this._onConverted.bind(_this);
72
- addEventListener(EVENTS.ANONYMOUS_CONVERTED, _this._onConverted);
73
- return _this;
74
- }
75
- AnonymousAuthProvider.prototype.signIn = function () {
76
- return __awaiter(this, void 0, void 0, function () {
77
- var _a, anonymousUuidKey, refreshTokenKey, anonymous_uuid, refresh_token, res, loginState;
78
- return __generator(this, function (_b) {
79
- switch (_b.label) {
80
- case 0: return [4, this._cache.updatePersistenceAsync('local')];
81
- case 1:
82
- _b.sent();
83
- _a = this._cache.keys, anonymousUuidKey = _a.anonymousUuidKey, refreshTokenKey = _a.refreshTokenKey;
84
- return [4, this._cache.getStoreAsync(anonymousUuidKey)];
85
- case 2:
86
- anonymous_uuid = _b.sent();
87
- return [4, this._cache.getStoreAsync(refreshTokenKey)];
88
- case 3:
89
- refresh_token = _b.sent();
90
- return [4, this._request.send('auth.signInAnonymously', {
91
- anonymous_uuid: anonymous_uuid,
92
- refresh_token: refresh_token
93
- })];
94
- case 4:
95
- res = _b.sent();
96
- if (!(res.uuid && res.refresh_token)) return [3, 10];
97
- return [4, this._setAnonymousUUID(res.uuid)];
98
- case 5:
99
- _b.sent();
100
- return [4, this.setRefreshToken(res.refresh_token)];
101
- case 6:
102
- _b.sent();
103
- return [4, this._request.refreshAccessToken()];
104
- case 7:
105
- _b.sent();
106
- eventBus.fire(EVENTS.LOGIN_TYPE_CHANGED, {
107
- env: this._config.env,
108
- loginType: LOGINTYPE.ANONYMOUS,
109
- persistence: 'local'
110
- });
111
- eventBus.fire(EVENTS.LOGIN_STATE_CHANGED);
112
- loginState = new LoginState({
113
- envId: this._config.env,
114
- cache: this._cache,
115
- request: this._request
116
- });
117
- return [4, loginState.checkLocalStateAsync()];
118
- case 8:
119
- _b.sent();
120
- return [4, loginState.user.refresh()];
121
- case 9:
122
- _b.sent();
123
- return [2, loginState];
124
- case 10: throw new Error(JSON.stringify({
125
- code: ERRORS.OPERATION_FAIL,
126
- msg: JSON.stringify(res) || 'anonymous signIn failed'
127
- }));
128
- }
129
- });
130
- });
131
- };
132
- AnonymousAuthProvider.prototype.linkAndRetrieveDataWithTicket = function (ticket) {
133
- return __awaiter(this, void 0, void 0, function () {
134
- var _a, anonymousUuidKey, refreshTokenKey, anonymous_uuid, refresh_token, res, loginState;
135
- return __generator(this, function (_b) {
136
- switch (_b.label) {
137
- case 0:
138
- if (!isString(ticket)) {
139
- throwError(ERRORS.INVALID_PARAMS, 'ticket must be a string');
140
- }
141
- _a = this._cache.keys, anonymousUuidKey = _a.anonymousUuidKey, refreshTokenKey = _a.refreshTokenKey;
142
- return [4, this._cache.getStoreAsync(anonymousUuidKey)];
143
- case 1:
144
- anonymous_uuid = _b.sent();
145
- return [4, this._cache.getStoreAsync(refreshTokenKey)];
146
- case 2:
147
- refresh_token = _b.sent();
148
- return [4, this._request.send('auth.linkAndRetrieveDataWithTicket', {
149
- anonymous_uuid: anonymous_uuid,
150
- refresh_token: refresh_token,
151
- ticket: ticket
152
- })];
153
- case 3:
154
- res = _b.sent();
155
- if (!res.refresh_token) return [3, 8];
156
- return [4, this._clearAnonymousUUID()];
157
- case 4:
158
- _b.sent();
159
- return [4, this.setRefreshToken(res.refresh_token)];
160
- case 5:
161
- _b.sent();
162
- return [4, this._request.refreshAccessToken()];
163
- case 6:
164
- _b.sent();
165
- eventBus.fire(EVENTS.ANONYMOUS_CONVERTED, { env: this._config.env });
166
- eventBus.fire(EVENTS.LOGIN_TYPE_CHANGED, { loginType: LOGINTYPE.CUSTOM, persistence: 'local' });
167
- loginState = new LoginState({
168
- envId: this._config.env,
169
- cache: this._cache,
170
- request: this._request
171
- });
172
- return [4, loginState.checkLocalStateAsync()];
173
- case 7:
174
- _b.sent();
175
- return [2, loginState];
176
- case 8:
177
- throwError(ERRORS.OPERATION_FAIL, JSON.stringify(res) || 'linkAndRetrieveDataWithTicket failed');
178
- _b.label = 9;
179
- case 9: return [2];
180
- }
181
- });
182
- });
183
- };
184
- AnonymousAuthProvider.prototype._setAnonymousUUID = function (id) {
185
- return __awaiter(this, void 0, void 0, function () {
186
- var _a, anonymousUuidKey, loginTypeKey;
187
- return __generator(this, function (_b) {
188
- switch (_b.label) {
189
- case 0:
190
- _a = this._cache.keys, anonymousUuidKey = _a.anonymousUuidKey, loginTypeKey = _a.loginTypeKey;
191
- return [4, this._cache.removeStoreAsync(anonymousUuidKey)];
192
- case 1:
193
- _b.sent();
194
- return [4, this._cache.setStoreAsync(anonymousUuidKey, id)];
195
- case 2:
196
- _b.sent();
197
- return [4, this._cache.setStoreAsync(loginTypeKey, LOGINTYPE.ANONYMOUS)];
198
- case 3:
199
- _b.sent();
200
- return [2];
201
- }
202
- });
203
- });
204
- };
205
- AnonymousAuthProvider.prototype._clearAnonymousUUID = function () {
206
- return __awaiter(this, void 0, void 0, function () {
207
- return __generator(this, function (_a) {
208
- switch (_a.label) {
209
- case 0: return [4, this._cache.removeStoreAsync(this._cache.keys.anonymousUuidKey)];
210
- case 1:
211
- _a.sent();
212
- return [2];
213
- }
214
- });
215
- });
216
- };
217
- AnonymousAuthProvider.prototype._onConverted = function (ev) {
218
- return __awaiter(this, void 0, void 0, function () {
219
- var env;
220
- return __generator(this, function (_a) {
221
- switch (_a.label) {
222
- case 0:
223
- env = ev.data.env;
224
- if (env !== this._config.env) {
225
- return [2];
226
- }
227
- return [4, this._cache.updatePersistenceAsync(this._config.persistence)];
228
- case 1:
229
- _a.sent();
230
- return [2];
231
- }
232
- });
233
- });
234
- };
235
- __decorate([
236
- catchErrorsDecorator({
237
- title: '匿名登录失败',
238
- messages: [
239
- '请确认以下各项:',
240
- ' 1 - 当前环境是否开启了匿名登录',
241
- ' 2 - 调用 auth().anonymouseProvider().signIn() 的语法或参数是否正确',
242
- "\u5982\u679C\u95EE\u9898\u4F9D\u7136\u5B58\u5728\uFF0C\u5EFA\u8BAE\u5230\u5B98\u65B9\u95EE\u7B54\u793E\u533A\u63D0\u95EE\u6216\u5BFB\u627E\u5E2E\u52A9\uFF1A" + COMMUNITY_SITE_URL
243
- ]
244
- }),
245
- __metadata("design:type", Function),
246
- __metadata("design:paramtypes", []),
247
- __metadata("design:returntype", Promise)
248
- ], AnonymousAuthProvider.prototype, "signIn", null);
249
- return AnonymousAuthProvider;
250
- }(AuthProvider));
251
- export { AnonymousAuthProvider };
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5vbnltb3VzQXV0aFByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9hbm9ueW1vdXNBdXRoUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRTFDLElBQUEsTUFBTSxHQUF5QixTQUFTLE9BQWxDLEVBQUUsa0JBQWtCLEdBQUssU0FBUyxtQkFBZCxDQUFlO0FBQ3pDLElBQUEsVUFBVSxHQUFlLEtBQUssV0FBcEIsRUFBRSxRQUFRLEdBQUssS0FBSyxTQUFWLENBQVc7QUFDL0IsSUFBQSxnQkFBZ0IsR0FBSyxNQUFNLGlCQUFYLENBQVk7QUFDNUIsSUFBQSxvQkFBb0IsR0FBSyxPQUFPLHFCQUFaLENBQWE7QUFFekM7SUFBMkMseUNBQVk7SUFDckQsK0JBQVksTUFBNkU7UUFBekYsWUFDRSxrQkFBTSxNQUFNLENBQUMsU0FLZDtRQUhDLEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLENBQUM7UUFFakQsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzs7SUFDbEUsQ0FBQztJQVdZLHNDQUFNLEdBQW5COzs7Ozs0QkFFRSxXQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNC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Ozt1REF5Q0Q7SUFxREgsNEJBQUM7Q0FBQSxBQS9HRCxDQUEyQyxZQUFZLEdBK0d0RDtTQS9HWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgSUNsb3VkYmFzZUF1dGhDb25maWcsIElMb2dpblN0YXRlIH0gZnJvbSAnQGNsb3VkYmFzZS90eXBlcy9hdXRoJztcbmltcG9ydCB7IGNvbnN0YW50cywgdXRpbHMsIGhlbHBlcnMsIGV2ZW50cyB9IGZyb20gJ0BjbG91ZGJhc2UvdXRpbGl0aWVzJztcbmltcG9ydCB7IElDbG91ZGJhc2VDYWNoZSB9IGZyb20gJ0BjbG91ZGJhc2UvdHlwZXMvY2FjaGUnO1xuaW1wb3J0IHsgSUNsb3VkYmFzZVJlcXVlc3QgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL3JlcXVlc3QnO1xuaW1wb3J0IHsgTE9HSU5UWVBFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEVWRU5UUywgZXZlbnRCdXMsIExvZ2luU3RhdGUgfSBmcm9tICcuLic7XG5cbmNvbnN0IHsgRVJST1JTLCBDT01NVU5JVFlfU0lURV9VUkwgfSA9IGNvbnN0YW50cztcbmNvbnN0IHsgdGhyb3dFcnJvciwgaXNTdHJpbmcgfSA9IHV0aWxzO1xuY29uc3QgeyBhZGRFdmVudExpc3RlbmVyIH0gPSBldmVudHM7XG5jb25zdCB7IGNhdGNoRXJyb3JzRGVjb3JhdG9yIH0gPSBoZWxwZXJzO1xuXG5leHBvcnQgY2xhc3MgQW5vbnltb3VzQXV0aFByb3ZpZGVyIGV4dGVuZHMgQXV0aFByb3ZpZGVyIHtcbiAgY29uc3RydWN0b3IoY29uZmlnOklDbG91ZGJhc2VBdXRoQ29uZmlnJntjYWNoZTpJQ2xvdWRiYXNlQ2FjaGUscmVxdWVzdDpJQ2xvdWRiYXNlUmVxdWVzdH0pe1xuICAgIHN1cGVyKGNvbmZpZyk7XG5cbiAgICB0aGlzLl9vbkNvbnZlcnRlZCA9IHRoaXMuX29uQ29udmVydGVkLmJpbmQodGhpcyk7XG4gICAgLy8g55uR5ZCs6L2s5q2j5LqL5Lu2XG4gICAgYWRkRXZlbnRMaXN0ZW5lcihFVkVOVFMuQU5PTllNT1VTX0NPTlZFUlRFRCwgdGhpcy5fb25Db252ZXJ0ZWQpO1xuICB9XG5cbiAgQGNhdGNoRXJyb3JzRGVjb3JhdG9yKHtcbiAgICB0aXRsZTogJ+WMv+WQjeeZu+W9leWksei0pScsXG4gICAgbWVzc2FnZXM6IFtcbiAgICAgICfor7fnoa7orqTku6XkuIvlkITpobnvvJonLFxuICAgICAgJyAgMSAtIOW9k+WJjeeOr+Wig+aYr+WQpuW8gOWQr+S6huWMv+WQjeeZu+W9lScsXG4gICAgICAnICAyIC0g6LCD55SoIGF1dGgoKS5hbm9ueW1vdXNlUHJvdmlkZXIoKS5zaWduSW4oKSDnmoTor63ms5XmiJblj4LmlbDmmK/lkKbmraPnoa4nLFxuICAgICAgYOWmguaenOmXrumimOS+neeEtuWtmOWcqO+8jOW7uuiuruWIsOWumOaWuemXruetlOekvuWMuuaPkOmXruaIluWvu+aJvuW4ruWKqe+8miR7Q09NTVVOSVRZX1NJVEVfVVJMfWBcbiAgICBdXG4gIH0pXG4gIHB1YmxpYyBhc3luYyBzaWduSW4oKTpQcm9taXNlPElMb2dpblN0YXRlPiB7XG4gICAgLy8g5Yy/5ZCN55m75b2V5YmN6L+B56e7Y2FjaGXliLBsb2NhbHN0b3JhZ2VcbiAgICBhd2FpdCB0aGlzLl9jYWNoZS51cGRhdGVQZXJzaXN0ZW5jZUFzeW5jKCdsb2NhbCcpO1xuICAgIGNvbnN0IHsgYW5vbnltb3VzVXVpZEtleSwgcmVmcmVzaFRva2VuS2V5IH0gPSB0aGlzLl9jYWNoZS5rZXlzO1xuICAgIC8vIOWmguaenOacrOWcsOWtmOaciXVpZOWImeWMv+WQjeeZu+W9leaXtuS8oOe7mXNlcnZlclxuICAgIGNvbnN0IGFub255bW91c191dWlkID0gYXdhaXQgdGhpcy5fY2FjaGUuZ2V0U3RvcmVBc3luYyhhbm9ueW1vdXNVdWlkS2V5KTtcbiAgICAvLyDmraTlpIRjYWNoZeS4uuWfuuexu3Byb3BlcnR5XG4gICAgY29uc3QgcmVmcmVzaF90b2tlbiA9IGF3YWl0IHRoaXMuX2NhY2hlLmdldFN0b3JlQXN5bmMocmVmcmVzaFRva2VuS2V5KTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuX3JlcXVlc3Quc2VuZCgnYXV0aC5zaWduSW5Bbm9ueW1vdXNseScsIHtcbiAgICAgIGFub255bW91c191dWlkLFxuICAgICAgcmVmcmVzaF90b2tlblxuICAgIH0pO1xuICAgIGlmIChyZXMudXVpZCAmJiByZXMucmVmcmVzaF90b2tlbikge1xuICAgICAgYXdhaXQgdGhpcy5fc2V0QW5vbnltb3VzVVVJRChyZXMudXVpZCk7XG4gICAgICBhd2FpdCB0aGlzLnNldFJlZnJlc2hUb2tlbihyZXMucmVmcmVzaF90b2tlbik7XG4gICAgICBhd2FpdCB0aGlzLl9yZXF1ZXN0LnJlZnJlc2hBY2Nlc3NUb2tlbigpO1xuXG4gICAgICBldmVudEJ1cy5maXJlKEVWRU5UUy5MT0dJTl9UWVBFX0NIQU5HRUQsIHtcbiAgICAgICAgZW52OiB0aGlzLl9jb25maWcuZW52LFxuICAgICAgICBsb2dpblR5cGU6IExPR0lOVFlQRS5BTk9OWU1PVVMsXG4gICAgICAgIHBlcnNpc3RlbmNlOiAnbG9jYWwnXG4gICAgICB9KTtcblxuICAgICAgZXZlbnRCdXMuZmlyZShFVkVOVFMuTE9HSU5fU1RBVEVfQ0hBTkdFRCk7XG5cbiAgICAgIGNvbnN0IGxvZ2luU3RhdGUgPSBuZXcgTG9naW5TdGF0ZSh7XG4gICAgICAgIGVudklkOiB0aGlzLl9jb25maWcuZW52LFxuICAgICAgICBjYWNoZTogdGhpcy5fY2FjaGUsXG4gICAgICAgIHJlcXVlc3Q6IHRoaXMuX3JlcXVlc3RcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgbG9naW5TdGF0ZS5jaGVja0xvY2FsU3RhdGVBc3luYygpO1xuICAgICAgYXdhaXQgbG9naW5TdGF0ZS51c2VyLnJlZnJlc2goKTtcbiAgICAgIHJldHVybiBsb2dpblN0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjb2RlOiBFUlJPUlMuT1BFUkFUSU9OX0ZBSUwsXG4gICAgICAgIG1zZzogSlNPTi5zdHJpbmdpZnkocmVzKXx8J2Fub255bW91cyBzaWduSW4gZmFpbGVkJ1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog5Yy/5ZCN6L2s5q2jXG4gICAqIEBwYXJhbSB0aWNrZXQgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlua0FuZFJldHJpZXZlRGF0YVdpdGhUaWNrZXQodGlja2V0OiBzdHJpbmcpOlByb21pc2U8SUxvZ2luU3RhdGU+IHtcbiAgICBpZighaXNTdHJpbmcodGlja2V0KSl7XG4gICAgICB0aHJvd0Vycm9yKEVSUk9SUy5JTlZBTElEX1BBUkFNUywndGlja2V0IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgICB9XG4gICAgY29uc3QgeyBhbm9ueW1vdXNVdWlkS2V5LCByZWZyZXNoVG9rZW5LZXkgfSA9IHRoaXMuX2NhY2hlLmtleXM7XG4gICAgY29uc3QgYW5vbnltb3VzX3V1aWQgPSBhd2FpdCB0aGlzLl9jYWNoZS5nZXRTdG9yZUFzeW5jKGFub255bW91c1V1aWRLZXkpO1xuICAgIGNvbnN0IHJlZnJlc2hfdG9rZW4gPSBhd2FpdCB0aGlzLl9jYWNoZS5nZXRTdG9yZUFzeW5jKHJlZnJlc2hUb2tlbktleSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5fcmVxdWVzdC5zZW5kKCdhdXRoLmxpbmtBbmRSZXRyaWV2ZURhdGFXaXRoVGlja2V0Jywge1xuICAgICAgYW5vbnltb3VzX3V1aWQsXG4gICAgICByZWZyZXNoX3Rva2VuLFxuICAgICAgdGlja2V0XG4gICAgfSk7XG4gICAgaWYgKHJlcy5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICAvLyDovazmraPlkI7muIXpmaTmnKzlnLDkv53lrZjnmoTljL/lkI11dWlkXG4gICAgICBhd2FpdCB0aGlzLl9jbGVhckFub255bW91c1VVSUQoKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0UmVmcmVzaFRva2VuKHJlcy5yZWZyZXNoX3Rva2VuKTtcbiAgICAgIGF3YWl0IHRoaXMuX3JlcXVlc3QucmVmcmVzaEFjY2Vzc1Rva2VuKCk7XG4gICAgICBldmVudEJ1cy5maXJlKEVWRU5UUy5BTk9OWU1PVVNfQ09OVkVSVEVELCB7IGVudjogdGhpcy5fY29uZmlnLmVudiB9KTtcbiAgICAgIGV2ZW50QnVzLmZpcmUoRVZFTlRTLkxPR0lOX1RZUEVfQ0hBTkdFRCwgeyBsb2dpblR5cGU6IExPR0lOVFlQRS5DVVNUT00sIHBlcnNpc3RlbmNlOiAnbG9jYWwnIH0pO1xuICAgICAgY29uc3QgbG9naW5TdGF0ZSA9IG5ldyBMb2dpblN0YXRlKHtcbiAgICAgICAgZW52SWQ6IHRoaXMuX2NvbmZpZy5lbnYsXG4gICAgICAgIGNhY2hlOiB0aGlzLl9jYWNoZSxcbiAgICAgICAgcmVxdWVzdDogdGhpcy5fcmVxdWVzdFxuICAgICAgfSk7XG4gICAgICBhd2FpdCBsb2dpblN0YXRlLmNoZWNrTG9jYWxTdGF0ZUFzeW5jKCk7XG4gICAgICBcbiAgICAgIHJldHVybiBsb2dpblN0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKEVSUk9SUy5PUEVSQVRJT05fRkFJTCxKU09OLnN0cmluZ2lmeShyZXMpfHwnbGlua0FuZFJldHJpZXZlRGF0YVdpdGhUaWNrZXQgZmFpbGVkJyk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgYXN5bmMgX3NldEFub255bW91c1VVSUQoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHsgYW5vbnltb3VzVXVpZEtleSwgbG9naW5UeXBlS2V5IH0gPSB0aGlzLl9jYWNoZS5rZXlzO1xuICAgIGF3YWl0IHRoaXMuX2NhY2hlLnJlbW92ZVN0b3JlQXN5bmMoYW5vbnltb3VzVXVpZEtleSk7XG4gICAgYXdhaXQgdGhpcy5fY2FjaGUuc2V0U3RvcmVBc3luYyhhbm9ueW1vdXNVdWlkS2V5LCBpZCk7XG4gICAgYXdhaXQgdGhpcy5fY2FjaGUuc2V0U3RvcmVBc3luYyhsb2dpblR5cGVLZXksIExPR0lOVFlQRS5BTk9OWU1PVVMpO1xuICB9XG4gIHByaXZhdGUgYXN5bmMgX2NsZWFyQW5vbnltb3VzVVVJRCgpIHtcbiAgICBhd2FpdCB0aGlzLl9jYWNoZS5yZW1vdmVTdG9yZUFzeW5jKHRoaXMuX2NhY2hlLmtleXMuYW5vbnltb3VzVXVpZEtleSk7XG4gIH1cbiAgcHJpdmF0ZSBhc3luYyBfb25Db252ZXJ0ZWQoZXYpIHtcbiAgICBjb25zdCB7IGVudiB9ID0gZXYuZGF0YTtcbiAgICBpZiAoZW52ICE9PSB0aGlzLl9jb25maWcuZW52KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIOWMv+WQjei9rOato+WQjui/geenu2NhY2hlXG4gICAgYXdhaXQgdGhpcy5fY2FjaGUudXBkYXRlUGVyc2lzdGVuY2VBc3luYyh0aGlzLl9jb25maWcucGVyc2lzdGVuY2UpO1xuICB9XG59Il19