[{"data":1,"prerenderedAt":774},["ShallowReactive",2],{"doc:\u002Freverse-proxy\u002Ftraffic\u002Fresilience":3,"surround:\u002Freverse-proxy\u002Ftraffic\u002Fresilience":524,"navigation":535},{"id":4,"title":5,"body":6,"description":516,"extension":517,"meta":518,"navigation":519,"path":520,"seo":521,"stem":522,"__hash__":523},"docs\u002F02.reverse-proxy\u002F04.traffic\u002F03.resilience.md","Circuit breaker i retry",{"type":7,"value":8,"toc":505},"minimark",[9,14,18,29,79,83,139,161,166,204,208,245,249,257,275,296,302,310,314,317,383,478,481,485,491,495,501],[10,11,13],"h2",{"id":12},"circuit-breaker","Circuit breaker",[15,16,17],"p",{},"Każdy backend ma własny circuit breaker z trzema stanami:",[19,20,26],"pre",{"className":21,"code":23,"language":24,"meta":25},[22],"language-text","CLOSED ──(failure_threshold porażek)──▶ OPEN\n   ▲                                      │\n   │                              (open_timeout)\n   │                                      ▼\n   └──(half_open_probes sukcesów)── HALF-OPEN\n","text","",[27,28,23],"code",{"__ignoreMap":25},[30,31,32,45],"table",{},[33,34,35],"thead",{},[36,37,38,42],"tr",{},[39,40,41],"th",{},"Stan",[39,43,44],{},"Zachowanie",[46,47,48,59,69],"tbody",{},[36,49,50,56],{},[51,52,53],"td",{},[27,54,55],{},"closed",[51,57,58],{},"Ruch płynie normalnie; porażki są liczone",[36,60,61,66],{},[51,62,63],{},[27,64,65],{},"open",[51,67,68],{},"Fast-fail — requesty nie idą do backendu, natychmiastowy failover",[36,70,71,76],{},[51,72,73],{},[27,74,75],{},"half-open",[51,77,78],{},"Przepuszczane są probe; sukces zamyka, porażka otwiera z powrotem",[10,80,82],{"id":81},"konfiguracja","Konfiguracja",[19,84,88],{"className":85,"code":86,"language":87,"meta":25,"style":25},"language-yaml shiki shiki-themes github-light github-dark","circuit_breaker:\n  failure_threshold: 5\n  open_timeout: 30s\n  half_open_probes: 1\n","yaml",[27,89,90,103,116,128],{"__ignoreMap":25},[91,92,95,99],"span",{"class":93,"line":94},"line",1,[91,96,98],{"class":97},"s9eBZ","circuit_breaker",[91,100,102],{"class":101},"sVt8B",":\n",[91,104,106,109,112],{"class":93,"line":105},2,[91,107,108],{"class":97},"  failure_threshold",[91,110,111],{"class":101},": ",[91,113,115],{"class":114},"sj4cs","5\n",[91,117,119,122,124],{"class":93,"line":118},3,[91,120,121],{"class":97},"  open_timeout",[91,123,111],{"class":101},[91,125,127],{"class":126},"sZZnC","30s\n",[91,129,131,134,136],{"class":93,"line":130},4,[91,132,133],{"class":97},"  half_open_probes",[91,135,111],{"class":101},[91,137,138],{"class":114},"1\n",[140,141,142,149,155],"ul",{},[143,144,145,148],"li",{},[27,146,147],{},"failure_threshold"," — ile porażek otwiera breaker (domyślnie 5),",[143,150,151,154],{},[27,152,153],{},"open_timeout"," — jak długo breaker zostaje open przed próbą (domyślnie 30s),",[143,156,157,160],{},[27,158,159],{},"half_open_probes"," — ile sukcesów probe zamyka breaker (domyślnie 1).",[162,163,165],"h3",{"id":164},"przykład-tolerantny-breaker-dla-chwiejnego-backendu","Przykład: tolerantny breaker dla chwiejnego backendu",[19,167,169],{"className":85,"code":168,"language":87,"meta":25,"style":25},"circuit_breaker:\n  failure_threshold: 10\n  open_timeout: 15s\n  half_open_probes: 3\n",[27,170,171,177,186,195],{"__ignoreMap":25},[91,172,173,175],{"class":93,"line":94},[91,174,98],{"class":97},[91,176,102],{"class":101},[91,178,179,181,183],{"class":93,"line":105},[91,180,108],{"class":97},[91,182,111],{"class":101},[91,184,185],{"class":114},"10\n",[91,187,188,190,192],{"class":93,"line":118},[91,189,121],{"class":97},[91,191,111],{"class":101},[91,193,194],{"class":126},"15s\n",[91,196,197,199,201],{"class":93,"line":130},[91,198,133],{"class":97},[91,200,111],{"class":101},[91,202,203],{"class":114},"3\n",[162,205,207],{"id":206},"przykład-szybki-failover-dla-krytycznej-ścieżki","Przykład: szybki failover dla krytycznej ścieżki",[19,209,211],{"className":85,"code":210,"language":87,"meta":25,"style":25},"circuit_breaker:\n  failure_threshold: 3\n  open_timeout: 60s\n  half_open_probes: 2\n",[27,212,213,219,227,236],{"__ignoreMap":25},[91,214,215,217],{"class":93,"line":94},[91,216,98],{"class":97},[91,218,102],{"class":101},[91,220,221,223,225],{"class":93,"line":105},[91,222,108],{"class":97},[91,224,111],{"class":101},[91,226,203],{"class":114},[91,228,229,231,233],{"class":93,"line":118},[91,230,121],{"class":97},[91,232,111],{"class":101},[91,234,235],{"class":126},"60s\n",[91,237,238,240,242],{"class":93,"line":130},[91,239,133],{"class":97},[91,241,111],{"class":101},[91,243,244],{"class":114},"2\n",[10,246,248],{"id":247},"retry-policy","Retry policy",[15,250,251,252,256],{},"Ponowienia są ",[253,254,255],"strong",{},"bezpieczne z założenia",":",[140,258,259,266,272],{},[143,260,261,262,265],{},"tylko requesty ",[253,263,264],{},"idempotentne"," (GET, HEAD, OPTIONS, PUT, DELETE),",[143,267,261,268,271],{},[253,269,270],{},"bez body"," — uploady nigdy nie są duplikowane,",[143,273,274],{},"łączna liczba prób 1–10 (domyślnie 2).",[19,276,278],{"className":85,"code":277,"language":87,"meta":25,"style":25},"retry:\n  max_attempts: 3\n",[27,279,280,287],{"__ignoreMap":25},[91,281,282,285],{"class":93,"line":94},[91,283,284],{"class":97},"retry",[91,286,102],{"class":101},[91,288,289,292,294],{"class":93,"line":105},[91,290,291],{"class":97},"  max_attempts",[91,293,111],{"class":101},[91,295,203],{"class":114},[19,297,300],{"className":298,"code":299,"language":24,"meta":25},[22],"request GET \u002Fapi\u002Fusers\n  → backend A: timeout\n  → retry #1 → backend B: 200 OK\n",[27,301,299],{"__ignoreMap":25},[303,304,307],"callout",{"title":305,"type":306},"Dlaczego nie POST?","warning",[15,308,309],{},"Ponowienie POST mogłoby utworzyć zasób dwa razy. Proxy świadomie nie ponawia requestów z body — jeśli potrzebujesz retry dla zapisów, rób to po stronie klienta z kluczem idempotencji.",[10,311,313],{"id":312},"koperty-błędów","Koperty błędów",[15,315,316],{},"Każdy błąd gatewaya ma spójną strukturę JSON z request ID:",[19,318,322],{"className":319,"code":320,"language":321,"meta":25,"style":25},"language-json shiki shiki-themes github-light github-dark","{\n  \"error\": {\n    \"code\": \"bad_gateway\",\n    \"message\": \"upstream request failed\"\n  },\n  \"request_id\": \"9f2c1a77b3e4d5a6\"\n}\n","json",[27,323,324,329,337,350,360,366,377],{"__ignoreMap":25},[91,325,326],{"class":93,"line":94},[91,327,328],{"class":101},"{\n",[91,330,331,334],{"class":93,"line":105},[91,332,333],{"class":114},"  \"error\"",[91,335,336],{"class":101},": {\n",[91,338,339,342,344,347],{"class":93,"line":118},[91,340,341],{"class":114},"    \"code\"",[91,343,111],{"class":101},[91,345,346],{"class":126},"\"bad_gateway\"",[91,348,349],{"class":101},",\n",[91,351,352,355,357],{"class":93,"line":130},[91,353,354],{"class":114},"    \"message\"",[91,356,111],{"class":101},[91,358,359],{"class":126},"\"upstream request failed\"\n",[91,361,363],{"class":93,"line":362},5,[91,364,365],{"class":101},"  },\n",[91,367,369,372,374],{"class":93,"line":368},6,[91,370,371],{"class":114},"  \"request_id\"",[91,373,111],{"class":101},[91,375,376],{"class":126},"\"9f2c1a77b3e4d5a6\"\n",[91,378,380],{"class":93,"line":379},7,[91,381,382],{"class":101},"}\n",[30,384,385,398],{},[33,386,387],{},[36,388,389,392,395],{},[39,390,391],{},"Kod",[39,393,394],{},"HTTP",[39,396,397],{},"Kiedy",[46,399,400,413,426,439,452,465],{},[36,401,402,407,410],{},[51,403,404],{},[27,405,406],{},"rate_limit_exceeded",[51,408,409],{},"429",[51,411,412],{},"Klient przekroczył limit",[36,414,415,420,423],{},[51,416,417],{},[27,418,419],{},"unauthorized",[51,421,422],{},"401",[51,424,425],{},"Zły\u002Fbrak tokenu admina",[36,427,428,433,436],{},[51,429,430],{},[27,431,432],{},"invalid_backend_index",[51,434,435],{},"400",[51,437,438],{},"Zły indeks w Admin API",[36,440,441,446,449],{},[51,442,443],{},[27,444,445],{},"bad_gateway",[51,447,448],{},"502",[51,450,451],{},"Upstream nieosiągalny lub odrzucił",[36,453,454,459,462],{},[51,455,456],{},[27,457,458],{},"service_unavailable",[51,460,461],{},"503",[51,463,464],{},"Brak zdrowego\u002Fdostępnego backendu",[36,466,467,472,475],{},[51,468,469],{},[27,470,471],{},"gateway_timeout",[51,473,474],{},"504",[51,476,477],{},"Upstream przekroczył timeout",[15,479,480],{},"Request ID trafia też do logów i metryk — jeden identyfikator łączy klienta, log i dashboard.",[10,482,484],{"id":483},"metryki-breakera","Metryki breakera",[19,486,489],{"className":487,"code":488,"language":24,"meta":25},[22],"backend_circuit_breaker_open{backend=\"http:\u002F\u002Flocalhost:8081\"} 1\nproxy_retries_total 7\nbackend_errors_total{backend=\"http:\u002F\u002Flocalhost:8081\"} 23\n",[27,490,488],{"__ignoreMap":25},[10,492,494],{"id":493},"przykład-pełna-ścieżka-odporności","Przykład: pełna ścieżka odporności",[19,496,499],{"className":497,"code":498,"language":24,"meta":25},[22],"1. Request → rate limiter OK\n2. Picker → backend A (healthy, closed)\n3. Backend A: connection refused\n4. Retry #1 → backend B: 200 OK\n5. Backend A: failure_count = 1\n   ... po 5 porażkach ...\n6. Backend A: breaker OPEN → fast-fail\n7. Po 30s: HALF-OPEN → probe\n8. Probe OK → CLOSED → backend A wraca\n",[27,500,498],{"__ignoreMap":25},[502,503,504],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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":25,"searchDepth":118,"depth":118,"links":506},[507,508,512,513,514,515],{"id":12,"depth":105,"text":13},{"id":81,"depth":105,"text":82,"children":509},[510,511],{"id":164,"depth":118,"text":165},{"id":206,"depth":118,"text":207},{"id":247,"depth":105,"text":248},{"id":312,"depth":105,"text":313},{"id":483,"depth":105,"text":484},{"id":493,"depth":105,"text":494},"Maszyna stanów closed → open → half-open, fast-fail, bezpieczna polityka ponowień i koperty błędów z request ID.","md",{},true,"\u002Freverse-proxy\u002Ftraffic\u002Fresilience",{"title":5,"description":516},"02.reverse-proxy\u002F04.traffic\u002F03.resilience","ztWg3o7-ElZL0PFx02g5SSsfmYO84RBLxBGrKL78XTs",[525,530],{"title":526,"path":527,"stem":528,"description":529,"children":-1},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks","Aktywne sondowanie backendów z progami healthy\u002Funhealthy, timeoutami i natychmiastowym failoverem. Konfiguracja i metryki.",{"title":531,"path":532,"stem":533,"description":534,"children":-1},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting","Token bucket per IP z bounded memory, rozproszony limiting przez Redis (atomowy Lua) i fail-open. Konfiguracja i trusted proxies.",[536,655,707],{"title":537,"path":538,"stem":539,"children":540},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[541,543,547,550,554,580,609,622,643,647,651],{"title":542,"path":538,"stem":539},"Przegląd",{"title":544,"path":545,"stem":546},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":82,"path":548,"stem":549},"\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":551,"path":552,"stem":553},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":555,"path":556,"stem":557,"children":558,"page":579},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[559,563,567,571,575],{"title":560,"path":561,"stem":562},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":564,"path":565,"stem":566},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":568,"path":569,"stem":570},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":572,"path":573,"stem":574},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":576,"path":577,"stem":578},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":581,"path":582,"stem":583,"children":584,"page":579},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[585,589,593,597,601,605],{"title":586,"path":587,"stem":588},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":590,"path":591,"stem":592},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":594,"path":595,"stem":596},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":598,"path":599,"stem":600},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":602,"path":603,"stem":604},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":606,"path":607,"stem":608},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":610,"path":611,"stem":612,"children":613,"page":579},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[614,618],{"title":615,"path":616,"stem":617},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":619,"path":620,"stem":621},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":623,"path":624,"stem":625,"children":626,"page":579},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[627,631,635,639],{"title":628,"path":629,"stem":630},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":632,"path":633,"stem":634},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":636,"path":637,"stem":638},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":640,"path":641,"stem":642},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":644,"path":645,"stem":646},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":648,"path":649,"stem":650},"Przykłady","\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":652,"path":653,"stem":654},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":656,"path":657,"stem":658,"children":659},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[660,661,664,667,679],{"title":542,"path":657,"stem":658},{"title":544,"path":662,"stem":663},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":82,"path":665,"stem":666},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":668,"path":669,"stem":670,"children":671,"page":579},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[672,676,677,678],{"title":673,"path":674,"stem":675},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing",{"title":526,"path":527,"stem":528},{"title":5,"path":520,"stem":522},{"title":531,"path":532,"stem":533},{"title":680,"path":681,"stem":682,"children":683,"page":579},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[684,688,692,696,699,703],{"title":685,"path":686,"stem":687},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":689,"path":690,"stem":691},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":693,"path":694,"stem":695},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":644,"path":697,"stem":698},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":700,"path":701,"stem":702},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":704,"path":705,"stem":706},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":708,"path":709,"stem":710,"children":711},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[712,713,716,737,750,770],{"title":542,"path":709,"stem":710},{"title":544,"path":714,"stem":715},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":717,"path":718,"stem":719,"children":720,"page":579},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[721,725,729,733],{"title":722,"path":723,"stem":724},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":726,"path":727,"stem":728},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":730,"path":731,"stem":732},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":734,"path":735,"stem":736},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":738,"path":739,"stem":740,"children":741,"page":579},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[742,746],{"title":743,"path":744,"stem":745},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":747,"path":748,"stem":749},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":751,"path":752,"stem":753,"children":754,"page":579},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[755,758,762,766],{"title":551,"path":756,"stem":757},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":759,"path":760,"stem":761},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":763,"path":764,"stem":765},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":767,"path":768,"stem":769},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":771,"path":772,"stem":773},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986308438]