[{"data":1,"prerenderedAt":672},["ShallowReactive",2],{"navigation_docs_en":3,"-en-sdk-nodejs":110,"-en-sdk-nodejs-surround":667},[4,20,55,70,90,100],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":21,"icon":6,"path":22,"stem":23,"children":24,"page":6},"Concepts","\u002Fen\u002Fconcepts","en\u002F2.concepts",[25,30,35,40,45,50],{"title":26,"path":27,"stem":28,"icon":29},"Projects and versions","\u002Fen\u002Fconcepts\u002Fprojects-and-versions","en\u002F2.concepts\u002F1.projects-and-versions","i-lucide-boxes",{"title":31,"path":32,"stem":33,"icon":34},"Config files","\u002Fen\u002Fconcepts\u002Ffiles","en\u002F2.concepts\u002F2.files","i-lucide-file-json",{"title":36,"path":37,"stem":38,"icon":39},"Publishing","\u002Fen\u002Fconcepts\u002Fpublishing","en\u002F2.concepts\u002F3.publishing","i-lucide-send",{"title":41,"path":42,"stem":43,"icon":44},"Access and roles","\u002Fen\u002Fconcepts\u002Faccess","en\u002F2.concepts\u002F4.access","i-lucide-users",{"title":46,"path":47,"stem":48,"icon":49},"Encryption","\u002Fen\u002Fconcepts\u002Fencryption","en\u002F2.concepts\u002F5.encryption","i-lucide-lock",{"title":51,"path":52,"stem":53,"icon":54},"Git integration","\u002Fen\u002Fconcepts\u002Fgit","en\u002F2.concepts\u002F6.git","i-lucide-git-branch",{"title":56,"icon":6,"path":57,"stem":58,"children":59,"page":6},"SDKs","\u002Fen\u002Fsdk","en\u002F3.sdk",[60,65],{"title":61,"path":62,"stem":63,"icon":64},"Node.js","\u002Fen\u002Fsdk\u002Fnodejs","en\u002F3.sdk\u002F1.nodejs","i-simple-icons-nodedotjs",{"title":66,"path":67,"stem":68,"icon":69},"Unity","\u002Fen\u002Fsdk\u002Funity","en\u002F3.sdk\u002F2.unity","i-simple-icons-unity",{"title":71,"icon":6,"path":72,"stem":73,"children":74,"page":6},"API and MCP","\u002Fen\u002Fapi","en\u002F4.api",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"API tokens","\u002Fen\u002Fapi\u002Fauthentication","en\u002F4.api\u002F1.authentication","i-lucide-key-round",{"title":81,"path":82,"stem":83,"icon":84},"REST API","\u002Fen\u002Fapi\u002Frest-api","en\u002F4.api\u002F2.rest-api","i-lucide-plug",{"title":86,"path":87,"stem":88,"icon":89},"MCP for AI agents","\u002Fen\u002Fapi\u002Fmcp","en\u002F4.api\u002F3.mcp","i-lucide-bot",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Support","\u002Fen\u002Fsupport","en\u002F5.support",[95],{"title":96,"path":97,"stem":98,"icon":99},"Feedback","\u002Fen\u002Fsupport\u002Ffeedback","en\u002F5.support\u002F1.feedback","i-lucide-message-circle",{"title":101,"icon":6,"path":102,"stem":103,"children":104,"page":6},"Legal","\u002Fen\u002Flegal","en\u002F6.legal",[105],{"title":106,"path":107,"stem":108,"icon":109},"Privacy policy","\u002Fen\u002Flegal\u002Fprivacy","en\u002F6.legal\u002F1.privacy","i-lucide-shield",{"id":111,"title":61,"body":112,"description":658,"extension":659,"links":660,"meta":661,"navigation":662,"path":62,"seo":663,"stem":63,"__hash__":666},"docs_en\u002Fen\u002F3.sdk\u002F1.nodejs.md",{"type":113,"value":114,"toc":652},"minimark",[115,130,135,160,164,172,424,495,499,502,631,635,648],[116,117,118,119,129],"p",{},"Package: ",[120,121,125],"a",{"href":122,"rel":123},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@veresk-tool\u002Fnodejs",[124],"nofollow",[126,127,128],"code",{},"@veresk-tool\u002Fnodejs",". Requires Node.js 18 or newer.",[131,132,134],"h2",{"id":133},"install","Install",[136,137,142],"pre",{"className":138,"code":139,"language":140,"meta":141,"style":141},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @veresk-tool\u002Fnodejs\n","bash","",[126,143,144],{"__ignoreMap":141},[145,146,149,153,157],"span",{"class":147,"line":148},"line",1,[145,150,152],{"class":151},"sBMFI","npm",[145,154,156],{"class":155},"sfazB"," install",[145,158,159],{"class":155}," @veresk-tool\u002Fnodejs\n",[131,161,163],{"id":162},"connect","Connect",[116,165,166,167,171],{},"The ",[168,169,170],"strong",{},"Integration"," page of your project generates this snippet with your CDN URL, version and consumer filled in.",[136,173,177],{"className":174,"code":175,"language":176,"meta":141,"style":141},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { Veresk, VereskEventName } from '@veresk-tool\u002Fnodejs';\n\nconst veresk = new Veresk({\n  cdnUrls: ['\u003CCDN URL>'],\n  version: 'default',\n  consumer: 'backend',\n  encryptSecret: process.env.VERESK_SECRET,\n});\n\nveresk.on(VereskEventName.Error, (error) => console.error(error));\n\n\u002F\u002F Loads the manifest and files, then polls for updates.\nawait veresk.init();\n","ts",[126,178,179,216,223,248,274,291,308,332,343,348,393,398,405],{"__ignoreMap":141},[145,180,181,185,189,193,196,199,202,205,208,210,213],{"class":147,"line":148},[145,182,184],{"class":183},"s7zQu","import",[145,186,188],{"class":187},"sMK4o"," {",[145,190,192],{"class":191},"sTEyZ"," Veresk",[145,194,195],{"class":187},",",[145,197,198],{"class":191}," VereskEventName",[145,200,201],{"class":187}," }",[145,203,204],{"class":183}," from",[145,206,207],{"class":187}," '",[145,209,128],{"class":155},[145,211,212],{"class":187},"'",[145,214,215],{"class":187},";\n",[145,217,219],{"class":147,"line":218},2,[145,220,222],{"emptyLinePlaceholder":221},true,"\n",[145,224,226,230,233,236,239,242,245],{"class":147,"line":225},3,[145,227,229],{"class":228},"spNyl","const",[145,231,232],{"class":191}," veresk ",[145,234,235],{"class":187},"=",[145,237,238],{"class":187}," new",[145,240,192],{"class":241},"s2Zo4",[145,243,244],{"class":191},"(",[145,246,247],{"class":187},"{\n",[145,249,251,255,258,261,263,266,268,271],{"class":147,"line":250},4,[145,252,254],{"class":253},"swJcz","  cdnUrls",[145,256,257],{"class":187},":",[145,259,260],{"class":191}," [",[145,262,212],{"class":187},[145,264,265],{"class":155},"\u003CCDN URL>",[145,267,212],{"class":187},[145,269,270],{"class":191},"]",[145,272,273],{"class":187},",\n",[145,275,277,280,282,284,287,289],{"class":147,"line":276},5,[145,278,279],{"class":253},"  version",[145,281,257],{"class":187},[145,283,207],{"class":187},[145,285,286],{"class":155},"default",[145,288,212],{"class":187},[145,290,273],{"class":187},[145,292,294,297,299,301,304,306],{"class":147,"line":293},6,[145,295,296],{"class":253},"  consumer",[145,298,257],{"class":187},[145,300,207],{"class":187},[145,302,303],{"class":155},"backend",[145,305,212],{"class":187},[145,307,273],{"class":187},[145,309,311,314,316,319,322,325,327,330],{"class":147,"line":310},7,[145,312,313],{"class":253},"  encryptSecret",[145,315,257],{"class":187},[145,317,318],{"class":191}," process",[145,320,321],{"class":187},".",[145,323,324],{"class":191},"env",[145,326,321],{"class":187},[145,328,329],{"class":191},"VERESK_SECRET",[145,331,273],{"class":187},[145,333,335,338,341],{"class":147,"line":334},8,[145,336,337],{"class":187},"}",[145,339,340],{"class":191},")",[145,342,215],{"class":187},[145,344,346],{"class":147,"line":345},9,[145,347,222],{"emptyLinePlaceholder":221},[145,349,351,354,356,359,362,364,367,369,372,376,378,381,384,386,388,391],{"class":147,"line":350},10,[145,352,353],{"class":191},"veresk",[145,355,321],{"class":187},[145,357,358],{"class":241},"on",[145,360,361],{"class":191},"(VereskEventName",[145,363,321],{"class":187},[145,365,366],{"class":191},"Error",[145,368,195],{"class":187},[145,370,371],{"class":187}," (",[145,373,375],{"class":374},"sHdIc","error",[145,377,340],{"class":187},[145,379,380],{"class":228}," =>",[145,382,383],{"class":191}," console",[145,385,321],{"class":187},[145,387,375],{"class":241},[145,389,390],{"class":191},"(error))",[145,392,215],{"class":187},[145,394,396],{"class":147,"line":395},11,[145,397,222],{"emptyLinePlaceholder":221},[145,399,401],{"class":147,"line":400},12,[145,402,404],{"class":403},"sHwdD","\u002F\u002F Loads the manifest and files, then polls for updates.\n",[145,406,408,411,414,416,419,422],{"class":147,"line":407},13,[145,409,410],{"class":183},"await",[145,412,413],{"class":191}," veresk",[145,415,321],{"class":187},[145,417,418],{"class":241},"init",[145,420,421],{"class":191},"()",[145,423,215],{"class":187},[425,426,427,440],"table",{},[428,429,430],"thead",{},[431,432,433,437],"tr",{},[434,435,436],"th",{},"Option",[434,438,439],{},"Meaning",[441,442,443,454,470,482],"tbody",{},[431,444,445,451],{},[446,447,448],"td",{},[126,449,450],{},"cdnUrls",[446,452,453],{},"CDN URL of the project (from the Integration page).",[431,455,456,461],{},[446,457,458],{},[126,459,460],{},"version",[446,462,463,464,467,468,321],{},"Version ",[168,465,466],{},"name",", for example ",[126,469,286],{},[431,471,472,477],{},[446,473,474],{},[126,475,476],{},"consumer",[446,478,479,480,321],{},"Consumer ",[168,481,466],{},[431,483,484,489],{},[446,485,486],{},[126,487,488],{},"encryptSecret",[446,490,491,492,321],{},"The project key. Needed only if some files are ",[120,493,494],{"href":47},"encrypted",[131,496,498],{"id":497},"read-a-config","Read a config",[116,500,501],{},"Configs are served from memory by file name.",[136,503,505],{"className":174,"code":504,"language":176,"meta":141,"style":141},"\u002F\u002F A config by its file name.\nconst settings = veresk.getContent\u003CSettings>('settings.json');\n\n\u002F\u002F One item of an array config.\nconst item = veresk.getAsListOrThrow\u003CItem[]>('items.json', {\n  find: { id: 'item-1' },\n});\n",[126,506,507,512,550,554,559,599,623],{"__ignoreMap":141},[145,508,509],{"class":147,"line":148},[145,510,511],{"class":403},"\u002F\u002F A config by its file name.\n",[145,513,514,516,519,521,523,525,528,531,534,537,539,541,544,546,548],{"class":147,"line":218},[145,515,229],{"class":228},[145,517,518],{"class":191}," settings ",[145,520,235],{"class":187},[145,522,413],{"class":191},[145,524,321],{"class":187},[145,526,527],{"class":241},"getContent",[145,529,530],{"class":187},"\u003C",[145,532,533],{"class":151},"Settings",[145,535,536],{"class":187},">",[145,538,244],{"class":191},[145,540,212],{"class":187},[145,542,543],{"class":155},"settings.json",[145,545,212],{"class":187},[145,547,340],{"class":191},[145,549,215],{"class":187},[145,551,552],{"class":147,"line":225},[145,553,222],{"emptyLinePlaceholder":221},[145,555,556],{"class":147,"line":250},[145,557,558],{"class":403},"\u002F\u002F One item of an array config.\n",[145,560,561,563,566,568,570,572,575,577,580,583,585,587,589,592,594,596],{"class":147,"line":276},[145,562,229],{"class":228},[145,564,565],{"class":191}," item ",[145,567,235],{"class":187},[145,569,413],{"class":191},[145,571,321],{"class":187},[145,573,574],{"class":241},"getAsListOrThrow",[145,576,530],{"class":187},[145,578,579],{"class":151},"Item",[145,581,582],{"class":191},"[]",[145,584,536],{"class":187},[145,586,244],{"class":191},[145,588,212],{"class":187},[145,590,591],{"class":155},"items.json",[145,593,212],{"class":187},[145,595,195],{"class":187},[145,597,598],{"class":187}," {\n",[145,600,601,604,606,608,611,613,615,618,620],{"class":147,"line":293},[145,602,603],{"class":253},"  find",[145,605,257],{"class":187},[145,607,188],{"class":187},[145,609,610],{"class":253}," id",[145,612,257],{"class":187},[145,614,207],{"class":187},[145,616,617],{"class":155},"item-1",[145,619,212],{"class":187},[145,621,622],{"class":187}," },\n",[145,624,625,627,629],{"class":147,"line":310},[145,626,337],{"class":187},[145,628,340],{"class":191},[145,630,215],{"class":187},[131,632,634],{"id":633},"notes","Notes",[636,637,638,645],"ul",{},[639,640,641,642,644],"li",{},"Keep ",[126,643,329],{}," in the environment, not in code.",[639,646,647],{},"A version that was never published has no files for clients. Publish it first.",[649,650,651],"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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":141,"searchDepth":218,"depth":218,"links":653},[654,655,656,657],{"id":133,"depth":218,"text":134},{"id":162,"depth":218,"text":163},{"id":497,"depth":218,"text":498},{"id":633,"depth":218,"text":634},"Load and read Veresk configs from a Node.js service.","md",null,{},{"icon":64},{"title":664,"description":665},"Veresk Node.js SDK","Install @veresk-tool\u002Fnodejs, connect to your project's CDN, read configs from memory and decrypt encrypted files.","-QJleYlF31NmFx01hyAArktwUFjn3RrCQgbRP9e_P2A",[668,670],{"title":51,"path":52,"stem":53,"description":669,"icon":54,"children":-1},"Keep a project's files in a Git repository alongside publishing.",{"title":66,"path":67,"stem":68,"description":671,"icon":69,"children":-1},"Load Veresk configs in a Unity game with caching on the device.",1793977349217]