javascript / expert
Snippet
Subclassing von Web-Standard TransformStream für verschlüsseltes Server-Sent-Streaming
Demonstriert die objektorientierte Unterklassenbildung der Web-API-Klasse TransformStream für benutzerdefinierte Streaming-Antworten in Next.js. Sie verwendet private Klassenfelder (#secretKey), Konstruktor-Validierung, benutzerdefinierte Chunk-Verschlüsselungslogik und explizite Stream-Fehlerweiterleitung.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
export class EncryptedTextTransformer extends TransformStream {#secretKey;constructor(secretKey) {if (typeof secretKey !== 'string' || secretKey.length === 0) {throw new Error('Encryption key must be a non-empty string');}let key = secretKey;super({transform(chunk, controller) {try {const encrypted = Array.from(String(chunk)).map((char, i) => String.fromCharCode(char.charCodeAt(0) ^ key.charCodeAt(i % key.length))).join('');controller.enqueue(Buffer.from(encrypted).toString('base64') + '\n');} catch (err) {controller.error(new Error(`Encryption transform failed: ${err.message}`));}}});this.#secretKey = secretKey;}}
nextjs
Erklärung
1
export class EncryptedTextTransformer extends TransformStream {
Erweitert die native TransformStream Web-API, um Standard-Schnittstellen für lesbare und schreibbare Streams zu erben.
2
#secretKey;
Deklariert ein privates Klassenfeld, um den Zugriff von außen auf den Verschlüsselungsschlüssel zu verhindern.
3
controller.error(new Error(`Encryption transform failed: ${err.message}`));
Signalisiert dem Stream-Consumer einen nicht behebbaren Fehler über das Error-Handling des Stream-Controllers.