@based/server 8.0.1 → 8.1.0
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/dist/incoming/http/fakeWs/function.d.ts +2 -0
- package/dist/incoming/http/fakeWs/function.js +48 -0
- package/dist/incoming/http/fakeWs/function.js.map +1 -0
- package/dist/incoming/http/fakeWs/handleBinary.d.ts +4 -0
- package/dist/incoming/http/fakeWs/handleBinary.js +134 -0
- package/dist/incoming/http/fakeWs/handleBinary.js.map +1 -0
- package/dist/incoming/http/fakeWs/index.d.ts +3 -0
- package/dist/incoming/http/fakeWs/index.js +33 -0
- package/dist/incoming/http/fakeWs/index.js.map +1 -0
- package/dist/incoming/http/fakeWs/query.d.ts +2 -0
- package/dist/incoming/http/fakeWs/query.js +77 -0
- package/dist/incoming/http/fakeWs/query.js.map +1 -0
- package/dist/incoming/http/fakeWs/types.d.ts +3 -0
- package/dist/incoming/http/fakeWs/types.js +2 -0
- package/dist/incoming/http/fakeWs/types.js.map +1 -0
- package/dist/incoming/http/index.js +38 -4
- package/dist/incoming/http/index.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +18 -0
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { readUint8, decodeName, decodePayload, encodeFunctionResponse, valueToBuffer, parsePayload, encodeErrorResponse, } from '../../../protocol.js';
|
|
2
|
+
import { verifyRoute } from '../../../verifyRoute.js';
|
|
3
|
+
import { installFn } from '../../../installFn.js';
|
|
4
|
+
import { createError } from '../../../error/index.js';
|
|
5
|
+
import { BasedErrorCode } from '@based/errors';
|
|
6
|
+
export const handleFunction = (arr, startByte, len, isDeflate, ctx, server) => {
|
|
7
|
+
// | 4 header | 3 id | 1 name length | * name | * payload |
|
|
8
|
+
const requestId = readUint8(arr, startByte + 4, 3);
|
|
9
|
+
const nameLen = arr[startByte + 7];
|
|
10
|
+
const name = decodeName(arr, startByte + 8, startByte + 8 + nameLen);
|
|
11
|
+
if (!name || !requestId) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const route = verifyRoute(server, ctx, 'function', server.functions.route(name), name, requestId);
|
|
15
|
+
if (route === null) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const payload = len === nameLen + 8
|
|
19
|
+
? undefined
|
|
20
|
+
: parsePayload(decodePayload(new Uint8Array(arr.slice(startByte + 8 + nameLen, startByte + len)), isDeflate));
|
|
21
|
+
return installFn(server, ctx, route).then(async (spec) => {
|
|
22
|
+
const isAuth = route.public ||
|
|
23
|
+
(await server.auth
|
|
24
|
+
.authorize(server.client, ctx, route.name, payload)
|
|
25
|
+
.catch(() => false));
|
|
26
|
+
if (!isAuth) {
|
|
27
|
+
const errorData = createError(server, ctx, BasedErrorCode.AuthorizeRejectedError, {
|
|
28
|
+
route,
|
|
29
|
+
requestId,
|
|
30
|
+
});
|
|
31
|
+
return encodeErrorResponse(valueToBuffer(errorData));
|
|
32
|
+
}
|
|
33
|
+
return spec
|
|
34
|
+
.fn(server.client, payload, ctx)
|
|
35
|
+
.then((v) => {
|
|
36
|
+
return encodeFunctionResponse(requestId, valueToBuffer(v));
|
|
37
|
+
})
|
|
38
|
+
.catch((err) => {
|
|
39
|
+
const errorData = createError(server, ctx, BasedErrorCode.FunctionError, {
|
|
40
|
+
route,
|
|
41
|
+
requestId,
|
|
42
|
+
err,
|
|
43
|
+
});
|
|
44
|
+
return encodeErrorResponse(valueToBuffer(errorData));
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=function.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/incoming/http/fakeWs/function.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { HttpSession, Context } from '@based/functions';
|
|
3
|
+
import { BasedServer } from '../../../server.js';
|
|
4
|
+
export declare const handleBinary: (server: BasedServer, ctx: Context<HttpSession>, data: Buffer) => Promise<void>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { end } from '../../../sendHttpResponse.js';
|
|
2
|
+
import { decodeHeader, readUint8, encodeAuthResponse, valueToBuffer, } from '../../../protocol.js';
|
|
3
|
+
import { handleQuery } from './query.js';
|
|
4
|
+
import { handleFunction } from './function.js';
|
|
5
|
+
const reader = (server, ctx, arr, start) => {
|
|
6
|
+
const { len, isDeflate, type } = decodeHeader(readUint8(arr, start, 4));
|
|
7
|
+
const next = len + start;
|
|
8
|
+
// type 0 = function
|
|
9
|
+
if (type === 0) {
|
|
10
|
+
const p = handleFunction(arr, start, len, isDeflate, ctx, server);
|
|
11
|
+
if (p) {
|
|
12
|
+
return [next, p];
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return [undefined];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// type 1 = subscribe , type 2 === get
|
|
19
|
+
if (type === 1 || type === 3) {
|
|
20
|
+
const p = handleQuery(arr, start, len, isDeflate, ctx, server);
|
|
21
|
+
if (p) {
|
|
22
|
+
return [next, p];
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return [undefined];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// type 2 unsubscribe
|
|
29
|
+
if (type === 2) {
|
|
30
|
+
return [next];
|
|
31
|
+
}
|
|
32
|
+
// // type 4 = auth
|
|
33
|
+
if (type === 4) {
|
|
34
|
+
return [next];
|
|
35
|
+
}
|
|
36
|
+
// fix these 2!
|
|
37
|
+
// type 5 = channel sub
|
|
38
|
+
if (type === 5) {
|
|
39
|
+
return [next];
|
|
40
|
+
}
|
|
41
|
+
// type 6 = channelPublish
|
|
42
|
+
if (type === 6) {
|
|
43
|
+
return [next];
|
|
44
|
+
}
|
|
45
|
+
// // type 5 = channelSubscribe
|
|
46
|
+
// if (
|
|
47
|
+
// type === 5 &&
|
|
48
|
+
// channelSubscribeMessage(arr, start, len, isDeflate, ctx, server)
|
|
49
|
+
// ) {
|
|
50
|
+
// return next;
|
|
51
|
+
// }
|
|
52
|
+
// // type 6 = channelPublish
|
|
53
|
+
// if (
|
|
54
|
+
// type === 6 &&
|
|
55
|
+
// channelPublishMessage(arr, start, len, isDeflate, ctx, server)
|
|
56
|
+
// ) {
|
|
57
|
+
// return next;
|
|
58
|
+
// }
|
|
59
|
+
// // type 7.x = subType
|
|
60
|
+
// if (type === 7) {
|
|
61
|
+
// const subType = readUint8(arr, start + 4, 1);
|
|
62
|
+
// // type 7.0 = channelUnsubscribe
|
|
63
|
+
// if (subType === 0) {
|
|
64
|
+
// if (unsubscribeChannelMessage(arr, start, len, isDeflate, ctx, server)) {
|
|
65
|
+
// return next;
|
|
66
|
+
// }
|
|
67
|
+
// }
|
|
68
|
+
// // type 7.1 = register stream
|
|
69
|
+
// if (subType === 1) {
|
|
70
|
+
// if (registerStream(arr, start, len, isDeflate, ctx, server)) {
|
|
71
|
+
// return next;
|
|
72
|
+
// }
|
|
73
|
+
// }
|
|
74
|
+
// // type 7.2 = chunk
|
|
75
|
+
// if (subType === 2) {
|
|
76
|
+
// if (receiveChunkStream(arr, start, len, isDeflate, ctx, server)) {
|
|
77
|
+
// return next;
|
|
78
|
+
// }
|
|
79
|
+
// }
|
|
80
|
+
// }
|
|
81
|
+
// return false...
|
|
82
|
+
return [next];
|
|
83
|
+
};
|
|
84
|
+
export const handleBinary = async (server, ctx, data) => {
|
|
85
|
+
if (!ctx.session) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const uint8View = data;
|
|
89
|
+
const len = uint8View.byteLength;
|
|
90
|
+
let next = 0;
|
|
91
|
+
const q = [];
|
|
92
|
+
while (next < len) {
|
|
93
|
+
if (!ctx.session) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const [n, p] = reader(server, ctx, uint8View, next);
|
|
97
|
+
if (n === undefined) {
|
|
98
|
+
ctx.session.res.end();
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (p) {
|
|
102
|
+
q.push(p);
|
|
103
|
+
}
|
|
104
|
+
next = n;
|
|
105
|
+
}
|
|
106
|
+
const prevToken = ctx.session.authState.token;
|
|
107
|
+
// TRY CATCH...
|
|
108
|
+
const r = await Promise.all(q);
|
|
109
|
+
if (!ctx.session) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (ctx.session.authState.token || prevToken) {
|
|
113
|
+
const b = encodeAuthResponse(valueToBuffer(ctx.session.authState));
|
|
114
|
+
r.push(b);
|
|
115
|
+
}
|
|
116
|
+
const buf = Buffer.allocUnsafe(r.reduce((acc, i) => {
|
|
117
|
+
if (!i.byteLength) {
|
|
118
|
+
return acc;
|
|
119
|
+
}
|
|
120
|
+
return acc + i.byteLength + 4;
|
|
121
|
+
}, 0));
|
|
122
|
+
let i = 0;
|
|
123
|
+
for (const x of r) {
|
|
124
|
+
if (!x.byteLength) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
buf.writeUint32LE(x.byteLength, i);
|
|
128
|
+
i += 4;
|
|
129
|
+
buf.set(x, i);
|
|
130
|
+
i += x.byteLength;
|
|
131
|
+
}
|
|
132
|
+
end(ctx, buf);
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=handleBinary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleBinary.js","sourceRoot":"","sources":["../../../../src/incoming/http/fakeWs/handleBinary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { handleBinary } from './handleBinary.js';
|
|
2
|
+
const MAX_CHUNK_SIZE = 1024 * 1024;
|
|
3
|
+
export const handleFakeWs = (server, ctx) => {
|
|
4
|
+
const len = ctx.session.headers['content-length'];
|
|
5
|
+
if (len > MAX_CHUNK_SIZE * 100 || !len || typeof len !== 'number') {
|
|
6
|
+
ctx.session.res.end();
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let total;
|
|
10
|
+
let lastWritten = 0;
|
|
11
|
+
// buffer
|
|
12
|
+
// add length as a header
|
|
13
|
+
ctx.session.res.onData((c, isLast) => {
|
|
14
|
+
if (!total) {
|
|
15
|
+
if (!isLast) {
|
|
16
|
+
total = Buffer.allocUnsafe(len);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
total = Buffer.from(c);
|
|
20
|
+
handleBinary(server, ctx, total);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
total.set(c, lastWritten);
|
|
26
|
+
lastWritten += c.byteLength;
|
|
27
|
+
if (isLast) {
|
|
28
|
+
handleBinary(server, ctx, total);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// ctx.session.res.end('blap')
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/incoming/http/fakeWs/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAAmB,EACnB,GAAyB,EACpB,EAAE;IACP,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAEjD,IAAI,GAAG,GAAG,cAAc,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;QACrB,OAAM;IACR,CAAC;IAED,IAAI,KAAa,CAAA;IACjB,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,SAAS;IACT,yBAAyB;IACzB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACtB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAM;YACR,CAAC;QACH,CAAC;QACD,aAAa;QACb,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACzB,WAAW,IAAI,CAAC,CAAC,UAAU,CAAA;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,8BAA8B;AAChC,CAAC,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createObs, getObsAndStopRemove, hasObs, subscribeNext, start, } from '../../../query/index.js';
|
|
2
|
+
import { readUint8, decodeName, parsePayload, decodePayload, valueToBuffer, updateId, encodeErrorResponse, } from '../../../protocol.js';
|
|
3
|
+
import { verifyRoute } from '../../../verifyRoute.js';
|
|
4
|
+
import { createError } from '../../../error/index.js';
|
|
5
|
+
import { BasedErrorCode } from '@based/errors';
|
|
6
|
+
const EMPTY = Buffer.allocUnsafe(0);
|
|
7
|
+
export const handleQuery = (arr, startByte, len, isDeflate, ctx, server) => {
|
|
8
|
+
// | 4 header | 8 id | 8 checksum | 1 name length | * name | * payload |
|
|
9
|
+
const nameLen = arr[startByte + 20];
|
|
10
|
+
const id = readUint8(arr, startByte + 4, 8);
|
|
11
|
+
const checksum = readUint8(arr, startByte + 12, 8);
|
|
12
|
+
const name = decodeName(arr, startByte + 21, startByte + 21 + nameLen);
|
|
13
|
+
if (!name || !id) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const route = verifyRoute(server, ctx, 'query', server.functions.route(name), name, id);
|
|
17
|
+
const payload = len === nameLen + 21
|
|
18
|
+
? undefined
|
|
19
|
+
: parsePayload(decodePayload(new Uint8Array(arr.slice(startByte + 21 + nameLen, startByte + len)), isDeflate));
|
|
20
|
+
if (route === null) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// COMPARE CHECKSUMS
|
|
24
|
+
return new Promise(async (resolve, reject) => {
|
|
25
|
+
const isAuth = route.public ||
|
|
26
|
+
(await server.auth
|
|
27
|
+
.authorize(server.client, ctx, route.name, payload)
|
|
28
|
+
.catch(() => false));
|
|
29
|
+
if (!isAuth) {
|
|
30
|
+
const errorData = createError(server, ctx, BasedErrorCode.AuthorizeRejectedError, {
|
|
31
|
+
route,
|
|
32
|
+
observableId: id,
|
|
33
|
+
});
|
|
34
|
+
resolve(encodeErrorResponse(valueToBuffer(errorData)));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (hasObs(server, id)) {
|
|
38
|
+
const obs = getObsAndStopRemove(server, id);
|
|
39
|
+
if (obs.cache) {
|
|
40
|
+
if (obs.checksum === checksum) {
|
|
41
|
+
resolve(EMPTY);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const buffer = obs.cache;
|
|
45
|
+
if (obs.reusedCache) {
|
|
46
|
+
const prevId = updateId(buffer, obs.id);
|
|
47
|
+
buffer.set(prevId, 4);
|
|
48
|
+
}
|
|
49
|
+
resolve(buffer);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
resolve(EMPTY);
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const obs = createObs(server, name, id, payload, true);
|
|
57
|
+
if (server.queryEvents) {
|
|
58
|
+
server.queryEvents.get(obs, ctx);
|
|
59
|
+
}
|
|
60
|
+
subscribeNext(obs, (err) => {
|
|
61
|
+
if (err) {
|
|
62
|
+
resolve(EMPTY);
|
|
63
|
+
// console.error('NOT HANDLED')
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const buffer = obs.cache;
|
|
67
|
+
if (obs.reusedCache) {
|
|
68
|
+
const prevId = updateId(buffer, obs.id);
|
|
69
|
+
buffer.set(prevId, 4);
|
|
70
|
+
}
|
|
71
|
+
resolve(buffer);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
start(server, id);
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../src/incoming/http/fakeWs/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { BasedServer } from '../../../server.js';
|
|
2
|
+
import { HttpSession, Context } from '@based/functions';
|
|
3
|
+
export type FakeBinaryMessageHandler = (arr: Uint8Array, start: number, len: number, isDeflate: boolean, ctx: Context<HttpSession>, server: BasedServer) => Promise<Uint8Array> | void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/incoming/http/fakeWs/types.ts"],"names":[],"mappings":""}
|
|
@@ -10,12 +10,16 @@ import { authorize } from '../../authorize.js';
|
|
|
10
10
|
import { end } from '../../sendHttpResponse.js';
|
|
11
11
|
import { httpPublish } from './publish.js';
|
|
12
12
|
import { handleRequest } from './handleRequest.js';
|
|
13
|
+
import { handleFakeWs } from './fakeWs/index.js';
|
|
13
14
|
let clientId = 0;
|
|
14
15
|
export const httpHandler = (server, req, res) => {
|
|
16
|
+
let ctx;
|
|
15
17
|
res.onAborted(() => {
|
|
16
|
-
ctx
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
if (ctx) {
|
|
19
|
+
ctx.session.res = null;
|
|
20
|
+
ctx.session.req = null;
|
|
21
|
+
ctx.session = null;
|
|
22
|
+
}
|
|
19
23
|
});
|
|
20
24
|
const ip = server.getIp(res, req);
|
|
21
25
|
if (blockIncomingRequest(server, ip, res, req, server.rateLimit.http, 1)) {
|
|
@@ -24,6 +28,36 @@ export const httpHandler = (server, req, res) => {
|
|
|
24
28
|
const method = req.getMethod();
|
|
25
29
|
const url = req.getUrl();
|
|
26
30
|
const path = url.split('/');
|
|
31
|
+
if (server.restFallbackPath && path[1] === server.restFallbackPath) {
|
|
32
|
+
if (method !== 'post') {
|
|
33
|
+
res.end();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
let authorization = path[2];
|
|
37
|
+
if (!authorization || authorization.length > 5e3) {
|
|
38
|
+
res.end();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
ctx = {
|
|
42
|
+
session: {
|
|
43
|
+
url,
|
|
44
|
+
res,
|
|
45
|
+
req,
|
|
46
|
+
method,
|
|
47
|
+
origin: req.getHeader('origin'),
|
|
48
|
+
ua: req.getHeader('user-agent'),
|
|
49
|
+
ip,
|
|
50
|
+
id: ++clientId,
|
|
51
|
+
authState: parseAuthState(authorization),
|
|
52
|
+
// @ts-ignore
|
|
53
|
+
headers: {
|
|
54
|
+
'content-length': Number(req.getHeader('content-length')),
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
handleFakeWs(server, ctx);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
27
61
|
const route = server.functions.route(path[1], url);
|
|
28
62
|
if (route === null || route.internalOnly === true) {
|
|
29
63
|
sendError(server, {
|
|
@@ -75,7 +109,7 @@ export const httpHandler = (server, req, res) => {
|
|
|
75
109
|
}
|
|
76
110
|
}
|
|
77
111
|
}
|
|
78
|
-
|
|
112
|
+
ctx = {
|
|
79
113
|
session: {
|
|
80
114
|
url,
|
|
81
115
|
res,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/incoming/http/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/incoming/http/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -122,6 +122,7 @@ export declare class BasedServer {
|
|
|
122
122
|
activeObservablesById: Map<number, ActiveObservable>;
|
|
123
123
|
channelCleanTimeout: NodeJS.Timeout;
|
|
124
124
|
channelCleanupCycle: number;
|
|
125
|
+
restFallbackPath: string;
|
|
125
126
|
activeChannels: {
|
|
126
127
|
[name: string]: Map<number, ActiveChannel>;
|
|
127
128
|
};
|
package/dist/server.js
CHANGED
|
@@ -89,6 +89,7 @@ export class BasedServer {
|
|
|
89
89
|
activeObservablesById = new Map();
|
|
90
90
|
channelCleanTimeout;
|
|
91
91
|
channelCleanupCycle = 30e3;
|
|
92
|
+
restFallbackPath;
|
|
92
93
|
activeChannels = {};
|
|
93
94
|
activeChannelsById = new Map();
|
|
94
95
|
listeners = {};
|
|
@@ -107,6 +108,23 @@ export class BasedServer {
|
|
|
107
108
|
this.silent = opts.silent;
|
|
108
109
|
}
|
|
109
110
|
this.clients = opts.clients ?? {};
|
|
111
|
+
if (!opts.functions) {
|
|
112
|
+
opts.functions = {};
|
|
113
|
+
}
|
|
114
|
+
if (!opts.functions.configs) {
|
|
115
|
+
opts.functions.configs = {};
|
|
116
|
+
}
|
|
117
|
+
let restPath = '1' +
|
|
118
|
+
(~~(Math.random() * 99999999)).toString(16) +
|
|
119
|
+
(~~(Math.random() * 99999999)).toString(16);
|
|
120
|
+
this.restFallbackPath = restPath;
|
|
121
|
+
opts.functions.configs['based:rpstatus'] = {
|
|
122
|
+
type: 'function',
|
|
123
|
+
public: true,
|
|
124
|
+
fn: async () => {
|
|
125
|
+
return restPath;
|
|
126
|
+
},
|
|
127
|
+
};
|
|
110
128
|
this.functions = new BasedFunctions(this, opts.functions);
|
|
111
129
|
this.auth = new BasedAuth(this, opts.auth);
|
|
112
130
|
if (opts.client) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,eAAe,GAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,GAAG,MAAM,YAAY,CAAA;AAC5B,OAAO,WAAW,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAkB,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,UAAU,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,mBAAmB,IAAI,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAEzF,OAAO,IAAI,MAAM,WAAW,CAAA;AA+D5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AACF,MAAM,OAAO,WAAW;IACf,OAAO,CAAwB,CAAC,iBAAiB;IAEjD,MAAM,CAA2B;IAEjC,SAAS,CAAgB;IAEzB,IAAI,CAAW;IAEf,IAAI,CAAQ;IAEZ,MAAM,CAAkB;IAExB,MAAM,CAAS;IAEf,WAAW,CAAa;IAExB,aAAa,CAAe;IAE5B,SAAS,GAAc;QAC5B,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,GAAG;KACX,CAAA;IAEM,YAAY,CAAK;IAEjB,GAAG,GAAmC,KAAK,EAAE,GAAY,EAAE,EAAE;QAClE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;gBAClB,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,CAAC;gBACN,OAAO,EAAE,EAAE;aACZ,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC,CAAA;IAEM,KAAK,GAAU,CAAC,GAAqB,EAAU,EAAE;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC7D,CAAC,CAAA;IAEM,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAA;IAE1C,+CAA+C;IACxC,UAAU,GAAgB,IAAI,GAAG,EAAE,CAAA;IAE1C,mCAAmC;IACnC,wDAAwD;IACjD,gBAAgB,GAMnB,IAAI,GAAG,EAAE,CAAA;IAEN,yBAAyB,GAAY,KAAK,CAAA;IAE1C,sBAAsB,CAAgB;IAEtC,eAAe,CAAgB;IAE/B,eAAe,GAAW,IAAI,CAAA;IAE9B,iBAAiB,GAEpB,EAAE,CAAA;IAEC,qBAAqB,GAAkC,IAAI,GAAG,EAAE,CAAA;IAEhE,mBAAmB,CAAgB;IAEnC,mBAAmB,GAAW,IAAI,CAAA;IAElC,gBAAgB,CAAQ;IAExB,cAAc,GAEjB,EAAE,CAAA;IAEC,kBAAkB,GAA+B,IAAI,GAAG,EAAE,CAAA;IAE1D,SAAS,GAEZ,EAAE,CAAA;IAEC,aAAa,CAAuD;IAE3E,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnB,OAAO,gBAAgB,IAAI,CAAC,IAAI,GAAG,CAAA;IACrC,CAAC;IAED,YAAY,IAAmB;QAC7B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAA;QACnC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QAEjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAA;QAC7B,CAAC;QAED,IAAI,QAAQ,GACV,GAAG;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAA;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG;YACzC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI;YACZ,EAAE,EAAE,KAAK,IAAI,EAAE;gBACb,OAAO,QAAQ,CAAA;YACjB,CAAC;SACF,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,iEAAiE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,CAAC;QAED,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,CACF,IAAW,EACX,MAAe,EACf,GAAoB,EACpB,GAAoB;QAEpB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;IAED,EAAE,CAAC,IAAW,EAAE,EAA6B;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,CAAC,IAAW,EAAE,EAA6B;QAC7C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,EAAE,CAAC,CAAC,CAAC,CAAA;YACL,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,IAAW,EAAE,EAA6B;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrD,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;wBACxB,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACtB,MAAK;oBACP,CAAC;gBACH,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAa,EAAE,YAAsB;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE;gBACnE,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,IAAI,CAAC,MAAM;wBACd,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;oBAChC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CACV,UAAU,CAAC,GAAG,CAAC,iCAAiC,CAAC,EACjD,IAAI,CAAC,IAAI,CACV,CAAA;oBACD,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;CACF"}
|