node-red-contrib-buffer-parser
Advanced tools
Comparing version 2.0.0 to 2.0.1
@@ -23,2 +23,3 @@ | ||
"int", "int8", "byte", | ||
"uint", "uint8", | ||
"int16", "int16le", "int16be", "uint16", "uint16le", "uint16be", | ||
@@ -48,3 +49,3 @@ "int32", "int32le", "int32be", "uint32", "uint32le", "uint32be", | ||
node.msgProperty = config.msgProperty || 'payload'; | ||
node.msgPropertyType = config.msgPropertyType || 'msg'; | ||
node.msgPropertyType = config.msgPropertyType || 'str'; | ||
node.resultType = config.resultType || 'value'; | ||
@@ -608,3 +609,3 @@ node.resultTypeType = config.resultTypeType || 'str'; | ||
if(item.length > 1){ | ||
dataBCD = data.map(bcd2number); | ||
dataBCD = data.map(e => bcd2number(e)); | ||
} else { | ||
@@ -717,12 +718,12 @@ dataBCD = bcd2number(data) | ||
}); | ||
var msgProperty; | ||
RED.util.evaluateNodeProperty(node.msgProperty,node.msgPropertyType,node,msg,(err,value) => { | ||
if (err) { | ||
node.error("Unable to evaluate msgProperty",msg); | ||
node.status({fill:"red",shape:"ring",text:"Unable to evaluate msgProperty"}); | ||
return;//halt flow! | ||
} else { | ||
msgProperty = value; | ||
} | ||
}); | ||
var msgProperty = node.msgProperty; | ||
// RED.util.evaluateNodeProperty(node.msgProperty,"str" node.msgPropertyType,node,msg,(err,value) => { | ||
// if (err) { | ||
// node.error("Unable to evaluate msgProperty",msg); | ||
// node.status({fill:"red",shape:"ring",text:"Unable to evaluate msgProperty"}); | ||
// return;//halt flow! | ||
// } else { | ||
// msgProperty = value; | ||
// } | ||
// }); | ||
@@ -729,0 +730,0 @@ var swap = []; |
@@ -1,1 +0,1 @@ | ||
[{"id":"2bfdabb1.c6ae84","type":"inject","z":"39c1c0c0.aab09","name":"Trigger","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":290,"y":260,"wires":[["5c973ee3.c5558"]]},{"id":"2797f0f.a44461","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"16bitbe","name":"3 lots of 16 bits","offset":"0","length":"3","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools offest by 8 bits","offset":"0","length":"32","offsetbit":"8","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"value","resultTypeType":"return","multipleResult":true,"setTopic":true,"x":630,"y":260,"wires":[["f5a35032.fca1e"]]},{"id":"f5a35032.fca1e","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":260,"wires":[]},{"id":"fd13fd42.45b95","type":"comment","z":"39c1c0c0.aab09","name":"Working with bits and bools","info":"","x":330,"y":220,"wires":[]},{"id":"5c973ee3.c5558","type":"function","z":"39c1c0c0.aab09","name":"Array of WORDs","func":"msg.payload = [\n 0xffff,\n 0x000f,\n 0x00f0,\n 0x0f00,\n 0xf000,\n 0x0000,\n 0x0001,\n 0x1111,\n ]\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":260,"wires":[["2797f0f.a44461"]]},{"id":"68d6622e.4cf0ec","type":"inject","z":"39c1c0c0.aab09","name":"a buffer","topic":"","payload":"[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":290,"y":1000,"wires":[["c999f6d6.d94528","27608520.dc60da","13c33bfb.60bbb4","609f31d0.fac4","19c13a4.ede34c6"]]},{"id":"609f31d0.fac4","type":"buffer-parser","z":"39c1c0c0.aab09","name":"swap 16","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":560,"y":920,"wires":[["c195d393.f772d"]]},{"id":"c195d393.f772d","type":"debug","z":"39c1c0c0.aab09","name":"16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":920,"wires":[]},{"id":"dc3000fa.99341","type":"debug","z":"39c1c0c0.aab09","name":"32","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":980,"wires":[]},{"id":"7ef8c8c7.3b31c8","type":"debug","z":"39c1c0c0.aab09","name":"64","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":1040,"wires":[]},{"id":"c999f6d6.d94528","type":"buffer-parser","z":"39c1c0c0.aab09","name":"swap 32","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap32","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":560,"y":980,"wires":[["dc3000fa.99341"]]},{"id":"27608520.dc60da","type":"buffer-parser","z":"39c1c0c0.aab09","name":"swap 64","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap64","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":560,"y":1040,"wires":[["7ef8c8c7.3b31c8"]]},{"id":"13c33bfb.60bbb4","type":"buffer-parser","z":"39c1c0c0.aab09","name":"swap 64 32 16","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap64","swap2":"swap32","swap3":"swap16","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":580,"y":1100,"wires":[["c3a8ffee.530dc"]]},{"id":"c3a8ffee.530dc","type":"debug","z":"39c1c0c0.aab09","name":"64 32 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":800,"y":1100,"wires":[]},{"id":"19c13a4.ede34c6","type":"buffer-parser","z":"39c1c0c0.aab09","name":"none","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":550,"y":860,"wires":[["c113be06.8d52e"]]},{"id":"c113be06.8d52e","type":"debug","z":"39c1c0c0.aab09","name":"none","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":860,"wires":[]},{"id":"f81a8271.3284c","type":"inject","z":"39c1c0c0.aab09","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":300,"y":940,"wires":[["19c13a4.ede34c6","609f31d0.fac4","c999f6d6.d94528","27608520.dc60da","13c33bfb.60bbb4"]]},{"id":"bffabf0e.2744c","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"msg","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"","msgPropertyType":"","resultType":"value","resultTypeType":"return","multipleResult":false,"setTopic":false,"x":790,"y":100,"wires":[["b0b5f1ee.fb28a"]]},{"id":"b0b5f1ee.fb28a","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":160,"wires":[]},{"id":"fba31de9.dd05e","type":"inject","z":"39c1c0c0.aab09","name":"Pass data in as buffer","topic":"","payload":"[97,98,99,100,101,102,103,104,105,106,107,108,109,109,111,112,113,114,115,116,117,118,119,120,121,122]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":100,"wires":[["ae010b66.9f29e8"]]},{"id":"f55cfd7c.9f0c9","type":"function","z":"39c1c0c0.aab09","name":"dynamically set data","func":"msg.payload = [0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6D, 0x6F70, 0x7172, 0x7374, 0x7576, 0x7778, 0x797A]\nreturn msg;","outputs":1,"noerr":0,"x":500,"y":160,"wires":[["ae010b66.9f29e8"]]},{"id":"e87b6dcd.2098c","type":"inject","z":"39c1c0c0.aab09","name":"just a trigger","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":310,"y":160,"wires":[["f55cfd7c.9f0c9"]]},{"id":"ae010b66.9f29e8","type":"function","z":"39c1c0c0.aab09","name":"dynamically set spec","func":"msg.spec = {\n \"options\":\n {\n \"byteSwap\":true,\n \"resultType\":\"object\",\n \"singleResult\": true\n },\n \"items\":[\n {\"name\":\"myInt\",\"type\":\"int\",\"offset\":4},{\"name\":\"uint32s\",\"type\":\"uint32\",\"offset\":0,\"length\":4},{\"name\":\"floats\",\"type\":\"float\",\"offset\":0,\"length\":4},{\"name\":\"doubles\",\"type\":\"double\",\"offset\":0,\"length\":2},{\"name\":\"myString\",\"type\":\"string\",\"offset\":0,\"length\":5}\n ]\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":100,"wires":[["bffabf0e.2744c"]]},{"id":"2049d4cd.46d90c","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"plc1/production/alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"intbe","name":"plc1/production/status/count","offset":"25","length":"1","offsetbit":"0","mask":""},{"type":"bcd","name":"plc1/production/status/sequence","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"int16le","name":"plc1/machine/status/runner/temperature","offset":"26","length":"1","offsetbit":"0","mask":""},{"type":"int16be","name":"plc1/machine/status/runner/speed","offset":"26","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"plc1/machine/status/running","offset":"0","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"plc1/machine/status/warning","offset":"0","length":"1","offsetbit":"1","mask":""},{"type":"bool","name":"plc1/machine/status/fault","offset":"0","length":"1","offsetbit":"2","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"value","resultTypeType":"return","multipleResult":true,"setTopic":true,"x":570,"y":360,"wires":[["48f3078e.2e4b08"]]},{"id":"48f3078e.2e4b08","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":360,"wires":[]},{"id":"61e80a13.43f224","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"intbe","name":"single byte pos 4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bcd","name":"bcd equiv","offset":"4","length":"5","offsetbit":"0","mask":""},{"type":"int16le","name":"Array[6] of int16le","offset":"26","length":"6","offsetbit":"0","mask":""},{"type":"int16be","name":"Array[6] of int16be","offset":"26","length":"6","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"data","msgPropertyType":"","resultType":"object","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":570,"y":440,"wires":[["4253e8d7.4f8fc8"]]},{"id":"4253e8d7.4f8fc8","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"data","targetType":"msg","x":800,"y":440,"wires":[]},{"id":"61711086.3456","type":"inject","z":"39c1c0c0.aab09","name":"Fake PLC data 16bit Array","topic":"","payload":"[25185,25699,26213,26727,27241,27755,28013,28783,29297,29811,30325,30839,31353,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3597]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":350,"y":360,"wires":[["2049d4cd.46d90c"]]},{"id":"abc0ef12.184ca","type":"inject","z":"39c1c0c0.aab09","name":"Fake PLC data 16bit Array","topic":"","payload":"[25185,25699,26213,26727,27241,27755,28013,28783,29297,29811,30325,30839,31353,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3597]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":350,"y":440,"wires":[["61e80a13.43f224"]]},{"id":"2699dbd9.29e894","type":"comment","z":"39c1c0c0.aab09","name":"take a array of 16bit values, byte reverse, split out several values and transmit individual messages with topic + payload","info":"","x":620,"y":320,"wires":[]},{"id":"6d0a15c1.39c53c","type":"comment","z":"39c1c0c0.aab09","name":"take a array of 16bit values, byte reverse, split out several values and transmit one message with named objects in msg.data","info":"","x":640,"y":400,"wires":[]},{"id":"f3943d70.1c193","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"floatbe","name":"float BE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"floatle","name":"float LE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"array","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":570,"y":540,"wires":[["4ce121a5.b1aba"]]},{"id":"4ce121a5.b1aba","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":540,"wires":[]},{"id":"d873e8ce.34e378","type":"inject","z":"39c1c0c0.aab09","name":"Fake PLC data buffer","topic":"","payload":"[98,97,100,99,102,101,104,103,106,105,108,107,110,109,112,111,114,113,116,115,118,117,120,119,122,121]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":540,"wires":[["f3943d70.1c193"]]},{"id":"cd0216b3.542928","type":"comment","z":"39c1c0c0.aab09","name":"take a buffer, byte reverse, split out several values and transmit one message as array of objects in msg.payload","info":"","x":600,"y":500,"wires":[]},{"id":"dd2df590.dad4c8","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"floatbe","name":"float BE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"floatle","name":"float LE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"value","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":570,"y":640,"wires":[["cc1d81b8.98b7f"]]},{"id":"cc1d81b8.98b7f","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":640,"wires":[]},{"id":"d94cc791.202958","type":"inject","z":"39c1c0c0.aab09","name":"Fake PLC data buffer","topic":"","payload":"[98,97,100,99,102,101,104,103,106,105,108,107,110,109,112,111,114,113,116,115,118,117,120,119,122,121]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":340,"y":640,"wires":[["dd2df590.dad4c8"]]},{"id":"2e5c6876.ebed18","type":"comment","z":"39c1c0c0.aab09","name":"take a buffer, split out several values and transmit one message as values in msg.payload","info":"","x":530,"y":600,"wires":[]},{"id":"88ba000.2e0b9","type":"comment","z":"39c1c0c0.aab09","name":"Dynamically set data and spec","info":"","x":340,"y":60,"wires":[]},{"id":"1bfe807b.36cab","type":"inject","z":"39c1c0c0.aab09","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":300,"y":740,"wires":[["aa072773.3a5b68"]]},{"id":"aa072773.3a5b68","type":"buffer-parser","z":"39c1c0c0.aab09","name":"none","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":550,"y":740,"wires":[["180f7954.d4fd97"]]},{"id":"180f7954.d4fd97","type":"debug","z":"39c1c0c0.aab09","name":"buffer","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":740,"wires":[]},{"id":"34fed70e.b8a178","type":"comment","z":"39c1c0c0.aab09","name":"Convert an array of integer to a buffer only","info":"","x":380,"y":700,"wires":[]},{"id":"645ffe91.f82d7","type":"comment","z":"39c1c0c0.aab09","name":"Convert an array or buffer to a buffer, do various swaps (sometimes multiple swaps), output only the buffer","info":"","x":580,"y":820,"wires":[]},{"id":"bdcd5ddb.1aeab","type":"inject","z":"39c1c0c0.aab09","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":320,"y":1240,"wires":[["56dd0da5.08a374"]]},{"id":"3a4115c8.6d73ba","type":"debug","z":"39c1c0c0.aab09","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":810,"y":1240,"wires":[]},{"id":"beb39a72.c06fa8","type":"comment","z":"39c1c0c0.aab09","name":"Dealing with BigInt. NOTE: At the time of writing, node-red debug node cannot handle BigInt.","info":"","x":560,"y":1200,"wires":[]},{"id":"56dd0da5.08a374","type":"buffer-parser","z":"39c1c0c0.aab09","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"bigint64le","name":"bigint64le","offset":"0","length":"1","offsetbit":"0","mask":""},{"type":"bigint64be","name":"bigint64be","offset":"0","length":"1","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"bigValues","msgPropertyType":"","resultType":"object","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":470,"y":1240,"wires":[["a4f72e99.8ea3a"]]},{"id":"a4f72e99.8ea3a","type":"function","z":"39c1c0c0.aab09","name":"Parse BigInts","func":"msg.payload = {\n bigint64le_string : msg.bigValues.bigint64le.value.toString(),\n bigint64le_number : Number(msg.bigValues.bigint64le.value),\n bigint64le_parseInt : parseInt(msg.bigValues.bigint64le.value),\n bigint64be_string : msg.bigValues.bigint64be.value.toString(),\n bigint64be_number : Number(msg.bigValues.bigint64be.value),\n bigint64be_parseInt : parseInt(msg.bigValues.bigint64be.value),\n}\nreturn msg;","outputs":1,"noerr":0,"x":630,"y":1240,"wires":[["3a4115c8.6d73ba","a1d172a8.547fd"]]},{"id":"a1d172a8.547fd","type":"debug","z":"39c1c0c0.aab09","name":"full object (this might throw error)","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":740,"y":1300,"wires":[]}] | ||
[{"id":"1a961982.6e0c66","type":"inject","z":"8b5f79cc.4f9308","name":"Trigger","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":220,"wires":[["429874da.f0bfcc"]]},{"id":"a03288ed.d73cf8","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"16bitbe","name":"3 lots of 16 bits","offset":"0","length":"3","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools offest by 8 bits","offset":"0","length":"32","offsetbit":"8","mask":""}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"str","resultType":"value","resultTypeType":"return","multipleResult":true,"setTopic":true,"x":610,"y":220,"wires":[["af863e2a.965e3"]]},{"id":"af863e2a.965e3","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":220,"wires":[]},{"id":"709dd163.59831","type":"comment","z":"8b5f79cc.4f9308","name":"Working with bits and bools","info":"","x":310,"y":180,"wires":[]},{"id":"429874da.f0bfcc","type":"function","z":"8b5f79cc.4f9308","name":"Array of WORDs","func":"msg.payload = [\n 0xffff,\n 0x000f,\n 0x00f0,\n 0x0f00,\n 0xf000,\n 0x0000,\n 0x0001,\n 0x1111,\n ]\nreturn msg;","outputs":1,"noerr":0,"x":430,"y":220,"wires":[["a03288ed.d73cf8"]]},{"id":"51b464c8.11fc6c","type":"inject","z":"8b5f79cc.4f9308","name":"a buffer","topic":"","payload":"[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":1060,"wires":[["5ff0a2f.c0b505c","19d8cbd0.a50204","768d5cd5.de98e4","517a8685.5bc3a8","24e73864.d37938"]]},{"id":"517a8685.5bc3a8","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"swap 16","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":540,"y":980,"wires":[["d7ed39ae.6fc9f8"]]},{"id":"d7ed39ae.6fc9f8","type":"debug","z":"8b5f79cc.4f9308","name":"16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":980,"wires":[]},{"id":"e9648adf.fd8888","type":"debug","z":"8b5f79cc.4f9308","name":"32","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":1040,"wires":[]},{"id":"fbf8d38a.e7063","type":"debug","z":"8b5f79cc.4f9308","name":"64","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":1100,"wires":[]},{"id":"5ff0a2f.c0b505c","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"swap 32","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap32","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":540,"y":1040,"wires":[["e9648adf.fd8888"]]},{"id":"19d8cbd0.a50204","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"swap 64","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap64","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":540,"y":1100,"wires":[["fbf8d38a.e7063"]]},{"id":"768d5cd5.de98e4","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"swap 64 32 16","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"swap64","swap2":"swap32","swap3":"swap16","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":560,"y":1160,"wires":[["63965e1a.2467"]]},{"id":"63965e1a.2467","type":"debug","z":"8b5f79cc.4f9308","name":"64 32 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":780,"y":1160,"wires":[]},{"id":"24e73864.d37938","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"none","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"booboo.poopoo","msgPropertyType":"","resultType":"buffer","resultTypeType":"return","multipleResult":false,"setTopic":true,"x":530,"y":920,"wires":[["1f005eb1.c33691"]]},{"id":"1f005eb1.c33691","type":"debug","z":"8b5f79cc.4f9308","name":"none","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":920,"wires":[]},{"id":"f06126a.b3cc7d8","type":"inject","z":"8b5f79cc.4f9308","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":280,"y":1000,"wires":[["24e73864.d37938","517a8685.5bc3a8","5ff0a2f.c0b505c","19d8cbd0.a50204","768d5cd5.de98e4"]]},{"id":"78cb82d2.22c08c","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"msg","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"","msgPropertyType":"","resultType":"value","resultTypeType":"output","multipleResult":false,"setTopic":false,"x":770,"y":60,"wires":[["4e362474.a8e83c"]]},{"id":"4e362474.a8e83c","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":120,"wires":[]},{"id":"ec2a43b5.c3d2b","type":"inject","z":"8b5f79cc.4f9308","name":"Pass data in as buffer","topic":"","payload":"[97,98,99,100,101,102,103,104,105,106,107,108,109,109,111,112,113,114,115,116,117,118,119,120,121,122]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":320,"y":60,"wires":[["db40592a.547028"]]},{"id":"2d2fb31f.39dc1c","type":"function","z":"8b5f79cc.4f9308","name":"dynamically set data","func":"msg.payload = [0x6162, 0x6364, 0x6566, 0x6768, 0x696A, 0x6B6C, 0x6D6D, 0x6F70, 0x7172, 0x7374, 0x7576, 0x7778, 0x797A]\nreturn msg;","outputs":1,"noerr":0,"x":480,"y":120,"wires":[["db40592a.547028"]]},{"id":"63781545.9792ac","type":"inject","z":"8b5f79cc.4f9308","name":"just a trigger","topic":"","payload":"true","payloadType":"bool","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":290,"y":120,"wires":[["2d2fb31f.39dc1c"]]},{"id":"db40592a.547028","type":"function","z":"8b5f79cc.4f9308","name":"dynamically set spec","func":"msg.spec = {\n \"options\":\n {\n \"byteSwap\":true,\n \"resultType\":\"object\",\n \"singleResult\": true\n },\n \"items\":[\n {\"name\":\"myInt\",\"type\":\"int\",\"offset\":4},{\"name\":\"uint32s\",\"type\":\"uint32\",\"offset\":0,\"length\":4},{\"name\":\"floats\",\"type\":\"float\",\"offset\":0,\"length\":4},{\"name\":\"doubles\",\"type\":\"double\",\"offset\":0,\"length\":2},{\"name\":\"myString\",\"type\":\"string\",\"offset\":0,\"length\":5}\n ]\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":580,"y":60,"wires":[["78cb82d2.22c08c"]]},{"id":"1b83d748.5c0a29","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"plc1/production/alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"uint8","name":"plc1/production/status/count","offset":"25","length":"1","offsetbit":"0","mask":""},{"type":"uint8","name":"plc1/production/status/sequence","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"int16le","name":"plc1/machine/status/runner/temperature","offset":"26","length":"1","offsetbit":"0","mask":""},{"type":"int16be","name":"plc1/machine/status/runner/speed","offset":"26","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"plc1/machine/status/running","offset":"0","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"plc1/machine/status/warning","offset":"0","length":"1","offsetbit":"1","mask":""},{"type":"bool","name":"plc1/machine/status/fault","offset":"0","length":"1","offsetbit":"2","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"value","resultTypeType":"output","multipleResult":true,"setTopic":true,"x":550,"y":320,"wires":[["58018932.2ccce8"]]},{"id":"58018932.2ccce8","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":320,"wires":[]},{"id":"25ba06cd.4b38ca","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"byte","name":"single byte pos 4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bcdbe","name":"3bcd","offset":"4","length":"5","offsetbit":"0","mask":"0x0FFF"},{"type":"int16le","name":"Array[6] of int16le","offset":"26","length":"6","offsetbit":"0","mask":""},{"type":"int16be","name":"Array[6] of int16be","offset":"26","length":"6","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"data","msgPropertyType":"","resultType":"object","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":550,"y":400,"wires":[["86a325f6.aa8688"]]},{"id":"86a325f6.aa8688","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"data","targetType":"msg","x":780,"y":400,"wires":[]},{"id":"84bede4f.ca9ad","type":"inject","z":"8b5f79cc.4f9308","name":"Fake PLC data 16bit Array","topic":"","payload":"[25185,25699,26213,26727,27241,27755,28013,28783,29297,29811,30325,30839,31353,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3597]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":330,"y":320,"wires":[["1b83d748.5c0a29"]]},{"id":"7b98fcf3.8e73c4","type":"inject","z":"8b5f79cc.4f9308","name":"Fake PLC data 16bit Array","topic":"","payload":"[25185,25699,26213,26727,27241,27755,28013,28783,29297,29811,30325,30839,31353,256,512,768,1024,1280,1536,1792,2048,2304,2560,2816,3072,3597]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":330,"y":400,"wires":[["25ba06cd.4b38ca"]]},{"id":"c7b2a471.623fd8","type":"comment","z":"8b5f79cc.4f9308","name":"take an array of 16bit values, byte reverse, split out several values and transmit individual messages with topic + payload","info":"","x":600,"y":280,"wires":[]},{"id":"e35f44bf.0724e8","type":"comment","z":"8b5f79cc.4f9308","name":"take an array of 16bit values, byte reverse, split out several values and transmit one message with named objects in msg.data","info":"","x":620,"y":360,"wires":[]},{"id":"be080136.0ddf6","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"floatbe","name":"float BE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"floatle","name":"float LE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"array","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":550,"y":500,"wires":[["fd5c5940.190838"]]},{"id":"fd5c5940.190838","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":500,"wires":[]},{"id":"cc51cb1e.3f1428","type":"inject","z":"8b5f79cc.4f9308","name":"Fake PLC data buffer","topic":"","payload":"[98,97,100,99,102,101,104,103,106,105,108,107,110,109,112,111,114,113,116,115,118,117,120,119,122,121]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":320,"y":500,"wires":[["be080136.0ddf6"]]},{"id":"d45509ca.dcb138","type":"comment","z":"8b5f79cc.4f9308","name":"take a buffer, byte reverse, split out several values and transmit one message as array of objects in msg.payload","info":"","x":580,"y":460,"wires":[]},{"id":"63a1e6f7.e6ae38","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"string","name":"alphabet","offset":"0","length":"26","offsetbit":"0","mask":""},{"type":"floatbe","name":"float BE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"floatle","name":"float LE from byte4","offset":"4","length":"1","offsetbit":"0","mask":""},{"type":"bool","name":"32 bools","offset":"0","length":"32","offsetbit":"0","mask":""},{"type":"16bitbe","name":"Array[4] of 16bits","offset":"0","length":"4","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"result","msgPropertyType":"","resultType":"value","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":550,"y":600,"wires":[["c4f314e6.4a4d58"]]},{"id":"c4f314e6.4a4d58","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"result","targetType":"msg","x":790,"y":600,"wires":[]},{"id":"1e66e973.4a2b07","type":"inject","z":"8b5f79cc.4f9308","name":"Fake PLC data buffer","topic":"","payload":"[98,97,100,99,102,101,104,103,106,105,108,107,110,109,112,111,114,113,116,115,118,117,120,119,122,121]","payloadType":"bin","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":320,"y":600,"wires":[["63a1e6f7.e6ae38"]]},{"id":"66eb1379.961c2c","type":"comment","z":"8b5f79cc.4f9308","name":"take a buffer, split out several values and transmit one message as values in msg.result","info":"","x":500,"y":560,"wires":[]},{"id":"712e7a13.d64a04","type":"comment","z":"8b5f79cc.4f9308","name":"Dynamically set data and spec","info":"","x":320,"y":20,"wires":[]},{"id":"a7e43760.9ac7a8","type":"inject","z":"8b5f79cc.4f9308","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":280,"y":800,"wires":[["9b05469c.03bbf8"]]},{"id":"9b05469c.03bbf8","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"buffer","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":550,"y":800,"wires":[["9e69d945.7303f8"]]},{"id":"9e69d945.7303f8","type":"debug","z":"8b5f79cc.4f9308","name":"buffer","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":770,"y":800,"wires":[]},{"id":"fb9ae3fd.f1628","type":"comment","z":"8b5f79cc.4f9308","name":"Convert [258,772,1286,1800,2314,2828,3342,3856] to a buffer only","info":"","x":440,"y":760,"wires":[]},{"id":"bb0683be.3011","type":"comment","z":"8b5f79cc.4f9308","name":"Convert an array or buffer to a buffer, do various swaps (sometimes multiple swaps), output only the buffer","info":"","x":560,"y":880,"wires":[]},{"id":"cf9b6d1e.3ebf","type":"inject","z":"8b5f79cc.4f9308","name":"an array","topic":"","payload":"[258,772,1286,1800,2314,2828,3342,3856]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":300,"y":1300,"wires":[["d6bfcb3c.eedd08"]]},{"id":"6978e83c.6100d8","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":1300,"wires":[]},{"id":"21a5c90f.6a98b6","type":"comment","z":"8b5f79cc.4f9308","name":"Dealing with BigInt. NOTE: At the time of writing, node-red debug node cannot handle BigInt.","info":"","x":540,"y":1260,"wires":[]},{"id":"d6bfcb3c.eedd08","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"bigint64le","name":"bigint64le","offset":"0","length":"1","offsetbit":"0","mask":""},{"type":"bigint64be","name":"bigint64be","offset":"0","length":"1","offsetbit":"0","mask":""}],"swap1":"swap16","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"bigValues","msgPropertyType":"","resultType":"object","resultTypeType":"output","multipleResult":false,"setTopic":true,"x":450,"y":1300,"wires":[["4d237375.24f27c"]]},{"id":"4d237375.24f27c","type":"function","z":"8b5f79cc.4f9308","name":"Parse BigInts","func":"msg.payload = {\n bigint64le_string : msg.bigValues.bigint64le.value.toString(),\n bigint64le_number : Number(msg.bigValues.bigint64le.value),\n bigint64le_parseInt : parseInt(msg.bigValues.bigint64le.value),\n bigint64be_string : msg.bigValues.bigint64be.value.toString(),\n bigint64be_number : Number(msg.bigValues.bigint64be.value),\n bigint64be_parseInt : parseInt(msg.bigValues.bigint64be.value),\n}\nreturn msg;","outputs":1,"noerr":0,"x":610,"y":1300,"wires":[["6978e83c.6100d8","9e4aba0c.0e5478"]]},{"id":"9e4aba0c.0e5478","type":"debug","z":"8b5f79cc.4f9308","name":"full object (this might throw error)","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":720,"y":1360,"wires":[]},{"id":"459c1701.897c58","type":"inject","z":"8b5f79cc.4f9308","name":"Fake PLC data 16bit Array","topic":"1234 4321 9999","payload":"[4660,17185,39321]","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":330,"y":700,"wires":[["b9ebe3b6.8486e"]]},{"id":"b9ebe3b6.8486e","type":"buffer-parser","z":"8b5f79cc.4f9308","name":"","data":"payload","dataType":"msg","specification":"spec","specificationType":"ui","items":[{"type":"bcdbe","name":"bcdle","offset":"0","length":"3","offsetbit":"2","mask":""},{"type":"bcdle","name":"bcdbe","offset":"0","length":"3","offsetbit":"0","mask":""},{"type":"bcdbe","name":"3bcd","offset":"0","length":"3","offsetbit":"0","mask":"0x0FFF"}],"swap1":"","swap2":"","swap3":"","swap1Type":"swap","swap2Type":"swap","swap3Type":"swap","msgProperty":"payload","msgPropertyType":"","resultType":"value","resultTypeType":"output","multipleResult":true,"setTopic":true,"x":550,"y":700,"wires":[["511aab5b.892944"]]},{"id":"511aab5b.892944","type":"debug","z":"8b5f79cc.4f9308","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":790,"y":700,"wires":[]},{"id":"576ed17f.e86d2","type":"comment","z":"8b5f79cc.4f9308","name":"BCD values [4660,17185,39321] (0x1234 0x4321 0x9999) to decimal equivelant (1234 4321 9999)","info":"","x":540,"y":660,"wires":[]}] |
{ | ||
"name": "node-red-contrib-buffer-parser", | ||
"version": "2.0.0", | ||
"version": "2.0.1", | ||
"description": "A dynamic node to convert values in a buffer or integer array into the many different data type(s). Supports Big/Little Endian, BCD, byte swapping and much more", | ||
@@ -12,3 +12,5 @@ "keywords": [ | ||
"BCD", | ||
"endian" | ||
"endian", | ||
"swap", | ||
"byte swap" | ||
], | ||
@@ -15,0 +17,0 @@ "license": "MIT", |
Sorry, the diff of this file is not supported yet
364714
725