[{"data":1,"prerenderedAt":1065},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fparsers":116,"\u002Fguides\u002Fparsers-surround":1060},[4,27,53,74,108,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Example app and development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49],{"title":34,"path":35,"stem":36},"JavaScript API","\u002Fguides\u002Fjavascript-api","2.guides\u002F1.javascript-api",{"title":38,"path":39,"stem":40},"AT commands, exchange and CMUX","\u002Fguides\u002Fat-commands","2.guides\u002F2.at-commands",{"title":42,"path":43,"stem":44},"Rust","\u002Fguides\u002Frust","2.guides\u002F3.rust",{"title":46,"path":47,"stem":48},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F4.permissions",{"title":50,"path":51,"stem":52},"Parsers","\u002Fguides\u002Fparsers","2.guides\u002F5.parsers",{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[59,63,67,71],{"title":60,"path":61,"stem":62},"SerialPort","\u002Freference\u002Fserial-port","3.reference\u002F1.serial-port",{"title":64,"path":65,"stem":66},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":68,"path":69,"stem":70},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":46,"path":72,"stem":73},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":75,"icon":76,"path":77,"stem":78,"children":79,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[80,84,88,92,96,100,104],{"title":81,"path":82,"stem":83},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":85,"path":86,"stem":87},"Desktop","\u002Fplatforms\u002Fdesktop","4.platforms\u002F2.desktop",{"title":89,"path":90,"stem":91},"Android (USB)","\u002Fplatforms\u002Fandroid","4.platforms\u002F3.android",{"title":93,"path":94,"stem":95},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F4.ios",{"title":97,"path":98,"stem":99},"Serial over TCP","\u002Fplatforms\u002Ftcp","4.platforms\u002F5.tcp",{"title":101,"path":102,"stem":103},"Bluetooth LE (BLE)","\u002Fplatforms\u002Fble","4.platforms\u002F6.ble",{"title":105,"path":106,"stem":107},"DTR \u002F RTS on open","\u002Fplatforms\u002Fdtr-rts","4.platforms\u002F7.dtr-rts",{"title":109,"path":110,"stem":111},"Migration guide","\u002Fmigration","5.migration",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":50,"body":118,"description":1054,"extension":1055,"generated":26,"links":1056,"meta":1057,"navigation":297,"path":51,"seo":1058,"stem":52,"__hash__":1059},"docs\u002F2.guides\u002F5.parsers.md",{"type":119,"value":120,"toc":1048},"minimark",[121,150,432,443,448,467,770,784,788,905,909,1013,1016,1044],[122,123,124,125,129,130,133,134,137,138,141,142,149],"p",{},"Without a parser, ",[126,127,128],"code",{},"watch()"," delivers bytes in batches (about 20 ms, or ",[126,131,132],{},"size","\nbytes), so a line or packet can be split across ",[126,135,136],{},"onData"," calls or several can\narrive in one. Pass ",[126,139,140],{},"parser"," and the native side frames the stream for you:\n",[143,144,145,146,148],"strong",{},"each complete frame is exactly one ",[126,147,136],{}," call",", sent as soon as it is\ncomplete (the batch window no longer applies).",[151,152,157],"pre",{"className":153,"code":154,"language":155,"meta":156,"style":156},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","await port.watch(\n  { onData: (line) => console.log(\"line:\", line) },\n  { parser: { type: \"readline\", delimiter: \"\\r\\n\" } },\n);\n\n\u002F\u002F Binary packets: keep bytes, one Uint8Array per packet.\nawait port.watch(\n  { onData: (frame) => handle(frame as Uint8Array) },\n  { decode: false, parser: { type: \"startEnd\", startDelimiter: [0x02], endDelimiter: [0x03] } },\n);\n","ts","",[126,158,159,183,237,284,292,299,306,319,355,425],{"__ignoreMap":156},[160,161,164,168,172,176,180],"span",{"class":162,"line":163},"line",1,[160,165,167],{"class":166},"s7zQu","await",[160,169,171],{"class":170},"sTEyZ"," port",[160,173,175],{"class":174},"sMK4o",".",[160,177,179],{"class":178},"s2Zo4","watch",[160,181,182],{"class":170},"(\n",[160,184,186,189,192,195,198,201,204,208,211,213,216,219,222,226,228,231,234],{"class":162,"line":185},2,[160,187,188],{"class":174},"  {",[160,190,191],{"class":178}," onData",[160,193,194],{"class":174},":",[160,196,197],{"class":174}," (",[160,199,162],{"class":200},"sHdIc",[160,202,203],{"class":174},")",[160,205,207],{"class":206},"spNyl"," =>",[160,209,210],{"class":170}," console",[160,212,175],{"class":174},[160,214,215],{"class":178},"log",[160,217,218],{"class":170},"(",[160,220,221],{"class":174},"\"",[160,223,225],{"class":224},"sfazB","line:",[160,227,221],{"class":174},[160,229,230],{"class":174},",",[160,232,233],{"class":170}," line) ",[160,235,236],{"class":174},"},\n",[160,238,240,242,246,248,251,254,256,259,262,264,266,269,271,273,276,278,281],{"class":162,"line":239},3,[160,241,188],{"class":174},[160,243,245],{"class":244},"swJcz"," parser",[160,247,194],{"class":174},[160,249,250],{"class":174}," {",[160,252,253],{"class":244}," type",[160,255,194],{"class":174},[160,257,258],{"class":174}," \"",[160,260,261],{"class":224},"readline",[160,263,221],{"class":174},[160,265,230],{"class":174},[160,267,268],{"class":244}," delimiter",[160,270,194],{"class":174},[160,272,258],{"class":174},[160,274,275],{"class":170},"\\r\\n",[160,277,221],{"class":174},[160,279,280],{"class":174}," }",[160,282,283],{"class":174}," },\n",[160,285,287,289],{"class":162,"line":286},4,[160,288,203],{"class":170},[160,290,291],{"class":174},";\n",[160,293,295],{"class":162,"line":294},5,[160,296,298],{"emptyLinePlaceholder":297},true,"\n",[160,300,302],{"class":162,"line":301},6,[160,303,305],{"class":304},"sHwdD","\u002F\u002F Binary packets: keep bytes, one Uint8Array per packet.\n",[160,307,309,311,313,315,317],{"class":162,"line":308},7,[160,310,167],{"class":166},[160,312,171],{"class":170},[160,314,175],{"class":174},[160,316,179],{"class":178},[160,318,182],{"class":170},[160,320,322,324,326,328,330,333,335,337,340,343,346,350,353],{"class":162,"line":321},8,[160,323,188],{"class":174},[160,325,191],{"class":178},[160,327,194],{"class":174},[160,329,197],{"class":174},[160,331,332],{"class":200},"frame",[160,334,203],{"class":174},[160,336,207],{"class":206},[160,338,339],{"class":178}," handle",[160,341,342],{"class":170},"(frame ",[160,344,345],{"class":166},"as",[160,347,349],{"class":348},"sBMFI"," Uint8Array",[160,351,352],{"class":170},") ",[160,354,236],{"class":174},[160,356,358,360,363,365,369,371,373,375,377,379,381,383,386,388,390,393,395,398,402,405,407,410,412,414,417,420,423],{"class":162,"line":357},9,[160,359,188],{"class":174},[160,361,362],{"class":244}," decode",[160,364,194],{"class":174},[160,366,368],{"class":367},"sfNiH"," false",[160,370,230],{"class":174},[160,372,245],{"class":244},[160,374,194],{"class":174},[160,376,250],{"class":174},[160,378,253],{"class":244},[160,380,194],{"class":174},[160,382,258],{"class":174},[160,384,385],{"class":224},"startEnd",[160,387,221],{"class":174},[160,389,230],{"class":174},[160,391,392],{"class":244}," startDelimiter",[160,394,194],{"class":174},[160,396,397],{"class":170}," [",[160,399,401],{"class":400},"sbssI","0x02",[160,403,404],{"class":170},"]",[160,406,230],{"class":174},[160,408,409],{"class":244}," endDelimiter",[160,411,194],{"class":174},[160,413,397],{"class":170},[160,415,416],{"class":400},"0x03",[160,418,419],{"class":170},"] ",[160,421,422],{"class":174},"}",[160,424,283],{"class":174},[160,426,428,430],{"class":162,"line":427},10,[160,429,203],{"class":170},[160,431,291],{"class":174},[122,433,434,435,438,439,442],{},"The parsers follow the Node.js ",[126,436,437],{},"@serialport\u002Fparser-*"," packages (their test suites\nare ported to Rust in the ",[126,440,441],{},"serial-codec"," crate), so code written for Node\nserialport maps over directly.",[444,445,447],"h2",{"id":446},"parser-types","Parser types",[122,449,450,451,454,455,458,459,462,463,466],{},"Byte sequences (",[126,452,453],{},"ByteSeq",") are a UTF-8 string, a ",[126,456,457],{},"number[]"," or a ",[126,460,461],{},"Uint8Array",".\n",[126,464,465],{},"maxBufferSize"," defaults to 65536 bytes.",[468,469,470,491],"table",{},[471,472,473],"thead",{},[474,475,476,482,485,488],"tr",{},[477,478,479],"th",{},[126,480,481],{},"type",[477,483,484],{},"Node package",[477,486,487],{},"Options",[477,489,490],{},"Frame",[492,493,494,522,545,569,599,636,656,678,708,746],"tbody",{},[474,495,496,502,507,519],{},[497,498,499],"td",{},[126,500,501],{},"delimiter",[497,503,504],{},[126,505,506],{},"parser-delimiter",[497,508,509,512,513,516,517],{},[126,510,511],{},"delimiter: ByteSeq"," (required), ",[126,514,515],{},"includeDelimiter = false",", ",[126,518,465],{},[497,520,521],{},"Bytes up to each delimiter",[474,523,524,528,533,542],{},[497,525,526],{},[126,527,261],{},[497,529,530],{},[126,531,532],{},"parser-readline",[497,534,535,516,538,516,540],{},[126,536,537],{},"delimiter: ByteSeq = \"\\n\"",[126,539,515],{},[126,541,465],{},[497,543,544],{},"One line",[474,546,547,552,557,563],{},[497,548,549],{},[126,550,551],{},"byteLength",[497,553,554],{},[126,555,556],{},"parser-byte-length",[497,558,559,562],{},[126,560,561],{},"length"," (> 0)",[497,564,565,566,568],{},"Exactly ",[126,567,561],{}," bytes",[474,570,571,576,581,593],{},[497,572,573],{},[126,574,575],{},"interByteTimeout",[497,577,578],{},[126,579,580],{},"parser-inter-byte-timeout",[497,582,583,586,587,590,591],{},[126,584,585],{},"intervalMs"," (alias ",[126,588,589],{},"interval",", > 0), ",[126,592,465],{},[497,594,595,596,598],{},"Everything received before ",[126,597,585],{}," of silence",[474,600,601,606,611,633],{},[497,602,603],{},[126,604,605],{},"packetLength",[497,607,608],{},[126,609,610],{},"parser-packet-length",[497,612,613,516,616,619,620,516,623,626,627,516,630],{},[126,614,615],{},"delimiter: number | number[] = 0xaa",[126,617,618],{},"delimiterBytes = 1"," (1–4), ",[126,621,622],{},"packetOverhead = 2",[126,624,625],{},"lengthBytes = 1"," (1–8), ",[126,628,629],{},"lengthOffset = 1",[126,631,632],{},"maxLen = 0xff",[497,634,635],{},"Delimiter + little-endian length field + payload",[474,637,638,643,648,653],{},[497,639,640],{},[126,641,642],{},"ready",[497,644,645],{},[126,646,647],{},"parser-ready",[497,649,650,652],{},[126,651,511],{}," (required)",[497,654,655],{},"Nothing until the marker, then data passes through as it arrives",[474,657,658,663,668,675],{},[497,659,660],{},[126,661,662],{},"regex",[497,664,665],{},[126,666,667],{},"parser-regex",[497,669,670,512,673],{},[126,671,672],{},"regex: string",[126,674,465],{},[497,676,677],{},"UTF-8 text between matches",[474,679,680,684,689,705],{},[497,681,682],{},[126,683,385],{},[497,685,686],{},[126,687,688],{},"parser-start-end",[497,690,691,516,694,512,697,516,700,516,703],{},[126,692,693],{},"startDelimiter",[126,695,696],{},"endDelimiter",[126,698,699],{},"includeStartDelimiter = false",[126,701,702],{},"includeEndDelimiter = false",[126,704,465],{},[497,706,707],{},"Bytes between the markers",[474,709,710,715,723,743],{},[497,711,712],{},[126,713,714],{},"slip",[497,716,717,197,720,203],{},[126,718,719],{},"parser-slip-encoder",[126,721,722],{},"SlipDecoder",[497,724,725,516,728,516,731,516,734,516,737,516,740],{},[126,726,727],{},"start",[126,729,730],{},"esc = 0xdb",[126,732,733],{},"end = 0xc0",[126,735,736],{},"escStart",[126,738,739],{},"escEnd = 0xdc",[126,741,742],{},"escEsc = 0xdd",[497,744,745],{},"One decoded SLIP (RFC 1055) packet",[474,747,748,753,758,764],{},[497,749,750],{},[126,751,752],{},"ccTalk",[497,754,755],{},[126,756,757],{},"parser-cctalk",[497,759,760,763],{},[126,761,762],{},"maxDelayMs = 50"," (0 disables)",[497,765,766,767],{},"One ccTalk message (length in byte 1); a partial message is dropped after ",[126,768,769],{},"maxDelayMs",[122,771,772,773,776,777,779,780,783],{},"An invalid configuration (empty delimiter, ",[126,774,775],{},"length: 0",", a bad regex, …) rejects\n",[126,778,128],{}," with ",[126,781,782],{},"invalid parser options: …"," before the watch starts.",[444,785,787],{"id":786},"behaviour","Behaviour",[789,790,791,810,825,844,873,879,902],"ul",{},[792,793,794,797,798,801,802,805,806,809],"li",{},[143,795,796],{},"Decoding."," With ",[126,799,800],{},"decode: true"," (default) every frame is decoded on its own\nwith the port ",[126,803,804],{},"encoding",", so one frame is always one string. Use ",[126,807,808],{},"decode: false","\nfor binary frames.",[792,811,812,815,816,818,819,821,822,824],{},[143,813,814],{},"Time-based parser."," ",[126,817,575],{}," is driven by the native read loop: a\nframe is emitted when the silence elapses, even if no further bytes arrive.\n",[126,820,752],{}," never emits on time; it drops a stale partial message (older than\n",[126,823,769],{},") when the next byte arrives.",[792,826,827,797,830,833,834,837,838,840,841,843],{},[143,828,829],{},"URC routing.",[126,831,832],{},"routeUrc"," (on by default when ",[126,835,836],{},"onUrc"," is given), AT URC\nlines are split off first and go to ",[126,839,836],{},"; only the remaining lines reach the\nparser. An unterminated line is handed to the parser on the batch timer, the same\nway it reaches ",[126,842,136],{}," without a parser.",[792,845,846,849,850,516,853,856,857,859,860,863,864,866,867,869,870,872],{},[143,847,848],{},"End of stream."," On ",[126,851,852],{},"unwatch()",[126,854,855],{},"close()"," or a disconnect, the parser's buffered\npartial frame (if any) is delivered as a last ",[126,858,136],{}," call, before\n",[126,861,862],{},"onDisconnect",". Node emits it the same way when the stream ends. ",[126,865,642],{}," and\n",[126,868,752],{}," have nothing to flush; ",[126,871,605],{}," flushes only a started packet.",[792,874,875,878],{},[143,876,877],{},"Auto-reconnect"," re-creates the watch with the same parser (and a fresh,\nempty buffer).",[792,880,881,197,884,887,888,890,891,893,894,896,897,899,900,175],{},[143,882,883],{},"CMUX channels",[126,885,886],{},"openMuxChannel()",") take the same ",[126,889,140],{}," option, but a\nchannel watch ignores ",[126,892,832],{}," and ",[126,895,132],{},": URC lines on a channel are not split\noff to ",[126,898,836],{},", and batches are not flushed early at ",[126,901,132],{},[792,903,904],{},"Empty frames are never emitted.",[444,906,908],{"id":907},"differences-from-node-serialport","Differences from Node serialport",[789,910,911,934,956,971,982,1007],{},[792,912,913,916,917,516,919,516,921,516,923,893,925,927,928,930,931,933],{},[143,914,915],{},"Buffers are bounded."," A stream that never completes a frame cannot grow memory\nforever: ",[126,918,501],{},[126,920,261],{},[126,922,662],{},[126,924,575],{},[126,926,714],{}," emit the\nfull buffer as a frame at ",[126,929,465],{},"; ",[126,932,385],{}," drops the overlong open frame\n(keeping a later start marker).",[792,935,936,939,940,942,943,945,946,948,949,952,953,955],{},[143,937,938],{},"Frames are bytes."," Node's ",[126,941,804],{}," option on ",[126,944,261],{}," \u002F ",[126,947,662],{}," only\nchanges how Node renders a frame; here ",[126,950,951],{},"decode"," and the port ",[126,954,804],{}," do that.",[792,957,958,962,963,966,967,970],{},[143,959,960],{},[126,961,642],{}," finds its marker after a false start (",[126,964,965],{},"\"RREADY\""," matches ",[126,968,969],{},"\"READY\"",";\nNode misses it).",[792,972,973,977,978,981],{},[143,974,975],{},[126,976,605],{}," finds a multi-byte delimiter anywhere in the stream (Node only\nfinds it at stream start or right after a packet). At end of stream only a started\npacket is flushed. A packet also ends once it is at least ",[126,979,980],{},"len + packetOverhead","\nlong, so a header longer than that cannot buffer forever.",[792,983,984,988,989,998,999,1002,1003,1006],{},[143,985,986],{},[126,987,662],{}," keeps a UTF-8 character split across reads for the next chunk (Node\nturns it into U+FFFD). The pattern uses Rust\n",[990,991,995],"a",{"href":992,"rel":993},"https:\u002F\u002Fdocs.rs\u002Fregex-lite",[994],"nofollow",[126,996,997],{},"regex-lite"," syntax as a string, not a JavaScript\n",[126,1000,1001],{},"RegExp",", and capture groups are not spliced into the output the way\n",[126,1004,1005],{},"String.split"," does.",[792,1008,1009,1012],{},[143,1010,1011],{},"Timers"," come from the native read loop (about 10 ms granularity) instead of\nJavaScript timers.",[444,1014,42],{"id":1015},"rust",[122,1017,1018,1019,1025,1026,1029,1030,1033,1034,1037,1038,945,1041,175],{},"The same parsers are available without the plugin in the\n",[990,1020,1023],{"href":1021,"rel":1022},"https:\u002F\u002Fdocs.rs\u002Fserial-codec",[994],[126,1024,441],{}," crate (",[126,1027,1028],{},"serial_codec::framing",":\n",[126,1031,1032],{},"FramerConfig::build()"," and the ",[126,1035,1036],{},"Framer"," trait), and from Rust through\n",[126,1039,1040],{},"SerialPort::watch_framed",[126,1042,1043],{},"SerialManager::watch_framed(path, options, Some(config), …)",[1045,1046,1047],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":156,"searchDepth":185,"depth":239,"links":1049},[1050,1051,1052,1053],{"id":446,"depth":185,"text":447},{"id":786,"depth":185,"text":787},{"id":907,"depth":185,"text":908},{"id":1015,"depth":185,"text":42},"Native framing for watch(): one data event per complete frame, Node serialport parser semantics.","md",null,{},{"title":50,"description":1054},"jS2RYJMgyDnbyuirMrxWyaTREaZknb5hqiMSXWlkzDY",[1061,1063],{"title":46,"path":47,"stem":48,"description":1062,"children":-1},"Capability identifiers for the plugin commands.",{"title":60,"path":61,"stem":62,"description":1064,"children":-1},"Every public member of the SerialPort class, generated from guest-js\u002Fserial-port.ts.",1794158001816]