@easel-sh/cli 0.1.0-alpha.14 → 0.1.0-alpha.16
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/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/handler-wrapper.d.ts.map +1 -1
- package/dist/handler-wrapper.js +134 -15
- package/dist/handler-wrapper.js.map +1 -1
- package/dist/handler-wrapper.test.js +118 -0
- package/dist/handler-wrapper.test.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import yargs from 'yargs';
|
|
3
4
|
import { hideBin } from 'yargs/helpers';
|
|
4
5
|
import { listFunctions } from './commands/list-functions.js';
|
|
@@ -7,8 +8,12 @@ import { uploadManifest } from "./commands/upload-manifest.js";
|
|
|
7
8
|
import { uploadStatic } from "./commands/upload-static.js";
|
|
8
9
|
import { createLambdaGateway } from "./commands/create-lambda-gateway.js";
|
|
9
10
|
import { packageFunctions } from "./commands/package-functions.js";
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
const pkg = require("../package.json");
|
|
10
13
|
yargs(hideBin(process.argv))
|
|
11
14
|
.scriptName("cli")
|
|
15
|
+
.version(pkg.version)
|
|
16
|
+
.alias("version", "v")
|
|
12
17
|
.command("list-functions <dir>", "List functions from directory", (yargs) => {
|
|
13
18
|
return yargs
|
|
14
19
|
.positional("dir", {
|
|
@@ -194,7 +199,5 @@ yargs(hideBin(process.argv))
|
|
|
194
199
|
.demandCommand(1, "You need at least one command before moving on")
|
|
195
200
|
.help()
|
|
196
201
|
.alias("help", "h")
|
|
197
|
-
.version()
|
|
198
|
-
.alias("version", "v")
|
|
199
202
|
.parse();
|
|
200
203
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-wrapper.d.ts","sourceRoot":"","sources":["../src/handler-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"handler-wrapper.d.ts","sourceRoot":"","sources":["../src/handler-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsZlE"}
|
package/dist/handler-wrapper.js
CHANGED
|
@@ -142,7 +142,8 @@ async function runStreamingHandler(event, responseStream, context) {
|
|
|
142
142
|
);
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
var result = await runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParams, bodyBuffer);
|
|
145
|
+
var result = await runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParams, bodyBuffer, responseStream);
|
|
146
|
+
if (result.streaming) return;
|
|
146
147
|
writeStreamFirstLine(responseStream, result.statusCode || 200, result.headers);
|
|
147
148
|
responseStream.write(result.body || "");
|
|
148
149
|
responseStream.end();
|
|
@@ -206,9 +207,15 @@ async function runBufferedHandler(event, context) {
|
|
|
206
207
|
return runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParams, bodyBuffer);
|
|
207
208
|
}
|
|
208
209
|
|
|
209
|
-
function runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParams, bodyBuffer) {
|
|
210
|
+
function runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParams, bodyBuffer, responseStream) {
|
|
210
211
|
return new Promise(function (resolve, reject) {
|
|
211
212
|
var _bodyParsed, cookiesObj;
|
|
213
|
+
var firstLineSent = false;
|
|
214
|
+
var streamingUsed = false;
|
|
215
|
+
var ended = false;
|
|
216
|
+
var _finished = false;
|
|
217
|
+
var _destroyed = false;
|
|
218
|
+
var _errored = null;
|
|
212
219
|
function getParsedBody() {
|
|
213
220
|
if (_bodyParsed !== undefined) return _bodyParsed;
|
|
214
221
|
if (!bodyBuffer || bodyBuffer.length === 0) return undefined;
|
|
@@ -236,41 +243,143 @@ function runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParam
|
|
|
236
243
|
}
|
|
237
244
|
return cookiesObj;
|
|
238
245
|
}
|
|
246
|
+
|
|
247
|
+
var mockSocket = new Proxy({}, {
|
|
248
|
+
get: function (_target, prop) {
|
|
249
|
+
if (prop === "encrypted") return normalizedHeaders["x-forwarded-proto"] === "https";
|
|
250
|
+
if (prop === "remoteAddress") return (normalizedHeaders["x-forwarded-for"] || "127.0.0.1").split(",")[0].trim();
|
|
251
|
+
if (prop === "destroy") return function () {};
|
|
252
|
+
if (prop === "on" || prop === "once" || prop === "removeListener" || prop === "removeAllListeners" || prop === "addListener") return function () { return mockSocket; };
|
|
253
|
+
if (prop === "setTimeout") return function () { return mockSocket; };
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
var bodyPushed = false;
|
|
239
259
|
var req = Object.assign(
|
|
240
|
-
new Readable({ read: function () { if (bodyBuffer) this.push(bodyBuffer); this.push(null); } }),
|
|
241
|
-
{ method: method, url: url.pathname + url.search, headers: normalizedHeaders, query: queryParams }
|
|
260
|
+
new Readable({ read: function () { if (!bodyPushed) { bodyPushed = true; if (bodyBuffer) this.push(bodyBuffer); this.push(null); } } }),
|
|
261
|
+
{ method: method, url: url.pathname + url.search, headers: normalizedHeaders, query: queryParams, socket: mockSocket, connection: mockSocket }
|
|
242
262
|
);
|
|
243
263
|
Object.defineProperty(req, "body", { get: getParsedBody, set: function (v) { _bodyParsed = v; }, enumerable: true, configurable: true });
|
|
244
264
|
Object.defineProperty(req, "cookies", { get: getCookies, set: function (v) { cookiesObj = v; }, enumerable: true, configurable: true });
|
|
245
|
-
var statusCode = 200,
|
|
265
|
+
var statusCode = 200, statusMessage = "", headers = {}, headersSent = false, resolved = false;
|
|
266
|
+
var body = "";
|
|
267
|
+
function ensureFirstLineSent() {
|
|
268
|
+
if (firstLineSent || !responseStream) return;
|
|
269
|
+
firstLineSent = true;
|
|
270
|
+
var out = {};
|
|
271
|
+
Object.entries(headers).forEach(function (e) { out[e[0]] = Array.isArray(e[1]) ? e[1].join(", ") : e[1]; });
|
|
272
|
+
writeStreamFirstLine(responseStream, statusCode || 200, out);
|
|
273
|
+
}
|
|
246
274
|
function finishRes() {
|
|
247
275
|
if (resolved) return;
|
|
248
276
|
resolved = true;
|
|
249
277
|
var out = {};
|
|
250
278
|
Object.entries(headers).forEach(function (e) { out[e[0]] = Array.isArray(e[1]) ? e[1].join(", ") : e[1]; });
|
|
251
|
-
|
|
279
|
+
if (streamingUsed && responseStream) {
|
|
280
|
+
resolve({ statusCode: statusCode || 200, headers: out, body: "", streaming: true });
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
resolve({ statusCode: statusCode || 200, headers: out, body: body, streaming: false });
|
|
252
284
|
}
|
|
253
285
|
var res = Object.assign(new EventEmitter(), {
|
|
254
|
-
|
|
286
|
+
socket: mockSocket,
|
|
287
|
+
connection: mockSocket,
|
|
288
|
+
setHeader: function (k, v) { if (!headersSent) headers[k.toLowerCase()] = v; return res; },
|
|
255
289
|
getHeader: function (k) { return headers[k.toLowerCase()]; },
|
|
256
290
|
removeHeader: function (k) { delete headers[k.toLowerCase()]; },
|
|
291
|
+
getHeaders: function () {
|
|
292
|
+
var out = {};
|
|
293
|
+
Object.entries(headers).forEach(function (e) { out[e[0]] = e[1]; });
|
|
294
|
+
return out;
|
|
295
|
+
},
|
|
257
296
|
appendHeader: function (k, v) {
|
|
258
297
|
if (!headersSent) {
|
|
259
298
|
var l = k.toLowerCase();
|
|
260
299
|
headers[l] = headers[l] ? (Array.isArray(headers[l]) ? headers[l].concat(v) : [headers[l], v]) : v;
|
|
261
300
|
}
|
|
301
|
+
return res;
|
|
262
302
|
},
|
|
263
303
|
hasHeader: function (k) { return k.toLowerCase() in headers; },
|
|
264
304
|
getHeaderNames: function () { return Object.keys(headers); },
|
|
265
|
-
writeHead: function (code,
|
|
266
|
-
if (!headersSent) {
|
|
305
|
+
writeHead: function (code, statusMessageOrHeaders, maybeHeaders) {
|
|
306
|
+
if (!headersSent) {
|
|
307
|
+
statusCode = code;
|
|
308
|
+
var h = maybeHeaders;
|
|
309
|
+
if (typeof statusMessageOrHeaders === "string") {
|
|
310
|
+
statusMessage = statusMessageOrHeaders;
|
|
311
|
+
} else if (statusMessageOrHeaders && typeof statusMessageOrHeaders === "object") {
|
|
312
|
+
h = statusMessageOrHeaders;
|
|
313
|
+
}
|
|
314
|
+
if (h) Object.entries(h).forEach(function (e) { headers[e[0].toLowerCase()] = e[1]; });
|
|
315
|
+
headersSent = true;
|
|
316
|
+
}
|
|
267
317
|
return res;
|
|
268
318
|
},
|
|
269
|
-
flushHeaders: function () {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
319
|
+
flushHeaders: function () {
|
|
320
|
+
headersSent = true;
|
|
321
|
+
if (responseStream) ensureFirstLineSent();
|
|
322
|
+
return res;
|
|
323
|
+
},
|
|
324
|
+
write: function (chunk, encodingOrCallback, maybeCallback) {
|
|
325
|
+
headersSent = true;
|
|
326
|
+
var callback = typeof encodingOrCallback === "function" ? encodingOrCallback : maybeCallback;
|
|
327
|
+
if (responseStream) {
|
|
328
|
+
streamingUsed = true;
|
|
329
|
+
ensureFirstLineSent();
|
|
330
|
+
var data = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk.toString(), "utf8");
|
|
331
|
+
var ok = responseStream.write(data, callback);
|
|
332
|
+
return ok;
|
|
333
|
+
}
|
|
334
|
+
body += chunk.toString();
|
|
335
|
+
if (callback) callback();
|
|
336
|
+
return true;
|
|
337
|
+
},
|
|
338
|
+
end: function (chunk, encodingOrCallback, maybeCallback) {
|
|
339
|
+
if (ended) return res;
|
|
340
|
+
var callback = typeof encodingOrCallback === "function" ? encodingOrCallback : maybeCallback;
|
|
341
|
+
if (responseStream) {
|
|
342
|
+
ended = true;
|
|
343
|
+
_finished = true;
|
|
344
|
+
streamingUsed = true;
|
|
345
|
+
ensureFirstLineSent();
|
|
346
|
+
if (chunk) {
|
|
347
|
+
var data = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk.toString(), "utf8");
|
|
348
|
+
responseStream.write(data);
|
|
349
|
+
}
|
|
350
|
+
responseStream.end(function () {
|
|
351
|
+
if (callback) callback();
|
|
352
|
+
});
|
|
353
|
+
var out = {};
|
|
354
|
+
Object.entries(headers).forEach(function (e) { out[e[0]] = Array.isArray(e[1]) ? e[1].join(", ") : e[1]; });
|
|
355
|
+
resolved = true;
|
|
356
|
+
resolve({ statusCode: statusCode || 200, headers: out, body: "", streaming: true });
|
|
357
|
+
res.emit("finish");
|
|
358
|
+
res.emit("close");
|
|
359
|
+
return res;
|
|
360
|
+
}
|
|
361
|
+
if (chunk) body += chunk.toString();
|
|
362
|
+
_finished = true;
|
|
363
|
+
if (!resolved) { finishRes(); res.emit("finish"); res.emit("close"); }
|
|
364
|
+
if (callback) callback();
|
|
365
|
+
return res;
|
|
366
|
+
},
|
|
367
|
+
destroy: function (err) {
|
|
368
|
+
_destroyed = true;
|
|
369
|
+
if (err) _errored = err;
|
|
370
|
+
if (!resolved) { res.emit("close"); reject(err || new Error("Response destroyed")); }
|
|
371
|
+
return res;
|
|
372
|
+
},
|
|
373
|
+
flush: function () {
|
|
374
|
+
if (responseStream && typeof responseStream.flush === "function") {
|
|
375
|
+
responseStream.flush();
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
cork: function () {},
|
|
379
|
+
uncork: function () {},
|
|
380
|
+
_implicitHeader: function () {},
|
|
381
|
+
setTimeout: function () { return res; },
|
|
382
|
+
addTrailers: function () {},
|
|
274
383
|
status: function (c) { statusCode = c; return res; },
|
|
275
384
|
send: function (val) {
|
|
276
385
|
if (typeof val === "object" && val !== null && !Buffer.isBuffer(val)) { if (!headers["content-type"]) headers["content-type"] = "application/json"; body = JSON.stringify(val); }
|
|
@@ -279,11 +388,21 @@ function runNodeStyleHandler(handler, method, url, normalizedHeaders, queryParam
|
|
|
279
388
|
},
|
|
280
389
|
json: function (obj) { headers["content-type"] = "application/json"; body = JSON.stringify(obj); finishRes(); return res; },
|
|
281
390
|
redirect: function (a, b) { statusCode = typeof a === "number" ? a : 307; headers["location"] = typeof a === "number" ? b : a; finishRes(); return res; },
|
|
282
|
-
headersSent: false,
|
|
283
391
|
});
|
|
284
392
|
Object.defineProperty(res, "statusCode", { get: function () { return statusCode; }, set: function (v) { statusCode = v; }, enumerable: true, configurable: true });
|
|
393
|
+
Object.defineProperty(res, "statusMessage", { get: function () { return statusMessage; }, set: function (v) { statusMessage = v; }, enumerable: true, configurable: true });
|
|
394
|
+
Object.defineProperty(res, "headersSent", { get: function () { return headersSent; }, enumerable: true, configurable: true });
|
|
395
|
+
Object.defineProperty(res, "writableFinished", { get: function () { return _finished; }, enumerable: true, configurable: true });
|
|
396
|
+
Object.defineProperty(res, "finished", { get: function () { return _finished; }, set: function (v) { _finished = v; }, enumerable: true, configurable: true });
|
|
397
|
+
Object.defineProperty(res, "destroyed", { get: function () { return _destroyed; }, enumerable: true, configurable: true });
|
|
398
|
+
Object.defineProperty(res, "errored", { get: function () { return _errored; }, enumerable: true, configurable: true });
|
|
399
|
+
Object.defineProperty(res, "writable", { get: function () { return !ended && !_destroyed; }, enumerable: true, configurable: true });
|
|
285
400
|
req.on("error", reject);
|
|
286
401
|
res.on("error", reject);
|
|
402
|
+
if (responseStream) {
|
|
403
|
+
responseStream.on("error", reject);
|
|
404
|
+
responseStream.on("drain", function () { res.emit("drain"); });
|
|
405
|
+
}
|
|
287
406
|
try { handler(req, res); } catch (e) { reject(e); }
|
|
288
407
|
});
|
|
289
408
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-wrapper.js","sourceRoot":"","sources":["../src/handler-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,OAAO;;;;;;;;;;;iCAWwB,WAAW
|
|
1
|
+
{"version":3,"file":"handler-wrapper.js","sourceRoot":"","sources":["../src/handler-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,OAAO;;;;;;;;;;;iCAWwB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwY3C,CAAC;AACF,CAAC"}
|
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
import { createRequire } from "node:module";
|
|
2
|
+
import { EventEmitter } from "node:events";
|
|
2
3
|
import fs from "node:fs";
|
|
3
4
|
import os from "node:os";
|
|
4
5
|
import path from "node:path";
|
|
5
6
|
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
6
7
|
import { generateHandlerWrapper } from "./handler-wrapper.js";
|
|
8
|
+
function createMockResponseStream() {
|
|
9
|
+
const writes = [];
|
|
10
|
+
const stream = Object.assign(new EventEmitter(), {
|
|
11
|
+
writes,
|
|
12
|
+
endCount: 0,
|
|
13
|
+
ended: false,
|
|
14
|
+
write(chunk) {
|
|
15
|
+
this.writes.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
16
|
+
return true;
|
|
17
|
+
},
|
|
18
|
+
end() {
|
|
19
|
+
this.endCount++;
|
|
20
|
+
this.ended = true;
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
return stream;
|
|
24
|
+
}
|
|
25
|
+
const STREAMING_MOCK_EVENT = {
|
|
26
|
+
requestContext: { http: { method: "GET" } },
|
|
27
|
+
headers: { host: "localhost" },
|
|
28
|
+
rawPath: "/",
|
|
29
|
+
queryStringParameters: null,
|
|
30
|
+
};
|
|
7
31
|
describe("handler-wrapper", () => {
|
|
8
32
|
let tmpDir;
|
|
9
33
|
const require = createRequire(import.meta.url);
|
|
@@ -68,5 +92,99 @@ describe("handler-wrapper", () => {
|
|
|
68
92
|
expect(result.headers).toBeDefined();
|
|
69
93
|
expect(result.headers["content-type"]).toBe("text/plain");
|
|
70
94
|
});
|
|
95
|
+
describe("streaming mode (Node-style write/end)", () => {
|
|
96
|
+
beforeEach(() => {
|
|
97
|
+
globalThis.awslambda = {
|
|
98
|
+
streamifyResponse: (fn) => async (event, responseStream, context) => await fn(event, responseStream, context),
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
afterEach(() => {
|
|
102
|
+
delete globalThis.awslambda;
|
|
103
|
+
});
|
|
104
|
+
it("Node-style streaming: writeHead + write + write + end sends first line then body chunks", async () => {
|
|
105
|
+
const wrapperCode = generateHandlerWrapper("index.mjs");
|
|
106
|
+
fs.writeFileSync(path.join(tmpDir, "handler.js"), wrapperCode, "utf8");
|
|
107
|
+
fs.writeFileSync(path.join(tmpDir, "index.mjs"), `export default function (req, res) {
|
|
108
|
+
res.writeHead(200, { "content-type": "text/plain" });
|
|
109
|
+
res.write("a");
|
|
110
|
+
res.write("b");
|
|
111
|
+
res.end("c");
|
|
112
|
+
}`, "utf8");
|
|
113
|
+
const handler = require(path.join(tmpDir, "handler.js")).handler;
|
|
114
|
+
const responseStream = createMockResponseStream();
|
|
115
|
+
await handler(STREAMING_MOCK_EVENT, responseStream, {});
|
|
116
|
+
expect(responseStream.writes.length).toBe(4);
|
|
117
|
+
const firstLine = JSON.stringify({
|
|
118
|
+
statusCode: 200,
|
|
119
|
+
headers: { "content-type": "text/plain" },
|
|
120
|
+
}) + "\n";
|
|
121
|
+
expect(responseStream.writes[0].toString()).toBe(firstLine);
|
|
122
|
+
expect(responseStream.writes[1].toString()).toBe("a");
|
|
123
|
+
expect(responseStream.writes[2].toString()).toBe("b");
|
|
124
|
+
expect(responseStream.writes[3].toString()).toBe("c");
|
|
125
|
+
expect(responseStream.ended).toBe(true);
|
|
126
|
+
});
|
|
127
|
+
it("Node-style buffered (res.send) with streaming wrapper sends first line + body and end()", async () => {
|
|
128
|
+
const wrapperCode = generateHandlerWrapper("index.mjs");
|
|
129
|
+
fs.writeFileSync(path.join(tmpDir, "handler.js"), wrapperCode, "utf8");
|
|
130
|
+
fs.writeFileSync(path.join(tmpDir, "index.mjs"), `export default function (req, res) {
|
|
131
|
+
res.send("hello");
|
|
132
|
+
}`, "utf8");
|
|
133
|
+
const handler = require(path.join(tmpDir, "handler.js")).handler;
|
|
134
|
+
const responseStream = createMockResponseStream();
|
|
135
|
+
await handler(STREAMING_MOCK_EVENT, responseStream, {});
|
|
136
|
+
expect(responseStream.writes.length).toBe(2);
|
|
137
|
+
const firstLine = JSON.parse(responseStream.writes[0].toString());
|
|
138
|
+
expect(firstLine.statusCode).toBe(200);
|
|
139
|
+
expect(firstLine.headers).toBeDefined();
|
|
140
|
+
expect(responseStream.writes[1].toString()).toBe("hello");
|
|
141
|
+
expect(responseStream.ended).toBe(true);
|
|
142
|
+
});
|
|
143
|
+
it("multiple end() is no-op: end() called exactly once", async () => {
|
|
144
|
+
const wrapperCode = generateHandlerWrapper("index.mjs");
|
|
145
|
+
fs.writeFileSync(path.join(tmpDir, "handler.js"), wrapperCode, "utf8");
|
|
146
|
+
fs.writeFileSync(path.join(tmpDir, "index.mjs"), `export default function (req, res) {
|
|
147
|
+
res.writeHead(200);
|
|
148
|
+
res.write("a");
|
|
149
|
+
res.end();
|
|
150
|
+
res.end();
|
|
151
|
+
}`, "utf8");
|
|
152
|
+
const handler = require(path.join(tmpDir, "handler.js")).handler;
|
|
153
|
+
const responseStream = createMockResponseStream();
|
|
154
|
+
await handler(STREAMING_MOCK_EVENT, responseStream, {});
|
|
155
|
+
expect(responseStream.endCount).toBe(1);
|
|
156
|
+
expect(responseStream.writes.length).toBe(2);
|
|
157
|
+
const firstLine = JSON.parse(responseStream.writes[0].toString());
|
|
158
|
+
expect(firstLine.statusCode).toBe(200);
|
|
159
|
+
expect(responseStream.writes[1].toString()).toBe("a");
|
|
160
|
+
expect(responseStream.ended).toBe(true);
|
|
161
|
+
});
|
|
162
|
+
it("responseStream error is caught and written as 502 to stream", async () => {
|
|
163
|
+
const wrapperCode = generateHandlerWrapper("index.mjs");
|
|
164
|
+
fs.writeFileSync(path.join(tmpDir, "handler.js"), wrapperCode, "utf8");
|
|
165
|
+
fs.writeFileSync(path.join(tmpDir, "index.mjs"), `export default function (req, res) {
|
|
166
|
+
res.writeHead(200);
|
|
167
|
+
res.write("a");
|
|
168
|
+
}`, "utf8");
|
|
169
|
+
const handler = require(path.join(tmpDir, "handler.js")).handler;
|
|
170
|
+
const responseStream = createMockResponseStream();
|
|
171
|
+
const err = new Error("stream error");
|
|
172
|
+
const promise = handler(STREAMING_MOCK_EVENT, responseStream, {});
|
|
173
|
+
await new Promise((r) => setImmediate(r));
|
|
174
|
+
responseStream.emit("error", err);
|
|
175
|
+
await promise;
|
|
176
|
+
const lastFirstLine = responseStream.writes.length >= 2
|
|
177
|
+
? responseStream.writes[responseStream.writes.length - 2]
|
|
178
|
+
: null;
|
|
179
|
+
const lastBody = responseStream.writes.length >= 1
|
|
180
|
+
? responseStream.writes[responseStream.writes.length - 1]
|
|
181
|
+
: null;
|
|
182
|
+
expect(lastFirstLine).toBeDefined();
|
|
183
|
+
const firstLine = JSON.parse(lastFirstLine.toString());
|
|
184
|
+
expect(firstLine.statusCode).toBe(502);
|
|
185
|
+
expect(lastBody.toString()).toContain("stream error");
|
|
186
|
+
expect(responseStream.ended).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
71
189
|
});
|
|
72
190
|
//# sourceMappingURL=handler-wrapper.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-wrapper.test.js","sourceRoot":"","sources":["../src/handler-wrapper.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler-wrapper.test.js","sourceRoot":"","sources":["../src/handler-wrapper.test.ts"],"names":[],"mappings":"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"}
|