@cloudbase/oauth 0.0.5-alpha.0 → 0.1.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +137 -5
  3. package/app/index.d.ts +28 -0
  4. package/app/index.js +54 -0
  5. package/app/index.js.map +1 -0
  6. package/app/internal.d.ts +12 -0
  7. package/app/internal.js +25 -0
  8. package/app/internal.js.map +1 -0
  9. package/app/openuri.d.ts +20 -0
  10. package/app/openuri.js +104 -0
  11. package/app/openuri.js.map +1 -0
  12. package/app/request.d.ts +18 -0
  13. package/app/request.js +44 -0
  14. package/app/request.js.map +1 -0
  15. package/app/storage.d.ts +41 -0
  16. package/app/storage.js +35 -0
  17. package/app/storage.js.map +1 -0
  18. package/{dist/auth → auth}/consts.d.ts +21 -1
  19. package/auth/consts.js +57 -0
  20. package/auth/consts.js.map +1 -0
  21. package/auth/index.d.ts +193 -0
  22. package/auth/index.js +403 -0
  23. package/auth/index.js.map +1 -0
  24. package/{dist/auth → auth}/models.d.ts +35 -25
  25. package/auth/models.js +3 -0
  26. package/auth/models.js.map +1 -0
  27. package/captcha/index.d.ts +45 -0
  28. package/captcha/index.js +133 -0
  29. package/captcha/index.js.map +1 -0
  30. package/index.d.ts +8 -0
  31. package/index.js +17 -0
  32. package/index.js.map +1 -0
  33. package/{dist/oauth2client → oauthclient}/consts.d.ts +1 -22
  34. package/oauthclient/consts.js +53 -0
  35. package/oauthclient/consts.js.map +1 -0
  36. package/oauthclient/index.d.ts +18 -0
  37. package/oauthclient/index.js +21 -0
  38. package/oauthclient/index.js.map +1 -0
  39. package/oauthclient/interface.d.ts +25 -0
  40. package/oauthclient/interface.js +10 -0
  41. package/oauthclient/interface.js.map +1 -0
  42. package/{dist/oauth2client → oauthclient}/models.d.ts +5 -13
  43. package/oauthclient/models.js +3 -0
  44. package/oauthclient/models.js.map +1 -0
  45. package/oauthclient/oauthclient.d.ts +142 -0
  46. package/oauthclient/oauthclient.js +399 -0
  47. package/oauthclient/oauthclient.js.map +1 -0
  48. package/package.json +29 -33
  49. package/utils/single-promise.d.ts +18 -0
  50. package/utils/single-promise.js +48 -0
  51. package/utils/single-promise.js.map +1 -0
  52. package/utils/uuid.d.ts +5 -0
  53. package/utils/uuid.js +16 -0
  54. package/utils/uuid.js.map +1 -0
  55. package/.eslintignore +0 -2
  56. package/.eslintrc +0 -26
  57. package/dist/auth/apis.d.ts +0 -44
  58. package/dist/auth/apis.js +0 -448
  59. package/dist/auth/consts.js +0 -35
  60. package/dist/auth/models.js +0 -3
  61. package/dist/captcha/captcha.d.ts +0 -35
  62. package/dist/captcha/captcha.js +0 -262
  63. package/dist/index.d.ts +0 -9
  64. package/dist/index.js +0 -234
  65. package/dist/oauth2client/consts.js +0 -73
  66. package/dist/oauth2client/interface.d.ts +0 -15
  67. package/dist/oauth2client/interface.js +0 -10
  68. package/dist/oauth2client/models.js +0 -3
  69. package/dist/oauth2client/oauth2client.d.ts +0 -70
  70. package/dist/oauth2client/oauth2client.js +0 -618
  71. package/dist/utils/function/single-promise.d.ts +0 -5
  72. package/dist/utils/function/single-promise.js +0 -89
  73. package/dist/utils/uuid.d.ts +0 -1
  74. package/dist/utils/uuid.js +0 -12
  75. package/src/auth/apis.ts +0 -507
  76. package/src/auth/consts.ts +0 -30
  77. package/src/auth/models.ts +0 -178
  78. package/src/captcha/captcha.ts +0 -217
  79. package/src/index.ts +0 -162
  80. package/src/oauth2client/consts.ts +0 -69
  81. package/src/oauth2client/interface.ts +0 -57
  82. package/src/oauth2client/models.ts +0 -61
  83. package/src/oauth2client/oauth2client.ts +0 -606
  84. package/src/utils/function/single-promise.ts +0 -40
  85. package/src/utils/uuid.ts +0 -11
  86. package/tsconfig.json +0 -44
@@ -0,0 +1,142 @@
1
+ import { ErrorType } from './consts';
2
+ import { AuthClient } from './interface';
3
+ import { Storage } from "../app";
4
+ import { Credentials, ResponseError, OAuth2ClientOptions, AuthClientRequestOptions } from './models';
5
+ export interface ToResponseErrorOptions {
6
+ error?: ErrorType;
7
+ error_description?: string | null;
8
+ error_uri?: string | null;
9
+ details?: any | null;
10
+ }
11
+ export declare const toResponseError: (error: ResponseError | Error, options?: ToResponseErrorOptions) => ResponseError;
12
+ /**
13
+ * Generate request id.
14
+ * @return {string}
15
+ */
16
+ export declare function generateRequestId(): string;
17
+ interface LocalCredentialsOptions {
18
+ tokenSectionName: string;
19
+ storage: Storage;
20
+ }
21
+ /**
22
+ * Local credentials.
23
+ * Local credentials, with memory cache and storage cache.
24
+ * If the memory cache expires, the storage cache is automatically loaded.
25
+ */
26
+ export declare class LocalCredentials {
27
+ private _tokenSectionName;
28
+ private _storage;
29
+ private _credentials;
30
+ private _singlePromise;
31
+ /**
32
+ * constructor
33
+ * @param {LocalCredentialsOptions} options
34
+ */
35
+ constructor(options: LocalCredentialsOptions);
36
+ /**
37
+ * setCredentials Provides an alternative fetch api request implementation with auth credentials
38
+ * @param {Credentials} credentials
39
+ */
40
+ setCredentials(credentials?: Credentials): Promise<void>;
41
+ /**
42
+ * Get credentials.
43
+ * @return {Promise<Credentials | null>}
44
+ */
45
+ getCredentials(): Promise<Credentials | null>;
46
+ /**
47
+ * Get storage credentials.
48
+ */
49
+ private _getStorageCredentials;
50
+ }
51
+ /**
52
+ * OAuth2Client
53
+ */
54
+ export declare class OAuth2Client implements AuthClient {
55
+ private static _defaultRetry;
56
+ private static _minRetry;
57
+ private static _maxRetry;
58
+ private static _retryInterval;
59
+ private _retry;
60
+ private _baseRequest;
61
+ private _basicAuth?;
62
+ private _localCredentials;
63
+ private _storage;
64
+ private _deviceID?;
65
+ private _tokenInURL?;
66
+ private _refreshTokenFunc;
67
+ private _headers?;
68
+ private _singlePromise;
69
+ /**
70
+ * constructor
71
+ * @param {OAuth2ClientOptions} options
72
+ */
73
+ constructor(options: OAuth2ClientOptions);
74
+ /**
75
+ * setCredentials Provides an alternative fetch api request implementation with auth credentials
76
+ * @param {Credentials} credentials
77
+ * @return {Promise<void>}
78
+ */
79
+ setCredentials(credentials?: Credentials): Promise<void>;
80
+ /**
81
+ * getAccessToken return a validate access token
82
+ */
83
+ getAccessToken(): Promise<string>;
84
+ /**
85
+ * request http like simple fetch api, exp:request('/v1/user/me', {withCredentials:true})
86
+ * @param {string} url
87
+ * @param {AuthClientRequestOptions} options
88
+ */
89
+ request<T>(url: string, options?: AuthClientRequestOptions): Promise<T>;
90
+ /**
91
+ * Check retry value.
92
+ * @param {number} retry
93
+ * @return {number}
94
+ */
95
+ private _checkRetry;
96
+ /**
97
+ * Format retry value.
98
+ * @param {number} retry
99
+ * @param {number} defaultVale
100
+ * @return {number}
101
+ */
102
+ private _formatRetry;
103
+ /**
104
+ * Sleep.
105
+ * @param {number} ms
106
+ * @return {Promise<void>}
107
+ */
108
+ private _sleep;
109
+ /**
110
+ * Refresh expired token.
111
+ * @param {Credentials} credentials
112
+ * @return {Promise<Credentials>}
113
+ */
114
+ private _refreshToken;
115
+ /**
116
+ * anonymous signIn
117
+ * @param {Credentials} credentials
118
+ * @return {Promise<Credentials>}
119
+ */
120
+ private _anonymousSignIn;
121
+ /**
122
+ * Default refresh token function.
123
+ * @param {string} refreshToken
124
+ * @return {Promise<Credentials>}
125
+ */
126
+ private _defaultRefreshTokenFunc;
127
+ /**
128
+ * Get credentials.
129
+ */
130
+ private _getCredentials;
131
+ /**
132
+ * Get deviceId
133
+ */
134
+ private _getDeviceId;
135
+ /**
136
+ * Generate unAuthenticated error.
137
+ * @param {string} err
138
+ * @return {Promise<T>}
139
+ */
140
+ private _unAuthenticatedError;
141
+ }
142
+ export {};
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OAuth2Client = exports.LocalCredentials = exports.generateRequestId = exports.toResponseError = void 0;
4
+ const consts_1 = require("./consts");
5
+ const uuid_1 = require("../utils/uuid");
6
+ const single_promise_1 = require("../utils/single-promise");
7
+ const RequestIdHeaderName = 'x-request-id';
8
+ const DeviceIdHeaderName = 'x-device-id';
9
+ const DeviceIdSectionName = 'device_';
10
+ exports.toResponseError = (error, options) => {
11
+ let responseError;
12
+ const formatOptions = options || {};
13
+ if (error instanceof Error) {
14
+ responseError = {
15
+ error: formatOptions.error || consts_1.ErrorType.LOCAL,
16
+ error_description: formatOptions.error_description || error.message,
17
+ error_uri: formatOptions.error_uri,
18
+ details: formatOptions.details || error.stack,
19
+ };
20
+ }
21
+ else {
22
+ const formatError = error || {};
23
+ responseError = {
24
+ error: formatOptions.error || formatError.error || consts_1.ErrorType.LOCAL,
25
+ error_description: formatOptions.error_description || formatError.error_description,
26
+ error_uri: formatOptions.error_uri || formatError.error_uri,
27
+ details: formatOptions.details || formatError.details,
28
+ };
29
+ }
30
+ return responseError;
31
+ };
32
+ /**
33
+ * Generate request id.
34
+ * @return {string}
35
+ */
36
+ function generateRequestId() {
37
+ return uuid_1.uuidv4();
38
+ }
39
+ exports.generateRequestId = generateRequestId;
40
+ /**
41
+ * Check if credentials is expired.
42
+ * @param {Credentials} credentials
43
+ * @return {boolean}
44
+ */
45
+ function isCredentialsExpired(credentials) {
46
+ let isExpired = true;
47
+ if (credentials && credentials.expires_at && credentials.access_token) {
48
+ isExpired = credentials.expires_at < new Date();
49
+ }
50
+ return isExpired;
51
+ }
52
+ /**
53
+ * Local credentials.
54
+ * Local credentials, with memory cache and storage cache.
55
+ * If the memory cache expires, the storage cache is automatically loaded.
56
+ */
57
+ class LocalCredentials {
58
+ /**
59
+ * constructor
60
+ * @param {LocalCredentialsOptions} options
61
+ */
62
+ constructor(options) {
63
+ this._credentials = null;
64
+ this._singlePromise = new single_promise_1.SinglePromise();
65
+ this._tokenSectionName = options.tokenSectionName;
66
+ this._storage = options.storage;
67
+ }
68
+ /**
69
+ * setCredentials Provides an alternative fetch api request implementation with auth credentials
70
+ * @param {Credentials} credentials
71
+ */
72
+ async setCredentials(credentials) {
73
+ if (credentials && credentials.expires_in) {
74
+ credentials.expires_at = new Date(Date.now() + (credentials.expires_in - 30) * 1000);
75
+ if (this._storage) {
76
+ const tokenStr = JSON.stringify(credentials);
77
+ await this._storage.setItem(this._tokenSectionName, tokenStr);
78
+ }
79
+ this._credentials = credentials;
80
+ }
81
+ else {
82
+ if (this._storage) {
83
+ await this._storage.removeItem(this._tokenSectionName);
84
+ }
85
+ this._credentials = null;
86
+ }
87
+ }
88
+ /**
89
+ * Get credentials.
90
+ * @return {Promise<Credentials | null>}
91
+ */
92
+ async getCredentials() {
93
+ return this._singlePromise.run('getCredentials', async () => {
94
+ if (isCredentialsExpired(this._credentials)) {
95
+ this._credentials = await this._getStorageCredentials();
96
+ }
97
+ return this._credentials;
98
+ });
99
+ }
100
+ /**
101
+ * Get storage credentials.
102
+ */
103
+ async _getStorageCredentials() {
104
+ return this._singlePromise.run('_getStorageCredentials', async () => {
105
+ let credentials = null;
106
+ const tokenStr = await this._storage.getItem(this._tokenSectionName);
107
+ if (tokenStr !== undefined && tokenStr !== null) {
108
+ try {
109
+ credentials = JSON.parse(tokenStr);
110
+ if (credentials && credentials.expires_at) {
111
+ credentials.expires_at = new Date(credentials.expires_at);
112
+ }
113
+ }
114
+ catch (error) {
115
+ await this._storage.removeItem(this._tokenSectionName);
116
+ credentials = null;
117
+ }
118
+ }
119
+ return credentials;
120
+ });
121
+ }
122
+ }
123
+ exports.LocalCredentials = LocalCredentials;
124
+ /**
125
+ * OAuth2Client
126
+ */
127
+ class OAuth2Client {
128
+ /**
129
+ * constructor
130
+ * @param {OAuth2ClientOptions} options
131
+ */
132
+ constructor(options) {
133
+ this._singlePromise = new single_promise_1.SinglePromise();
134
+ this._retry = this._formatRetry(options.retry, OAuth2Client._defaultRetry);
135
+ this._baseRequest = options.request;
136
+ if (!options.clientSecret) {
137
+ options.clientSecret = "";
138
+ }
139
+ if (options.clientId !== '') {
140
+ this._basicAuth = "Basic " + btoa(options.clientId + ":" + options.clientSecret);
141
+ }
142
+ this._tokenInURL = options.tokenInURL;
143
+ this._headers = options.headers;
144
+ // @ts-ignore
145
+ this._storage = options.storage || defaultStorage;
146
+ this._localCredentials = new LocalCredentials({
147
+ tokenSectionName: 'credentials_',
148
+ storage: this._storage,
149
+ });
150
+ this._refreshTokenFunc =
151
+ options.refreshTokenFunc || this._defaultRefreshTokenFunc;
152
+ }
153
+ /**
154
+ * setCredentials Provides an alternative fetch api request implementation with auth credentials
155
+ * @param {Credentials} credentials
156
+ * @return {Promise<void>}
157
+ */
158
+ setCredentials(credentials) {
159
+ return this._localCredentials.setCredentials(credentials);
160
+ }
161
+ /**
162
+ * getAccessToken return a validate access token
163
+ */
164
+ async getAccessToken() {
165
+ const credentials = await this._getCredentials();
166
+ if (credentials && credentials.access_token) {
167
+ return Promise.resolve(credentials.access_token);
168
+ }
169
+ return Promise.reject({ error: consts_1.ErrorType.UNAUTHENTICATED });
170
+ }
171
+ /**
172
+ * request http like simple fetch api, exp:request('/v1/user/me', {withCredentials:true})
173
+ * @param {string} url
174
+ * @param {AuthClientRequestOptions} options
175
+ */
176
+ async request(url, options) {
177
+ if (!options) {
178
+ options = {};
179
+ }
180
+ const retry = this._formatRetry(options.retry, this._retry);
181
+ options.headers = options.headers || {};
182
+ if (this._headers) {
183
+ options.headers = {
184
+ ...this._headers,
185
+ ...options.headers,
186
+ };
187
+ }
188
+ if (!options.headers[RequestIdHeaderName]) {
189
+ options.headers[RequestIdHeaderName] = generateRequestId();
190
+ }
191
+ if (!options.headers[DeviceIdHeaderName]) {
192
+ const deviceId = await this._getDeviceId();
193
+ options.headers[DeviceIdHeaderName] = deviceId;
194
+ }
195
+ if (options && options.withBasicAuth && this._basicAuth) {
196
+ options.headers['Authorization'] = this._basicAuth;
197
+ }
198
+ if (options && options.withCredentials) {
199
+ const credentials = await this._getCredentials();
200
+ if (credentials) {
201
+ if (this._tokenInURL) {
202
+ if (url.indexOf('?') < 0) {
203
+ url += '?';
204
+ }
205
+ url += 'access_token=' + credentials.access_token;
206
+ }
207
+ else {
208
+ options.headers['Authorization'] =
209
+ credentials.token_type + ' ' + credentials.access_token;
210
+ }
211
+ }
212
+ }
213
+ let response = null;
214
+ const maxRequestTimes = retry + 1;
215
+ for (let requestTime = 0; requestTime < maxRequestTimes; requestTime++) {
216
+ try {
217
+ response = await this._baseRequest(url, options);
218
+ break;
219
+ }
220
+ catch (responseError) {
221
+ if (requestTime === retry ||
222
+ !responseError ||
223
+ responseError.error !== 'unreachable') {
224
+ return Promise.reject(responseError);
225
+ }
226
+ }
227
+ await this._sleep(OAuth2Client._retryInterval);
228
+ }
229
+ return response;
230
+ }
231
+ /**
232
+ * Check retry value.
233
+ * @param {number} retry
234
+ * @return {number}
235
+ */
236
+ _checkRetry(retry) {
237
+ let responseError = null;
238
+ if (typeof retry !== 'number' ||
239
+ retry < OAuth2Client._minRetry ||
240
+ retry > OAuth2Client._maxRetry) {
241
+ responseError = {
242
+ error: consts_1.ErrorType.UNREACHABLE,
243
+ error_description: 'wrong options param: retry',
244
+ };
245
+ }
246
+ if (responseError) {
247
+ throw responseError;
248
+ }
249
+ return retry;
250
+ }
251
+ /**
252
+ * Format retry value.
253
+ * @param {number} retry
254
+ * @param {number} defaultVale
255
+ * @return {number}
256
+ */
257
+ _formatRetry(retry, defaultVale) {
258
+ if (typeof retry === 'undefined') {
259
+ return defaultVale;
260
+ }
261
+ else {
262
+ return this._checkRetry(retry);
263
+ }
264
+ }
265
+ /**
266
+ * Sleep.
267
+ * @param {number} ms
268
+ * @return {Promise<void>}
269
+ */
270
+ async _sleep(ms) {
271
+ return new Promise((resolve) => {
272
+ setTimeout(() => {
273
+ resolve();
274
+ }, ms);
275
+ });
276
+ }
277
+ /**
278
+ * Refresh expired token.
279
+ * @param {Credentials} credentials
280
+ * @return {Promise<Credentials>}
281
+ */
282
+ async _refreshToken(credentials) {
283
+ return this._singlePromise.run('_refreshToken', async () => {
284
+ if (!credentials || !credentials.refresh_token) {
285
+ return this._unAuthenticatedError('no refresh token found in credentials');
286
+ }
287
+ try {
288
+ const newCredentials = await this._refreshTokenFunc(credentials.refresh_token);
289
+ await this._localCredentials.setCredentials(newCredentials);
290
+ return newCredentials;
291
+ }
292
+ catch (error) {
293
+ if (error.error === consts_1.ErrorType.INVALID_GRANT) {
294
+ await this._localCredentials.setCredentials(null);
295
+ return this._unAuthenticatedError(error.error_description);
296
+ }
297
+ return Promise.reject(error);
298
+ }
299
+ });
300
+ }
301
+ /**
302
+ * anonymous signIn
303
+ * @param {Credentials} credentials
304
+ * @return {Promise<Credentials>}
305
+ */
306
+ async _anonymousSignIn(credentials) {
307
+ return this._singlePromise.run('_anonymous', async () => {
308
+ if (!credentials || credentials.scope !== 'anonymous') {
309
+ return this._unAuthenticatedError('no anonymous in credentials');
310
+ }
311
+ try {
312
+ const newCredentials = await this.request('/auth/v1/signin/anonymously', {
313
+ method: 'POST',
314
+ withBasicAuth: true,
315
+ body: {}
316
+ });
317
+ await this._localCredentials.setCredentials(newCredentials);
318
+ return newCredentials;
319
+ }
320
+ catch (error) {
321
+ if (error.error === consts_1.ErrorType.INVALID_GRANT) {
322
+ await this._localCredentials.setCredentials(null);
323
+ return this._unAuthenticatedError(error.error_description);
324
+ }
325
+ return Promise.reject(error);
326
+ }
327
+ });
328
+ }
329
+ /**
330
+ * Default refresh token function.
331
+ * @param {string} refreshToken
332
+ * @return {Promise<Credentials>}
333
+ */
334
+ _defaultRefreshTokenFunc(refreshToken) {
335
+ if (refreshToken === undefined || refreshToken === '') {
336
+ return this._unAuthenticatedError('refresh token not found');
337
+ }
338
+ return this.request('/auth/v1/token', {
339
+ method: 'POST',
340
+ withBasicAuth: true,
341
+ body: {
342
+ grant_type: 'refresh_token',
343
+ refresh_token: refreshToken,
344
+ },
345
+ });
346
+ }
347
+ /**
348
+ * Get credentials.
349
+ */
350
+ async _getCredentials() {
351
+ let credentials = await this._localCredentials.getCredentials();
352
+ if (credentials == null) {
353
+ return this._unAuthenticatedError("credentials not found");
354
+ }
355
+ if (isCredentialsExpired(credentials)) {
356
+ if (credentials && credentials.scope === 'anonymous') {
357
+ credentials = await this._anonymousSignIn(credentials);
358
+ }
359
+ else {
360
+ credentials = await this._refreshToken(credentials);
361
+ }
362
+ }
363
+ return credentials;
364
+ }
365
+ /**
366
+ * Get deviceId
367
+ */
368
+ async _getDeviceId() {
369
+ if (this._deviceID) {
370
+ return this._deviceID;
371
+ }
372
+ let deviceId = await this._storage.getItem(DeviceIdSectionName);
373
+ if (!(typeof deviceId === 'string' &&
374
+ deviceId.length >= 16 &&
375
+ deviceId.length <= 48)) {
376
+ deviceId = uuid_1.uuidv4();
377
+ await this._storage.setItem(DeviceIdSectionName, deviceId);
378
+ }
379
+ this._deviceID = deviceId;
380
+ return deviceId;
381
+ }
382
+ /**
383
+ * Generate unAuthenticated error.
384
+ * @param {string} err
385
+ * @return {Promise<T>}
386
+ */
387
+ _unAuthenticatedError(err) {
388
+ return Promise.reject({
389
+ error: consts_1.ErrorType.UNAUTHENTICATED,
390
+ error_description: err,
391
+ });
392
+ }
393
+ }
394
+ exports.OAuth2Client = OAuth2Client;
395
+ OAuth2Client._defaultRetry = 2;
396
+ OAuth2Client._minRetry = 0;
397
+ OAuth2Client._maxRetry = 5;
398
+ OAuth2Client._retryInterval = 1000;
399
+ //# sourceMappingURL=oauthclient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthclient.js","sourceRoot":"","sources":["../../src/oauthclient/oauthclient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,35 +1,31 @@
1
1
  {
2
- "name": "@cloudbase/oauth",
3
- "version": "0.0.5-alpha.0",
4
- "description": "cloudbase javascript sdk auth componets",
5
- "main": "./dist/index.js",
6
- "module": "dist/esm/index.js",
7
- "publishConfig": {
8
- "access": "public"
9
- },
10
- "scripts": {
11
- "eslint": "eslint \"{src,__tests__}/**/*.ts\"",
12
- "eslint:fix": "eslint --fix \"{src,__tests__}/**/*.ts\"",
13
- "clean": "rimraf dist",
14
- "compile": "tsc",
15
- "build": "yarn clean && yarn compile"
16
- },
17
- "license": "MIT",
18
- "devDependencies": {
19
- "@typescript-eslint/eslint-plugin": "^2.24.0",
20
- "@typescript-eslint/parser": "^2.24.0",
21
- "eslint": "^6.8.0",
22
- "eslint-config-google": "^0.14.0",
23
- "eslint-config-prettier": "^6.10.0",
24
- "eslint-plugin-prettier": "^3.1.2",
25
- "prettier": "^1.19.1",
26
- "rimraf": "^3.0.0",
27
- "typescript": "^3.8.3"
28
- },
29
- "dependencies": {
30
- "@cloudbase/app": "^1.5.3-alpha.0",
31
- "@cloudbase/types": "^1.2.3-alpha.0",
32
- "@cloudbase/utilities": "^1.4.3-alpha.0"
33
- },
34
- "gitHead": "ab6b1fad47cbb9865aeb2415a1229733641a9fb2"
2
+ "name": "@cloudbase/oauth",
3
+ "version": "0.1.1-alpha",
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
+ }
35
31
  }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Single Promise
3
+ */
4
+ export declare class SinglePromise {
5
+ /**
6
+ * Run single promise.
7
+ * @param {string} key
8
+ * @param {Function} fn
9
+ * @return {Promise<T>}
10
+ */
11
+ run<T>(key: string, fn: () => Promise<T>): Promise<T>;
12
+ /**
13
+ * Run idle promise.
14
+ * @return {Promise<void>}
15
+ */
16
+ private _runIdlePromise;
17
+ private _fnPromiseMap;
18
+ }