Skip to content

Commit 556edbf

Browse files
committed
Add in support for @begin stream for functions
1 parent 9efda08 commit 556edbf

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

lib/gateway.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,7 +1109,12 @@ class Gateway extends EventEmitter {
11091109
: debugObject || {}
11101110
: {};
11111111
Object.keys(debugObject).forEach(key => {
1112-
if (key === '*' || key === '@stdout' || key === '@stderr') {
1112+
if (
1113+
key === '*' ||
1114+
key === '@begin' ||
1115+
key === '@stdout' ||
1116+
key === '@stderr'
1117+
) {
11131118
return;
11141119
} else {
11151120
throw new Error(`Invalid debug listener: "${key}"`);
@@ -1738,9 +1743,16 @@ class Gateway extends EventEmitter {
17381743
}
17391744

17401745
__stream__ (streams, executionUuid, logId, eventName, value) {
1746+
value = value === void 0
1747+
? null
1748+
: value;
17411749
let stream = (streams || []).find(param => param.name === eventName);
17421750
if (!stream) {
1743-
if (eventName === '@stdout' || eventName === '@stderr') {
1751+
if (
1752+
eventName === '@begin' ||
1753+
eventName === '@stdout' ||
1754+
eventName === '@stderr'
1755+
) {
17441756
this.createServerSentEvent(
17451757
executionUuid,
17461758
logId,
@@ -2051,6 +2063,7 @@ class Gateway extends EventEmitter {
20512063
global.console = console;
20522064
callbackWrapper(err, null, headers, executionUuid);
20532065
});
2066+
data.context.stream('@begin', new Date().toISOString());
20542067
if (definition.format.async) {
20552068
fn.apply(null, functionArgs)
20562069
.then(result => {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "functionscript",
3-
"version": "2.8.9",
3+
"version": "2.8.10",
44
"description": "An API gateway and framework for turning functions into web services",
55
"author": "Keith Horwood <keithwhor@gmail.com>",
66
"main": "index.js",

tests/gateway/tests.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5025,7 +5025,7 @@ module.exports = (expect) => {
50255025
expect(result).to.exist;
50265026

50275027
let events = parseServerSentEvents(result);
5028-
expect(Object.keys(events).length).to.equal(3);
5028+
expect(Object.keys(events).length).to.equal(4);
50295029

50305030
expect(events['hello']).to.exist;
50315031
expect(events['hello'].length).to.equal(3);
@@ -5037,6 +5037,10 @@ module.exports = (expect) => {
50375037
expect(events['goodbye'].length).to.equal(1);
50385038
expect(events['goodbye'][0]).to.equal('"Nice to see ya"');
50395039

5040+
expect(events['@begin']).to.exist;
5041+
expect(events['@begin'].length).to.equal(1);
5042+
expect(events['@begin'][0]).to.be.a.string;
5043+
50405044
expect(events['@response']).to.exist;
50415045
let response = JSON.parse(events['@response'][0]);
50425046
expect(response.headers['Content-Type']).to.equal('application/json');
@@ -5057,7 +5061,7 @@ module.exports = (expect) => {
50575061
expect(result).to.exist;
50585062

50595063
let events = parseServerSentEvents(result);
5060-
expect(Object.keys(events).length).to.equal(5);
5064+
expect(Object.keys(events).length).to.equal(6);
50615065

50625066
expect(events['hello']).to.exist;
50635067
expect(events['hello'].length).to.equal(3);
@@ -5069,6 +5073,10 @@ module.exports = (expect) => {
50695073
expect(events['goodbye'].length).to.equal(1);
50705074
expect(events['goodbye'][0]).to.equal('"Nice to see ya"');
50715075

5076+
expect(events['@begin']).to.exist;
5077+
expect(events['@begin'].length).to.equal(1);
5078+
expect(events['@begin'][0]).to.be.a.string;
5079+
50725080
expect(events['@stdout']).to.exist;
50735081
expect(events['@stdout'].length).to.equal(2);
50745082
expect(events['@stdout'][0]).to.equal('"what? who?"');
@@ -5089,7 +5097,7 @@ module.exports = (expect) => {
50895097
});
50905098

50915099
it('Should support POST with streaming with _debug set to valid channels without _stream set', done => {
5092-
request('POST', {}, '/stream/debug/', {alpha: 'hello', _debug: {'*': true, '@stdout': true, '@stderr': true}}, (err, res, result) => {
5100+
request('POST', {}, '/stream/debug/', {alpha: 'hello', _debug: {'*': true, '@begin': true, '@stdout': true, '@stderr': true}}, (err, res, result) => {
50935101

50945102
expect(err).to.not.exist;
50955103
expect(res.statusCode).to.equal(200);
@@ -5098,7 +5106,7 @@ module.exports = (expect) => {
50985106
expect(result).to.exist;
50995107

51005108
let events = parseServerSentEvents(result);
5101-
expect(Object.keys(events).length).to.equal(5);
5109+
expect(Object.keys(events).length).to.equal(6);
51025110

51035111
expect(events['hello']).to.exist;
51045112
expect(events['hello'].length).to.equal(3);
@@ -5110,6 +5118,10 @@ module.exports = (expect) => {
51105118
expect(events['goodbye'].length).to.equal(1);
51115119
expect(events['goodbye'][0]).to.equal('"Nice to see ya"');
51125120

5121+
expect(events['@begin']).to.exist;
5122+
expect(events['@begin'].length).to.equal(1);
5123+
expect(events['@begin'][0]).to.be.a.string;
5124+
51135125
expect(events['@stdout']).to.exist;
51145126
expect(events['@stdout'].length).to.equal(2);
51155127
expect(events['@stdout'][0]).to.equal('"what? who?"');
@@ -5156,7 +5168,11 @@ module.exports = (expect) => {
51565168
expect(result).to.exist;
51575169

51585170
let events = parseServerSentEvents(result);
5159-
expect(Object.keys(events).length).to.equal(3);
5171+
expect(Object.keys(events).length).to.equal(4);
5172+
5173+
expect(events['@begin']).to.exist;
5174+
expect(events['@begin'].length).to.equal(1);
5175+
expect(events['@begin'][0]).to.be.a.string;
51605176

51615177
expect(events['@stdout']).to.exist;
51625178
expect(events['@stdout'].length).to.equal(2);

0 commit comments

Comments
 (0)