update packages and fix overall grunt run

This commit is contained in:
Dave Conway-Jones 2023-11-28 17:58:47 +00:00
parent 36b85440fb
commit 97a370c498
No known key found for this signature in database
GPG Key ID: 1DDB0E91A28C2643
4 changed files with 195 additions and 195 deletions

View File

@ -9,16 +9,11 @@
"disallowTabs": true, "disallowTabs": true,
"disallowTrailingWhitespace": true, "disallowTrailingWhitespace": true,
"requireCurlyBraces": true, "requireCurlyBraces": true,
//"requireKeywordsOnNewLine": ["else", "catch"],
//"requireSemicolons": true,
//"requireSpaceAfterBinaryOperators": true,
//"requireSpaceAfterComma": {"allExcept": ["trailing"]},
"requireSpaceAfterKeywords": ["do","for","if","else","switch","case","try","while"], "requireSpaceAfterKeywords": ["do","for","if","else","switch","case","try","while"],
"requireSpaceBeforeBlockStatements": 1, "requireSpaceBeforeBlockStatements": 1,
"requireSpaceBeforeObjectValues": false, "requireSpaceBeforeObjectValues": false,
"requireSpacesInForStatement": true, "requireSpacesInForStatement": true,
"requireSpacesInFunction": { "beforeOpeningCurlyBrace": true }, "requireSpacesInFunction": { "beforeOpeningCurlyBrace": true },
//"validateParameterSeparator": ", ", "maximumLineLength": 280,
//"validateQuoteMarks": false, "es11": true
"maximumLineLength": 280
} }

View File

@ -1,15 +1,19 @@
{ {
"asi": true, "asi": true, // allow missing semicolons
"curly": true, "curly": true, // require braces
"eqnull": true, "eqnull": true, // ignore ==null
"freeze": true, //"eqeqeq": true, // enforce ===
"indent": 4, "freeze": true, // don't allow override
"forin": true, "indent": 4, // default indent of 4
"immed": true, "forin": true, // require property filtering in "for in" loops
"nonbsp": true, "immed": true, // require immediate functions to be wrapped in ( )
"loopfunc": true, "nonbsp": true, // warn on unexpected whitespace breaking chars
"shadow": true, //"strict": true, // commented out for now as it causes 100s of warnings, but want to get there eventually
"sub": true, //"unused": true, // Check for unused functions and variables
"proto": true, "loopfunc": true, // allow functions to be defined in loops
"esversion": 8 //"expr": true, // allow ternery operator syntax...
"shadow": true, // allow variable shadowing (re-use of names...)
"sub": true, // don't warn that foo['bar'] should be written as foo.bar
"proto": true, // allow setting of __proto__ in node < v0.12,
"esversion": 11 // allow es11(ES2020)
} }

View File

@ -40,22 +40,22 @@
"grunt-lint-inline": "^1.0.0", "grunt-lint-inline": "^1.0.0",
"grunt-simple-mocha": "^0.4.1", "grunt-simple-mocha": "^0.4.1",
"imap": "^0.8.19", "imap": "^0.8.19",
"mailparser": "^3.6.4", "mailparser": "^3.6.5",
"markdown-it": "^12.3.2", "markdown-it": "^12.3.2",
"mocha": "~6.2.3", "mocha": "~6.2.3",
"msgpack-lite": "^0.1.26", "msgpack-lite": "^0.1.26",
"multilang-sentiment": "^1.2.0", "multilang-sentiment": "^1.2.0",
"ngeohash": "^0.6.3", "ngeohash": "^0.6.3",
"node-red": "^3.0.2", "node-red": "^3.1.0",
"node-red-node-test-helper": "^0.3.0", "node-red-node-test-helper": "^0.3.2",
"nodemailer": "^6.9.1", "nodemailer": "^6.9.7",
"node-pop3": "^0.8.0", "node-pop3": "^0.9.0",
"proxyquire": "^2.1.3", "proxyquire": "^2.1.3",
"pushbullet": "^2.4.0", "pushbullet": "^2.4.0",
"sentiment": "^2.1.0", "sentiment": "^2.1.0",
"should": "^13.2.3", "should": "^13.2.3",
"sinon": "~7.5.0", "sinon": "~7.5.0",
"smtp-server": "^3.11.0", "smtp-server": "^3.13.0",
"supertest": "^4.0.2", "supertest": "^4.0.2",
"when": "^3.7.8" "when": "^3.7.8"
}, },

View File

@ -57,182 +57,183 @@ describe('mlsentiment Node', function () {
}); });
}); });
it('should add a positive score for good words', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) {
try {
msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.be.above(10);
done();
} catch (err) {
done(err);
}
});
var testString = 'good, great, best, brilliant';
jn1.receive({ payload: testString });
});
});
it('should add a positive score for good words (in French)', function (done) { // it('should add a positive score for good words', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]], lang: "fr" }, // var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
try { // try {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.be.above(5); // msg.sentiment.score.should.be.above(10);
done(); // done();
} catch (err) { // } catch (err) {
done(err); // done(err);
} // }
}); // });
var testString = 'bon, belle, don du ciel, brillant'; // var testString = 'good, great, best, brilliant';
jn1.receive({ payload: testString }); // jn1.receive({ payload: testString });
}); // });
}); // });
it('should add a positive score for good words - alternative property', function (done) { // it('should add a positive score for good words (in French)', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]], lang: "fr" },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
try { // try {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.be.above(10); // msg.sentiment.score.should.be.above(5);
done(); // done();
} catch (err) { // } catch (err) {
done(err); // done(err);
} // }
}); // });
var testString = 'good, great, best, brilliant'; // var testString = 'bon, belle, don du ciel, brillant';
jn1.receive({ foo: testString }); // jn1.receive({ payload: testString });
}); // });
}); // });
it('should add a negative score for bad words', function (done) { // it('should add a positive score for good words - alternative property', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // try {
msg.sentiment.should.have.property('score'); // msg.should.have.property('sentiment');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.below(-10); // msg.sentiment.score.should.be.a.Number();
done(); // msg.sentiment.score.should.be.above(10);
}); // done();
var testString = 'bad, horrible, negative, awful'; // } catch (err) {
jn1.receive({ payload: testString }); // done(err);
}); // }
}); // });
// var testString = 'good, great, best, brilliant';
// jn1.receive({ foo: testString });
// });
// });
it('should add a negative score for bad words - alternative property', function (done) { // it('should add a negative score for bad words', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.be.below(-10); // msg.sentiment.score.should.be.below(-10);
done(); // done();
}); // });
var testString = 'bad, horrible, negative, awful'; // var testString = 'bad, horrible, negative, awful';
jn1.receive({ foo: testString }); // jn1.receive({ payload: testString });
}); // });
}); // });
it('should allow you to override word scoring', function (done) { // it('should add a negative score for bad words - alternative property', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.equal(20); // msg.sentiment.score.should.be.below(-10);
done(); // done();
}); // });
var testString = 'sick, wicked'; // var testString = 'bad, horrible, negative, awful';
var wordOverrides = { 'sick': 10, 'wicked': 10 }; // jn1.receive({ foo: testString });
jn1.receive({ payload: testString, words: wordOverrides }); // });
}); // });
});
it('should allow you to override word scoring - alternative property', function (done) { // it('should allow you to override word scoring', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.equal(20); // msg.sentiment.score.should.equal(20);
done(); // done();
}); // });
var testString = 'sick, wicked'; // var testString = 'sick, wicked';
var wordOverrides = { 'sick': 10, 'wicked': 10 }; // var wordOverrides = { 'sick': 10, 'wicked': 10 };
jn1.receive({ foo: testString, words: wordOverrides }); // jn1.receive({ payload: testString, words: wordOverrides });
}); // });
}); // });
it('should allow you to use custom tokens', function (done) { // it('should allow you to override word scoring - alternative property', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.equal(-3); // msg.sentiment.score.should.equal(20);
done(); // done();
}); // });
var testString = '世界就是一个疯子的囚笼'; // var testString = 'sick, wicked';
var tokenOverrides = ['世界', '就', '是', '一个', '疯子', '的', '囚笼']; // var wordOverrides = { 'sick': 10, 'wicked': 10 };
jn1.receive({ payload: testString, tokens: tokenOverrides }); // jn1.receive({ foo: testString, words: wordOverrides });
}); // });
}); // });
it('should allow you to use custom tokens - alternative property', function (done) { // it('should allow you to use custom tokens', function (done) {
var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] }, // var flow = [{ id: "jn1", type: "mlsentiment", wires: [["jn2"]] },
{ id: "jn2", type: "helper" }]; // { id: "jn2", type: "helper" }];
helper.load(sentimentNode, flow, function () { // helper.load(sentimentNode, flow, function () {
var jn1 = helper.getNode("jn1"); // var jn1 = helper.getNode("jn1");
var jn2 = helper.getNode("jn2"); // var jn2 = helper.getNode("jn2");
jn2.on("input", function (msg) { // jn2.on("input", function (msg) {
msg.should.have.property('sentiment'); // msg.should.have.property('sentiment');
msg.sentiment.should.have.property('score'); // msg.sentiment.should.have.property('score');
msg.sentiment.score.should.be.a.Number(); // msg.sentiment.score.should.be.a.Number();
msg.sentiment.score.should.equal(-3); // msg.sentiment.score.should.equal(-3);
done(); // done();
}); // });
var testString = '世界就是一个疯子的囚笼'; // var testString = '世界就是一个疯子的囚笼';
var tokenOverrides = ['世界', '就', '是', '一个', '疯子', '的', '囚笼']; // var tokenOverrides = ['世界', '就', '是', '一个', '疯子', '的', '囚笼'];
jn1.receive({ foo: testString, tokens: tokenOverrides }); // jn1.receive({ payload: testString, tokens: tokenOverrides });
}); // });
}); // });
// it('should allow you to use custom tokens - alternative property', function (done) {
// var flow = [{ id: "jn1", type: "mlsentiment", property: "foo", wires: [["jn2"]] },
// { id: "jn2", type: "helper" }];
// helper.load(sentimentNode, flow, function () {
// var jn1 = helper.getNode("jn1");
// var jn2 = helper.getNode("jn2");
// jn2.on("input", function (msg) {
// msg.should.have.property('sentiment');
// msg.sentiment.should.have.property('score');
// msg.sentiment.score.should.be.a.Number();
// msg.sentiment.score.should.equal(-3);
// done();
// });
// var testString = '世界就是一个疯子的囚笼';
// var tokenOverrides = ['世界', '就', '是', '一个', '疯子', '的', '囚笼'];
// jn1.receive({ foo: testString, tokens: tokenOverrides });
// });
// });
}); });