Comparing version 1.1.7 to 1.2.0
{ | ||
"name": "fbp", | ||
"description": "Parser for the .fbp flow definition language", | ||
"version": "1.1.7", | ||
"version": "1.2.0", | ||
"scripts": [ | ||
@@ -6,0 +6,0 @@ "lib/fbp.js" |
757
lib/fbp.js
@@ -42,60 +42,60 @@ module.exports = (function() { | ||
peg$c2 = { type: "literal", value: "EXPORT=", description: "\"EXPORT=\"" }, | ||
peg$c3 = /^[A-Za-z.0-9_]/, | ||
peg$c4 = { type: "class", value: "[A-Za-z.0-9_]", description: "[A-Za-z.0-9_]" }, | ||
peg$c5 = ":", | ||
peg$c6 = { type: "literal", value: ":", description: "\":\"" }, | ||
peg$c7 = /^[A-Z0-9_]/, | ||
peg$c8 = { type: "class", value: "[A-Z0-9_]", description: "[A-Z0-9_]" }, | ||
peg$c9 = function(priv, pub) {return parser.registerExports(priv.join(""),pub.join(""))}, | ||
peg$c10 = "INPORT=", | ||
peg$c11 = { type: "literal", value: "INPORT=", description: "\"INPORT=\"" }, | ||
peg$c12 = /^[A-Za-z0-9_]/, | ||
peg$c13 = { type: "class", value: "[A-Za-z0-9_]", description: "[A-Za-z0-9_]" }, | ||
peg$c14 = ".", | ||
peg$c15 = { type: "literal", value: ".", description: "\".\"" }, | ||
peg$c16 = function(node, port, pub) {return parser.registerInports(node.join(""),port.join(""),pub.join(""))}, | ||
peg$c17 = "OUTPORT=", | ||
peg$c18 = { type: "literal", value: "OUTPORT=", description: "\"OUTPORT=\"" }, | ||
peg$c19 = function(node, port, pub) {return parser.registerOutports(node.join(""),port.join(""),pub.join(""))}, | ||
peg$c20 = /^[\n\r\u2028\u2029]/, | ||
peg$c21 = { type: "class", value: "[\\n\\r\\u2028\\u2029]", description: "[\\n\\r\\u2028\\u2029]" }, | ||
peg$c22 = function(edges) {return parser.registerEdges(edges);}, | ||
peg$c23 = ",", | ||
peg$c24 = { type: "literal", value: ",", description: "\",\"" }, | ||
peg$c25 = "#", | ||
peg$c26 = { type: "literal", value: "#", description: "\"#\"" }, | ||
peg$c27 = "->", | ||
peg$c28 = { type: "literal", value: "->", description: "\"->\"" }, | ||
peg$c29 = function(x, y) { return [x,y]; }, | ||
peg$c30 = function(x, proc, y) { return [{"tgt":{process:proc, port:x}},{"src":{process:proc, port:y}}]; }, | ||
peg$c31 = function(proc, port) { return {"src":{process:proc, port:port}} }, | ||
peg$c32 = function(proc, port) { return {"src":{process:proc, port:port.port, index: port.index}} }, | ||
peg$c33 = "'", | ||
peg$c34 = { type: "literal", value: "'", description: "\"'\"" }, | ||
peg$c35 = function(iip) { return {"data":iip.join("")} }, | ||
peg$c36 = function(port, proc) { return {"tgt":{process:proc, port:port}} }, | ||
peg$c37 = function(port, proc) { return {"tgt":{process:proc, port:port.port, index: port.index}} }, | ||
peg$c38 = /^[a-zA-Z0-9_\-]/, | ||
peg$c39 = { type: "class", value: "[a-zA-Z0-9_\\-]", description: "[a-zA-Z0-9_\\-]" }, | ||
peg$c40 = function(node, comp) { if(comp){parser.addNode(node.join(""),comp);}; return node.join("")}, | ||
peg$c41 = "(", | ||
peg$c42 = { type: "literal", value: "(", description: "\"(\"" }, | ||
peg$c43 = /^[a-zA-Z\/\-0-9_]/, | ||
peg$c44 = { type: "class", value: "[a-zA-Z/\\-0-9_]", description: "[a-zA-Z/\\-0-9_]" }, | ||
peg$c45 = ")", | ||
peg$c46 = { type: "literal", value: ")", description: "\")\"" }, | ||
peg$c47 = function(comp, meta) { var o = {}; comp ? o.comp = comp.join("") : o.comp = ''; meta ? o.meta = meta.join("").split(',') : null; return o; }, | ||
peg$c48 = /^[a-zA-Z\/=_,0-9]/, | ||
peg$c49 = { type: "class", value: "[a-zA-Z/=_,0-9]", description: "[a-zA-Z/=_,0-9]" }, | ||
peg$c50 = function(meta) {return meta}, | ||
peg$c51 = /^[A-Z.0-9_]/, | ||
peg$c52 = { type: "class", value: "[A-Z.0-9_]", description: "[A-Z.0-9_]" }, | ||
peg$c53 = function(portname) {return portname.join("").toLowerCase()}, | ||
peg$c54 = "[", | ||
peg$c55 = { type: "literal", value: "[", description: "\"[\"" }, | ||
peg$c56 = /^[0-9]/, | ||
peg$c57 = { type: "class", value: "[0-9]", description: "[0-9]" }, | ||
peg$c58 = "]", | ||
peg$c59 = { type: "literal", value: "]", description: "\"]\"" }, | ||
peg$c60 = function(portname, portindex) {return { port: portname.join("").toLowerCase(), index: parseInt(portindex.join('')) }}, | ||
peg$c3 = ":", | ||
peg$c4 = { type: "literal", value: ":", description: "\":\"" }, | ||
peg$c5 = function(priv, pub) {return parser.registerExports(priv,pub)}, | ||
peg$c6 = "INPORT=", | ||
peg$c7 = { type: "literal", value: "INPORT=", description: "\"INPORT=\"" }, | ||
peg$c8 = ".", | ||
peg$c9 = { type: "literal", value: ".", description: "\".\"" }, | ||
peg$c10 = function(node, port, pub) {return parser.registerInports(node,port,pub)}, | ||
peg$c11 = "OUTPORT=", | ||
peg$c12 = { type: "literal", value: "OUTPORT=", description: "\"OUTPORT=\"" }, | ||
peg$c13 = function(node, port, pub) {return parser.registerOutports(node,port,pub)}, | ||
peg$c14 = /^[\n\r\u2028\u2029]/, | ||
peg$c15 = { type: "class", value: "[\\n\\r\\u2028\\u2029]", description: "[\\n\\r\\u2028\\u2029]" }, | ||
peg$c16 = function(edges) {return parser.registerEdges(edges);}, | ||
peg$c17 = ",", | ||
peg$c18 = { type: "literal", value: ",", description: "\",\"" }, | ||
peg$c19 = "#", | ||
peg$c20 = { type: "literal", value: "#", description: "\"#\"" }, | ||
peg$c21 = "->", | ||
peg$c22 = { type: "literal", value: "->", description: "\"->\"" }, | ||
peg$c23 = function(x, y) { return [x,y]; }, | ||
peg$c24 = function(x, proc, y) { return [{"tgt":{process:proc, port:x}},{"src":{process:proc, port:y}}]; }, | ||
peg$c25 = function(x, proc, y) { return [{"tgt":{process:proc, port:x.port, index:x.index}},{"src":{process:proc, port:y}}]; }, | ||
peg$c26 = function(x, proc, y) { return [{"tgt":{process:proc, port:x}},{"src":{process:proc, port:y.port, index:y.index}}]; }, | ||
peg$c27 = function(x, proc, y) { return [{"tgt":{process:proc, port:x.port, index:x.index}},{"src":{process:proc, port:y.port, index:y.index}}]; }, | ||
peg$c28 = function(proc, port) { return {"src":{process:proc, port:port}} }, | ||
peg$c29 = function(proc, port) { return {"src":{process:proc, port:port.port, index: port.index}} }, | ||
peg$c30 = "'", | ||
peg$c31 = { type: "literal", value: "'", description: "\"'\"" }, | ||
peg$c32 = function(iip) { return {"data":iip.join("")} }, | ||
peg$c33 = function(port, proc) { return {"tgt":{process:proc, port:port}} }, | ||
peg$c34 = function(port, proc) { return {"tgt":{process:proc, port:port.port, index: port.index}} }, | ||
peg$c35 = /^[a-zA-Z_]/, | ||
peg$c36 = { type: "class", value: "[a-zA-Z_]", description: "[a-zA-Z_]" }, | ||
peg$c37 = /^[a-zA-Z0-9_\-]/, | ||
peg$c38 = { type: "class", value: "[a-zA-Z0-9_\\-]", description: "[a-zA-Z0-9_\\-]" }, | ||
peg$c39 = function(node, comp) { if(comp){parser.addNode(makeName(node),comp);}; return makeName(node)}, | ||
peg$c40 = "(", | ||
peg$c41 = { type: "literal", value: "(", description: "\"(\"" }, | ||
peg$c42 = /^[a-zA-Z\/\-0-9_]/, | ||
peg$c43 = { type: "class", value: "[a-zA-Z/\\-0-9_]", description: "[a-zA-Z/\\-0-9_]" }, | ||
peg$c44 = ")", | ||
peg$c45 = { type: "literal", value: ")", description: "\")\"" }, | ||
peg$c46 = function(comp, meta) { var o = {}; comp ? o.comp = comp.join("") : o.comp = ''; meta ? o.meta = meta.join("").split(',') : null; return o; }, | ||
peg$c47 = /^[a-zA-Z\/=_,0-9]/, | ||
peg$c48 = { type: "class", value: "[a-zA-Z/=_,0-9]", description: "[a-zA-Z/=_,0-9]" }, | ||
peg$c49 = function(meta) {return meta}, | ||
peg$c50 = function(portname) {return options.caseSensitive ? portname : portname.toLowerCase()}, | ||
peg$c51 = "[", | ||
peg$c52 = { type: "literal", value: "[", description: "\"[\"" }, | ||
peg$c53 = /^[0-9]/, | ||
peg$c54 = { type: "class", value: "[0-9]", description: "[0-9]" }, | ||
peg$c55 = "]", | ||
peg$c56 = { type: "literal", value: "]", description: "\"]\"" }, | ||
peg$c57 = function(portname, portindex) {return { port: options.caseSensitive? portname : portname.toLowerCase(), index: parseInt(portindex.join('')) }}, | ||
peg$c58 = /^[a-zA-Z.0-9_]/, | ||
peg$c59 = { type: "class", value: "[a-zA-Z.0-9_]", description: "[a-zA-Z.0-9_]" }, | ||
peg$c60 = function(portname) {return makeName(portname)}, | ||
peg$c61 = /^[^\n\r\u2028\u2029]/, | ||
@@ -331,55 +331,13 @@ peg$c62 = { type: "class", value: "[^\\n\\r\\u2028\\u2029]", description: "[^\\n\\r\\u2028\\u2029]" }, | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c3.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
s3 = peg$parsebasePort(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 58) { | ||
s4 = peg$c5; | ||
s4 = peg$c3; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
s5 = peg$parsebasePort(); | ||
if (s5 !== peg$FAILED) { | ||
@@ -394,3 +352,3 @@ s6 = peg$parse_(); | ||
peg$savedPos = s0; | ||
s1 = peg$c9(s3, s5); | ||
s1 = peg$c5(s3, s5); | ||
s0 = s1; | ||
@@ -429,94 +387,31 @@ } else { | ||
if (s1 !== peg$FAILED) { | ||
if (input.substr(peg$currPos, 7) === peg$c10) { | ||
s2 = peg$c10; | ||
if (input.substr(peg$currPos, 7) === peg$c6) { | ||
s2 = peg$c6; | ||
peg$currPos += 7; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c11); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c7); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
if (peg$c12.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c12.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
s3 = peg$parsenode(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 46) { | ||
s4 = peg$c14; | ||
s4 = peg$c8; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c9); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
s5 = peg$parsebasePort(); | ||
if (s5 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 58) { | ||
s6 = peg$c5; | ||
s6 = peg$c3; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = []; | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s8 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s8 !== peg$FAILED) { | ||
while (s8 !== peg$FAILED) { | ||
s7.push(s8); | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s8 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
} else { | ||
s7 = peg$FAILED; | ||
} | ||
s7 = peg$parsebasePort(); | ||
if (s7 !== peg$FAILED) { | ||
@@ -531,3 +426,3 @@ s8 = peg$parse_(); | ||
peg$savedPos = s0; | ||
s1 = peg$c16(s3, s5, s7); | ||
s1 = peg$c10(s3, s5, s7); | ||
s0 = s1; | ||
@@ -574,94 +469,31 @@ } else { | ||
if (s1 !== peg$FAILED) { | ||
if (input.substr(peg$currPos, 8) === peg$c17) { | ||
s2 = peg$c17; | ||
if (input.substr(peg$currPos, 8) === peg$c11) { | ||
s2 = peg$c11; | ||
peg$currPos += 8; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c18); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c12); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
if (peg$c12.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c12.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c13); } | ||
} | ||
} | ||
} else { | ||
s3 = peg$FAILED; | ||
} | ||
s3 = peg$parsenode(); | ||
if (s3 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 46) { | ||
s4 = peg$c14; | ||
s4 = peg$c8; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c9); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
s5 = []; | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
while (s6 !== peg$FAILED) { | ||
s5.push(s6); | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s6 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
} else { | ||
s5 = peg$FAILED; | ||
} | ||
s5 = peg$parsebasePort(); | ||
if (s5 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 58) { | ||
s6 = peg$c5; | ||
s6 = peg$c3; | ||
peg$currPos++; | ||
} else { | ||
s6 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s6 !== peg$FAILED) { | ||
s7 = []; | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s8 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
if (s8 !== peg$FAILED) { | ||
while (s8 !== peg$FAILED) { | ||
s7.push(s8); | ||
if (peg$c7.test(input.charAt(peg$currPos))) { | ||
s8 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s8 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c8); } | ||
} | ||
} | ||
} else { | ||
s7 = peg$FAILED; | ||
} | ||
s7 = peg$parsebasePort(); | ||
if (s7 !== peg$FAILED) { | ||
@@ -676,3 +508,3 @@ s8 = peg$parse_(); | ||
peg$savedPos = s0; | ||
s1 = peg$c19(s3, s5, s7); | ||
s1 = peg$c13(s3, s5, s7); | ||
s0 = s1; | ||
@@ -719,3 +551,3 @@ } else { | ||
if (s1 !== peg$FAILED) { | ||
if (peg$c20.test(input.charAt(peg$currPos))) { | ||
if (peg$c14.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
@@ -725,3 +557,3 @@ peg$currPos++; | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c21); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
@@ -746,3 +578,3 @@ if (s2 === peg$FAILED) { | ||
if (s1 !== peg$FAILED) { | ||
if (peg$c20.test(input.charAt(peg$currPos))) { | ||
if (peg$c14.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
@@ -752,3 +584,3 @@ peg$currPos++; | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c21); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
@@ -780,3 +612,3 @@ if (s2 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c22(s2); | ||
s1 = peg$c16(s2); | ||
s0 = s1; | ||
@@ -815,7 +647,7 @@ } else { | ||
if (input.charCodeAt(peg$currPos) === 44) { | ||
s2 = peg$c23; | ||
s2 = peg$c17; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c24); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c18); } | ||
} | ||
@@ -831,3 +663,3 @@ if (s2 === peg$FAILED) { | ||
if (s3 !== peg$FAILED) { | ||
if (peg$c20.test(input.charAt(peg$currPos))) { | ||
if (peg$c14.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
@@ -837,3 +669,3 @@ peg$currPos++; | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c21); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c15); } | ||
} | ||
@@ -873,7 +705,7 @@ if (s4 === peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 35) { | ||
s2 = peg$c25; | ||
s2 = peg$c19; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c26); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c20); } | ||
} | ||
@@ -910,12 +742,12 @@ if (s2 !== peg$FAILED) { | ||
s0 = peg$currPos; | ||
s1 = peg$parsebridge(); | ||
s1 = peg$parsesource(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
if (input.substr(peg$currPos, 2) === peg$c27) { | ||
s3 = peg$c27; | ||
if (input.substr(peg$currPos, 2) === peg$c21) { | ||
s3 = peg$c21; | ||
peg$currPos += 2; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c28); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c22); } | ||
} | ||
@@ -928,3 +760,3 @@ if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c29(s1, s5); | ||
s1 = peg$c23(s1, s5); | ||
s0 = s1; | ||
@@ -952,2 +784,27 @@ } else { | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsedestination(); | ||
} | ||
return s0; | ||
} | ||
function peg$parsesource() { | ||
var s0; | ||
s0 = peg$parseoutport(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseiip(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsebridge(); | ||
} | ||
} | ||
return s0; | ||
} | ||
function peg$parsedestination() { | ||
var s0; | ||
s0 = peg$parseinport(); | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parsebridge(); | ||
@@ -974,3 +831,3 @@ } | ||
peg$savedPos = s0; | ||
s1 = peg$c30(s1, s3, s5); | ||
s1 = peg$c24(s1, s3, s5); | ||
s0 = s1; | ||
@@ -998,7 +855,106 @@ } else { | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseiip(); | ||
s0 = peg$currPos; | ||
s1 = peg$parseportWithIndex(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenode(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parseport(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c25(s1, s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parserightlet(); | ||
s0 = peg$currPos; | ||
s1 = peg$parseport(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenode(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parseportWithIndex(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c26(s1, s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
if (s0 === peg$FAILED) { | ||
s0 = peg$parseleftlet(); | ||
s0 = peg$currPos; | ||
s1 = peg$parseportWithIndex(); | ||
if (s1 !== peg$FAILED) { | ||
s2 = peg$parse_(); | ||
if (s2 !== peg$FAILED) { | ||
s3 = peg$parsenode(); | ||
if (s3 !== peg$FAILED) { | ||
s4 = peg$parse_(); | ||
if (s4 !== peg$FAILED) { | ||
s5 = peg$parseportWithIndex(); | ||
if (s5 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c27(s1, s3, s5); | ||
s0 = s1; | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s0; | ||
s0 = peg$FAILED; | ||
} | ||
} | ||
@@ -1011,3 +967,3 @@ } | ||
function peg$parseleftlet() { | ||
function peg$parseoutport() { | ||
var s0, s1, s2, s3; | ||
@@ -1023,3 +979,3 @@ | ||
peg$savedPos = s0; | ||
s1 = peg$c31(s1, s3); | ||
s1 = peg$c28(s1, s3); | ||
s0 = s1; | ||
@@ -1047,3 +1003,3 @@ } else { | ||
peg$savedPos = s0; | ||
s1 = peg$c32(s1, s3); | ||
s1 = peg$c29(s1, s3); | ||
s0 = s1; | ||
@@ -1072,7 +1028,7 @@ } else { | ||
if (input.charCodeAt(peg$currPos) === 39) { | ||
s1 = peg$c33; | ||
s1 = peg$c30; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c34); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c31); } | ||
} | ||
@@ -1088,11 +1044,11 @@ if (s1 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 39) { | ||
s3 = peg$c33; | ||
s3 = peg$c30; | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c34); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c31); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c35(s2); | ||
s1 = peg$c32(s2); | ||
s0 = s1; | ||
@@ -1115,3 +1071,3 @@ } else { | ||
function peg$parserightlet() { | ||
function peg$parseinport() { | ||
var s0, s1, s2, s3; | ||
@@ -1127,3 +1083,3 @@ | ||
peg$savedPos = s0; | ||
s1 = peg$c36(s1, s3); | ||
s1 = peg$c33(s1, s3); | ||
s0 = s1; | ||
@@ -1151,3 +1107,3 @@ } else { | ||
peg$savedPos = s0; | ||
s1 = peg$c37(s1, s3); | ||
s1 = peg$c34(s1, s3); | ||
s0 = s1; | ||
@@ -1172,7 +1128,7 @@ } else { | ||
function peg$parsenode() { | ||
var s0, s1, s2; | ||
var s0, s1, s2, s3, s4; | ||
s0 = peg$currPos; | ||
s1 = []; | ||
if (peg$c38.test(input.charAt(peg$currPos))) { | ||
s1 = peg$currPos; | ||
if (peg$c35.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
@@ -1182,16 +1138,32 @@ peg$currPos++; | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c39); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c36); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c38.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
s3 = []; | ||
if (peg$c37.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c37.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c39); } | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c38); } | ||
} | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
@@ -1206,3 +1178,3 @@ } | ||
peg$savedPos = s0; | ||
s1 = peg$c40(s1, s2); | ||
s1 = peg$c39(s1, s2); | ||
s0 = s1; | ||
@@ -1226,11 +1198,11 @@ } else { | ||
if (input.charCodeAt(peg$currPos) === 40) { | ||
s1 = peg$c41; | ||
s1 = peg$c40; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c42); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c41); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = []; | ||
if (peg$c43.test(input.charAt(peg$currPos))) { | ||
if (peg$c42.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
@@ -1240,17 +1212,13 @@ peg$currPos++; | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c43); } | ||
} | ||
if (s3 !== peg$FAILED) { | ||
while (s3 !== peg$FAILED) { | ||
s2.push(s3); | ||
if (peg$c43.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c44); } | ||
} | ||
while (s3 !== peg$FAILED) { | ||
s2.push(s3); | ||
if (peg$c42.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c43); } | ||
} | ||
} else { | ||
s2 = peg$FAILED; | ||
} | ||
@@ -1267,11 +1235,11 @@ if (s2 === peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 41) { | ||
s4 = peg$c45; | ||
s4 = peg$c44; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c46); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c45); } | ||
} | ||
if (s4 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c47(s2, s3); | ||
s1 = peg$c46(s2, s3); | ||
s0 = s1; | ||
@@ -1303,11 +1271,11 @@ } else { | ||
if (input.charCodeAt(peg$currPos) === 58) { | ||
s1 = peg$c5; | ||
s1 = peg$c3; | ||
peg$currPos++; | ||
} else { | ||
s1 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c6); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c4); } | ||
} | ||
if (s1 !== peg$FAILED) { | ||
s2 = []; | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
if (peg$c47.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
@@ -1317,3 +1285,3 @@ peg$currPos++; | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c48); } | ||
} | ||
@@ -1323,3 +1291,3 @@ if (s3 !== peg$FAILED) { | ||
s2.push(s3); | ||
if (peg$c48.test(input.charAt(peg$currPos))) { | ||
if (peg$c47.test(input.charAt(peg$currPos))) { | ||
s3 = input.charAt(peg$currPos); | ||
@@ -1329,3 +1297,3 @@ peg$currPos++; | ||
s3 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c49); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c48); } | ||
} | ||
@@ -1338,3 +1306,3 @@ } | ||
peg$savedPos = s0; | ||
s1 = peg$c50(s2); | ||
s1 = peg$c49(s2); | ||
s0 = s1; | ||
@@ -1357,24 +1325,3 @@ } else { | ||
s0 = peg$currPos; | ||
s1 = []; | ||
if (peg$c51.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c52); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c51.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c52); } | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
s1 = peg$parsebasePort(); | ||
if (s1 !== peg$FAILED) { | ||
@@ -1384,3 +1331,3 @@ s2 = peg$parse__(); | ||
peg$savedPos = s0; | ||
s1 = peg$c53(s1); | ||
s1 = peg$c50(s1); | ||
s0 = s1; | ||
@@ -1403,35 +1350,14 @@ } else { | ||
s0 = peg$currPos; | ||
s1 = []; | ||
if (peg$c51.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c52); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
while (s2 !== peg$FAILED) { | ||
s1.push(s2); | ||
if (peg$c51.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c52); } | ||
} | ||
} | ||
} else { | ||
s1 = peg$FAILED; | ||
} | ||
s1 = peg$parsebasePort(); | ||
if (s1 !== peg$FAILED) { | ||
if (input.charCodeAt(peg$currPos) === 91) { | ||
s2 = peg$c54; | ||
s2 = peg$c51; | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c55); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c52); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
if (peg$c56.test(input.charAt(peg$currPos))) { | ||
if (peg$c53.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
@@ -1441,3 +1367,3 @@ peg$currPos++; | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
} | ||
@@ -1447,3 +1373,3 @@ if (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c56.test(input.charAt(peg$currPos))) { | ||
if (peg$c53.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
@@ -1453,3 +1379,3 @@ peg$currPos++; | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c57); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c54); } | ||
} | ||
@@ -1462,7 +1388,7 @@ } | ||
if (input.charCodeAt(peg$currPos) === 93) { | ||
s4 = peg$c58; | ||
s4 = peg$c55; | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c59); } | ||
if (peg$silentFails === 0) { peg$fail(peg$c56); } | ||
} | ||
@@ -1473,3 +1399,3 @@ if (s4 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c60(s1, s3); | ||
s1 = peg$c57(s1, s3); | ||
s0 = s1; | ||
@@ -1500,2 +1426,53 @@ } else { | ||
function peg$parsebasePort() { | ||
var s0, s1, s2, s3, s4; | ||
s0 = peg$currPos; | ||
s1 = peg$currPos; | ||
if (peg$c35.test(input.charAt(peg$currPos))) { | ||
s2 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s2 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c36); } | ||
} | ||
if (s2 !== peg$FAILED) { | ||
s3 = []; | ||
if (peg$c58.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c59); } | ||
} | ||
while (s4 !== peg$FAILED) { | ||
s3.push(s4); | ||
if (peg$c58.test(input.charAt(peg$currPos))) { | ||
s4 = input.charAt(peg$currPos); | ||
peg$currPos++; | ||
} else { | ||
s4 = peg$FAILED; | ||
if (peg$silentFails === 0) { peg$fail(peg$c59); } | ||
} | ||
} | ||
if (s3 !== peg$FAILED) { | ||
s2 = [s2, s3]; | ||
s1 = s2; | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
} else { | ||
peg$currPos = s1; | ||
s1 = peg$FAILED; | ||
} | ||
if (s1 !== peg$FAILED) { | ||
peg$savedPos = s0; | ||
s1 = peg$c60(s1); | ||
} | ||
s0 = s1; | ||
return s0; | ||
} | ||
function peg$parseanychar() { | ||
@@ -1655,3 +1632,3 @@ var s0; | ||
parser.getResult = function () { | ||
return {processes:nodes, connections:parser.processEdges(), exports:parser.exports, inports: parser.inports, outports: parser.outports}; | ||
return {processes:nodes, connections:parser.processEdges(), exports:parser.exports, inports: parser.inports, outports: parser.outports, caseSensitive: options.caseSensitive}; | ||
} | ||
@@ -1681,3 +1658,9 @@ | ||
} | ||
parser.exports.push({private:priv.toLowerCase(), public:pub.toLowerCase()}) | ||
if (!options.caseSensitive) { | ||
priv = priv.toLowerCase(); | ||
pub = pub.toLowerCase(); | ||
} | ||
parser.exports.push({private:priv, public:pub}); | ||
} | ||
@@ -1688,3 +1671,9 @@ parser.registerInports = function (node, port, pub) { | ||
} | ||
parser.inports[pub.toLowerCase()] = {process:node, port:port.toLowerCase()} | ||
if (!options.caseSensitive) { | ||
pub = pub.toLowerCase(); | ||
port = port.toLowerCase(); | ||
} | ||
parser.inports[pub] = {process:node, port:port}; | ||
} | ||
@@ -1695,3 +1684,9 @@ parser.registerOutports = function (node, port, pub) { | ||
} | ||
parser.outports[pub.toLowerCase()] = {process:node, port:port.toLowerCase()} | ||
if (!options.caseSensitive) { | ||
pub = pub.toLowerCase(); | ||
port = port.toLowerCase(); | ||
} | ||
parser.outports[pub] = {process:node, port:port}; | ||
} | ||
@@ -1722,3 +1717,7 @@ | ||
function makeName(s) { | ||
return s[0] + s[1].join(""); | ||
} | ||
peg$result = peg$startRuleFunction(); | ||
@@ -1725,0 +1724,0 @@ |
{ | ||
"name": "fbp", | ||
"description": "Parser for the .fbp flow definition language", | ||
"version": "1.1.7", | ||
"version": "1.2.0", | ||
"repository": { | ||
@@ -6,0 +6,0 @@ "type": "git", |
@@ -17,7 +17,8 @@ FBP flow definition language parser [![Build Status](https://travis-ci.org/flowbased/fbp.png?branch=master)](https://travis-ci.org/flowbased/fbp) [![Build status](https://ci.appveyor.com/api/projects/status/cye5ylmhfybnb8t9)](https://ci.appveyor.com/project/bergie/fbp) | ||
// Parse into a Graph definition JSON object | ||
var graphDefinition = parser.parse(fbpData); | ||
var graphDefinition = parser.parse(fbpData, {caseSensitive: true}); | ||
``` | ||
After this the graph definition can be loaded into a compatible flow-based runtime environment like NoFlo. | ||
When `caseSensitive` is `false` the parser will convert port names to lowercase. This is currently the default behavior, but in future releases the default will change to preserve case. It is therefore recommended that you always specify the `caseSensitive` option to make your code future-proof. | ||
### Command-line | ||
@@ -27,3 +28,3 @@ | ||
$ fbp somefile.fbp > somefile.json | ||
$ fbp somefile.fbp [--case-sensitive] > somefile.json | ||
@@ -30,0 +31,0 @@ ## Language for Flow-Based Programming |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
84043
97
0
1571