@cloudbase/oauth 0.1.1-alpha → 0.1.1-alpha.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/Dockerfile +15 -0
- package/README.md +1 -1
- package/_exmaple/assets/scripts/function/function.ts +99 -0
- package/_exmaple/assets/scripts/index.ts +99 -0
- package/_exmaple/assets/scripts/request.ts +11 -0
- package/_exmaple/index.html +15 -0
- package/_exmaple/package.json +33 -0
- package/_exmaple/tsconfig.json +71 -0
- package/_exmaple/typings.d.ts +0 -0
- package/_exmaple/webpack.config.js +42 -0
- package/cdnjs/1.0.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.0.0/cloudbase.database.js +8 -0
- package/cdnjs/1.0.0/cloudbase.full.js +8 -0
- package/cdnjs/1.0.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.0.0/cloudbase.js +1 -0
- package/cdnjs/1.0.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.0.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.0.1/cloudbase.database.js +8 -0
- package/cdnjs/1.0.1/cloudbase.full.js +8 -0
- package/cdnjs/1.0.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.0.1/cloudbase.js +1 -0
- package/cdnjs/1.0.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.0.2/cloudbase.auth.js +1 -0
- package/cdnjs/1.0.2/cloudbase.database.js +8 -0
- package/cdnjs/1.0.2/cloudbase.full.js +8 -0
- package/cdnjs/1.0.2/cloudbase.functions.js +1 -0
- package/cdnjs/1.0.2/cloudbase.js +1 -0
- package/cdnjs/1.0.2/cloudbase.storage.js +1 -0
- package/cdnjs/1.0.3/cloudbase.auth.js +1 -0
- package/cdnjs/1.0.3/cloudbase.database.js +8 -0
- package/cdnjs/1.0.3/cloudbase.full.js +8 -0
- package/cdnjs/1.0.3/cloudbase.functions.js +1 -0
- package/cdnjs/1.0.3/cloudbase.js +1 -0
- package/cdnjs/1.0.3/cloudbase.storage.js +1 -0
- package/cdnjs/1.0.4/cloudbase.auth.js +1 -0
- package/cdnjs/1.0.4/cloudbase.database.js +8 -0
- package/cdnjs/1.0.4/cloudbase.full.js +8 -0
- package/cdnjs/1.0.4/cloudbase.functions.js +1 -0
- package/cdnjs/1.0.4/cloudbase.js +1 -0
- package/cdnjs/1.0.4/cloudbase.storage.js +1 -0
- package/cdnjs/1.1.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.1.0/cloudbase.database.js +8 -0
- package/cdnjs/1.1.0/cloudbase.full.js +8 -0
- package/cdnjs/1.1.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.1.0/cloudbase.js +1 -0
- package/cdnjs/1.1.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.1.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.1.1/cloudbase.database.js +8 -0
- package/cdnjs/1.1.1/cloudbase.full.js +8 -0
- package/cdnjs/1.1.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.1.1/cloudbase.js +1 -0
- package/cdnjs/1.1.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.1.2/cloudbase.auth.js +1 -0
- package/cdnjs/1.1.2/cloudbase.database.js +8 -0
- package/cdnjs/1.1.2/cloudbase.full.js +8 -0
- package/cdnjs/1.1.2/cloudbase.functions.js +1 -0
- package/cdnjs/1.1.2/cloudbase.js +1 -0
- package/cdnjs/1.1.2/cloudbase.storage.js +1 -0
- package/cdnjs/1.1.3/cloudbase.auth.js +1 -0
- package/cdnjs/1.1.3/cloudbase.database.js +8 -0
- package/cdnjs/1.1.3/cloudbase.full.js +8 -0
- package/cdnjs/1.1.3/cloudbase.functions.js +1 -0
- package/cdnjs/1.1.3/cloudbase.js +1 -0
- package/cdnjs/1.1.3/cloudbase.storage.js +1 -0
- package/cdnjs/1.1.4/cloudbase.auth.js +1 -0
- package/cdnjs/1.1.4/cloudbase.database.js +8 -0
- package/cdnjs/1.1.4/cloudbase.full.js +8 -0
- package/cdnjs/1.1.4/cloudbase.functions.js +1 -0
- package/cdnjs/1.1.4/cloudbase.js +1 -0
- package/cdnjs/1.1.4/cloudbase.storage.js +1 -0
- package/cdnjs/1.2.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.2.1/cloudbase.database.js +8 -0
- package/cdnjs/1.2.1/cloudbase.full.js +8 -0
- package/cdnjs/1.2.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.2.1/cloudbase.js +1 -0
- package/cdnjs/1.2.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.2.2/cloudbase.auth.js +1 -0
- package/cdnjs/1.2.2/cloudbase.database.js +8 -0
- package/cdnjs/1.2.2/cloudbase.full.js +8 -0
- package/cdnjs/1.2.2/cloudbase.functions.js +1 -0
- package/cdnjs/1.2.2/cloudbase.js +1 -0
- package/cdnjs/1.2.2/cloudbase.storage.js +1 -0
- package/cdnjs/1.2.3/cloudbase.auth.js +1 -0
- package/cdnjs/1.2.3/cloudbase.database.js +8 -0
- package/cdnjs/1.2.3/cloudbase.full.js +8 -0
- package/cdnjs/1.2.3/cloudbase.functions.js +1 -0
- package/cdnjs/1.2.3/cloudbase.js +1 -0
- package/cdnjs/1.2.3/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.0/cloudbase.database.js +8 -0
- package/cdnjs/1.3.0/cloudbase.full.js +8 -0
- package/cdnjs/1.3.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.0/cloudbase.js +1 -0
- package/cdnjs/1.3.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.1/cloudbase.database.js +8 -0
- package/cdnjs/1.3.1/cloudbase.full.js +8 -0
- package/cdnjs/1.3.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.1/cloudbase.js +1 -0
- package/cdnjs/1.3.1/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.2/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.2/cloudbase.database.js +8 -0
- package/cdnjs/1.3.2/cloudbase.full.js +8 -0
- package/cdnjs/1.3.2/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.2/cloudbase.js +1 -0
- package/cdnjs/1.3.2/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.2/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.3/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.3/cloudbase.database.js +8 -0
- package/cdnjs/1.3.3/cloudbase.full.js +8 -0
- package/cdnjs/1.3.3/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.3/cloudbase.js +1 -0
- package/cdnjs/1.3.3/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.3/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.database.js +8 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.full.js +8 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.4-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.5/cloudbase.analytics.js +1 -0
- package/cdnjs/1.3.5/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.5/cloudbase.database.js +10 -0
- package/cdnjs/1.3.5/cloudbase.full.js +10 -0
- package/cdnjs/1.3.5/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.5/cloudbase.js +1 -0
- package/cdnjs/1.3.5/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.5/cloudbase.storage.js +1 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.database.js +10 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.full.js +10 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.3.5-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.4.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.4.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.4.0/cloudbase.database.js +10 -0
- package/cdnjs/1.4.0/cloudbase.full.js +10 -0
- package/cdnjs/1.4.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.4.0/cloudbase.js +1 -0
- package/cdnjs/1.4.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.4.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.4.1/cloudbase.analytics.js +1 -0
- package/cdnjs/1.4.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.4.1/cloudbase.database.js +10 -0
- package/cdnjs/1.4.1/cloudbase.full.js +10 -0
- package/cdnjs/1.4.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.4.1/cloudbase.js +1 -0
- package/cdnjs/1.4.1/cloudbase.realtime.js +1 -0
- package/cdnjs/1.4.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.database.js +10 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.full.js +10 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.4.1-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.database.js +10 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.full.js +10 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.4.2-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.5.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.5.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.5.0/cloudbase.database.js +10 -0
- package/cdnjs/1.5.0/cloudbase.full.js +10 -0
- package/cdnjs/1.5.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.5.0/cloudbase.js +1 -0
- package/cdnjs/1.5.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.5.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.5.1/cloudbase.analytics.js +1 -0
- package/cdnjs/1.5.1/cloudbase.auth.js +1 -0
- package/cdnjs/1.5.1/cloudbase.database.js +26 -0
- package/cdnjs/1.5.1/cloudbase.full.js +26 -0
- package/cdnjs/1.5.1/cloudbase.functions.js +1 -0
- package/cdnjs/1.5.1/cloudbase.js +1 -0
- package/cdnjs/1.5.1/cloudbase.realtime.js +1 -0
- package/cdnjs/1.5.1/cloudbase.storage.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.database.js +10 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.full.js +10 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.5.1-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.database.js +26 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.full.js +26 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.5.3-alpha.0/cloudbase.storage.js +1 -0
- package/cdnjs/1.6.0/cloudbase.analytics.js +1 -0
- package/cdnjs/1.6.0/cloudbase.auth.js +1 -0
- package/cdnjs/1.6.0/cloudbase.database.js +26 -0
- package/cdnjs/1.6.0/cloudbase.full.js +26 -0
- package/cdnjs/1.6.0/cloudbase.functions.js +1 -0
- package/cdnjs/1.6.0/cloudbase.js +1 -0
- package/cdnjs/1.6.0/cloudbase.realtime.js +1 -0
- package/cdnjs/1.6.0/cloudbase.storage.js +1 -0
- package/{CHANGELOG.md → changelog.md} +0 -0
- package/dist/README.md +153 -0
- package/{app → dist/app}/index.d.ts +1 -0
- package/{app → dist/app}/index.js +0 -0
- package/dist/app/index.js.map +1 -0
- package/{app → dist/app}/internal.d.ts +0 -0
- package/{app → dist/app}/internal.js +0 -0
- package/{app → dist/app}/internal.js.map +0 -0
- package/{app → dist/app}/openuri.d.ts +0 -0
- package/{app → dist/app}/openuri.js +2 -1
- package/{app → dist/app}/openuri.js.map +1 -1
- package/{app → dist/app}/request.d.ts +4 -3
- package/{app → dist/app}/request.js +20 -12
- package/dist/app/request.js.map +1 -0
- package/{app → dist/app}/storage.d.ts +0 -0
- package/{app → dist/app}/storage.js +0 -0
- package/{app → dist/app}/storage.js.map +0 -0
- package/{auth → dist/auth}/consts.d.ts +21 -4
- package/{auth → dist/auth}/consts.js +27 -5
- package/dist/auth/consts.js.map +1 -0
- package/{auth → dist/auth}/index.d.ts +83 -34
- package/{auth → dist/auth}/index.js +239 -92
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/models.d.ts +284 -0
- package/{oauthclient → dist/auth}/models.js +1 -0
- package/dist/auth/models.js.map +1 -0
- package/{captcha → dist/captcha}/index.d.ts +0 -0
- package/{captcha → dist/captcha}/index.js +4 -2
- package/dist/captcha/index.js.map +1 -0
- package/dist/changelog.md +30 -0
- package/dist/function/index.d.ts +38 -0
- package/dist/function/index.js +80 -0
- package/dist/function/index.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/{oauthclient → dist/oauthclient}/consts.d.ts +0 -0
- package/{oauthclient → dist/oauthclient}/consts.js +0 -0
- package/{oauthclient → dist/oauthclient}/consts.js.map +0 -0
- package/{oauthclient → dist/oauthclient}/index.d.ts +0 -0
- package/{oauthclient → dist/oauthclient}/index.js +2 -2
- package/dist/oauthclient/index.js.map +1 -0
- package/{oauthclient → dist/oauthclient}/interface.d.ts +4 -0
- package/{oauthclient → dist/oauthclient}/interface.js +0 -0
- package/{oauthclient → dist/oauthclient}/interface.js.map +1 -1
- package/{oauthclient → dist/oauthclient}/models.d.ts +12 -11
- package/{auth → dist/oauthclient}/models.js +0 -0
- package/{oauthclient → dist/oauthclient}/models.js.map +0 -0
- package/{oauthclient → dist/oauthclient}/oauthclient.d.ts +11 -7
- package/{oauthclient → dist/oauthclient}/oauthclient.js +27 -12
- package/dist/oauthclient/oauthclient.js.map +1 -0
- package/dist/package.json +32 -0
- package/{utils/single-promise.d.ts → dist/utils/promise.d.ts} +3 -3
- package/{utils/single-promise.js → dist/utils/promise.js} +6 -6
- package/dist/utils/promise.js.map +1 -0
- package/{utils → dist/utils}/uuid.d.ts +0 -0
- package/{utils → dist/utils}/uuid.js +0 -0
- package/{utils → dist/utils}/uuid.js.map +0 -0
- package/docs/dev.md +71 -0
- package/docs/errlog.md +79 -0
- package/package.json +3 -2
- package/publish.sh +2 -0
- package/src/app/index.ts +83 -0
- package/src/app/internal.ts +26 -0
- package/src/app/openuri.ts +111 -0
- package/src/app/request.ts +66 -0
- package/src/app/storage.ts +58 -0
- package/src/auth/consts.ts +74 -0
- package/src/auth/index.ts +718 -0
- package/src/auth/models.ts +352 -0
- package/src/captcha/index.ts +170 -0
- package/src/function/index.ts +103 -0
- package/src/index.ts +32 -0
- package/src/oauthclient/consts.ts +48 -0
- package/src/oauthclient/index.ts +33 -0
- package/src/oauthclient/interface.ts +34 -0
- package/src/oauthclient/models.ts +50 -0
- package/src/oauthclient/oauthclient.ts +487 -0
- package/src/utils/promise.ts +41 -0
- package/src/utils/uuid.ts +11 -0
- package/test/e2e/cases/custom-login.test.js +122 -0
- package/test/e2e/cases/index.test.js +61 -0
- package/test/e2e/cases/login-state.test.js +89 -0
- package/test/e2e/environment.js +39 -0
- package/test/e2e/global_setup.js +33 -0
- package/test/e2e/global_teardown.js +15 -0
- package/test/e2e/setup.js +37 -0
- package/test/unit/index.test.js +89 -0
- package/test/web/cases/auth/index.js +256 -0
- package/test/web/cases/database/collection.js +173 -0
- package/test/web/cases/database/command.js +754 -0
- package/test/web/cases/database/date.js +122 -0
- package/test/web/cases/database/db.js +20 -0
- package/test/web/cases/database/document.js +160 -0
- package/test/web/cases/database/geo-advanced.js +327 -0
- package/test/web/cases/database/geo.js +105 -0
- package/test/web/cases/database/index.js +315 -0
- package/test/web/cases/database/order.js +83 -0
- package/test/web/cases/database/realtime.js +102 -0
- package/test/web/cases/database/regex.js +140 -0
- package/test/web/cases/ext/index.js +88 -0
- package/test/web/cases/function/index.js +77 -0
- package/test/web/cases/storage/cos.jpeg +0 -0
- package/test/web/cases/storage/index.js +207 -0
- package/test/web/index.html +63 -0
- package/test/web/index.js +109 -0
- package/test/web/util.js +80 -0
- package/tsconfig.json +35 -0
- package/wiki/README.md +75 -0
- package/app/index.js.map +0 -1
- package/app/request.js.map +0 -1
- package/auth/consts.js.map +0 -1
- package/auth/index.js.map +0 -1
- package/auth/models.d.ts +0 -158
- package/auth/models.js.map +0 -1
- package/captcha/index.js.map +0 -1
- package/index.d.ts +0 -8
- package/index.js +0 -17
- package/index.js.map +0 -1
- package/oauthclient/index.js.map +0 -1
- package/oauthclient/oauthclient.js.map +0 -1
- package/utils/single-promise.js.map +0 -1
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.OAuth2Client = exports.LocalCredentials = exports.generateRequestId = exports.toResponseError = void 0;
|
|
4
4
|
const consts_1 = require("./consts");
|
|
5
5
|
const uuid_1 = require("../utils/uuid");
|
|
6
|
-
const
|
|
6
|
+
const promise_1 = require("../utils/promise");
|
|
7
7
|
const RequestIdHeaderName = 'x-request-id';
|
|
8
8
|
const DeviceIdHeaderName = 'x-device-id';
|
|
9
9
|
const DeviceIdSectionName = 'device_';
|
|
10
|
-
|
|
10
|
+
const toResponseError = (error, options) => {
|
|
11
11
|
let responseError;
|
|
12
12
|
const formatOptions = options || {};
|
|
13
13
|
if (error instanceof Error) {
|
|
@@ -29,12 +29,13 @@ exports.toResponseError = (error, options) => {
|
|
|
29
29
|
}
|
|
30
30
|
return responseError;
|
|
31
31
|
};
|
|
32
|
+
exports.toResponseError = toResponseError;
|
|
32
33
|
/**
|
|
33
34
|
* Generate request id.
|
|
34
35
|
* @return {string}
|
|
35
36
|
*/
|
|
36
37
|
function generateRequestId() {
|
|
37
|
-
return uuid_1.uuidv4();
|
|
38
|
+
return (0, uuid_1.uuidv4)();
|
|
38
39
|
}
|
|
39
40
|
exports.generateRequestId = generateRequestId;
|
|
40
41
|
/**
|
|
@@ -61,7 +62,7 @@ class LocalCredentials {
|
|
|
61
62
|
*/
|
|
62
63
|
constructor(options) {
|
|
63
64
|
this._credentials = null;
|
|
64
|
-
this.
|
|
65
|
+
this._promiseOnce = new promise_1.PromiseOnce();
|
|
65
66
|
this._tokenSectionName = options.tokenSectionName;
|
|
66
67
|
this._storage = options.storage;
|
|
67
68
|
}
|
|
@@ -87,10 +88,10 @@ class LocalCredentials {
|
|
|
87
88
|
}
|
|
88
89
|
/**
|
|
89
90
|
* Get credentials.
|
|
90
|
-
* @return {Promise<Credentials
|
|
91
|
+
* @return {Promise<Credentials>}
|
|
91
92
|
*/
|
|
92
93
|
async getCredentials() {
|
|
93
|
-
return this.
|
|
94
|
+
return this._promiseOnce.run('getCredentials', async () => {
|
|
94
95
|
if (isCredentialsExpired(this._credentials)) {
|
|
95
96
|
this._credentials = await this._getStorageCredentials();
|
|
96
97
|
}
|
|
@@ -101,7 +102,7 @@ class LocalCredentials {
|
|
|
101
102
|
* Get storage credentials.
|
|
102
103
|
*/
|
|
103
104
|
async _getStorageCredentials() {
|
|
104
|
-
return this.
|
|
105
|
+
return this._promiseOnce.run('_getStorageCredentials', async () => {
|
|
105
106
|
let credentials = null;
|
|
106
107
|
const tokenStr = await this._storage.getItem(this._tokenSectionName);
|
|
107
108
|
if (tokenStr !== undefined && tokenStr !== null) {
|
|
@@ -130,7 +131,7 @@ class OAuth2Client {
|
|
|
130
131
|
* @param {OAuth2ClientOptions} options
|
|
131
132
|
*/
|
|
132
133
|
constructor(options) {
|
|
133
|
-
this.
|
|
134
|
+
this._promiseOnce = new promise_1.PromiseOnce();
|
|
134
135
|
this._retry = this._formatRetry(options.retry, OAuth2Client._defaultRetry);
|
|
135
136
|
this._baseRequest = options.request;
|
|
136
137
|
if (!options.clientSecret) {
|
|
@@ -168,6 +169,16 @@ class OAuth2Client {
|
|
|
168
169
|
}
|
|
169
170
|
return Promise.reject({ error: consts_1.ErrorType.UNAUTHENTICATED });
|
|
170
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* getScope return a validate access token
|
|
174
|
+
*/
|
|
175
|
+
async getScope() {
|
|
176
|
+
let credentials = await this._localCredentials.getCredentials();
|
|
177
|
+
if (credentials == null) {
|
|
178
|
+
return this._unAuthenticatedError("credentials not found");
|
|
179
|
+
}
|
|
180
|
+
return credentials.scope;
|
|
181
|
+
}
|
|
171
182
|
/**
|
|
172
183
|
* request http like simple fetch api, exp:request('/v1/user/me', {withCredentials:true})
|
|
173
184
|
* @param {string} url
|
|
@@ -210,7 +221,7 @@ class OAuth2Client {
|
|
|
210
221
|
}
|
|
211
222
|
}
|
|
212
223
|
}
|
|
213
|
-
let response
|
|
224
|
+
let response;
|
|
214
225
|
const maxRequestTimes = retry + 1;
|
|
215
226
|
for (let requestTime = 0; requestTime < maxRequestTimes; requestTime++) {
|
|
216
227
|
try {
|
|
@@ -218,6 +229,10 @@ class OAuth2Client {
|
|
|
218
229
|
break;
|
|
219
230
|
}
|
|
220
231
|
catch (responseError) {
|
|
232
|
+
if (options.withCredentials && responseError && responseError.error === consts_1.ErrorType.UNAUTHENTICATED) {
|
|
233
|
+
await this.setCredentials(null);
|
|
234
|
+
return Promise.reject(responseError);
|
|
235
|
+
}
|
|
221
236
|
if (requestTime === retry ||
|
|
222
237
|
!responseError ||
|
|
223
238
|
responseError.error !== 'unreachable') {
|
|
@@ -280,7 +295,7 @@ class OAuth2Client {
|
|
|
280
295
|
* @return {Promise<Credentials>}
|
|
281
296
|
*/
|
|
282
297
|
async _refreshToken(credentials) {
|
|
283
|
-
return this.
|
|
298
|
+
return this._promiseOnce.run('_refreshToken', async () => {
|
|
284
299
|
if (!credentials || !credentials.refresh_token) {
|
|
285
300
|
return this._unAuthenticatedError('no refresh token found in credentials');
|
|
286
301
|
}
|
|
@@ -304,7 +319,7 @@ class OAuth2Client {
|
|
|
304
319
|
* @return {Promise<Credentials>}
|
|
305
320
|
*/
|
|
306
321
|
async _anonymousSignIn(credentials) {
|
|
307
|
-
return this.
|
|
322
|
+
return this._promiseOnce.run('_anonymous', async () => {
|
|
308
323
|
if (!credentials || credentials.scope !== 'anonymous') {
|
|
309
324
|
return this._unAuthenticatedError('no anonymous in credentials');
|
|
310
325
|
}
|
|
@@ -373,7 +388,7 @@ class OAuth2Client {
|
|
|
373
388
|
if (!(typeof deviceId === 'string' &&
|
|
374
389
|
deviceId.length >= 16 &&
|
|
375
390
|
deviceId.length <= 48)) {
|
|
376
|
-
deviceId = uuid_1.uuidv4();
|
|
391
|
+
deviceId = (0, uuid_1.uuidv4)();
|
|
377
392
|
await this._storage.setItem(DeviceIdSectionName, deviceId);
|
|
378
393
|
}
|
|
379
394
|
this._deviceID = deviceId;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauthclient.js","sourceRoot":"","sources":["../../src/oauthclient/oauthclient.ts"],"names":[],"mappings":";;;AAAA,qCAAmC;AAYnC,wCAAqC;AAErC,8CAA6C;AAE7C,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAC3C,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAU/B,MAAM,eAAe,GAAG,CAC3B,KAA4B,EAC5B,OAAgC,EACnB,EAAE;IACf,IAAI,aAA4B,CAAC;IACjC,MAAM,aAAa,GAA2B,OAAO,IAAI,EAAE,CAAC;IAC5D,IAAI,KAAK,YAAY,KAAK,EAAE;QACxB,aAAa,GAAG;YACZ,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,kBAAS,CAAC,KAAK;YAC7C,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,IAAI,KAAK,CAAC,OAAO;YACnE,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK;SAChD,CAAC;KACL;SAAM;QACH,MAAM,WAAW,GAA2B,KAAK,IAAI,EAAE,CAAC;QACxD,aAAa,GAAG;YACZ,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,IAAI,kBAAS,CAAC,KAAK;YAClE,iBAAiB,EACb,aAAa,CAAC,iBAAiB,IAAI,WAAW,CAAC,iBAAiB;YACpE,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS;YAC3D,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO;SACxD,CAAC;KACL;IACD,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B;AAEF;;;GAGG;AACH,SAAgB,iBAAiB;IAC7B,OAAO,IAAA,aAAM,GAAE,CAAC;AACpB,CAAC;AAFD,8CAEC;AAQD;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,WAAwB;IAClD,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,YAAY,EAAE;QACnE,SAAS,GAAG,WAAW,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;KACnD;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAa,gBAAgB;IASzB;;;OAGG;IACH,YAAY,OAAgC;QARpC,iBAAY,GAAgB,IAAI,CAAC;QAEjC,iBAAY,GAAgB,IAAI,qBAAW,EAAE,CAAC;QAOlD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,WAAyB;QACjD,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,EAAE;YACvC,WAAW,CAAC,UAAU,GAAG,IAAI,IAAI,CAC7B,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,IAAI,CACpD,CAAC;YACF,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,QAAQ,GAAW,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;aACjE;YACD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;SACnC;aAAM;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC1D;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;YACtD,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACzC,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;aAC3D;YACD,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YAC9D,IAAI,WAAW,GAAgB,IAAI,CAAC;YACpC,MAAM,QAAQ,GAAW,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAChD,IAAI,CAAC,iBAAiB,CACzB,CAAC;YACF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE;gBAC7C,IAAI;oBACA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,EAAE;wBACvC,WAAW,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;qBAC7D;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACvD,WAAW,GAAG,IAAI,CAAC;iBACtB;aACJ;YACD,OAAO,WAAW,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA5ED,4CA4EC;AAED;;GAEG;AACH,MAAa,YAAY;IAgBrB;;;OAGG;IACH,YAAY,OAA4B;QANhC,iBAAY,GAAgB,IAAI,qBAAW,EAAE,CAAC;QAOlD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAA;QACnC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACvB,OAAO,CAAC,YAAY,GAAG,EAAE,CAAA;SAC5B;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;SACpF;QACD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,aAAa;QACb,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC;YAC1C,gBAAgB,EAAE,cAAc;YAChC,OAAO,EAAE,IAAI,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB;YAClB,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,wBAAwB,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,WAAyB;QAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACvB,MAAM,WAAW,GAAgB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9D,IAAI,WAAW,IAAI,WAAW,CAAC,YAAY,EAAE;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACpD;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,kBAAS,CAAC,eAAe,EAAkB,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACjB,IAAI,WAAW,GAAgB,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC7E,IAAI,WAAW,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;SAC7D;QACD,OAAO,WAAW,CAAC,KAAK,CAAC;IAC7B,CAAC;IAGD;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAChB,GAAW,EACX,OAAkC;QAElC,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,EAAE,CAAC;SAChB;QACD,MAAM,KAAK,GAAW,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,CAAC,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,QAAQ;gBAChB,GAAG,OAAO,CAAC,OAAO;aACrB,CAAC;SACL;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YACvC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,EAAE,CAAC;SAC9D;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC;SAClD;QACD,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;YACrD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAA;SACrD;QACD,IAAI,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE;YACpC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,WAAW,EAAE;gBACb,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACtB,GAAG,IAAI,GAAG,CAAC;qBACd;oBACD,GAAG,IAAI,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC;iBACrD;qBAAM;oBACH,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;wBAC5B,WAAW,CAAC,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC,YAAY,CAAC;iBAC/D;aACJ;SACJ;QACD,IAAI,QAAW,CAAC;QAChB,MAAM,eAAe,GAAW,KAAK,GAAG,CAAC,CAAC;QAC1C,KACI,IAAI,WAAW,GAAG,CAAC,EACnB,WAAW,GAAG,eAAe,EAC7B,WAAW,EAAE,EACf;YACE,IAAI;gBACA,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAI,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM;aACT;YAAC,OAAO,aAAa,EAAE;gBACpB,IAAI,OAAO,CAAC,eAAe,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,kBAAS,CAAC,eAAe,EAAE;oBAC/F,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAChC,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;iBACxC;gBACD,IACI,WAAW,KAAK,KAAK;oBACrB,CAAC,aAAa;oBACd,aAAa,CAAC,KAAK,KAAK,aAAa,EACvC;oBACE,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;iBACxC;aACJ;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;SAClD;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,KAAa;QAC7B,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IACI,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,GAAG,YAAY,CAAC,SAAS;YAC9B,KAAK,GAAG,YAAY,CAAC,SAAS,EAChC;YACE,aAAa,GAAG;gBACZ,KAAK,EAAE,kBAAS,CAAC,WAAW;gBAC5B,iBAAiB,EAAE,4BAA4B;aAClD,CAAC;SACL;QACD,IAAI,aAAa,EAAE;YACf,MAAM,aAAa,CAAC;SACvB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,KAAa,EAAE,WAAmB;QACnD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAC9B,OAAO,WAAW,CAAC;SACtB;aAAM;YACH,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAClC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,MAAM,CAAC,EAAU;QAC3B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACjC,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAC;YACd,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa,CAAC,WAAwB;QAChD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;YACrD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;gBAC5C,OAAO,IAAI,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,CAAC;aAC9E;YACD,IAAI;gBACA,MAAM,cAAc,GAAgB,MAAM,IAAI,CAAC,iBAAiB,CAC5D,WAAW,CAAC,aAAa,CAC5B,CAAC;gBACF,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC5D,OAAO,cAAc,CAAA;aACxB;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAS,CAAC,aAAa,EAAE;oBACzC,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;iBAC9D;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAAC,WAAwB;QACnD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAClD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE;gBACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;aACpE;YACD,IAAI;gBACA,MAAM,cAAc,GAAgB,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE;oBAClF,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,IAAI;oBACnB,IAAI,EAAE,EAAE;iBACX,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC5D,OAAO,cAAc,CAAA;aACxB;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAS,CAAC,aAAa,EAAE;oBACzC,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;iBAC9D;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,wBAAwB,CAC5B,YAAqB;QAErB,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;SAChE;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE;gBACF,UAAU,EAAE,eAAe;gBAC3B,aAAa,EAAE,YAAY;aAC9B;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QACzB,IAAI,WAAW,GAAgB,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC7E,IAAI,WAAW,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;SAC7D;QACD,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE;YACnC,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE;gBAClD,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;aACzD;iBAAM;gBACH,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;aACvD;SACJ;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QACD,IAAI,QAAQ,GAAW,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAC9C,mBAAmB,CACtB,CAAC;QACF,IAAI,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ;YAC9B,QAAQ,CAAC,MAAM,IAAI,EAAE;YACrB,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;YACxB,QAAQ,GAAG,IAAA,aAAM,GAAE,CAAC;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACK,qBAAqB,CAAI,GAAY;QACzC,OAAO,OAAO,CAAC,MAAM,CAAC;YAClB,KAAK,EAAE,kBAAS,CAAC,eAAe;YAChC,iBAAiB,EAAE,GAAG;SACR,CAAC,CAAC;IACxB,CAAC;;AA9TL,oCA+TC;AA9TkB,0BAAa,GAAG,CAAC,CAAC;AAClB,sBAAS,GAAG,CAAC,CAAC;AACd,sBAAS,GAAG,CAAC,CAAC;AACd,2BAAc,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cloudbase/oauth",
|
|
3
|
+
"version": "0.1.1-alpha.1",
|
|
4
|
+
"description": "auth apis for cloudbase",
|
|
5
|
+
"author": "xbase",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
">=4.1": {
|
|
10
|
+
"*": [
|
|
11
|
+
"ts4.1/*"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"scripts": {
|
|
17
|
+
"eslint": "eslint \"{src,__tests__}/**/*.ts\"",
|
|
18
|
+
"eslint:fix": "eslint --fix \"{src,__tests__}/**/*.ts\"",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"compile": "tsc",
|
|
21
|
+
"build": "yarn clean && yarn compile && cp package.json dist/ && cp *.md dist/"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": "^12.14.1 || >=14.0.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@typescript-eslint/eslint-plugin": "^4.30.0",
|
|
28
|
+
"@typescript-eslint/parser": "^4.30.0",
|
|
29
|
+
"eslint": "^7.32.0",
|
|
30
|
+
"typescript": "^4.6.3"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.PromiseOnce = void 0;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Promise Once
|
|
6
6
|
*/
|
|
7
|
-
class
|
|
7
|
+
class PromiseOnce {
|
|
8
8
|
constructor() {
|
|
9
9
|
this._fnPromiseMap = new Map();
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Run
|
|
12
|
+
* Run Once promise.
|
|
13
13
|
* @param {string} key
|
|
14
14
|
* @param {Function} fn
|
|
15
15
|
* @return {Promise<T>}
|
|
@@ -44,5 +44,5 @@ class SinglePromise {
|
|
|
44
44
|
return Promise.resolve();
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
exports.
|
|
48
|
-
//# sourceMappingURL=
|
|
47
|
+
exports.PromiseOnce = PromiseOnce;
|
|
48
|
+
//# sourceMappingURL=promise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/utils/promise.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,WAAW;IAAxB;QAoCY,kBAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IACjE,CAAC;IApCG;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,EAAoB;QAC1C,IAAI,MAAM,GAAiB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,GAAG,IAAI,OAAO,CAAM,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gBAChD,IAAI;oBACA,6DAA6D;oBAC7D,wCAAwC;oBACxC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAe,EAAE,EAAE,CAAC;oBAClC,OAAO,CAAC,MAAM,QAAQ,CAAC,CAAC;iBAC3B;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;wBAAS;oBACN,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAClC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,eAAe;QACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CAGJ;AArCD,kCAqCC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/docs/dev.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
## 开发指南
|
|
2
|
+
|
|
3
|
+
此项目是由[Lerna](https://github.com/lerna/lerna)管理的 [monorepos](https://github.com/babel/babel/blob/master/doc/design/monorepo.md),需要在开发之前安装Lerna:
|
|
4
|
+
```bash
|
|
5
|
+
npm install --global lerna
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
### 安装依赖
|
|
9
|
+
clone项目到本地后首先执行以下命令:
|
|
10
|
+
```bash
|
|
11
|
+
lerna bootstrap
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### 构建
|
|
15
|
+
在根目录下运行:
|
|
16
|
+
```bash
|
|
17
|
+
npm run build
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 测试
|
|
21
|
+
#### E2E测试
|
|
22
|
+
```bash
|
|
23
|
+
npm run test:e2e
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Web端仿真测试
|
|
27
|
+
##### 准备工作
|
|
28
|
+
项目根目录下创建文件`test.config.js`,配置测试所需的信息,如下:
|
|
29
|
+
```js
|
|
30
|
+
/**
|
|
31
|
+
* 测试配置
|
|
32
|
+
*/
|
|
33
|
+
module.exports = {
|
|
34
|
+
// 环境id
|
|
35
|
+
env: '',
|
|
36
|
+
// 微信公众号appid,仅当需要测试微信登录时配置
|
|
37
|
+
appid: '',
|
|
38
|
+
// 获取自定义登录ticket的函数http访问地址,仅当需要测试自定义登录时配置
|
|
39
|
+
authFnUrl: '',
|
|
40
|
+
// 用户名密码登录-用户名,仅当需要测试用户名登录时配置
|
|
41
|
+
authUsername: '',
|
|
42
|
+
// 用户名密码登录-密码,仅当需要测试用户名登录时配置
|
|
43
|
+
authPassword: ''
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**请注意**,`auth`相关的测试case同时只能开启一种登录类型,请修改`test/web/index.js`文件的`init()`函数中的登录类型。
|
|
48
|
+
|
|
49
|
+
##### 启动dev server
|
|
50
|
+
Web仿真测试会在本机的80端口开启一个server,需要 sudo 权限:
|
|
51
|
+
```bash
|
|
52
|
+
sudo npm run test:web
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
##### 启动测试
|
|
56
|
+
浏览器或微信开发者工具(公众号网页开发模式)打开链接`jimmytest-088bef.tcb.qcloud.la`即可开启仿真测试页面,测试结果在控制台打印。
|
|
57
|
+
|
|
58
|
+
### 发布
|
|
59
|
+
#### 发布beta版本
|
|
60
|
+
```bash
|
|
61
|
+
npm run publish:beta
|
|
62
|
+
```
|
|
63
|
+
#### 发布正式版本
|
|
64
|
+
```bash
|
|
65
|
+
npm run publish
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
发布过程中需要为每个包选择版本号。
|
|
69
|
+
|
|
70
|
+
#### 添加新包
|
|
71
|
+
项目下新增包时,需要lerna add 新包名 --scope=@cloudbase/js-sdk
|
package/docs/errlog.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
## 更友好的错误提示
|
|
2
|
+
|
|
3
|
+
@cloudbase/js-sdk在开发环境下会将调用 API 的错误信息以更友好的方式打印到控制台,如下图所示:
|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
图中打印的错误是当前的登录类型受到函数的安全规则限制,导致没有调用函数的权限。错误信息分为两部分:
|
|
7
|
+
1. 上半部分的黑色字体提示包含了后端 API 返回的错误信息以及基于此报错的一些解决方案提示;
|
|
8
|
+
2. 下半部分的红色字体是经优化后的错误堆栈,由于原始错误堆栈层次太深导致debug非常困难,所以此处打印的错误堆栈的第一条直接定位到 SDK 源码,第二条定位到调用报错 API 的业务源码。
|
|
9
|
+
|
|
10
|
+
### 使用方式
|
|
11
|
+
优化的错误提示仅在开发环境中使用,根据`process.env.NODE_ENV`判断是否为开发环境。此外,定位到 SDK 源码需要借助sourcemap。
|
|
12
|
+
|
|
13
|
+
以上两点依赖构建工具的部分特性,目前仅支持 Webpack 和 Rollup。
|
|
14
|
+
|
|
15
|
+
#### Webpack
|
|
16
|
+
在 Webpack 4+ 版本中可以配置`mode`选项为`development`,如下:
|
|
17
|
+
```js
|
|
18
|
+
module.exports = {
|
|
19
|
+
mode: 'development'
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
如果是旧版本的 Webpack 需要使用[DefinePlugin](https://webpack.js.org/plugins/define-plugin/):
|
|
24
|
+
```js
|
|
25
|
+
const webpack = require('webpack')
|
|
26
|
+
|
|
27
|
+
module.exports = {
|
|
28
|
+
plugins: [
|
|
29
|
+
new webpack.DefinePlugin({
|
|
30
|
+
'process.env.NODE_ENV': JSON.stringify('development')
|
|
31
|
+
})
|
|
32
|
+
// ...其他插件
|
|
33
|
+
]
|
|
34
|
+
// ...其他配置
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
然后为js的编译选项加入sourcemap预处理,这里需要使用[source-map-loader](https://github.com/webpack-contrib/source-map-loader):
|
|
39
|
+
```js
|
|
40
|
+
module.exports = {
|
|
41
|
+
module: {
|
|
42
|
+
rules: [
|
|
43
|
+
{
|
|
44
|
+
test: /\.js$/,
|
|
45
|
+
enforce: 'pre',
|
|
46
|
+
use: ['source-map-loader']
|
|
47
|
+
}
|
|
48
|
+
// ...其他rules
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
// ...其他配置
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
配置完成后启动webpack-dev-server即可。
|
|
56
|
+
|
|
57
|
+
#### Rollup
|
|
58
|
+
Rollup需要使用两个插件:
|
|
59
|
+
- [rollup-plugin-replace](https://github.com/rollup/rollup-plugin-replace)用来注入`process.env.NODE_ENV`
|
|
60
|
+
- [rollup-plugin-sourcemaps](https://github.com/maxdavidson/rollup-plugin-sourcemaps)用来加载sourcemap
|
|
61
|
+
|
|
62
|
+
配置如下:
|
|
63
|
+
```js
|
|
64
|
+
import sourcemaps from 'rollup-plugin-sourcemaps';
|
|
65
|
+
import replace from 'rollup-plugin-replace';
|
|
66
|
+
export default {
|
|
67
|
+
plugins: [
|
|
68
|
+
sourcemaps(),
|
|
69
|
+
replace({
|
|
70
|
+
'process.env.NODE_ENV': JSON.stringify('development')
|
|
71
|
+
})
|
|
72
|
+
// ...其他插件
|
|
73
|
+
]
|
|
74
|
+
// ...其他配置
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
配置完成使用[rollup-plugin-serve](https://github.com/thgh/rollup-plugin-serve)启动dev server即可。
|
|
79
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudbase/oauth",
|
|
3
|
-
"version": "0.1.1-alpha",
|
|
3
|
+
"version": "0.1.1-alpha.2",
|
|
4
4
|
"description": "auth apis for cloudbase",
|
|
5
5
|
"author": "xbase",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@typescript-eslint/eslint-plugin": "^4.30.0",
|
|
28
28
|
"@typescript-eslint/parser": "^4.30.0",
|
|
29
|
-
"eslint": "^7.32.0"
|
|
29
|
+
"eslint": "^7.32.0",
|
|
30
|
+
"typescript": "^4.6.3"
|
|
30
31
|
}
|
|
31
32
|
}
|
package/publish.sh
ADDED
package/src/app/index.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {defaultRequest, RequestFn as requestFn, RequestOptions as requestOptions} from "./request";
|
|
2
|
+
import {OpenURIWithCallback as openURIWithCallback, defaultOpenURIWithCallback} from "./openuri";
|
|
3
|
+
import {DefaultStorage, Storage as storage} from "./storage";
|
|
4
|
+
|
|
5
|
+
export interface Options {
|
|
6
|
+
env: string,
|
|
7
|
+
region?: string,
|
|
8
|
+
apiOrigin?: string;
|
|
9
|
+
clientId?: string;
|
|
10
|
+
clientSecret?: string;
|
|
11
|
+
custom?: any;
|
|
12
|
+
|
|
13
|
+
// plugins can set platform functions
|
|
14
|
+
request?: requestFn;
|
|
15
|
+
storage?: storage;
|
|
16
|
+
openURIWithCallback?: openURIWithCallback;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function initializeApp(
|
|
20
|
+
options: Options,
|
|
21
|
+
): App {
|
|
22
|
+
return new AppImpl(options);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface App {
|
|
26
|
+
readonly options: Options;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class AppImpl implements App {
|
|
30
|
+
private readonly _options: Options;
|
|
31
|
+
private readonly _container = new Map<string, any>();
|
|
32
|
+
|
|
33
|
+
constructor(options: Options) {
|
|
34
|
+
if (!options.region) {
|
|
35
|
+
options.region = 'ap-shanghai'
|
|
36
|
+
}
|
|
37
|
+
if (!options.apiOrigin) {
|
|
38
|
+
options.apiOrigin = `https://${options.env}.${options.region}.tcb-api.tencentcloudapi.com`
|
|
39
|
+
}
|
|
40
|
+
let storageEnv = options.env
|
|
41
|
+
if (!options.clientId) {
|
|
42
|
+
options.clientId = ''
|
|
43
|
+
} else {
|
|
44
|
+
storageEnv = options.clientId
|
|
45
|
+
}
|
|
46
|
+
if (!options.storage) {
|
|
47
|
+
options.storage = new DefaultStorage({env: storageEnv});
|
|
48
|
+
}
|
|
49
|
+
if (!options.openURIWithCallback) {
|
|
50
|
+
options.openURIWithCallback = defaultOpenURIWithCallback;
|
|
51
|
+
}
|
|
52
|
+
let baseRequest = options.request
|
|
53
|
+
if (!baseRequest) {
|
|
54
|
+
baseRequest = defaultRequest
|
|
55
|
+
}
|
|
56
|
+
const apiOrigin = options.apiOrigin
|
|
57
|
+
options.request = async <T>(
|
|
58
|
+
url: string,
|
|
59
|
+
options?: RequestOptions,
|
|
60
|
+
): Promise<T> => {
|
|
61
|
+
if (url.startsWith('/')) {
|
|
62
|
+
url = apiOrigin + url;
|
|
63
|
+
}
|
|
64
|
+
return baseRequest<T>(url, options)
|
|
65
|
+
}
|
|
66
|
+
this._options = options;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
get options(): Options {
|
|
70
|
+
return this._options;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
get container(): Map<string, any> {
|
|
74
|
+
return this._container;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
export type RequestFn = requestFn
|
|
80
|
+
export type RequestOptions = requestOptions
|
|
81
|
+
export type OpenURIWithCallback = openURIWithCallback
|
|
82
|
+
export type Storage = storage
|
|
83
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {App, AppImpl} from "./index";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param app - App instance
|
|
6
|
+
* @param name - service name
|
|
7
|
+
* @param creator - new T
|
|
8
|
+
*
|
|
9
|
+
* @returns the provider for the service with the matching name
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export function _getComponent<T>(
|
|
14
|
+
app: App,
|
|
15
|
+
name: string,
|
|
16
|
+
creator: () => T
|
|
17
|
+
): T {
|
|
18
|
+
const container = (app as AppImpl).container
|
|
19
|
+
let component = container.get(name)
|
|
20
|
+
if (component) {
|
|
21
|
+
return component as T
|
|
22
|
+
}
|
|
23
|
+
component = creator()
|
|
24
|
+
container.set(name, component)
|
|
25
|
+
return component
|
|
26
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export type OpenURIWithCallback = (url: string, opts?: OpenURIOptions) => Promise<{ [key: string]: string }>;
|
|
2
|
+
|
|
3
|
+
export interface OpenURIOptions {
|
|
4
|
+
width: string;
|
|
5
|
+
height: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* default use iframe to open url can return callback
|
|
10
|
+
* for example : open https://example.com/callback?rediret_uri=http://127.0.0.1:8080/
|
|
11
|
+
* the it is done, it will callback http://127.0.0.1:8080/?data1=x&data2=3
|
|
12
|
+
*
|
|
13
|
+
* for example : open https://example.com/callback?rediret_uri=http://127.0.0.1:8080/?__iframe==on
|
|
14
|
+
* window.addEventListener('message', function(e) {
|
|
15
|
+
console.log(e)
|
|
16
|
+
alert('data from domain2 ---> ' + e.data);
|
|
17
|
+
}, false);
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export const defaultOpenURIWithCallback: OpenURIWithCallback = (url: string, opts?: OpenURIOptions): Promise<{ [key: string]: string }> => {
|
|
21
|
+
let iframeTag = '__iframe';
|
|
22
|
+
if (window.location.search.indexOf(iframeTag) > 0) {
|
|
23
|
+
document.body.style.display = 'none';
|
|
24
|
+
}
|
|
25
|
+
if (!opts) {
|
|
26
|
+
opts = {
|
|
27
|
+
width: '355px',
|
|
28
|
+
height: '355px'
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (document.getElementById('_iframe_panel_wrap') === null) {
|
|
32
|
+
var elementDiv = document.createElement('div');
|
|
33
|
+
elementDiv.style.cssText =
|
|
34
|
+
'background-color: rgba(0, 0, 0, 0.7);position: fixed;left: 0px;right: 0px;top: 0px;bottom: 0px;padding: 9vw 0 0 0;display: none;z-index:100;';
|
|
35
|
+
elementDiv.setAttribute('id', '_iframe_panel_wrap');
|
|
36
|
+
document.body.appendChild(elementDiv);
|
|
37
|
+
}
|
|
38
|
+
const target = document.getElementById('_iframe_panel_wrap'),
|
|
39
|
+
iframe = document.createElement('iframe')
|
|
40
|
+
target.innerHTML = '';
|
|
41
|
+
const openURL = new URL(url);
|
|
42
|
+
const redirectUri = openURL.searchParams.get('redirect_uri')
|
|
43
|
+
if (redirectUri) {
|
|
44
|
+
const redirectUrl = new URL(redirectUri);
|
|
45
|
+
redirectUrl.searchParams.append(iframeTag, "on")
|
|
46
|
+
openURL.searchParams.set('redirect_uri', redirectUrl.href)
|
|
47
|
+
url = openURL.href
|
|
48
|
+
}
|
|
49
|
+
iframe.setAttribute('src', url)
|
|
50
|
+
iframe.setAttribute('id', '_iframe_panel_wrap_iframe')
|
|
51
|
+
iframe.style.cssText = `min-width:${opts.width};display:block;height:${opts.height};margin:0 auto;background-color: rgb(255, 255, 255);border: none;`;
|
|
52
|
+
target.appendChild(iframe);
|
|
53
|
+
target.style.display = 'block';
|
|
54
|
+
|
|
55
|
+
let callBack = new Callback()
|
|
56
|
+
// handle callback from iframe post message
|
|
57
|
+
window.addEventListener('message', e => {
|
|
58
|
+
if (e.origin == openURL.origin && callBack.callFunc) {
|
|
59
|
+
target.style.display = 'none';
|
|
60
|
+
const data = JSON.parse(e.data);
|
|
61
|
+
try {
|
|
62
|
+
callBack.callFunc(data)
|
|
63
|
+
} catch (e) {
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}, false);
|
|
67
|
+
return new Promise<{ [key: string]: string }>((resolve, reject) => {
|
|
68
|
+
callBack.callFunc = data => {
|
|
69
|
+
if (data.error) {
|
|
70
|
+
return reject(data)
|
|
71
|
+
}
|
|
72
|
+
return resolve(data)
|
|
73
|
+
}
|
|
74
|
+
// handle callback from iframe redirect uri
|
|
75
|
+
iframe.onload = () => {
|
|
76
|
+
try {
|
|
77
|
+
var windowLocation = window.location;
|
|
78
|
+
var iframeLocation = iframe.contentWindow.location;
|
|
79
|
+
if (
|
|
80
|
+
iframeLocation.host +
|
|
81
|
+
iframeLocation.pathname ===
|
|
82
|
+
windowLocation.host +
|
|
83
|
+
windowLocation.pathname
|
|
84
|
+
) {
|
|
85
|
+
target.style.display = 'none';
|
|
86
|
+
const iframeUrlParams = new URLSearchParams(iframeLocation.search);
|
|
87
|
+
const data: { [key: string]: string } = {};
|
|
88
|
+
iframeUrlParams.forEach((v, k) => {
|
|
89
|
+
data[k] = v;
|
|
90
|
+
})
|
|
91
|
+
if (data.error) {
|
|
92
|
+
return reject({
|
|
93
|
+
error: iframeUrlParams.get('error'),
|
|
94
|
+
error_description: iframeUrlParams.get('error_description')
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
return resolve(data)
|
|
98
|
+
} else {
|
|
99
|
+
target.style.display = 'block';
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
target.style.display = 'block';
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
})
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class Callback {
|
|
110
|
+
public callFunc: (data?: { [key: string]: string }) => void;
|
|
111
|
+
}
|