noflo 1.4.3 → 1.5.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/.ecrc +3 -0
- package/.eslintignore +2 -0
- package/{CHANGES.md → CHANGELOG.md} +527 -527
- package/README.md +1 -1
- package/bin/noflo-cache-preheat +4 -4
- package/components/Graph.d.ts +50 -15
- package/components/Graph.js +94 -68
- package/examples/http/HelloController.js +9 -6
- package/examples/spreadsheet/parse.fbp +3 -3
- package/lib/AsCallback.d.ts +22 -9
- package/lib/AsCallback.js +69 -18
- package/lib/AsComponent.d.ts +1 -1
- package/lib/AsComponent.js +5 -3
- package/lib/BaseNetwork.d.ts +16 -6
- package/lib/BaseNetwork.js +65 -31
- package/lib/BasePort.d.ts +39 -12
- package/lib/BasePort.js +34 -6
- package/lib/Component.d.ts +8 -8
- package/lib/Component.js +23 -20
- package/lib/ComponentLoader.d.ts +3 -4
- package/lib/ComponentLoader.js +9 -10
- package/lib/IP.d.ts +12 -8
- package/lib/IP.js +6 -4
- package/lib/InPort.d.ts +64 -9
- package/lib/InPort.js +72 -13
- package/lib/InternalSocket.d.ts +53 -7
- package/lib/InternalSocket.js +51 -14
- package/lib/LegacyNetwork.d.ts +12 -2
- package/lib/LegacyNetwork.js +5 -5
- package/lib/Network.d.ts +13 -2
- package/lib/Network.js +10 -10
- package/lib/NoFlo.d.ts +48 -13
- package/lib/NoFlo.js +55 -27
- package/lib/OutPort.d.ts +64 -13
- package/lib/OutPort.js +73 -15
- package/lib/Platform.d.ts +1 -1
- package/lib/Platform.js +9 -4
- package/lib/Ports.d.ts +11 -12
- package/lib/Ports.js +8 -4
- package/lib/ProcessInput.d.ts +5 -9
- package/lib/ProcessInput.js +8 -9
- package/lib/ProcessOutput.d.ts +2 -2
- package/lib/ProcessOutput.js +5 -5
- package/lib/loader/NodeJs.d.ts +0 -1
- package/lib/loader/NodeJs.js +152 -161
- package/lib/loader/register.d.ts +1 -1
- package/lib/loader/register.js +8 -4
- package/package.json +25 -16
- package/spec/.eslintrc +5 -2
- package/spec/AsCallback.js +9 -13
- package/spec/AsComponent.js +10 -4
- package/spec/AsPromise.js +38 -0
- package/spec/CommonJS.cjs +10 -0
- package/spec/ComponentLoader.js +19 -7
- package/spec/ESModule.mjs +11 -0
- package/spec/Network.js +32 -11
- package/spec/NetworkSync.js +892 -0
- package/spec/Scoping.js +27 -42
- package/spec/Subgraph.js +6 -11
- package/spec/fixtures/componentloader/components/Output.js +1 -1
- package/spec/fixtures/componentloader/components/Repeat.ts +1 -1
- package/spec/fixtures/componentloader/components/RepeatAsync.coffee +1 -1
- package/spec/fixtures/componentloader/node_modules/example/components/Forward.js +1 -1
- package/spec/fixtures/componentloader/node_modules/example/package.json +1 -1
- package/spec/fixtures/componentloader/package.json +2 -1
- package/spec/fixtures/componentloader/spec/Repeat.yaml +1 -1
- package/spec/utils/inject.js +1 -1
- package/src/.eslintrc +9 -2
- package/src/components/Graph.js +105 -71
- package/src/lib/AsCallback.js +71 -16
- package/src/lib/AsComponent.js +5 -4
- package/src/lib/BaseNetwork.js +48 -15
- package/src/lib/BasePort.js +43 -9
- package/src/lib/Component.js +8 -8
- package/src/lib/ComponentLoader.js +3 -4
- package/src/lib/IP.js +7 -4
- package/src/lib/InPort.js +74 -13
- package/src/lib/InternalSocket.js +49 -9
- package/src/lib/LegacyNetwork.js +2 -2
- package/src/lib/Network.js +2 -2
- package/src/lib/NoFlo.js +43 -13
- package/src/lib/OutPort.js +77 -14
- package/src/lib/Platform.js +9 -4
- package/src/lib/Ports.js +6 -2
- package/src/lib/ProcessInput.js +7 -9
- package/src/lib/ProcessOutput.js +1 -1
- package/src/lib/loader/NodeJs.js +185 -178
- package/src/lib/loader/register.js +2 -2
- /package/{karma.config.js → karma.config.cjs} +0 -0
- /package/{webpack.config.js → webpack.config.cjs} +0 -0
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"noflo"
|
|
9
9
|
],
|
|
10
10
|
"author": "Henri Bergius <henri.bergius@iki.fi>",
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.5.1",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"engines": {
|
|
14
14
|
"node": ">= 6"
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"debug": "^4.0.1",
|
|
18
18
|
"fbp": "^1.5.0",
|
|
19
19
|
"fbp-graph": "^0.7.0",
|
|
20
|
-
"fbp-manifest": "^0.
|
|
20
|
+
"fbp-manifest": "^0.3.1",
|
|
21
21
|
"get-function-params": "^2.0.6"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
@@ -25,29 +25,34 @@
|
|
|
25
25
|
"@types/node": "^14.14.2",
|
|
26
26
|
"chai": "^4.0.0",
|
|
27
27
|
"coffeescript": "^2.2.1",
|
|
28
|
-
"coveralls": "^
|
|
29
|
-
"eslint": "^
|
|
30
|
-
"eslint-config-airbnb-base": "^
|
|
28
|
+
"coveralls": "^2.7.1",
|
|
29
|
+
"eslint": "^8.2.0",
|
|
30
|
+
"eslint-config-airbnb-base": "^15.0.0",
|
|
31
31
|
"eslint-plugin-import": "^2.22.0",
|
|
32
32
|
"events": "^3.2.0",
|
|
33
33
|
"flowtrace": "^0.1.8",
|
|
34
|
-
"karma": "^
|
|
34
|
+
"karma": "^6.0.0",
|
|
35
35
|
"karma-chai": "^0.1.0",
|
|
36
36
|
"karma-chrome-launcher": "^3.1.0",
|
|
37
37
|
"karma-mocha": "^2.0.1",
|
|
38
38
|
"karma-mocha-reporter": "^2.2.5",
|
|
39
39
|
"mocha": "^8.1.3",
|
|
40
40
|
"noflo-component-loader": "^0.4.0",
|
|
41
|
-
"nyc": "^
|
|
41
|
+
"nyc": "^14.1.1",
|
|
42
42
|
"path-browserify": "^1.0.1",
|
|
43
43
|
"process": "^0.11.10",
|
|
44
|
-
"replace": "^
|
|
44
|
+
"replace": "^0.2.2",
|
|
45
45
|
"typescript": "^4.0.2",
|
|
46
46
|
"util": "^0.12.3",
|
|
47
47
|
"webpack": "^5.0.0",
|
|
48
48
|
"webpack-cli": "^4.0.0"
|
|
49
49
|
},
|
|
50
|
-
"main": "./lib/NoFlo",
|
|
50
|
+
"main": "./src/lib/NoFlo",
|
|
51
|
+
"module": "./src/lib/NoFlo.js",
|
|
52
|
+
"exports": {
|
|
53
|
+
"import": "./src/lib/NoFlo.js",
|
|
54
|
+
"require": "./lib/NoFlo.js"
|
|
55
|
+
},
|
|
51
56
|
"types": "./lib/NoFlo.d.ts",
|
|
52
57
|
"bin": {
|
|
53
58
|
"noflo": "./bin/noflo",
|
|
@@ -60,14 +65,18 @@
|
|
|
60
65
|
},
|
|
61
66
|
"scripts": {
|
|
62
67
|
"lint": "eslint .",
|
|
68
|
+
"prebuild:node": "replace 'import.meta.dirname' '__dirname' src/lib/loader/NodeJs.js && replace 'import getParams from' 'import * as getParams from' src/lib/AsComponent.js",
|
|
63
69
|
"build:node": "tsc",
|
|
64
|
-
"
|
|
70
|
+
"postbuild:node": "replace '__dirname' 'import.meta.dirname' src/lib/loader/NodeJs.js && replace 'import \\* as getParams from' 'import getParams from' src/lib/AsComponent.js",
|
|
71
|
+
"build:browser": "webpack --config webpack.config.cjs",
|
|
65
72
|
"build": "npm run build:node && npm run build:browser",
|
|
66
73
|
"postbuild": "replace 'node/events' 'events' lib -r",
|
|
67
74
|
"pretest": "npm run lint && npm run build",
|
|
68
|
-
"test:
|
|
69
|
-
"test:
|
|
70
|
-
"test": "
|
|
75
|
+
"test:esmodules": "node --test spec/*.mjs",
|
|
76
|
+
"test:commonjs": "node --test spec/*.cjs",
|
|
77
|
+
"test:node": "nyc mocha --require spec/utils/inject.js spec/*.js",
|
|
78
|
+
"test:browser": "karma start karma.config.cjs",
|
|
79
|
+
"test": "npm run test:esmodules && npm run test:commonjs && npm run test:node && npm run test:browser"
|
|
71
80
|
},
|
|
72
81
|
"docco_husky": {
|
|
73
82
|
"output_dir": "docs",
|
|
@@ -75,9 +84,9 @@
|
|
|
75
84
|
},
|
|
76
85
|
"nyc": {
|
|
77
86
|
"include": [
|
|
78
|
-
"components/*.js",
|
|
79
|
-
"lib/*.js",
|
|
80
|
-
"lib/**/*.js"
|
|
87
|
+
"src/components/*.js",
|
|
88
|
+
"src/lib/*.js",
|
|
89
|
+
"src/lib/**/*.js"
|
|
81
90
|
]
|
|
82
91
|
}
|
|
83
92
|
}
|
package/spec/.eslintrc
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"global-require": 0,
|
|
8
8
|
"import/no-extraneous-dependencies": 0,
|
|
9
9
|
"import/no-unresolved": 0,
|
|
10
|
+
"import/extensions": 0,
|
|
10
11
|
"no-console": 0,
|
|
11
12
|
"no-param-reassign": 0,
|
|
12
13
|
"no-plusplus": 0,
|
|
@@ -15,6 +16,8 @@
|
|
|
15
16
|
"no-shadow": 0,
|
|
16
17
|
"no-undef": 0,
|
|
17
18
|
"no-unused-expressions": 0,
|
|
18
|
-
"prefer-destructuring": 0
|
|
19
|
+
"prefer-destructuring": 0,
|
|
20
|
+
"function-paren-newline": 0,
|
|
21
|
+
"function-call-argument-newline": 0
|
|
19
22
|
}
|
|
20
|
-
}
|
|
23
|
+
}
|
package/spec/AsCallback.js
CHANGED
|
@@ -70,20 +70,16 @@ describe('asCallback interface', () => {
|
|
|
70
70
|
return c;
|
|
71
71
|
};
|
|
72
72
|
|
|
73
|
-
before((
|
|
73
|
+
before(() => {
|
|
74
74
|
loader = new noflo.ComponentLoader(baseDir);
|
|
75
|
-
loader.listComponents(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
loader.registerComponent('process', 'NeverSend', neverSend);
|
|
84
|
-
loader.registerComponent('process', 'Streamify', streamify);
|
|
85
|
-
done();
|
|
86
|
-
});
|
|
75
|
+
return loader.listComponents()
|
|
76
|
+
.then(() => {
|
|
77
|
+
loader.registerComponent('process', 'Async', processAsync);
|
|
78
|
+
loader.registerComponent('process', 'Error', processError);
|
|
79
|
+
loader.registerComponent('process', 'Values', processValues);
|
|
80
|
+
loader.registerComponent('process', 'NeverSend', neverSend);
|
|
81
|
+
loader.registerComponent('process', 'Streamify', streamify);
|
|
82
|
+
});
|
|
87
83
|
});
|
|
88
84
|
describe('with a non-existing component', () => {
|
|
89
85
|
let wrapped = null;
|
package/spec/AsComponent.js
CHANGED
|
@@ -202,8 +202,11 @@ describe('asComponent interface', () => {
|
|
|
202
202
|
before(function () {
|
|
203
203
|
if (isBrowser && (typeof window.Promise === 'undefined')) { return this.skip(); }
|
|
204
204
|
});
|
|
205
|
-
const func = (hello) => new Promise((resolve) =>
|
|
206
|
-
|
|
205
|
+
const func = (hello) => new Promise((resolve) => {
|
|
206
|
+
setTimeout(() => {
|
|
207
|
+
resolve(`Hello ${hello}`);
|
|
208
|
+
}, 5);
|
|
209
|
+
});
|
|
207
210
|
it('should be possible to componentize', (done) => {
|
|
208
211
|
const component = () => noflo.asComponent(func);
|
|
209
212
|
loader.registerComponent('ascomponent', 'promise-one', component, done);
|
|
@@ -227,8 +230,11 @@ describe('asComponent interface', () => {
|
|
|
227
230
|
this.skip();
|
|
228
231
|
}
|
|
229
232
|
});
|
|
230
|
-
const func = (hello) => new Promise((resolve, reject) =>
|
|
231
|
-
|
|
233
|
+
const func = (hello) => new Promise((resolve, reject) => {
|
|
234
|
+
setTimeout(() => {
|
|
235
|
+
reject(new Error(`Hello ${hello}`));
|
|
236
|
+
}, 5);
|
|
237
|
+
});
|
|
232
238
|
it('should be possible to componentize', (done) => {
|
|
233
239
|
const component = () => noflo.asComponent(func);
|
|
234
240
|
loader.registerComponent('ascomponent', 'sync-throw', component, done);
|
package/spec/AsPromise.js
CHANGED
|
@@ -317,6 +317,44 @@ describe('asPromise interface', () => {
|
|
|
317
317
|
INPORT=Async.IN:IN
|
|
318
318
|
OUTPORT=Stream.OUT:OUT
|
|
319
319
|
Async(process/Async) OUT -> IN Stream(process/Streamify)\
|
|
320
|
+
`, (err, g) => {
|
|
321
|
+
if (err) {
|
|
322
|
+
done(err);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
graph = g;
|
|
326
|
+
wrapped = noflo.asPromise(graph, {
|
|
327
|
+
loader,
|
|
328
|
+
asyncDelivery: true,
|
|
329
|
+
});
|
|
330
|
+
done();
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
it('should execute network with input map and provide output map with streams as arrays', () => wrapped({
|
|
334
|
+
in: 'hello world',
|
|
335
|
+
})
|
|
336
|
+
.then((out) => {
|
|
337
|
+
chai.expect(out.out).to.eql([
|
|
338
|
+
['h', 'e', 'l', 'l', 'o'],
|
|
339
|
+
['w', 'o', 'r', 'l', 'd'],
|
|
340
|
+
]);
|
|
341
|
+
}));
|
|
342
|
+
it('should execute network with simple input and and provide simple output with streams as arrays', () => wrapped('hello there')
|
|
343
|
+
.then((out) => {
|
|
344
|
+
chai.expect(out).to.eql([
|
|
345
|
+
['h', 'e', 'l', 'l', 'o'],
|
|
346
|
+
['t', 'h', 'e', 'r', 'e'],
|
|
347
|
+
]);
|
|
348
|
+
}));
|
|
349
|
+
});
|
|
350
|
+
describe('with a graph instead of component name (synchronous)', () => {
|
|
351
|
+
let graph = null;
|
|
352
|
+
let wrapped = null;
|
|
353
|
+
before((done) => {
|
|
354
|
+
noflo.graph.loadFBP(`\
|
|
355
|
+
INPORT=Async.IN:IN
|
|
356
|
+
OUTPORT=Stream.OUT:OUT
|
|
357
|
+
Async(process/Async) OUT -> IN Stream(process/Streamify)\
|
|
320
358
|
`, (err, g) => {
|
|
321
359
|
if (err) {
|
|
322
360
|
done(err);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const { describe, it } = require('node:test');
|
|
2
|
+
const assert = require('node:assert/strict');
|
|
3
|
+
const noflo = require('../lib/NoFlo.js');
|
|
4
|
+
|
|
5
|
+
describe('NoFlo loaded as CommonJS module', () => {
|
|
6
|
+
it('should be runnable', () => {
|
|
7
|
+
assert.equal(typeof noflo, 'object');
|
|
8
|
+
assert.equal(typeof noflo.Component, 'function');
|
|
9
|
+
});
|
|
10
|
+
});
|
package/spec/ComponentLoader.js
CHANGED
|
@@ -286,7 +286,7 @@ describe('ComponentLoader with no external packages installed', () => {
|
|
|
286
286
|
if (noflo.isBrowser()) {
|
|
287
287
|
str = 'Dynamic loading of';
|
|
288
288
|
} else {
|
|
289
|
-
str = 'Cannot find
|
|
289
|
+
str = 'Cannot find package';
|
|
290
290
|
}
|
|
291
291
|
loader.load('InvalidComponent', (err) => {
|
|
292
292
|
chai.expect(err).to.be.an('error');
|
|
@@ -378,8 +378,14 @@ describe('ComponentLoader with no external packages installed', () => {
|
|
|
378
378
|
}
|
|
379
379
|
chai.expect(component).to.be.an('object');
|
|
380
380
|
chai.expect(component.code).to.be.a('string');
|
|
381
|
-
chai.expect(component.code.indexOf('
|
|
382
|
-
|
|
381
|
+
chai.expect(component.code.indexOf('Component')).to.not.equal(-1);
|
|
382
|
+
|
|
383
|
+
if (!noflo.isBrowser()) {
|
|
384
|
+
chai.expect(component.code.indexOf('export function getComponent')).to.not.equal(-1);
|
|
385
|
+
} else {
|
|
386
|
+
chai.expect(component.code.indexOf('exports.getComponent')).to.not.equal(-1);
|
|
387
|
+
}
|
|
388
|
+
|
|
383
389
|
chai.expect(component.name).to.equal('Graph');
|
|
384
390
|
chai.expect(component.library).to.equal('');
|
|
385
391
|
chai.expect(component.language).to.equal(shippingLanguage);
|
|
@@ -444,8 +450,12 @@ describe('ComponentLoader with no external packages installed', () => {
|
|
|
444
450
|
}
|
|
445
451
|
chai.expect(component).to.be.an('object');
|
|
446
452
|
chai.expect(component.code).to.be.a('string');
|
|
447
|
-
chai.expect(component.code.indexOf('
|
|
448
|
-
|
|
453
|
+
chai.expect(component.code.indexOf('Component')).to.not.equal(-1);
|
|
454
|
+
if (!noflo.isBrowser()) {
|
|
455
|
+
chai.expect(component.code.indexOf('export function getComponent')).to.not.equal(-1);
|
|
456
|
+
} else {
|
|
457
|
+
chai.expect(component.code.indexOf('exports.getComponent')).to.not.equal(-1);
|
|
458
|
+
}
|
|
449
459
|
chai.expect(component.name).to.equal('Graph');
|
|
450
460
|
chai.expect(component.library).to.equal('');
|
|
451
461
|
chai.expect(component.language).to.equal(shippingLanguage);
|
|
@@ -975,9 +985,11 @@ describe('ComponentLoader with a fixture project and caching', () => {
|
|
|
975
985
|
it('should be possible to pre-heat the cache file', function (done) {
|
|
976
986
|
this.timeout(8000);
|
|
977
987
|
const { exec } = require('child_process');
|
|
978
|
-
exec(
|
|
988
|
+
exec(
|
|
989
|
+
`node ${path.resolve(__dirname, '../bin/noflo-cache-preheat')}`,
|
|
979
990
|
{ cwd: fixtureRoot },
|
|
980
|
-
done
|
|
991
|
+
done,
|
|
992
|
+
);
|
|
981
993
|
});
|
|
982
994
|
it('should have populated a fbp-manifest file', (done) => {
|
|
983
995
|
const manifestPath = path.resolve(fixtureRoot, 'fbp.json');
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { describe, it } from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import * as noflo from '../src/lib/NoFlo.js';
|
|
4
|
+
|
|
5
|
+
describe('NoFlo loaded as ES module', () => {
|
|
6
|
+
it('should be runnable', () => {
|
|
7
|
+
assert.equal(typeof noflo, 'object');
|
|
8
|
+
assert.equal(typeof noflo.Component, 'function');
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
|
package/spec/Network.js
CHANGED
|
@@ -41,17 +41,18 @@ describe('NoFlo Network', () => {
|
|
|
41
41
|
describe('with an empty graph', () => {
|
|
42
42
|
let g = null;
|
|
43
43
|
let n = null;
|
|
44
|
-
before((
|
|
44
|
+
before(() => {
|
|
45
45
|
g = new noflo.Graph();
|
|
46
|
-
noflo.createNetwork(g, {
|
|
46
|
+
return noflo.createNetwork(g, {
|
|
47
47
|
subscribeGraph: false,
|
|
48
|
+
asyncDelivery: true,
|
|
48
49
|
delay: true,
|
|
49
50
|
baseDir,
|
|
50
51
|
})
|
|
51
52
|
.then((network) => {
|
|
52
53
|
n = network;
|
|
53
|
-
n.connect(
|
|
54
|
-
}
|
|
54
|
+
return n.connect();
|
|
55
|
+
});
|
|
55
56
|
});
|
|
56
57
|
it('should initially be marked as stopped', () => {
|
|
57
58
|
chai.expect(n.isStarted()).to.equal(false);
|
|
@@ -91,16 +92,14 @@ describe('NoFlo Network', () => {
|
|
|
91
92
|
chai.expect(n.uptime()).to.be.at.least(0);
|
|
92
93
|
});
|
|
93
94
|
describe('with new node', () => {
|
|
94
|
-
it('should contain the node', (
|
|
95
|
-
|
|
95
|
+
it('should contain the node', () => n
|
|
96
|
+
.addNode({
|
|
96
97
|
id: 'Graph',
|
|
97
98
|
component: 'Graph',
|
|
98
99
|
metadata: {
|
|
99
100
|
foo: 'Bar',
|
|
100
101
|
},
|
|
101
|
-
}
|
|
102
|
-
done);
|
|
103
|
-
});
|
|
102
|
+
}));
|
|
104
103
|
it('should have registered the node with the graph', () => {
|
|
105
104
|
const node = g.getNode('Graph');
|
|
106
105
|
chai.expect(node).to.be.an('object');
|
|
@@ -223,6 +222,7 @@ describe('NoFlo Network', () => {
|
|
|
223
222
|
g.addInitial('Foo', 'Merge', 'in');
|
|
224
223
|
return noflo.createNetwork(g, {
|
|
225
224
|
subscribeGraph: false,
|
|
225
|
+
asyncDelivery: true,
|
|
226
226
|
delay: true,
|
|
227
227
|
baseDir,
|
|
228
228
|
})
|
|
@@ -377,6 +377,7 @@ describe('NoFlo Network', () => {
|
|
|
377
377
|
);
|
|
378
378
|
return noflo.createNetwork(graph, {
|
|
379
379
|
subscribeGraph: false,
|
|
380
|
+
asyncDelivery: true,
|
|
380
381
|
delay: false,
|
|
381
382
|
componentLoader: n.loader,
|
|
382
383
|
});
|
|
@@ -428,6 +429,7 @@ describe('NoFlo Network', () => {
|
|
|
428
429
|
};
|
|
429
430
|
noflo.createNetwork(g, {
|
|
430
431
|
subscribeGraph: false,
|
|
432
|
+
asyncDelivery: true,
|
|
431
433
|
delay: true,
|
|
432
434
|
baseDir,
|
|
433
435
|
})
|
|
@@ -450,6 +452,7 @@ describe('NoFlo Network', () => {
|
|
|
450
452
|
g.addInitial('from-edge', 'Merge', 'in');
|
|
451
453
|
noflo.createNetwork(g, {
|
|
452
454
|
subscribeGraph: false,
|
|
455
|
+
asyncDelivery: true,
|
|
453
456
|
delay: true,
|
|
454
457
|
baseDir,
|
|
455
458
|
})
|
|
@@ -471,6 +474,7 @@ describe('NoFlo Network', () => {
|
|
|
471
474
|
g.addInitial('from-IIP', 'Def', 'in');
|
|
472
475
|
noflo.createNetwork(g, {
|
|
473
476
|
subscribeGraph: false,
|
|
477
|
+
asyncDelivery: true,
|
|
474
478
|
delay: true,
|
|
475
479
|
baseDir,
|
|
476
480
|
})
|
|
@@ -505,6 +509,7 @@ describe('NoFlo Network', () => {
|
|
|
505
509
|
noflo.createNetwork(g, {
|
|
506
510
|
delay: true,
|
|
507
511
|
subscribeGraph: false,
|
|
512
|
+
asyncDelivery: true,
|
|
508
513
|
baseDir,
|
|
509
514
|
})
|
|
510
515
|
.then((nw) => {
|
|
@@ -583,6 +588,11 @@ describe('NoFlo Network', () => {
|
|
|
583
588
|
});
|
|
584
589
|
describe('with a very large network', () => {
|
|
585
590
|
it('should be able to connect without errors', function (done) {
|
|
591
|
+
if (noflo.isBrowser()) {
|
|
592
|
+
// Async mode is too much for Puppeteer here
|
|
593
|
+
this.skip();
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
586
596
|
let n;
|
|
587
597
|
this.timeout(100000);
|
|
588
598
|
const g = new noflo.Graph();
|
|
@@ -596,8 +606,7 @@ describe('NoFlo Network', () => {
|
|
|
596
606
|
}
|
|
597
607
|
g.addInitial(() => {
|
|
598
608
|
called++;
|
|
599
|
-
},
|
|
600
|
-
'Callback', 'callback');
|
|
609
|
+
}, 'Callback', 'callback');
|
|
601
610
|
for (n = 0; n <= 10000; n++) {
|
|
602
611
|
g.addInitial(n, `Repeat${n}`, 'in');
|
|
603
612
|
}
|
|
@@ -605,6 +614,7 @@ describe('NoFlo Network', () => {
|
|
|
605
614
|
noflo.createNetwork(g, {
|
|
606
615
|
delay: true,
|
|
607
616
|
subscribeGraph: false,
|
|
617
|
+
asyncDelivery: true,
|
|
608
618
|
baseDir,
|
|
609
619
|
})
|
|
610
620
|
.then((nw) => {
|
|
@@ -637,6 +647,7 @@ describe('NoFlo Network', () => {
|
|
|
637
647
|
return noflo.createNetwork(g, {
|
|
638
648
|
delay: true,
|
|
639
649
|
subscribeGraph: false,
|
|
650
|
+
asyncDelivery: true,
|
|
640
651
|
componentLoader: loader,
|
|
641
652
|
})
|
|
642
653
|
.then((nw) => nw.connect()
|
|
@@ -656,6 +667,7 @@ describe('NoFlo Network', () => {
|
|
|
656
667
|
return noflo.createNetwork(g, {
|
|
657
668
|
delay: true,
|
|
658
669
|
subscribeGraph: false,
|
|
670
|
+
asyncDelivery: true,
|
|
659
671
|
componentLoader: loader,
|
|
660
672
|
})
|
|
661
673
|
.then((nw) => nw.connect()
|
|
@@ -675,6 +687,7 @@ describe('NoFlo Network', () => {
|
|
|
675
687
|
return noflo.createNetwork(g, {
|
|
676
688
|
delay: true,
|
|
677
689
|
subscribeGraph: false,
|
|
690
|
+
asyncDelivery: true,
|
|
678
691
|
componentLoader: loader,
|
|
679
692
|
})
|
|
680
693
|
.then((nw) => nw.connect()
|
|
@@ -695,6 +708,7 @@ describe('NoFlo Network', () => {
|
|
|
695
708
|
return noflo.createNetwork(g, {
|
|
696
709
|
delay: true,
|
|
697
710
|
subscribeGraph: false,
|
|
711
|
+
asyncDelivery: true,
|
|
698
712
|
componentLoader: loader,
|
|
699
713
|
})
|
|
700
714
|
.then((nw) => nw.connect()
|
|
@@ -715,6 +729,7 @@ describe('NoFlo Network', () => {
|
|
|
715
729
|
return noflo.createNetwork(g, {
|
|
716
730
|
delay: true,
|
|
717
731
|
subscribeGraph: false,
|
|
732
|
+
asyncDelivery: true,
|
|
718
733
|
componentLoader: loader,
|
|
719
734
|
})
|
|
720
735
|
.then((nw) => nw.connect()
|
|
@@ -732,6 +747,7 @@ describe('NoFlo Network', () => {
|
|
|
732
747
|
return noflo.createNetwork(g, {
|
|
733
748
|
delay: true,
|
|
734
749
|
subscribeGraph: false,
|
|
750
|
+
asyncDelivery: true,
|
|
735
751
|
componentLoader: loader,
|
|
736
752
|
})
|
|
737
753
|
.then((nw) => nw.connect())
|
|
@@ -759,6 +775,7 @@ describe('NoFlo Network', () => {
|
|
|
759
775
|
return noflo.createNetwork(g, {
|
|
760
776
|
delay: true,
|
|
761
777
|
subscribeGraph: false,
|
|
778
|
+
asyncDelivery: true,
|
|
762
779
|
componentLoader: loader,
|
|
763
780
|
})
|
|
764
781
|
.then((nw) => nw.connect())
|
|
@@ -788,6 +805,7 @@ describe('NoFlo Network', () => {
|
|
|
788
805
|
return noflo.createNetwork(g, {
|
|
789
806
|
delay: true,
|
|
790
807
|
subscribeGraph: false,
|
|
808
|
+
asyncDelivery: true,
|
|
791
809
|
})
|
|
792
810
|
.then((nw) => {
|
|
793
811
|
chai.expect(nw.baseDir).to.equal(baseDir);
|
|
@@ -802,6 +820,7 @@ describe('NoFlo Network', () => {
|
|
|
802
820
|
return noflo.createNetwork(g, {
|
|
803
821
|
delay: true,
|
|
804
822
|
subscribeGraph: false,
|
|
823
|
+
asyncDelivery: true,
|
|
805
824
|
})
|
|
806
825
|
.then((nw) => {
|
|
807
826
|
chai.expect(nw.baseDir).to.equal(process.cwd());
|
|
@@ -812,6 +831,7 @@ describe('NoFlo Network', () => {
|
|
|
812
831
|
return noflo.createNetwork(g, {
|
|
813
832
|
delay: true,
|
|
814
833
|
subscribeGraph: false,
|
|
834
|
+
asyncDelivery: true,
|
|
815
835
|
baseDir,
|
|
816
836
|
})
|
|
817
837
|
.then((nw) => {
|
|
@@ -827,6 +847,7 @@ describe('NoFlo Network', () => {
|
|
|
827
847
|
g = new noflo.Graph();
|
|
828
848
|
return noflo.createNetwork(g, {
|
|
829
849
|
subscribeGraph: false,
|
|
850
|
+
asyncDelivery: true,
|
|
830
851
|
delay: true,
|
|
831
852
|
baseDir,
|
|
832
853
|
})
|