cloud189-sdk 1.0.6-alpha.3 → 1.0.6-alpha.4
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/README.md +2 -0
- package/dist/CloudClient.d.ts +3 -2
- package/dist/CloudClient.js +21 -20
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/store/file-token-store.d.ts +12 -0
- package/dist/store/file-token-store.js +83 -0
- package/dist/store/index.d.ts +3 -0
- package/dist/store/index.js +19 -0
- package/dist/store/memstore.d.ts +16 -0
- package/dist/store/memstore.js +34 -0
- package/dist/store/store.d.ts +11 -0
- package/dist/store/store.js +22 -0
- package/dist/types.d.ts +8 -7
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/CloudClient.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Got } from 'got';
|
|
2
|
-
import { UserSignResponse, UserSizeInfoResponse, FamilyListResponse, FamilyUserSignResponse, ConfigurationOptions, ClientSession, RefreshTokenSession, TokenSession
|
|
2
|
+
import { UserSignResponse, UserSizeInfoResponse, FamilyListResponse, FamilyUserSignResponse, ConfigurationOptions, ClientSession, RefreshTokenSession, TokenSession } from './types';
|
|
3
|
+
import { Store } from './store';
|
|
3
4
|
interface CacheQuery {
|
|
4
5
|
captchaToken: string;
|
|
5
6
|
reqId: string;
|
|
@@ -46,7 +47,7 @@ export declare class CloudClient {
|
|
|
46
47
|
#private;
|
|
47
48
|
username: string;
|
|
48
49
|
password: string;
|
|
49
|
-
|
|
50
|
+
tokenStore: Store;
|
|
50
51
|
readonly request: Got;
|
|
51
52
|
readonly authClient: CloudAuthClient;
|
|
52
53
|
readonly session: ClientSession;
|
package/dist/CloudClient.js
CHANGED
|
@@ -15,6 +15,7 @@ const got_1 = __importDefault(require("got"));
|
|
|
15
15
|
const log_1 = require("./log");
|
|
16
16
|
const util_1 = require("./util");
|
|
17
17
|
const const_1 = require("./const");
|
|
18
|
+
const store_1 = require("./store");
|
|
18
19
|
const config = {
|
|
19
20
|
clientId: '538135150693412',
|
|
20
21
|
model: 'KB2000',
|
|
@@ -170,7 +171,7 @@ class CloudClient {
|
|
|
170
171
|
__classPrivateFieldGet(this, _CloudClient_valid, "f").call(this, _options);
|
|
171
172
|
this.username = _options.username;
|
|
172
173
|
this.password = _options.password;
|
|
173
|
-
this.
|
|
174
|
+
this.tokenStore = _options.token || new store_1.MemoryStore();
|
|
174
175
|
this.authClient = new CloudAuthClient();
|
|
175
176
|
this.session = {
|
|
176
177
|
accessToken: '',
|
|
@@ -240,33 +241,33 @@ class CloudClient {
|
|
|
240
241
|
});
|
|
241
242
|
}
|
|
242
243
|
async getSession() {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
catch (e) {
|
|
249
|
-
log_1.log.error(e);
|
|
250
|
-
}
|
|
244
|
+
const accessToken = await this.tokenStore.getAccessToken();
|
|
245
|
+
if (accessToken) {
|
|
246
|
+
try {
|
|
247
|
+
return await this.authClient.loginByAccessToken(accessToken);
|
|
251
248
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
249
|
+
catch (e) {
|
|
250
|
+
log_1.log.error(e);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const refreshToken = await this.tokenStore.getRefreshToken();
|
|
254
|
+
if (refreshToken) {
|
|
255
|
+
try {
|
|
256
|
+
const refreshTokenSession = await this.authClient.refreshToken(refreshToken);
|
|
257
|
+
await this.tokenStore.updateAccessToken(refreshTokenSession.accessToken);
|
|
258
|
+
return await this.authClient.loginByAccessToken(refreshTokenSession.accessToken);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
log_1.log.error(e);
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
264
|
if (this.username && this.password) {
|
|
264
265
|
try {
|
|
265
266
|
const loginToken = await this.authClient.loginByPassword(this.username, this.password);
|
|
266
|
-
this.
|
|
267
|
+
await this.tokenStore.update({
|
|
267
268
|
accessToken: loginToken.accessToken,
|
|
268
269
|
refreshToken: loginToken.refreshToken
|
|
269
|
-
};
|
|
270
|
+
});
|
|
270
271
|
return loginToken;
|
|
271
272
|
}
|
|
272
273
|
catch (e) {
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,5 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FileTokenStore = exports.MemoryStore = exports.Store = void 0;
|
|
17
18
|
__exportStar(require("./CloudClient"), exports);
|
|
18
19
|
__exportStar(require("./types"), exports);
|
|
20
|
+
var store_1 = require("./store");
|
|
21
|
+
Object.defineProperty(exports, "Store", { enumerable: true, get: function () { return store_1.Store; } });
|
|
22
|
+
Object.defineProperty(exports, "MemoryStore", { enumerable: true, get: function () { return store_1.MemoryStore; } });
|
|
23
|
+
Object.defineProperty(exports, "FileTokenStore", { enumerable: true, get: function () { return store_1.FileTokenStore; } });
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MemoryStore } from './memstore';
|
|
2
|
+
export declare class FileTokenStore extends MemoryStore {
|
|
3
|
+
#private;
|
|
4
|
+
filePath: string;
|
|
5
|
+
constructor(filePath: string);
|
|
6
|
+
updateAccessToken(accessToken: string): Promise<void>;
|
|
7
|
+
updateRefreshToken(refreshToken: string): Promise<void>;
|
|
8
|
+
update(token: {
|
|
9
|
+
accessToken: string;
|
|
10
|
+
refreshToken: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
26
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
27
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
28
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
29
|
+
};
|
|
30
|
+
var _FileTokenStore_instances, _FileTokenStore_loadFromFile, _FileTokenStore_saveToFile;
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.FileTokenStore = void 0;
|
|
33
|
+
const fs = __importStar(require("node:fs"));
|
|
34
|
+
const promisesFs = __importStar(require("node:fs/promises"));
|
|
35
|
+
const memstore_1 = require("./memstore");
|
|
36
|
+
class FileTokenStore extends memstore_1.MemoryStore {
|
|
37
|
+
constructor(filePath) {
|
|
38
|
+
super();
|
|
39
|
+
_FileTokenStore_instances.add(this);
|
|
40
|
+
this.filePath = filePath;
|
|
41
|
+
if (!filePath) {
|
|
42
|
+
throw new Error('Unknown file for read/write token');
|
|
43
|
+
}
|
|
44
|
+
const dataJson = __classPrivateFieldGet(this, _FileTokenStore_instances, "m", _FileTokenStore_loadFromFile).call(this, filePath);
|
|
45
|
+
if (dataJson) {
|
|
46
|
+
super.update(dataJson);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
updateAccessToken(accessToken) {
|
|
50
|
+
super.updateAccessToken(accessToken);
|
|
51
|
+
return __classPrivateFieldGet(this, _FileTokenStore_instances, "m", _FileTokenStore_saveToFile).call(this, this.filePath, this.store);
|
|
52
|
+
}
|
|
53
|
+
updateRefreshToken(refreshToken) {
|
|
54
|
+
super.updateRefreshToken(refreshToken);
|
|
55
|
+
return __classPrivateFieldGet(this, _FileTokenStore_instances, "m", _FileTokenStore_saveToFile).call(this, this.filePath, this.store);
|
|
56
|
+
}
|
|
57
|
+
update(token) {
|
|
58
|
+
super.update(token);
|
|
59
|
+
return __classPrivateFieldGet(this, _FileTokenStore_instances, "m", _FileTokenStore_saveToFile).call(this, this.filePath, this.store);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.FileTokenStore = FileTokenStore;
|
|
63
|
+
_FileTokenStore_instances = new WeakSet(), _FileTokenStore_loadFromFile = function _FileTokenStore_loadFromFile(filePath) {
|
|
64
|
+
let data = null;
|
|
65
|
+
if (fs.existsSync(filePath)) {
|
|
66
|
+
data = fs.readFileSync(filePath, {
|
|
67
|
+
encoding: 'utf-8'
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (data) {
|
|
71
|
+
try {
|
|
72
|
+
return JSON.parse(data);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
throw new Error(`Could not parse token file ${filePath}. Please ensure it is not corrupted.`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}, _FileTokenStore_saveToFile = function _FileTokenStore_saveToFile(filePath, data) {
|
|
80
|
+
return promisesFs.writeFile(filePath, JSON.stringify(data), {
|
|
81
|
+
encoding: 'utf-8'
|
|
82
|
+
});
|
|
83
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./store"), exports);
|
|
18
|
+
__exportStar(require("./memstore"), exports);
|
|
19
|
+
__exportStar(require("./file-token-store"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Store } from './store';
|
|
2
|
+
export declare class MemoryStore extends Store {
|
|
3
|
+
store: {
|
|
4
|
+
accessToken: string;
|
|
5
|
+
refreshToken: string;
|
|
6
|
+
};
|
|
7
|
+
constructor();
|
|
8
|
+
getAccessToken(): Promise<string>;
|
|
9
|
+
updateAccessToken(accessToken: string): Promise<void>;
|
|
10
|
+
updateRefreshToken(refreshToken: string): Promise<void>;
|
|
11
|
+
getRefreshToken(): Promise<string>;
|
|
12
|
+
update(token: {
|
|
13
|
+
accessToken: string;
|
|
14
|
+
refreshToken: string;
|
|
15
|
+
}): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MemoryStore = void 0;
|
|
4
|
+
const store_1 = require("./store");
|
|
5
|
+
class MemoryStore extends store_1.Store {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.store = {
|
|
9
|
+
accessToken: '',
|
|
10
|
+
refreshToken: ''
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
getAccessToken() {
|
|
14
|
+
return Promise.resolve(this.store.accessToken);
|
|
15
|
+
}
|
|
16
|
+
updateAccessToken(accessToken) {
|
|
17
|
+
this.store.accessToken = accessToken;
|
|
18
|
+
return Promise.resolve();
|
|
19
|
+
}
|
|
20
|
+
updateRefreshToken(refreshToken) {
|
|
21
|
+
this.store.refreshToken = refreshToken;
|
|
22
|
+
return Promise.resolve();
|
|
23
|
+
}
|
|
24
|
+
getRefreshToken() {
|
|
25
|
+
return Promise.resolve(this.store.refreshToken);
|
|
26
|
+
}
|
|
27
|
+
update(token) {
|
|
28
|
+
this.store = {
|
|
29
|
+
accessToken: token.accessToken,
|
|
30
|
+
refreshToken: token.refreshToken
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.MemoryStore = MemoryStore;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class Store {
|
|
2
|
+
constructor();
|
|
3
|
+
getAccessToken(): Promise<string | undefined>;
|
|
4
|
+
getRefreshToken(): Promise<string | undefined>;
|
|
5
|
+
updateRefreshToken(refreshToken: string): Promise<void>;
|
|
6
|
+
updateAccessToken(accessToken: string): Promise<void>;
|
|
7
|
+
update(token: {
|
|
8
|
+
accessToken: string;
|
|
9
|
+
refreshToken: string;
|
|
10
|
+
}): any;
|
|
11
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Store = void 0;
|
|
4
|
+
class Store {
|
|
5
|
+
constructor() { }
|
|
6
|
+
getAccessToken() {
|
|
7
|
+
throw new Error('getAccessToken is not implemented');
|
|
8
|
+
}
|
|
9
|
+
getRefreshToken() {
|
|
10
|
+
throw new Error('getRefreshToken is not implemented');
|
|
11
|
+
}
|
|
12
|
+
updateRefreshToken(refreshToken) {
|
|
13
|
+
throw new Error('updateRefreshToken is not implemented');
|
|
14
|
+
}
|
|
15
|
+
updateAccessToken(accessToken) {
|
|
16
|
+
throw new Error('updateAccessToken is not implemented');
|
|
17
|
+
}
|
|
18
|
+
update(token) {
|
|
19
|
+
throw new Error('update is not implemented');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.Store = Store;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Store } from './store';
|
|
1
2
|
/**
|
|
2
3
|
* 账户家庭信息
|
|
3
4
|
* @public
|
|
@@ -133,27 +134,27 @@ export interface ConfigurationOptions {
|
|
|
133
134
|
username?: string;
|
|
134
135
|
/** 密码 */
|
|
135
136
|
password?: string;
|
|
136
|
-
token
|
|
137
|
+
token?: Store;
|
|
137
138
|
}
|
|
138
139
|
/**
|
|
139
140
|
* accessToken 有效期7天,可以通过refreshToken取新的accessToken
|
|
140
141
|
*/
|
|
141
|
-
export interface TokenSession
|
|
142
|
+
export interface TokenSession {
|
|
142
143
|
res_code: number;
|
|
143
144
|
res_message: string;
|
|
145
|
+
accessToken: string;
|
|
144
146
|
familySessionKey: string;
|
|
145
147
|
familySessionSecret: string;
|
|
148
|
+
refreshToken: string;
|
|
146
149
|
loginName: string;
|
|
147
150
|
sessionKey: string;
|
|
148
151
|
}
|
|
149
|
-
export interface RefreshTokenSession
|
|
152
|
+
export interface RefreshTokenSession {
|
|
150
153
|
expiresIn: number;
|
|
154
|
+
accessToken: string;
|
|
155
|
+
refreshToken: string;
|
|
151
156
|
}
|
|
152
157
|
export interface ClientSession {
|
|
153
158
|
accessToken: string;
|
|
154
159
|
sessionKey: string;
|
|
155
160
|
}
|
|
156
|
-
export interface AccessTokenStore {
|
|
157
|
-
accessToken: string;
|
|
158
|
-
refreshToken: string;
|
|
159
|
-
}
|