Skip to content

Commit e7f69b3

Browse files
committed
feat: Adaptors
1 parent 244ebc7 commit e7f69b3

File tree

15 files changed

+391
-220
lines changed

15 files changed

+391
-220
lines changed

package-lock.json

Lines changed: 54 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,16 @@
2626
"debug": "^3.1.0",
2727
"es6-promise": "4.2.3",
2828
"eventemitter3": "^2.0.3",
29-
"leancloud-realtime": "^5.0.0-beta.0",
29+
"isomorphic-ws": "^4.0.1",
30+
"leancloud-realtime": "^5.0.0-beta.3",
3031
"leancloud-realtime-plugin-live-query": "^1.2.0",
3132
"localstorage-memory": "^1.0.1",
3233
"md5": "^2.0.0",
34+
"promise-timeout": "^1.3.0",
3335
"superagent": "^3.3.1",
3436
"underscore": "^1.8.3",
35-
"uuid": "^3.3.2"
37+
"uuid": "^3.3.2",
38+
"ws": "^7.2.1"
3639
},
3740
"devDependencies": {
3841
"@pollyjs/adapter-node-http": "^2.6.2",
@@ -62,7 +65,7 @@
6265
"prettier": "^1.11.1",
6366
"pretty-quick": "^1.4.1",
6467
"should": "^11.1.0",
65-
"typescript": "^3.0.3",
68+
"typescript": "^3.8.3",
6669
"weapp-polyfill": "^3.1.2",
6770
"webpack": "^3.11.0",
6871
"webpack-strip-block": "^0.2.0"

src/adaptor.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const adaptors = {};
2+
3+
const getAdaptor = name => {
4+
const adaptor = adaptors[name];
5+
if (adaptor === undefined) {
6+
throw new Error(`${name} adaptor is not configured`);
7+
}
8+
return adaptor;
9+
};
10+
const setAdaptor = (name, adaptor) => {
11+
adaptors[name] = adaptor;
12+
};
13+
const setAdaptors = newAdaptors => {
14+
Object.assign(adaptors, newAdaptors);
15+
};
16+
17+
module.exports = {
18+
getAdaptor,
19+
setAdaptor,
20+
setAdaptors,
21+
};

src/av.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const debug = require('debug');
44
const userAgent = require('./ua');
55
const { inherits, parseDate } = require('./utils');
66
const Promise = require('./promise');
7+
const { setAdaptor, setAdaptors } = require('./adaptor');
78

89
const AV = global.AV || {};
910

@@ -372,4 +373,7 @@ AV.debug = {
372373
disable: debug.disable,
373374
};
374375

376+
AV.setAdaptors = setAdaptors;
377+
AV.setAdaptor = setAdaptor;
378+
375379
module.exports = AV;

src/builtin-adaptors.js

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
const superagent = require('superagent');
2+
const storage = require('./utils/localstorage');
3+
4+
function request(url, { method, data, headers, onprogress }) {
5+
const req = superagent(method, url);
6+
if (headers) {
7+
req.set(headers);
8+
}
9+
if (onprogress) {
10+
req.on('progress', onprogress);
11+
}
12+
13+
return req
14+
.send(data)
15+
.catch(error => {
16+
if (error.response) {
17+
return error.response;
18+
}
19+
throw error;
20+
})
21+
.then(({ status, ok, header, body }) => ({
22+
status,
23+
ok,
24+
headers: header,
25+
data: body,
26+
}));
27+
}
28+
29+
function upload(url, file, { headers, data, onprogress } = {}) {
30+
const req = superagent('POST', url)
31+
.attach(file.field, file.data, file.name)
32+
.field(data);
33+
if (headers) {
34+
req.set(headers);
35+
}
36+
if (onprogress) {
37+
req.on('progress', onprogress);
38+
}
39+
return req
40+
.catch(error => {
41+
if (error.response) {
42+
return error.response;
43+
}
44+
throw error;
45+
})
46+
.then(({ status, ok, header, body }) => ({
47+
status,
48+
ok,
49+
headers: header,
50+
data: body,
51+
}));
52+
}
53+
54+
module.exports = {
55+
request,
56+
upload,
57+
storage,
58+
};

src/index-live-query.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
const AV = require('./index');
22

3-
const { Realtime } = require('leancloud-realtime/core');
3+
const {
4+
Realtime,
5+
setAdaptor: setRTMAdaptor,
6+
setAdaptors: setRTMAdaptors,
7+
} = require('leancloud-realtime/core');
48
const { LiveQueryPlugin } = require('leancloud-realtime-plugin-live-query');
59
Realtime.__preRegisteredPlugins = [LiveQueryPlugin];
610
AV._sharedConfig.liveQueryRealtime = Realtime;
711

12+
const { setAdaptor, setAdaptors } = AV;
13+
AV.setAdaptor = (name, adaptor) => {
14+
setAdaptor(name, adaptor);
15+
setRTMAdaptor(name, adaptor);
16+
};
17+
AV.setAdaptors = adaptors => {
18+
setAdaptors(adaptors);
19+
setRTMAdaptors(adaptors);
20+
};
21+
const adaptors = require('./builtin-adaptors');
22+
AV.setAdaptors(adaptors);
23+
const WebSocket = require('isomorphic-ws');
24+
AV.setAdaptors({ WebSocket });
25+
826
module.exports = AV;

src/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ const _ = require('underscore');
1010

1111
const AV = require('./av');
1212

13+
const adaptors = require('./builtin-adaptors');
14+
AV.setAdaptors(adaptors);
15+
1316
AV._ = _;
1417
AV.version = require('./version');
1518
AV.Promise = require('./promise');

0 commit comments

Comments
 (0)