Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.
Bridge.Net replaces raw RegisterNetEvent / TriggerServerEvent. Logical event names are scrambled on the wire and regenerated every restart, and every client→server call carries a single-use, event-bound proof — so executors cannot guess or replay your events. You just use the readable names.On top of that, every handler can declare a payload validator, a rate limit, and a permission node. Validation and rate limiting run before your handler executes.
-- subscribe to a server emit; the return value unsubscribeslocal off = Bridge.Net.On('shop:opened', function(data) openUI(data.stock)end)off()-- fire-and-forget to the serverBridge.Net.Emit('shop:buy', { item = 'water' })
Bridge.Net.Callback blocks until the server responds, so it must run inside a thread.
CreateThread(function() local balance, err = Bridge.Net.Callback('bank:balance', {}, 10000) -- payload, timeout ms if err then return end updateUI(balance)end)
Bridge.Net.Callback yields. Always call it inside a CreateThread or a command/event callback — never at file top level.
Bridge.Validate builds composable validators. Use them as the payload of a net handler, or call them directly to guard any untrusted input.
local schema = Bridge.Validate.obj({ spot = Bridge.Validate.int({ min = 0, max = 20 }), note = Bridge.Validate.optional(Bridge.Validate.str()), tags = Bridge.Validate.array(Bridge.Validate.str()),})
Builder
Validates
Bridge.Validate.number(opts?)
A number (optional min / max).
Bridge.Validate.int(opts?)
An integer (optional min / max).
Bridge.Validate.str(opts?)
A string.
Bridge.Validate.bool()
A boolean.
Bridge.Validate.enum(values)
One of a fixed set.
Bridge.Validate.optional(v)
nil or a value matching v.
Bridge.Validate.array(v)
A list whose entries match v.
Bridge.Validate.obj(shape)
A table matching the field shape.
Validate every client→server payload. The net layer enforces the proof and rate limit, but only your validator guarantees the shape of the data your handler trusts.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Atlas Scripts","colors":{"primary":"#B9A7FF","light":"#D8CEFF","dark":"#9D86F7"},"logo":{"light":"https://mintcdn.com/atlasscripts/BwePy2Q7bMLnl0yQ/logo/atlas-wordmark.png?fit=max\u0026auto=format\u0026n=BwePy2Q7bMLnl0yQ\u0026q=85\u0026s=b9c8fd8617f71d020beb11b5e3896bfa","dark":"https://mintcdn.com/atlasscripts/BwePy2Q7bMLnl0yQ/logo/atlas-wordmark.png?fit=max\u0026auto=format\u0026n=BwePy2Q7bMLnl0yQ\u0026q=85\u0026s=b9c8fd8617f71d020beb11b5e3896bfa"},"favicon":"https://mintcdn.com/atlasscripts/BwePy2Q7bMLnl0yQ/favicon.ico?fit=max\u0026auto=format\u0026n=BwePy2Q7bMLnl0yQ\u0026q=85\u0026s=25487ae859172acfc9a9cd1a7f40e323","navbar":{"links":[{"href":"https://discord.gg/atlas","label":"Support"}],"primary":{"type":"button","label":"Atlas Store","href":"https://atlasscripts.tebex.io"}},"footer":{"socials":{"github":"https://github.com/atlasscripts","discord":"https://discord.gg/atlas"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"atlasscripts","hasAudioNarration":false,"actualSubdomain":"atlasscripts","customDomains":["docs.atlasscripts.net"],"gitSource":{"type":"github","owner":"1337grim","repo":"atlas-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a40b42b1078404d58a37bb6","collectionId":"03c0303e-4b25-4f2d-8faa-f0881ea7df38","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a40b42b1078404d58a37bb6:success","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Resources","count":31},{"language":"default","tag":"atlasBridge","count":23},{"language":"default","tag":"UI Library","count":9},{"language":"default","tag":"atlasFishing","count":8},{"language":"default","tag":"Building on atlasBridge","count":6},{"language":"default","tag":"Configuration","count":5},{"language":"default","tag":"Start Here","count":4},{"language":"default","tag":"Framework \u0026 Inventory","count":3},{"language":"default","tag":"Support","count":2},{"language":"default","tag":"Customization","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--atlas-lavender:#c9bbff;--atlas-lavender-strong:#b9a7ff;--atlas-lavender-border:rgba(201, 187, 255, 0.3);--atlas-lavender-hover:rgba(201, 187, 255, 0.055)}#navbar{backdrop-filter:blur(18px)}#navbar img[src*=atlas-wordmark],header img[src*=atlas-wordmark],nav img[src*=atlas-wordmark]{max-height:34px;width:auto}.atlas-hero-image{width:100%;max-height:286px;object-fit:cover;object-position:center;border:1px solid rgba(201,187,255,.16);border-radius:8px;box-shadow:0 18px 54px rgba(0,0,0,.2);margin:0 0 24px}.card,[class*=Card]{transition:border-color 180ms ease,box-shadow 180ms ease,transform 180ms ease}.card:hover,[class*=Card]:hover{border-color:var(--atlas-lavender-border);background:linear-gradient(180deg,var(--atlas-lavender-hover),rgba(201,187,255,.02));box-shadow:0 14px 34px rgba(0,0,0,.16),0 0 0 1px rgba(201,187,255,.06) inset;transform:translateY(-1px)}code{border-color:rgba(201,187,255,.18)}"}],"page":{"pagePath":"atlas-bridge/developer/networking","slug":"/atlas-bridge/developer/networking","pageMetadata":{"title":"Networking","description":"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.","icon":"/icons/plug-filled.svg","href":"/atlas-bridge/developer/networking"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Bridge.Net`}),` replaces raw `,_jsx(_components.code,{children:`RegisterNetEvent`}),` / `,_jsx(_components.code,{children:`TriggerServerEvent`}),`. Logical event names are scrambled on the wire and regenerated every restart, and every client→server call carries a single-use, event-bound proof — so executors cannot guess or replay your events. You just use the readable names.`]}),`\n`,_jsxs(_components.p,{children:[`On top of that, every handler can declare a payload `,_jsx(_components.strong,{children:`validator`}),`, a `,_jsx(_components.strong,{children:`rate limit`}),`, and a `,_jsx(_components.strong,{children:`permission`}),` node. Validation and rate limiting run before your handler executes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`server-handlers`,children:`Server handlers`}),`\n`,_jsx(Heading,{level:`3`,id:`bridge-net-on`,children:`Bridge.Net.On`}),`\n`,_jsx(_components.p,{children:`Register a fire-and-forget handler for client→server events.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`On`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'shop:buy'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`src`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` grantItem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`src`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`item`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` payload`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`item`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() }), `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- optional, runs first`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` rateLimit`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`windowMs`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`maxHits`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 5`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- optional`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` permission`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'shop.use'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- optional`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`handle`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`fun(src, data)`})}),_jsxs(_components.td,{children:[`Required. `,_jsx(_components.code,{children:`src`}),` is verified; `,_jsx(_components.code,{children:`data`}),` is validated.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`payload`})}),_jsx(_components.td,{children:`validator`}),_jsx(_components.td,{children:`Optional. Rejects the call if the payload does not match.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`rateLimit`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`{ windowMs, maxHits }`})}),_jsx(_components.td,{children:`Optional per-event guard.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`permission`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`string`})}),_jsx(_components.td,{children:`Optional permission node the caller must hold.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`bridge-net-oncallback`,children:`Bridge.Net.OnCallback`}),`\n`,_jsxs(_components.p,{children:[`Register a request/response handler. Return a single value (or `,_jsx(_components.code,{children:`value`}),` plus an error handled by your own convention).`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`OnCallback`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'bank:balance'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` handle`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`src`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` getBalance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`src`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`emitting-to-clients`,children:`Emitting to clients`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`Emit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'shop:opened'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`src`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`stock`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` stock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- to one player`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`EmitAll`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'event:started'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {}) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- to everyone`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`client-handlers`,children:`Client handlers`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- subscribe to a server emit; the return value unsubscribes`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` off`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`On`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'shop:opened'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` openUI`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`data`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`stock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`off`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- fire-and-forget to the server`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`Emit`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'shop:buy'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`item`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'water' `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`callbacks-blocking`,children:`Callbacks (blocking)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Bridge.Net.Callback`}),` blocks until the server responds, so it must run inside a thread.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`CreateThread`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` balance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Net`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`Callback`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'bank:balance'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {}, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`10000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`-- payload, timeout ms`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` then`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` end`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` updateUI`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`balance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`end`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Bridge.Net.Callback`}),` yields. Always call it inside a `,_jsx(_components.code,{children:`CreateThread`}),` or a command/event callback — never at file top level.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`validation`,children:`Validation`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Bridge.Validate`}),` builds composable validators. Use them as the `,_jsx(_components.code,{children:`payload`}),` of a net handler, or call them directly to guard any untrusted input.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`lua`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`lua`,children:_jsxs(_components.code,{language:`lua`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`local`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` schema`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`obj`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` spot`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`int`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`min`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`max`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` note`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`optional`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` tags`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`array`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Bridge`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`Validate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`str`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Builder`}),_jsx(_components.th,{children:`Validates`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.number(opts?)`})}),_jsxs(_components.td,{children:[`A number (optional `,_jsx(_components.code,{children:`min`}),` / `,_jsx(_components.code,{children:`max`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.int(opts?)`})}),_jsxs(_components.td,{children:[`An integer (optional `,_jsx(_components.code,{children:`min`}),` / `,_jsx(_components.code,{children:`max`}),`).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.str(opts?)`})}),_jsx(_components.td,{children:`A string.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.bool()`})}),_jsx(_components.td,{children:`A boolean.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.enum(values)`})}),_jsx(_components.td,{children:`One of a fixed set.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.optional(v)`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`nil`}),` or a value matching `,_jsx(_components.code,{children:`v`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.array(v)`})}),_jsxs(_components.td,{children:[`A list whose entries match `,_jsx(_components.code,{children:`v`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Bridge.Validate.obj(shape)`})}),_jsx(_components.td,{children:`A table matching the field shape.`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Validate every client→server payload. The net layer enforces the proof and rate limit, but only your validator guarantees the `,_jsx(_components.strong,{children:`shape`}),` of the data your handler trusts.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Networking","description":"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.","icon":"/icons/plug-filled.svg","href":"/atlas-bridge/developer/networking"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Server handlers","slug":"server-handlers","depth":2,"children":[{"title":"Bridge.Net.On","slug":"bridge-net-on","depth":3,"children":[]},{"title":"Bridge.Net.OnCallback","slug":"bridge-net-oncallback","depth":3,"children":[]},{"title":"Emitting to clients","slug":"emitting-to-clients","depth":3,"children":[]}]},{"title":"Client handlers","slug":"client-handlers","depth":2,"children":[{"title":"Callbacks (blocking)","slug":"callbacks-blocking","depth":3,"children":[]}]},{"title":"Validation","slug":"validation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"atlasscripts","siteName":"Atlas Scripts","title":"Networking - Atlas Scripts","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-28T05:41:17.344Z","originalFileLocation":"atlas-bridge/developer/networking.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Atlas Scripts\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Networking - Atlas Scripts\">\u003cmeta data-mint-head property=\"og:description\" content=\"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Atlas Scripts\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.atlasscripts.net/atlas-bridge/developer/networking\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://atlasscripts.mintlify.app/_mintlify/api/og/v2?division=Building+on+atlasBridge\u0026amp;title=Networking\u0026amp;description=Protected+client%E2%86%94server+events+and+callbacks+with+Bridge.Net%2C+plus+payload+validation+with+Bridge.Validate.\u0026amp;theme=c450d0e4a689d785fca19340\u0026amp;signature=63f7fa817d86f7a6c1662d1f7d3f6eec549f4ede8e3749119f7af98041cb12bb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Networking - Atlas Scripts\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://atlasscripts.mintlify.app/_mintlify/api/og/v2?division=Building+on+atlasBridge\u0026amp;title=Networking\u0026amp;description=Protected+client%E2%86%94server+events+and+callbacks+with+Bridge.Net%2C+plus+payload+validation+with+Bridge.Validate.\u0026amp;theme=c450d0e4a689d785fca19340\u0026amp;signature=63f7fa817d86f7a6c1662d1f7d3f6eec549f4ede8e3749119f7af98041cb12bb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/atlasscripts/X8GFCRdaBDxyahaV/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Atlas Scripts\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#B9A7FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.atlasscripts.net/atlas-bridge/developer/networking\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/atlas-bridge/developer/networking.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.atlasscripts.net/#organization\",\"name\":\"Atlas Scripts\",\"url\":\"https://docs.atlasscripts.net\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/atlasscripts/BwePy2Q7bMLnl0yQ/logo/atlas-wordmark.png?fit=max\u0026auto=format\u0026n=BwePy2Q7bMLnl0yQ\u0026q=85\u0026s=b9c8fd8617f71d020beb11b5e3896bfa\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.atlasscripts.net#website\",\"name\":\"Atlas Scripts\",\"url\":\"https://docs.atlasscripts.net\",\"publisher\":{\"@id\":\"https://docs.atlasscripts.net/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking#webpage\",\"url\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking\",\"name\":\"Networking\",\"description\":\"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\",\"dateModified\":\"2026-06-28T05:41:17.344Z\",\"isPartOf\":{\"@id\":\"https://docs.atlasscripts.net#website\"},\"breadcrumb\":{\"@id\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Resources\",\"item\":\"https://docs.atlasscripts.net/atlas-bridge/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"atlasBridge\",\"item\":\"https://docs.atlasscripts.net/atlas-bridge/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Building on atlasBridge\",\"item\":\"https://docs.atlasscripts.net/atlas-bridge/developer/getting-started\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Networking\",\"item\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking#article\",\"headline\":\"Networking\",\"name\":\"Networking\",\"description\":\"Protected client↔server events and callbacks with Bridge.Net, plus payload validation with Bridge.Validate.\",\"url\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking\",\"mainEntityOfPage\":{\"@id\":\"https://docs.atlasscripts.net/atlas-bridge/developer/networking#webpage\"},\"dateModified\":\"2026-06-28T05:41:17.344Z\",\"publisher\":{\"@id\":\"https://docs.atlasscripts.net/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.atlasscripts.net#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Atlas Scripts\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Atlas Scripts","nav":{"global":null,"groups":[{"group":"Resources","pages":[{"group":"atlasBridge","icon":"/icons/bridge-filled.svg","expanded":false,"pages":[{"group":"Start Here","icon":"/icons/rocket-filled.svg","expanded":true,"pages":[{"title":"atlasBridge Overview","sidebarTitle":"Overview","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/bridge-filled.svg","href":"/atlas-bridge/overview"},{"title":"Installation","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/rocket-filled.svg","href":"/atlas-bridge/installation"}]},{"group":"Configuration","icon":"/icons/wrench-filled.svg","expanded":false,"pages":[{"title":"Configuration (Convars)","sidebarTitle":"Configuration","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/wrench-filled.svg","href":"/atlas-bridge/convars"},{"title":"Theming","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/wrench-filled.svg","href":"/atlas-bridge/theming"}]},{"group":"Framework \u0026 Inventory","icon":"/icons/plug-filled.svg","expanded":false,"pages":[{"title":"Providers","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/plug-filled.svg","href":"/atlas-bridge/providers"},{"title":"Custom Framework Adapter","sidebarTitle":"Custom Framework","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/plug-filled.svg","href":"/atlas-bridge/custom-framework"},{"title":"Custom Inventory Adapter","sidebarTitle":"Custom Inventory","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/custom-inventory"}]},{"group":"Building on atlasBridge","icon":"/icons/list-filled.svg","expanded":false,"pages":[{"title":"Getting Started","description":"Build your own resource on the atlasBridge Bridge global — integration, hybrid loading, and the API surface.","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/rocket-filled.svg","href":"/atlas-bridge/developer/getting-started"},{"title":"Networking","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/plug-filled.svg","href":"/atlas-bridge/developer/networking"},{"title":"Player Data","description":"Read and mutate framework + inventory data through one normalized API — job, money, items, usables, and lifecycle hooks — the same on ESX, QBX, QB-Core, or standalone.","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/developer/player-data"},{"title":"Permissions","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/coins-filled.svg","href":"/atlas-bridge/developer/permissions"},{"title":"Entities","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/developer/entities"},{"title":"World Interactions","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/developer/world"}]},{"group":"UI Library","icon":"/icons/box-filled.svg","expanded":false,"pages":[{"title":"UI Library","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/overview"},{"title":"Notifications","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/notifications"},{"title":"Progress","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/progress"},{"title":"Text UI","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/text-ui"},{"title":"Menus","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/menus"},{"title":"Input \u0026 Confirm","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/input"},{"title":"Skill Check","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/skill-check"},{"title":"Radial","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/radial"},{"title":"Target","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-bridge/ui/target"}]},{"group":"Support","icon":"/icons/life-ring-filled.svg","expanded":false,"pages":[{"title":"Troubleshooting","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/life-ring-filled.svg","href":"/atlas-bridge/troubleshooting"}]}]},{"group":"atlasFishing","icon":"/icons/fish-filled.svg","expanded":false,"pages":[{"group":"Start Here","icon":"/icons/rocket-filled.svg","expanded":true,"pages":[{"title":"atlasFishing Overview","sidebarTitle":"Overview","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/fish-filled.svg","href":"/atlas-fishing/overview"},{"title":"Installation","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/rocket-filled.svg","href":"/atlas-fishing/installation"}]},{"group":"Configuration","icon":"/icons/wrench-filled.svg","expanded":false,"pages":[{"title":"Configuration","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/wrench-filled.svg","href":"/atlas-fishing/configuration"},{"title":"Items \u0026 Icons","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/box-filled.svg","href":"/atlas-fishing/items"},{"title":"Economy Balancing","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/coins-filled.svg","href":"/atlas-fishing/economy-balancing"}]},{"group":"Customization","icon":"/icons/plug-filled.svg","expanded":false,"pages":[{"title":"Hooks","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/plug-filled.svg","href":"/atlas-fishing/hooks"}]},{"group":"Gameplay","icon":"/icons/gamepad-filled.svg","expanded":false,"pages":[{"title":"Minigames","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/gamepad-filled.svg","href":"/atlas-fishing/minigames"}]},{"group":"Support","icon":"/icons/life-ring-filled.svg","expanded":false,"pages":[{"title":"Troubleshooting","icon":"https://mintlify.s3.us-west-1.amazonaws.com/atlasscripts/icons/life-ring-filled.svg","href":"/atlas-fishing/troubleshooting"}]}]}]}]},"title":"Networking - Atlas Scripts","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}