ehbp 0.0.6 → 0.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/LICENSE +22 -0
- package/README.md +158 -0
- package/dist/cjs/client.d.ts +13 -13
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +39 -50
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/derive.d.ts +63 -0
- package/dist/cjs/derive.d.ts.map +1 -0
- package/dist/cjs/derive.js +136 -0
- package/dist/cjs/derive.js.map +1 -0
- package/dist/cjs/identity.d.ts +37 -10
- package/dist/cjs/identity.d.ts.map +1 -1
- package/dist/cjs/identity.js +169 -150
- package/dist/cjs/identity.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +15 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/protocol.d.ts +1 -1
- package/dist/cjs/protocol.js +2 -2
- package/dist/cjs/protocol.js.map +1 -1
- package/dist/esm/client.d.ts +13 -13
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +39 -50
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/derive.d.ts +63 -0
- package/dist/esm/derive.d.ts.map +1 -0
- package/dist/esm/derive.js +127 -0
- package/dist/esm/derive.js.map +1 -0
- package/dist/esm/identity.d.ts +37 -10
- package/dist/esm/identity.d.ts.map +1 -1
- package/dist/esm/identity.js +169 -150
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocol.d.ts +1 -1
- package/dist/esm/protocol.js +2 -2
- package/dist/esm/protocol.js.map +1 -1
- package/dist/esm/test/client.test.js +15 -16
- package/dist/esm/test/client.test.js.map +1 -1
- package/dist/esm/test/derive.test.d.ts +2 -0
- package/dist/esm/test/derive.test.d.ts.map +1 -0
- package/dist/esm/test/derive.test.js +164 -0
- package/dist/esm/test/derive.test.js.map +1 -0
- package/dist/esm/test/security.test.d.ts +10 -0
- package/dist/esm/test/security.test.d.ts.map +1 -0
- package/dist/esm/test/security.test.js +153 -0
- package/dist/esm/test/security.test.js.map +1 -0
- package/dist/esm/test/streaming.integration.d.ts +9 -0
- package/dist/esm/test/streaming.integration.d.ts.map +1 -0
- package/dist/esm/test/streaming.integration.js +190 -0
- package/dist/esm/test/streaming.integration.js.map +1 -0
- package/package.json +6 -7
- package/dist/esm/example.d.ts +0 -6
- package/dist/esm/example.d.ts.map +0 -1
- package/dist/esm/example.js +0 -115
- package/dist/esm/example.js.map +0 -1
- package/dist/esm/streaming-test.d.ts +0 -3
- package/dist/esm/streaming-test.d.ts.map +0 -1
- package/dist/esm/streaming-test.js +0 -102
- package/dist/esm/streaming-test.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ehbp",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "JavaScript client for Encrypted HTTP Body Protocol (EHBP)",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
7
7
|
"types": "./dist/esm/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
+
"types": "./dist/esm/index.d.ts",
|
|
10
11
|
"import": "./dist/esm/index.js",
|
|
11
|
-
"require": "./dist/cjs/index.js"
|
|
12
|
-
"types": "./dist/esm/index.d.ts"
|
|
12
|
+
"require": "./dist/cjs/index.js"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"build:all": "npm run build && npm run build:browser",
|
|
21
21
|
"dev": "tsc --watch",
|
|
22
22
|
"test": "node --test dist/esm/test/*.test.js",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"test:integration": "node dist/esm/test/streaming.integration.js",
|
|
24
|
+
"example": "node --experimental-strip-types examples/example.ts",
|
|
25
25
|
"serve": "node serve.js"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|
|
@@ -38,8 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"license": "MIT",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"
|
|
42
|
-
"@hpke/dhkem-x25519": "^1.6.4"
|
|
41
|
+
"hpke": "^1.0.1"
|
|
43
42
|
},
|
|
44
43
|
"devDependencies": {
|
|
45
44
|
"@types/node": "^20.0.0",
|
package/dist/esm/example.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
package/dist/esm/example.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Example usage of the EHBP JavaScript client
|
|
4
|
-
*/
|
|
5
|
-
import { Identity, createTransport } from './index.js';
|
|
6
|
-
async function main() {
|
|
7
|
-
console.log('EHBP JavaScript Client Example');
|
|
8
|
-
console.log('==============================');
|
|
9
|
-
try {
|
|
10
|
-
// Create client identity
|
|
11
|
-
console.log('Creating client identity...');
|
|
12
|
-
const clientIdentity = await Identity.generate();
|
|
13
|
-
console.log('Client public key:', await clientIdentity.getPublicKeyHex());
|
|
14
|
-
// Create transport (this will fetch server public key)
|
|
15
|
-
console.log('Creating transport...');
|
|
16
|
-
const serverURL = 'http://localhost:8080'; // Adjust as needed
|
|
17
|
-
const transport = await createTransport(serverURL, clientIdentity);
|
|
18
|
-
console.log('Transport created successfully');
|
|
19
|
-
// Example 1: GET request to secure endpoint
|
|
20
|
-
console.log('\n--- GET Request ---');
|
|
21
|
-
try {
|
|
22
|
-
const getResponse = await transport.get(`${serverURL}/secure`);
|
|
23
|
-
console.log('GET Response status:', getResponse.status);
|
|
24
|
-
if (getResponse.ok) {
|
|
25
|
-
const getData = await getResponse.text();
|
|
26
|
-
console.log('GET Response:', getData);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
console.log('GET Request failed with status:', getResponse.status);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
console.log('GET Request failed:', error instanceof Error ? error.message : String(error));
|
|
34
|
-
}
|
|
35
|
-
// Example 2: POST request with JSON data
|
|
36
|
-
console.log('\n--- POST Request ---');
|
|
37
|
-
try {
|
|
38
|
-
const postData = { message: 'Hello from JavaScript client!', timestamp: new Date().toISOString() };
|
|
39
|
-
const postResponse = await transport.post(`${serverURL}/secure`, JSON.stringify(postData), { headers: { 'Content-Type': 'application/json' } });
|
|
40
|
-
console.log('POST Response status:', postResponse.status);
|
|
41
|
-
if (postResponse.ok) {
|
|
42
|
-
const responseData = await postResponse.text();
|
|
43
|
-
console.log('POST Response:', responseData);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.log('POST Request failed with status:', postResponse.status);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.log('POST Request failed:', error instanceof Error ? error.message : String(error));
|
|
51
|
-
}
|
|
52
|
-
// Example 3: PUT request
|
|
53
|
-
console.log('\n--- PUT Request ---');
|
|
54
|
-
try {
|
|
55
|
-
const putData = { id: 1, name: 'Updated Item' };
|
|
56
|
-
const putResponse = await transport.put(`${serverURL}/secure`, JSON.stringify(putData), { headers: { 'Content-Type': 'application/json' } });
|
|
57
|
-
console.log('PUT Response status:', putResponse.status);
|
|
58
|
-
if (putResponse.ok) {
|
|
59
|
-
const putResponseData = await putResponse.text();
|
|
60
|
-
console.log('PUT Response:', putResponseData);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
console.log('PUT Request failed with status:', putResponse.status);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
console.log('PUT Request failed:', error instanceof Error ? error.message : String(error));
|
|
68
|
-
}
|
|
69
|
-
// Example 4: Streaming request
|
|
70
|
-
console.log('\n--- Streaming Request ---');
|
|
71
|
-
try {
|
|
72
|
-
const streamResponse = await transport.get(`${serverURL}/stream`);
|
|
73
|
-
console.log('Stream Response status:', streamResponse.status);
|
|
74
|
-
if (streamResponse.ok) {
|
|
75
|
-
console.log('Streaming response (should show numbers 1-20):');
|
|
76
|
-
const reader = streamResponse.body?.getReader();
|
|
77
|
-
if (reader) {
|
|
78
|
-
const decoder = new TextDecoder();
|
|
79
|
-
let chunkCount = 0;
|
|
80
|
-
while (true) {
|
|
81
|
-
const { done, value } = await reader.read();
|
|
82
|
-
if (done)
|
|
83
|
-
break;
|
|
84
|
-
const text = decoder.decode(value, { stream: true });
|
|
85
|
-
process.stdout.write(text);
|
|
86
|
-
chunkCount++;
|
|
87
|
-
}
|
|
88
|
-
console.log(`\nStream completed with ${chunkCount} chunks`);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
console.log('No readable stream available');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
console.log('Stream Request failed with status:', streamResponse.status);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
console.log('Stream Request failed:', error instanceof Error ? error.message : String(error));
|
|
100
|
-
}
|
|
101
|
-
console.log('\nExample completed successfully!');
|
|
102
|
-
console.log('\nTo test with a real server:');
|
|
103
|
-
console.log('1. Start the Go server: go run pkg/server/main.go');
|
|
104
|
-
console.log('2. Run this example: npm run example');
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
console.error('Error:', error);
|
|
108
|
-
process.exit(1);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Run the example
|
|
112
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
113
|
-
main().catch(console.error);
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=example.js.map
|
package/dist/esm/example.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example.js","sourceRoot":"","sources":["../../src/example.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvD,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC;QAE1E,uDAAuD;QACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,mBAAmB;QAC9D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,CAAC;QAED,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,+BAA+B,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACnG,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,IAAI,CACvC,GAAG,SAAS,SAAS,EACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACpD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,CAAC;QAED,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,CACrC,GAAG,SAAS,SAAS,EACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACpD,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;gBACnB,MAAM,eAAe,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7F,CAAC;QAED,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;gBAChD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;oBAClC,IAAI,UAAU,GAAG,CAAC,CAAC;oBAEnB,OAAO,IAAI,EAAE,CAAC;wBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC5C,IAAI,IAAI;4BAAE,MAAM;wBAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;wBACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC3B,UAAU,EAAE,CAAC;oBACf,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,SAAS,CAAC,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kBAAkB;AAClB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-test.d.ts","sourceRoot":"","sources":["../../src/streaming-test.ts"],"names":[],"mappings":""}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Identity, createTransport } from './index.js';
|
|
3
|
-
async function streamingTest() {
|
|
4
|
-
console.log('EHBP Streaming Test');
|
|
5
|
-
console.log('===================');
|
|
6
|
-
try {
|
|
7
|
-
// Create client identity
|
|
8
|
-
console.log('Creating client identity...');
|
|
9
|
-
const clientIdentity = await Identity.generate();
|
|
10
|
-
console.log('Client identity created');
|
|
11
|
-
// Create transport
|
|
12
|
-
console.log('Creating transport...');
|
|
13
|
-
const serverURL = 'http://localhost:8080';
|
|
14
|
-
const transport = await createTransport(serverURL, clientIdentity);
|
|
15
|
-
console.log('Transport created');
|
|
16
|
-
// Test 1: Basic streaming request
|
|
17
|
-
console.log('\n--- Test 1: Basic Streaming ---');
|
|
18
|
-
const streamResponse = await transport.get(`${serverURL}/stream`);
|
|
19
|
-
console.log('Stream request sent, status:', streamResponse.status);
|
|
20
|
-
if (streamResponse.ok) {
|
|
21
|
-
console.log('Reading stream data...');
|
|
22
|
-
const reader = streamResponse.body?.getReader();
|
|
23
|
-
if (reader) {
|
|
24
|
-
const decoder = new TextDecoder();
|
|
25
|
-
while (true) {
|
|
26
|
-
const { done, value } = await reader.read();
|
|
27
|
-
if (done)
|
|
28
|
-
break;
|
|
29
|
-
const text = decoder.decode(value, { stream: true });
|
|
30
|
-
process.stdout.write(text);
|
|
31
|
-
}
|
|
32
|
-
console.log('\nStream completed');
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
console.log('No readable stream available');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
console.log('Stream request failed with status:', streamResponse.status);
|
|
40
|
-
}
|
|
41
|
-
// Test 2: Multiple concurrent streams
|
|
42
|
-
console.log('\n--- Test 2: Concurrent Streams ---');
|
|
43
|
-
const concurrentStreams = 3;
|
|
44
|
-
const streamPromises = [];
|
|
45
|
-
for (let i = 0; i < concurrentStreams; i++) {
|
|
46
|
-
streamPromises.push((async (streamId) => {
|
|
47
|
-
const response = await transport.get(`${serverURL}/stream`);
|
|
48
|
-
if (response.ok && response.body) {
|
|
49
|
-
const reader = response.body.getReader();
|
|
50
|
-
const decoder = new TextDecoder();
|
|
51
|
-
while (true) {
|
|
52
|
-
const { done, value } = await reader.read();
|
|
53
|
-
if (done)
|
|
54
|
-
break;
|
|
55
|
-
const text = decoder.decode(value, { stream: true });
|
|
56
|
-
// Prefix with stream ID to show concurrency
|
|
57
|
-
process.stdout.write(`[Stream ${streamId}] ${text}`);
|
|
58
|
-
}
|
|
59
|
-
return { streamId };
|
|
60
|
-
}
|
|
61
|
-
return { streamId };
|
|
62
|
-
})(i + 1));
|
|
63
|
-
}
|
|
64
|
-
const results = await Promise.all(streamPromises);
|
|
65
|
-
console.log('\nConcurrent streams completed:');
|
|
66
|
-
results.forEach(result => {
|
|
67
|
-
console.log(` - Stream ${result.streamId}: completed`);
|
|
68
|
-
});
|
|
69
|
-
// Test 3: Large data streaming (if server supports it)
|
|
70
|
-
console.log('\n--- Test 3: Large Data Stream ---');
|
|
71
|
-
try {
|
|
72
|
-
const largeStreamResponse = await transport.get(`${serverURL}/stream`);
|
|
73
|
-
if (largeStreamResponse.ok) {
|
|
74
|
-
console.log('Reading large data stream...');
|
|
75
|
-
const reader = largeStreamResponse.body?.getReader();
|
|
76
|
-
if (reader) {
|
|
77
|
-
const decoder = new TextDecoder();
|
|
78
|
-
while (true) {
|
|
79
|
-
const { done, value } = await reader.read();
|
|
80
|
-
if (done)
|
|
81
|
-
break;
|
|
82
|
-
const text = decoder.decode(value, { stream: true });
|
|
83
|
-
process.stdout.write(text);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
console.log('Large data stream test failed:', error instanceof Error ? error.message : String(error));
|
|
90
|
-
}
|
|
91
|
-
console.log('\nAll streaming tests completed successfully!');
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
console.error('Streaming test failed:', error);
|
|
95
|
-
process.exit(1);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Run the streaming test
|
|
99
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
100
|
-
streamingTest().catch(console.error);
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=streaming-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-test.js","sourceRoot":"","sources":["../../src/streaming-test.ts"],"names":[],"mappings":"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"}
|