[{"data":1,"prerenderedAt":943},["ShallowReactive",2],{"navigation_docs":3,"-proxy-service-api":133,"-proxy-service-api-surround":940},[4,22,51,62,73,84,99,118],{"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","/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,115],{"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":48,"path":116,"stem":117},"/proxy-service/api","proxy-service/api",{"title":119,"path":120,"stem":121,"children":122,"page":21},"Storage","/storage","storage",[123,126,130],{"title":28,"path":124,"stem":125},"/storage/installation","storage/0.installation",{"title":127,"path":128,"stem":129},"Typescript","/storage/typescript","storage/1.typescript",{"title":48,"path":131,"stem":132},"/storage/api","storage/api",{"id":134,"title":48,"body":135,"description":170,"extension":935,"links":936,"meta":937,"navigation":723,"path":116,"seo":938,"stem":117,"__hash__":939},"docs/proxy-service/api.md",{"type":136,"value":137,"toc":922},"minimark",[138,141,146,158,164,342,349,355,517,520,525,569,573,586,592,645,652,662,666,779,785,836,839,860,866,886,897,903,905,918],[139,140],"hr",{},[142,143,145],"h2",{"id":144},"description","description: \"\"",[147,148,149,150],"alert",{},"See ",[151,152,154],"a",{"href":153},"/proxy-service/installation/",[155,156,157],"code",{},"@webext-core/proxy-service",[142,159,161],{"id":160},"deepasync",[155,162,163],{},"DeepAsync",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type DeepAsync\u003CTService> = TService extends (...args: any) => any\n  ? ToAsyncFunction\u003CTService>\n  : TService extends { [key: string]: any }\n    ? {\n        [fn in keyof TService]: DeepAsync\u003CTService[fn]>;\n      }\n    : never;\n","ts","",[155,172,173,227,243,278,287,324,330],{"__ignoreMap":170},[174,175,178,182,186,190,193,196,199,202,205,208,212,215,218,221,224],"span",{"class":176,"line":177},"line",1,[174,179,181],{"class":180},"spNyl","type",[174,183,185],{"class":184},"sBMFI"," DeepAsync",[174,187,189],{"class":188},"sMK4o","\u003C",[174,191,192],{"class":184},"TService",[174,194,195],{"class":188},">",[174,197,198],{"class":188}," =",[174,200,201],{"class":184}," TService",[174,203,204],{"class":180}," extends",[174,206,207],{"class":188}," (...",[174,209,211],{"class":210},"sHdIc","args",[174,213,214],{"class":188},":",[174,216,217],{"class":184}," any",[174,219,220],{"class":188},")",[174,222,223],{"class":180}," =>",[174,225,226],{"class":184}," any\n",[174,228,230,233,236,238,240],{"class":176,"line":229},2,[174,231,232],{"class":188},"  ?",[174,234,235],{"class":184}," ToAsyncFunction",[174,237,189],{"class":188},[174,239,192],{"class":184},[174,241,242],{"class":188},">\n",[174,244,246,249,251,253,256,260,263,265,268,271,273,275],{"class":176,"line":245},3,[174,247,248],{"class":188},"  :",[174,250,201],{"class":184},[174,252,204],{"class":180},[174,254,255],{"class":188}," {",[174,257,259],{"class":258},"sTEyZ"," [",[174,261,262],{"class":210},"key",[174,264,214],{"class":188},[174,266,267],{"class":184}," string",[174,269,270],{"class":258},"]",[174,272,214],{"class":188},[174,274,217],{"class":184},[174,276,277],{"class":188}," }\n",[174,279,281,284],{"class":176,"line":280},4,[174,282,283],{"class":188},"    ?",[174,285,286],{"class":188}," {\n",[174,288,290,293,296,299,302,304,306,308,310,312,314,317,319,321],{"class":176,"line":289},5,[174,291,292],{"class":258},"        [",[174,294,295],{"class":184},"fn",[174,297,298],{"class":188}," in",[174,300,301],{"class":188}," keyof",[174,303,201],{"class":184},[174,305,270],{"class":258},[174,307,214],{"class":188},[174,309,185],{"class":184},[174,311,189],{"class":188},[174,313,192],{"class":184},[174,315,316],{"class":258},"[",[174,318,295],{"class":184},[174,320,270],{"class":258},[174,322,323],{"class":188},">;\n",[174,325,327],{"class":176,"line":326},6,[174,328,329],{"class":188},"      }\n",[174,331,333,336,339],{"class":176,"line":332},7,[174,334,335],{"class":188},"    :",[174,337,338],{"class":184}," never",[174,340,341],{"class":188},";\n",[343,344,345,346,348],"p",{},"A recursive type that deeply converts all methods in ",[155,347,192],{}," to be async.",[142,350,352],{"id":351},"defineproxyservice",[155,353,354],{},"defineProxyService",[165,356,358],{"className":167,"code":357,"language":169,"meta":170,"style":170},"function defineProxyService\u003CTService extends Service, TArgs extends any[]>(\n  name: string,\n  init: (...args: TArgs) => TService,\n  config?: ProxyServiceConfig,\n): [\n  registerService: (...args: TArgs) => TService,\n  getService: () => ProxyService\u003CTService>,\n] {\n  // ...\n}\n",[155,359,360,394,406,429,442,450,473,495,504,511],{"__ignoreMap":170},[174,361,362,365,369,371,373,375,378,381,384,386,388,391],{"class":176,"line":177},[174,363,364],{"class":180},"function",[174,366,368],{"class":367},"s2Zo4"," defineProxyService",[174,370,189],{"class":188},[174,372,192],{"class":184},[174,374,204],{"class":180},[174,376,377],{"class":184}," Service",[174,379,380],{"class":188},",",[174,382,383],{"class":184}," TArgs",[174,385,204],{"class":180},[174,387,217],{"class":184},[174,389,390],{"class":258},"[]",[174,392,393],{"class":188},">(\n",[174,395,396,399,401,403],{"class":176,"line":229},[174,397,398],{"class":210},"  name",[174,400,214],{"class":188},[174,402,267],{"class":184},[174,404,405],{"class":188},",\n",[174,407,408,411,413,415,417,419,421,423,425,427],{"class":176,"line":245},[174,409,410],{"class":367},"  init",[174,412,214],{"class":188},[174,414,207],{"class":188},[174,416,211],{"class":210},[174,418,214],{"class":188},[174,420,383],{"class":184},[174,422,220],{"class":188},[174,424,223],{"class":180},[174,426,201],{"class":184},[174,428,405],{"class":188},[174,430,431,434,437,440],{"class":176,"line":280},[174,432,433],{"class":210},"  config",[174,435,436],{"class":188},"?:",[174,438,439],{"class":184}," ProxyServiceConfig",[174,441,405],{"class":188},[174,443,444,447],{"class":176,"line":289},[174,445,446],{"class":188},"):",[174,448,449],{"class":258}," [\n",[174,451,452,455,457,459,461,463,465,467,469,471],{"class":176,"line":326},[174,453,454],{"class":184},"  registerService",[174,456,214],{"class":188},[174,458,207],{"class":188},[174,460,211],{"class":210},[174,462,214],{"class":188},[174,464,383],{"class":184},[174,466,220],{"class":188},[174,468,223],{"class":180},[174,470,201],{"class":184},[174,472,405],{"class":188},[174,474,475,478,480,483,485,488,490,492],{"class":176,"line":332},[174,476,477],{"class":184},"  getService",[174,479,214],{"class":188},[174,481,482],{"class":188}," ()",[174,484,223],{"class":180},[174,486,487],{"class":184}," ProxyService",[174,489,189],{"class":188},[174,491,192],{"class":184},[174,493,494],{"class":188},">,\n",[174,496,498,501],{"class":176,"line":497},8,[174,499,500],{"class":258},"] ",[174,502,503],{"class":188},"{\n",[174,505,507],{"class":176,"line":506},9,[174,508,510],{"class":509},"sHwdD","  // ...\n",[174,512,514],{"class":176,"line":513},10,[174,515,516],{"class":188},"}\n",[343,518,519],{},"Utility for creating a service whose functions are executed in the background script regardless\nof the JS context the they are called from.",[521,522,524],"h3",{"id":523},"parameters","Parameters",[526,527,528,544,560],"ul",{},[529,530,531,540,543],"li",{},[532,533,534],"em",{},[535,536,537],"strong",{},[155,538,539],{},"name: string",[541,542],"br",{},"A unique name for the service. Used to identify which service is being executed.",[529,545,546,553,555,556,559],{},[532,547,548],{},[535,549,550],{},[155,551,552],{},"init: (...args: TArgs) => TService",[541,554],{},"A function that returns your real service implementation. If args are listed,\n",[155,557,558],{},"registerService"," will require the same set of arguments.",[529,561,562],{},[532,563,564],{},[535,565,566],{},[155,567,568],{},"config?: ProxyServiceConfig",[521,570,572],{"id":571},"returns","Returns",[526,574,575,580],{},[529,576,577,579],{},[155,578,558],{},": Used to register your service in the background",[529,581,582,585],{},[155,583,584],{},"getService",": Used to get an instance of the service anywhere in the extension.",[142,587,589],{"id":588},"flattenpromise",[155,590,591],{},"flattenPromise",[165,593,595],{"className":167,"code":594,"language":169,"meta":170,"style":170},"function flattenPromise\u003CT>(promise: Promise\u003CT>): DeepAsync\u003CT> {\n  // ...\n}\n",[155,596,597,637,641],{"__ignoreMap":170},[174,598,599,601,604,606,609,612,615,617,620,622,624,627,629,631,633,635],{"class":176,"line":177},[174,600,364],{"class":180},[174,602,603],{"class":367}," flattenPromise",[174,605,189],{"class":188},[174,607,608],{"class":184},"T",[174,610,611],{"class":188},">(",[174,613,614],{"class":210},"promise",[174,616,214],{"class":188},[174,618,619],{"class":184}," Promise",[174,621,189],{"class":188},[174,623,608],{"class":184},[174,625,626],{"class":188},">):",[174,628,185],{"class":184},[174,630,189],{"class":188},[174,632,608],{"class":184},[174,634,195],{"class":188},[174,636,286],{"class":188},[174,638,639],{"class":176,"line":229},[174,640,510],{"class":509},[174,642,643],{"class":176,"line":245},[174,644,516],{"class":188},[343,646,647,648,651],{},"Given a promise of a variable, return a proxy to that awaits the promise internally so you don't\nhave to call ",[155,649,650],{},"await"," twice.",[653,654,655],"blockquote",{},[343,656,657,658,661],{},"This can be used to simplify handling ",[155,659,660],{},"Promise\u003CDependency>"," passed in your services.",[521,663,665],{"id":664},"examples","Examples",[165,667,669],{"className":167,"code":668,"language":169,"meta":170,"style":170},"function createService(dependencyPromise: Promise\u003CSomeDependency>) {\n  const dependency = flattenPromise(dependencyPromise);\n\n  return {\n    doSomething() {\n      await dependency.someAsyncWork();\n      // Instead of `await (await dependencyPromise).someAsyncWork();`\n    }\n  }\n}\n",[155,670,671,698,719,725,733,743,760,765,770,775],{"__ignoreMap":170},[174,672,673,675,678,681,684,686,688,690,693,696],{"class":176,"line":177},[174,674,364],{"class":180},[174,676,677],{"class":367}," createService",[174,679,680],{"class":188},"(",[174,682,683],{"class":210},"dependencyPromise",[174,685,214],{"class":188},[174,687,619],{"class":184},[174,689,189],{"class":188},[174,691,692],{"class":184},"SomeDependency",[174,694,695],{"class":188},">)",[174,697,286],{"class":188},[174,699,700,703,706,708,710,713,715,717],{"class":176,"line":229},[174,701,702],{"class":180},"  const",[174,704,705],{"class":258}," dependency",[174,707,198],{"class":188},[174,709,603],{"class":367},[174,711,680],{"class":712},"swJcz",[174,714,683],{"class":258},[174,716,220],{"class":712},[174,718,341],{"class":188},[174,720,721],{"class":176,"line":245},[174,722,724],{"emptyLinePlaceholder":723},true,"\n",[174,726,727,731],{"class":176,"line":280},[174,728,730],{"class":729},"s7zQu","  return",[174,732,286],{"class":188},[174,734,735,738,741],{"class":176,"line":289},[174,736,737],{"class":712},"    doSomething",[174,739,740],{"class":188},"()",[174,742,286],{"class":188},[174,744,745,748,750,753,756,758],{"class":176,"line":326},[174,746,747],{"class":729},"      await",[174,749,705],{"class":258},[174,751,752],{"class":188},".",[174,754,755],{"class":367},"someAsyncWork",[174,757,740],{"class":712},[174,759,341],{"class":188},[174,761,762],{"class":176,"line":332},[174,763,764],{"class":509},"      // Instead of `await (await dependencyPromise).someAsyncWork();`\n",[174,766,767],{"class":176,"line":497},[174,768,769],{"class":188},"    }\n",[174,771,772],{"class":176,"line":506},[174,773,774],{"class":188},"  }\n",[174,776,777],{"class":176,"line":513},[174,778,516],{"class":188},[142,780,782],{"id":781},"proxyservice",[155,783,784],{},"ProxyService",[165,786,788],{"className":167,"code":787,"language":169,"meta":170,"style":170},"type ProxyService\u003CTService> =\n  TService extends DeepAsync\u003CTService> ? TService : DeepAsync\u003CTService>;\n",[155,789,790,805],{"__ignoreMap":170},[174,791,792,794,796,798,800,802],{"class":176,"line":177},[174,793,181],{"class":180},[174,795,487],{"class":184},[174,797,189],{"class":188},[174,799,192],{"class":184},[174,801,195],{"class":188},[174,803,804],{"class":188}," =\n",[174,806,807,810,812,814,816,818,820,823,825,828,830,832,834],{"class":176,"line":229},[174,808,809],{"class":184},"  TService",[174,811,204],{"class":180},[174,813,185],{"class":184},[174,815,189],{"class":188},[174,817,192],{"class":184},[174,819,195],{"class":188},[174,821,822],{"class":188}," ?",[174,824,201],{"class":184},[174,826,827],{"class":188}," :",[174,829,185],{"class":184},[174,831,189],{"class":188},[174,833,192],{"class":184},[174,835,323],{"class":188},[343,837,838],{},"A type that ensures a service has only async methods.",[526,840,841,849],{},[529,842,843,848],{},[532,844,845],{},[535,846,847],{},"If all methods are async",", it returns the original type.",[529,850,851,856,857,859],{},[532,852,853],{},[535,854,855],{},"If the service has non-async methods",", it returns a ",[155,858,163],{}," of the service.",[142,861,863],{"id":862},"proxyserviceconfig",[155,864,865],{},"ProxyServiceConfig",[165,867,869],{"className":167,"code":868,"language":169,"meta":170,"style":170},"interface ProxyServiceConfig extends ExtensionMessagingConfig {}\n",[155,870,871],{"__ignoreMap":170},[174,872,873,876,878,880,883],{"class":176,"line":177},[174,874,875],{"class":180},"interface",[174,877,439],{"class":184},[174,879,204],{"class":180},[174,881,882],{"class":184}," ExtensionMessagingConfig",[174,884,885],{"class":188}," {}\n",[343,887,888,889,892,893,896],{},"Configure a proxy service's behavior. It uses ",[155,890,891],{},"@webext-core/messaging"," internally, so any\nconfig from ",[155,894,895],{},"ExtensionMessagingConfig"," can be passed as well.",[343,898,899,901],{},[541,900],{},[541,902],{},[139,904],{},[343,906,907],{},[532,908,909,910],{},"API reference generated by ",[151,911,915],{"href":912,"rel":913},"https://github.com/aklinker1/webext-core/blob/main/docs/generate-api-references.ts",[914],"nofollow",[155,916,917],{},"docs/generate-api-references.ts",[919,920,921],"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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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}",{"title":170,"searchDepth":229,"depth":229,"links":923},[924,925,926,930,933,934],{"id":144,"depth":229,"text":145},{"id":160,"depth":229,"text":163},{"id":351,"depth":229,"text":354,"children":927},[928,929],{"id":523,"depth":245,"text":524},{"id":571,"depth":245,"text":572},{"id":588,"depth":229,"text":591,"children":931},[932],{"id":664,"depth":245,"text":665},{"id":781,"depth":229,"text":784},{"id":862,"depth":229,"text":865},"md",null,{},{"title":48,"description":170},"0qBCy586-3uTP0krnVAtSR3mfL-wdc1a2kHzZ0CxDV8",[941,942],{"title":112,"path":113,"stem":114,"description":170,"children":-1},{"title":28,"path":124,"stem":125,"description":170,"children":-1},1779298144665]