Skip to content

Commit 90f648d

Browse files
committed
WIP Filter and pipe tests
1 parent 774968f commit 90f648d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+872
-284
lines changed

bin/cjs/index.js

Lines changed: 0 additions & 52 deletions
This file was deleted.

bin/cjs/plumbing/Filter.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.Filter = void 0;
4-
const Pipe_1 = require("./Pipe");
5-
const index_1 = require("../index");
4+
const types_1 = require("../types");
65
/**
76
* Pipe Filter.
87
*
@@ -11,19 +10,24 @@ const index_1 = require("../index");
1110
* filter function passed to them by control message, as well as having
1211
* their Bypass/Filter operation mode toggled via control message.
1312
*/
14-
class Filter extends Pipe_1.Pipe {
13+
class Filter extends types_1.Pipe {
1514
/**
1615
* Constructor.
1716
*
1817
* Optionally connect the output and set the parameters.
1918
*/
2019
constructor({ name, output, filter, params, }) {
2120
super(output);
22-
this.mode = index_1.FilterControlMessageType.FILTER;
23-
this.params = undefined;
24-
this.name = name;
25-
this.filter = filter;
26-
this.params = params;
21+
this.mode = types_1.FilterControlMessageType.FILTER;
22+
this.filter = undefined;
23+
this.params = {};
24+
this.name = "Unnamed Filter";
25+
if (name)
26+
this.name = name;
27+
if (filter)
28+
this.filter = filter;
29+
if (params)
30+
this.params = params;
2731
}
2832
/**
2933
* Handle the incoming message.
@@ -67,9 +71,9 @@ class Filter extends Pipe_1.Pipe {
6771
let success = true;
6872
// Filter normal messages
6973
switch (message.type) {
70-
case index_1.PipeMessageType.NORMAL:
74+
case types_1.PipeMessageType.NORMAL:
7175
try {
72-
if (this.mode === index_1.FilterControlMessageType.FILTER) {
76+
if (this.mode === types_1.FilterControlMessageType.FILTER) {
7377
outputMessage = this.applyFilter(message);
7478
}
7579
else {
@@ -83,16 +87,16 @@ class Filter extends Pipe_1.Pipe {
8387
}
8488
break;
8589
// Accept parameters from control message
86-
case index_1.FilterControlMessageType.SET_PARAMS:
90+
case types_1.FilterControlMessageType.SET_PARAMS:
8791
if (this.isTarget(message)) {
88-
this.params = message.params;
92+
this.params = message.params || {};
8993
}
9094
else {
9195
success = ((_b = this.output) === null || _b === void 0 ? void 0 : _b.write(message)) || false;
9296
}
9397
break;
9498
// Accept filter function from control message
95-
case index_1.FilterControlMessageType.SET_FILTER:
99+
case types_1.FilterControlMessageType.SET_FILTER:
96100
if (this.isTarget(message)) {
97101
this.filter = message.filter;
98102
}
@@ -101,8 +105,8 @@ class Filter extends Pipe_1.Pipe {
101105
}
102106
break;
103107
// Toggle between Filter or Bypass operational modes
104-
case index_1.FilterControlMessageType.BYPASS:
105-
case index_1.FilterControlMessageType.FILTER:
108+
case types_1.FilterControlMessageType.BYPASS:
109+
case types_1.FilterControlMessageType.FILTER:
106110
if (this.isTarget(message)) {
107111
this.mode = message.type;
108112
}
@@ -126,7 +130,8 @@ class Filter extends Pipe_1.Pipe {
126130
* Filter the message.
127131
*/
128132
applyFilter(message) {
129-
this.filter(message, this.params);
133+
if (this.mode !== types_1.FilterControlMessageType.BYPASS && this.filter)
134+
this.filter(message, this.params);
130135
return message;
131136
}
132137
}

bin/cjs/plumbing/Junction.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.Junction = void 0;
4-
const index_1 = require("../index");
5-
const enum_1 = require("../types/enum");
4+
const types_1 = require("../types");
65
/**
76
* Pipe Junction.
87
*
@@ -59,10 +58,10 @@ class Junction {
5958
this.pipesMap.set(name, pipe);
6059
this.pipeTypesMap.set(name, type);
6160
switch (type) {
62-
case enum_1.JunctionType.INPUT:
61+
case types_1.JunctionType.INPUT:
6362
this.inputPipes.add(name);
6463
break;
65-
case enum_1.JunctionType.OUTPUT:
64+
case types_1.JunctionType.OUTPUT:
6665
this.outputPipes.add(name);
6766
break;
6867
default:
@@ -90,7 +89,7 @@ class Junction {
9089
* @return boolean whether an INPUT pipe is registered with that name.
9190
*/
9291
hasInputPipe(name) {
93-
return (this.hasPipe(name) && this.pipeTypesMap.get(name) === enum_1.JunctionType.INPUT);
92+
return (this.hasPipe(name) && this.pipeTypesMap.get(name) === types_1.JunctionType.INPUT);
9493
}
9594
/**
9695
* Does this junction have an OUTPUT pipe by this name?
@@ -99,7 +98,7 @@ class Junction {
9998
* @return boolean whether an OUTPUT pipe is registered with that name.
10099
*/
101100
hasOutputPipe(name) {
102-
return (this.hasPipe(name) && this.pipeTypesMap.get(name) === enum_1.JunctionType.OUTPUT);
101+
return (this.hasPipe(name) && this.pipeTypesMap.get(name) === types_1.JunctionType.OUTPUT);
103102
}
104103
/**
105104
* Remove the pipe with this name if it is registered.
@@ -115,10 +114,10 @@ class Junction {
115114
let type = this.pipeTypesMap.get(name);
116115
let pipesList;
117116
switch (type) {
118-
case enum_1.JunctionType.INPUT:
117+
case types_1.JunctionType.INPUT:
119118
pipesList = this.inputPipes;
120119
break;
121-
case enum_1.JunctionType.OUTPUT:
120+
case types_1.JunctionType.OUTPUT:
122121
pipesList = this.outputPipes;
123122
break;
124123
default:
@@ -158,7 +157,7 @@ class Junction {
158157
let success = false;
159158
if (this.hasInputPipe(inputPipeName)) {
160159
let pipe = this.pipesMap.get(inputPipeName);
161-
success = (pipe === null || pipe === void 0 ? void 0 : pipe.connect(new index_1.PipeListener(listener))) || false;
160+
success = (pipe === null || pipe === void 0 ? void 0 : pipe.connect(new types_1.PipeListener(listener))) || false;
162161
}
163162
return success;
164163
}

bin/cjs/plumbing/JunctionMediator.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.JunctionMediator = void 0;
44
const puremvc_typescript_multicore_framework_1 = require("@puremvc/puremvc-typescript-multicore-framework");
5-
const enum_1 = require("../types/enum");
5+
const types_1 = require("../types");
66
/**
77
* Junction Mediator.
88
*
@@ -25,8 +25,8 @@ class JunctionMediator extends puremvc_typescript_multicore_framework_1.Mediator
2525
*/
2626
listNotificationInterests() {
2727
return [
28-
enum_1.JunctionMediatorNotification.ACCEPT_INPUT_PIPE,
29-
enum_1.JunctionMediatorNotification.ACCEPT_OUTPUT_PIPE,
28+
types_1.JunctionMediatorNotification.ACCEPT_INPUT_PIPE,
29+
types_1.JunctionMediatorNotification.ACCEPT_OUTPUT_PIPE,
3030
];
3131
}
3232
/**
@@ -44,23 +44,23 @@ class JunctionMediator extends puremvc_typescript_multicore_framework_1.Mediator
4444
// accept an input pipe
4545
// register the pipe and if successful
4646
// set this mediator as its listener
47-
case enum_1.JunctionMediatorNotification.ACCEPT_INPUT_PIPE:
47+
case types_1.JunctionMediatorNotification.ACCEPT_INPUT_PIPE:
4848
const inputPipeName = note.type;
4949
const inputPipe = note.body;
5050
if (this.junction.registerPipe({
5151
name: inputPipeName,
52-
type: enum_1.JunctionType.INPUT,
52+
type: types_1.JunctionType.INPUT,
5353
pipe: inputPipe,
5454
}))
5555
this.junction.addPipeListener(inputPipeName, (message) => this.handlePipeMessage(message));
5656
break;
5757
// accept an output pipe
58-
case enum_1.JunctionMediatorNotification.ACCEPT_OUTPUT_PIPE:
58+
case types_1.JunctionMediatorNotification.ACCEPT_OUTPUT_PIPE:
5959
const outputPipeName = note.type;
6060
const outputPipe = note.body;
6161
this.junction.registerPipe({
6262
name: outputPipeName,
63-
type: enum_1.JunctionType.OUTPUT,
63+
type: types_1.JunctionType.OUTPUT,
6464
pipe: outputPipe,
6565
});
6666
break;

bin/cjs/plumbing/Pipe.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ exports.Pipe = void 0;
1010
*/
1111
class Pipe {
1212
constructor(output) {
13-
this.output = null;
13+
this.output = undefined;
1414
if (output)
1515
this.connect(output);
1616
}
@@ -24,7 +24,7 @@ class Pipe {
2424
*/
2525
connect(output) {
2626
let success = false;
27-
if (this.output === null) {
27+
if (!this.output) {
2828
this.output = output;
2929
success = true;
3030
}
@@ -44,7 +44,7 @@ class Pipe {
4444
*/
4545
disconnect() {
4646
let disconnectedFitting = this.output;
47-
this.output = null;
47+
this.output = undefined;
4848
return disconnectedFitting;
4949
}
5050
/**

bin/cjs/plumbing/PipeListener.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,19 @@ class PipeListener {
2424
* Can't disconnect anything, either.
2525
*/
2626
disconnect() {
27-
return null;
27+
return undefined;
2828
}
2929
/**
3030
* Write the message to the listener.
3131
* @param message
3232
*/
3333
write(message) {
34-
this.callback(message);
35-
return true;
34+
let success = false;
35+
if (this.callback !== undefined) {
36+
this.callback(message);
37+
success = true;
38+
}
39+
return success;
3640
}
3741
}
3842
exports.PipeListener = PipeListener;

bin/cjs/plumbing/Queue.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.Queue = void 0;
4-
const index_1 = require("../index");
4+
const types_1 = require("../types");
55
/**
66
* Pipe Queue.
77
*
@@ -19,10 +19,10 @@ const index_1 = require("../index");
1919
* use, and so having to name them would make their operation
2020
* more complex than need be.
2121
*/
22-
class Queue extends index_1.Pipe {
22+
class Queue extends types_1.Pipe {
2323
constructor(output) {
2424
super(output);
25-
this.mode = index_1.QueueControlMessageType.SORT;
25+
this.mode = types_1.QueueControlMessageType.SORT;
2626
this.messages = new Array();
2727
}
2828
/**
@@ -46,19 +46,19 @@ class Queue extends index_1.Pipe {
4646
let success = true;
4747
switch (message.type) {
4848
// Store normal messages
49-
case index_1.PipeMessageType.NORMAL:
49+
case types_1.PipeMessageType.NORMAL:
5050
this.store(message);
5151
break;
5252
// Flush the queue
53-
case index_1.QueueControlMessageType.FLUSH:
53+
case types_1.QueueControlMessageType.FLUSH:
5454
success = this.flush();
5555
break;
5656
// Put Queue into Priority Sort or FIFO mode
5757
// Subsequent messages written to the queue
5858
// will be affected. Sorted messages cannot
5959
// be put back into FIFO order!
60-
case index_1.QueueControlMessageType.SORT:
61-
case index_1.QueueControlMessageType.FIFO:
60+
case types_1.QueueControlMessageType.SORT:
61+
case types_1.QueueControlMessageType.FIFO:
6262
this.mode = message.type;
6363
break;
6464
}
@@ -71,7 +71,7 @@ class Queue extends index_1.Pipe {
7171
*/
7272
store(message) {
7373
this.messages.push(message);
74-
if (this.mode === index_1.QueueControlMessageType.SORT)
74+
if (this.mode === types_1.QueueControlMessageType.SORT)
7575
this.messages.sort(this.sortMessagesByPriority);
7676
}
7777
/**

bin/cjs/plumbing/TeeMerge.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.TeeMerge = void 0;
4-
const Pipe_1 = require("./Pipe");
4+
const types_1 = require("../types");
55
/**
66
* Merging Pipe Tee.
77
*
88
* Writes the messages from multiple input pipelines into
99
* a single output pipe fitting.
1010
*/
11-
class TeeMerge extends Pipe_1.Pipe {
11+
class TeeMerge extends types_1.Pipe {
1212
/**
1313
* Constructor.
1414
*
@@ -21,7 +21,7 @@ class TeeMerge extends Pipe_1.Pipe {
2121
* `connect` method, as you would with any other IPipeFitting.
2222
*/
2323
constructor(input1, input2) {
24-
super(null);
24+
super();
2525
if (input1)
2626
this.connectInput(input1);
2727
if (input2)

0 commit comments

Comments
 (0)