1 line
14 KiB
JSON

[{"data":1,"prerenderedAt":571},["ShallowReactive",2],{"navigation_docs":3,"-client-addons-store":145,"-client-addons-store-surround":566},[4,27,41,93],{"title":5,"path":6,"stem":7,"children":8,"icon":26},"Getting Started","\u002Fgetting-started","1.getting-started\u002F0.index",[9,10,14,18,22],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Framework Architecture","\u002Fgetting-started\u002Farchitecture","1.getting-started\u002F1.architecture",{"title":15,"path":16,"stem":17},"Module Reference","\u002Fgetting-started\u002Fmodule-reference","1.getting-started\u002F2.module-reference",{"title":19,"path":20,"stem":21},"Development Guide","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F3.development",{"title":23,"path":24,"stem":25},"SurrealDB Setup","\u002Fgetting-started\u002Fsurrealdb-setup","1.getting-started\u002F4.surrealdb-setup","i-lucide-rocket",{"title":28,"path":29,"stem":30,"children":31},"Forge Server Extension","\u002Fserver-extension","2.server-extension\u002F0.index",[32,33,37],{"title":28,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Forge Server API Reference","\u002Fserver-extension\u002Fapi-reference","2.server-extension\u002F1.api-reference",{"title":38,"path":39,"stem":40},"Forge Server Usage Examples","\u002Fserver-extension\u002Fusage-examples","2.server-extension\u002F2.usage-examples",{"title":42,"path":43,"stem":44,"children":45,"icon":92},"Server Modules","\u002Fserver-modules","3.server-modules\u002F0.index",[46,48,52,56,60,64,68,72,76,80,84,88],{"title":47,"path":43,"stem":44},"Server Module Guides",{"title":49,"path":50,"stem":51},"Actor Usage Guide","\u002Fserver-modules\u002Factor","3.server-modules\u002F1.actor",{"title":53,"path":54,"stem":55},"Store Usage Guide","\u002Fserver-modules\u002Fstore","3.server-modules\u002F10.store",{"title":57,"path":58,"stem":59},"Task Usage Guide","\u002Fserver-modules\u002Ftask","3.server-modules\u002F11.task",{"title":61,"path":62,"stem":63},"Bank Usage Guide","\u002Fserver-modules\u002Fbank","3.server-modules\u002F2.bank",{"title":65,"path":66,"stem":67},"CAD Usage Guide","\u002Fserver-modules\u002Fcad","3.server-modules\u002F3.cad",{"title":69,"path":70,"stem":71},"Economy Usage Guide","\u002Fserver-modules\u002Feconomy","3.server-modules\u002F4.economy",{"title":73,"path":74,"stem":75},"Garage Usage Guide","\u002Fserver-modules\u002Fgarage","3.server-modules\u002F5.garage",{"title":77,"path":78,"stem":79},"Locker Usage Guide","\u002Fserver-modules\u002Flocker","3.server-modules\u002F6.locker",{"title":81,"path":82,"stem":83},"Organization Usage Guide","\u002Fserver-modules\u002Forganization","3.server-modules\u002F7.organization",{"title":85,"path":86,"stem":87},"Owned Storage Usage Guide","\u002Fserver-modules\u002Fowned-storage","3.server-modules\u002F8.owned-storage",{"title":89,"path":90,"stem":91},"Phone Usage Guide","\u002Fserver-modules\u002Fphone","3.server-modules\u002F9.phone","i-lucide-layers-3",{"title":94,"path":95,"stem":96,"children":97,"icon":144},"Client Addons","\u002Fclient-addons","4.client-addons\u002F0.index",[98,100,104,108,112,116,120,124,128,132,136,140],{"title":99,"path":95,"stem":96},"Client Usage Guide",{"title":101,"path":102,"stem":103},"Client Main Usage Guide","\u002Fclient-addons\u002Fmain","4.client-addons\u002F1.main",{"title":105,"path":106,"stem":107},"Client Phone Usage Guide","\u002Fclient-addons\u002Fphone","4.client-addons\u002F10.phone",{"title":109,"path":110,"stem":111},"Client Store Usage Guide","\u002Fclient-addons\u002Fstore","4.client-addons\u002F11.store",{"title":113,"path":114,"stem":115},"Client Common Usage Guide","\u002Fclient-addons\u002Fcommon","4.client-addons\u002F2.common",{"title":117,"path":118,"stem":119},"Client Actor Usage Guide","\u002Fclient-addons\u002Factor","4.client-addons\u002F3.actor",{"title":121,"path":122,"stem":123},"Client Bank Usage Guide","\u002Fclient-addons\u002Fbank","4.client-addons\u002F4.bank",{"title":125,"path":126,"stem":127},"Client CAD Usage Guide","\u002Fclient-addons\u002Fcad","4.client-addons\u002F5.cad",{"title":129,"path":130,"stem":131},"Client Garage Usage Guide","\u002Fclient-addons\u002Fgarage","4.client-addons\u002F6.garage",{"title":133,"path":134,"stem":135},"Client Locker Usage Guide","\u002Fclient-addons\u002Flocker","4.client-addons\u002F7.locker",{"title":137,"path":138,"stem":139},"Client Notifications Usage Guide","\u002Fclient-addons\u002Fnotifications","4.client-addons\u002F8.notifications",{"title":141,"path":142,"stem":143},"Client Organization Usage Guide","\u002Fclient-addons\u002Forganization","4.client-addons\u002F9.organization","i-lucide-monitor-smartphone",{"id":146,"title":109,"body":147,"description":157,"extension":560,"links":561,"meta":562,"navigation":563,"path":110,"seo":564,"stem":111,"__hash__":565},"docs\u002F4.client-addons\u002F11.store.md",{"type":148,"value":149,"toc":550},"minimark",[150,154,158,163,180,195,199,205,230,241,245,305,309,382,386,389,434,437,441,444,506,509,512,516,519,523,546],[151,152,109],"h1",{"id":153},"client-store-usage-guide",[155,156,157],"p",{},"The client store addon provides the storefront browser UI for catalog browsing,\ncategory hydration, payment source display, cart handling, and checkout\nrequests.",[159,160,162],"h2",{"id":161},"open-store-ui","Open Store UI",[164,165,170],"pre",{"className":166,"code":167,"language":168,"meta":169,"style":169},"language-sqf shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","call forge_client_store_fnc_openUI;\n","sqf","",[171,172,173],"code",{"__ignoreMap":169},[174,175,178],"span",{"class":176,"line":177},"line",1,[174,179,167],{},[155,181,182,183,186,187,190,191,194],{},"The UI opens ",[171,184,185],{},"RscStore",", loads ",[171,188,189],{},"ui\u002F_site\u002Findex.html",", and routes browser alerts\nthrough ",[171,192,193],{},"forge_client_store_fnc_handleUIEvents",".",[159,196,198],{"id":197},"bridge","Bridge",[155,200,201,204],{},[171,202,203],{},"forge_client_store_fnc_initUIBridge"," owns:",[206,207,208,212,215,218,221,224,227],"ul",{},[209,210,211],"li",{},"browser control lookup",[209,213,214],{},"store hydrate requests",[209,216,217],{},"category requests",[209,219,220],{},"checkout requests",[209,222,223],{},"category hydrate\u002Ffailure responses",[209,225,226],{},"checkout success\u002Ffailure responses",[209,228,229],{},"store config refresh after successful checkout",[155,231,232,233,236,237,240],{},"Store currently uses its own ",[171,234,235],{},"StoreUIBridge.receive(...)"," browser bridge rather\nthan the shared ",[171,238,239],{},"ForgeBridge.receive(...)"," delivery used by newer bridges.",[159,242,244],{"id":243},"browser-events","Browser Events",[246,247,248,261],"table",{},[249,250,251],"thead",{},[252,253,254,258],"tr",{},[255,256,257],"th",{},"Event",[255,259,260],{},"Client behavior",[262,263,264,275,285,295],"tbody",{},[252,265,266,272],{},[267,268,269],"td",{},[171,270,271],{},"store::ready",[267,273,274],{},"Request store hydrate from the server.",[252,276,277,282],{},[267,278,279],{},[171,280,281],{},"store::category::request",[267,283,284],{},"Request catalog items for a category.",[252,286,287,292],{},[267,288,289],{},[171,290,291],{},"store::checkout::request",[267,293,294],{},"Forward checkout JSON to the server.",[252,296,297,302],{},[267,298,299],{},[171,300,301],{},"store::close",[267,303,304],{},"Close the display.",[159,306,308],{"id":307},"browser-response-events","Browser Response Events",[246,310,311,320],{},[249,312,313],{},[252,314,315,317],{},[255,316,257],{},[255,318,319],{},"Purpose",[262,321,322,332,342,352,362,372],{},[252,323,324,329],{},[267,325,326],{},[171,327,328],{},"store::hydrate",[267,330,331],{},"Initial storefront\u002Fsession\u002Fconfig payload.",[252,333,334,339],{},[267,335,336],{},[171,337,338],{},"store::config::hydrate",[267,340,341],{},"Refreshed payment\u002Fsource config.",[252,343,344,349],{},[267,345,346],{},[171,347,348],{},"store::category::hydrate",[267,350,351],{},"Category catalog payload.",[252,353,354,359],{},[267,355,356],{},[171,357,358],{},"store::category::failure",[267,360,361],{},"Category request failure.",[252,363,364,369],{},[267,365,366],{},[171,367,368],{},"store::checkout::success",[267,370,371],{},"Checkout success payload.",[252,373,374,379],{},[267,375,376],{},[171,377,378],{},"store::checkout::failure",[267,380,381],{},"Checkout failure payload.",[159,383,385],{"id":384},"category-requests","Category Requests",[155,387,388],{},"Category requests require a non-empty category value.",[164,390,394],{"className":391,"code":392,"language":393,"meta":169,"style":169},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n \"category\": \"weapons\"\n}\n","json",[171,395,396,402,428],{"__ignoreMap":169},[174,397,398],{"class":176,"line":177},[174,399,401],{"class":400},"sMK4o","{\n",[174,403,405,408,412,415,418,421,425],{"class":176,"line":404},2,[174,406,407],{"class":400}," \"",[174,409,411],{"class":410},"spNyl","category",[174,413,414],{"class":400},"\"",[174,416,417],{"class":400},":",[174,419,420],{"class":400}," \"",[174,422,424],{"class":423},"sfazB","weapons",[174,426,427],{"class":400},"\"\n",[174,429,431],{"class":176,"line":430},3,[174,432,433],{"class":400},"}\n",[155,435,436],{},"The client lowercases the category before forwarding it to the server store\naddon.",[159,438,440],{"id":439},"checkout-requests","Checkout Requests",[155,442,443],{},"Checkout requests send a serialized checkout payload:",[164,445,447],{"className":391,"code":446,"language":393,"meta":169,"style":169},"{\n \"checkoutJson\": \"{\\\"items\\\":[],\\\"paymentSource\\\":\\\"cash\\\"}\"\n}\n",[171,448,449,453,502],{"__ignoreMap":169},[174,450,451],{"class":176,"line":177},[174,452,401],{"class":400},[174,454,455,457,460,462,464,466,469,473,476,478,481,483,486,488,490,492,495,497,500],{"class":176,"line":404},[174,456,407],{"class":400},[174,458,459],{"class":410},"checkoutJson",[174,461,414],{"class":400},[174,463,417],{"class":400},[174,465,420],{"class":400},[174,467,468],{"class":423},"{",[174,470,472],{"class":471},"sTEyZ","\\\"",[174,474,475],{"class":423},"items",[174,477,472],{"class":471},[174,479,480],{"class":423},":[],",[174,482,472],{"class":471},[174,484,485],{"class":423},"paymentSource",[174,487,472],{"class":471},[174,489,417],{"class":423},[174,491,472],{"class":471},[174,493,494],{"class":423},"cash",[174,496,472],{"class":471},[174,498,499],{"class":423},"}",[174,501,427],{"class":400},[174,503,504],{"class":176,"line":430},[174,505,433],{"class":400},[155,507,508],{},"The client only forwards the checkout data. The server store addon and\nextension validate prices, inventory grants, payment source authorization, and\nintegration with bank, organization, locker, and garage state.",[155,510,511],{},"After a successful checkout, the client asks the server for a fresh store config\npayload so payment-source balances and permissions stay current.",[159,513,515],{"id":514},"authoritative-state","Authoritative State",[155,517,518],{},"Catalog data, prices, checkout validation, money movement, organization funds,\ncredit lines, locker grants, garage grants, and persistence are server-owned.",[159,520,522],{"id":521},"related-guides","Related Guides",[206,524,525,530,534,538,542],{},[209,526,527],{},[528,529,53],"a",{"href":54},[209,531,532],{},[528,533,121],{"href":122},[209,535,536],{},[528,537,141],{"href":142},[209,539,540],{},[528,541,133],{"href":134},[209,543,544],{},[528,545,129],{"href":130},[547,548,549],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":169,"searchDepth":404,"depth":404,"links":551},[552,553,554,555,556,557,558,559],{"id":161,"depth":404,"text":162},{"id":197,"depth":404,"text":198},{"id":243,"depth":404,"text":244},{"id":307,"depth":404,"text":308},{"id":384,"depth":404,"text":385},{"id":439,"depth":404,"text":440},{"id":514,"depth":404,"text":515},{"id":521,"depth":404,"text":522},"md",null,{},true,{"title":109,"description":157},"_8o4h6aY-FR4MYNv4DJEbZDm0AHB3KRAnI2hPi2cCII",[567,569],{"title":105,"path":106,"stem":107,"description":568,"children":-1},"The client phone addon provides the in-game phone UI for contacts, SMS\nmessages, email, and local utility apps such as notes, calendar events, world\nclocks, and alarms.",{"title":113,"path":114,"stem":115,"description":570,"children":-1},"The client common addon contains shared browser UI bridge declarations and\ncommon client-side browser integration patterns.",1776806627742]