@seriousme/opifex 2.3.0 → 2.4.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/client/client.ts +5 -0
- package/connNext/baseConnNext.ts +123 -0
- package/deno/tlsServer.test.ts +1 -1
- package/deno/wsServer.ts +11 -3
- package/dev_utils/WebStreamEndpoint.ts +5 -0
- package/dev_utils/asyncStreamEndpoint.ts +5 -0
- package/dev_utils/asyncStreamPair.ts +4 -9
- package/dev_utils/asyncStreamPairToNext.ts +45 -0
- package/dev_utils/asyncStreamToNext.ts +30 -137
- package/dev_utils/connNextPair.test.ts +2 -2
- package/dev_utils/generateCert.ts +297 -77
- package/dev_utils/mockConn.ts +37 -93
- package/dev_utils/mockServer.ts +1 -1
- package/dev_utils/webStreamPair.ts +3 -7
- package/dev_utils/webStreamPairToNext.ts +48 -0
- package/dev_utils/webStreamToNext.ts +28 -161
- package/dist/client/client.d.ts +4 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +3 -0
- package/dist/client/client.js.map +1 -1
- package/dist/connNext/baseConnNext.d.ts +20 -0
- package/dist/connNext/baseConnNext.d.ts.map +1 -0
- package/dist/connNext/baseConnNext.js +95 -0
- package/dist/connNext/baseConnNext.js.map +1 -0
- package/dist/dev_utils/generateCert.d.ts +5 -4
- package/dist/dev_utils/generateCert.d.ts.map +1 -1
- package/dist/dev_utils/generateCert.js +230 -65
- package/dist/dev_utils/generateCert.js.map +1 -1
- package/dist/examples/mqtt+mqtts.test.js +1 -1
- package/dist/examples/mqtt+mqtts.test.js.map +1 -1
- package/dist/examples/mqtts.test.js +1 -1
- package/dist/examples/mqtts.test.js.map +1 -1
- package/dist/node/nodeSocketToNext.d.ts +10 -13
- package/dist/node/nodeSocketToNext.d.ts.map +1 -1
- package/dist/node/nodeSocketToNext.js +75 -131
- package/dist/node/nodeSocketToNext.js.map +1 -1
- package/dist/web/webSocketToNext.d.ts +18 -1
- package/dist/web/webSocketToNext.d.ts.map +1 -1
- package/dist/web/webSocketToNext.js +92 -127
- package/dist/web/webSocketToNext.js.map +1 -1
- package/dist/web/wsClient.d.ts.map +1 -1
- package/dist/web/wsClient.js +4 -3
- package/dist/web/wsClient.js.map +1 -1
- package/examples/mqtt+mqtts.test.ts +1 -1
- package/examples/mqtts.test.ts +1 -1
- package/node/nodeSocketToNext.ts +85 -148
- package/node/tlsServer.test.ts +1 -1
- package/package.json +2 -4
- package/web/webSocketToNext.ts +108 -145
- package/web/wsClient.ts +10 -3
- package/dev_utils/webStreamPair.test.ts +0 -171
|
@@ -1,187 +1,54 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/** Create a new ConnNext object from a Webstream */
|
|
14
|
-
constructor(endPoint: WebStreamPairEndpoint) {
|
|
1
|
+
import { BaseConnNext } from "../connNext/baseConnNext.ts";
|
|
2
|
+
import type { WebStreamEndpoint } from "./WebStreamEndpoint.ts";
|
|
3
|
+
|
|
4
|
+
export class WebStreamConnNext extends BaseConnNext {
|
|
5
|
+
remoteAddr = undefined;
|
|
6
|
+
localAddr = undefined;
|
|
7
|
+
private endPoint;
|
|
8
|
+
private reader: ReadableStreamDefaultReader<Uint8Array>;
|
|
9
|
+
private writer: WritableStreamDefaultWriter<Uint8Array>;
|
|
10
|
+
|
|
11
|
+
constructor(endPoint: WebStreamEndpoint) {
|
|
12
|
+
super();
|
|
15
13
|
this.endPoint = endPoint;
|
|
16
|
-
this.closed = false;
|
|
17
14
|
this.reader = endPoint.readable.getReader();
|
|
18
15
|
this.writer = endPoint.writable.getWriter();
|
|
19
16
|
this.reader.closed.catch(() => {});
|
|
20
17
|
this.writer.closed.catch(() => {});
|
|
21
18
|
}
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
* Writes data chunk to the underlying WebStream WritableStream
|
|
25
|
-
*/ async write(chunk: Uint8Array): Promise<void> {
|
|
26
|
-
if (this.closed) {
|
|
27
|
-
return Promise.reject(new Error("Pipe closed"));
|
|
28
|
-
}
|
|
20
|
+
protected async pullNextChunk(): Promise<Uint8Array | null> {
|
|
29
21
|
try {
|
|
30
|
-
await this.writer.write(chunk);
|
|
31
|
-
return;
|
|
32
|
-
} catch (err) {
|
|
33
|
-
this.closed = true;
|
|
34
|
-
throw err;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Reads data from the stream.
|
|
40
|
-
* If `length` is provided, waits until exact number of bytes are buffered.
|
|
41
|
-
*/
|
|
42
|
-
async read(length?: number): Promise<Uint8Array | null> {
|
|
43
|
-
if (this.closed || (length ?? 0) < 0) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (length === 0) {
|
|
48
|
-
return new Uint8Array(0);
|
|
49
|
-
}
|
|
50
|
-
if (length === undefined) {
|
|
51
|
-
if (this.leftover.length > 0) {
|
|
52
|
-
const result = this.leftover;
|
|
53
|
-
this.leftover = new Uint8Array(0);
|
|
54
|
-
return result;
|
|
55
|
-
}
|
|
56
22
|
const { value, done } = await this.reader.read();
|
|
57
|
-
if (value) {
|
|
58
|
-
return value;
|
|
59
|
-
}
|
|
60
|
-
if (done) {
|
|
23
|
+
if (done || !value) {
|
|
61
24
|
return null;
|
|
62
25
|
}
|
|
26
|
+
return value;
|
|
27
|
+
} catch {
|
|
28
|
+
return null;
|
|
63
29
|
}
|
|
30
|
+
}
|
|
64
31
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const result = new Uint8Array(bytesRequested);
|
|
69
|
-
let bytesAccumulated = 0;
|
|
70
|
-
|
|
71
|
-
// Do we have data from the previous read()
|
|
72
|
-
if (this.leftover.length > 0) {
|
|
73
|
-
const take = Math.min(this.leftover.length, bytesRequested);
|
|
74
|
-
result.set(this.leftover.subarray(0, take), bytesAccumulated);
|
|
75
|
-
bytesAccumulated += take;
|
|
76
|
-
this.leftover = this.leftover.subarray(take);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Keep readin until we have enough data
|
|
80
|
-
while (bytesAccumulated < bytesRequested) {
|
|
81
|
-
const { value, done } = await this.reader.read();
|
|
82
|
-
|
|
83
|
-
if (value) {
|
|
84
|
-
const needed = bytesRequested - bytesAccumulated;
|
|
85
|
-
|
|
86
|
-
if (value.length <= needed) {
|
|
87
|
-
// We need the whole chunk
|
|
88
|
-
result.set(value, bytesAccumulated);
|
|
89
|
-
bytesAccumulated += value.length;
|
|
90
|
-
} else {
|
|
91
|
-
// Chunk is bigger than what we need
|
|
92
|
-
result.set(value.subarray(0, needed), bytesAccumulated);
|
|
93
|
-
bytesAccumulated += needed;
|
|
94
|
-
// Save the rest for the next read() call
|
|
95
|
-
this.leftover = value.subarray(needed);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (done) {
|
|
99
|
-
// if the stream closed and not enough data was returned, return null
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return result;
|
|
32
|
+
async write(chunk: Uint8Array): Promise<void> {
|
|
33
|
+
if (this.closed) throw new Error("Pipe closed");
|
|
34
|
+
await this.writer.write(chunk);
|
|
104
35
|
}
|
|
105
36
|
|
|
106
|
-
/**
|
|
107
|
-
* Closes the reader, writer, and underlying WebStream pair endpoint.
|
|
108
|
-
*/
|
|
109
37
|
close(): void {
|
|
110
38
|
if (!this.closed) {
|
|
111
39
|
this.closed = true;
|
|
112
|
-
|
|
113
40
|
try {
|
|
114
|
-
void this.reader.cancel().catch(() => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
// deno-coverage-ignore
|
|
119
|
-
} catch (_err) { /* swallow */ }
|
|
120
|
-
|
|
121
|
-
// deno-coverage-ignore-start
|
|
122
|
-
void this.writer.close().catch(() => {
|
|
123
|
-
// ignore duplicate/late close attempts; the stream may already be closed
|
|
124
|
-
});
|
|
125
|
-
// deno-coverage-ignore-stop
|
|
126
|
-
|
|
41
|
+
void this.reader.cancel().catch(() => {});
|
|
42
|
+
this.reader.releaseLock();
|
|
43
|
+
} catch { /* swallow */ }
|
|
44
|
+
void this.writer.close().catch(() => {});
|
|
127
45
|
try {
|
|
128
46
|
this.endPoint.close();
|
|
129
|
-
} catch
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
async *[Symbol.asyncIterator]() {
|
|
133
|
-
while (true) {
|
|
134
|
-
const chunk = await this.read();
|
|
135
|
-
if (chunk === null) {
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
yield chunk;
|
|
47
|
+
} catch { /* swallow */ }
|
|
139
48
|
}
|
|
140
49
|
}
|
|
141
50
|
}
|
|
142
51
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
* Offers the exact same API as `createConnNextPair`.
|
|
146
|
-
*/
|
|
147
|
-
export function createConnNextPair(): {
|
|
148
|
-
input: ConnNext;
|
|
149
|
-
output: ConnNext;
|
|
150
|
-
} {
|
|
151
|
-
const { input: webInput, output: webOutput } = createWebStreamPair();
|
|
152
|
-
|
|
153
|
-
const mockAddr: ConnAddr = {
|
|
154
|
-
transport: "tcp",
|
|
155
|
-
hostname: "127.0.0.1",
|
|
156
|
-
port: 1883,
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
const inputWrapper = new WebStreamConnNextWrapper(webInput);
|
|
160
|
-
const outputWrapper = new WebStreamConnNextWrapper(webOutput);
|
|
161
|
-
|
|
162
|
-
const input: ConnNext = {
|
|
163
|
-
remoteAddr: mockAddr,
|
|
164
|
-
localAddr: mockAddr,
|
|
165
|
-
read: (length) => inputWrapper.read(length),
|
|
166
|
-
write: (data) => inputWrapper.write(data),
|
|
167
|
-
[Symbol.asyncIterator]: () => inputWrapper[Symbol.asyncIterator](),
|
|
168
|
-
close: () => {
|
|
169
|
-
inputWrapper.close();
|
|
170
|
-
outputWrapper.close();
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
const output: ConnNext = {
|
|
175
|
-
remoteAddr: mockAddr,
|
|
176
|
-
localAddr: mockAddr,
|
|
177
|
-
read: (length) => outputWrapper.read(length),
|
|
178
|
-
write: (data) => outputWrapper.write(data),
|
|
179
|
-
[Symbol.asyncIterator]: () => outputWrapper[Symbol.asyncIterator](),
|
|
180
|
-
close: () => {
|
|
181
|
-
outputWrapper.close();
|
|
182
|
-
inputWrapper.close();
|
|
183
|
-
},
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
return { input, output };
|
|
52
|
+
export function webStreamToNext(endPoint: WebStreamEndpoint) {
|
|
53
|
+
return new WebStreamConnNext(endPoint);
|
|
187
54
|
}
|
package/dist/client/client.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export type ConnectParameters = {
|
|
|
15
15
|
key?: string | undefined;
|
|
16
16
|
/** number of retries before stopping connection attempts */
|
|
17
17
|
numberOfRetries?: number | undefined;
|
|
18
|
+
/** maximum size of receive buffer, only used by webSockets for now */
|
|
19
|
+
maxBufferSize?: number | undefined;
|
|
18
20
|
/** connect options */
|
|
19
21
|
options?: ConnectOptions | undefined;
|
|
20
22
|
};
|
|
@@ -70,6 +72,8 @@ export declare class Client {
|
|
|
70
72
|
protected key?: string | undefined;
|
|
71
73
|
/** the MQTT clientId */
|
|
72
74
|
protected clientId: string;
|
|
75
|
+
/** the maximum number of bytes buffered by a ws/wss client */
|
|
76
|
+
protected maxBufferSize: number | undefined;
|
|
73
77
|
private ctx;
|
|
74
78
|
private connectPacket?;
|
|
75
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,KAAK,EACL,eAAe,EAChB,MAAM,WAAW,CAAC;AAKnB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D,4EAA4E;AAC5E,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,aAAa,EACb,MAAM,GAAG,cAAc,CACxB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4BAA4B;IAC5B,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;IACtB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,sBAAsB;IACtB,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,aAAa,EACb,MAAM,GAAG,IAAI,GAAG,eAAe,CAChC,CAAC;AACF,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,eAAe,EACf,MAAM,GAAG,IAAI,GAAG,eAAe,CAChC,CAAC;AAqBF,yCAAyC;AACzC,eAAO,MAAM,WAAW,2BAA2B,CAAC;AACpD,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,EAAmB,aAAa,CAAC;AACnE,iCAAiC;AACjC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAkBpC;;;;;;;;GAQG;AACH,qBAAa,MAAM;IACjB,0EAA0E;IACnE,MAAM,EAAE,CACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,UAAU,KACjB,mBAAmB,CAKtB;IACF,0BAA0B;IACnB,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAQ;IAC5C,mCAAmC;IAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAQ;IACrE,8BAA8B;IACvB,WAAW,EAAE,MAAM,IAAI,CAAQ;IACtC,iCAAiC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAQ;IACzC,iCAAiC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAQ;IAEzC,qEAAqE;IACrE,SAAS,CAAC,cAAc,SAAmB;IAC3C,uCAAuC;IACvC,SAAS,CAAC,eAAe,SAAmB;IAC5C,4BAA4B;IAC5B,SAAS,CAAC,UAAU,EAAE,GAAG,CAAwB;IACjD,+CAA+C;IAC/C,SAAS,CAAC,SAAS,SAAqB;IACxC,mCAAmC;IACnC,SAAS,CAAC,aAAa,gBAAyB;IAChD,+CAA+C;IAC/C,SAAS,CAAC,aAAa,UAAQ;IAC/B,4BAA4B;IAC5B,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,8BAA8B;IAC9B,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,6BAA6B;IAC7B,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,wBAAwB;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,aAAa,CAAC,CAAgB;IAEtC;;OAEG;IACH,YAAY,KAAK,CAAC,EAAE,KAAK,EAIxB;IAED;;;OAGG;IACH,IAAW,eAAe,IAAI,eAAe,CAE5C;IAED;;;OAGG;IACH,IAAW,GAAG,IAAI,GAAG,CAEpB;IAED;;;;OAIG;IACH,SAAS,CAAC,WAAW,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAEnB;IAED;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CACpB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC,CAEnB;IAED;;;;OAIG;IACH,SAAS,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CAgBxC;IAED;;;OAGG;YACW,SAAS;IAsDvB;;;;OAIG;IACH,OAAO,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client/client.js
CHANGED
|
@@ -92,6 +92,8 @@ export class Client {
|
|
|
92
92
|
key;
|
|
93
93
|
/** the MQTT clientId */
|
|
94
94
|
clientId;
|
|
95
|
+
/** the maximum number of bytes buffered by a ws/wss client */
|
|
96
|
+
maxBufferSize;
|
|
95
97
|
ctx;
|
|
96
98
|
connectPacket;
|
|
97
99
|
/**
|
|
@@ -220,6 +222,7 @@ export class Client {
|
|
|
220
222
|
this.caCerts = params?.caCerts;
|
|
221
223
|
this.cert = params?.cert;
|
|
222
224
|
this.key = params?.key;
|
|
225
|
+
this.maxBufferSize = params?.maxBufferSize;
|
|
223
226
|
const options = Object.assign({
|
|
224
227
|
keepAlive: this.keepAlive,
|
|
225
228
|
clientId: this.clientId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC;AAYnB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ConnAddr, ConnNext } from "../connNext/connNext.ts";
|
|
2
|
+
export declare abstract class BaseConnNext implements ConnNext {
|
|
3
|
+
abstract remoteAddr?: ConnAddr;
|
|
4
|
+
abstract localAddr?: ConnAddr;
|
|
5
|
+
protected chunks: Uint8Array[];
|
|
6
|
+
protected queueOffset: number;
|
|
7
|
+
protected closed: boolean;
|
|
8
|
+
private isPulling;
|
|
9
|
+
abstract write(data: Uint8Array): Promise<void>;
|
|
10
|
+
abstract close(): void;
|
|
11
|
+
/** Specifiek per bron: haal pas daadwerkelijk 1 chunk op als de basisklasse erom vraagt */
|
|
12
|
+
protected abstract pullNextChunk(): Promise<Uint8Array | null>;
|
|
13
|
+
isClosed(): boolean;
|
|
14
|
+
protected getBufferedBytes(): number;
|
|
15
|
+
/** Zorgt ervoor dat we data ophalen op exact het moment dat het nodig is */
|
|
16
|
+
private ensureData;
|
|
17
|
+
read(length?: number): Promise<Uint8Array | null>;
|
|
18
|
+
[Symbol.asyncIterator](): AsyncGenerator<Uint8Array<ArrayBufferLike>, void, unknown>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=baseConnNext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseConnNext.d.ts","sourceRoot":"","sources":["../../connNext/baseConnNext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAElE,8BAAsB,YAAa,YAAW,QAAQ;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAE9B,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IACpC,SAAS,CAAC,WAAW,SAAK;IAC1B,SAAS,CAAC,MAAM,UAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAE1B,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;IAEvB,2FAA2F;IAC3F,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE/D,QAAQ,IAAI,OAAO,CAElB;IAED,SAAS,CAAC,gBAAgB,IAAI,MAAM,CAQnC;IAED,4EAA4E;YAC9D,UAAU;IA4BlB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAqDtD;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,+DAM5B;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export class BaseConnNext {
|
|
2
|
+
chunks = [];
|
|
3
|
+
queueOffset = 0;
|
|
4
|
+
closed = false;
|
|
5
|
+
isPulling = false;
|
|
6
|
+
isClosed() {
|
|
7
|
+
return this.closed;
|
|
8
|
+
}
|
|
9
|
+
getBufferedBytes() {
|
|
10
|
+
let total = 0;
|
|
11
|
+
for (let i = 0; i < this.chunks.length; i++) {
|
|
12
|
+
total += i === 0
|
|
13
|
+
? this.chunks[i].byteLength - this.queueOffset
|
|
14
|
+
: this.chunks[i].byteLength;
|
|
15
|
+
}
|
|
16
|
+
return total;
|
|
17
|
+
}
|
|
18
|
+
/** Zorgt ervoor dat we data ophalen op exact het moment dat het nodig is */
|
|
19
|
+
async ensureData(length) {
|
|
20
|
+
while (!this.closed &&
|
|
21
|
+
(this.getBufferedBytes() === 0 ||
|
|
22
|
+
(length !== undefined && this.getBufferedBytes() < length))) {
|
|
23
|
+
if (this.isPulling) {
|
|
24
|
+
// Voorkom gelijktijdige pulls als er al eentje loopt
|
|
25
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
this.isPulling = true;
|
|
29
|
+
try {
|
|
30
|
+
const chunk = await this.pullNextChunk();
|
|
31
|
+
if (chunk === null || chunk.byteLength === 0) {
|
|
32
|
+
this.closed = true;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
this.chunks.push(chunk);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
this.closed = true;
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
this.isPulling = false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async read(length) {
|
|
46
|
+
if (this.closed && this.getBufferedBytes() === 0) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (length === 0) {
|
|
50
|
+
return new Uint8Array(0);
|
|
51
|
+
}
|
|
52
|
+
// Pull exact zolang tot we genoeg data hebben voor deze read()
|
|
53
|
+
await this.ensureData(length);
|
|
54
|
+
if (this.getBufferedBytes() === 0) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// Onbegrensd lezen (geen lengte opgegeven)
|
|
58
|
+
if (length === undefined) {
|
|
59
|
+
const firstChunk = this.chunks.shift();
|
|
60
|
+
const result = firstChunk.subarray(this.queueOffset);
|
|
61
|
+
this.queueOffset = 0;
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
// Exacte lengte uitlezen uit de buffer
|
|
65
|
+
const bytesToTake = Math.min(length, this.getBufferedBytes());
|
|
66
|
+
const result = new Uint8Array(bytesToTake);
|
|
67
|
+
let bytesCopied = 0;
|
|
68
|
+
while (bytesCopied < bytesToTake && this.chunks.length > 0) {
|
|
69
|
+
const currentChunk = this.chunks[0];
|
|
70
|
+
const bytesNeeded = bytesToTake - bytesCopied;
|
|
71
|
+
const bytesAvailable = currentChunk.byteLength - this.queueOffset;
|
|
72
|
+
if (bytesAvailable <= bytesNeeded) {
|
|
73
|
+
result.set(currentChunk.subarray(this.queueOffset), bytesCopied);
|
|
74
|
+
bytesCopied += bytesAvailable;
|
|
75
|
+
this.chunks.shift();
|
|
76
|
+
this.queueOffset = 0;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
result.set(currentChunk.subarray(this.queueOffset, this.queueOffset + bytesNeeded), bytesCopied);
|
|
80
|
+
bytesCopied += bytesNeeded;
|
|
81
|
+
this.queueOffset += bytesNeeded;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return bytesCopied === 0 ? null : result;
|
|
85
|
+
}
|
|
86
|
+
async *[Symbol.asyncIterator]() {
|
|
87
|
+
while (true) {
|
|
88
|
+
const chunk = await this.read();
|
|
89
|
+
if (chunk === null)
|
|
90
|
+
break;
|
|
91
|
+
yield chunk;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=baseConnNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseConnNext.js","sourceRoot":"","sources":["../../connNext/baseConnNext.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generates a minimal
|
|
3
|
-
*
|
|
2
|
+
* Generates a minimal TLS certificate bundle for localhost using Web Crypto API.
|
|
3
|
+
* Uses 0 external dependencies (pure JS ASN.1 DER encoding).
|
|
4
|
+
* Do NOT use this in a production setting
|
|
4
5
|
*/
|
|
5
|
-
export declare function generateLocalhostCerts(): {
|
|
6
|
+
export declare function generateLocalhostCerts(): Promise<{
|
|
6
7
|
caCert: string;
|
|
7
8
|
key: string;
|
|
8
9
|
cert: string;
|
|
9
10
|
fullChain: string;
|
|
10
|
-
}
|
|
11
|
+
}>;
|
|
11
12
|
//# sourceMappingURL=generateCert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateCert.d.ts","sourceRoot":"","sources":["../../dev_utils/generateCert.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateCert.d.ts","sourceRoot":"","sources":["../../dev_utils/generateCert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAiED"}
|