[{"data":1,"prerenderedAt":1047},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fv1\u002Fclient\u002Fconfiguration":121,"\u002Fdocs\u002Fv1\u002Fclient\u002Fconfiguration-surround":1042},[4],{"title":5,"path":6,"stem":7,"children":8,"page":44},"Docs","\u002Fdocs","docs",[9],{"title":10,"path":11,"stem":12,"children":13,"page":44},"V1","\u002Fdocs\u002Fv1","docs\u002Fv1",[14,18,22,45,58,80,93,111],{"title":15,"path":16,"stem":17},"Introduction","\u002Fdocs\u002Fv1\u002Fintroduction","docs\u002Fv1\u002F0.introduction",{"title":19,"path":20,"stem":21},"How It Works","\u002Fdocs\u002Fv1\u002Fhow-it-works","docs\u002Fv1\u002F1.how-it-works",{"title":23,"icon":24,"path":25,"stem":26,"children":27,"page":44},"Client","i-lucide-laptop","\u002Fdocs\u002Fv1\u002Fclient","docs\u002Fv1\u002F2.client",[28,32,36,40],{"title":29,"path":30,"stem":31},"Client Setup","\u002Fdocs\u002Fv1\u002Fclient\u002Fsetup","docs\u002Fv1\u002F2.client\u002F1.setup",{"title":33,"path":34,"stem":35},"Syncing","\u002Fdocs\u002Fv1\u002Fclient\u002Fsyncing","docs\u002Fv1\u002F2.client\u002F2.syncing",{"title":37,"path":38,"stem":39},"Events","\u002Fdocs\u002Fv1\u002Fclient\u002Fevents","docs\u002Fv1\u002F2.client\u002F3.events",{"title":41,"path":42,"stem":43},"Configuration","\u002Fdocs\u002Fv1\u002Fclient\u002Fconfiguration","docs\u002Fv1\u002F2.client\u002F4.configuration",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"Server","i-lucide-server","\u002Fdocs\u002Fv1\u002Fserver","docs\u002Fv1\u002F3.server",[51,55],{"title":52,"path":53,"stem":54},"Server Setup","\u002Fdocs\u002Fv1\u002Fserver\u002Fsetup","docs\u002Fv1\u002F3.server\u002F1.setup",{"title":41,"path":56,"stem":57},"\u002Fdocs\u002Fv1\u002Fserver\u002Fconfiguration","docs\u002Fv1\u002F3.server\u002F2.configuration",{"title":59,"icon":60,"badge":61,"path":62,"stem":63,"children":64,"page":44},"NativePHP","i-lucide-smartphone","Commercial","\u002Fdocs\u002Fv1\u002Fnativephp","docs\u002Fv1\u002F4.nativephp",[65,69,73,76],{"title":66,"path":67,"stem":68},"Overview","\u002Fdocs\u002Fv1\u002Fnativephp\u002Foverview","docs\u002Fv1\u002F4.nativephp\u002F1.overview",{"title":70,"path":71,"stem":72},"Setup","\u002Fdocs\u002Fv1\u002Fnativephp\u002Fsetup","docs\u002Fv1\u002F4.nativephp\u002F2.setup",{"title":41,"path":74,"stem":75},"\u002Fdocs\u002Fv1\u002Fnativephp\u002Fconfiguration","docs\u002Fv1\u002F4.nativephp\u002F3.configuration",{"title":77,"path":78,"stem":79},"Lifecycle & Events","\u002Fdocs\u002Fv1\u002Fnativephp\u002Flifecycle","docs\u002Fv1\u002F4.nativephp\u002F4.lifecycle",{"title":81,"icon":82,"badge":61,"path":83,"stem":84,"children":85,"page":44},"Server Pro","i-lucide-bar-chart-2","\u002Fdocs\u002Fv1\u002Fserver-pro","docs\u002Fv1\u002F5.server-pro",[86,89],{"title":66,"path":87,"stem":88},"\u002Fdocs\u002Fv1\u002Fserver-pro\u002Foverview","docs\u002Fv1\u002F5.server-pro\u002F1.overview",{"title":90,"path":91,"stem":92},"Features","\u002Fdocs\u002Fv1\u002Fserver-pro\u002Ffeatures","docs\u002Fv1\u002F5.server-pro\u002F2.features",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":44},"Advanced","i-lucide-settings-2","\u002Fdocs\u002Fv1\u002Fadvanced","docs\u002Fv1\u002F6.advanced",[99,103,107],{"title":100,"path":101,"stem":102},"Service Container","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fservice-container","docs\u002Fv1\u002F6.advanced\u002F0.service-container",{"title":104,"path":105,"stem":106},"Conflict Resolution","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fconflict-resolution","docs\u002Fv1\u002F6.advanced\u002F1.conflict-resolution",{"title":108,"path":109,"stem":110},"Payload Mapping","\u002Fdocs\u002Fv1\u002Fadvanced\u002Fpayload-mapping","docs\u002Fv1\u002F6.advanced\u002F2.payload-mapping",{"title":112,"icon":113,"path":114,"stem":115,"children":116,"page":44},"Examples","i-lucide-book-open","\u002Fdocs\u002Fv1\u002Fexamples","docs\u002Fv1\u002F7.examples",[117],{"title":118,"path":119,"stem":120},"Task Manager","\u002Fdocs\u002Fv1\u002Fexamples\u002Ftask-manager","docs\u002Fv1\u002F7.examples\u002F1.task-manager",{"id":122,"title":41,"body":123,"description":1034,"extension":1035,"links":1036,"meta":1037,"navigation":1038,"path":42,"seo":1039,"stem":43,"__hash__":1041},"docs\u002Fdocs\u002Fv1\u002F2.client\u002F4.configuration.md",{"type":124,"value":125,"toc":1017},"minimark",[126,130,133,162,169,172,178,217,232,234,239,277,280,282,287,324,335,337,342,386,396,398,403,487,490,492,497,529,534,536,541,559,562,575,577,582,613,627,629,634,664,676,678,683,727,740,742,747,777,783,785,790,823,826,828,833,866,880,882,887,918,927,949,951,956,988,1013],[127,128,129],"p",{},"Configure how your Laravel offline sync client stores mutation logs, identifies itself to the server, connects to sync endpoints, runs queue-based sync, batches pushes, retries failures, and tracks pull cursors.",[127,131,132],{},"Publish the config file with:",[134,135,140],"pre",{"className":136,"code":137,"language":138,"meta":139,"style":139},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan vendor:publish --tag=tether-client-config\n","bash","",[141,142,143],"code",{"__ignoreMap":139},[144,145,148,152,156,159],"span",{"class":146,"line":147},"line",1,[144,149,151],{"class":150},"sBMFI","php",[144,153,155],{"class":154},"sfazB"," artisan",[144,157,158],{"class":154}," vendor:publish",[144,160,161],{"class":154}," --tag=tether-client-config\n",[127,163,164,165,168],{},"This creates ",[141,166,167],{},"config\u002Ftether-client.php"," in your application.",[170,171],"hr",{},[173,174,176],"h3",{"id":175},"connection",[141,177,175],{},[134,179,182],{"className":180,"code":181,"language":151,"meta":139,"style":139},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","'connection' => env('TETHER_DB_CONNECTION', null),\n",[141,183,184],{"__ignoreMap":139},[144,185,186,190,192,194,197,201,204,206,209,211,214],{"class":146,"line":147},[144,187,189],{"class":188},"sMK4o","'",[144,191,175],{"class":154},[144,193,189],{"class":188},[144,195,196],{"class":188}," =>",[144,198,200],{"class":199},"s2Zo4"," env",[144,202,203],{"class":188},"(",[144,205,189],{"class":188},[144,207,208],{"class":154},"TETHER_DB_CONNECTION",[144,210,189],{"class":188},[144,212,213],{"class":188},",",[144,215,216],{"class":188}," null),\n",[127,218,219,220,223,224,227,228,231],{},"The database connection used for ",[141,221,222],{},"tether_mutation_logs"," and ",[141,225,226],{},"tether_sync_state",". ",[141,229,230],{},"null"," uses the application default.",[170,233],{},[173,235,237],{"id":236},"table",[141,238,236],{},[134,240,242],{"className":180,"code":241,"language":151,"meta":139,"style":139},"'table' => env('TETHER_TABLE', 'tether_mutation_logs'),\n",[141,243,244],{"__ignoreMap":139},[144,245,246,248,250,252,254,256,258,260,263,265,267,270,272,274],{"class":146,"line":147},[144,247,189],{"class":188},[144,249,236],{"class":154},[144,251,189],{"class":188},[144,253,196],{"class":188},[144,255,200],{"class":199},[144,257,203],{"class":188},[144,259,189],{"class":188},[144,261,262],{"class":154},"TETHER_TABLE",[144,264,189],{"class":188},[144,266,213],{"class":188},[144,268,269],{"class":188}," '",[144,271,222],{"class":154},[144,273,189],{"class":188},[144,275,276],{"class":188},"),\n",[127,278,279],{},"The table name for the local mutation log.",[170,281],{},[173,283,285],{"id":284},"sync_key",[141,286,284],{},[134,288,290],{"className":180,"code":289,"language":151,"meta":139,"style":139},"'sync_key' => env('TETHER_SYNC_KEY', 'tether_id'),\n",[141,291,292],{"__ignoreMap":139},[144,293,294,296,298,300,302,304,306,308,311,313,315,317,320,322],{"class":146,"line":147},[144,295,189],{"class":188},[144,297,284],{"class":154},[144,299,189],{"class":188},[144,301,196],{"class":188},[144,303,200],{"class":199},[144,305,203],{"class":188},[144,307,189],{"class":188},[144,309,310],{"class":154},"TETHER_SYNC_KEY",[144,312,189],{"class":188},[144,314,213],{"class":188},[144,316,269],{"class":188},[144,318,319],{"class":154},"tether_id",[144,321,189],{"class":188},[144,323,276],{"class":188},[127,325,326,327,330,331,334],{},"The default sync identity column on ",[141,328,329],{},"Syncable"," models. It must match the server's sync key. Override per model with ",[141,332,333],{},"protected string $tetherKeyName = 'custom_column'",".",[170,336],{},[173,338,340],{"id":339},"model_namespace",[141,341,339],{},[134,343,345],{"className":180,"code":344,"language":151,"meta":139,"style":139},"'model_namespace' => env('TETHER_MODEL_NAMESPACE', 'App\\\\Models'),\n",[141,346,347],{"__ignoreMap":139},[144,348,349,351,353,355,357,359,361,363,366,368,370,372,375,379,382,384],{"class":146,"line":147},[144,350,189],{"class":188},[144,352,339],{"class":154},[144,354,189],{"class":188},[144,356,196],{"class":188},[144,358,200],{"class":199},[144,360,203],{"class":188},[144,362,189],{"class":188},[144,364,365],{"class":154},"TETHER_MODEL_NAMESPACE",[144,367,189],{"class":188},[144,369,213],{"class":188},[144,371,269],{"class":188},[144,373,374],{"class":154},"App",[144,376,378],{"class":377},"sTEyZ","\\\\",[144,380,381],{"class":154},"Models",[144,383,189],{"class":188},[144,385,276],{"class":188},[127,387,388,389,392,393,334],{},"The namespace used when resolving model classes from incoming server pull snapshots. A snapshot with ",[141,390,391],{},"model: \"Task\""," resolves to ",[141,394,395],{},"App\\Models\\Task",[170,397],{},[173,399,401],{"id":400},"server_routes",[141,402,400],{},[134,404,406],{"className":180,"code":405,"language":151,"meta":139,"style":139},"'server_routes' => [\n    'push' => env('TETHER_SERVER_PUSH_URL', ''),\n    'pull' => env('TETHER_SERVER_PULL_URL', ''),\n],\n",[141,407,408,421,452,481],{"__ignoreMap":139},[144,409,410,412,414,416,418],{"class":146,"line":147},[144,411,189],{"class":188},[144,413,400],{"class":154},[144,415,189],{"class":188},[144,417,196],{"class":188},[144,419,420],{"class":188}," [\n",[144,422,424,427,430,432,434,436,438,440,443,445,447,450],{"class":146,"line":423},2,[144,425,426],{"class":188},"    '",[144,428,429],{"class":154},"push",[144,431,189],{"class":188},[144,433,196],{"class":188},[144,435,200],{"class":199},[144,437,203],{"class":188},[144,439,189],{"class":188},[144,441,442],{"class":154},"TETHER_SERVER_PUSH_URL",[144,444,189],{"class":188},[144,446,213],{"class":188},[144,448,449],{"class":188}," ''",[144,451,276],{"class":188},[144,453,455,457,460,462,464,466,468,470,473,475,477,479],{"class":146,"line":454},3,[144,456,426],{"class":188},[144,458,459],{"class":154},"pull",[144,461,189],{"class":188},[144,463,196],{"class":188},[144,465,200],{"class":199},[144,467,203],{"class":188},[144,469,189],{"class":188},[144,471,472],{"class":154},"TETHER_SERVER_PULL_URL",[144,474,189],{"class":188},[144,476,213],{"class":188},[144,478,449],{"class":188},[144,480,276],{"class":188},[144,482,484],{"class":146,"line":483},4,[144,485,486],{"class":188},"],\n",[127,488,489],{},"Full URLs for the server sync endpoints. Push and pull can point to different hosts.",[170,491],{},[173,493,495],{"id":494},"client_id",[141,496,494],{},[134,498,500],{"className":180,"code":499,"language":151,"meta":139,"style":139},"'client_id' => env('TETHER_CLIENT_ID', ''),\n",[141,501,502],{"__ignoreMap":139},[144,503,504,506,508,510,512,514,516,518,521,523,525,527],{"class":146,"line":147},[144,505,189],{"class":188},[144,507,494],{"class":154},[144,509,189],{"class":188},[144,511,196],{"class":188},[144,513,200],{"class":199},[144,515,203],{"class":188},[144,517,189],{"class":188},[144,519,520],{"class":154},"TETHER_CLIENT_ID",[144,522,189],{"class":188},[144,524,213],{"class":188},[144,526,449],{"class":188},[144,528,276],{"class":188},[127,530,531,532,334],{},"A fixed client identifier sent with every sync request. If empty and no resolver is registered, Tether auto-generates a ULID and persists it in ",[141,533,226],{},[170,535],{},[173,537,539],{"id":538},"client_id_resolver",[141,540,538],{},[134,542,544],{"className":180,"code":543,"language":151,"meta":139,"style":139},"'client_id_resolver' => null,\n",[141,545,546],{"__ignoreMap":139},[144,547,548,550,552,554,556],{"class":146,"line":147},[144,549,189],{"class":188},[144,551,538],{"class":154},[144,553,189],{"class":188},[144,555,196],{"class":188},[144,557,558],{"class":188}," null,\n",[127,560,561],{},"An invokable class that returns the client ID at runtime. Config-cache safe alternative to closures.",[127,563,564,565,568,569,571,572,574],{},"Resolution order: callable via ",[141,566,567],{},"resolveClientIdUsing()"," -> ",[141,570,538],{}," class -> ",[141,573,494],{}," env -> auto-generated ULID.",[170,576],{},[173,578,580],{"id":579},"auto_sync",[141,581,579],{},[134,583,585],{"className":180,"code":584,"language":151,"meta":139,"style":139},"'auto_sync' => env('TETHER_AUTO_SYNC', false),\n",[141,586,587],{"__ignoreMap":139},[144,588,589,591,593,595,597,599,601,603,606,608,610],{"class":146,"line":147},[144,590,189],{"class":188},[144,592,579],{"class":154},[144,594,189],{"class":188},[144,596,196],{"class":188},[144,598,200],{"class":199},[144,600,203],{"class":188},[144,602,189],{"class":188},[144,604,605],{"class":154},"TETHER_AUTO_SYNC",[144,607,189],{"class":188},[144,609,213],{"class":188},[144,611,612],{"class":188}," false),\n",[127,614,615,616,619,620,623,624,626],{},"When ",[141,617,618],{},"true",", a push-only ",[141,621,622],{},"PushJob"," is dispatched after every ",[141,625,329],{}," model write. Requires a running queue worker.",[170,628],{},[173,630,632],{"id":631},"auto_sync_queue",[141,633,631],{},[134,635,637],{"className":180,"code":636,"language":151,"meta":139,"style":139},"'auto_sync_queue' => env('TETHER_AUTO_SYNC_QUEUE', null),\n",[141,638,639],{"__ignoreMap":139},[144,640,641,643,645,647,649,651,653,655,658,660,662],{"class":146,"line":147},[144,642,189],{"class":188},[144,644,631],{"class":154},[144,646,189],{"class":188},[144,648,196],{"class":188},[144,650,200],{"class":199},[144,652,203],{"class":188},[144,654,189],{"class":188},[144,656,657],{"class":154},"TETHER_AUTO_SYNC_QUEUE",[144,659,189],{"class":188},[144,661,213],{"class":188},[144,663,216],{"class":188},[127,665,666,667,669,670,672,673,675],{},"The queue name for ",[141,668,622],{}," when ",[141,671,579],{}," is enabled. ",[141,674,230],{}," uses the application's default queue.",[170,677],{},[173,679,681],{"id":680},"auto_sync_throttle",[141,682,680],{},[134,684,686],{"className":180,"code":685,"language":151,"meta":139,"style":139},"'auto_sync_throttle' => (int) env('TETHER_AUTO_SYNC_THROTTLE', 0),\n",[141,687,688],{"__ignoreMap":139},[144,689,690,692,694,696,698,701,705,708,710,712,714,717,719,721,725],{"class":146,"line":147},[144,691,189],{"class":188},[144,693,680],{"class":154},[144,695,189],{"class":188},[144,697,196],{"class":188},[144,699,700],{"class":188}," (",[144,702,704],{"class":703},"spNyl","int",[144,706,707],{"class":188},")",[144,709,200],{"class":199},[144,711,203],{"class":188},[144,713,189],{"class":188},[144,715,716],{"class":154},"TETHER_AUTO_SYNC_THROTTLE",[144,718,189],{"class":188},[144,720,213],{"class":188},[144,722,724],{"class":723},"sbssI"," 0",[144,726,276],{"class":188},[127,728,729,730,733,734,736,737,739],{},"When greater than ",[141,731,732],{},"0",", ",[141,735,622],{}," uses Laravel's unique-job lock to coalesce rapid mutation-triggered push jobs (aka \"throttle\") for this many seconds. ",[141,738,732],{}," disables deduplication.",[170,741],{},[173,743,745],{"id":744},"pull_page_size",[141,746,744],{},[134,748,750],{"className":180,"code":749,"language":151,"meta":139,"style":139},"'pull_page_size' => env('TETHER_PULL_PAGE_SIZE', null),\n",[141,751,752],{"__ignoreMap":139},[144,753,754,756,758,760,762,764,766,768,771,773,775],{"class":146,"line":147},[144,755,189],{"class":188},[144,757,744],{"class":154},[144,759,189],{"class":188},[144,761,196],{"class":188},[144,763,200],{"class":199},[144,765,203],{"class":188},[144,767,189],{"class":188},[144,769,770],{"class":154},"TETHER_PULL_PAGE_SIZE",[144,772,189],{"class":188},[144,774,213],{"class":188},[144,776,216],{"class":188},[127,778,779,780,782],{},"Maximum number of snapshots returned per pull request. When set, the client automatically pages through all results. ",[141,781,230],{}," fetches everything in one request.",[170,784],{},[173,786,788],{"id":787},"push_batch_size",[141,789,787],{},[134,791,793],{"className":180,"code":792,"language":151,"meta":139,"style":139},"'push_batch_size' => env('TETHER_PUSH_BATCH_SIZE', 100),\n",[141,794,795],{"__ignoreMap":139},[144,796,797,799,801,803,805,807,809,811,814,816,818,821],{"class":146,"line":147},[144,798,189],{"class":188},[144,800,787],{"class":154},[144,802,189],{"class":188},[144,804,196],{"class":188},[144,806,200],{"class":199},[144,808,203],{"class":188},[144,810,189],{"class":188},[144,812,813],{"class":154},"TETHER_PUSH_BATCH_SIZE",[144,815,189],{"class":188},[144,817,213],{"class":188},[144,819,820],{"class":723}," 100",[144,822,276],{"class":188},[127,824,825],{},"Maximum number of pending mutations sent in a single push request. When the queue exceeds this, multiple requests are made sequentially.",[170,827],{},[173,829,831],{"id":830},"max_retry_attempts",[141,832,830],{},[134,834,836],{"className":180,"code":835,"language":151,"meta":139,"style":139},"'max_retry_attempts' => env('TETHER_MAX_RETRY_ATTEMPTS', 3),\n",[141,837,838],{"__ignoreMap":139},[144,839,840,842,844,846,848,850,852,854,857,859,861,864],{"class":146,"line":147},[144,841,189],{"class":188},[144,843,830],{"class":154},[144,845,189],{"class":188},[144,847,196],{"class":188},[144,849,200],{"class":199},[144,851,203],{"class":188},[144,853,189],{"class":188},[144,855,856],{"class":154},"TETHER_MAX_RETRY_ATTEMPTS",[144,858,189],{"class":188},[144,860,213],{"class":188},[144,862,863],{"class":723}," 3",[144,865,276],{"class":188},[127,867,868,869,872,873,876,877,879],{},"How many times a mutation rejected with reason ",[141,870,871],{},"error"," will be automatically re-queued. Once the retry count reaches this limit, the mutation stays in ",[141,874,875],{},"failed"," permanently. Set to ",[141,878,732],{}," to disable retries.",[170,881],{},[173,883,885],{"id":884},"sync_lock",[141,886,884],{},[134,888,890],{"className":180,"code":889,"language":151,"meta":139,"style":139},"'sync_lock' => env('TETHER_SYNC_LOCK', true),\n",[141,891,892],{"__ignoreMap":139},[144,893,894,896,898,900,902,904,906,908,911,913,915],{"class":146,"line":147},[144,895,189],{"class":188},[144,897,884],{"class":154},[144,899,189],{"class":188},[144,901,196],{"class":188},[144,903,200],{"class":199},[144,905,203],{"class":188},[144,907,189],{"class":188},[144,909,910],{"class":154},"TETHER_SYNC_LOCK",[144,912,189],{"class":188},[144,914,213],{"class":188},[144,916,917],{"class":188}," true),\n",[127,919,615,920,922,923,926],{},[141,921,618],{},", Tether uses Laravel's atomic cache lock to prevent concurrent sync cycles. Operations return ",[141,924,925],{},"skipped = true"," if the lock is already held.",[127,928,929,930,733,933,733,936,733,939,733,942,945,946,334],{},"Requires a compatible cache driver: ",[141,931,932],{},"memcached",[141,934,935],{},"redis",[141,937,938],{},"dynamodb",[141,940,941],{},"database",[141,943,944],{},"file",", or ",[141,947,948],{},"array",[170,950],{},[173,952,954],{"id":953},"debug_level",[141,955,953],{},[134,957,959],{"className":180,"code":958,"language":151,"meta":139,"style":139},"'debug_level' => env('TETHER_DEBUG_LEVEL', 0),\n",[141,960,961],{"__ignoreMap":139},[144,962,963,965,967,969,971,973,975,977,980,982,984,986],{"class":146,"line":147},[144,964,189],{"class":188},[144,966,953],{"class":154},[144,968,189],{"class":188},[144,970,196],{"class":188},[144,972,200],{"class":199},[144,974,203],{"class":188},[144,976,189],{"class":188},[144,978,979],{"class":154},"TETHER_DEBUG_LEVEL",[144,981,189],{"class":188},[144,983,213],{"class":188},[144,985,724],{"class":723},[144,987,276],{"class":188},[127,989,990,991,994,995,997,998,1001,1002,1005,1006,1009,1010,334],{},"Controls package debug logging (",[141,992,993],{},"Log::debug()","). ",[141,996,732],{}," disables debug logging, ",[141,999,1000],{},"1"," logs lifecycle summaries, ",[141,1003,1004],{},"2"," logs decisions and outcomes, and ",[141,1007,1008],{},"3"," logs verbose diagnostics. All package debug messages are prefixed with ",[141,1011,1012],{},"[TETHER]",[1014,1015,1016],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":139,"searchDepth":147,"depth":423,"links":1018},[1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033],{"id":175,"depth":454,"text":175},{"id":236,"depth":454,"text":236},{"id":284,"depth":454,"text":284},{"id":339,"depth":454,"text":339},{"id":400,"depth":454,"text":400},{"id":494,"depth":454,"text":494},{"id":538,"depth":454,"text":538},{"id":579,"depth":454,"text":579},{"id":631,"depth":454,"text":631},{"id":680,"depth":454,"text":680},{"id":744,"depth":454,"text":744},{"id":787,"depth":454,"text":787},{"id":830,"depth":454,"text":830},{"id":884,"depth":454,"text":884},{"id":953,"depth":454,"text":953},"Reference every tether\u002Fclient config key for Laravel offline sync, including client identity, HTTP endpoints, queue sync, batching, retries, and cursors.","md",null,{},true,{"title":1040,"description":1034},"tether\u002Fclient Configuration for Laravel Offline Sync","XZhqv1k_bN8A246Irxq3J9HUruEvTbFGyib-xC5q9z4",[1043,1045],{"title":37,"path":38,"stem":39,"description":1044,"children":-1},"Use Laravel events from tether\u002Fclient to react to sync lifecycle changes, push and pull completion, skipped runs, and detected conflicts.",{"title":52,"path":53,"stem":54,"description":1046,"children":-1},"Install tether\u002Fserver, register Syncable Eloquent models, expose push and pull endpoints, and reconcile offline client mutations on your Laravel server.",1780481013060]