@kookapp/im-socket 0.0.1
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 +67 -0
- package/dist/cjs/Frame.js +31 -0
- package/dist/cjs/Frame.js.map +1 -0
- package/dist/cjs/Session.js +70 -0
- package/dist/cjs/Session.js.map +1 -0
- package/dist/cjs/Socket.js +126 -0
- package/dist/cjs/Socket.js.map +1 -0
- package/dist/cjs/StateSession.js +327 -0
- package/dist/cjs/StateSession.js.map +1 -0
- package/dist/cjs/TaskTimer.js +53 -0
- package/dist/cjs/TaskTimer.js.map +1 -0
- package/dist/cjs/WebsocketSession.js +118 -0
- package/dist/cjs/WebsocketSession.js.map +1 -0
- package/dist/cjs/constants.js +32 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logger.js +31 -0
- package/dist/cjs/logger.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/Frame.d.ts +20 -0
- package/dist/esm/Frame.d.ts.map +1 -0
- package/dist/esm/Frame.js +27 -0
- package/dist/esm/Frame.js.map +1 -0
- package/dist/esm/Session.d.ts +8 -0
- package/dist/esm/Session.d.ts.map +1 -0
- package/dist/esm/Session.js +31 -0
- package/dist/esm/Session.js.map +1 -0
- package/dist/esm/Socket.d.ts +41 -0
- package/dist/esm/Socket.d.ts.map +1 -0
- package/dist/esm/Socket.js +119 -0
- package/dist/esm/Socket.js.map +1 -0
- package/dist/esm/StateSession.d.ts +71 -0
- package/dist/esm/StateSession.d.ts.map +1 -0
- package/dist/esm/StateSession.js +288 -0
- package/dist/esm/StateSession.js.map +1 -0
- package/dist/esm/TaskTimer.d.ts +8 -0
- package/dist/esm/TaskTimer.d.ts.map +1 -0
- package/dist/esm/TaskTimer.js +50 -0
- package/dist/esm/TaskTimer.js.map +1 -0
- package/dist/esm/WebsocketSession.d.ts +15 -0
- package/dist/esm/WebsocketSession.d.ts.map +1 -0
- package/dist/esm/WebsocketSession.js +112 -0
- package/dist/esm/WebsocketSession.js.map +1 -0
- package/dist/esm/constants.d.ts +29 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +29 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logger.d.ts +9 -0
- package/dist/esm/logger.d.ts.map +1 -0
- package/dist/esm/logger.js +27 -0
- package/dist/esm/logger.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
let uid = 1;
|
|
4
|
+
function getUid() {
|
|
5
|
+
return `task_${uid++}`;
|
|
6
|
+
}
|
|
7
|
+
class TaskTimer {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.taskMap = {};
|
|
10
|
+
}
|
|
11
|
+
addTask(task) {
|
|
12
|
+
if (!task.name) {
|
|
13
|
+
task.name = getUid();
|
|
14
|
+
}
|
|
15
|
+
task.start = task.start || 0;
|
|
16
|
+
this.taskMap[task.name] = task;
|
|
17
|
+
this.run(task);
|
|
18
|
+
return task.name;
|
|
19
|
+
}
|
|
20
|
+
removeTask(name) {
|
|
21
|
+
let task = this.taskMap[name];
|
|
22
|
+
if (task) {
|
|
23
|
+
clearTimeout(task.timer);
|
|
24
|
+
delete this.taskMap[name];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
run(task) {
|
|
28
|
+
const next = () => {
|
|
29
|
+
let exist = Boolean(this.taskMap[task.name]);
|
|
30
|
+
if (exist) {
|
|
31
|
+
this.run(task);
|
|
32
|
+
}
|
|
33
|
+
return exist;
|
|
34
|
+
};
|
|
35
|
+
task.retry = task.retry || 0;
|
|
36
|
+
let timeout = task.retry == 0
|
|
37
|
+
? task.start
|
|
38
|
+
: task.start + Math.pow(2, task.retry);
|
|
39
|
+
timeout = timeout * (Math.random() * 0.2 + 0.9);
|
|
40
|
+
if (typeof task.max == 'number') {
|
|
41
|
+
timeout = Math.min(timeout, task.max);
|
|
42
|
+
}
|
|
43
|
+
task.retry++;
|
|
44
|
+
task.timer = setTimeout(task.handle, timeout * 1000, next, { ...task });
|
|
45
|
+
}
|
|
46
|
+
removeAll() {
|
|
47
|
+
Object.keys(this.taskMap).forEach((name) => {
|
|
48
|
+
this.removeTask(name);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.default = TaskTimer;
|
|
53
|
+
//# sourceMappingURL=TaskTimer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskTimer.js","sourceRoot":"","sources":["../../src/TaskTimer.js"],"names":[],"mappings":";;AAAA,IAAI,GAAG,GAAG,CAAC,CAAA;AAEX,SAAS,MAAM;IACb,OAAO,QAAQ,GAAG,EAAE,EAAE,CAAA;AACxB,CAAC;AAED,MAAqB,SAAS;IAC5B;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,CAAC,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,UAAU,CAAC,IAAI;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAI;QACN,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAChB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAE5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;QAE/C,IAAI,OAAO,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAA;QAEZ,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,SAAS;QACP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AArDD,4BAqDC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const StateSession_1 = __importDefault(require("./StateSession"));
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
9
|
+
class WebsocketSession extends StateSession_1.default {
|
|
10
|
+
constructor(token, baseUrl, compress, options = {}) {
|
|
11
|
+
super(compress);
|
|
12
|
+
this.token = token;
|
|
13
|
+
this.baseUrl = baseUrl;
|
|
14
|
+
this.options = options;
|
|
15
|
+
}
|
|
16
|
+
async reqGateWay() {
|
|
17
|
+
if (this.options.gatewayProvider) {
|
|
18
|
+
return this.options.gatewayProvider();
|
|
19
|
+
}
|
|
20
|
+
if (this.options.onGetGateway) {
|
|
21
|
+
return this.options.onGetGateway();
|
|
22
|
+
}
|
|
23
|
+
return this._defaultReqGateWay();
|
|
24
|
+
}
|
|
25
|
+
async _defaultReqGateWay() {
|
|
26
|
+
const extraHeaders = this.options.headerProvider
|
|
27
|
+
? await this.options.headerProvider()
|
|
28
|
+
: (this.options.headers || {});
|
|
29
|
+
return fetch(`${this.baseUrl}/api/v3/gateway/index`, {
|
|
30
|
+
method: 'GET',
|
|
31
|
+
headers: {
|
|
32
|
+
Authorization: this.token,
|
|
33
|
+
...extraHeaders,
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
.then((res) => res.json())
|
|
37
|
+
.then(({ data } = {}) => data);
|
|
38
|
+
}
|
|
39
|
+
_createSocket(url) {
|
|
40
|
+
if (this.options.createSocket) {
|
|
41
|
+
return this.options.createSocket(url);
|
|
42
|
+
}
|
|
43
|
+
return new WebSocket(url);
|
|
44
|
+
}
|
|
45
|
+
async connectWebsocket() {
|
|
46
|
+
let gateway = this.gateway;
|
|
47
|
+
if (!gateway) {
|
|
48
|
+
logger_1.default.warn('gateway is undefined');
|
|
49
|
+
return Promise.reject();
|
|
50
|
+
}
|
|
51
|
+
let resumeParams = '';
|
|
52
|
+
if (this.sessionId) {
|
|
53
|
+
resumeParams = `&resume=1&sessionId=${this.sessionId}&sn=${this.maxSn}`;
|
|
54
|
+
}
|
|
55
|
+
let extraParams = '';
|
|
56
|
+
if (this.options.queryProvider) {
|
|
57
|
+
const queryObj = await this.options.queryProvider({
|
|
58
|
+
sessionId: this.sessionId,
|
|
59
|
+
maxSn: this.maxSn,
|
|
60
|
+
isResume: Boolean(this.sessionId),
|
|
61
|
+
});
|
|
62
|
+
const qs = new URLSearchParams(queryObj).toString();
|
|
63
|
+
if (qs)
|
|
64
|
+
extraParams = '&' + qs;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const queryParams = this.options.queryParams || {};
|
|
68
|
+
const qs = new URLSearchParams(queryParams).toString();
|
|
69
|
+
if (qs)
|
|
70
|
+
extraParams = '&' + qs;
|
|
71
|
+
}
|
|
72
|
+
const wsUrl = `${gateway}${resumeParams}${extraParams}`;
|
|
73
|
+
if (this.ws) {
|
|
74
|
+
this.ws.onclose = null;
|
|
75
|
+
this.ws.close();
|
|
76
|
+
}
|
|
77
|
+
let ws = this._createSocket(wsUrl);
|
|
78
|
+
this.ws = ws;
|
|
79
|
+
ws.binaryType = 'arraybuffer';
|
|
80
|
+
let onDisconnect = (evt) => {
|
|
81
|
+
logger_1.default.log(`ws close code: ${evt.code}, state: ${this.state}`);
|
|
82
|
+
if (![constants_1.SessionState.origin, constants_1.SessionState.init].includes(this.state)) {
|
|
83
|
+
this.setState(constants_1.SessionState.gateway);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
this.ws.onmessage = (evt) => {
|
|
87
|
+
this.receiveData(evt.data);
|
|
88
|
+
};
|
|
89
|
+
this.ws.onerror = (error) => {
|
|
90
|
+
logger_1.default.log('ws error', error);
|
|
91
|
+
};
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
this.ws.onopen = () => {
|
|
94
|
+
resolve('open');
|
|
95
|
+
this.ws.onclose = onDisconnect;
|
|
96
|
+
};
|
|
97
|
+
this.ws.onclose = (evt) => {
|
|
98
|
+
logger_1.default.log('ws open fail', evt.code);
|
|
99
|
+
reject();
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
sendData(data) {
|
|
104
|
+
if (this.ws && this.ws.readyState === 1) {
|
|
105
|
+
this.ws.send(data);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
stop() {
|
|
109
|
+
logger_1.default.log('stop');
|
|
110
|
+
this._stop();
|
|
111
|
+
if (this.ws) {
|
|
112
|
+
this.ws.onclose = null;
|
|
113
|
+
this.ws.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.default = WebsocketSession;
|
|
118
|
+
//# sourceMappingURL=WebsocketSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebsocketSession.js","sourceRoot":"","sources":["../../src/WebsocketSession.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PCIMLibStateEnum = exports.IMLibStateEnum = exports.SessionState = void 0;
|
|
4
|
+
exports.SessionState = {
|
|
5
|
+
origin: 0,
|
|
6
|
+
init: 1,
|
|
7
|
+
gateway: 2,
|
|
8
|
+
wsConnected: 3,
|
|
9
|
+
connected: 4,
|
|
10
|
+
retry: 5,
|
|
11
|
+
};
|
|
12
|
+
exports.IMLibStateEnum = {
|
|
13
|
+
ORIGIN: 0,
|
|
14
|
+
GATEWAY_RUNING: 1,
|
|
15
|
+
GATEWAY_OK: 2,
|
|
16
|
+
WS_CONNECTED: 3,
|
|
17
|
+
CONNECTED: 4,
|
|
18
|
+
HEARTBEAT_TIMEOUT: 5,
|
|
19
|
+
};
|
|
20
|
+
exports.PCIMLibStateEnum = {
|
|
21
|
+
kKookImStateInit: 0,
|
|
22
|
+
kKookImStateStarted: 1,
|
|
23
|
+
kKookImStateGetGatewayOK: 2,
|
|
24
|
+
kKookImStateGatewayConnected: 3,
|
|
25
|
+
kKookImStateConnetced: 4,
|
|
26
|
+
kKookImStateTimeout: 5,
|
|
27
|
+
kKookImStateStopPending: 6,
|
|
28
|
+
kKookImStateStopped: 7,
|
|
29
|
+
kKookImStateFailed: 8,
|
|
30
|
+
kKookImStateEnded: 9,
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;CACT,CAAA;AAEY,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,CAAC;IACT,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,iBAAiB,EAAE,CAAC;CACrB,CAAA;AAEY,QAAA,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,CAAC;IACnB,mBAAmB,EAAE,CAAC;IACtB,wBAAwB,EAAE,CAAC;IAC3B,4BAA4B,EAAE,CAAC;IAC/B,qBAAqB,EAAE,CAAC;IACxB,mBAAmB,EAAE,CAAC;IACtB,uBAAuB,EAAE,CAAC;IAC1B,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,CAAC;CACrB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.resetLogger = exports.setLogger = exports.PCIMLibStateEnum = exports.IMLibStateEnum = exports.SessionState = exports.SignType = exports.TaskTimer = exports.Frame = exports.WebsocketSession = exports.StateSession = exports.Session = exports.IMSocketEvent = exports.IMSocket = void 0;
|
|
7
|
+
var Socket_1 = require("./Socket");
|
|
8
|
+
Object.defineProperty(exports, "IMSocket", { enumerable: true, get: function () { return __importDefault(Socket_1).default; } });
|
|
9
|
+
Object.defineProperty(exports, "IMSocketEvent", { enumerable: true, get: function () { return Socket_1.IMSocketEvent; } });
|
|
10
|
+
var Session_1 = require("./Session");
|
|
11
|
+
Object.defineProperty(exports, "Session", { enumerable: true, get: function () { return __importDefault(Session_1).default; } });
|
|
12
|
+
var StateSession_1 = require("./StateSession");
|
|
13
|
+
Object.defineProperty(exports, "StateSession", { enumerable: true, get: function () { return __importDefault(StateSession_1).default; } });
|
|
14
|
+
var WebsocketSession_1 = require("./WebsocketSession");
|
|
15
|
+
Object.defineProperty(exports, "WebsocketSession", { enumerable: true, get: function () { return __importDefault(WebsocketSession_1).default; } });
|
|
16
|
+
var Frame_1 = require("./Frame");
|
|
17
|
+
Object.defineProperty(exports, "Frame", { enumerable: true, get: function () { return __importDefault(Frame_1).default; } });
|
|
18
|
+
var TaskTimer_1 = require("./TaskTimer");
|
|
19
|
+
Object.defineProperty(exports, "TaskTimer", { enumerable: true, get: function () { return __importDefault(TaskTimer_1).default; } });
|
|
20
|
+
var Frame_2 = require("./Frame");
|
|
21
|
+
Object.defineProperty(exports, "SignType", { enumerable: true, get: function () { return Frame_2.SignType; } });
|
|
22
|
+
var constants_1 = require("./constants");
|
|
23
|
+
Object.defineProperty(exports, "SessionState", { enumerable: true, get: function () { return constants_1.SessionState; } });
|
|
24
|
+
Object.defineProperty(exports, "IMLibStateEnum", { enumerable: true, get: function () { return constants_1.IMLibStateEnum; } });
|
|
25
|
+
Object.defineProperty(exports, "PCIMLibStateEnum", { enumerable: true, get: function () { return constants_1.PCIMLibStateEnum; } });
|
|
26
|
+
var logger_1 = require("./logger");
|
|
27
|
+
Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return logger_1.setLogger; } });
|
|
28
|
+
Object.defineProperty(exports, "resetLogger", { enumerable: true, get: function () { return logger_1.resetLogger; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";;;;;;AAAA,mCAA6D;AAApD,mHAAA,OAAO,OAAY;AAAE,uGAAA,aAAa,OAAA;AAC3C,qCAA8C;AAArC,mHAAA,OAAO,OAAW;AAC3B,+CAAwD;AAA/C,6HAAA,OAAO,OAAgB;AAChC,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,iCAA0C;AAAjC,+GAAA,OAAO,OAAS;AACzB,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,iCAAkC;AAAzB,iGAAA,QAAQ,OAAA;AACjB,yCAA4E;AAAnE,yGAAA,YAAY,OAAA;AAAE,2GAAA,cAAc,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACvD,mCAAiD;AAAxC,mGAAA,SAAS,OAAA;AAAE,qGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setLogger = setLogger;
|
|
4
|
+
exports.resetLogger = resetLogger;
|
|
5
|
+
const defaultLogger = {
|
|
6
|
+
log(...args) {
|
|
7
|
+
console.debug('[IM-WebSocket]', ...args);
|
|
8
|
+
},
|
|
9
|
+
warn(...args) {
|
|
10
|
+
console.warn('[IM-WebSocket]', ...args);
|
|
11
|
+
},
|
|
12
|
+
error(...args) {
|
|
13
|
+
console.error('[IM-WebSocket]', ...args);
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
let _target = defaultLogger;
|
|
17
|
+
const logger = {
|
|
18
|
+
log(...args) { _target.log(...args); },
|
|
19
|
+
warn(...args) { _target.warn(...args); },
|
|
20
|
+
error(...args) { _target.error(...args); },
|
|
21
|
+
};
|
|
22
|
+
function setLogger(custom) {
|
|
23
|
+
if (custom && typeof custom.log === 'function') {
|
|
24
|
+
_target = custom;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function resetLogger() {
|
|
28
|
+
_target = defaultLogger;
|
|
29
|
+
}
|
|
30
|
+
exports.default = logger;
|
|
31
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.js"],"names":[],"mappings":";;AAoBA,8BAIC;AAED,kCAEC;AA5BD,MAAM,aAAa,GAAG;IACpB,GAAG,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,CAAC,GAAG,IAAI;QACV,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACX,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAED,IAAI,OAAO,GAAG,aAAa,CAAA;AAE3B,MAAM,MAAM,GAAG;IACb,GAAG,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;IACvC,KAAK,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;CAC1C,CAAA;AAED,SAAgB,SAAS,CAAC,MAAM;IAC9B,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC/C,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,GAAG,aAAa,CAAA;AACzB,CAAC;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'{"type":"commonjs"}'
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export namespace SignType {
|
|
2
|
+
let msg: number;
|
|
3
|
+
let hello: number;
|
|
4
|
+
let ping: number;
|
|
5
|
+
let pong: number;
|
|
6
|
+
let resume: number;
|
|
7
|
+
let reconnect: number;
|
|
8
|
+
let resumeAck: number;
|
|
9
|
+
let serverError: number;
|
|
10
|
+
}
|
|
11
|
+
export default class Frame {
|
|
12
|
+
static create(data: any): Frame;
|
|
13
|
+
static getPingFrame(sn: any): Frame;
|
|
14
|
+
constructor(s: any, sn: any, d: any);
|
|
15
|
+
s: any;
|
|
16
|
+
sn: any;
|
|
17
|
+
d: any;
|
|
18
|
+
toString(): string;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=Frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Frame.d.ts","sourceRoot":"","sources":["../../src/Frame.js"],"names":[],"mappings":";;;;;;;;;;AAWA;IAOE,gCAEC;IAED,oCAEC;IAZD,qCAIC;IAHC,OAAU;IACV,QAAiB;IACjB,OAAU;IAWZ,mBAEC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const SignType = {
|
|
2
|
+
msg: 0,
|
|
3
|
+
hello: 1,
|
|
4
|
+
ping: 2,
|
|
5
|
+
pong: 3,
|
|
6
|
+
resume: 4,
|
|
7
|
+
reconnect: 5,
|
|
8
|
+
resumeAck: 6,
|
|
9
|
+
serverError: 500,
|
|
10
|
+
};
|
|
11
|
+
export default class Frame {
|
|
12
|
+
constructor(s, sn, d) {
|
|
13
|
+
this.s = s;
|
|
14
|
+
this.sn = sn || 0;
|
|
15
|
+
this.d = d;
|
|
16
|
+
}
|
|
17
|
+
static create(data) {
|
|
18
|
+
return new Frame(data.s, data.sn, data.d);
|
|
19
|
+
}
|
|
20
|
+
static getPingFrame(sn) {
|
|
21
|
+
return new Frame(SignType.ping, sn);
|
|
22
|
+
}
|
|
23
|
+
toString() {
|
|
24
|
+
return JSON.stringify(this);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Frame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Frame.js","sourceRoot":"","sources":["../../src/Frame.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,GAAG;CACjB,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACjB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAI;QAChB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAAE;QACpB,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export default class Session extends EventEmitter<string | symbol, any> {
|
|
2
|
+
constructor(compress: any);
|
|
3
|
+
compress: null;
|
|
4
|
+
receiveData(data: any): void;
|
|
5
|
+
receiveFrame(frame: any): void;
|
|
6
|
+
}
|
|
7
|
+
import EventEmitter from 'eventemitter3';
|
|
8
|
+
//# sourceMappingURL=Session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../../src/Session.js"],"names":[],"mappings":"AAKA;IAGE,2BAGC;IALD,eAAe;IAOf,6BAWC;IAED,+BAKC;CACF;yBA/BwB,eAAe"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import pako from 'pako';
|
|
2
|
+
import EventEmitter from 'eventemitter3';
|
|
3
|
+
import Frame, { SignType } from './Frame';
|
|
4
|
+
import logger from './logger';
|
|
5
|
+
export default class Session extends EventEmitter {
|
|
6
|
+
constructor(compress) {
|
|
7
|
+
super();
|
|
8
|
+
this.compress = null;
|
|
9
|
+
this.compress = compress;
|
|
10
|
+
}
|
|
11
|
+
receiveData(data) {
|
|
12
|
+
try {
|
|
13
|
+
if (typeof data !== 'string') {
|
|
14
|
+
data = pako.inflate(data, { to: 'string' });
|
|
15
|
+
}
|
|
16
|
+
data = JSON.parse(data);
|
|
17
|
+
const frame = Frame.create(data);
|
|
18
|
+
this.receiveFrame(frame);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
logger.warn('ws message parse error', err);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
receiveFrame(frame) {
|
|
25
|
+
this.emit('receive', frame);
|
|
26
|
+
if (frame.s == SignType.msg) {
|
|
27
|
+
this.emit('message', frame);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=Session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../src/Session.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,YAAY;IAG/C,YAAY,QAAQ;QAClB,KAAK,EAAE,CAAA;QAHT,aAAQ,GAAG,IAAI,CAAA;QAIb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,WAAW,CAAC,IAAI;QACd,IAAI,CAAC;YACH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC3B,IAAI,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export namespace IMSocketEvent {
|
|
2
|
+
let CONNECTED: string;
|
|
3
|
+
let MESSAGE: string;
|
|
4
|
+
let STATECHANGE: string;
|
|
5
|
+
let RECONNECT: string;
|
|
6
|
+
let ERROR: string;
|
|
7
|
+
let RECEIVE: string;
|
|
8
|
+
}
|
|
9
|
+
export default class IMSocket extends EventEmitter<string | symbol, any> {
|
|
10
|
+
constructor(options?: {});
|
|
11
|
+
_session: WebsocketSession | null;
|
|
12
|
+
_options: {
|
|
13
|
+
token: any;
|
|
14
|
+
gatewayURL: any;
|
|
15
|
+
compress: any;
|
|
16
|
+
gatewayProvider: any;
|
|
17
|
+
headerProvider: any;
|
|
18
|
+
queryProvider: any;
|
|
19
|
+
createSocket: any;
|
|
20
|
+
onGetGateway: any;
|
|
21
|
+
headers: any;
|
|
22
|
+
queryParams: any;
|
|
23
|
+
logger: any;
|
|
24
|
+
metricsHook: any;
|
|
25
|
+
};
|
|
26
|
+
get state(): number | undefined;
|
|
27
|
+
get sessionId(): string;
|
|
28
|
+
get gateway(): any;
|
|
29
|
+
get maxSn(): number;
|
|
30
|
+
get session(): WebsocketSession | null;
|
|
31
|
+
init(config: any): void;
|
|
32
|
+
start(): void;
|
|
33
|
+
stop(): void;
|
|
34
|
+
sendData(data: any): void;
|
|
35
|
+
send(frameType: any, data: any): void;
|
|
36
|
+
setState(to: any): void;
|
|
37
|
+
_setupEventListeners(): void;
|
|
38
|
+
}
|
|
39
|
+
import EventEmitter from 'eventemitter3';
|
|
40
|
+
import WebsocketSession from './WebsocketSession';
|
|
41
|
+
//# sourceMappingURL=Socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Socket.d.ts","sourceRoot":"","sources":["../../src/Socket.js"],"names":[],"mappings":";;;;;;;;AAcA;IACE,0BAyBC;IAvBC,kCAAoB;IACpB;;;;;;;;;;;;;MAiBC;IAOH,gCAEC;IAED,wBAEC;IAED,mBAEC;IAED,oBAEC;IAED,uCAEC;IAED,wBA4BC;IAED,cAKC;IAED,aAGC;IAED,0BAGC;IAED,sCAEC;IAED,wBAGC;IAED,6BAyBC;CACF;yBAhJwB,eAAe;6BACX,oBAAoB"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import WebsocketSession from './WebsocketSession';
|
|
3
|
+
import { SessionState } from './constants';
|
|
4
|
+
import { setLogger } from './logger';
|
|
5
|
+
export const IMSocketEvent = {
|
|
6
|
+
CONNECTED: 'connected',
|
|
7
|
+
MESSAGE: 'message',
|
|
8
|
+
STATECHANGE: 'statechange',
|
|
9
|
+
RECONNECT: 'reconnect',
|
|
10
|
+
ERROR: 'error',
|
|
11
|
+
RECEIVE: 'receive',
|
|
12
|
+
};
|
|
13
|
+
export default class IMSocket extends EventEmitter {
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
super();
|
|
16
|
+
this._session = null;
|
|
17
|
+
this._options = {
|
|
18
|
+
token: options.token || '',
|
|
19
|
+
gatewayURL: options.gatewayURL || '',
|
|
20
|
+
compress: options.compress ?? 1,
|
|
21
|
+
gatewayProvider: options.gatewayProvider || null,
|
|
22
|
+
headerProvider: options.headerProvider || null,
|
|
23
|
+
queryProvider: options.queryProvider || null,
|
|
24
|
+
createSocket: options.createSocket || null,
|
|
25
|
+
// legacy compat
|
|
26
|
+
onGetGateway: options.onGateway || options.onGetGateway || null,
|
|
27
|
+
headers: options.headers || null,
|
|
28
|
+
queryParams: options.queryParams || null,
|
|
29
|
+
logger: options.logger || null,
|
|
30
|
+
metricsHook: options.metricsHook || null,
|
|
31
|
+
};
|
|
32
|
+
if (this._options.logger) {
|
|
33
|
+
setLogger(this._options.logger);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
get state() {
|
|
37
|
+
return this._session?.state;
|
|
38
|
+
}
|
|
39
|
+
get sessionId() {
|
|
40
|
+
return this._session?.sessionId || '';
|
|
41
|
+
}
|
|
42
|
+
get gateway() {
|
|
43
|
+
return this._session?.gateway || '';
|
|
44
|
+
}
|
|
45
|
+
get maxSn() {
|
|
46
|
+
return this._session?.maxSn || 0;
|
|
47
|
+
}
|
|
48
|
+
get session() {
|
|
49
|
+
return this._session;
|
|
50
|
+
}
|
|
51
|
+
init(config) {
|
|
52
|
+
if (config) {
|
|
53
|
+
Object.assign(this._options, config);
|
|
54
|
+
}
|
|
55
|
+
if (this._options.logger) {
|
|
56
|
+
setLogger(this._options.logger);
|
|
57
|
+
}
|
|
58
|
+
this._session = new WebsocketSession(this._options.token, this._options.gatewayURL, this._options.compress, {
|
|
59
|
+
gatewayProvider: this._options.gatewayProvider,
|
|
60
|
+
headerProvider: this._options.headerProvider,
|
|
61
|
+
queryProvider: this._options.queryProvider,
|
|
62
|
+
createSocket: this._options.createSocket,
|
|
63
|
+
onGetGateway: this._options.onGetGateway,
|
|
64
|
+
headers: this._options.headers,
|
|
65
|
+
queryParams: this._options.queryParams,
|
|
66
|
+
});
|
|
67
|
+
if (this._options.metricsHook) {
|
|
68
|
+
this._session.setMetricsHook(this._options.metricsHook);
|
|
69
|
+
}
|
|
70
|
+
this._setupEventListeners();
|
|
71
|
+
}
|
|
72
|
+
start() {
|
|
73
|
+
if (!this._session) {
|
|
74
|
+
this.init();
|
|
75
|
+
}
|
|
76
|
+
return this._session.start();
|
|
77
|
+
}
|
|
78
|
+
stop() {
|
|
79
|
+
if (!this._session)
|
|
80
|
+
return;
|
|
81
|
+
this._session.stop();
|
|
82
|
+
}
|
|
83
|
+
sendData(data) {
|
|
84
|
+
if (!this._session)
|
|
85
|
+
return;
|
|
86
|
+
this._session.sendData(data);
|
|
87
|
+
}
|
|
88
|
+
send(frameType, data) {
|
|
89
|
+
this.sendData(JSON.stringify({ s: frameType, d: data }));
|
|
90
|
+
}
|
|
91
|
+
setState(to) {
|
|
92
|
+
if (!this._session)
|
|
93
|
+
return;
|
|
94
|
+
this._session.setState(to);
|
|
95
|
+
}
|
|
96
|
+
_setupEventListeners() {
|
|
97
|
+
if (!this._session)
|
|
98
|
+
return;
|
|
99
|
+
this._session.on('message', (frame) => {
|
|
100
|
+
this.emit('message', frame);
|
|
101
|
+
});
|
|
102
|
+
this._session.on('reconnect', () => {
|
|
103
|
+
this.emit('reconnect');
|
|
104
|
+
});
|
|
105
|
+
this._session.on('statechange', ({ from, to }) => {
|
|
106
|
+
this.emit('statechange', { from, to });
|
|
107
|
+
if (to === SessionState.connected) {
|
|
108
|
+
this.emit('connected');
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
this._session.on('error', (error) => {
|
|
112
|
+
this.emit('error', error);
|
|
113
|
+
});
|
|
114
|
+
this._session.on('receive', (frame) => {
|
|
115
|
+
this.emit('receive', frame);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=Socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Socket.js","sourceRoot":"","sources":["../../src/Socket.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export default class StateSession extends Session {
|
|
2
|
+
stateMap: {
|
|
3
|
+
[SessionState.init]: {
|
|
4
|
+
handler: string;
|
|
5
|
+
start: number;
|
|
6
|
+
max: number;
|
|
7
|
+
};
|
|
8
|
+
[SessionState.gateway]: {
|
|
9
|
+
handler: string;
|
|
10
|
+
start: number;
|
|
11
|
+
max: number;
|
|
12
|
+
maxRetry: number;
|
|
13
|
+
};
|
|
14
|
+
[SessionState.wsConnected]: {
|
|
15
|
+
handler: string;
|
|
16
|
+
start: number;
|
|
17
|
+
max: number;
|
|
18
|
+
};
|
|
19
|
+
[SessionState.connected]: {
|
|
20
|
+
handler: string;
|
|
21
|
+
start: number;
|
|
22
|
+
max: number;
|
|
23
|
+
};
|
|
24
|
+
[SessionState.retry]: {
|
|
25
|
+
handler: string;
|
|
26
|
+
start: number;
|
|
27
|
+
maxRetry: number;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
stateConstraints: {
|
|
31
|
+
[SessionState.origin]: number[];
|
|
32
|
+
[SessionState.init]: number[];
|
|
33
|
+
[SessionState.gateway]: number[];
|
|
34
|
+
[SessionState.wsConnected]: number[];
|
|
35
|
+
[SessionState.connected]: number[];
|
|
36
|
+
[SessionState.retry]: number[];
|
|
37
|
+
};
|
|
38
|
+
timeout: number;
|
|
39
|
+
hbTimers: any[];
|
|
40
|
+
state: number;
|
|
41
|
+
sessionId: string;
|
|
42
|
+
maxSn: number;
|
|
43
|
+
recvQueue: {};
|
|
44
|
+
_metricsHook: any;
|
|
45
|
+
setMetricsHook(hook: any): void;
|
|
46
|
+
_metric(event: any, data: any): void;
|
|
47
|
+
start(): void;
|
|
48
|
+
taskTimer: TaskTimer | undefined;
|
|
49
|
+
getGateway: (next: any, task: any) => void;
|
|
50
|
+
getGateWayOk: (url: any) => void;
|
|
51
|
+
gateway: any;
|
|
52
|
+
connectWs: (next: any, task: any) => void;
|
|
53
|
+
connectWsOk: () => void;
|
|
54
|
+
connectWsFail: () => void;
|
|
55
|
+
helloFail: () => void;
|
|
56
|
+
receiveHello: (frame: any) => void;
|
|
57
|
+
sendHeartBeat: (next: any, task: any) => void;
|
|
58
|
+
hbTimeout: () => void;
|
|
59
|
+
receivePong: (frame: any) => void;
|
|
60
|
+
resumeOk: () => void;
|
|
61
|
+
reconnect: () => boolean;
|
|
62
|
+
processEvent(frame: any): void;
|
|
63
|
+
processDataFrame(frame: any): void;
|
|
64
|
+
canChange(from: any, to: any): boolean;
|
|
65
|
+
setState: (to: any) => void;
|
|
66
|
+
_stop(): void;
|
|
67
|
+
}
|
|
68
|
+
import Session from './Session';
|
|
69
|
+
import { SessionState } from './constants';
|
|
70
|
+
import TaskTimer from './TaskTimer';
|
|
71
|
+
//# sourceMappingURL=StateSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateSession.d.ts","sourceRoot":"","sources":["../../src/StateSession.js"],"names":[],"mappings":"AAMA;IACE;QACE,CAAC,YAAY,CAAC,IAAI,CAAC;;;;UAIlB;QACD,CAAC,YAAY,CAAC,OAAO,CAAC;;;;;UAKrB;QACD,CAAC,YAAY,CAAC,WAAW,CAAC;;;;UAIzB;QACD,CAAC,YAAY,CAAC,SAAS,CAAC;;;;UAIvB;QACD,CAAC,YAAY,CAAC,KAAK,CAAC;;;;UAInB;MACF;IAED;QACE,CAAC,YAAY,CAAC,MAAM,CAAC,WAAqB;QAC1C,CAAC,YAAY,CAAC,IAAI,CAAC,WAAwB;QAC3C,CAAC,YAAY,CAAC,OAAO,CAAC,WAA+C;QACrE,CAAC,YAAY,CAAC,WAAW,CAAC,WAAmE;QAC7F,CAAC,YAAY,CAAC,SAAS,CAAC,WAIvB;QACD,CAAC,YAAY,CAAC,KAAK,CAAC,WAAmE;MACxF;IAIC,gBAAgB;IA2GlB,gBAAa;IAzGX,cAAgC;IAChC,kBAAmB;IACnB,cAAc;IACd,cAAmB;IACnB,kBAAwB;IAG1B,gCAIC;IAED,qCAMC;IAED,cAIC;IAFC,iCAAgC;IAIlC,aAAc,SAAI,EAAE,SAAI,UAevB;IAED,eAAgB,QAAG,UAIlB;IAFC,aAAkB;IAIpB,YAAa,SAAI,EAAE,SAAI,UAqBtB;IAED,wBAGC;IAED,0BAGC;IAED,sBAGC;IAED,eAAgB,UAAK,UAepB;IAID,gBAAiB,SAAI,EAAE,SAAI,UAkB1B;IAED,sBAiBC;IAED,cAAe,UAAK,UAQnB;IAED,qBAKC;IAED,yBAKC;IAED,+BAqBC;IAED,mCAEC;IAsBD,uCAKC;IAED,WAAY,OAAE,UAyBb;IAED,cAQC;CACF;oBAzTmB,WAAW;6BAIF,aAAa;sBAHpB,aAAa"}
|