@cloudbase/auth 1.6.1 → 2.0.0-alpha.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.
- package/dist/cjs/index.d.ts +50 -96
- package/dist/cjs/index.js +411 -679
- package/dist/esm/index.d.ts +50 -96
- package/dist/esm/index.js +412 -676
- package/package.json +52 -54
- package/src/index.ts +413 -650
- package/dist/cjs/constants.d.ts +0 -11
- package/dist/cjs/constants.js +0 -16
- package/dist/cjs/providers/anonymousAuthProvider.d.ts +0 -15
- package/dist/cjs/providers/anonymousAuthProvider.js +0 -255
- package/dist/cjs/providers/base.d.ts +0 -20
- package/dist/cjs/providers/base.js +0 -158
- package/dist/cjs/providers/customAuthProvider.d.ts +0 -5
- package/dist/cjs/providers/customAuthProvider.js +0 -149
- package/dist/cjs/providers/emailAuthProvider.d.ts +0 -9
- package/dist/cjs/providers/emailAuthProvider.js +0 -248
- package/dist/cjs/providers/phoneAuthProvider.d.ts +0 -17
- package/dist/cjs/providers/phoneAuthProvider.js +0 -217
- package/dist/cjs/providers/usernameAuthProvider.d.ts +0 -5
- package/dist/cjs/providers/usernameAuthProvider.js +0 -168
- package/dist/cjs/providers/weixinAuthProvider.d.ts +0 -28
- package/dist/cjs/providers/weixinAuthProvider.js +0 -294
- package/dist/esm/constants.d.ts +0 -11
- package/dist/esm/constants.js +0 -13
- package/dist/esm/providers/anonymousAuthProvider.d.ts +0 -15
- package/dist/esm/providers/anonymousAuthProvider.js +0 -252
- package/dist/esm/providers/base.d.ts +0 -20
- package/dist/esm/providers/base.js +0 -155
- package/dist/esm/providers/customAuthProvider.d.ts +0 -5
- package/dist/esm/providers/customAuthProvider.js +0 -146
- package/dist/esm/providers/emailAuthProvider.d.ts +0 -9
- package/dist/esm/providers/emailAuthProvider.js +0 -245
- package/dist/esm/providers/phoneAuthProvider.d.ts +0 -17
- package/dist/esm/providers/phoneAuthProvider.js +0 -214
- package/dist/esm/providers/usernameAuthProvider.d.ts +0 -5
- package/dist/esm/providers/usernameAuthProvider.js +0 -165
- package/dist/esm/providers/weixinAuthProvider.d.ts +0 -28
- package/dist/esm/providers/weixinAuthProvider.js +0 -291
- package/src/constants.ts +0 -11
- package/src/providers/anonymousAuthProvider.ts +0 -125
- package/src/providers/base.ts +0 -66
- package/src/providers/customAuthProvider.ts +0 -68
- package/src/providers/emailAuthProvider.ts +0 -139
- package/src/providers/phoneAuthProvider.ts +0 -130
- package/src/providers/usernameAuthProvider.ts +0 -76
- 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=
|
package/dist/esm/constants.d.ts
DELETED
package/dist/esm/constants.js
DELETED
|
@@ -1,13 +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
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQVVYO0FBVkQsV0FBWSxTQUFTO0lBQ25CLG9DQUF1QixDQUFBO0lBQ3ZCLDhCQUFpQixDQUFBO0lBQ2pCLDRDQUErQixDQUFBO0lBQy9CLHdDQUEyQixDQUFBO0lBQzNCLDhCQUFpQixDQUFBO0lBQ2pCLDRCQUFlLENBQUE7SUFDZixrQ0FBcUIsQ0FBQTtJQUNyQiwwQkFBYSxDQUFBO0lBQ2IsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBVlcsU0FBUyxLQUFULFNBQVMsUUFVcEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBMT0dJTlRZUEUge1xuICBBTk9OWU1PVVMgPSAnQU5PTllNT1VTJyxcbiAgV0VDSEFUID0gJ1dFQ0hBVCcsXG4gIFdFQ0hBVF9QVUJMSUMgPSAnV0VDSEFULVBVQkxJQycsXG4gIFdFQ0hBVF9PUEVOID0gJ1dFQ0hBVC1PUEVOJyxcbiAgQ1VTVE9NID0gJ0NVU1RPTScsXG4gIEVNQUlMID0gJ0VNQUlMJyxcbiAgVVNFUk5BTUUgPSAnVVNFUk5BTUUnLFxuICBOVUxMID0gJ05VTEwnLFxuICBQSE9ORSA9ICdQSE9ORSdcbn1cbiJdfQ==
|
|
@@ -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
|