@cloudbase/oauth 2.5.49-beta.0 → 2.5.49-beta.2
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/auth/apis.d.ts +13 -6
- package/dist/cjs/auth/apis.js +94 -18
- package/dist/cjs/auth/consts.d.ts +5 -0
- package/dist/cjs/auth/consts.js +6 -1
- package/dist/cjs/auth/models.d.ts +60 -2
- package/dist/cjs/auth/models.js +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/oauth2client/models.d.ts +1 -0
- package/dist/cjs/oauth2client/models.js +1 -1
- package/dist/cjs/oauth2client/oauth2client.d.ts +5 -0
- package/dist/cjs/oauth2client/oauth2client.js +23 -14
- package/dist/cjs/utils/base64.d.ts +4 -0
- package/dist/cjs/utils/base64.js +99 -0
- package/dist/cjs/utils/encryptlong/index.js +4 -3
- package/dist/esm/auth/apis.d.ts +13 -6
- package/dist/esm/auth/apis.js +94 -18
- package/dist/esm/auth/consts.d.ts +5 -0
- package/dist/esm/auth/consts.js +6 -1
- package/dist/esm/auth/models.d.ts +60 -2
- package/dist/esm/auth/models.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/oauth2client/models.d.ts +1 -0
- package/dist/esm/oauth2client/models.js +1 -1
- package/dist/esm/oauth2client/oauth2client.d.ts +5 -0
- package/dist/esm/oauth2client/oauth2client.js +23 -14
- package/dist/esm/utils/base64.d.ts +4 -0
- package/dist/esm/utils/base64.js +92 -0
- package/dist/esm/utils/encryptlong/index.js +4 -3
- package/package.json +2 -2
- package/src/auth/apis.ts +102 -30
- package/src/auth/consts.ts +5 -0
- package/src/auth/models.ts +103 -38
- package/src/index.ts +3 -9
- package/src/oauth2client/models.ts +1 -0
- package/src/oauth2client/oauth2client.ts +27 -16
- package/src/utils/base64.ts +100 -0
- package/src/utils/encryptlong/index.js +3 -2
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
2
|
+
var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
|
|
3
|
+
export function weBtoa(string) {
|
|
4
|
+
string = String(string);
|
|
5
|
+
var bitmap;
|
|
6
|
+
var a;
|
|
7
|
+
var b;
|
|
8
|
+
var c;
|
|
9
|
+
var result = '';
|
|
10
|
+
var i = 0;
|
|
11
|
+
var rest = string.length % 3;
|
|
12
|
+
for (; i < string.length;) {
|
|
13
|
+
if ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)
|
|
14
|
+
throw new TypeError('Failed to execute \'btoa\' on \'Window\': The string to be encoded contains characters outside of the Latin1 range.');
|
|
15
|
+
bitmap = (a << 16) | (b << 8) | c;
|
|
16
|
+
result
|
|
17
|
+
+= b64.charAt((bitmap >> 18) & 63)
|
|
18
|
+
+ b64.charAt((bitmap >> 12) & 63)
|
|
19
|
+
+ b64.charAt((bitmap >> 6) & 63)
|
|
20
|
+
+ b64.charAt(bitmap & 63);
|
|
21
|
+
}
|
|
22
|
+
return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result;
|
|
23
|
+
}
|
|
24
|
+
export var weAtob = function (string) {
|
|
25
|
+
string = String(string).replace(/[\t\n\f\r ]+/g, '');
|
|
26
|
+
if (!b64re.test(string))
|
|
27
|
+
throw new TypeError('Failed to execute \'atob\' on \'Window\': The string to be decoded is not correctly encoded.');
|
|
28
|
+
string += '=='.slice(2 - (string.length & 3));
|
|
29
|
+
var bitmap;
|
|
30
|
+
var result = '';
|
|
31
|
+
var r1;
|
|
32
|
+
var r2;
|
|
33
|
+
var i = 0;
|
|
34
|
+
for (; i < string.length;) {
|
|
35
|
+
bitmap = (b64.indexOf(string.charAt(i++)) << 18)
|
|
36
|
+
| (b64.indexOf(string.charAt(i++)) << 12)
|
|
37
|
+
| ((r1 = b64.indexOf(string.charAt(i++))) << 6)
|
|
38
|
+
| (r2 = b64.indexOf(string.charAt(i++)));
|
|
39
|
+
result
|
|
40
|
+
+= r1 === 64
|
|
41
|
+
? String.fromCharCode((bitmap >> 16) & 255)
|
|
42
|
+
: r2 === 64
|
|
43
|
+
? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)
|
|
44
|
+
: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
function b64DecodeUnicode(str) {
|
|
49
|
+
return decodeURIComponent(weAtob(str).replace(/(.)/g, function (p) {
|
|
50
|
+
var code = p.charCodeAt(0).toString(16)
|
|
51
|
+
.toUpperCase();
|
|
52
|
+
if (code.length < 2) {
|
|
53
|
+
code = "0".concat(code);
|
|
54
|
+
}
|
|
55
|
+
return "%".concat(code);
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
export function base64_url_decode(str) {
|
|
59
|
+
var output = str.replace(/-/g, '+').replace(/_/g, '/');
|
|
60
|
+
switch (output.length % 4) {
|
|
61
|
+
case 0:
|
|
62
|
+
break;
|
|
63
|
+
case 2:
|
|
64
|
+
output += '==';
|
|
65
|
+
break;
|
|
66
|
+
case 3:
|
|
67
|
+
output += '=';
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
throw new Error('Illegal base64url string!');
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
return b64DecodeUnicode(output);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
return weAtob(output);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function weappJwtDecode(token, options) {
|
|
80
|
+
if (typeof token !== 'string') {
|
|
81
|
+
throw new Error('Invalid token specified');
|
|
82
|
+
}
|
|
83
|
+
options = options || {};
|
|
84
|
+
var pos = options.header === true ? 0 : 1;
|
|
85
|
+
try {
|
|
86
|
+
return JSON.parse(base64_url_decode(token.split('.')[pos]));
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
throw new Error("Invalid token specified: ".concat(e) ? e.message : '');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxJQUFNLEdBQUcsR0FBRyxtRUFBbUUsQ0FBQTtBQUMvRSxJQUFNLEtBQUssR0FBRyxzRUFBc0UsQ0FBQTtBQUdwRixNQUFNLFVBQVUsTUFBTSxDQUFDLE1BQWM7SUFDbkMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2QixJQUFJLE1BQU0sQ0FBQTtJQUNWLElBQUksQ0FBQyxDQUFBO0lBQ0wsSUFBSSxDQUFDLENBQUE7SUFDTCxJQUFJLENBQUMsQ0FBQTtJQUNMLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNULElBQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBRTlCLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUc7UUFDekIsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUc7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLHFIQUFxSCxDQUFFLENBQUE7UUFFL1AsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNqQyxNQUFNO2VBQ0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENB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QzNDLElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDNUQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQTRCLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBRSxDQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtLQUMzRTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gd2VhcHAgand0LWRlY29kZVxuY29uc3QgYjY0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89J1xuY29uc3QgYjY0cmUgPSAvXig/OltBLVphLXpcXGQrL117NH0pKj8oPzpbQS1aYS16XFxkKy9dezJ9KD86PT0pP3xbQS1aYS16XFxkKy9dezN9PT8pPyQvXG5cbi8vIGJ0b2FcbmV4cG9ydCBmdW5jdGlvbiB3ZUJ0b2Eoc3RyaW5nOiBzdHJpbmcpIHtcbiAgc3RyaW5nID0gU3RyaW5nKHN0cmluZylcbiAgbGV0IGJpdG1hcFxuICBsZXQgYVxuICBsZXQgYlxuICBsZXQgY1xuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGkgPSAwXG4gIGNvbnN0IHJlc3QgPSBzdHJpbmcubGVuZ3RoICUgM1xuXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBpZiAoKGEgPSBzdHJpbmcuY2hhckNvZGVBdChpKyspKSA+IDI1NSB8fCAoYiA9IHN0cmluZy5jaGFyQ29kZUF0KGkrKykpID4gMjU1IHx8IChjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSsrKSkgPiAyNTUpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZhaWxlZCB0byBleGVjdXRlIFxcJ2J0b2FcXCcgb24gXFwnV2luZG93XFwnOiBUaGUgc3RyaW5nIHRvIGJlIGVuY29kZWQgY29udGFpbnMgY2hhcmFjdGVycyBvdXRzaWRlIG9mIHRoZSBMYXRpbjEgcmFuZ2UuJywpXG5cbiAgICBiaXRtYXAgPSAoYSA8PCAxNikgfCAoYiA8PCA4KSB8IGNcbiAgICByZXN1bHRcbiAgICAgICs9IGI2NC5jaGFyQXQoKGJpdG1hcCA+PiAxOCkgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdCgoYml0bWFwID4+IDEyKSAmIDYzKVxuICAgICAgKyBiNjQuY2hhckF0KChiaXRtYXAgPj4gNikgJiA2MylcbiAgICAgICsgYjY0LmNoYXJBdChiaXRtYXAgJiA2MylcbiAgfVxuXG4gIHJldHVybiByZXN0ID8gcmVzdWx0LnNsaWNlKDAsIHJlc3QgLSAzKSArICc9PT0nLnN1YnN0cmluZyhyZXN0KSA6IHJlc3VsdFxufVxuLy8gYXRvYlxuZXhwb3J0IGNvbnN0IHdlQXRvYiA9IGZ1bmN0aW9uIChzdHJpbmc6IHN0cmluZykge1xuICBzdHJpbmcgPSBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKC9bXFx0XFxuXFxmXFxyIF0rL2csICcnKVxuICBpZiAoIWI2NHJlLnRlc3Qoc3RyaW5nKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignRmFpbGVkIHRvIGV4ZWN1dGUgXFwnYXRvYlxcJyBvbiBcXCdXaW5kb3dcXCc6IFRoZSBzdHJpbmcgdG8gYmUgZGVjb2RlZCBpcyBub3QgY29ycmVjdGx5IGVuY29kZWQuJylcbiAgc3RyaW5nICs9ICc9PScuc2xpY2UoMiAtIChzdHJpbmcubGVuZ3RoICYgMykpXG4gIGxldCBiaXRtYXBcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCByMVxuICBsZXQgcjJcbiAgbGV0IGkgPSAwXG4gIGZvciAoOyBpIDwgc3RyaW5nLmxlbmd0aDspIHtcbiAgICBiaXRtYXAgPSAgICAgIChiNjQuaW5kZXhPZihzdHJpbmcuY2hhckF0KGkrKykpIDw8IDE4KVxuICAgICAgfCAoYjY0LmluZGV4T2Yoc3RyaW5nLmNoYXJBdChpKyspKSA8PCAxMilcbiAgICAgIHwgKChyMSA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpIDw8IDYpXG4gICAgICB8IChyMiA9IGI2NC5pbmRleE9mKHN0cmluZy5jaGFyQXQoaSsrKSkpXG5cbiAgICByZXN1bHRcbiAgICAgICs9IHIxID09PSA2NFxuICAgICAgICA/IFN0cmluZy5mcm9tQ2hhckNvZGUoKGJpdG1hcCA+PiAxNikgJiAyNTUpXG4gICAgICAgIDogcjIgPT09IDY0XG4gICAgICAgICAgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKChiaXRtYXAgPj4gMTYpICYgMjU1LCAoYml0bWFwID4+IDgpICYgMjU1KVxuICAgICAgICAgIDogU3RyaW5nLmZyb21DaGFyQ29kZSgoYml0bWFwID4+IDE2KSAmIDI1NSwgKGJpdG1hcCA+PiA4KSAmIDI1NSwgYml0bWFwICYgMjU1KVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gYjY0RGVjb2RlVW5pY29kZShzdHI6IHN0cmluZykge1xuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHdlQXRvYihzdHIpLnJlcGxhY2UoLyguKS9nLCAocCkgPT4ge1xuICAgIGxldCBjb2RlID0gcC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KVxuICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICBpZiAoY29kZS5sZW5ndGggPCAyKSB7XG4gICAgICBjb2RlID0gYDAke2NvZGV9YFxuICAgIH1cbiAgICByZXR1cm4gYCUke2NvZGV9YFxuICB9KSwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjRfdXJsX2RlY29kZShzdHI6IHN0cmluZykge1xuICBsZXQgb3V0cHV0ID0gc3RyLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJylcbiAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAyOlxuICAgICAgb3V0cHV0ICs9ICc9PSdcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAzOlxuICAgICAgb3V0cHV0ICs9ICc9J1xuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbGxlZ2FsIGJhc2U2NHVybCBzdHJpbmchJylcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGI2NERlY29kZVVuaWNvZGUob3V0cHV0KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gd2VBdG9iKG91dHB1dClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2VhcHBKd3REZWNvZGUodG9rZW46IHN0cmluZywgb3B0aW9ucz86IGFueSkge1xuICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbiBzcGVjaWZpZWQnKVxuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IHBvcyA9IG9wdGlvbnMuaGVhZGVyID09PSB0cnVlID8gMCA6IDFcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShiYXNlNjRfdXJsX2RlY29kZSh0b2tlbi5zcGxpdCgnLicpW3Bvc10pKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRva2VuIHNwZWNpZmllZDogJHtlfWAgPyAoZSBhcyBhbnkpLm1lc3NhZ2UgOiAnJylcbiAgfVxufVxuIl19
|