[{"data":1,"prerenderedAt":661},["ShallowReactive",2],{"navigation_docs":3,"-messaging-protocol-maps":127,"-messaging-protocol-maps-surround":658},[4,22,51,62,73,84,99,115],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Get Started","/get-started","0.get-started",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","/get-started/introduction","0.get-started/0.introduction",{"title":14,"path":15,"stem":16},"Browser Support","/get-started/browser-support","0.get-started/1.browser-support",{"title":18,"path":19,"stem":20},"Contributing","/get-started/contributing","0.get-started/2.contributing",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Fake Browser","/fake-browser","fake-browser",[27,31,35,39,43,47],{"title":28,"path":29,"stem":30},"Installation","/fake-browser/installation","fake-browser/0.installation",{"title":32,"path":33,"stem":34},"Testing Frameworks","/fake-browser/testing-frameworks","fake-browser/1.testing-frameworks",{"title":36,"path":37,"stem":38},"Triggering Events","/fake-browser/triggering-events","fake-browser/2.triggering-events",{"title":40,"path":41,"stem":42},"Resetting State","/fake-browser/reseting-state","fake-browser/3.reseting-state",{"title":44,"path":45,"stem":46},"Implemented Apis","/fake-browser/implemented-apis","fake-browser/4.implemented-apis",{"title":48,"path":49,"stem":50},"API Reference","/fake-browser/api","fake-browser/api",{"title":52,"path":53,"stem":54,"children":55,"page":21},"Isolated Element","/isolated-element","isolated-element",[56,59],{"title":28,"path":57,"stem":58},"/isolated-element/installation","isolated-element/0.installation",{"title":48,"path":60,"stem":61},"/isolated-element/api","isolated-element/api",{"title":63,"path":64,"stem":65,"children":66,"page":21},"Job Scheduler","/job-scheduler","job-scheduler",[67,70],{"title":28,"path":68,"stem":69},"/job-scheduler/installation","job-scheduler/0.installation",{"title":48,"path":71,"stem":72},"/job-scheduler/api","job-scheduler/api",{"title":74,"path":75,"stem":76,"children":77,"page":21},"Match Patterns","/match-patterns","match-patterns",[78,81],{"title":28,"path":79,"stem":80},"/match-patterns/installation","match-patterns/0.installation",{"title":48,"path":82,"stem":83},"/match-patterns/api","match-patterns/api",{"title":85,"path":86,"stem":87,"children":88,"page":21},"Messaging","/messaging","messaging",[89,92,96],{"title":28,"path":90,"stem":91},"/messaging/installation","messaging/0.installation",{"title":93,"path":94,"stem":95},"Protocol Maps","/messaging/protocol-maps","messaging/1.protocol-maps",{"title":48,"path":97,"stem":98},"/messaging/api","messaging/api",{"title":100,"path":101,"stem":102,"children":103,"page":21},"Proxy Service","/proxy-service","proxy-service",[104,107,111],{"title":28,"path":105,"stem":106},"/proxy-service/installation","proxy-service/0.installation",{"title":108,"path":109,"stem":110},"Defining Services","/proxy-service/defining-services","proxy-service/1.defining-services",{"title":112,"path":113,"stem":114},"Service Keys","/proxy-service/service-keys","proxy-service/2.service-keys",{"title":116,"path":117,"stem":118,"children":119,"page":21},"Storage","/storage","storage",[120,123],{"title":28,"path":121,"stem":122},"/storage/installation","storage/0.installation",{"title":124,"path":125,"stem":126},"Typescript","/storage/typescript","storage/1.typescript",{"id":128,"title":93,"body":129,"description":171,"extension":653,"links":654,"meta":655,"navigation":290,"path":94,"seo":656,"stem":95,"__hash__":657},"docs/messaging/1.protocol-maps.md",{"type":130,"value":131,"toc":647},"minimark",[132,136,141,154,158,165,340,349,509,513,524,556,560,569,596,643],[133,134,135],"alert",{},"Only relevant to TypeScript projects.",[137,138,140],"h2",{"id":139},"overview","Overview",[142,143,144,145,149,150,153],"p",{},"Protocol maps define types for ",[146,147,148],"code",{},"sendMessage"," and ",[146,151,152],{},"onMessage"," in a single place. You'll never need to write type parameters; the data and return types will be inferred automatically!",[137,155,157],{"id":156},"syntax","Syntax",[142,159,160,161,164],{},"Protocol maps are simple interfaces passed into ",[146,162,163],{},"defineExtensionMessaging",". They specify a list of valid message types, as well as each message's data type and return type.",[166,167,172],"pre",{"className":168,"code":169,"language":170,"meta":171,"style":171},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","interface ProtocolMap {\n  message1(): void;                // No data and no return type\n  message2(data: string): void;    // Only data\n  message3(): boolean;             // Only a return type\n  message4(data: string): boolean; // Data and return type\n}\n\nexport const { sendMessage, onMessage } = defineExtensionMessaging\u003CProtocolMap>();\n","ts","",[146,173,174,191,211,240,256,279,285,292],{"__ignoreMap":171},[175,176,179,183,187],"span",{"class":177,"line":178},"line",1,[175,180,182],{"class":181},"spNyl","interface",[175,184,186],{"class":185},"sBMFI"," ProtocolMap",[175,188,190],{"class":189},"sMK4o"," {\n",[175,192,194,198,201,204,207],{"class":177,"line":193},2,[175,195,197],{"class":196},"swJcz","  message1",[175,199,200],{"class":189},"():",[175,202,203],{"class":185}," void",[175,205,206],{"class":189},";",[175,208,210],{"class":209},"sHwdD","                // No data and no return type\n",[175,212,214,217,220,224,227,230,233,235,237],{"class":177,"line":213},3,[175,215,216],{"class":196},"  message2",[175,218,219],{"class":189},"(",[175,221,223],{"class":222},"sHdIc","data",[175,225,226],{"class":189},":",[175,228,229],{"class":185}," string",[175,231,232],{"class":189},"):",[175,234,203],{"class":185},[175,236,206],{"class":189},[175,238,239],{"class":209},"    // Only data\n",[175,241,243,246,248,251,253],{"class":177,"line":242},4,[175,244,245],{"class":196},"  message3",[175,247,200],{"class":189},[175,249,250],{"class":185}," boolean",[175,252,206],{"class":189},[175,254,255],{"class":209},"             // Only a return type\n",[175,257,259,262,264,266,268,270,272,274,276],{"class":177,"line":258},5,[175,260,261],{"class":196},"  message4",[175,263,219],{"class":189},[175,265,223],{"class":222},[175,267,226],{"class":189},[175,269,229],{"class":185},[175,271,232],{"class":189},[175,273,250],{"class":185},[175,275,206],{"class":189},[175,277,278],{"class":209}," // Data and return type\n",[175,280,282],{"class":177,"line":281},6,[175,283,284],{"class":189},"}\n",[175,286,288],{"class":177,"line":287},7,[175,289,291],{"emptyLinePlaceholder":290},true,"\n",[175,293,295,299,302,305,309,312,315,318,321,325,328,331,334,337],{"class":177,"line":294},8,[175,296,298],{"class":297},"s7zQu","export",[175,300,301],{"class":181}," const",[175,303,304],{"class":189}," {",[175,306,308],{"class":307},"sTEyZ"," sendMessage",[175,310,311],{"class":189},",",[175,313,314],{"class":307}," onMessage ",[175,316,317],{"class":189},"}",[175,319,320],{"class":189}," =",[175,322,324],{"class":323},"s2Zo4"," defineExtensionMessaging",[175,326,327],{"class":189},"\u003C",[175,329,330],{"class":185},"ProtocolMap",[175,332,333],{"class":189},">",[175,335,336],{"class":307},"()",[175,338,339],{"class":189},";\n",[142,341,342,343,345,346,348],{},"When calling ",[146,344,148],{}," or ",[146,347,152],{},", all the types will be inferred:",[166,350,352],{"className":168,"code":351,"language":170,"meta":171,"style":171},"onMessage('message2', ({ data /* string */ }) /* : void */ => {});\nonMessage('message3', (message) /* : boolean */ => true);\n\nconst res /* : boolean */ = await sendMessage('message3', undefined);\nconst res /* : boolean */ = await sendMessage('message4', 'text');\n",[146,353,354,403,434,438,472],{"__ignoreMap":171},[175,355,356,358,360,363,367,369,371,374,377,380,383,386,389,392,395,398,401],{"class":177,"line":178},[175,357,152],{"class":323},[175,359,219],{"class":307},[175,361,362],{"class":189},"'",[175,364,366],{"class":365},"sfazB","message2",[175,368,362],{"class":189},[175,370,311],{"class":189},[175,372,373],{"class":307}," (",[175,375,376],{"class":189},"{",[175,378,379],{"class":307}," data ",[175,381,382],{"class":209},"/* string */",[175,384,385],{"class":189}," }",[175,387,388],{"class":307},") ",[175,390,391],{"class":209},"/* : void */",[175,393,394],{"class":181}," =>",[175,396,397],{"class":189}," {}",[175,399,400],{"class":307},")",[175,402,339],{"class":189},[175,404,405,407,409,411,414,416,418,421,424,426,430,432],{"class":177,"line":193},[175,406,152],{"class":323},[175,408,219],{"class":307},[175,410,362],{"class":189},[175,412,413],{"class":365},"message3",[175,415,362],{"class":189},[175,417,311],{"class":189},[175,419,420],{"class":307}," (message) ",[175,422,423],{"class":209},"/* : boolean */",[175,425,394],{"class":181},[175,427,429],{"class":428},"sfNiH"," true",[175,431,400],{"class":307},[175,433,339],{"class":189},[175,435,436],{"class":177,"line":213},[175,437,291],{"emptyLinePlaceholder":290},[175,439,440,443,446,448,450,453,455,457,459,461,463,465,468,470],{"class":177,"line":242},[175,441,442],{"class":181},"const",[175,444,445],{"class":307}," res ",[175,447,423],{"class":209},[175,449,320],{"class":189},[175,451,452],{"class":297}," await",[175,454,308],{"class":323},[175,456,219],{"class":307},[175,458,362],{"class":189},[175,460,413],{"class":365},[175,462,362],{"class":189},[175,464,311],{"class":189},[175,466,467],{"class":189}," undefined",[175,469,400],{"class":307},[175,471,339],{"class":189},[175,473,474,476,478,480,482,484,486,488,490,493,495,497,500,503,505,507],{"class":177,"line":258},[175,475,442],{"class":181},[175,477,445],{"class":307},[175,479,423],{"class":209},[175,481,320],{"class":189},[175,483,452],{"class":297},[175,485,308],{"class":323},[175,487,219],{"class":307},[175,489,362],{"class":189},[175,491,492],{"class":365},"message4",[175,494,362],{"class":189},[175,496,311],{"class":189},[175,498,499],{"class":189}," '",[175,501,502],{"class":365},"text",[175,504,362],{"class":189},[175,506,400],{"class":307},[175,508,339],{"class":189},[137,510,512],{"id":511},"async-messages","Async Messages",[142,514,515,516,519,520,523],{},"All messages are async. In your protocol map, you don't need to make the return type ",[146,517,518],{},"Promise\u003CT>",", ",[146,521,522],{},"T"," will work just fine.",[166,525,529],{"className":526,"code":527,"language":528,"meta":171,"style":171},"language-diff shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","interface ProtocolMap {\n- someMessage(): Promise\u003Cstring>;\n+ someMessage(): string;\n}\n","diff",[146,530,531,536,544,552],{"__ignoreMap":171},[175,532,533],{"class":177,"line":178},[175,534,535],{"class":307},"interface ProtocolMap {\n",[175,537,538,541],{"class":177,"line":193},[175,539,540],{"class":189},"-",[175,542,543],{"class":196}," someMessage(): Promise\u003Cstring>;\n",[175,545,546,549],{"class":177,"line":213},[175,547,548],{"class":189},"+",[175,550,551],{"class":365}," someMessage(): string;\n",[175,553,554],{"class":177,"line":242},[175,555,284],{"class":307},[137,557,559],{"id":558},"multiple-arguments","Multiple Arguments",[142,561,562,563,565,566,568],{},"Protocol map functions should be defined with a single parameter, ",[146,564,223],{},". To pass more than one argument, make the ",[146,567,223],{}," parameter an object instead!",[166,570,572],{"className":526,"code":571,"language":528,"meta":171,"style":171},"interface ProtocolMap {\n- someMessage(arg1: string, arg2: boolean): void;\n+ someMessage(data: { arg1: string; arg2: boolean }): void;\n}\n",[146,573,574,578,585,592],{"__ignoreMap":171},[175,575,576],{"class":177,"line":178},[175,577,535],{"class":307},[175,579,580,582],{"class":177,"line":193},[175,581,540],{"class":189},[175,583,584],{"class":196}," someMessage(arg1: string, arg2: boolean): void;\n",[175,586,587,589],{"class":177,"line":213},[175,588,548],{"class":189},[175,590,591],{"class":365}," someMessage(data: { arg1: string; arg2: boolean }): void;\n",[175,593,594],{"class":177,"line":242},[175,595,284],{"class":307},[166,597,599],{"className":168,"code":598,"language":170,"meta":171,"style":171},"await sendMessage('someMessage', { arg1: ..., arg2: ... });\n",[146,600,601],{"__ignoreMap":171},[175,602,603,606,608,610,612,615,617,619,621,624,626,629,632,634,637,639,641],{"class":177,"line":178},[175,604,605],{"class":297},"await",[175,607,308],{"class":323},[175,609,219],{"class":307},[175,611,362],{"class":189},[175,613,614],{"class":365},"someMessage",[175,616,362],{"class":189},[175,618,311],{"class":189},[175,620,304],{"class":189},[175,622,623],{"class":196}," arg1",[175,625,226],{"class":189},[175,627,628],{"class":189}," ...,",[175,630,631],{"class":196}," arg2",[175,633,226],{"class":189},[175,635,636],{"class":189}," ...",[175,638,385],{"class":189},[175,640,400],{"class":307},[175,642,339],{"class":189},[644,645,646],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":171,"searchDepth":193,"depth":193,"links":648},[649,650,651,652],{"id":139,"depth":193,"text":140},{"id":156,"depth":193,"text":157},{"id":511,"depth":193,"text":512},{"id":558,"depth":193,"text":559},"md",null,{},{"title":93,"description":171},"MDAWUUAKa1OuqfUzJmbXec-q3lepcmySYQPqIf8atwE",[659,660],{"title":28,"path":90,"stem":91,"description":171,"children":-1},{"title":48,"path":97,"stem":98,"description":171,"children":-1},1779312969709]