[{"data":1,"prerenderedAt":10836},["ShallowReactive",2],{"navigation":3,"/developers/best-practices":506,"/developers/best-practices-surround":10831},[4,66,204,292,339,402,450,482],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Whitepaper","i-lucide-file-text","/whitepaper","1.whitepaper",[10,13,17,22,27,32,37,42,47,51,56,61],{"title":5,"path":7,"stem":11,"icon":12},"1.whitepaper/index","i-heroicons-document-text",{"title":14,"path":15,"stem":16,"icon":12},"Executive Summary","/whitepaper/executive-summary","1.whitepaper/1.executive-summary",{"title":18,"path":19,"stem":20,"icon":21},"Investment Opportunity","/whitepaper/investment-opportunity","1.whitepaper/10.investment-opportunity","i-heroicons-banknotes",{"title":23,"path":24,"stem":25,"icon":26},"Risk Analysis","/whitepaper/risk-analysis","1.whitepaper/11.risk-analysis","i-lucide-shield-alert",{"title":28,"path":29,"stem":30,"icon":31},"Problem Statement","/whitepaper/problem-statement","1.whitepaper/2.problem-statement","i-heroicons-exclamation-triangle",{"title":33,"path":34,"stem":35,"icon":36},"Solution Overview","/whitepaper/solution-overview","1.whitepaper/3.solution-overview","i-heroicons-light-bulb",{"title":38,"path":39,"stem":40,"icon":41},"Market Opportunity","/whitepaper/market-opportunity","1.whitepaper/4.market-opportunity","i-heroicons-chart-bar",{"title":43,"path":44,"stem":45,"icon":46},"Technology Architecture","/whitepaper/technology-architecture","1.whitepaper/5.technology-architecture","i-heroicons-cog",{"title":48,"path":49,"stem":50,"icon":21},"Business Model","/whitepaper/business-model","1.whitepaper/6.business-model",{"title":52,"path":53,"stem":54,"icon":55},"Competitive Advantages","/whitepaper/competitive-advantages","1.whitepaper/7.competitive-advantages","i-heroicons-rocket-launch",{"title":57,"path":58,"stem":59,"icon":60},"Roadmap & Milestones","/whitepaper/roadmap-milestones","1.whitepaper/8.roadmap-milestones","i-heroicons-map",{"title":62,"path":63,"stem":64,"icon":65},"Team & Advisors","/whitepaper/team-advisors","1.whitepaper/9.team-advisors","i-heroicons-users",{"title":67,"icon":68,"path":69,"stem":70,"children":71},"Techniques","i-lucide-graduation-cap","/techniques","2.techniques",[72,75,107,139,171],{"title":67,"path":69,"stem":73,"icon":74},"2.techniques/index","i-heroicons-academic-cap",{"title":76,"path":77,"stem":78,"children":79,"icon":81,"parent":70,"order":82},"Remote Viewing","/techniques/remote-viewing","2.techniques/1.remote-viewing/index",[80,83,88,93,98,103],{"title":76,"path":77,"stem":78,"icon":81,"parent":70,"order":82},"i-lucide-eye",1,{"title":84,"path":85,"stem":86,"icon":87},"Controlled Remote Viewing (CRV)","/techniques/remote-viewing/controlled-remote-viewing-crv","2.techniques/1.remote-viewing/1.controlled-remote-viewing-crv","i-heroicons-clipboard-document-check",{"title":89,"path":90,"stem":91,"icon":92},"Scientific Remote Viewing (SRV)","/techniques/remote-viewing/scientific-remote-viewing-srv","2.techniques/1.remote-viewing/2.scientific-remote-viewing-srv","i-lucide-microscope",{"title":94,"path":95,"stem":96,"icon":97},"Technical Remote Viewing (TRV)","/techniques/remote-viewing/technical-remote-viewing-trv","2.techniques/1.remote-viewing/3.technical-remote-viewing-trv","i-heroicons-cog-6-tooth",{"title":99,"path":100,"stem":101,"icon":102},"Extended Remote Viewing (ERV)","/techniques/remote-viewing/extended-remote-viewing-erv","2.techniques/1.remote-viewing/4.extended-remote-viewing-erv","i-heroicons-arrows-pointing-out",{"title":104,"path":105,"stem":106,"icon":74},"RV Training & Development","/techniques/remote-viewing/rv-training-development","2.techniques/1.remote-viewing/5.rv-training-development",{"title":108,"path":109,"stem":110,"children":111,"icon":113,"parent":70,"order":114},"Dowsing","/techniques/dowsing","2.techniques/2.dowsing/index",[112,115,120,125,130,134],{"title":108,"path":109,"stem":110,"icon":113,"parent":70,"order":114},"i-lucide-compass",2,{"title":116,"path":117,"stem":118,"icon":119},"Pendulum Dowsing","/techniques/dowsing/pendulum-dowsing","2.techniques/2.dowsing/1.pendulum-dowsing","i-heroicons-clock",{"title":121,"path":122,"stem":123,"icon":124},"L-Rods Dowsing","/techniques/dowsing/l-rods-dowsing","2.techniques/2.dowsing/2.l-rods-dowsing","i-heroicons-adjustments-horizontal",{"title":126,"path":127,"stem":128,"icon":129},"Y-Rods Dowsing","/techniques/dowsing/y-rods-dowsing","2.techniques/2.dowsing/3.y-rods-dowsing","i-lucide-git-fork",{"title":131,"path":132,"stem":133,"icon":60},"Map Dowsing","/techniques/dowsing/map-dowsing","2.techniques/2.dowsing/4.map-dowsing",{"title":135,"path":136,"stem":137,"icon":138},"Information Dowsing","/techniques/dowsing/information-dowsing","2.techniques/2.dowsing/5.information-dowsing","i-heroicons-question-mark-circle",{"title":140,"path":141,"stem":142,"children":143,"icon":145,"parent":70,"order":146},"ESP Development","/techniques/esp-development","2.techniques/3.esp-development/index",[144,147,152,157,162,167],{"title":140,"path":141,"stem":142,"icon":145,"parent":70,"order":146},"i-lucide-brain",3,{"title":148,"path":149,"stem":150,"icon":151},"Telepathy Training","/techniques/esp-development/telepathy-training","2.techniques/3.esp-development/1.telepathy-training","i-heroicons-chat-bubble-left-right",{"title":153,"path":154,"stem":155,"icon":156},"Clairvoyance Development","/techniques/esp-development/clairvoyance-development","2.techniques/3.esp-development/2.clairvoyance-development","i-heroicons-eye",{"title":158,"path":159,"stem":160,"icon":161},"Clairaudience Practice","/techniques/esp-development/clairaudience-practice","2.techniques/3.esp-development/3.clairaudience-practice","i-heroicons-speaker-wave",{"title":163,"path":164,"stem":165,"icon":166},"Clairsentience Enhancement","/techniques/esp-development/clairsentience-enhancement","2.techniques/3.esp-development/4.clairsentience-enhancement","i-heroicons-hand-raised",{"title":168,"path":169,"stem":170,"icon":119},"Precognition Exercises","/techniques/esp-development/precognition-exercises","2.techniques/3.esp-development/5.precognition-exercises",{"title":172,"path":173,"stem":174,"children":175,"icon":177,"parent":70,"order":178},"Other Techniques","/techniques/other-techniques","2.techniques/4.other-techniques/index",[176,179,184,189,194,199],{"title":172,"path":173,"stem":174,"icon":177,"parent":70,"order":178},"i-lucide-sparkles",4,{"title":180,"path":181,"stem":182,"icon":183},"Tarot Reading","/techniques/other-techniques/tarot-reading","2.techniques/4.other-techniques/1.tarot-reading","i-heroicons-rectangle-stack",{"title":185,"path":186,"stem":187,"icon":188},"Astrology Applications","/techniques/other-techniques/astrology-applications","2.techniques/4.other-techniques/2.astrology-applications","i-heroicons-star",{"title":190,"path":191,"stem":192,"icon":193},"Numerology Methods","/techniques/other-techniques/numerology-methods","2.techniques/4.other-techniques/3.numerology-methods","i-heroicons-calculator",{"title":195,"path":196,"stem":197,"icon":198},"Scrying Practices","/techniques/other-techniques/scrying-practices","2.techniques/4.other-techniques/4.scrying-practices","i-heroicons-globe-americas",{"title":200,"path":201,"stem":202,"icon":203},"Meditation & Focus","/techniques/other-techniques/meditation-focus","2.techniques/4.other-techniques/5.meditation-focus","i-heroicons-sun",{"title":205,"icon":206,"path":207,"stem":208,"children":209},"Use Cases","i-lucide-briefcase","/use-cases","3.use-cases",[210,213,218,223,228,233,239,244,249,253,258,263,269,274,280,286],{"title":205,"path":207,"stem":211,"icon":212},"3.use-cases/index","i-heroicons-briefcase",{"title":214,"path":215,"stem":216,"icon":217,"parent":208,"order":82},"Missing Persons Applications","/use-cases/missing-persons","3.use-cases/1.missing-persons","i-heroicons-user-group",{"title":219,"path":220,"stem":221,"icon":41,"parent":208,"order":222},"Market Intelligence","/use-cases/market-intelligence","3.use-cases/10.market-intelligence",10,{"title":224,"path":225,"stem":226,"icon":21,"parent":208,"order":227},"Investment Opportunities","/use-cases/investment-opportunities","3.use-cases/11.investment-opportunities",11,{"title":229,"path":230,"stem":231,"icon":65,"parent":208,"order":232},"Competitive Analysis","/use-cases/competitive-analysis","3.use-cases/12.competitive-analysis",12,{"title":234,"path":235,"stem":236,"icon":237,"parent":208,"order":238},"Personal Guidance","/use-cases/personal-guidance","3.use-cases/13.personal-guidance","i-heroicons-heart",13,{"title":240,"path":241,"stem":242,"icon":74,"parent":208,"order":243},"Skill Development","/use-cases/skill-development","3.use-cases/14.skill-development",14,{"title":245,"path":246,"stem":247,"icon":60,"parent":208,"order":248},"Life Decisions","/use-cases/life-decisions","3.use-cases/15.life-decisions",15,{"title":250,"path":251,"stem":252,"icon":21,"parent":208,"order":114},"FBI Reward Cases","/use-cases/fbi-reward-cases","3.use-cases/2.fbi-reward-cases",{"title":254,"path":255,"stem":256,"icon":257,"parent":208,"order":146},"Success Stories","/use-cases/success-stories","3.use-cases/3.success-stories","i-heroicons-trophy",{"title":259,"path":260,"stem":261,"icon":262,"parent":208,"order":178},"Most Wanted Fugitives","/use-cases/most-wanted-fugitives","3.use-cases/4.most-wanted-fugitives","i-heroicons-finger-print",{"title":264,"path":265,"stem":266,"icon":267,"parent":208,"order":268},"Criminal Investigations","/use-cases/criminal-investigations","3.use-cases/5.criminal-investigations","i-heroicons-shield-check",5,{"title":270,"path":271,"stem":272,"icon":119,"parent":208,"order":273},"Cold Case Solutions","/use-cases/cold-case-solutions","3.use-cases/6.cold-case-solutions",6,{"title":275,"path":276,"stem":277,"icon":278,"parent":208,"order":279},"Archaeological Discoveries","/use-cases/archaeological-discoveries","3.use-cases/7.archaeological-discoveries","i-heroicons-building-library",7,{"title":281,"path":282,"stem":283,"icon":284,"parent":208,"order":285},"Historical Site Location","/use-cases/historical-site-location","3.use-cases/8.historical-site-location","i-heroicons-map-pin",8,{"title":287,"path":288,"stem":289,"icon":290,"parent":208,"order":291},"Ancient Artifact Finding","/use-cases/ancient-artifact-finding","3.use-cases/9.ancient-artifact-finding","i-heroicons-gift",9,{"title":293,"icon":294,"path":295,"stem":296,"children":297},"Investors","i-lucide-dollar-sign","/investors","4.investors",[298,300,304,307,311,316,321,325,330,335],{"title":293,"path":295,"stem":299,"icon":21},"4.investors/index",{"title":301,"path":302,"stem":303,"icon":41,"parent":296,"order":82},"Investment Overview","/investors/investment-overview","4.investors/1.investment-overview",{"title":38,"path":305,"stem":306,"icon":198,"parent":296,"order":114},"/investors/market-opportunity","4.investors/2.market-opportunity",{"title":308,"path":309,"stem":310,"icon":267,"parent":296,"order":146},"Competitive Advantage","/investors/competitive-advantage","4.investors/3.competitive-advantage",{"title":312,"path":313,"stem":314,"icon":315,"parent":296,"order":178},"Financial Projections","/investors/financial-projections","4.investors/4.financial-projections","i-lucide-trending-up",{"title":317,"path":318,"stem":319,"icon":320,"parent":296,"order":268},"Key Metrics","/investors/key-metrics","4.investors/5.key-metrics","i-heroicons-chart-pie",{"title":322,"path":323,"stem":324,"icon":21,"parent":296,"order":273},"Use of Funds","/investors/use-of-funds","4.investors/6.use-of-funds",{"title":326,"path":327,"stem":328,"icon":329,"parent":296,"order":279},"Investment Process","/investors/investment-process","4.investors/7.investment-process","i-heroicons-arrow-path",{"title":331,"path":332,"stem":333,"icon":334,"parent":296,"order":285},"Partnership Opportunities","/investors/partnership-opportunities","4.investors/8.partnership-opportunities","i-lucide-handshake",{"title":336,"path":337,"stem":338,"icon":138,"parent":296,"order":291},"Frequently Asked Questions","/investors/faq","4.investors/9.faq",{"title":340,"icon":341,"path":342,"stem":343,"children":344},"Developers","i-lucide-code","/developers","5.developers",[345,348,352,357,361,366,371,376,380,384,389,394,398],{"title":340,"path":342,"stem":346,"icon":347},"5.developers/index","i-heroicons-code-bracket",{"title":349,"path":350,"stem":351,"icon":55,"parent":343,"order":82},"Getting Started","/developers/getting-started","5.developers/1.getting-started",{"title":353,"path":354,"stem":355,"icon":356,"order":222},"Troubleshooting","/developers/troubleshooting","5.developers/10.troubleshooting","i-heroicons-wrench-screwdriver",{"title":358,"path":359,"stem":360,"icon":12,"order":227},"Changelog","/developers/changelog","5.developers/11.changelog",{"title":362,"path":363,"stem":364,"icon":365,"order":232},"Support","/developers/support","5.developers/12.support","i-heroicons-lifebuoy",{"title":367,"path":368,"stem":369,"icon":370,"parent":343,"order":114},"Platform Overview","/developers/platform-overview","5.developers/2.platform-overview","i-heroicons-cube",{"title":372,"path":373,"stem":374,"icon":375,"parent":343,"order":146},"Authentication","/developers/authentication","5.developers/3.authentication","i-heroicons-key",{"title":377,"path":378,"stem":379,"icon":347,"order":178},"API Reference","/developers/api-reference","5.developers/4.api-reference",{"title":381,"path":382,"stem":383,"icon":370,"order":268},"SDKs & Libraries","/developers/sdks","5.developers/5.sdks",{"title":385,"path":386,"stem":387,"icon":388,"order":273},"Webhooks","/developers/webhooks","5.developers/6.webhooks","i-heroicons-bell",{"title":390,"path":391,"stem":392,"icon":393,"order":279},"Integration Guides","/developers/integration-guides","5.developers/7.integration-guides","i-heroicons-puzzle-piece",{"title":395,"path":396,"stem":397,"icon":356,"order":285},"Developer Tools","/developers/developer-tools","5.developers/8.developer-tools",{"title":399,"path":400,"stem":401,"icon":36,"order":291},"Best Practices","/developers/best-practices","5.developers/9.best-practices",{"title":403,"icon":404,"path":405,"stem":406,"children":407},"Research","i-lucide-search","/research","6.research",[408,410,414,419,423,428,432,437,441,446],{"title":403,"path":405,"stem":409,"icon":92},"6.research/index",{"title":411,"path":412,"stem":413,"icon":92,"parent":406,"order":82},"Research Overview","/research/research-overview","6.research/1.research-overview",{"title":415,"path":416,"stem":417,"icon":418,"parent":406,"order":114},"Methodology Validation","/research/methodology-validation","6.research/2.methodology-validation","i-heroicons-check-circle",{"title":420,"path":421,"stem":422,"icon":55,"order":146},"Stargate Project Research","/research/stargate-project","6.research/3.stargate-project",{"title":424,"path":425,"stem":426,"icon":427,"order":178},"Government Programs Research","/research/government-programs","6.research/4.government-programs","i-heroicons-building-office",{"title":429,"path":430,"stem":431,"icon":257,"order":268},"Historical Success Cases","/research/historical-success-cases","6.research/5.historical-success-cases",{"title":433,"path":434,"stem":435,"icon":436,"order":273},"Ongoing Research","/research/ongoing-research","6.research/6.ongoing-research","i-heroicons-beaker",{"title":438,"path":439,"stem":440,"icon":74,"order":279},"Academic Partnerships","/research/academic-partnerships","6.research/7.academic-partnerships",{"title":442,"path":443,"stem":444,"icon":445,"order":285},"Future Research Directions","/research/future-research","6.research/8.future-research","i-heroicons-sparkles",{"title":447,"path":448,"stem":449,"icon":12,"order":291},"Publications","/research/publications","6.research/9.publications",{"title":451,"icon":452,"path":453,"stem":454,"children":455},"Specifications","i-lucide-settings","/specifications","7.specifications",[456,458,462,466,470,474,478],{"title":451,"path":453,"stem":457,"icon":97},"7.specifications/index",{"title":459,"path":460,"stem":461},"Technical Specifications","/specifications/technical-specifications","7.specifications/1.technical-specifications",{"title":463,"path":464,"stem":465},"API Endpoints Reference","/specifications/api-endpoints","7.specifications/2.api-endpoints",{"title":467,"path":468,"stem":469},"Data Models & Schemas","/specifications/data-models","7.specifications/3.data-models",{"title":471,"path":472,"stem":473},"Integration Requirements","/specifications/integration-requirements","7.specifications/4.integration-requirements",{"title":475,"path":476,"stem":477},"Compliance & Standards","/specifications/compliance-standards","7.specifications/5.compliance-standards",{"title":479,"path":480,"stem":481},"Dir","/specifications/_dir","7.specifications/_dir",{"title":483,"icon":484,"path":485,"stem":486,"children":487},"Resources","i-lucide-book-open","/resources","8.resources",[488,491,495,498,502],{"title":483,"path":485,"stem":489,"icon":490},"8.resources/index","i-heroicons-book-open",{"title":492,"path":493,"stem":494},"Glossary","/resources/glossary","8.resources/1.glossary",{"title":336,"path":496,"stem":497},"/resources/faqs","8.resources/2.faqs",{"title":499,"path":500,"stem":501},"Downloads & Resources","/resources/downloads","8.resources/3.downloads",{"title":503,"path":504,"stem":505},"Community & Support","/resources/community","8.resources/4.community",{"id":507,"title":399,"body":508,"description":10824,"extension":10825,"links":10826,"meta":10827,"navigation":10828,"path":400,"seo":10829,"stem":401,"__hash__":10830},"docs/5.developers/9.best-practices.md",{"type":509,"value":510,"toc":10796},"minimark",[511,516,520,524,529,535,850,855,892,1134,1139,1550,1554,1559,2157,2162,2405,2409,2414,2591,2596,2733,2737,2741,2746,3615,3620,4277,4281,4286,5173,5177,5181,5186,5596,5601,6211,6215,6220,7166,7170,7174,7179,7950,7954,7959,9228,9232,9236,9241,9878,9882,9887,10346,10350,10354,10359,10734,10738,10792],[512,513,515],"h2",{"id":514},"overview","Overview",[517,518,519],"p",{},"These best practices will help you build robust, secure, and efficient applications with the MindPeeker platform. Following these guidelines will ensure optimal performance, security, and user experience.",[512,521,523],{"id":522},"security-best-practices","Security Best Practices",[525,526,528],"h3",{"id":527},"api-key-management","API Key Management",[517,530,531],{},[532,533,534],"strong",{},"Never expose API keys in client-side code",[536,537,542],"pre",{"className":538,"code":539,"language":540,"meta":541,"style":541},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// ❌ BAD - Exposed in frontend\nconst client = new MindPeekerClient({\n  apiKey: 'pk_live_1234567890abcdef' // Visible to users\n});\n\n// ✅ GOOD - Server-side only\n// frontend.js\nasync function createSession(target) {\n  const response = await fetch('/api/sessions', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json' },\n    body: JSON.stringify({ target })\n  });\n  return response.json();\n}\n\n// backend.js\nconst client = new MindPeekerClient({\n  apiKey: process.env.MINDPEEKER_API_KEY // Secure environment variable\n});\n","javascript","",[543,544,545,553,580,602,613,619,624,629,651,683,700,729,759,768,785,790,795,801,818,841],"code",{"__ignoreMap":541},[546,547,549],"span",{"class":548,"line":82},"line",[546,550,552],{"class":551},"sHwdD","// ❌ BAD - Exposed in frontend\n",[546,554,555,559,563,567,570,574,577],{"class":548,"line":114},[546,556,558],{"class":557},"spNyl","const",[546,560,562],{"class":561},"sTEyZ"," client ",[546,564,566],{"class":565},"sMK4o","=",[546,568,569],{"class":565}," new",[546,571,573],{"class":572},"s2Zo4"," MindPeekerClient",[546,575,576],{"class":561},"(",[546,578,579],{"class":565},"{\n",[546,581,582,586,589,592,596,599],{"class":548,"line":146},[546,583,585],{"class":584},"swJcz","  apiKey",[546,587,588],{"class":565},":",[546,590,591],{"class":565}," '",[546,593,595],{"class":594},"sfazB","pk_live_1234567890abcdef",[546,597,598],{"class":565},"'",[546,600,601],{"class":551}," // Visible to users\n",[546,603,604,607,610],{"class":548,"line":178},[546,605,606],{"class":565},"}",[546,608,609],{"class":561},")",[546,611,612],{"class":565},";\n",[546,614,615],{"class":548,"line":268},[546,616,618],{"emptyLinePlaceholder":617},true,"\n",[546,620,621],{"class":548,"line":273},[546,622,623],{"class":551},"// ✅ GOOD - Server-side only\n",[546,625,626],{"class":548,"line":279},[546,627,628],{"class":551},"// frontend.js\n",[546,630,631,634,637,640,642,646,648],{"class":548,"line":285},[546,632,633],{"class":557},"async",[546,635,636],{"class":557}," function",[546,638,639],{"class":572}," createSession",[546,641,576],{"class":565},[546,643,645],{"class":644},"sHdIc","target",[546,647,609],{"class":565},[546,649,650],{"class":565}," {\n",[546,652,653,656,659,662,666,669,671,673,676,678,681],{"class":548,"line":291},[546,654,655],{"class":557},"  const",[546,657,658],{"class":561}," response",[546,660,661],{"class":565}," =",[546,663,665],{"class":664},"s7zQu"," await",[546,667,668],{"class":572}," fetch",[546,670,576],{"class":584},[546,672,598],{"class":565},[546,674,675],{"class":594},"/api/sessions",[546,677,598],{"class":565},[546,679,680],{"class":565},",",[546,682,650],{"class":565},[546,684,685,688,690,692,695,697],{"class":548,"line":222},[546,686,687],{"class":584},"    method",[546,689,588],{"class":565},[546,691,591],{"class":565},[546,693,694],{"class":594},"POST",[546,696,598],{"class":565},[546,698,699],{"class":565},",\n",[546,701,702,705,707,710,712,715,717,719,721,724,726],{"class":548,"line":227},[546,703,704],{"class":584},"    headers",[546,706,588],{"class":565},[546,708,709],{"class":565}," {",[546,711,591],{"class":565},[546,713,714],{"class":584},"Content-Type",[546,716,598],{"class":565},[546,718,588],{"class":565},[546,720,591],{"class":565},[546,722,723],{"class":594},"application/json",[546,725,598],{"class":565},[546,727,728],{"class":565}," },\n",[546,730,731,734,736,739,742,745,747,750,753,756],{"class":548,"line":232},[546,732,733],{"class":584},"    body",[546,735,588],{"class":565},[546,737,738],{"class":561}," JSON",[546,740,741],{"class":565},".",[546,743,744],{"class":572},"stringify",[546,746,576],{"class":584},[546,748,749],{"class":565},"{",[546,751,752],{"class":561}," target",[546,754,755],{"class":565}," }",[546,757,758],{"class":584},")\n",[546,760,761,764,766],{"class":548,"line":238},[546,762,763],{"class":565},"  }",[546,765,609],{"class":584},[546,767,612],{"class":565},[546,769,770,773,775,777,780,783],{"class":548,"line":243},[546,771,772],{"class":664},"  return",[546,774,658],{"class":561},[546,776,741],{"class":565},[546,778,779],{"class":572},"json",[546,781,782],{"class":584},"()",[546,784,612],{"class":565},[546,786,787],{"class":548,"line":248},[546,788,789],{"class":565},"}\n",[546,791,793],{"class":548,"line":792},16,[546,794,618],{"emptyLinePlaceholder":617},[546,796,798],{"class":548,"line":797},17,[546,799,800],{"class":551},"// backend.js\n",[546,802,804,806,808,810,812,814,816],{"class":548,"line":803},18,[546,805,558],{"class":557},[546,807,562],{"class":561},[546,809,566],{"class":565},[546,811,569],{"class":565},[546,813,573],{"class":572},[546,815,576],{"class":561},[546,817,579],{"class":565},[546,819,821,823,825,828,830,833,835,838],{"class":548,"line":820},19,[546,822,585],{"class":584},[546,824,588],{"class":565},[546,826,827],{"class":561}," process",[546,829,741],{"class":565},[546,831,832],{"class":561},"env",[546,834,741],{"class":565},[546,836,837],{"class":561},"MINDPEEKER_API_KEY ",[546,839,840],{"class":551},"// Secure environment variable\n",[546,842,844,846,848],{"class":548,"line":843},20,[546,845,606],{"class":565},[546,847,609],{"class":561},[546,849,612],{"class":565},[517,851,852],{},[532,853,854],{},"Use environment variables for configuration",[536,856,860],{"className":857,"code":858,"language":859,"meta":541,"style":541},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","MINDPEEKER_API_KEY=your_api_key_here\nMINDPEEKER_WEBHOOK_SECRET=your_webhook_secret\nMINDPEEKER_API_URL=https://api.mindpeeker.com/v1\n","bash",[543,861,862,872,882],{"__ignoreMap":541},[546,863,864,867,869],{"class":548,"line":82},[546,865,866],{"class":561},"MINDPEEKER_API_KEY",[546,868,566],{"class":565},[546,870,871],{"class":594},"your_api_key_here\n",[546,873,874,877,879],{"class":548,"line":114},[546,875,876],{"class":561},"MINDPEEKER_WEBHOOK_SECRET",[546,878,566],{"class":565},[546,880,881],{"class":594},"your_webhook_secret\n",[546,883,884,887,889],{"class":548,"line":146},[546,885,886],{"class":561},"MINDPEEKER_API_URL",[546,888,566],{"class":565},[546,890,891],{"class":594},"https://api.mindpeeker.com/v1\n",[536,893,895],{"className":538,"code":894,"language":540,"meta":541,"style":541},"// config.js\nconst config = {\n  apiKey: process.env.MINDPEEKER_API_KEY,\n  webhookSecret: process.env.MINDPEEKER_WEBHOOK_SECRET,\n  apiUrl: process.env.MINDPEEKER_API_URL || 'https://api.mindpeeker.com/v1'\n};\n\n// Validate required configuration\nconst requiredEnvVars = ['MINDPEEKER_API_KEY'];\nconst missingVars = requiredEnvVars.filter(varName => !process.env[varName]);\n\nif (missingVars.length > 0) {\n  throw new Error(`Missing required environment variables: ${missingVars.join(', ')}`);\n}\n",[543,896,897,902,913,931,950,979,984,988,993,1016,1054,1058,1083,1130],{"__ignoreMap":541},[546,898,899],{"class":548,"line":82},[546,900,901],{"class":551},"// config.js\n",[546,903,904,906,909,911],{"class":548,"line":114},[546,905,558],{"class":557},[546,907,908],{"class":561}," config ",[546,910,566],{"class":565},[546,912,650],{"class":565},[546,914,915,917,919,921,923,925,927,929],{"class":548,"line":146},[546,916,585],{"class":584},[546,918,588],{"class":565},[546,920,827],{"class":561},[546,922,741],{"class":565},[546,924,832],{"class":561},[546,926,741],{"class":565},[546,928,866],{"class":561},[546,930,699],{"class":565},[546,932,933,936,938,940,942,944,946,948],{"class":548,"line":178},[546,934,935],{"class":584},"  webhookSecret",[546,937,588],{"class":565},[546,939,827],{"class":561},[546,941,741],{"class":565},[546,943,832],{"class":561},[546,945,741],{"class":565},[546,947,876],{"class":561},[546,949,699],{"class":565},[546,951,952,955,957,959,961,963,965,968,971,973,976],{"class":548,"line":268},[546,953,954],{"class":584},"  apiUrl",[546,956,588],{"class":565},[546,958,827],{"class":561},[546,960,741],{"class":565},[546,962,832],{"class":561},[546,964,741],{"class":565},[546,966,967],{"class":561},"MINDPEEKER_API_URL ",[546,969,970],{"class":565},"||",[546,972,591],{"class":565},[546,974,975],{"class":594},"https://api.mindpeeker.com/v1",[546,977,978],{"class":565},"'\n",[546,980,981],{"class":548,"line":273},[546,982,983],{"class":565},"};\n",[546,985,986],{"class":548,"line":279},[546,987,618],{"emptyLinePlaceholder":617},[546,989,990],{"class":548,"line":285},[546,991,992],{"class":551},"// Validate required configuration\n",[546,994,995,997,1000,1002,1005,1007,1009,1011,1014],{"class":548,"line":291},[546,996,558],{"class":557},[546,998,999],{"class":561}," requiredEnvVars ",[546,1001,566],{"class":565},[546,1003,1004],{"class":561}," [",[546,1006,598],{"class":565},[546,1008,866],{"class":594},[546,1010,598],{"class":565},[546,1012,1013],{"class":561},"]",[546,1015,612],{"class":565},[546,1017,1018,1020,1023,1025,1028,1030,1033,1035,1038,1041,1044,1047,1049,1052],{"class":548,"line":222},[546,1019,558],{"class":557},[546,1021,1022],{"class":561}," missingVars ",[546,1024,566],{"class":565},[546,1026,1027],{"class":561}," requiredEnvVars",[546,1029,741],{"class":565},[546,1031,1032],{"class":572},"filter",[546,1034,576],{"class":561},[546,1036,1037],{"class":644},"varName",[546,1039,1040],{"class":557}," =>",[546,1042,1043],{"class":565}," !",[546,1045,1046],{"class":561},"process",[546,1048,741],{"class":565},[546,1050,1051],{"class":561},"env[varName])",[546,1053,612],{"class":565},[546,1055,1056],{"class":548,"line":227},[546,1057,618],{"emptyLinePlaceholder":617},[546,1059,1060,1063,1066,1068,1071,1074,1078,1081],{"class":548,"line":232},[546,1061,1062],{"class":664},"if",[546,1064,1065],{"class":561}," (missingVars",[546,1067,741],{"class":565},[546,1069,1070],{"class":561},"length ",[546,1072,1073],{"class":565},">",[546,1075,1077],{"class":1076},"sbssI"," 0",[546,1079,1080],{"class":561},") ",[546,1082,579],{"class":565},[546,1084,1085,1088,1090,1093,1095,1098,1101,1104,1107,1109,1112,1114,1116,1119,1121,1123,1126,1128],{"class":548,"line":238},[546,1086,1087],{"class":664},"  throw",[546,1089,569],{"class":565},[546,1091,1092],{"class":572}," Error",[546,1094,576],{"class":584},[546,1096,1097],{"class":565},"`",[546,1099,1100],{"class":594},"Missing required environment variables: ",[546,1102,1103],{"class":565},"${",[546,1105,1106],{"class":561},"missingVars",[546,1108,741],{"class":565},[546,1110,1111],{"class":572},"join",[546,1113,576],{"class":561},[546,1115,598],{"class":565},[546,1117,1118],{"class":594},", ",[546,1120,598],{"class":565},[546,1122,609],{"class":561},[546,1124,1125],{"class":565},"}`",[546,1127,609],{"class":584},[546,1129,612],{"class":565},[546,1131,1132],{"class":548,"line":243},[546,1133,789],{"class":565},[517,1135,1136],{},[532,1137,1138],{},"Implement API key rotation",[536,1140,1142],{"className":538,"code":1141,"language":540,"meta":541,"style":541},"class ApiKeyManager {\n  constructor() {\n    this.currentKey = process.env.MINDPEEKER_API_KEY;\n    this.backupKey = process.env.MINDPEEKER_BACKUP_API_KEY;\n    this.currentKeyIndex = 0;\n    this.keys = [this.currentKey, this.backupKey];\n  }\n  \n  getClient() {\n    return new MindPeekerClient({\n      apiKey: this.keys[this.currentKeyIndex]\n    });\n  }\n  \n  async rotateKey() {\n    // Try backup key first\n    this.currentKeyIndex = 1;\n    const testClient = this.getClient();\n    \n    try {\n      await testClient.sessions.list({ limit: 1 });\n      // Backup key works, make it primary\n      this.keys.reverse();\n      this.currentKeyIndex = 0;\n      console.log('API key rotation successful');\n    } catch (error) {\n      // Backup key failed, revert to original\n      this.currentKeyIndex = 0;\n      throw new Error('API key rotation failed: backup key invalid');\n    }\n  }\n}\n",[543,1143,1144,1155,1164,1186,1208,1221,1248,1253,1258,1267,1280,1301,1310,1314,1318,1330,1335,1348,1367,1372,1379,1414,1420,1437,1450,1474,1492,1498,1511,1534,1540,1545],{"__ignoreMap":541},[546,1145,1146,1149,1153],{"class":548,"line":82},[546,1147,1148],{"class":557},"class",[546,1150,1152],{"class":1151},"sBMFI"," ApiKeyManager",[546,1154,650],{"class":565},[546,1156,1157,1160,1162],{"class":548,"line":114},[546,1158,1159],{"class":557},"  constructor",[546,1161,782],{"class":565},[546,1163,650],{"class":565},[546,1165,1166,1169,1172,1174,1176,1178,1180,1182,1184],{"class":548,"line":146},[546,1167,1168],{"class":565},"    this.",[546,1170,1171],{"class":561},"currentKey",[546,1173,661],{"class":565},[546,1175,827],{"class":561},[546,1177,741],{"class":565},[546,1179,832],{"class":561},[546,1181,741],{"class":565},[546,1183,866],{"class":561},[546,1185,612],{"class":565},[546,1187,1188,1190,1193,1195,1197,1199,1201,1203,1206],{"class":548,"line":178},[546,1189,1168],{"class":565},[546,1191,1192],{"class":561},"backupKey",[546,1194,661],{"class":565},[546,1196,827],{"class":561},[546,1198,741],{"class":565},[546,1200,832],{"class":561},[546,1202,741],{"class":565},[546,1204,1205],{"class":561},"MINDPEEKER_BACKUP_API_KEY",[546,1207,612],{"class":565},[546,1209,1210,1212,1215,1217,1219],{"class":548,"line":268},[546,1211,1168],{"class":565},[546,1213,1214],{"class":561},"currentKeyIndex",[546,1216,661],{"class":565},[546,1218,1077],{"class":1076},[546,1220,612],{"class":565},[546,1222,1223,1225,1228,1230,1232,1235,1237,1239,1242,1244,1246],{"class":548,"line":273},[546,1224,1168],{"class":565},[546,1226,1227],{"class":561},"keys",[546,1229,661],{"class":565},[546,1231,1004],{"class":584},[546,1233,1234],{"class":565},"this.",[546,1236,1171],{"class":561},[546,1238,680],{"class":565},[546,1240,1241],{"class":565}," this.",[546,1243,1192],{"class":561},[546,1245,1013],{"class":584},[546,1247,612],{"class":565},[546,1249,1250],{"class":548,"line":279},[546,1251,1252],{"class":565},"  }\n",[546,1254,1255],{"class":548,"line":285},[546,1256,1257],{"class":561},"  \n",[546,1259,1260,1263,1265],{"class":548,"line":291},[546,1261,1262],{"class":584},"  getClient",[546,1264,782],{"class":565},[546,1266,650],{"class":565},[546,1268,1269,1272,1274,1276,1278],{"class":548,"line":222},[546,1270,1271],{"class":664},"    return",[546,1273,569],{"class":565},[546,1275,573],{"class":572},[546,1277,576],{"class":584},[546,1279,579],{"class":565},[546,1281,1282,1285,1287,1289,1291,1294,1296,1298],{"class":548,"line":227},[546,1283,1284],{"class":584},"      apiKey",[546,1286,588],{"class":565},[546,1288,1241],{"class":565},[546,1290,1227],{"class":561},[546,1292,1293],{"class":584},"[",[546,1295,1234],{"class":565},[546,1297,1214],{"class":561},[546,1299,1300],{"class":584},"]\n",[546,1302,1303,1306,1308],{"class":548,"line":232},[546,1304,1305],{"class":565},"    }",[546,1307,609],{"class":584},[546,1309,612],{"class":565},[546,1311,1312],{"class":548,"line":238},[546,1313,1252],{"class":565},[546,1315,1316],{"class":548,"line":243},[546,1317,1257],{"class":561},[546,1319,1320,1323,1326,1328],{"class":548,"line":248},[546,1321,1322],{"class":557},"  async",[546,1324,1325],{"class":584}," rotateKey",[546,1327,782],{"class":565},[546,1329,650],{"class":565},[546,1331,1332],{"class":548,"line":792},[546,1333,1334],{"class":551},"    // Try backup key first\n",[546,1336,1337,1339,1341,1343,1346],{"class":548,"line":797},[546,1338,1168],{"class":565},[546,1340,1214],{"class":561},[546,1342,661],{"class":565},[546,1344,1345],{"class":1076}," 1",[546,1347,612],{"class":565},[546,1349,1350,1353,1356,1358,1360,1363,1365],{"class":548,"line":803},[546,1351,1352],{"class":557},"    const",[546,1354,1355],{"class":561}," testClient",[546,1357,661],{"class":565},[546,1359,1241],{"class":565},[546,1361,1362],{"class":572},"getClient",[546,1364,782],{"class":584},[546,1366,612],{"class":565},[546,1368,1369],{"class":548,"line":820},[546,1370,1371],{"class":584},"    \n",[546,1373,1374,1377],{"class":548,"line":843},[546,1375,1376],{"class":664},"    try",[546,1378,650],{"class":565},[546,1380,1382,1385,1387,1389,1392,1394,1397,1399,1401,1404,1406,1408,1410,1412],{"class":548,"line":1381},21,[546,1383,1384],{"class":664},"      await",[546,1386,1355],{"class":561},[546,1388,741],{"class":565},[546,1390,1391],{"class":561},"sessions",[546,1393,741],{"class":565},[546,1395,1396],{"class":572},"list",[546,1398,576],{"class":584},[546,1400,749],{"class":565},[546,1402,1403],{"class":584}," limit",[546,1405,588],{"class":565},[546,1407,1345],{"class":1076},[546,1409,755],{"class":565},[546,1411,609],{"class":584},[546,1413,612],{"class":565},[546,1415,1417],{"class":548,"line":1416},22,[546,1418,1419],{"class":551},"      // Backup key works, make it primary\n",[546,1421,1423,1426,1428,1430,1433,1435],{"class":548,"line":1422},23,[546,1424,1425],{"class":565},"      this.",[546,1427,1227],{"class":561},[546,1429,741],{"class":565},[546,1431,1432],{"class":572},"reverse",[546,1434,782],{"class":584},[546,1436,612],{"class":565},[546,1438,1440,1442,1444,1446,1448],{"class":548,"line":1439},24,[546,1441,1425],{"class":565},[546,1443,1214],{"class":561},[546,1445,661],{"class":565},[546,1447,1077],{"class":1076},[546,1449,612],{"class":565},[546,1451,1453,1456,1458,1461,1463,1465,1468,1470,1472],{"class":548,"line":1452},25,[546,1454,1455],{"class":561},"      console",[546,1457,741],{"class":565},[546,1459,1460],{"class":572},"log",[546,1462,576],{"class":584},[546,1464,598],{"class":565},[546,1466,1467],{"class":594},"API key rotation successful",[546,1469,598],{"class":565},[546,1471,609],{"class":584},[546,1473,612],{"class":565},[546,1475,1477,1479,1482,1485,1488,1490],{"class":548,"line":1476},26,[546,1478,1305],{"class":565},[546,1480,1481],{"class":664}," catch",[546,1483,1484],{"class":584}," (",[546,1486,1487],{"class":561},"error",[546,1489,1080],{"class":584},[546,1491,579],{"class":565},[546,1493,1495],{"class":548,"line":1494},27,[546,1496,1497],{"class":551},"      // Backup key failed, revert to original\n",[546,1499,1501,1503,1505,1507,1509],{"class":548,"line":1500},28,[546,1502,1425],{"class":565},[546,1504,1214],{"class":561},[546,1506,661],{"class":565},[546,1508,1077],{"class":1076},[546,1510,612],{"class":565},[546,1512,1514,1517,1519,1521,1523,1525,1528,1530,1532],{"class":548,"line":1513},29,[546,1515,1516],{"class":664},"      throw",[546,1518,569],{"class":565},[546,1520,1092],{"class":572},[546,1522,576],{"class":584},[546,1524,598],{"class":565},[546,1526,1527],{"class":594},"API key rotation failed: backup key invalid",[546,1529,598],{"class":565},[546,1531,609],{"class":584},[546,1533,612],{"class":565},[546,1535,1537],{"class":548,"line":1536},30,[546,1538,1539],{"class":565},"    }\n",[546,1541,1543],{"class":548,"line":1542},31,[546,1544,1252],{"class":565},[546,1546,1548],{"class":548,"line":1547},32,[546,1549,789],{"class":565},[525,1551,1553],{"id":1552},"input-validation-and-sanitization","Input Validation and Sanitization",[517,1555,1556],{},[532,1557,1558],{},"Validate all user inputs",[536,1560,1562],{"className":538,"code":1561,"language":540,"meta":541,"style":541},"const Joi = require('joi');\n\nconst sessionSchema = Joi.object({\n  type: Joi.string().valid('remote_viewing', 'dowsing', 'automatic_writing').required(),\n  target: Joi.string().min(1).max(1000).required(),\n  modality: Joi.string().valid('visual', 'kinesthetic', 'auditory').optional(),\n  duration_minutes: Joi.number().integer().min(5).max(180).optional()\n});\n\nfunction validateSessionInput(data) {\n  const { error, value } = sessionSchema.validate(data);\n  if (error) {\n    throw new Error(`Validation error: ${error.details[0].message}`);\n  }\n  return value;\n}\n\n// Usage\napp.post('/api/sessions', async (req, res) => {\n  try {\n    const validatedData = validateSessionInput(req.body);\n    const session = await mindpeekerClient.sessions.create(validatedData);\n    res.json(session);\n  } catch (error) {\n    res.status(400).json({ error: error.message });\n  }\n});\n",[543,1563,1564,1589,1593,1614,1673,1720,1777,1829,1837,1841,1858,1892,1905,1946,1950,1958,1962,1966,1971,2010,2017,2041,2073,2091,2105,2145,2149],{"__ignoreMap":541},[546,1565,1566,1568,1571,1573,1576,1578,1580,1583,1585,1587],{"class":548,"line":82},[546,1567,558],{"class":557},[546,1569,1570],{"class":561}," Joi ",[546,1572,566],{"class":565},[546,1574,1575],{"class":572}," require",[546,1577,576],{"class":561},[546,1579,598],{"class":565},[546,1581,1582],{"class":594},"joi",[546,1584,598],{"class":565},[546,1586,609],{"class":561},[546,1588,612],{"class":565},[546,1590,1591],{"class":548,"line":114},[546,1592,618],{"emptyLinePlaceholder":617},[546,1594,1595,1597,1600,1602,1605,1607,1610,1612],{"class":548,"line":146},[546,1596,558],{"class":557},[546,1598,1599],{"class":561}," sessionSchema ",[546,1601,566],{"class":565},[546,1603,1604],{"class":561}," Joi",[546,1606,741],{"class":565},[546,1608,1609],{"class":572},"object",[546,1611,576],{"class":561},[546,1613,579],{"class":565},[546,1615,1616,1619,1621,1623,1625,1628,1630,1632,1635,1637,1639,1642,1644,1646,1648,1651,1653,1655,1657,1660,1662,1664,1666,1669,1671],{"class":548,"line":178},[546,1617,1618],{"class":584},"  type",[546,1620,588],{"class":565},[546,1622,1604],{"class":561},[546,1624,741],{"class":565},[546,1626,1627],{"class":572},"string",[546,1629,782],{"class":561},[546,1631,741],{"class":565},[546,1633,1634],{"class":572},"valid",[546,1636,576],{"class":561},[546,1638,598],{"class":565},[546,1640,1641],{"class":594},"remote_viewing",[546,1643,598],{"class":565},[546,1645,680],{"class":565},[546,1647,591],{"class":565},[546,1649,1650],{"class":594},"dowsing",[546,1652,598],{"class":565},[546,1654,680],{"class":565},[546,1656,591],{"class":565},[546,1658,1659],{"class":594},"automatic_writing",[546,1661,598],{"class":565},[546,1663,609],{"class":561},[546,1665,741],{"class":565},[546,1667,1668],{"class":572},"required",[546,1670,782],{"class":561},[546,1672,699],{"class":565},[546,1674,1675,1678,1680,1682,1684,1686,1688,1690,1693,1695,1698,1700,1702,1705,1707,1710,1712,1714,1716,1718],{"class":548,"line":268},[546,1676,1677],{"class":584},"  target",[546,1679,588],{"class":565},[546,1681,1604],{"class":561},[546,1683,741],{"class":565},[546,1685,1627],{"class":572},[546,1687,782],{"class":561},[546,1689,741],{"class":565},[546,1691,1692],{"class":572},"min",[546,1694,576],{"class":561},[546,1696,1697],{"class":1076},"1",[546,1699,609],{"class":561},[546,1701,741],{"class":565},[546,1703,1704],{"class":572},"max",[546,1706,576],{"class":561},[546,1708,1709],{"class":1076},"1000",[546,1711,609],{"class":561},[546,1713,741],{"class":565},[546,1715,1668],{"class":572},[546,1717,782],{"class":561},[546,1719,699],{"class":565},[546,1721,1722,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1746,1748,1750,1752,1755,1757,1759,1761,1764,1766,1768,1770,1773,1775],{"class":548,"line":273},[546,1723,1724],{"class":584},"  modality",[546,1726,588],{"class":565},[546,1728,1604],{"class":561},[546,1730,741],{"class":565},[546,1732,1627],{"class":572},[546,1734,782],{"class":561},[546,1736,741],{"class":565},[546,1738,1634],{"class":572},[546,1740,576],{"class":561},[546,1742,598],{"class":565},[546,1744,1745],{"class":594},"visual",[546,1747,598],{"class":565},[546,1749,680],{"class":565},[546,1751,591],{"class":565},[546,1753,1754],{"class":594},"kinesthetic",[546,1756,598],{"class":565},[546,1758,680],{"class":565},[546,1760,591],{"class":565},[546,1762,1763],{"class":594},"auditory",[546,1765,598],{"class":565},[546,1767,609],{"class":561},[546,1769,741],{"class":565},[546,1771,1772],{"class":572},"optional",[546,1774,782],{"class":561},[546,1776,699],{"class":565},[546,1778,1779,1782,1784,1786,1788,1791,1793,1795,1798,1800,1802,1804,1806,1809,1811,1813,1815,1817,1820,1822,1824,1826],{"class":548,"line":279},[546,1780,1781],{"class":584},"  duration_minutes",[546,1783,588],{"class":565},[546,1785,1604],{"class":561},[546,1787,741],{"class":565},[546,1789,1790],{"class":572},"number",[546,1792,782],{"class":561},[546,1794,741],{"class":565},[546,1796,1797],{"class":572},"integer",[546,1799,782],{"class":561},[546,1801,741],{"class":565},[546,1803,1692],{"class":572},[546,1805,576],{"class":561},[546,1807,1808],{"class":1076},"5",[546,1810,609],{"class":561},[546,1812,741],{"class":565},[546,1814,1704],{"class":572},[546,1816,576],{"class":561},[546,1818,1819],{"class":1076},"180",[546,1821,609],{"class":561},[546,1823,741],{"class":565},[546,1825,1772],{"class":572},[546,1827,1828],{"class":561},"()\n",[546,1830,1831,1833,1835],{"class":548,"line":285},[546,1832,606],{"class":565},[546,1834,609],{"class":561},[546,1836,612],{"class":565},[546,1838,1839],{"class":548,"line":291},[546,1840,618],{"emptyLinePlaceholder":617},[546,1842,1843,1846,1849,1851,1854,1856],{"class":548,"line":222},[546,1844,1845],{"class":557},"function",[546,1847,1848],{"class":572}," validateSessionInput",[546,1850,576],{"class":565},[546,1852,1853],{"class":644},"data",[546,1855,609],{"class":565},[546,1857,650],{"class":565},[546,1859,1860,1862,1864,1867,1869,1872,1874,1876,1879,1881,1884,1886,1888,1890],{"class":548,"line":227},[546,1861,655],{"class":557},[546,1863,709],{"class":565},[546,1865,1866],{"class":561}," error",[546,1868,680],{"class":565},[546,1870,1871],{"class":561}," value",[546,1873,755],{"class":565},[546,1875,661],{"class":565},[546,1877,1878],{"class":561}," sessionSchema",[546,1880,741],{"class":565},[546,1882,1883],{"class":572},"validate",[546,1885,576],{"class":584},[546,1887,1853],{"class":561},[546,1889,609],{"class":584},[546,1891,612],{"class":565},[546,1893,1894,1897,1899,1901,1903],{"class":548,"line":232},[546,1895,1896],{"class":664},"  if",[546,1898,1484],{"class":584},[546,1900,1487],{"class":561},[546,1902,1080],{"class":584},[546,1904,579],{"class":565},[546,1906,1907,1910,1912,1914,1916,1918,1921,1923,1925,1927,1930,1933,1935,1937,1940,1942,1944],{"class":548,"line":238},[546,1908,1909],{"class":664},"    throw",[546,1911,569],{"class":565},[546,1913,1092],{"class":572},[546,1915,576],{"class":584},[546,1917,1097],{"class":565},[546,1919,1920],{"class":594},"Validation error: ",[546,1922,1103],{"class":565},[546,1924,1487],{"class":561},[546,1926,741],{"class":565},[546,1928,1929],{"class":561},"details[",[546,1931,1932],{"class":1076},"0",[546,1934,1013],{"class":561},[546,1936,741],{"class":565},[546,1938,1939],{"class":561},"message",[546,1941,1125],{"class":565},[546,1943,609],{"class":584},[546,1945,612],{"class":565},[546,1947,1948],{"class":548,"line":243},[546,1949,1252],{"class":565},[546,1951,1952,1954,1956],{"class":548,"line":248},[546,1953,772],{"class":664},[546,1955,1871],{"class":561},[546,1957,612],{"class":565},[546,1959,1960],{"class":548,"line":792},[546,1961,789],{"class":565},[546,1963,1964],{"class":548,"line":797},[546,1965,618],{"emptyLinePlaceholder":617},[546,1967,1968],{"class":548,"line":803},[546,1969,1970],{"class":551},"// Usage\n",[546,1972,1973,1976,1978,1981,1983,1985,1987,1989,1991,1994,1996,1999,2001,2004,2006,2008],{"class":548,"line":820},[546,1974,1975],{"class":561},"app",[546,1977,741],{"class":565},[546,1979,1980],{"class":572},"post",[546,1982,576],{"class":561},[546,1984,598],{"class":565},[546,1986,675],{"class":594},[546,1988,598],{"class":565},[546,1990,680],{"class":565},[546,1992,1993],{"class":557}," async",[546,1995,1484],{"class":565},[546,1997,1998],{"class":644},"req",[546,2000,680],{"class":565},[546,2002,2003],{"class":644}," res",[546,2005,609],{"class":565},[546,2007,1040],{"class":557},[546,2009,650],{"class":565},[546,2011,2012,2015],{"class":548,"line":843},[546,2013,2014],{"class":664},"  try",[546,2016,650],{"class":565},[546,2018,2019,2021,2024,2026,2028,2030,2032,2034,2037,2039],{"class":548,"line":1381},[546,2020,1352],{"class":557},[546,2022,2023],{"class":561}," validatedData",[546,2025,661],{"class":565},[546,2027,1848],{"class":572},[546,2029,576],{"class":584},[546,2031,1998],{"class":561},[546,2033,741],{"class":565},[546,2035,2036],{"class":561},"body",[546,2038,609],{"class":584},[546,2040,612],{"class":565},[546,2042,2043,2045,2048,2050,2052,2055,2057,2059,2061,2064,2066,2069,2071],{"class":548,"line":1416},[546,2044,1352],{"class":557},[546,2046,2047],{"class":561}," session",[546,2049,661],{"class":565},[546,2051,665],{"class":664},[546,2053,2054],{"class":561}," mindpeekerClient",[546,2056,741],{"class":565},[546,2058,1391],{"class":561},[546,2060,741],{"class":565},[546,2062,2063],{"class":572},"create",[546,2065,576],{"class":584},[546,2067,2068],{"class":561},"validatedData",[546,2070,609],{"class":584},[546,2072,612],{"class":565},[546,2074,2075,2078,2080,2082,2084,2087,2089],{"class":548,"line":1422},[546,2076,2077],{"class":561},"    res",[546,2079,741],{"class":565},[546,2081,779],{"class":572},[546,2083,576],{"class":584},[546,2085,2086],{"class":561},"session",[546,2088,609],{"class":584},[546,2090,612],{"class":565},[546,2092,2093,2095,2097,2099,2101,2103],{"class":548,"line":1439},[546,2094,763],{"class":565},[546,2096,1481],{"class":664},[546,2098,1484],{"class":584},[546,2100,1487],{"class":561},[546,2102,1080],{"class":584},[546,2104,579],{"class":565},[546,2106,2107,2109,2111,2114,2116,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143],{"class":548,"line":1452},[546,2108,2077],{"class":561},[546,2110,741],{"class":565},[546,2112,2113],{"class":572},"status",[546,2115,576],{"class":584},[546,2117,2118],{"class":1076},"400",[546,2120,609],{"class":584},[546,2122,741],{"class":565},[546,2124,779],{"class":572},[546,2126,576],{"class":584},[546,2128,749],{"class":565},[546,2130,1866],{"class":584},[546,2132,588],{"class":565},[546,2134,1866],{"class":561},[546,2136,741],{"class":565},[546,2138,1939],{"class":561},[546,2140,755],{"class":565},[546,2142,609],{"class":584},[546,2144,612],{"class":565},[546,2146,2147],{"class":548,"line":1476},[546,2148,1252],{"class":565},[546,2150,2151,2153,2155],{"class":548,"line":1494},[546,2152,606],{"class":565},[546,2154,609],{"class":561},[546,2156,612],{"class":565},[517,2158,2159],{},[532,2160,2161],{},"Sanitize outputs to prevent data leakage",[536,2163,2165],{"className":538,"code":2164,"language":540,"meta":541,"style":541},"function sanitizeSessionResults(results) {\n  const sanitized = {\n    sessionId: results.session_id,\n    status: results.status,\n    confidenceScore: results.confidence_score,\n    completedAt: results.completed_at\n  };\n  \n  // Only include results if they exist and user has permission\n  if (results.results && hasPermissionToViewResults(req.user)) {\n    sanitized.results = {\n      coordinates: results.results.coordinates,\n      descriptors: results.results.descriptors,\n      // Exclude sensitive internal data\n      internalMetadata: undefined,\n      analystNotes: undefined\n    };\n  }\n  \n  return sanitized;\n}\n",[543,2166,2167,2183,2194,2211,2226,2242,2256,2261,2265,2270,2302,2315,2335,2355,2360,2370,2380,2385,2389,2393,2401],{"__ignoreMap":541},[546,2168,2169,2171,2174,2176,2179,2181],{"class":548,"line":82},[546,2170,1845],{"class":557},[546,2172,2173],{"class":572}," sanitizeSessionResults",[546,2175,576],{"class":565},[546,2177,2178],{"class":644},"results",[546,2180,609],{"class":565},[546,2182,650],{"class":565},[546,2184,2185,2187,2190,2192],{"class":548,"line":114},[546,2186,655],{"class":557},[546,2188,2189],{"class":561}," sanitized",[546,2191,661],{"class":565},[546,2193,650],{"class":565},[546,2195,2196,2199,2201,2204,2206,2209],{"class":548,"line":146},[546,2197,2198],{"class":584},"    sessionId",[546,2200,588],{"class":565},[546,2202,2203],{"class":561}," results",[546,2205,741],{"class":565},[546,2207,2208],{"class":561},"session_id",[546,2210,699],{"class":565},[546,2212,2213,2216,2218,2220,2222,2224],{"class":548,"line":178},[546,2214,2215],{"class":584},"    status",[546,2217,588],{"class":565},[546,2219,2203],{"class":561},[546,2221,741],{"class":565},[546,2223,2113],{"class":561},[546,2225,699],{"class":565},[546,2227,2228,2231,2233,2235,2237,2240],{"class":548,"line":268},[546,2229,2230],{"class":584},"    confidenceScore",[546,2232,588],{"class":565},[546,2234,2203],{"class":561},[546,2236,741],{"class":565},[546,2238,2239],{"class":561},"confidence_score",[546,2241,699],{"class":565},[546,2243,2244,2247,2249,2251,2253],{"class":548,"line":273},[546,2245,2246],{"class":584},"    completedAt",[546,2248,588],{"class":565},[546,2250,2203],{"class":561},[546,2252,741],{"class":565},[546,2254,2255],{"class":561},"completed_at\n",[546,2257,2258],{"class":548,"line":279},[546,2259,2260],{"class":565},"  };\n",[546,2262,2263],{"class":548,"line":285},[546,2264,1257],{"class":584},[546,2266,2267],{"class":548,"line":291},[546,2268,2269],{"class":551},"  // Only include results if they exist and user has permission\n",[546,2271,2272,2274,2276,2278,2280,2282,2285,2288,2290,2292,2294,2297,2300],{"class":548,"line":222},[546,2273,1896],{"class":664},[546,2275,1484],{"class":584},[546,2277,2178],{"class":561},[546,2279,741],{"class":565},[546,2281,2178],{"class":561},[546,2283,2284],{"class":565}," &&",[546,2286,2287],{"class":572}," hasPermissionToViewResults",[546,2289,576],{"class":584},[546,2291,1998],{"class":561},[546,2293,741],{"class":565},[546,2295,2296],{"class":561},"user",[546,2298,2299],{"class":584},")) ",[546,2301,579],{"class":565},[546,2303,2304,2307,2309,2311,2313],{"class":548,"line":227},[546,2305,2306],{"class":561},"    sanitized",[546,2308,741],{"class":565},[546,2310,2178],{"class":561},[546,2312,661],{"class":565},[546,2314,650],{"class":565},[546,2316,2317,2320,2322,2324,2326,2328,2330,2333],{"class":548,"line":232},[546,2318,2319],{"class":584},"      coordinates",[546,2321,588],{"class":565},[546,2323,2203],{"class":561},[546,2325,741],{"class":565},[546,2327,2178],{"class":561},[546,2329,741],{"class":565},[546,2331,2332],{"class":561},"coordinates",[546,2334,699],{"class":565},[546,2336,2337,2340,2342,2344,2346,2348,2350,2353],{"class":548,"line":238},[546,2338,2339],{"class":584},"      descriptors",[546,2341,588],{"class":565},[546,2343,2203],{"class":561},[546,2345,741],{"class":565},[546,2347,2178],{"class":561},[546,2349,741],{"class":565},[546,2351,2352],{"class":561},"descriptors",[546,2354,699],{"class":565},[546,2356,2357],{"class":548,"line":243},[546,2358,2359],{"class":551},"      // Exclude sensitive internal data\n",[546,2361,2362,2365,2367],{"class":548,"line":248},[546,2363,2364],{"class":584},"      internalMetadata",[546,2366,588],{"class":565},[546,2368,2369],{"class":565}," undefined,\n",[546,2371,2372,2375,2377],{"class":548,"line":792},[546,2373,2374],{"class":584},"      analystNotes",[546,2376,588],{"class":565},[546,2378,2379],{"class":565}," undefined\n",[546,2381,2382],{"class":548,"line":797},[546,2383,2384],{"class":565},"    };\n",[546,2386,2387],{"class":548,"line":803},[546,2388,1252],{"class":565},[546,2390,2391],{"class":548,"line":820},[546,2392,1257],{"class":584},[546,2394,2395,2397,2399],{"class":548,"line":843},[546,2396,772],{"class":664},[546,2398,2189],{"class":561},[546,2400,612],{"class":565},[546,2402,2403],{"class":548,"line":1381},[546,2404,789],{"class":565},[525,2406,2408],{"id":2407},"webhook-security","Webhook Security",[517,2410,2411],{},[532,2412,2413],{},"Verify webhook signatures",[536,2415,2419],{"className":2416,"code":2417,"language":2418,"meta":541,"style":541},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import hmac\nimport hashlib\nfrom flask import Flask, request, abort\n\napp = Flask(__name__)\n\ndef verify_webhook_signature(payload, signature, secret):\n    \"\"\"Verify webhook signature using HMAC-SHA256\"\"\"\n    if not signature:\n        return False\n    \n    expected_signature = hmac.new(\n        secret.encode('utf-8'),\n        payload,\n        hashlib.sha256\n    ).hexdigest()\n    \n    return hmac.compare_digest(\n        f'sha256={expected_signature}',\n        signature\n    )\n\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    signature = request.headers.get('X-MindPeeker-Signature')\n    payload = request.data\n    \n    if not verify_webhook_signature(payload, signature, app.config['WEBHOOK_SECRET']):\n        abort(401)  # Unauthorized\n    \n    # Process webhook\n    event = request.get_json()\n    process_webhook_event(event)\n    \n    return '', 200\n","python",[543,2420,2421,2426,2431,2436,2440,2445,2449,2454,2459,2464,2469,2473,2478,2483,2488,2493,2498,2502,2507,2512,2517,2522,2526,2531,2536,2541,2546,2550,2555,2560,2564,2569,2574,2580,2585],{"__ignoreMap":541},[546,2422,2423],{"class":548,"line":82},[546,2424,2425],{},"import hmac\n",[546,2427,2428],{"class":548,"line":114},[546,2429,2430],{},"import hashlib\n",[546,2432,2433],{"class":548,"line":146},[546,2434,2435],{},"from flask import Flask, request, abort\n",[546,2437,2438],{"class":548,"line":178},[546,2439,618],{"emptyLinePlaceholder":617},[546,2441,2442],{"class":548,"line":268},[546,2443,2444],{},"app = Flask(__name__)\n",[546,2446,2447],{"class":548,"line":273},[546,2448,618],{"emptyLinePlaceholder":617},[546,2450,2451],{"class":548,"line":279},[546,2452,2453],{},"def verify_webhook_signature(payload, signature, secret):\n",[546,2455,2456],{"class":548,"line":285},[546,2457,2458],{},"    \"\"\"Verify webhook signature using HMAC-SHA256\"\"\"\n",[546,2460,2461],{"class":548,"line":291},[546,2462,2463],{},"    if not signature:\n",[546,2465,2466],{"class":548,"line":222},[546,2467,2468],{},"        return False\n",[546,2470,2471],{"class":548,"line":227},[546,2472,1371],{},[546,2474,2475],{"class":548,"line":232},[546,2476,2477],{},"    expected_signature = hmac.new(\n",[546,2479,2480],{"class":548,"line":238},[546,2481,2482],{},"        secret.encode('utf-8'),\n",[546,2484,2485],{"class":548,"line":243},[546,2486,2487],{},"        payload,\n",[546,2489,2490],{"class":548,"line":248},[546,2491,2492],{},"        hashlib.sha256\n",[546,2494,2495],{"class":548,"line":792},[546,2496,2497],{},"    ).hexdigest()\n",[546,2499,2500],{"class":548,"line":797},[546,2501,1371],{},[546,2503,2504],{"class":548,"line":803},[546,2505,2506],{},"    return hmac.compare_digest(\n",[546,2508,2509],{"class":548,"line":820},[546,2510,2511],{},"        f'sha256={expected_signature}',\n",[546,2513,2514],{"class":548,"line":843},[546,2515,2516],{},"        signature\n",[546,2518,2519],{"class":548,"line":1381},[546,2520,2521],{},"    )\n",[546,2523,2524],{"class":548,"line":1416},[546,2525,618],{"emptyLinePlaceholder":617},[546,2527,2528],{"class":548,"line":1422},[546,2529,2530],{},"@app.route('/webhook', methods=['POST'])\n",[546,2532,2533],{"class":548,"line":1439},[546,2534,2535],{},"def webhook():\n",[546,2537,2538],{"class":548,"line":1452},[546,2539,2540],{},"    signature = request.headers.get('X-MindPeeker-Signature')\n",[546,2542,2543],{"class":548,"line":1476},[546,2544,2545],{},"    payload = request.data\n",[546,2547,2548],{"class":548,"line":1494},[546,2549,1371],{},[546,2551,2552],{"class":548,"line":1500},[546,2553,2554],{},"    if not verify_webhook_signature(payload, signature, app.config['WEBHOOK_SECRET']):\n",[546,2556,2557],{"class":548,"line":1513},[546,2558,2559],{},"        abort(401)  # Unauthorized\n",[546,2561,2562],{"class":548,"line":1536},[546,2563,1371],{},[546,2565,2566],{"class":548,"line":1542},[546,2567,2568],{},"    # Process webhook\n",[546,2570,2571],{"class":548,"line":1547},[546,2572,2573],{},"    event = request.get_json()\n",[546,2575,2577],{"class":548,"line":2576},33,[546,2578,2579],{},"    process_webhook_event(event)\n",[546,2581,2583],{"class":548,"line":2582},34,[546,2584,1371],{},[546,2586,2588],{"class":548,"line":2587},35,[546,2589,2590],{},"    return '', 200\n",[517,2592,2593],{},[532,2594,2595],{},"Implement replay protection",[536,2597,2599],{"className":2416,"code":2598,"language":2418,"meta":541,"style":541},"import redis\nfrom datetime import datetime, timedelta\n\nredis_client = redis.Redis(host='localhost', port=6379, db=0)\n\n@app.route('/webhook', methods=['POST'])\ndef webhook():\n    # Verify signature first\n    if not verify_webhook_signature(...):\n        abort(401)\n    \n    event = request.get_json()\n    event_id = event.get('id')\n    \n    # Check for duplicate events\n    if redis_client.exists(f'webhook_event:{event_id}'):\n        return '', 200  # Already processed\n    \n    # Mark event as processed\n    redis_client.setex(\n        f'webhook_event:{event_id}',\n        timedelta(hours=24),  # Expire after 24 hours\n        'processed'\n    )\n    \n    # Process event\n    process_webhook_event(event)\n    \n    return '', 200\n",[543,2600,2601,2606,2611,2615,2620,2624,2628,2632,2637,2642,2647,2651,2655,2660,2664,2669,2674,2679,2683,2688,2693,2698,2703,2708,2712,2716,2721,2725,2729],{"__ignoreMap":541},[546,2602,2603],{"class":548,"line":82},[546,2604,2605],{},"import redis\n",[546,2607,2608],{"class":548,"line":114},[546,2609,2610],{},"from datetime import datetime, timedelta\n",[546,2612,2613],{"class":548,"line":146},[546,2614,618],{"emptyLinePlaceholder":617},[546,2616,2617],{"class":548,"line":178},[546,2618,2619],{},"redis_client = redis.Redis(host='localhost', port=6379, db=0)\n",[546,2621,2622],{"class":548,"line":268},[546,2623,618],{"emptyLinePlaceholder":617},[546,2625,2626],{"class":548,"line":273},[546,2627,2530],{},[546,2629,2630],{"class":548,"line":279},[546,2631,2535],{},[546,2633,2634],{"class":548,"line":285},[546,2635,2636],{},"    # Verify signature first\n",[546,2638,2639],{"class":548,"line":291},[546,2640,2641],{},"    if not verify_webhook_signature(...):\n",[546,2643,2644],{"class":548,"line":222},[546,2645,2646],{},"        abort(401)\n",[546,2648,2649],{"class":548,"line":227},[546,2650,1371],{},[546,2652,2653],{"class":548,"line":232},[546,2654,2573],{},[546,2656,2657],{"class":548,"line":238},[546,2658,2659],{},"    event_id = event.get('id')\n",[546,2661,2662],{"class":548,"line":243},[546,2663,1371],{},[546,2665,2666],{"class":548,"line":248},[546,2667,2668],{},"    # Check for duplicate events\n",[546,2670,2671],{"class":548,"line":792},[546,2672,2673],{},"    if redis_client.exists(f'webhook_event:{event_id}'):\n",[546,2675,2676],{"class":548,"line":797},[546,2677,2678],{},"        return '', 200  # Already processed\n",[546,2680,2681],{"class":548,"line":803},[546,2682,1371],{},[546,2684,2685],{"class":548,"line":820},[546,2686,2687],{},"    # Mark event as processed\n",[546,2689,2690],{"class":548,"line":843},[546,2691,2692],{},"    redis_client.setex(\n",[546,2694,2695],{"class":548,"line":1381},[546,2696,2697],{},"        f'webhook_event:{event_id}',\n",[546,2699,2700],{"class":548,"line":1416},[546,2701,2702],{},"        timedelta(hours=24),  # Expire after 24 hours\n",[546,2704,2705],{"class":548,"line":1422},[546,2706,2707],{},"        'processed'\n",[546,2709,2710],{"class":548,"line":1439},[546,2711,2521],{},[546,2713,2714],{"class":548,"line":1452},[546,2715,1371],{},[546,2717,2718],{"class":548,"line":1476},[546,2719,2720],{},"    # Process event\n",[546,2722,2723],{"class":548,"line":1494},[546,2724,2579],{},[546,2726,2727],{"class":548,"line":1500},[546,2728,1371],{},[546,2730,2731],{"class":548,"line":1513},[546,2732,2590],{},[512,2734,2736],{"id":2735},"performance-best-practices","Performance Best Practices",[525,2738,2740],{"id":2739},"connection-management","Connection Management",[517,2742,2743],{},[532,2744,2745],{},"Use connection pooling",[536,2747,2749],{"className":538,"code":2748,"language":540,"meta":541,"style":541},"const { MindPeekerClient } = require('@mindpeeker/javascript');\n\nclass MindPeekerPool {\n  constructor(options = {}) {\n    this.maxSize = options.maxSize || 10;\n    this.minSize = options.minSize || 2;\n    this.clients = [];\n    this.availableClients = [];\n    this.waitingQueue = [];\n    \n    this.initializePool();\n  }\n  \n  async initializePool() {\n    for (let i = 0; i \u003C this.minSize; i++) {\n      const client = new MindPeekerClient({\n        apiKey: process.env.MINDPEEKER_API_KEY,\n        timeout: 30000,\n        retryAttempts: 3\n      });\n      \n      this.clients.push(client);\n      this.availableClients.push(client);\n    }\n  }\n  \n  async getClient() {\n    if (this.availableClients.length > 0) {\n      return this.availableClients.pop();\n    }\n    \n    if (this.clients.length \u003C this.maxSize) {\n      const client = new MindPeekerClient({\n        apiKey: process.env.MINDPEEKER_API_KEY\n      });\n      this.clients.push(client);\n      return client;\n    }\n    \n    // Wait for available client\n    return new Promise((resolve) => {\n      this.waitingQueue.push(resolve);\n    });\n  }\n  \n  releaseClient(client) {\n    if (this.waitingQueue.length > 0) {\n      const resolve = this.waitingQueue.shift();\n      resolve(client);\n    } else {\n      this.availableClients.push(client);\n    }\n  }\n}\n\n// Usage\nconst pool = new MindPeekerPool({ maxSize: 5 });\n\nasync function createSession(target) {\n  const client = await pool.getClient();\n  try {\n    return await client.sessions.create({ target, type: 'remote_viewing' });\n  } finally {\n    pool.releaseClient(client);\n  }\n}\n",[543,2750,2751,2779,2783,2792,2808,2832,2854,2868,2881,2894,2898,2909,2913,2917,2928,2968,2986,3005,3017,3027,3036,3041,3061,3079,3083,3087,3091,3102,3127,3145,3149,3153,3177,3193,3210,3218,3237,3246,3251,3256,3262,3285,3304,3313,3318,3323,3337,3360,3383,3397,3407,3426,3431,3436,3441,3446,3451,3483,3488,3505,3527,3534,3576,3586,3605,3610],{"__ignoreMap":541},[546,2752,2753,2755,2757,2760,2762,2764,2766,2768,2770,2773,2775,2777],{"class":548,"line":82},[546,2754,558],{"class":557},[546,2756,709],{"class":565},[546,2758,2759],{"class":561}," MindPeekerClient ",[546,2761,606],{"class":565},[546,2763,661],{"class":565},[546,2765,1575],{"class":572},[546,2767,576],{"class":561},[546,2769,598],{"class":565},[546,2771,2772],{"class":594},"@mindpeeker/javascript",[546,2774,598],{"class":565},[546,2776,609],{"class":561},[546,2778,612],{"class":565},[546,2780,2781],{"class":548,"line":114},[546,2782,618],{"emptyLinePlaceholder":617},[546,2784,2785,2787,2790],{"class":548,"line":146},[546,2786,1148],{"class":557},[546,2788,2789],{"class":1151}," MindPeekerPool",[546,2791,650],{"class":565},[546,2793,2794,2796,2798,2801,2803,2806],{"class":548,"line":178},[546,2795,1159],{"class":557},[546,2797,576],{"class":565},[546,2799,2800],{"class":644},"options",[546,2802,661],{"class":565},[546,2804,2805],{"class":565}," {})",[546,2807,650],{"class":565},[546,2809,2810,2812,2815,2817,2820,2822,2824,2827,2830],{"class":548,"line":268},[546,2811,1168],{"class":565},[546,2813,2814],{"class":561},"maxSize",[546,2816,661],{"class":565},[546,2818,2819],{"class":561}," options",[546,2821,741],{"class":565},[546,2823,2814],{"class":561},[546,2825,2826],{"class":565}," ||",[546,2828,2829],{"class":1076}," 10",[546,2831,612],{"class":565},[546,2833,2834,2836,2839,2841,2843,2845,2847,2849,2852],{"class":548,"line":273},[546,2835,1168],{"class":565},[546,2837,2838],{"class":561},"minSize",[546,2840,661],{"class":565},[546,2842,2819],{"class":561},[546,2844,741],{"class":565},[546,2846,2838],{"class":561},[546,2848,2826],{"class":565},[546,2850,2851],{"class":1076}," 2",[546,2853,612],{"class":565},[546,2855,2856,2858,2861,2863,2866],{"class":548,"line":279},[546,2857,1168],{"class":565},[546,2859,2860],{"class":561},"clients",[546,2862,661],{"class":565},[546,2864,2865],{"class":584}," []",[546,2867,612],{"class":565},[546,2869,2870,2872,2875,2877,2879],{"class":548,"line":285},[546,2871,1168],{"class":565},[546,2873,2874],{"class":561},"availableClients",[546,2876,661],{"class":565},[546,2878,2865],{"class":584},[546,2880,612],{"class":565},[546,2882,2883,2885,2888,2890,2892],{"class":548,"line":291},[546,2884,1168],{"class":565},[546,2886,2887],{"class":561},"waitingQueue",[546,2889,661],{"class":565},[546,2891,2865],{"class":584},[546,2893,612],{"class":565},[546,2895,2896],{"class":548,"line":222},[546,2897,1371],{"class":584},[546,2899,2900,2902,2905,2907],{"class":548,"line":227},[546,2901,1168],{"class":565},[546,2903,2904],{"class":572},"initializePool",[546,2906,782],{"class":584},[546,2908,612],{"class":565},[546,2910,2911],{"class":548,"line":232},[546,2912,1252],{"class":565},[546,2914,2915],{"class":548,"line":238},[546,2916,1257],{"class":561},[546,2918,2919,2921,2924,2926],{"class":548,"line":243},[546,2920,1322],{"class":557},[546,2922,2923],{"class":584}," initializePool",[546,2925,782],{"class":565},[546,2927,650],{"class":565},[546,2929,2930,2933,2935,2938,2941,2943,2945,2948,2950,2953,2955,2957,2959,2961,2964,2966],{"class":548,"line":248},[546,2931,2932],{"class":664},"    for",[546,2934,1484],{"class":584},[546,2936,2937],{"class":557},"let",[546,2939,2940],{"class":561}," i",[546,2942,661],{"class":565},[546,2944,1077],{"class":1076},[546,2946,2947],{"class":565},";",[546,2949,2940],{"class":561},[546,2951,2952],{"class":565}," \u003C",[546,2954,1241],{"class":565},[546,2956,2838],{"class":561},[546,2958,2947],{"class":565},[546,2960,2940],{"class":561},[546,2962,2963],{"class":565},"++",[546,2965,1080],{"class":584},[546,2967,579],{"class":565},[546,2969,2970,2973,2976,2978,2980,2982,2984],{"class":548,"line":792},[546,2971,2972],{"class":557},"      const",[546,2974,2975],{"class":561}," client",[546,2977,661],{"class":565},[546,2979,569],{"class":565},[546,2981,573],{"class":572},[546,2983,576],{"class":584},[546,2985,579],{"class":565},[546,2987,2988,2991,2993,2995,2997,2999,3001,3003],{"class":548,"line":797},[546,2989,2990],{"class":584},"        apiKey",[546,2992,588],{"class":565},[546,2994,827],{"class":561},[546,2996,741],{"class":565},[546,2998,832],{"class":561},[546,3000,741],{"class":565},[546,3002,866],{"class":561},[546,3004,699],{"class":565},[546,3006,3007,3010,3012,3015],{"class":548,"line":803},[546,3008,3009],{"class":584},"        timeout",[546,3011,588],{"class":565},[546,3013,3014],{"class":1076}," 30000",[546,3016,699],{"class":565},[546,3018,3019,3022,3024],{"class":548,"line":820},[546,3020,3021],{"class":584},"        retryAttempts",[546,3023,588],{"class":565},[546,3025,3026],{"class":1076}," 3\n",[546,3028,3029,3032,3034],{"class":548,"line":843},[546,3030,3031],{"class":565},"      }",[546,3033,609],{"class":584},[546,3035,612],{"class":565},[546,3037,3038],{"class":548,"line":1381},[546,3039,3040],{"class":584},"      \n",[546,3042,3043,3045,3047,3049,3052,3054,3057,3059],{"class":548,"line":1416},[546,3044,1425],{"class":565},[546,3046,2860],{"class":561},[546,3048,741],{"class":565},[546,3050,3051],{"class":572},"push",[546,3053,576],{"class":584},[546,3055,3056],{"class":561},"client",[546,3058,609],{"class":584},[546,3060,612],{"class":565},[546,3062,3063,3065,3067,3069,3071,3073,3075,3077],{"class":548,"line":1422},[546,3064,1425],{"class":565},[546,3066,2874],{"class":561},[546,3068,741],{"class":565},[546,3070,3051],{"class":572},[546,3072,576],{"class":584},[546,3074,3056],{"class":561},[546,3076,609],{"class":584},[546,3078,612],{"class":565},[546,3080,3081],{"class":548,"line":1439},[546,3082,1539],{"class":565},[546,3084,3085],{"class":548,"line":1452},[546,3086,1252],{"class":565},[546,3088,3089],{"class":548,"line":1476},[546,3090,1257],{"class":561},[546,3092,3093,3095,3098,3100],{"class":548,"line":1494},[546,3094,1322],{"class":557},[546,3096,3097],{"class":584}," getClient",[546,3099,782],{"class":565},[546,3101,650],{"class":565},[546,3103,3104,3107,3109,3111,3113,3115,3118,3121,3123,3125],{"class":548,"line":1500},[546,3105,3106],{"class":664},"    if",[546,3108,1484],{"class":584},[546,3110,1234],{"class":565},[546,3112,2874],{"class":561},[546,3114,741],{"class":565},[546,3116,3117],{"class":561},"length",[546,3119,3120],{"class":565}," >",[546,3122,1077],{"class":1076},[546,3124,1080],{"class":584},[546,3126,579],{"class":565},[546,3128,3129,3132,3134,3136,3138,3141,3143],{"class":548,"line":1513},[546,3130,3131],{"class":664},"      return",[546,3133,1241],{"class":565},[546,3135,2874],{"class":561},[546,3137,741],{"class":565},[546,3139,3140],{"class":572},"pop",[546,3142,782],{"class":584},[546,3144,612],{"class":565},[546,3146,3147],{"class":548,"line":1536},[546,3148,1539],{"class":565},[546,3150,3151],{"class":548,"line":1542},[546,3152,1371],{"class":584},[546,3154,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175],{"class":548,"line":1547},[546,3156,3106],{"class":664},[546,3158,1484],{"class":584},[546,3160,1234],{"class":565},[546,3162,2860],{"class":561},[546,3164,741],{"class":565},[546,3166,3117],{"class":561},[546,3168,2952],{"class":565},[546,3170,1241],{"class":565},[546,3172,2814],{"class":561},[546,3174,1080],{"class":584},[546,3176,579],{"class":565},[546,3178,3179,3181,3183,3185,3187,3189,3191],{"class":548,"line":2576},[546,3180,2972],{"class":557},[546,3182,2975],{"class":561},[546,3184,661],{"class":565},[546,3186,569],{"class":565},[546,3188,573],{"class":572},[546,3190,576],{"class":584},[546,3192,579],{"class":565},[546,3194,3195,3197,3199,3201,3203,3205,3207],{"class":548,"line":2582},[546,3196,2990],{"class":584},[546,3198,588],{"class":565},[546,3200,827],{"class":561},[546,3202,741],{"class":565},[546,3204,832],{"class":561},[546,3206,741],{"class":565},[546,3208,3209],{"class":561},"MINDPEEKER_API_KEY\n",[546,3211,3212,3214,3216],{"class":548,"line":2587},[546,3213,3031],{"class":565},[546,3215,609],{"class":584},[546,3217,612],{"class":565},[546,3219,3221,3223,3225,3227,3229,3231,3233,3235],{"class":548,"line":3220},36,[546,3222,1425],{"class":565},[546,3224,2860],{"class":561},[546,3226,741],{"class":565},[546,3228,3051],{"class":572},[546,3230,576],{"class":584},[546,3232,3056],{"class":561},[546,3234,609],{"class":584},[546,3236,612],{"class":565},[546,3238,3240,3242,3244],{"class":548,"line":3239},37,[546,3241,3131],{"class":664},[546,3243,2975],{"class":561},[546,3245,612],{"class":565},[546,3247,3249],{"class":548,"line":3248},38,[546,3250,1539],{"class":565},[546,3252,3254],{"class":548,"line":3253},39,[546,3255,1371],{"class":584},[546,3257,3259],{"class":548,"line":3258},40,[546,3260,3261],{"class":551},"    // Wait for available client\n",[546,3263,3265,3267,3269,3272,3274,3276,3279,3281,3283],{"class":548,"line":3264},41,[546,3266,1271],{"class":664},[546,3268,569],{"class":565},[546,3270,3271],{"class":1151}," Promise",[546,3273,576],{"class":584},[546,3275,576],{"class":565},[546,3277,3278],{"class":644},"resolve",[546,3280,609],{"class":565},[546,3282,1040],{"class":557},[546,3284,650],{"class":565},[546,3286,3288,3290,3292,3294,3296,3298,3300,3302],{"class":548,"line":3287},42,[546,3289,1425],{"class":565},[546,3291,2887],{"class":561},[546,3293,741],{"class":565},[546,3295,3051],{"class":572},[546,3297,576],{"class":584},[546,3299,3278],{"class":561},[546,3301,609],{"class":584},[546,3303,612],{"class":565},[546,3305,3307,3309,3311],{"class":548,"line":3306},43,[546,3308,1305],{"class":565},[546,3310,609],{"class":584},[546,3312,612],{"class":565},[546,3314,3316],{"class":548,"line":3315},44,[546,3317,1252],{"class":565},[546,3319,3321],{"class":548,"line":3320},45,[546,3322,1257],{"class":561},[546,3324,3326,3329,3331,3333,3335],{"class":548,"line":3325},46,[546,3327,3328],{"class":584},"  releaseClient",[546,3330,576],{"class":565},[546,3332,3056],{"class":644},[546,3334,609],{"class":565},[546,3336,650],{"class":565},[546,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358],{"class":548,"line":3339},47,[546,3341,3106],{"class":664},[546,3343,1484],{"class":584},[546,3345,1234],{"class":565},[546,3347,2887],{"class":561},[546,3349,741],{"class":565},[546,3351,3117],{"class":561},[546,3353,3120],{"class":565},[546,3355,1077],{"class":1076},[546,3357,1080],{"class":584},[546,3359,579],{"class":565},[546,3361,3363,3365,3368,3370,3372,3374,3376,3379,3381],{"class":548,"line":3362},48,[546,3364,2972],{"class":557},[546,3366,3367],{"class":561}," resolve",[546,3369,661],{"class":565},[546,3371,1241],{"class":565},[546,3373,2887],{"class":561},[546,3375,741],{"class":565},[546,3377,3378],{"class":572},"shift",[546,3380,782],{"class":584},[546,3382,612],{"class":565},[546,3384,3386,3389,3391,3393,3395],{"class":548,"line":3385},49,[546,3387,3388],{"class":572},"      resolve",[546,3390,576],{"class":584},[546,3392,3056],{"class":561},[546,3394,609],{"class":584},[546,3396,612],{"class":565},[546,3398,3400,3402,3405],{"class":548,"line":3399},50,[546,3401,1305],{"class":565},[546,3403,3404],{"class":664}," else",[546,3406,650],{"class":565},[546,3408,3410,3412,3414,3416,3418,3420,3422,3424],{"class":548,"line":3409},51,[546,3411,1425],{"class":565},[546,3413,2874],{"class":561},[546,3415,741],{"class":565},[546,3417,3051],{"class":572},[546,3419,576],{"class":584},[546,3421,3056],{"class":561},[546,3423,609],{"class":584},[546,3425,612],{"class":565},[546,3427,3429],{"class":548,"line":3428},52,[546,3430,1539],{"class":565},[546,3432,3434],{"class":548,"line":3433},53,[546,3435,1252],{"class":565},[546,3437,3439],{"class":548,"line":3438},54,[546,3440,789],{"class":565},[546,3442,3444],{"class":548,"line":3443},55,[546,3445,618],{"emptyLinePlaceholder":617},[546,3447,3449],{"class":548,"line":3448},56,[546,3450,1970],{"class":551},[546,3452,3454,3456,3459,3461,3463,3465,3467,3469,3472,3474,3477,3479,3481],{"class":548,"line":3453},57,[546,3455,558],{"class":557},[546,3457,3458],{"class":561}," pool ",[546,3460,566],{"class":565},[546,3462,569],{"class":565},[546,3464,2789],{"class":572},[546,3466,576],{"class":561},[546,3468,749],{"class":565},[546,3470,3471],{"class":584}," maxSize",[546,3473,588],{"class":565},[546,3475,3476],{"class":1076}," 5",[546,3478,755],{"class":565},[546,3480,609],{"class":561},[546,3482,612],{"class":565},[546,3484,3486],{"class":548,"line":3485},58,[546,3487,618],{"emptyLinePlaceholder":617},[546,3489,3491,3493,3495,3497,3499,3501,3503],{"class":548,"line":3490},59,[546,3492,633],{"class":557},[546,3494,636],{"class":557},[546,3496,639],{"class":572},[546,3498,576],{"class":565},[546,3500,645],{"class":644},[546,3502,609],{"class":565},[546,3504,650],{"class":565},[546,3506,3508,3510,3512,3514,3516,3519,3521,3523,3525],{"class":548,"line":3507},60,[546,3509,655],{"class":557},[546,3511,2975],{"class":561},[546,3513,661],{"class":565},[546,3515,665],{"class":664},[546,3517,3518],{"class":561}," pool",[546,3520,741],{"class":565},[546,3522,1362],{"class":572},[546,3524,782],{"class":584},[546,3526,612],{"class":565},[546,3528,3530,3532],{"class":548,"line":3529},61,[546,3531,2014],{"class":664},[546,3533,650],{"class":565},[546,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3562,3564,3566,3568,3570,3572,3574],{"class":548,"line":3536},62,[546,3538,1271],{"class":664},[546,3540,665],{"class":664},[546,3542,2975],{"class":561},[546,3544,741],{"class":565},[546,3546,1391],{"class":561},[546,3548,741],{"class":565},[546,3550,2063],{"class":572},[546,3552,576],{"class":584},[546,3554,749],{"class":565},[546,3556,752],{"class":561},[546,3558,680],{"class":565},[546,3560,3561],{"class":584}," type",[546,3563,588],{"class":565},[546,3565,591],{"class":565},[546,3567,1641],{"class":594},[546,3569,598],{"class":565},[546,3571,755],{"class":565},[546,3573,609],{"class":584},[546,3575,612],{"class":565},[546,3577,3579,3581,3584],{"class":548,"line":3578},63,[546,3580,763],{"class":565},[546,3582,3583],{"class":664}," finally",[546,3585,650],{"class":565},[546,3587,3589,3592,3594,3597,3599,3601,3603],{"class":548,"line":3588},64,[546,3590,3591],{"class":561},"    pool",[546,3593,741],{"class":565},[546,3595,3596],{"class":572},"releaseClient",[546,3598,576],{"class":584},[546,3600,3056],{"class":561},[546,3602,609],{"class":584},[546,3604,612],{"class":565},[546,3606,3608],{"class":548,"line":3607},65,[546,3609,1252],{"class":565},[546,3611,3613],{"class":548,"line":3612},66,[546,3614,789],{"class":565},[517,3616,3617],{},[532,3618,3619],{},"Implement intelligent caching",[536,3621,3623],{"className":538,"code":3622,"language":540,"meta":541,"style":541},"const NodeCache = require('node-cache');\n\nclass MindPeekerCache {\n  constructor(options = {}) {\n    this.cache = new NodeCache({\n      stdTTL: options.defaultTTL || 300, // 5 minutes\n      checkperiod: options.checkPeriod || 60, // 1 minute\n      useClones: false\n    });\n    \n    this.client = new MindPeekerClient({\n      apiKey: process.env.MINDPEEKER_API_KEY\n    });\n  }\n  \n  async getSessionResults(sessionId, options = {}) {\n    const cacheKey = `session_results:${sessionId}`;\n    let results = this.cache.get(cacheKey);\n    \n    if (results) {\n      return results;\n    }\n    \n    // Fetch from API\n    results = await this.client.sessions.getResults(sessionId);\n    \n    // Cache based on session status\n    if (results.status === 'completed') {\n      this.cache.set(cacheKey, results, options.completedTTL || 3600); // 1 hour\n    } else if (results.status === 'failed') {\n      this.cache.set(cacheKey, results, options.failedTTL || 300); // 5 minutes\n    } else {\n      this.cache.set(cacheKey, results, options.pendingTTL || 60); // 1 minute\n    }\n    \n    return results;\n  }\n  \n  invalidateSession(sessionId) {\n    this.cache.del(`session_results:${sessionId}`);\n  }\n  \n  clearCache() {\n    this.cache.flushAll();\n  }\n  \n  getStats() {\n    return this.cache.getStats();\n  }\n}\n",[543,3624,3625,3649,3653,3662,3676,3694,3718,3742,3753,3761,3765,3781,3797,3805,3809,3813,3835,3858,3885,3889,3901,3909,3913,3917,3922,3952,3956,3961,3987,4027,4057,4094,4102,4139,4143,4147,4155,4159,4163,4176,4203,4207,4211,4220,4235,4239,4243,4252,4269,4273],{"__ignoreMap":541},[546,3626,3627,3629,3632,3634,3636,3638,3640,3643,3645,3647],{"class":548,"line":82},[546,3628,558],{"class":557},[546,3630,3631],{"class":561}," NodeCache ",[546,3633,566],{"class":565},[546,3635,1575],{"class":572},[546,3637,576],{"class":561},[546,3639,598],{"class":565},[546,3641,3642],{"class":594},"node-cache",[546,3644,598],{"class":565},[546,3646,609],{"class":561},[546,3648,612],{"class":565},[546,3650,3651],{"class":548,"line":114},[546,3652,618],{"emptyLinePlaceholder":617},[546,3654,3655,3657,3660],{"class":548,"line":146},[546,3656,1148],{"class":557},[546,3658,3659],{"class":1151}," MindPeekerCache",[546,3661,650],{"class":565},[546,3663,3664,3666,3668,3670,3672,3674],{"class":548,"line":178},[546,3665,1159],{"class":557},[546,3667,576],{"class":565},[546,3669,2800],{"class":644},[546,3671,661],{"class":565},[546,3673,2805],{"class":565},[546,3675,650],{"class":565},[546,3677,3678,3680,3683,3685,3687,3690,3692],{"class":548,"line":268},[546,3679,1168],{"class":565},[546,3681,3682],{"class":561},"cache",[546,3684,661],{"class":565},[546,3686,569],{"class":565},[546,3688,3689],{"class":572}," NodeCache",[546,3691,576],{"class":584},[546,3693,579],{"class":565},[546,3695,3696,3699,3701,3703,3705,3708,3710,3713,3715],{"class":548,"line":273},[546,3697,3698],{"class":584},"      stdTTL",[546,3700,588],{"class":565},[546,3702,2819],{"class":561},[546,3704,741],{"class":565},[546,3706,3707],{"class":561},"defaultTTL",[546,3709,2826],{"class":565},[546,3711,3712],{"class":1076}," 300",[546,3714,680],{"class":565},[546,3716,3717],{"class":551}," // 5 minutes\n",[546,3719,3720,3723,3725,3727,3729,3732,3734,3737,3739],{"class":548,"line":279},[546,3721,3722],{"class":584},"      checkperiod",[546,3724,588],{"class":565},[546,3726,2819],{"class":561},[546,3728,741],{"class":565},[546,3730,3731],{"class":561},"checkPeriod",[546,3733,2826],{"class":565},[546,3735,3736],{"class":1076}," 60",[546,3738,680],{"class":565},[546,3740,3741],{"class":551}," // 1 minute\n",[546,3743,3744,3747,3749],{"class":548,"line":285},[546,3745,3746],{"class":584},"      useClones",[546,3748,588],{"class":565},[546,3750,3752],{"class":3751},"sfNiH"," false\n",[546,3754,3755,3757,3759],{"class":548,"line":291},[546,3756,1305],{"class":565},[546,3758,609],{"class":584},[546,3760,612],{"class":565},[546,3762,3763],{"class":548,"line":222},[546,3764,1371],{"class":584},[546,3766,3767,3769,3771,3773,3775,3777,3779],{"class":548,"line":227},[546,3768,1168],{"class":565},[546,3770,3056],{"class":561},[546,3772,661],{"class":565},[546,3774,569],{"class":565},[546,3776,573],{"class":572},[546,3778,576],{"class":584},[546,3780,579],{"class":565},[546,3782,3783,3785,3787,3789,3791,3793,3795],{"class":548,"line":232},[546,3784,1284],{"class":584},[546,3786,588],{"class":565},[546,3788,827],{"class":561},[546,3790,741],{"class":565},[546,3792,832],{"class":561},[546,3794,741],{"class":565},[546,3796,3209],{"class":561},[546,3798,3799,3801,3803],{"class":548,"line":238},[546,3800,1305],{"class":565},[546,3802,609],{"class":584},[546,3804,612],{"class":565},[546,3806,3807],{"class":548,"line":243},[546,3808,1252],{"class":565},[546,3810,3811],{"class":548,"line":248},[546,3812,1257],{"class":561},[546,3814,3815,3817,3820,3822,3825,3827,3829,3831,3833],{"class":548,"line":792},[546,3816,1322],{"class":557},[546,3818,3819],{"class":584}," getSessionResults",[546,3821,576],{"class":565},[546,3823,3824],{"class":644},"sessionId",[546,3826,680],{"class":565},[546,3828,2819],{"class":644},[546,3830,661],{"class":565},[546,3832,2805],{"class":565},[546,3834,650],{"class":565},[546,3836,3837,3839,3842,3844,3847,3850,3852,3854,3856],{"class":548,"line":797},[546,3838,1352],{"class":557},[546,3840,3841],{"class":561}," cacheKey",[546,3843,661],{"class":565},[546,3845,3846],{"class":565}," `",[546,3848,3849],{"class":594},"session_results:",[546,3851,1103],{"class":565},[546,3853,3824],{"class":561},[546,3855,1125],{"class":565},[546,3857,612],{"class":565},[546,3859,3860,3863,3865,3867,3869,3871,3873,3876,3878,3881,3883],{"class":548,"line":803},[546,3861,3862],{"class":557},"    let",[546,3864,2203],{"class":561},[546,3866,661],{"class":565},[546,3868,1241],{"class":565},[546,3870,3682],{"class":561},[546,3872,741],{"class":565},[546,3874,3875],{"class":572},"get",[546,3877,576],{"class":584},[546,3879,3880],{"class":561},"cacheKey",[546,3882,609],{"class":584},[546,3884,612],{"class":565},[546,3886,3887],{"class":548,"line":820},[546,3888,1371],{"class":584},[546,3890,3891,3893,3895,3897,3899],{"class":548,"line":843},[546,3892,3106],{"class":664},[546,3894,1484],{"class":584},[546,3896,2178],{"class":561},[546,3898,1080],{"class":584},[546,3900,579],{"class":565},[546,3902,3903,3905,3907],{"class":548,"line":1381},[546,3904,3131],{"class":664},[546,3906,2203],{"class":561},[546,3908,612],{"class":565},[546,3910,3911],{"class":548,"line":1416},[546,3912,1539],{"class":565},[546,3914,3915],{"class":548,"line":1422},[546,3916,1371],{"class":584},[546,3918,3919],{"class":548,"line":1439},[546,3920,3921],{"class":551},"    // Fetch from API\n",[546,3923,3924,3927,3929,3931,3933,3935,3937,3939,3941,3944,3946,3948,3950],{"class":548,"line":1452},[546,3925,3926],{"class":561},"    results",[546,3928,661],{"class":565},[546,3930,665],{"class":664},[546,3932,1241],{"class":565},[546,3934,3056],{"class":561},[546,3936,741],{"class":565},[546,3938,1391],{"class":561},[546,3940,741],{"class":565},[546,3942,3943],{"class":572},"getResults",[546,3945,576],{"class":584},[546,3947,3824],{"class":561},[546,3949,609],{"class":584},[546,3951,612],{"class":565},[546,3953,3954],{"class":548,"line":1476},[546,3955,1371],{"class":584},[546,3957,3958],{"class":548,"line":1494},[546,3959,3960],{"class":551},"    // Cache based on session status\n",[546,3962,3963,3965,3967,3969,3971,3973,3976,3978,3981,3983,3985],{"class":548,"line":1500},[546,3964,3106],{"class":664},[546,3966,1484],{"class":584},[546,3968,2178],{"class":561},[546,3970,741],{"class":565},[546,3972,2113],{"class":561},[546,3974,3975],{"class":565}," ===",[546,3977,591],{"class":565},[546,3979,3980],{"class":594},"completed",[546,3982,598],{"class":565},[546,3984,1080],{"class":584},[546,3986,579],{"class":565},[546,3988,3989,3991,3993,3995,3998,4000,4002,4004,4006,4008,4010,4012,4015,4017,4020,4022,4024],{"class":548,"line":1513},[546,3990,1425],{"class":565},[546,3992,3682],{"class":561},[546,3994,741],{"class":565},[546,3996,3997],{"class":572},"set",[546,3999,576],{"class":584},[546,4001,3880],{"class":561},[546,4003,680],{"class":565},[546,4005,2203],{"class":561},[546,4007,680],{"class":565},[546,4009,2819],{"class":561},[546,4011,741],{"class":565},[546,4013,4014],{"class":561},"completedTTL",[546,4016,2826],{"class":565},[546,4018,4019],{"class":1076}," 3600",[546,4021,609],{"class":584},[546,4023,2947],{"class":565},[546,4025,4026],{"class":551}," // 1 hour\n",[546,4028,4029,4031,4033,4036,4038,4040,4042,4044,4046,4048,4051,4053,4055],{"class":548,"line":1536},[546,4030,1305],{"class":565},[546,4032,3404],{"class":664},[546,4034,4035],{"class":664}," if",[546,4037,1484],{"class":584},[546,4039,2178],{"class":561},[546,4041,741],{"class":565},[546,4043,2113],{"class":561},[546,4045,3975],{"class":565},[546,4047,591],{"class":565},[546,4049,4050],{"class":594},"failed",[546,4052,598],{"class":565},[546,4054,1080],{"class":584},[546,4056,579],{"class":565},[546,4058,4059,4061,4063,4065,4067,4069,4071,4073,4075,4077,4079,4081,4084,4086,4088,4090,4092],{"class":548,"line":1542},[546,4060,1425],{"class":565},[546,4062,3682],{"class":561},[546,4064,741],{"class":565},[546,4066,3997],{"class":572},[546,4068,576],{"class":584},[546,4070,3880],{"class":561},[546,4072,680],{"class":565},[546,4074,2203],{"class":561},[546,4076,680],{"class":565},[546,4078,2819],{"class":561},[546,4080,741],{"class":565},[546,4082,4083],{"class":561},"failedTTL",[546,4085,2826],{"class":565},[546,4087,3712],{"class":1076},[546,4089,609],{"class":584},[546,4091,2947],{"class":565},[546,4093,3717],{"class":551},[546,4095,4096,4098,4100],{"class":548,"line":1547},[546,4097,1305],{"class":565},[546,4099,3404],{"class":664},[546,4101,650],{"class":565},[546,4103,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124,4126,4129,4131,4133,4135,4137],{"class":548,"line":2576},[546,4105,1425],{"class":565},[546,4107,3682],{"class":561},[546,4109,741],{"class":565},[546,4111,3997],{"class":572},[546,4113,576],{"class":584},[546,4115,3880],{"class":561},[546,4117,680],{"class":565},[546,4119,2203],{"class":561},[546,4121,680],{"class":565},[546,4123,2819],{"class":561},[546,4125,741],{"class":565},[546,4127,4128],{"class":561},"pendingTTL",[546,4130,2826],{"class":565},[546,4132,3736],{"class":1076},[546,4134,609],{"class":584},[546,4136,2947],{"class":565},[546,4138,3741],{"class":551},[546,4140,4141],{"class":548,"line":2582},[546,4142,1539],{"class":565},[546,4144,4145],{"class":548,"line":2587},[546,4146,1371],{"class":584},[546,4148,4149,4151,4153],{"class":548,"line":3220},[546,4150,1271],{"class":664},[546,4152,2203],{"class":561},[546,4154,612],{"class":565},[546,4156,4157],{"class":548,"line":3239},[546,4158,1252],{"class":565},[546,4160,4161],{"class":548,"line":3248},[546,4162,1257],{"class":561},[546,4164,4165,4168,4170,4172,4174],{"class":548,"line":3253},[546,4166,4167],{"class":584},"  invalidateSession",[546,4169,576],{"class":565},[546,4171,3824],{"class":644},[546,4173,609],{"class":565},[546,4175,650],{"class":565},[546,4177,4178,4180,4182,4184,4187,4189,4191,4193,4195,4197,4199,4201],{"class":548,"line":3258},[546,4179,1168],{"class":565},[546,4181,3682],{"class":561},[546,4183,741],{"class":565},[546,4185,4186],{"class":572},"del",[546,4188,576],{"class":584},[546,4190,1097],{"class":565},[546,4192,3849],{"class":594},[546,4194,1103],{"class":565},[546,4196,3824],{"class":561},[546,4198,1125],{"class":565},[546,4200,609],{"class":584},[546,4202,612],{"class":565},[546,4204,4205],{"class":548,"line":3264},[546,4206,1252],{"class":565},[546,4208,4209],{"class":548,"line":3287},[546,4210,1257],{"class":561},[546,4212,4213,4216,4218],{"class":548,"line":3306},[546,4214,4215],{"class":584},"  clearCache",[546,4217,782],{"class":565},[546,4219,650],{"class":565},[546,4221,4222,4224,4226,4228,4231,4233],{"class":548,"line":3315},[546,4223,1168],{"class":565},[546,4225,3682],{"class":561},[546,4227,741],{"class":565},[546,4229,4230],{"class":572},"flushAll",[546,4232,782],{"class":584},[546,4234,612],{"class":565},[546,4236,4237],{"class":548,"line":3320},[546,4238,1252],{"class":565},[546,4240,4241],{"class":548,"line":3325},[546,4242,1257],{"class":561},[546,4244,4245,4248,4250],{"class":548,"line":3339},[546,4246,4247],{"class":584},"  getStats",[546,4249,782],{"class":565},[546,4251,650],{"class":565},[546,4253,4254,4256,4258,4260,4262,4265,4267],{"class":548,"line":3362},[546,4255,1271],{"class":664},[546,4257,1241],{"class":565},[546,4259,3682],{"class":561},[546,4261,741],{"class":565},[546,4263,4264],{"class":572},"getStats",[546,4266,782],{"class":584},[546,4268,612],{"class":565},[546,4270,4271],{"class":548,"line":3385},[546,4272,1252],{"class":565},[546,4274,4275],{"class":548,"line":3399},[546,4276,789],{"class":565},[525,4278,4280],{"id":4279},"batch-operations","Batch Operations",[517,4282,4283],{},[532,4284,4285],{},"Process multiple requests efficiently",[536,4287,4289],{"className":538,"code":4288,"language":540,"meta":541,"style":541},"class BatchProcessor {\n  constructor(client, options = {}) {\n    this.client = client;\n    this.batchSize = options.batchSize || 10;\n    this.concurrency = options.concurrency || 3;\n    this.delay = options.delay || 100; // ms between batches\n  }\n  \n  async processSessions(sessionIds, processor) {\n    const results = [];\n    \n    for (let i = 0; i \u003C sessionIds.length; i += this.batchSize) {\n      const batch = sessionIds.slice(i, i + this.batchSize);\n      \n      const batchResults = await Promise.all(\n        batch.map(sessionId => \n          this.processWithRetry(sessionId, processor)\n        )\n      );\n      \n      results.push(...batchResults);\n      \n      // Rate limiting between batches\n      if (i + this.batchSize \u003C sessionIds.length) {\n        await this.delay(this.delay);\n      }\n    }\n    \n    return results;\n  }\n  \n  async processWithRetry(sessionId, processor, maxRetries = 3) {\n    for (let attempt = 1; attempt \u003C= maxRetries; attempt++) {\n      try {\n        return await processor(sessionId);\n      } catch (error) {\n        if (attempt === maxRetries) {\n          throw error;\n        }\n        \n        // Exponential backoff\n        const delay = Math.pow(2, attempt) * 1000;\n        await this.delay(delay);\n      }\n    }\n  }\n  \n  delay(ms) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n  }\n}\n\n// Usage\nconst batchProcessor = new BatchProcessor(mindpeekerClient, {\n  batchSize: 5,\n  concurrency: 2,\n  delay: 200\n});\n\nconst sessionIds = ['sess_1', 'sess_2', 'sess_3', 'sess_4', 'sess_5'];\nconst results = await batchProcessor.processSessions(\n  sessionIds,\n  async (sessionId) => {\n    return await mindpeekerClient.sessions.getResults(sessionId);\n  }\n);\n",[543,4290,4291,4300,4318,4330,4351,4373,4398,4402,4406,4427,4439,4443,4485,4521,4525,4546,4565,4583,4588,4595,4599,4620,4624,4629,4656,4675,4680,4684,4688,4696,4700,4704,4732,4766,4773,4790,4804,4822,4831,4836,4841,4846,4883,4899,4903,4907,4911,4915,4929,4960,4964,4968,4972,4976,4996,5007,5018,5027,5035,5039,5097,5118,5125,5139,5163,5167],{"__ignoreMap":541},[546,4292,4293,4295,4298],{"class":548,"line":82},[546,4294,1148],{"class":557},[546,4296,4297],{"class":1151}," BatchProcessor",[546,4299,650],{"class":565},[546,4301,4302,4304,4306,4308,4310,4312,4314,4316],{"class":548,"line":114},[546,4303,1159],{"class":557},[546,4305,576],{"class":565},[546,4307,3056],{"class":644},[546,4309,680],{"class":565},[546,4311,2819],{"class":644},[546,4313,661],{"class":565},[546,4315,2805],{"class":565},[546,4317,650],{"class":565},[546,4319,4320,4322,4324,4326,4328],{"class":548,"line":146},[546,4321,1168],{"class":565},[546,4323,3056],{"class":561},[546,4325,661],{"class":565},[546,4327,2975],{"class":561},[546,4329,612],{"class":565},[546,4331,4332,4334,4337,4339,4341,4343,4345,4347,4349],{"class":548,"line":178},[546,4333,1168],{"class":565},[546,4335,4336],{"class":561},"batchSize",[546,4338,661],{"class":565},[546,4340,2819],{"class":561},[546,4342,741],{"class":565},[546,4344,4336],{"class":561},[546,4346,2826],{"class":565},[546,4348,2829],{"class":1076},[546,4350,612],{"class":565},[546,4352,4353,4355,4358,4360,4362,4364,4366,4368,4371],{"class":548,"line":268},[546,4354,1168],{"class":565},[546,4356,4357],{"class":561},"concurrency",[546,4359,661],{"class":565},[546,4361,2819],{"class":561},[546,4363,741],{"class":565},[546,4365,4357],{"class":561},[546,4367,2826],{"class":565},[546,4369,4370],{"class":1076}," 3",[546,4372,612],{"class":565},[546,4374,4375,4377,4380,4382,4384,4386,4388,4390,4393,4395],{"class":548,"line":273},[546,4376,1168],{"class":565},[546,4378,4379],{"class":561},"delay",[546,4381,661],{"class":565},[546,4383,2819],{"class":561},[546,4385,741],{"class":565},[546,4387,4379],{"class":561},[546,4389,2826],{"class":565},[546,4391,4392],{"class":1076}," 100",[546,4394,2947],{"class":565},[546,4396,4397],{"class":551}," // ms between batches\n",[546,4399,4400],{"class":548,"line":279},[546,4401,1252],{"class":565},[546,4403,4404],{"class":548,"line":285},[546,4405,1257],{"class":561},[546,4407,4408,4410,4413,4415,4418,4420,4423,4425],{"class":548,"line":291},[546,4409,1322],{"class":557},[546,4411,4412],{"class":584}," processSessions",[546,4414,576],{"class":565},[546,4416,4417],{"class":644},"sessionIds",[546,4419,680],{"class":565},[546,4421,4422],{"class":644}," processor",[546,4424,609],{"class":565},[546,4426,650],{"class":565},[546,4428,4429,4431,4433,4435,4437],{"class":548,"line":222},[546,4430,1352],{"class":557},[546,4432,2203],{"class":561},[546,4434,661],{"class":565},[546,4436,2865],{"class":584},[546,4438,612],{"class":565},[546,4440,4441],{"class":548,"line":227},[546,4442,1371],{"class":584},[546,4444,4445,4447,4449,4451,4453,4455,4457,4459,4461,4463,4466,4468,4470,4472,4474,4477,4479,4481,4483],{"class":548,"line":232},[546,4446,2932],{"class":664},[546,4448,1484],{"class":584},[546,4450,2937],{"class":557},[546,4452,2940],{"class":561},[546,4454,661],{"class":565},[546,4456,1077],{"class":1076},[546,4458,2947],{"class":565},[546,4460,2940],{"class":561},[546,4462,2952],{"class":565},[546,4464,4465],{"class":561}," sessionIds",[546,4467,741],{"class":565},[546,4469,3117],{"class":561},[546,4471,2947],{"class":565},[546,4473,2940],{"class":561},[546,4475,4476],{"class":565}," +=",[546,4478,1241],{"class":565},[546,4480,4336],{"class":561},[546,4482,1080],{"class":584},[546,4484,579],{"class":565},[546,4486,4487,4489,4492,4494,4496,4498,4501,4503,4506,4508,4510,4513,4515,4517,4519],{"class":548,"line":238},[546,4488,2972],{"class":557},[546,4490,4491],{"class":561}," batch",[546,4493,661],{"class":565},[546,4495,4465],{"class":561},[546,4497,741],{"class":565},[546,4499,4500],{"class":572},"slice",[546,4502,576],{"class":584},[546,4504,4505],{"class":561},"i",[546,4507,680],{"class":565},[546,4509,2940],{"class":561},[546,4511,4512],{"class":565}," +",[546,4514,1241],{"class":565},[546,4516,4336],{"class":561},[546,4518,609],{"class":584},[546,4520,612],{"class":565},[546,4522,4523],{"class":548,"line":243},[546,4524,3040],{"class":584},[546,4526,4527,4529,4532,4534,4536,4538,4540,4543],{"class":548,"line":248},[546,4528,2972],{"class":557},[546,4530,4531],{"class":561}," batchResults",[546,4533,661],{"class":565},[546,4535,665],{"class":664},[546,4537,3271],{"class":1151},[546,4539,741],{"class":565},[546,4541,4542],{"class":572},"all",[546,4544,4545],{"class":584},"(\n",[546,4547,4548,4551,4553,4556,4558,4560,4562],{"class":548,"line":792},[546,4549,4550],{"class":561},"        batch",[546,4552,741],{"class":565},[546,4554,4555],{"class":572},"map",[546,4557,576],{"class":584},[546,4559,3824],{"class":644},[546,4561,1040],{"class":557},[546,4563,4564],{"class":584}," \n",[546,4566,4567,4570,4573,4575,4577,4579,4581],{"class":548,"line":797},[546,4568,4569],{"class":565},"          this.",[546,4571,4572],{"class":572},"processWithRetry",[546,4574,576],{"class":584},[546,4576,3824],{"class":561},[546,4578,680],{"class":565},[546,4580,4422],{"class":561},[546,4582,758],{"class":584},[546,4584,4585],{"class":548,"line":803},[546,4586,4587],{"class":584},"        )\n",[546,4589,4590,4593],{"class":548,"line":820},[546,4591,4592],{"class":584},"      )",[546,4594,612],{"class":565},[546,4596,4597],{"class":548,"line":843},[546,4598,3040],{"class":584},[546,4600,4601,4604,4606,4608,4610,4613,4616,4618],{"class":548,"line":1381},[546,4602,4603],{"class":561},"      results",[546,4605,741],{"class":565},[546,4607,3051],{"class":572},[546,4609,576],{"class":584},[546,4611,4612],{"class":565},"...",[546,4614,4615],{"class":561},"batchResults",[546,4617,609],{"class":584},[546,4619,612],{"class":565},[546,4621,4622],{"class":548,"line":1416},[546,4623,3040],{"class":584},[546,4625,4626],{"class":548,"line":1422},[546,4627,4628],{"class":551},"      // Rate limiting between batches\n",[546,4630,4631,4634,4636,4638,4640,4642,4644,4646,4648,4650,4652,4654],{"class":548,"line":1439},[546,4632,4633],{"class":664},"      if",[546,4635,1484],{"class":584},[546,4637,4505],{"class":561},[546,4639,4512],{"class":565},[546,4641,1241],{"class":565},[546,4643,4336],{"class":561},[546,4645,2952],{"class":565},[546,4647,4465],{"class":561},[546,4649,741],{"class":565},[546,4651,3117],{"class":561},[546,4653,1080],{"class":584},[546,4655,579],{"class":565},[546,4657,4658,4661,4663,4665,4667,4669,4671,4673],{"class":548,"line":1452},[546,4659,4660],{"class":664},"        await",[546,4662,1241],{"class":565},[546,4664,4379],{"class":572},[546,4666,576],{"class":584},[546,4668,1234],{"class":565},[546,4670,4379],{"class":561},[546,4672,609],{"class":584},[546,4674,612],{"class":565},[546,4676,4677],{"class":548,"line":1476},[546,4678,4679],{"class":565},"      }\n",[546,4681,4682],{"class":548,"line":1494},[546,4683,1539],{"class":565},[546,4685,4686],{"class":548,"line":1500},[546,4687,1371],{"class":584},[546,4689,4690,4692,4694],{"class":548,"line":1513},[546,4691,1271],{"class":664},[546,4693,2203],{"class":561},[546,4695,612],{"class":565},[546,4697,4698],{"class":548,"line":1536},[546,4699,1252],{"class":565},[546,4701,4702],{"class":548,"line":1542},[546,4703,1257],{"class":561},[546,4705,4706,4708,4711,4713,4715,4717,4719,4721,4724,4726,4728,4730],{"class":548,"line":1547},[546,4707,1322],{"class":557},[546,4709,4710],{"class":584}," processWithRetry",[546,4712,576],{"class":565},[546,4714,3824],{"class":644},[546,4716,680],{"class":565},[546,4718,4422],{"class":644},[546,4720,680],{"class":565},[546,4722,4723],{"class":644}," maxRetries",[546,4725,661],{"class":565},[546,4727,4370],{"class":1076},[546,4729,609],{"class":565},[546,4731,650],{"class":565},[546,4733,4734,4736,4738,4740,4743,4745,4747,4749,4751,4754,4756,4758,4760,4762,4764],{"class":548,"line":2576},[546,4735,2932],{"class":664},[546,4737,1484],{"class":584},[546,4739,2937],{"class":557},[546,4741,4742],{"class":561}," attempt",[546,4744,661],{"class":565},[546,4746,1345],{"class":1076},[546,4748,2947],{"class":565},[546,4750,4742],{"class":561},[546,4752,4753],{"class":565}," \u003C=",[546,4755,4723],{"class":561},[546,4757,2947],{"class":565},[546,4759,4742],{"class":561},[546,4761,2963],{"class":565},[546,4763,1080],{"class":584},[546,4765,579],{"class":565},[546,4767,4768,4771],{"class":548,"line":2582},[546,4769,4770],{"class":664},"      try",[546,4772,650],{"class":565},[546,4774,4775,4778,4780,4782,4784,4786,4788],{"class":548,"line":2587},[546,4776,4777],{"class":664},"        return",[546,4779,665],{"class":664},[546,4781,4422],{"class":572},[546,4783,576],{"class":584},[546,4785,3824],{"class":561},[546,4787,609],{"class":584},[546,4789,612],{"class":565},[546,4791,4792,4794,4796,4798,4800,4802],{"class":548,"line":3220},[546,4793,3031],{"class":565},[546,4795,1481],{"class":664},[546,4797,1484],{"class":584},[546,4799,1487],{"class":561},[546,4801,1080],{"class":584},[546,4803,579],{"class":565},[546,4805,4806,4809,4811,4814,4816,4818,4820],{"class":548,"line":3239},[546,4807,4808],{"class":664},"        if",[546,4810,1484],{"class":584},[546,4812,4813],{"class":561},"attempt",[546,4815,3975],{"class":565},[546,4817,4723],{"class":561},[546,4819,1080],{"class":584},[546,4821,579],{"class":565},[546,4823,4824,4827,4829],{"class":548,"line":3248},[546,4825,4826],{"class":664},"          throw",[546,4828,1866],{"class":561},[546,4830,612],{"class":565},[546,4832,4833],{"class":548,"line":3253},[546,4834,4835],{"class":565},"        }\n",[546,4837,4838],{"class":548,"line":3258},[546,4839,4840],{"class":584},"        \n",[546,4842,4843],{"class":548,"line":3264},[546,4844,4845],{"class":551},"        // Exponential backoff\n",[546,4847,4848,4851,4854,4856,4859,4861,4864,4866,4869,4871,4873,4875,4878,4881],{"class":548,"line":3287},[546,4849,4850],{"class":557},"        const",[546,4852,4853],{"class":561}," delay",[546,4855,661],{"class":565},[546,4857,4858],{"class":561}," Math",[546,4860,741],{"class":565},[546,4862,4863],{"class":572},"pow",[546,4865,576],{"class":584},[546,4867,4868],{"class":1076},"2",[546,4870,680],{"class":565},[546,4872,4742],{"class":561},[546,4874,1080],{"class":584},[546,4876,4877],{"class":565},"*",[546,4879,4880],{"class":1076}," 1000",[546,4882,612],{"class":565},[546,4884,4885,4887,4889,4891,4893,4895,4897],{"class":548,"line":3306},[546,4886,4660],{"class":664},[546,4888,1241],{"class":565},[546,4890,4379],{"class":572},[546,4892,576],{"class":584},[546,4894,4379],{"class":561},[546,4896,609],{"class":584},[546,4898,612],{"class":565},[546,4900,4901],{"class":548,"line":3315},[546,4902,4679],{"class":565},[546,4904,4905],{"class":548,"line":3320},[546,4906,1539],{"class":565},[546,4908,4909],{"class":548,"line":3325},[546,4910,1252],{"class":565},[546,4912,4913],{"class":548,"line":3339},[546,4914,1257],{"class":561},[546,4916,4917,4920,4922,4925,4927],{"class":548,"line":3362},[546,4918,4919],{"class":584},"  delay",[546,4921,576],{"class":565},[546,4923,4924],{"class":644},"ms",[546,4926,609],{"class":565},[546,4928,650],{"class":565},[546,4930,4931,4933,4935,4937,4939,4941,4943,4946,4948,4950,4952,4955,4958],{"class":548,"line":3385},[546,4932,1271],{"class":664},[546,4934,569],{"class":565},[546,4936,3271],{"class":1151},[546,4938,576],{"class":584},[546,4940,3278],{"class":644},[546,4942,1040],{"class":557},[546,4944,4945],{"class":572}," setTimeout",[546,4947,576],{"class":584},[546,4949,3278],{"class":561},[546,4951,680],{"class":565},[546,4953,4954],{"class":561}," ms",[546,4956,4957],{"class":584},"))",[546,4959,612],{"class":565},[546,4961,4962],{"class":548,"line":3399},[546,4963,1252],{"class":565},[546,4965,4966],{"class":548,"line":3409},[546,4967,789],{"class":565},[546,4969,4970],{"class":548,"line":3428},[546,4971,618],{"emptyLinePlaceholder":617},[546,4973,4974],{"class":548,"line":3433},[546,4975,1970],{"class":551},[546,4977,4978,4980,4983,4985,4987,4989,4992,4994],{"class":548,"line":3438},[546,4979,558],{"class":557},[546,4981,4982],{"class":561}," batchProcessor ",[546,4984,566],{"class":565},[546,4986,569],{"class":565},[546,4988,4297],{"class":572},[546,4990,4991],{"class":561},"(mindpeekerClient",[546,4993,680],{"class":565},[546,4995,650],{"class":565},[546,4997,4998,5001,5003,5005],{"class":548,"line":3443},[546,4999,5000],{"class":584},"  batchSize",[546,5002,588],{"class":565},[546,5004,3476],{"class":1076},[546,5006,699],{"class":565},[546,5008,5009,5012,5014,5016],{"class":548,"line":3448},[546,5010,5011],{"class":584},"  concurrency",[546,5013,588],{"class":565},[546,5015,2851],{"class":1076},[546,5017,699],{"class":565},[546,5019,5020,5022,5024],{"class":548,"line":3453},[546,5021,4919],{"class":584},[546,5023,588],{"class":565},[546,5025,5026],{"class":1076}," 200\n",[546,5028,5029,5031,5033],{"class":548,"line":3485},[546,5030,606],{"class":565},[546,5032,609],{"class":561},[546,5034,612],{"class":565},[546,5036,5037],{"class":548,"line":3490},[546,5038,618],{"emptyLinePlaceholder":617},[546,5040,5041,5043,5046,5048,5050,5052,5055,5057,5059,5061,5064,5066,5068,5070,5073,5075,5077,5079,5082,5084,5086,5088,5091,5093,5095],{"class":548,"line":3507},[546,5042,558],{"class":557},[546,5044,5045],{"class":561}," sessionIds ",[546,5047,566],{"class":565},[546,5049,1004],{"class":561},[546,5051,598],{"class":565},[546,5053,5054],{"class":594},"sess_1",[546,5056,598],{"class":565},[546,5058,680],{"class":565},[546,5060,591],{"class":565},[546,5062,5063],{"class":594},"sess_2",[546,5065,598],{"class":565},[546,5067,680],{"class":565},[546,5069,591],{"class":565},[546,5071,5072],{"class":594},"sess_3",[546,5074,598],{"class":565},[546,5076,680],{"class":565},[546,5078,591],{"class":565},[546,5080,5081],{"class":594},"sess_4",[546,5083,598],{"class":565},[546,5085,680],{"class":565},[546,5087,591],{"class":565},[546,5089,5090],{"class":594},"sess_5",[546,5092,598],{"class":565},[546,5094,1013],{"class":561},[546,5096,612],{"class":565},[546,5098,5099,5101,5104,5106,5108,5111,5113,5116],{"class":548,"line":3529},[546,5100,558],{"class":557},[546,5102,5103],{"class":561}," results ",[546,5105,566],{"class":565},[546,5107,665],{"class":664},[546,5109,5110],{"class":561}," batchProcessor",[546,5112,741],{"class":565},[546,5114,5115],{"class":572},"processSessions",[546,5117,4545],{"class":561},[546,5119,5120,5123],{"class":548,"line":3536},[546,5121,5122],{"class":561},"  sessionIds",[546,5124,699],{"class":565},[546,5126,5127,5129,5131,5133,5135,5137],{"class":548,"line":3578},[546,5128,1322],{"class":557},[546,5130,1484],{"class":565},[546,5132,3824],{"class":644},[546,5134,609],{"class":565},[546,5136,1040],{"class":557},[546,5138,650],{"class":565},[546,5140,5141,5143,5145,5147,5149,5151,5153,5155,5157,5159,5161],{"class":548,"line":3588},[546,5142,1271],{"class":664},[546,5144,665],{"class":664},[546,5146,2054],{"class":561},[546,5148,741],{"class":565},[546,5150,1391],{"class":561},[546,5152,741],{"class":565},[546,5154,3943],{"class":572},[546,5156,576],{"class":584},[546,5158,3824],{"class":561},[546,5160,609],{"class":584},[546,5162,612],{"class":565},[546,5164,5165],{"class":548,"line":3607},[546,5166,1252],{"class":565},[546,5168,5169,5171],{"class":548,"line":3612},[546,5170,609],{"class":561},[546,5172,612],{"class":565},[512,5174,5176],{"id":5175},"error-handling-best-practices","Error Handling Best Practices",[525,5178,5180],{"id":5179},"structured-error-handling","Structured Error Handling",[517,5182,5183],{},[532,5184,5185],{},"Implement custom error classes",[536,5187,5189],{"className":538,"code":5188,"language":540,"meta":541,"style":541},"class MindPeekerError extends Error {\n  constructor(message, code, details = {}) {\n    super(message);\n    this.name = 'MindPeekerError';\n    this.code = code;\n    this.details = details;\n    this.timestamp = new Date().toISOString();\n  }\n}\n\nclass RateLimitError extends MindPeekerError {\n  constructor(retryAfter) {\n    super('Rate limit exceeded', 'RATE_LIMIT_EXCEEDED', { retryAfter });\n    this.name = 'RateLimitError';\n  }\n}\n\nclass AuthenticationError extends MindPeekerError {\n  constructor() {\n    super('Authentication failed', 'AUTHENTICATION_ERROR');\n    this.name = 'AuthenticationError';\n  }\n}\n\nclass ValidationError extends MindPeekerError {\n  constructor(field, value) {\n    super(`Invalid ${field}: ${value}`, 'VALIDATION_ERROR', { field, value });\n    this.name = 'ValidationError';\n  }\n}\n",[543,5190,5191,5205,5229,5242,5260,5272,5285,5310,5314,5318,5322,5335,5348,5383,5400,5404,5408,5412,5425,5433,5459,5476,5480,5484,5488,5501,5518,5571,5588,5592],{"__ignoreMap":541},[546,5192,5193,5195,5198,5201,5203],{"class":548,"line":82},[546,5194,1148],{"class":557},[546,5196,5197],{"class":1151}," MindPeekerError",[546,5199,5200],{"class":557}," extends",[546,5202,1092],{"class":1151},[546,5204,650],{"class":565},[546,5206,5207,5209,5211,5213,5215,5218,5220,5223,5225,5227],{"class":548,"line":114},[546,5208,1159],{"class":557},[546,5210,576],{"class":565},[546,5212,1939],{"class":644},[546,5214,680],{"class":565},[546,5216,5217],{"class":644}," code",[546,5219,680],{"class":565},[546,5221,5222],{"class":644}," details",[546,5224,661],{"class":565},[546,5226,2805],{"class":565},[546,5228,650],{"class":565},[546,5230,5231,5234,5236,5238,5240],{"class":548,"line":146},[546,5232,5233],{"class":561},"    super",[546,5235,576],{"class":584},[546,5237,1939],{"class":561},[546,5239,609],{"class":584},[546,5241,612],{"class":565},[546,5243,5244,5246,5249,5251,5253,5256,5258],{"class":548,"line":178},[546,5245,1168],{"class":565},[546,5247,5248],{"class":561},"name",[546,5250,661],{"class":565},[546,5252,591],{"class":565},[546,5254,5255],{"class":594},"MindPeekerError",[546,5257,598],{"class":565},[546,5259,612],{"class":565},[546,5261,5262,5264,5266,5268,5270],{"class":548,"line":268},[546,5263,1168],{"class":565},[546,5265,543],{"class":561},[546,5267,661],{"class":565},[546,5269,5217],{"class":561},[546,5271,612],{"class":565},[546,5273,5274,5276,5279,5281,5283],{"class":548,"line":273},[546,5275,1168],{"class":565},[546,5277,5278],{"class":561},"details",[546,5280,661],{"class":565},[546,5282,5222],{"class":561},[546,5284,612],{"class":565},[546,5286,5287,5289,5292,5294,5296,5299,5301,5303,5306,5308],{"class":548,"line":279},[546,5288,1168],{"class":565},[546,5290,5291],{"class":561},"timestamp",[546,5293,661],{"class":565},[546,5295,569],{"class":565},[546,5297,5298],{"class":572}," Date",[546,5300,782],{"class":584},[546,5302,741],{"class":565},[546,5304,5305],{"class":572},"toISOString",[546,5307,782],{"class":584},[546,5309,612],{"class":565},[546,5311,5312],{"class":548,"line":285},[546,5313,1252],{"class":565},[546,5315,5316],{"class":548,"line":291},[546,5317,789],{"class":565},[546,5319,5320],{"class":548,"line":222},[546,5321,618],{"emptyLinePlaceholder":617},[546,5323,5324,5326,5329,5331,5333],{"class":548,"line":227},[546,5325,1148],{"class":557},[546,5327,5328],{"class":1151}," RateLimitError",[546,5330,5200],{"class":557},[546,5332,5197],{"class":1151},[546,5334,650],{"class":565},[546,5336,5337,5339,5341,5344,5346],{"class":548,"line":232},[546,5338,1159],{"class":557},[546,5340,576],{"class":565},[546,5342,5343],{"class":644},"retryAfter",[546,5345,609],{"class":565},[546,5347,650],{"class":565},[546,5349,5350,5352,5354,5356,5359,5361,5363,5365,5368,5370,5372,5374,5377,5379,5381],{"class":548,"line":238},[546,5351,5233],{"class":561},[546,5353,576],{"class":584},[546,5355,598],{"class":565},[546,5357,5358],{"class":594},"Rate limit exceeded",[546,5360,598],{"class":565},[546,5362,680],{"class":565},[546,5364,591],{"class":565},[546,5366,5367],{"class":594},"RATE_LIMIT_EXCEEDED",[546,5369,598],{"class":565},[546,5371,680],{"class":565},[546,5373,709],{"class":565},[546,5375,5376],{"class":561}," retryAfter",[546,5378,755],{"class":565},[546,5380,609],{"class":584},[546,5382,612],{"class":565},[546,5384,5385,5387,5389,5391,5393,5396,5398],{"class":548,"line":243},[546,5386,1168],{"class":565},[546,5388,5248],{"class":561},[546,5390,661],{"class":565},[546,5392,591],{"class":565},[546,5394,5395],{"class":594},"RateLimitError",[546,5397,598],{"class":565},[546,5399,612],{"class":565},[546,5401,5402],{"class":548,"line":248},[546,5403,1252],{"class":565},[546,5405,5406],{"class":548,"line":792},[546,5407,789],{"class":565},[546,5409,5410],{"class":548,"line":797},[546,5411,618],{"emptyLinePlaceholder":617},[546,5413,5414,5416,5419,5421,5423],{"class":548,"line":803},[546,5415,1148],{"class":557},[546,5417,5418],{"class":1151}," AuthenticationError",[546,5420,5200],{"class":557},[546,5422,5197],{"class":1151},[546,5424,650],{"class":565},[546,5426,5427,5429,5431],{"class":548,"line":820},[546,5428,1159],{"class":557},[546,5430,782],{"class":565},[546,5432,650],{"class":565},[546,5434,5435,5437,5439,5441,5444,5446,5448,5450,5453,5455,5457],{"class":548,"line":843},[546,5436,5233],{"class":561},[546,5438,576],{"class":584},[546,5440,598],{"class":565},[546,5442,5443],{"class":594},"Authentication failed",[546,5445,598],{"class":565},[546,5447,680],{"class":565},[546,5449,591],{"class":565},[546,5451,5452],{"class":594},"AUTHENTICATION_ERROR",[546,5454,598],{"class":565},[546,5456,609],{"class":584},[546,5458,612],{"class":565},[546,5460,5461,5463,5465,5467,5469,5472,5474],{"class":548,"line":1381},[546,5462,1168],{"class":565},[546,5464,5248],{"class":561},[546,5466,661],{"class":565},[546,5468,591],{"class":565},[546,5470,5471],{"class":594},"AuthenticationError",[546,5473,598],{"class":565},[546,5475,612],{"class":565},[546,5477,5478],{"class":548,"line":1416},[546,5479,1252],{"class":565},[546,5481,5482],{"class":548,"line":1422},[546,5483,789],{"class":565},[546,5485,5486],{"class":548,"line":1439},[546,5487,618],{"emptyLinePlaceholder":617},[546,5489,5490,5492,5495,5497,5499],{"class":548,"line":1452},[546,5491,1148],{"class":557},[546,5493,5494],{"class":1151}," ValidationError",[546,5496,5200],{"class":557},[546,5498,5197],{"class":1151},[546,5500,650],{"class":565},[546,5502,5503,5505,5507,5510,5512,5514,5516],{"class":548,"line":1476},[546,5504,1159],{"class":557},[546,5506,576],{"class":565},[546,5508,5509],{"class":644},"field",[546,5511,680],{"class":565},[546,5513,1871],{"class":644},[546,5515,609],{"class":565},[546,5517,650],{"class":565},[546,5519,5520,5522,5524,5526,5529,5531,5533,5535,5538,5540,5543,5545,5547,5549,5552,5554,5556,5558,5561,5563,5565,5567,5569],{"class":548,"line":1494},[546,5521,5233],{"class":561},[546,5523,576],{"class":584},[546,5525,1097],{"class":565},[546,5527,5528],{"class":594},"Invalid ",[546,5530,1103],{"class":565},[546,5532,5509],{"class":561},[546,5534,606],{"class":565},[546,5536,5537],{"class":594},": ",[546,5539,1103],{"class":565},[546,5541,5542],{"class":561},"value",[546,5544,1125],{"class":565},[546,5546,680],{"class":565},[546,5548,591],{"class":565},[546,5550,5551],{"class":594},"VALIDATION_ERROR",[546,5553,598],{"class":565},[546,5555,680],{"class":565},[546,5557,709],{"class":565},[546,5559,5560],{"class":561}," field",[546,5562,680],{"class":565},[546,5564,1871],{"class":561},[546,5566,755],{"class":565},[546,5568,609],{"class":584},[546,5570,612],{"class":565},[546,5572,5573,5575,5577,5579,5581,5584,5586],{"class":548,"line":1500},[546,5574,1168],{"class":565},[546,5576,5248],{"class":561},[546,5578,661],{"class":565},[546,5580,591],{"class":565},[546,5582,5583],{"class":594},"ValidationError",[546,5585,598],{"class":565},[546,5587,612],{"class":565},[546,5589,5590],{"class":548,"line":1513},[546,5591,1252],{"class":565},[546,5593,5594],{"class":548,"line":1536},[546,5595,789],{"class":565},[517,5597,5598],{},[532,5599,5600],{},"Centralized error handling middleware",[536,5602,5604],{"className":538,"code":5603,"language":540,"meta":541,"style":541},"function errorHandler(err, req, res, next) {\n  // Log error\n  console.error(`Error ${err.name}: ${err.message}`, {\n    code: err.code,\n    details: err.details,\n    stack: err.stack,\n    requestId: req.id,\n    userId: req.user?.id,\n    timestamp: err.timestamp\n  });\n  \n  // Determine response based on error type\n  if (err instanceof RateLimitError) {\n    return res.status(429).json({\n      error: {\n        code: 'RATE_LIMIT_EXCEEDED',\n        message: 'Too many requests',\n        retryAfter: err.details.retryAfter\n      }\n    });\n  }\n  \n  if (err instanceof AuthenticationError) {\n    return res.status(401).json({\n      error: {\n        code: 'AUTHENTICATION_ERROR',\n        message: 'Invalid credentials'\n      }\n    });\n  }\n  \n  if (err instanceof ValidationError) {\n    return res.status(400).json({\n      error: {\n        code: 'VALIDATION_ERROR',\n        message: err.message,\n        field: err.details.field\n      }\n    });\n  }\n  \n  // Default error response\n  res.status(500).json({\n    error: {\n      code: 'INTERNAL_ERROR',\n      message: 'An unexpected error occurred'\n    }\n  });\n}\n",[543,5605,5606,5636,5641,5683,5699,5714,5730,5746,5766,5780,5788,5792,5797,5814,5839,5848,5863,5879,5897,5901,5909,5913,5917,5933,5958,5966,5980,5993,5997,6005,6009,6013,6029,6053,6061,6075,6089,6107,6111,6119,6123,6127,6132,6156,6165,6181,6195,6199,6207],{"__ignoreMap":541},[546,5607,5608,5610,5613,5615,5618,5620,5623,5625,5627,5629,5632,5634],{"class":548,"line":82},[546,5609,1845],{"class":557},[546,5611,5612],{"class":572}," errorHandler",[546,5614,576],{"class":565},[546,5616,5617],{"class":644},"err",[546,5619,680],{"class":565},[546,5621,5622],{"class":644}," req",[546,5624,680],{"class":565},[546,5626,2003],{"class":644},[546,5628,680],{"class":565},[546,5630,5631],{"class":644}," next",[546,5633,609],{"class":565},[546,5635,650],{"class":565},[546,5637,5638],{"class":548,"line":114},[546,5639,5640],{"class":551},"  // Log error\n",[546,5642,5643,5646,5648,5650,5652,5654,5657,5659,5661,5663,5665,5667,5669,5671,5673,5675,5677,5679,5681],{"class":548,"line":146},[546,5644,5645],{"class":561},"  console",[546,5647,741],{"class":565},[546,5649,1487],{"class":572},[546,5651,576],{"class":584},[546,5653,1097],{"class":565},[546,5655,5656],{"class":594},"Error ",[546,5658,1103],{"class":565},[546,5660,5617],{"class":561},[546,5662,741],{"class":565},[546,5664,5248],{"class":561},[546,5666,606],{"class":565},[546,5668,5537],{"class":594},[546,5670,1103],{"class":565},[546,5672,5617],{"class":561},[546,5674,741],{"class":565},[546,5676,1939],{"class":561},[546,5678,1125],{"class":565},[546,5680,680],{"class":565},[546,5682,650],{"class":565},[546,5684,5685,5688,5690,5693,5695,5697],{"class":548,"line":178},[546,5686,5687],{"class":584},"    code",[546,5689,588],{"class":565},[546,5691,5692],{"class":561}," err",[546,5694,741],{"class":565},[546,5696,543],{"class":561},[546,5698,699],{"class":565},[546,5700,5701,5704,5706,5708,5710,5712],{"class":548,"line":268},[546,5702,5703],{"class":584},"    details",[546,5705,588],{"class":565},[546,5707,5692],{"class":561},[546,5709,741],{"class":565},[546,5711,5278],{"class":561},[546,5713,699],{"class":565},[546,5715,5716,5719,5721,5723,5725,5728],{"class":548,"line":273},[546,5717,5718],{"class":584},"    stack",[546,5720,588],{"class":565},[546,5722,5692],{"class":561},[546,5724,741],{"class":565},[546,5726,5727],{"class":561},"stack",[546,5729,699],{"class":565},[546,5731,5732,5735,5737,5739,5741,5744],{"class":548,"line":279},[546,5733,5734],{"class":584},"    requestId",[546,5736,588],{"class":565},[546,5738,5622],{"class":561},[546,5740,741],{"class":565},[546,5742,5743],{"class":561},"id",[546,5745,699],{"class":565},[546,5747,5748,5751,5753,5755,5757,5759,5762,5764],{"class":548,"line":285},[546,5749,5750],{"class":584},"    userId",[546,5752,588],{"class":565},[546,5754,5622],{"class":561},[546,5756,741],{"class":565},[546,5758,2296],{"class":561},[546,5760,5761],{"class":565},"?.",[546,5763,5743],{"class":561},[546,5765,699],{"class":565},[546,5767,5768,5771,5773,5775,5777],{"class":548,"line":291},[546,5769,5770],{"class":584},"    timestamp",[546,5772,588],{"class":565},[546,5774,5692],{"class":561},[546,5776,741],{"class":565},[546,5778,5779],{"class":561},"timestamp\n",[546,5781,5782,5784,5786],{"class":548,"line":222},[546,5783,763],{"class":565},[546,5785,609],{"class":584},[546,5787,612],{"class":565},[546,5789,5790],{"class":548,"line":227},[546,5791,1257],{"class":584},[546,5793,5794],{"class":548,"line":232},[546,5795,5796],{"class":551},"  // Determine response based on error type\n",[546,5798,5799,5801,5803,5805,5808,5810,5812],{"class":548,"line":238},[546,5800,1896],{"class":664},[546,5802,1484],{"class":584},[546,5804,5617],{"class":561},[546,5806,5807],{"class":565}," instanceof",[546,5809,5328],{"class":1151},[546,5811,1080],{"class":584},[546,5813,579],{"class":565},[546,5815,5816,5818,5820,5822,5824,5826,5829,5831,5833,5835,5837],{"class":548,"line":243},[546,5817,1271],{"class":664},[546,5819,2003],{"class":561},[546,5821,741],{"class":565},[546,5823,2113],{"class":572},[546,5825,576],{"class":584},[546,5827,5828],{"class":1076},"429",[546,5830,609],{"class":584},[546,5832,741],{"class":565},[546,5834,779],{"class":572},[546,5836,576],{"class":584},[546,5838,579],{"class":565},[546,5840,5841,5844,5846],{"class":548,"line":248},[546,5842,5843],{"class":584},"      error",[546,5845,588],{"class":565},[546,5847,650],{"class":565},[546,5849,5850,5853,5855,5857,5859,5861],{"class":548,"line":792},[546,5851,5852],{"class":584},"        code",[546,5854,588],{"class":565},[546,5856,591],{"class":565},[546,5858,5367],{"class":594},[546,5860,598],{"class":565},[546,5862,699],{"class":565},[546,5864,5865,5868,5870,5872,5875,5877],{"class":548,"line":797},[546,5866,5867],{"class":584},"        message",[546,5869,588],{"class":565},[546,5871,591],{"class":565},[546,5873,5874],{"class":594},"Too many requests",[546,5876,598],{"class":565},[546,5878,699],{"class":565},[546,5880,5881,5884,5886,5888,5890,5892,5894],{"class":548,"line":803},[546,5882,5883],{"class":584},"        retryAfter",[546,5885,588],{"class":565},[546,5887,5692],{"class":561},[546,5889,741],{"class":565},[546,5891,5278],{"class":561},[546,5893,741],{"class":565},[546,5895,5896],{"class":561},"retryAfter\n",[546,5898,5899],{"class":548,"line":820},[546,5900,4679],{"class":565},[546,5902,5903,5905,5907],{"class":548,"line":843},[546,5904,1305],{"class":565},[546,5906,609],{"class":584},[546,5908,612],{"class":565},[546,5910,5911],{"class":548,"line":1381},[546,5912,1252],{"class":565},[546,5914,5915],{"class":548,"line":1416},[546,5916,1257],{"class":584},[546,5918,5919,5921,5923,5925,5927,5929,5931],{"class":548,"line":1422},[546,5920,1896],{"class":664},[546,5922,1484],{"class":584},[546,5924,5617],{"class":561},[546,5926,5807],{"class":565},[546,5928,5418],{"class":1151},[546,5930,1080],{"class":584},[546,5932,579],{"class":565},[546,5934,5935,5937,5939,5941,5943,5945,5948,5950,5952,5954,5956],{"class":548,"line":1439},[546,5936,1271],{"class":664},[546,5938,2003],{"class":561},[546,5940,741],{"class":565},[546,5942,2113],{"class":572},[546,5944,576],{"class":584},[546,5946,5947],{"class":1076},"401",[546,5949,609],{"class":584},[546,5951,741],{"class":565},[546,5953,779],{"class":572},[546,5955,576],{"class":584},[546,5957,579],{"class":565},[546,5959,5960,5962,5964],{"class":548,"line":1452},[546,5961,5843],{"class":584},[546,5963,588],{"class":565},[546,5965,650],{"class":565},[546,5967,5968,5970,5972,5974,5976,5978],{"class":548,"line":1476},[546,5969,5852],{"class":584},[546,5971,588],{"class":565},[546,5973,591],{"class":565},[546,5975,5452],{"class":594},[546,5977,598],{"class":565},[546,5979,699],{"class":565},[546,5981,5982,5984,5986,5988,5991],{"class":548,"line":1494},[546,5983,5867],{"class":584},[546,5985,588],{"class":565},[546,5987,591],{"class":565},[546,5989,5990],{"class":594},"Invalid credentials",[546,5992,978],{"class":565},[546,5994,5995],{"class":548,"line":1500},[546,5996,4679],{"class":565},[546,5998,5999,6001,6003],{"class":548,"line":1513},[546,6000,1305],{"class":565},[546,6002,609],{"class":584},[546,6004,612],{"class":565},[546,6006,6007],{"class":548,"line":1536},[546,6008,1252],{"class":565},[546,6010,6011],{"class":548,"line":1542},[546,6012,1257],{"class":584},[546,6014,6015,6017,6019,6021,6023,6025,6027],{"class":548,"line":1547},[546,6016,1896],{"class":664},[546,6018,1484],{"class":584},[546,6020,5617],{"class":561},[546,6022,5807],{"class":565},[546,6024,5494],{"class":1151},[546,6026,1080],{"class":584},[546,6028,579],{"class":565},[546,6030,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049,6051],{"class":548,"line":2576},[546,6032,1271],{"class":664},[546,6034,2003],{"class":561},[546,6036,741],{"class":565},[546,6038,2113],{"class":572},[546,6040,576],{"class":584},[546,6042,2118],{"class":1076},[546,6044,609],{"class":584},[546,6046,741],{"class":565},[546,6048,779],{"class":572},[546,6050,576],{"class":584},[546,6052,579],{"class":565},[546,6054,6055,6057,6059],{"class":548,"line":2582},[546,6056,5843],{"class":584},[546,6058,588],{"class":565},[546,6060,650],{"class":565},[546,6062,6063,6065,6067,6069,6071,6073],{"class":548,"line":2587},[546,6064,5852],{"class":584},[546,6066,588],{"class":565},[546,6068,591],{"class":565},[546,6070,5551],{"class":594},[546,6072,598],{"class":565},[546,6074,699],{"class":565},[546,6076,6077,6079,6081,6083,6085,6087],{"class":548,"line":3220},[546,6078,5867],{"class":584},[546,6080,588],{"class":565},[546,6082,5692],{"class":561},[546,6084,741],{"class":565},[546,6086,1939],{"class":561},[546,6088,699],{"class":565},[546,6090,6091,6094,6096,6098,6100,6102,6104],{"class":548,"line":3239},[546,6092,6093],{"class":584},"        field",[546,6095,588],{"class":565},[546,6097,5692],{"class":561},[546,6099,741],{"class":565},[546,6101,5278],{"class":561},[546,6103,741],{"class":565},[546,6105,6106],{"class":561},"field\n",[546,6108,6109],{"class":548,"line":3248},[546,6110,4679],{"class":565},[546,6112,6113,6115,6117],{"class":548,"line":3253},[546,6114,1305],{"class":565},[546,6116,609],{"class":584},[546,6118,612],{"class":565},[546,6120,6121],{"class":548,"line":3258},[546,6122,1252],{"class":565},[546,6124,6125],{"class":548,"line":3264},[546,6126,1257],{"class":584},[546,6128,6129],{"class":548,"line":3287},[546,6130,6131],{"class":551},"  // Default error response\n",[546,6133,6134,6137,6139,6141,6143,6146,6148,6150,6152,6154],{"class":548,"line":3306},[546,6135,6136],{"class":561},"  res",[546,6138,741],{"class":565},[546,6140,2113],{"class":572},[546,6142,576],{"class":584},[546,6144,6145],{"class":1076},"500",[546,6147,609],{"class":584},[546,6149,741],{"class":565},[546,6151,779],{"class":572},[546,6153,576],{"class":584},[546,6155,579],{"class":565},[546,6157,6158,6161,6163],{"class":548,"line":3315},[546,6159,6160],{"class":584},"    error",[546,6162,588],{"class":565},[546,6164,650],{"class":565},[546,6166,6167,6170,6172,6174,6177,6179],{"class":548,"line":3320},[546,6168,6169],{"class":584},"      code",[546,6171,588],{"class":565},[546,6173,591],{"class":565},[546,6175,6176],{"class":594},"INTERNAL_ERROR",[546,6178,598],{"class":565},[546,6180,699],{"class":565},[546,6182,6183,6186,6188,6190,6193],{"class":548,"line":3325},[546,6184,6185],{"class":584},"      message",[546,6187,588],{"class":565},[546,6189,591],{"class":565},[546,6191,6192],{"class":594},"An unexpected error occurred",[546,6194,978],{"class":565},[546,6196,6197],{"class":548,"line":3339},[546,6198,1539],{"class":565},[546,6200,6201,6203,6205],{"class":548,"line":3362},[546,6202,763],{"class":565},[546,6204,609],{"class":584},[546,6206,612],{"class":565},[546,6208,6209],{"class":548,"line":3385},[546,6210,789],{"class":565},[525,6212,6214],{"id":6213},"retry-logic","Retry Logic",[517,6216,6217],{},[532,6218,6219],{},"Exponential backoff with jitter",[536,6221,6223],{"className":538,"code":6222,"language":540,"meta":541,"style":541},"class RetryHandler {\n  constructor(options = {}) {\n    this.maxRetries = options.maxRetries || 3;\n    this.baseDelay = options.baseDelay || 1000;\n    this.maxDelay = options.maxDelay || 30000;\n    this.jitterFactor = options.jitterFactor || 0.1;\n  }\n  \n  async executeWithRetry(operation, context = {}) {\n    let lastError;\n    \n    for (let attempt = 1; attempt \u003C= this.maxRetries + 1; attempt++) {\n      try {\n        return await operation();\n      } catch (error) {\n        lastError = error;\n        \n        // Don't retry on certain errors\n        if (this.isNonRetryableError(error)) {\n          throw error;\n        }\n        \n        // Don't retry on last attempt\n        if (attempt > this.maxRetries) {\n          break;\n        }\n        \n        const delay = this.calculateDelay(attempt);\n        console.log(`Attempt ${attempt} failed, retrying in ${delay}ms:`, error.message);\n        await this.sleep(delay);\n      }\n    }\n    \n    throw lastError;\n  }\n  \n  isNonRetryableError(error) {\n    const nonRetryableCodes = [\n      'AUTHENTICATION_ERROR',\n      'VALIDATION_ERROR',\n      'PERMISSION_DENIED'\n    ];\n    \n    return nonRetryableCodes.includes(error.code) ||\n           error.status === 401 ||\n           error.status === 403 ||\n           error.status === 422;\n  }\n  \n  calculateDelay(attempt) {\n    // Exponential backoff with jitter\n    const exponentialDelay = Math.min(\n      this.baseDelay * Math.pow(2, attempt - 1),\n      this.maxDelay\n    );\n    \n    // Add jitter to prevent thundering herd\n    const jitter = exponentialDelay * this.jitterFactor * Math.random();\n    \n    return Math.floor(exponentialDelay + jitter);\n  }\n  \n  sleep(ms) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n  }\n}\n\n// Usage\nconst retryHandler = new RetryHandler({\n  maxRetries: 3,\n  baseDelay: 1000,\n  maxDelay: 10000\n});\n\nasync function createSessionWithRetry(sessionData) {\n  return await retryHandler.executeWithRetry(async () => {\n    return await mindpeekerClient.sessions.create(sessionData);\n  });\n}\n",[543,6224,6225,6234,6248,6269,6290,6311,6333,6337,6341,6364,6373,6377,6415,6421,6434,6448,6459,6463,6468,6487,6495,6499,6503,6508,6526,6533,6537,6541,6562,6610,6627,6631,6635,6639,6647,6651,6655,6668,6680,6691,6701,6710,6717,6721,6745,6762,6777,6792,6796,6800,6813,6818,6835,6867,6874,6881,6885,6890,6920,6924,6948,6952,6956,6969,6997,7001,7005,7010,7015,7033,7045,7057,7068,7077,7082,7101,7127,7152,7161],{"__ignoreMap":541},[546,6226,6227,6229,6232],{"class":548,"line":82},[546,6228,1148],{"class":557},[546,6230,6231],{"class":1151}," RetryHandler",[546,6233,650],{"class":565},[546,6235,6236,6238,6240,6242,6244,6246],{"class":548,"line":114},[546,6237,1159],{"class":557},[546,6239,576],{"class":565},[546,6241,2800],{"class":644},[546,6243,661],{"class":565},[546,6245,2805],{"class":565},[546,6247,650],{"class":565},[546,6249,6250,6252,6255,6257,6259,6261,6263,6265,6267],{"class":548,"line":146},[546,6251,1168],{"class":565},[546,6253,6254],{"class":561},"maxRetries",[546,6256,661],{"class":565},[546,6258,2819],{"class":561},[546,6260,741],{"class":565},[546,6262,6254],{"class":561},[546,6264,2826],{"class":565},[546,6266,4370],{"class":1076},[546,6268,612],{"class":565},[546,6270,6271,6273,6276,6278,6280,6282,6284,6286,6288],{"class":548,"line":178},[546,6272,1168],{"class":565},[546,6274,6275],{"class":561},"baseDelay",[546,6277,661],{"class":565},[546,6279,2819],{"class":561},[546,6281,741],{"class":565},[546,6283,6275],{"class":561},[546,6285,2826],{"class":565},[546,6287,4880],{"class":1076},[546,6289,612],{"class":565},[546,6291,6292,6294,6297,6299,6301,6303,6305,6307,6309],{"class":548,"line":268},[546,6293,1168],{"class":565},[546,6295,6296],{"class":561},"maxDelay",[546,6298,661],{"class":565},[546,6300,2819],{"class":561},[546,6302,741],{"class":565},[546,6304,6296],{"class":561},[546,6306,2826],{"class":565},[546,6308,3014],{"class":1076},[546,6310,612],{"class":565},[546,6312,6313,6315,6318,6320,6322,6324,6326,6328,6331],{"class":548,"line":273},[546,6314,1168],{"class":565},[546,6316,6317],{"class":561},"jitterFactor",[546,6319,661],{"class":565},[546,6321,2819],{"class":561},[546,6323,741],{"class":565},[546,6325,6317],{"class":561},[546,6327,2826],{"class":565},[546,6329,6330],{"class":1076}," 0.1",[546,6332,612],{"class":565},[546,6334,6335],{"class":548,"line":279},[546,6336,1252],{"class":565},[546,6338,6339],{"class":548,"line":285},[546,6340,1257],{"class":561},[546,6342,6343,6345,6348,6350,6353,6355,6358,6360,6362],{"class":548,"line":291},[546,6344,1322],{"class":557},[546,6346,6347],{"class":584}," executeWithRetry",[546,6349,576],{"class":565},[546,6351,6352],{"class":644},"operation",[546,6354,680],{"class":565},[546,6356,6357],{"class":644}," context",[546,6359,661],{"class":565},[546,6361,2805],{"class":565},[546,6363,650],{"class":565},[546,6365,6366,6368,6371],{"class":548,"line":222},[546,6367,3862],{"class":557},[546,6369,6370],{"class":561}," lastError",[546,6372,612],{"class":565},[546,6374,6375],{"class":548,"line":227},[546,6376,1371],{"class":584},[546,6378,6379,6381,6383,6385,6387,6389,6391,6393,6395,6397,6399,6401,6403,6405,6407,6409,6411,6413],{"class":548,"line":232},[546,6380,2932],{"class":664},[546,6382,1484],{"class":584},[546,6384,2937],{"class":557},[546,6386,4742],{"class":561},[546,6388,661],{"class":565},[546,6390,1345],{"class":1076},[546,6392,2947],{"class":565},[546,6394,4742],{"class":561},[546,6396,4753],{"class":565},[546,6398,1241],{"class":565},[546,6400,6254],{"class":561},[546,6402,4512],{"class":565},[546,6404,1345],{"class":1076},[546,6406,2947],{"class":565},[546,6408,4742],{"class":561},[546,6410,2963],{"class":565},[546,6412,1080],{"class":584},[546,6414,579],{"class":565},[546,6416,6417,6419],{"class":548,"line":238},[546,6418,4770],{"class":664},[546,6420,650],{"class":565},[546,6422,6423,6425,6427,6430,6432],{"class":548,"line":243},[546,6424,4777],{"class":664},[546,6426,665],{"class":664},[546,6428,6429],{"class":572}," operation",[546,6431,782],{"class":584},[546,6433,612],{"class":565},[546,6435,6436,6438,6440,6442,6444,6446],{"class":548,"line":248},[546,6437,3031],{"class":565},[546,6439,1481],{"class":664},[546,6441,1484],{"class":584},[546,6443,1487],{"class":561},[546,6445,1080],{"class":584},[546,6447,579],{"class":565},[546,6449,6450,6453,6455,6457],{"class":548,"line":792},[546,6451,6452],{"class":561},"        lastError",[546,6454,661],{"class":565},[546,6456,1866],{"class":561},[546,6458,612],{"class":565},[546,6460,6461],{"class":548,"line":797},[546,6462,4840],{"class":584},[546,6464,6465],{"class":548,"line":803},[546,6466,6467],{"class":551},"        // Don't retry on certain errors\n",[546,6469,6470,6472,6474,6476,6479,6481,6483,6485],{"class":548,"line":820},[546,6471,4808],{"class":664},[546,6473,1484],{"class":584},[546,6475,1234],{"class":565},[546,6477,6478],{"class":572},"isNonRetryableError",[546,6480,576],{"class":584},[546,6482,1487],{"class":561},[546,6484,2299],{"class":584},[546,6486,579],{"class":565},[546,6488,6489,6491,6493],{"class":548,"line":843},[546,6490,4826],{"class":664},[546,6492,1866],{"class":561},[546,6494,612],{"class":565},[546,6496,6497],{"class":548,"line":1381},[546,6498,4835],{"class":565},[546,6500,6501],{"class":548,"line":1416},[546,6502,4840],{"class":584},[546,6504,6505],{"class":548,"line":1422},[546,6506,6507],{"class":551},"        // Don't retry on last attempt\n",[546,6509,6510,6512,6514,6516,6518,6520,6522,6524],{"class":548,"line":1439},[546,6511,4808],{"class":664},[546,6513,1484],{"class":584},[546,6515,4813],{"class":561},[546,6517,3120],{"class":565},[546,6519,1241],{"class":565},[546,6521,6254],{"class":561},[546,6523,1080],{"class":584},[546,6525,579],{"class":565},[546,6527,6528,6531],{"class":548,"line":1452},[546,6529,6530],{"class":664},"          break",[546,6532,612],{"class":565},[546,6534,6535],{"class":548,"line":1476},[546,6536,4835],{"class":565},[546,6538,6539],{"class":548,"line":1494},[546,6540,4840],{"class":584},[546,6542,6543,6545,6547,6549,6551,6554,6556,6558,6560],{"class":548,"line":1500},[546,6544,4850],{"class":557},[546,6546,4853],{"class":561},[546,6548,661],{"class":565},[546,6550,1241],{"class":565},[546,6552,6553],{"class":572},"calculateDelay",[546,6555,576],{"class":584},[546,6557,4813],{"class":561},[546,6559,609],{"class":584},[546,6561,612],{"class":565},[546,6563,6564,6567,6569,6571,6573,6575,6578,6580,6582,6584,6587,6589,6591,6593,6596,6598,6600,6602,6604,6606,6608],{"class":548,"line":1513},[546,6565,6566],{"class":561},"        console",[546,6568,741],{"class":565},[546,6570,1460],{"class":572},[546,6572,576],{"class":584},[546,6574,1097],{"class":565},[546,6576,6577],{"class":594},"Attempt ",[546,6579,1103],{"class":565},[546,6581,4813],{"class":561},[546,6583,606],{"class":565},[546,6585,6586],{"class":594}," failed, retrying in ",[546,6588,1103],{"class":565},[546,6590,4379],{"class":561},[546,6592,606],{"class":565},[546,6594,6595],{"class":594},"ms:",[546,6597,1097],{"class":565},[546,6599,680],{"class":565},[546,6601,1866],{"class":561},[546,6603,741],{"class":565},[546,6605,1939],{"class":561},[546,6607,609],{"class":584},[546,6609,612],{"class":565},[546,6611,6612,6614,6616,6619,6621,6623,6625],{"class":548,"line":1536},[546,6613,4660],{"class":664},[546,6615,1241],{"class":565},[546,6617,6618],{"class":572},"sleep",[546,6620,576],{"class":584},[546,6622,4379],{"class":561},[546,6624,609],{"class":584},[546,6626,612],{"class":565},[546,6628,6629],{"class":548,"line":1542},[546,6630,4679],{"class":565},[546,6632,6633],{"class":548,"line":1547},[546,6634,1539],{"class":565},[546,6636,6637],{"class":548,"line":2576},[546,6638,1371],{"class":584},[546,6640,6641,6643,6645],{"class":548,"line":2582},[546,6642,1909],{"class":664},[546,6644,6370],{"class":561},[546,6646,612],{"class":565},[546,6648,6649],{"class":548,"line":2587},[546,6650,1252],{"class":565},[546,6652,6653],{"class":548,"line":3220},[546,6654,1257],{"class":561},[546,6656,6657,6660,6662,6664,6666],{"class":548,"line":3239},[546,6658,6659],{"class":584},"  isNonRetryableError",[546,6661,576],{"class":565},[546,6663,1487],{"class":644},[546,6665,609],{"class":565},[546,6667,650],{"class":565},[546,6669,6670,6672,6675,6677],{"class":548,"line":3248},[546,6671,1352],{"class":557},[546,6673,6674],{"class":561}," nonRetryableCodes",[546,6676,661],{"class":565},[546,6678,6679],{"class":584}," [\n",[546,6681,6682,6685,6687,6689],{"class":548,"line":3253},[546,6683,6684],{"class":565},"      '",[546,6686,5452],{"class":594},[546,6688,598],{"class":565},[546,6690,699],{"class":565},[546,6692,6693,6695,6697,6699],{"class":548,"line":3258},[546,6694,6684],{"class":565},[546,6696,5551],{"class":594},[546,6698,598],{"class":565},[546,6700,699],{"class":565},[546,6702,6703,6705,6708],{"class":548,"line":3264},[546,6704,6684],{"class":565},[546,6706,6707],{"class":594},"PERMISSION_DENIED",[546,6709,978],{"class":565},[546,6711,6712,6715],{"class":548,"line":3287},[546,6713,6714],{"class":584},"    ]",[546,6716,612],{"class":565},[546,6718,6719],{"class":548,"line":3306},[546,6720,1371],{"class":584},[546,6722,6723,6725,6727,6729,6732,6734,6736,6738,6740,6742],{"class":548,"line":3315},[546,6724,1271],{"class":664},[546,6726,6674],{"class":561},[546,6728,741],{"class":565},[546,6730,6731],{"class":572},"includes",[546,6733,576],{"class":584},[546,6735,1487],{"class":561},[546,6737,741],{"class":565},[546,6739,543],{"class":561},[546,6741,1080],{"class":584},[546,6743,6744],{"class":565},"||\n",[546,6746,6747,6750,6752,6754,6756,6759],{"class":548,"line":3320},[546,6748,6749],{"class":561},"           error",[546,6751,741],{"class":565},[546,6753,2113],{"class":561},[546,6755,3975],{"class":565},[546,6757,6758],{"class":1076}," 401",[546,6760,6761],{"class":565}," ||\n",[546,6763,6764,6766,6768,6770,6772,6775],{"class":548,"line":3325},[546,6765,6749],{"class":561},[546,6767,741],{"class":565},[546,6769,2113],{"class":561},[546,6771,3975],{"class":565},[546,6773,6774],{"class":1076}," 403",[546,6776,6761],{"class":565},[546,6778,6779,6781,6783,6785,6787,6790],{"class":548,"line":3339},[546,6780,6749],{"class":561},[546,6782,741],{"class":565},[546,6784,2113],{"class":561},[546,6786,3975],{"class":565},[546,6788,6789],{"class":1076}," 422",[546,6791,612],{"class":565},[546,6793,6794],{"class":548,"line":3362},[546,6795,1252],{"class":565},[546,6797,6798],{"class":548,"line":3385},[546,6799,1257],{"class":561},[546,6801,6802,6805,6807,6809,6811],{"class":548,"line":3399},[546,6803,6804],{"class":584},"  calculateDelay",[546,6806,576],{"class":565},[546,6808,4813],{"class":644},[546,6810,609],{"class":565},[546,6812,650],{"class":565},[546,6814,6815],{"class":548,"line":3409},[546,6816,6817],{"class":551},"    // Exponential backoff with jitter\n",[546,6819,6820,6822,6825,6827,6829,6831,6833],{"class":548,"line":3428},[546,6821,1352],{"class":557},[546,6823,6824],{"class":561}," exponentialDelay",[546,6826,661],{"class":565},[546,6828,4858],{"class":561},[546,6830,741],{"class":565},[546,6832,1692],{"class":572},[546,6834,4545],{"class":584},[546,6836,6837,6839,6841,6844,6846,6848,6850,6852,6854,6856,6858,6861,6863,6865],{"class":548,"line":3433},[546,6838,1425],{"class":565},[546,6840,6275],{"class":561},[546,6842,6843],{"class":565}," *",[546,6845,4858],{"class":561},[546,6847,741],{"class":565},[546,6849,4863],{"class":572},[546,6851,576],{"class":584},[546,6853,4868],{"class":1076},[546,6855,680],{"class":565},[546,6857,4742],{"class":561},[546,6859,6860],{"class":565}," -",[546,6862,1345],{"class":1076},[546,6864,609],{"class":584},[546,6866,699],{"class":565},[546,6868,6869,6871],{"class":548,"line":3438},[546,6870,1425],{"class":565},[546,6872,6873],{"class":561},"maxDelay\n",[546,6875,6876,6879],{"class":548,"line":3443},[546,6877,6878],{"class":584},"    )",[546,6880,612],{"class":565},[546,6882,6883],{"class":548,"line":3448},[546,6884,1371],{"class":584},[546,6886,6887],{"class":548,"line":3453},[546,6888,6889],{"class":551},"    // Add jitter to prevent thundering herd\n",[546,6891,6892,6894,6897,6899,6901,6903,6905,6907,6909,6911,6913,6916,6918],{"class":548,"line":3485},[546,6893,1352],{"class":557},[546,6895,6896],{"class":561}," jitter",[546,6898,661],{"class":565},[546,6900,6824],{"class":561},[546,6902,6843],{"class":565},[546,6904,1241],{"class":565},[546,6906,6317],{"class":561},[546,6908,6843],{"class":565},[546,6910,4858],{"class":561},[546,6912,741],{"class":565},[546,6914,6915],{"class":572},"random",[546,6917,782],{"class":584},[546,6919,612],{"class":565},[546,6921,6922],{"class":548,"line":3490},[546,6923,1371],{"class":584},[546,6925,6926,6928,6930,6932,6935,6937,6940,6942,6944,6946],{"class":548,"line":3507},[546,6927,1271],{"class":664},[546,6929,4858],{"class":561},[546,6931,741],{"class":565},[546,6933,6934],{"class":572},"floor",[546,6936,576],{"class":584},[546,6938,6939],{"class":561},"exponentialDelay",[546,6941,4512],{"class":565},[546,6943,6896],{"class":561},[546,6945,609],{"class":584},[546,6947,612],{"class":565},[546,6949,6950],{"class":548,"line":3529},[546,6951,1252],{"class":565},[546,6953,6954],{"class":548,"line":3536},[546,6955,1257],{"class":561},[546,6957,6958,6961,6963,6965,6967],{"class":548,"line":3578},[546,6959,6960],{"class":584},"  sleep",[546,6962,576],{"class":565},[546,6964,4924],{"class":644},[546,6966,609],{"class":565},[546,6968,650],{"class":565},[546,6970,6971,6973,6975,6977,6979,6981,6983,6985,6987,6989,6991,6993,6995],{"class":548,"line":3588},[546,6972,1271],{"class":664},[546,6974,569],{"class":565},[546,6976,3271],{"class":1151},[546,6978,576],{"class":584},[546,6980,3278],{"class":644},[546,6982,1040],{"class":557},[546,6984,4945],{"class":572},[546,6986,576],{"class":584},[546,6988,3278],{"class":561},[546,6990,680],{"class":565},[546,6992,4954],{"class":561},[546,6994,4957],{"class":584},[546,6996,612],{"class":565},[546,6998,6999],{"class":548,"line":3607},[546,7000,1252],{"class":565},[546,7002,7003],{"class":548,"line":3612},[546,7004,789],{"class":565},[546,7006,7008],{"class":548,"line":7007},67,[546,7009,618],{"emptyLinePlaceholder":617},[546,7011,7013],{"class":548,"line":7012},68,[546,7014,1970],{"class":551},[546,7016,7018,7020,7023,7025,7027,7029,7031],{"class":548,"line":7017},69,[546,7019,558],{"class":557},[546,7021,7022],{"class":561}," retryHandler ",[546,7024,566],{"class":565},[546,7026,569],{"class":565},[546,7028,6231],{"class":572},[546,7030,576],{"class":561},[546,7032,579],{"class":565},[546,7034,7036,7039,7041,7043],{"class":548,"line":7035},70,[546,7037,7038],{"class":584},"  maxRetries",[546,7040,588],{"class":565},[546,7042,4370],{"class":1076},[546,7044,699],{"class":565},[546,7046,7048,7051,7053,7055],{"class":548,"line":7047},71,[546,7049,7050],{"class":584},"  baseDelay",[546,7052,588],{"class":565},[546,7054,4880],{"class":1076},[546,7056,699],{"class":565},[546,7058,7060,7063,7065],{"class":548,"line":7059},72,[546,7061,7062],{"class":584},"  maxDelay",[546,7064,588],{"class":565},[546,7066,7067],{"class":1076}," 10000\n",[546,7069,7071,7073,7075],{"class":548,"line":7070},73,[546,7072,606],{"class":565},[546,7074,609],{"class":561},[546,7076,612],{"class":565},[546,7078,7080],{"class":548,"line":7079},74,[546,7081,618],{"emptyLinePlaceholder":617},[546,7083,7085,7087,7089,7092,7094,7097,7099],{"class":548,"line":7084},75,[546,7086,633],{"class":557},[546,7088,636],{"class":557},[546,7090,7091],{"class":572}," createSessionWithRetry",[546,7093,576],{"class":565},[546,7095,7096],{"class":644},"sessionData",[546,7098,609],{"class":565},[546,7100,650],{"class":565},[546,7102,7104,7106,7108,7111,7113,7116,7118,7120,7123,7125],{"class":548,"line":7103},76,[546,7105,772],{"class":664},[546,7107,665],{"class":664},[546,7109,7110],{"class":561}," retryHandler",[546,7112,741],{"class":565},[546,7114,7115],{"class":572},"executeWithRetry",[546,7117,576],{"class":584},[546,7119,633],{"class":557},[546,7121,7122],{"class":565}," ()",[546,7124,1040],{"class":557},[546,7126,650],{"class":565},[546,7128,7130,7132,7134,7136,7138,7140,7142,7144,7146,7148,7150],{"class":548,"line":7129},77,[546,7131,1271],{"class":664},[546,7133,665],{"class":664},[546,7135,2054],{"class":561},[546,7137,741],{"class":565},[546,7139,1391],{"class":561},[546,7141,741],{"class":565},[546,7143,2063],{"class":572},[546,7145,576],{"class":584},[546,7147,7096],{"class":561},[546,7149,609],{"class":584},[546,7151,612],{"class":565},[546,7153,7155,7157,7159],{"class":548,"line":7154},78,[546,7156,763],{"class":565},[546,7158,609],{"class":584},[546,7160,612],{"class":565},[546,7162,7164],{"class":548,"line":7163},79,[546,7165,789],{"class":565},[512,7167,7169],{"id":7168},"monitoring-and-observability","Monitoring and Observability",[525,7171,7173],{"id":7172},"structured-logging","Structured Logging",[517,7175,7176],{},[532,7177,7178],{},"Implement comprehensive logging",[536,7180,7182],{"className":538,"code":7181,"language":540,"meta":541,"style":541},"const winston = require('winston');\n\nconst logger = winston.createLogger({\n  level: process.env.LOG_LEVEL || 'info',\n  format: winston.format.combine(\n    winston.format.timestamp(),\n    winston.format.errors({ stack: true }),\n    winston.format.json()\n  ),\n  defaultMeta: {\n    service: 'mindpeeker-integration',\n    version: process.env.APP_VERSION || '1.0.0'\n  },\n  transports: [\n    new winston.transports.File({ filename: 'error.log', level: 'error' }),\n    new winston.transports.File({ filename: 'combined.log' }),\n    new winston.transports.Console({\n      format: winston.format.simple()\n    })\n  ]\n});\n\n// Logging middleware\nfunction requestLogger(req, res, next) {\n  const requestId = req.id || generateRequestId();\n  req.requestId = requestId;\n  \n  logger.info('Request started', {\n    requestId,\n    method: req.method,\n    url: req.url,\n    userAgent: req.get('User-Agent'),\n    ip: req.ip,\n    userId: req.user?.id\n  });\n  \n  const start = Date.now();\n  \n  res.on('finish', () => {\n    const duration = Date.now() - start;\n    \n    logger.info('Request completed', {\n      requestId,\n      statusCode: res.statusCode,\n      duration,\n      userId: req.user?.id\n    });\n  });\n  \n  next();\n}\n",[543,7183,7184,7208,7212,7233,7262,7283,7300,7331,7345,7352,7361,7377,7404,7409,7418,7470,7505,7524,7544,7550,7555,7563,7567,7572,7595,7619,7635,7639,7661,7667,7682,7698,7724,7740,7757,7765,7769,7789,7793,7819,7844,7848,7870,7877,7893,7900,7917,7925,7933,7937,7946],{"__ignoreMap":541},[546,7185,7186,7188,7191,7193,7195,7197,7199,7202,7204,7206],{"class":548,"line":82},[546,7187,558],{"class":557},[546,7189,7190],{"class":561}," winston ",[546,7192,566],{"class":565},[546,7194,1575],{"class":572},[546,7196,576],{"class":561},[546,7198,598],{"class":565},[546,7200,7201],{"class":594},"winston",[546,7203,598],{"class":565},[546,7205,609],{"class":561},[546,7207,612],{"class":565},[546,7209,7210],{"class":548,"line":114},[546,7211,618],{"emptyLinePlaceholder":617},[546,7213,7214,7216,7219,7221,7224,7226,7229,7231],{"class":548,"line":146},[546,7215,558],{"class":557},[546,7217,7218],{"class":561}," logger ",[546,7220,566],{"class":565},[546,7222,7223],{"class":561}," winston",[546,7225,741],{"class":565},[546,7227,7228],{"class":572},"createLogger",[546,7230,576],{"class":561},[546,7232,579],{"class":565},[546,7234,7235,7238,7240,7242,7244,7246,7248,7251,7253,7255,7258,7260],{"class":548,"line":178},[546,7236,7237],{"class":584},"  level",[546,7239,588],{"class":565},[546,7241,827],{"class":561},[546,7243,741],{"class":565},[546,7245,832],{"class":561},[546,7247,741],{"class":565},[546,7249,7250],{"class":561},"LOG_LEVEL ",[546,7252,970],{"class":565},[546,7254,591],{"class":565},[546,7256,7257],{"class":594},"info",[546,7259,598],{"class":565},[546,7261,699],{"class":565},[546,7263,7264,7267,7269,7271,7273,7276,7278,7281],{"class":548,"line":268},[546,7265,7266],{"class":584},"  format",[546,7268,588],{"class":565},[546,7270,7223],{"class":561},[546,7272,741],{"class":565},[546,7274,7275],{"class":561},"format",[546,7277,741],{"class":565},[546,7279,7280],{"class":572},"combine",[546,7282,4545],{"class":561},[546,7284,7285,7288,7290,7292,7294,7296,7298],{"class":548,"line":273},[546,7286,7287],{"class":561},"    winston",[546,7289,741],{"class":565},[546,7291,7275],{"class":561},[546,7293,741],{"class":565},[546,7295,5291],{"class":572},[546,7297,782],{"class":561},[546,7299,699],{"class":565},[546,7301,7302,7304,7306,7308,7310,7313,7315,7317,7320,7322,7325,7327,7329],{"class":548,"line":279},[546,7303,7287],{"class":561},[546,7305,741],{"class":565},[546,7307,7275],{"class":561},[546,7309,741],{"class":565},[546,7311,7312],{"class":572},"errors",[546,7314,576],{"class":561},[546,7316,749],{"class":565},[546,7318,7319],{"class":584}," stack",[546,7321,588],{"class":565},[546,7323,7324],{"class":3751}," true",[546,7326,755],{"class":565},[546,7328,609],{"class":561},[546,7330,699],{"class":565},[546,7332,7333,7335,7337,7339,7341,7343],{"class":548,"line":285},[546,7334,7287],{"class":561},[546,7336,741],{"class":565},[546,7338,7275],{"class":561},[546,7340,741],{"class":565},[546,7342,779],{"class":572},[546,7344,1828],{"class":561},[546,7346,7347,7350],{"class":548,"line":291},[546,7348,7349],{"class":561},"  )",[546,7351,699],{"class":565},[546,7353,7354,7357,7359],{"class":548,"line":222},[546,7355,7356],{"class":584},"  defaultMeta",[546,7358,588],{"class":565},[546,7360,650],{"class":565},[546,7362,7363,7366,7368,7370,7373,7375],{"class":548,"line":227},[546,7364,7365],{"class":584},"    service",[546,7367,588],{"class":565},[546,7369,591],{"class":565},[546,7371,7372],{"class":594},"mindpeeker-integration",[546,7374,598],{"class":565},[546,7376,699],{"class":565},[546,7378,7379,7382,7384,7386,7388,7390,7392,7395,7397,7399,7402],{"class":548,"line":232},[546,7380,7381],{"class":584},"    version",[546,7383,588],{"class":565},[546,7385,827],{"class":561},[546,7387,741],{"class":565},[546,7389,832],{"class":561},[546,7391,741],{"class":565},[546,7393,7394],{"class":561},"APP_VERSION ",[546,7396,970],{"class":565},[546,7398,591],{"class":565},[546,7400,7401],{"class":594},"1.0.0",[546,7403,978],{"class":565},[546,7405,7406],{"class":548,"line":238},[546,7407,7408],{"class":565},"  },\n",[546,7410,7411,7414,7416],{"class":548,"line":243},[546,7412,7413],{"class":584},"  transports",[546,7415,588],{"class":565},[546,7417,6679],{"class":561},[546,7419,7420,7423,7425,7427,7430,7432,7435,7437,7439,7442,7444,7446,7449,7451,7453,7456,7458,7460,7462,7464,7466,7468],{"class":548,"line":248},[546,7421,7422],{"class":565},"    new",[546,7424,7223],{"class":561},[546,7426,741],{"class":565},[546,7428,7429],{"class":561},"transports",[546,7431,741],{"class":565},[546,7433,7434],{"class":572},"File",[546,7436,576],{"class":561},[546,7438,749],{"class":565},[546,7440,7441],{"class":584}," filename",[546,7443,588],{"class":565},[546,7445,591],{"class":565},[546,7447,7448],{"class":594},"error.log",[546,7450,598],{"class":565},[546,7452,680],{"class":565},[546,7454,7455],{"class":584}," level",[546,7457,588],{"class":565},[546,7459,591],{"class":565},[546,7461,1487],{"class":594},[546,7463,598],{"class":565},[546,7465,755],{"class":565},[546,7467,609],{"class":561},[546,7469,699],{"class":565},[546,7471,7472,7474,7476,7478,7480,7482,7484,7486,7488,7490,7492,7494,7497,7499,7501,7503],{"class":548,"line":792},[546,7473,7422],{"class":565},[546,7475,7223],{"class":561},[546,7477,741],{"class":565},[546,7479,7429],{"class":561},[546,7481,741],{"class":565},[546,7483,7434],{"class":572},[546,7485,576],{"class":561},[546,7487,749],{"class":565},[546,7489,7441],{"class":584},[546,7491,588],{"class":565},[546,7493,591],{"class":565},[546,7495,7496],{"class":594},"combined.log",[546,7498,598],{"class":565},[546,7500,755],{"class":565},[546,7502,609],{"class":561},[546,7504,699],{"class":565},[546,7506,7507,7509,7511,7513,7515,7517,7520,7522],{"class":548,"line":797},[546,7508,7422],{"class":565},[546,7510,7223],{"class":561},[546,7512,741],{"class":565},[546,7514,7429],{"class":561},[546,7516,741],{"class":565},[546,7518,7519],{"class":572},"Console",[546,7521,576],{"class":561},[546,7523,579],{"class":565},[546,7525,7526,7529,7531,7533,7535,7537,7539,7542],{"class":548,"line":803},[546,7527,7528],{"class":584},"      format",[546,7530,588],{"class":565},[546,7532,7223],{"class":561},[546,7534,741],{"class":565},[546,7536,7275],{"class":561},[546,7538,741],{"class":565},[546,7540,7541],{"class":572},"simple",[546,7543,1828],{"class":561},[546,7545,7546,7548],{"class":548,"line":820},[546,7547,1305],{"class":565},[546,7549,758],{"class":561},[546,7551,7552],{"class":548,"line":843},[546,7553,7554],{"class":561},"  ]\n",[546,7556,7557,7559,7561],{"class":548,"line":1381},[546,7558,606],{"class":565},[546,7560,609],{"class":561},[546,7562,612],{"class":565},[546,7564,7565],{"class":548,"line":1416},[546,7566,618],{"emptyLinePlaceholder":617},[546,7568,7569],{"class":548,"line":1422},[546,7570,7571],{"class":551},"// Logging middleware\n",[546,7573,7574,7576,7579,7581,7583,7585,7587,7589,7591,7593],{"class":548,"line":1439},[546,7575,1845],{"class":557},[546,7577,7578],{"class":572}," requestLogger",[546,7580,576],{"class":565},[546,7582,1998],{"class":644},[546,7584,680],{"class":565},[546,7586,2003],{"class":644},[546,7588,680],{"class":565},[546,7590,5631],{"class":644},[546,7592,609],{"class":565},[546,7594,650],{"class":565},[546,7596,7597,7599,7602,7604,7606,7608,7610,7612,7615,7617],{"class":548,"line":1452},[546,7598,655],{"class":557},[546,7600,7601],{"class":561}," requestId",[546,7603,661],{"class":565},[546,7605,5622],{"class":561},[546,7607,741],{"class":565},[546,7609,5743],{"class":561},[546,7611,2826],{"class":565},[546,7613,7614],{"class":572}," generateRequestId",[546,7616,782],{"class":584},[546,7618,612],{"class":565},[546,7620,7621,7624,7626,7629,7631,7633],{"class":548,"line":1476},[546,7622,7623],{"class":561},"  req",[546,7625,741],{"class":565},[546,7627,7628],{"class":561},"requestId",[546,7630,661],{"class":565},[546,7632,7601],{"class":561},[546,7634,612],{"class":565},[546,7636,7637],{"class":548,"line":1494},[546,7638,1257],{"class":584},[546,7640,7641,7644,7646,7648,7650,7652,7655,7657,7659],{"class":548,"line":1500},[546,7642,7643],{"class":561},"  logger",[546,7645,741],{"class":565},[546,7647,7257],{"class":572},[546,7649,576],{"class":584},[546,7651,598],{"class":565},[546,7653,7654],{"class":594},"Request started",[546,7656,598],{"class":565},[546,7658,680],{"class":565},[546,7660,650],{"class":565},[546,7662,7663,7665],{"class":548,"line":1513},[546,7664,5734],{"class":561},[546,7666,699],{"class":565},[546,7668,7669,7671,7673,7675,7677,7680],{"class":548,"line":1536},[546,7670,687],{"class":584},[546,7672,588],{"class":565},[546,7674,5622],{"class":561},[546,7676,741],{"class":565},[546,7678,7679],{"class":561},"method",[546,7681,699],{"class":565},[546,7683,7684,7687,7689,7691,7693,7696],{"class":548,"line":1542},[546,7685,7686],{"class":584},"    url",[546,7688,588],{"class":565},[546,7690,5622],{"class":561},[546,7692,741],{"class":565},[546,7694,7695],{"class":561},"url",[546,7697,699],{"class":565},[546,7699,7700,7703,7705,7707,7709,7711,7713,7715,7718,7720,7722],{"class":548,"line":1547},[546,7701,7702],{"class":584},"    userAgent",[546,7704,588],{"class":565},[546,7706,5622],{"class":561},[546,7708,741],{"class":565},[546,7710,3875],{"class":572},[546,7712,576],{"class":584},[546,7714,598],{"class":565},[546,7716,7717],{"class":594},"User-Agent",[546,7719,598],{"class":565},[546,7721,609],{"class":584},[546,7723,699],{"class":565},[546,7725,7726,7729,7731,7733,7735,7738],{"class":548,"line":2576},[546,7727,7728],{"class":584},"    ip",[546,7730,588],{"class":565},[546,7732,5622],{"class":561},[546,7734,741],{"class":565},[546,7736,7737],{"class":561},"ip",[546,7739,699],{"class":565},[546,7741,7742,7744,7746,7748,7750,7752,7754],{"class":548,"line":2582},[546,7743,5750],{"class":584},[546,7745,588],{"class":565},[546,7747,5622],{"class":561},[546,7749,741],{"class":565},[546,7751,2296],{"class":561},[546,7753,5761],{"class":565},[546,7755,7756],{"class":561},"id\n",[546,7758,7759,7761,7763],{"class":548,"line":2587},[546,7760,763],{"class":565},[546,7762,609],{"class":584},[546,7764,612],{"class":565},[546,7766,7767],{"class":548,"line":3220},[546,7768,1257],{"class":584},[546,7770,7771,7773,7776,7778,7780,7782,7785,7787],{"class":548,"line":3239},[546,7772,655],{"class":557},[546,7774,7775],{"class":561}," start",[546,7777,661],{"class":565},[546,7779,5298],{"class":561},[546,7781,741],{"class":565},[546,7783,7784],{"class":572},"now",[546,7786,782],{"class":584},[546,7788,612],{"class":565},[546,7790,7791],{"class":548,"line":3248},[546,7792,1257],{"class":584},[546,7794,7795,7797,7799,7802,7804,7806,7809,7811,7813,7815,7817],{"class":548,"line":3253},[546,7796,6136],{"class":561},[546,7798,741],{"class":565},[546,7800,7801],{"class":572},"on",[546,7803,576],{"class":584},[546,7805,598],{"class":565},[546,7807,7808],{"class":594},"finish",[546,7810,598],{"class":565},[546,7812,680],{"class":565},[546,7814,7122],{"class":565},[546,7816,1040],{"class":557},[546,7818,650],{"class":565},[546,7820,7821,7823,7826,7828,7830,7832,7834,7837,7840,7842],{"class":548,"line":3258},[546,7822,1352],{"class":557},[546,7824,7825],{"class":561}," duration",[546,7827,661],{"class":565},[546,7829,5298],{"class":561},[546,7831,741],{"class":565},[546,7833,7784],{"class":572},[546,7835,7836],{"class":584},"() ",[546,7838,7839],{"class":565},"-",[546,7841,7775],{"class":561},[546,7843,612],{"class":565},[546,7845,7846],{"class":548,"line":3264},[546,7847,1371],{"class":584},[546,7849,7850,7853,7855,7857,7859,7861,7864,7866,7868],{"class":548,"line":3287},[546,7851,7852],{"class":561},"    logger",[546,7854,741],{"class":565},[546,7856,7257],{"class":572},[546,7858,576],{"class":584},[546,7860,598],{"class":565},[546,7862,7863],{"class":594},"Request completed",[546,7865,598],{"class":565},[546,7867,680],{"class":565},[546,7869,650],{"class":565},[546,7871,7872,7875],{"class":548,"line":3306},[546,7873,7874],{"class":561},"      requestId",[546,7876,699],{"class":565},[546,7878,7879,7882,7884,7886,7888,7891],{"class":548,"line":3315},[546,7880,7881],{"class":584},"      statusCode",[546,7883,588],{"class":565},[546,7885,2003],{"class":561},[546,7887,741],{"class":565},[546,7889,7890],{"class":561},"statusCode",[546,7892,699],{"class":565},[546,7894,7895,7898],{"class":548,"line":3320},[546,7896,7897],{"class":561},"      duration",[546,7899,699],{"class":565},[546,7901,7902,7905,7907,7909,7911,7913,7915],{"class":548,"line":3325},[546,7903,7904],{"class":584},"      userId",[546,7906,588],{"class":565},[546,7908,5622],{"class":561},[546,7910,741],{"class":565},[546,7912,2296],{"class":561},[546,7914,5761],{"class":565},[546,7916,7756],{"class":561},[546,7918,7919,7921,7923],{"class":548,"line":3339},[546,7920,1305],{"class":565},[546,7922,609],{"class":584},[546,7924,612],{"class":565},[546,7926,7927,7929,7931],{"class":548,"line":3362},[546,7928,763],{"class":565},[546,7930,609],{"class":584},[546,7932,612],{"class":565},[546,7934,7935],{"class":548,"line":3385},[546,7936,1257],{"class":584},[546,7938,7939,7942,7944],{"class":548,"line":3399},[546,7940,7941],{"class":572},"  next",[546,7943,782],{"class":584},[546,7945,612],{"class":565},[546,7947,7948],{"class":548,"line":3409},[546,7949,789],{"class":565},[525,7951,7953],{"id":7952},"metrics-collection","Metrics Collection",[517,7955,7956],{},[532,7957,7958],{},"Track key performance indicators",[536,7960,7962],{"className":538,"code":7961,"language":540,"meta":541,"style":541},"class MetricsCollector {\n  constructor() {\n    this.metrics = {\n      requests: {\n        total: 0,\n        successful: 0,\n        failed: 0,\n        responseTime: []\n      },\n      sessions: {\n        created: 0,\n        completed: 0,\n        failed: 0,\n        averageCompletionTime: 0\n      },\n      errors: {\n        rateLimit: 0,\n        authentication: 0,\n        validation: 0,\n        server: 0\n      }\n    };\n  }\n  \n  recordRequest(duration, success, statusCode) {\n    this.metrics.requests.total++;\n    this.metrics.requests.responseTime.push(duration);\n    \n    if (success) {\n      this.metrics.requests.successful++;\n    } else {\n      this.metrics.requests.failed++;\n      this.categorizeError(statusCode);\n    }\n  }\n  \n  categorizeError(statusCode) {\n    if (statusCode === 429) {\n      this.metrics.errors.rateLimit++;\n    } else if (statusCode === 401 || statusCode === 403) {\n      this.metrics.errors.authentication++;\n    } else if (statusCode >= 400 && statusCode \u003C 500) {\n      this.metrics.errors.validation++;\n    } else if (statusCode >= 500) {\n      this.metrics.errors.server++;\n    }\n  }\n  \n  recordSession(action, duration = null) {\n    switch (action) {\n      case 'created':\n        this.metrics.sessions.created++;\n        break;\n      case 'completed':\n        this.metrics.sessions.completed++;\n        if (duration) {\n          this.updateAverageCompletionTime(duration);\n        }\n        break;\n      case 'failed':\n        this.metrics.sessions.failed++;\n        break;\n    }\n  }\n  \n  updateAverageCompletionTime(duration) {\n    const total = this.metrics.sessions.completed;\n    const current = this.metrics.sessions.averageCompletionTime;\n    this.metrics.sessions.averageCompletionTime = ((current * (total - 1)) + duration) / total;\n  }\n  \n  getMetrics() {\n    return {\n      ...this.metrics,\n      successRate: this.calculateSuccessRate(),\n      averageResponseTime: this.calculateAverageResponseTime(),\n      p95ResponseTime: this.calculateP95ResponseTime()\n    };\n  }\n  \n  calculateSuccessRate() {\n    const total = this.metrics.requests.total;\n    return total > 0 ? (this.metrics.requests.successful / total) * 100 : 0;\n  }\n  \n  calculateAverageResponseTime() {\n    const times = this.metrics.requests.responseTime;\n    return times.length > 0 ? times.reduce((a, b) => a + b, 0) / times.length : 0;\n  }\n  \n  calculateP95ResponseTime() {\n    const times = [...this.metrics.requests.responseTime].sort((a, b) => a - b);\n    const index = Math.floor(times.length * 0.95);\n    return times[index] || 0;\n  }\n}\n",[543,7963,7964,7973,7981,7992,8001,8012,8023,8034,8044,8049,8058,8069,8080,8090,8100,8104,8113,8124,8135,8146,8155,8159,8163,8167,8171,8195,8214,8241,8245,8258,8275,8283,8299,8314,8318,8322,8326,8339,8356,8373,8401,8418,8449,8466,8486,8503,8507,8511,8515,8536,8549,8564,8581,8588,8600,8616,8628,8643,8647,8653,8665,8681,8687,8691,8695,8699,8712,8735,8759,8807,8811,8815,8824,8830,8839,8855,8871,8885,8889,8893,8898,8908,8931,8977,8982,8987,8997,9021,9088,9093,9098,9108,9163,9197,9218,9223],{"__ignoreMap":541},[546,7965,7966,7968,7971],{"class":548,"line":82},[546,7967,1148],{"class":557},[546,7969,7970],{"class":1151}," MetricsCollector",[546,7972,650],{"class":565},[546,7974,7975,7977,7979],{"class":548,"line":114},[546,7976,1159],{"class":557},[546,7978,782],{"class":565},[546,7980,650],{"class":565},[546,7982,7983,7985,7988,7990],{"class":548,"line":146},[546,7984,1168],{"class":565},[546,7986,7987],{"class":561},"metrics",[546,7989,661],{"class":565},[546,7991,650],{"class":565},[546,7993,7994,7997,7999],{"class":548,"line":178},[546,7995,7996],{"class":584},"      requests",[546,7998,588],{"class":565},[546,8000,650],{"class":565},[546,8002,8003,8006,8008,8010],{"class":548,"line":268},[546,8004,8005],{"class":584},"        total",[546,8007,588],{"class":565},[546,8009,1077],{"class":1076},[546,8011,699],{"class":565},[546,8013,8014,8017,8019,8021],{"class":548,"line":273},[546,8015,8016],{"class":584},"        successful",[546,8018,588],{"class":565},[546,8020,1077],{"class":1076},[546,8022,699],{"class":565},[546,8024,8025,8028,8030,8032],{"class":548,"line":279},[546,8026,8027],{"class":584},"        failed",[546,8029,588],{"class":565},[546,8031,1077],{"class":1076},[546,8033,699],{"class":565},[546,8035,8036,8039,8041],{"class":548,"line":285},[546,8037,8038],{"class":584},"        responseTime",[546,8040,588],{"class":565},[546,8042,8043],{"class":584}," []\n",[546,8045,8046],{"class":548,"line":291},[546,8047,8048],{"class":565},"      },\n",[546,8050,8051,8054,8056],{"class":548,"line":222},[546,8052,8053],{"class":584},"      sessions",[546,8055,588],{"class":565},[546,8057,650],{"class":565},[546,8059,8060,8063,8065,8067],{"class":548,"line":227},[546,8061,8062],{"class":584},"        created",[546,8064,588],{"class":565},[546,8066,1077],{"class":1076},[546,8068,699],{"class":565},[546,8070,8071,8074,8076,8078],{"class":548,"line":232},[546,8072,8073],{"class":584},"        completed",[546,8075,588],{"class":565},[546,8077,1077],{"class":1076},[546,8079,699],{"class":565},[546,8081,8082,8084,8086,8088],{"class":548,"line":238},[546,8083,8027],{"class":584},[546,8085,588],{"class":565},[546,8087,1077],{"class":1076},[546,8089,699],{"class":565},[546,8091,8092,8095,8097],{"class":548,"line":243},[546,8093,8094],{"class":584},"        averageCompletionTime",[546,8096,588],{"class":565},[546,8098,8099],{"class":1076}," 0\n",[546,8101,8102],{"class":548,"line":248},[546,8103,8048],{"class":565},[546,8105,8106,8109,8111],{"class":548,"line":792},[546,8107,8108],{"class":584},"      errors",[546,8110,588],{"class":565},[546,8112,650],{"class":565},[546,8114,8115,8118,8120,8122],{"class":548,"line":797},[546,8116,8117],{"class":584},"        rateLimit",[546,8119,588],{"class":565},[546,8121,1077],{"class":1076},[546,8123,699],{"class":565},[546,8125,8126,8129,8131,8133],{"class":548,"line":803},[546,8127,8128],{"class":584},"        authentication",[546,8130,588],{"class":565},[546,8132,1077],{"class":1076},[546,8134,699],{"class":565},[546,8136,8137,8140,8142,8144],{"class":548,"line":820},[546,8138,8139],{"class":584},"        validation",[546,8141,588],{"class":565},[546,8143,1077],{"class":1076},[546,8145,699],{"class":565},[546,8147,8148,8151,8153],{"class":548,"line":843},[546,8149,8150],{"class":584},"        server",[546,8152,588],{"class":565},[546,8154,8099],{"class":1076},[546,8156,8157],{"class":548,"line":1381},[546,8158,4679],{"class":565},[546,8160,8161],{"class":548,"line":1416},[546,8162,2384],{"class":565},[546,8164,8165],{"class":548,"line":1422},[546,8166,1252],{"class":565},[546,8168,8169],{"class":548,"line":1439},[546,8170,1257],{"class":561},[546,8172,8173,8176,8178,8181,8183,8186,8188,8191,8193],{"class":548,"line":1452},[546,8174,8175],{"class":584},"  recordRequest",[546,8177,576],{"class":565},[546,8179,8180],{"class":644},"duration",[546,8182,680],{"class":565},[546,8184,8185],{"class":644}," success",[546,8187,680],{"class":565},[546,8189,8190],{"class":644}," statusCode",[546,8192,609],{"class":565},[546,8194,650],{"class":565},[546,8196,8197,8199,8201,8203,8206,8208,8211],{"class":548,"line":1476},[546,8198,1168],{"class":565},[546,8200,7987],{"class":561},[546,8202,741],{"class":565},[546,8204,8205],{"class":561},"requests",[546,8207,741],{"class":565},[546,8209,8210],{"class":561},"total",[546,8212,8213],{"class":565},"++;\n",[546,8215,8216,8218,8220,8222,8224,8226,8229,8231,8233,8235,8237,8239],{"class":548,"line":1494},[546,8217,1168],{"class":565},[546,8219,7987],{"class":561},[546,8221,741],{"class":565},[546,8223,8205],{"class":561},[546,8225,741],{"class":565},[546,8227,8228],{"class":561},"responseTime",[546,8230,741],{"class":565},[546,8232,3051],{"class":572},[546,8234,576],{"class":584},[546,8236,8180],{"class":561},[546,8238,609],{"class":584},[546,8240,612],{"class":565},[546,8242,8243],{"class":548,"line":1500},[546,8244,1371],{"class":584},[546,8246,8247,8249,8251,8254,8256],{"class":548,"line":1513},[546,8248,3106],{"class":664},[546,8250,1484],{"class":584},[546,8252,8253],{"class":561},"success",[546,8255,1080],{"class":584},[546,8257,579],{"class":565},[546,8259,8260,8262,8264,8266,8268,8270,8273],{"class":548,"line":1536},[546,8261,1425],{"class":565},[546,8263,7987],{"class":561},[546,8265,741],{"class":565},[546,8267,8205],{"class":561},[546,8269,741],{"class":565},[546,8271,8272],{"class":561},"successful",[546,8274,8213],{"class":565},[546,8276,8277,8279,8281],{"class":548,"line":1542},[546,8278,1305],{"class":565},[546,8280,3404],{"class":664},[546,8282,650],{"class":565},[546,8284,8285,8287,8289,8291,8293,8295,8297],{"class":548,"line":1547},[546,8286,1425],{"class":565},[546,8288,7987],{"class":561},[546,8290,741],{"class":565},[546,8292,8205],{"class":561},[546,8294,741],{"class":565},[546,8296,4050],{"class":561},[546,8298,8213],{"class":565},[546,8300,8301,8303,8306,8308,8310,8312],{"class":548,"line":2576},[546,8302,1425],{"class":565},[546,8304,8305],{"class":572},"categorizeError",[546,8307,576],{"class":584},[546,8309,7890],{"class":561},[546,8311,609],{"class":584},[546,8313,612],{"class":565},[546,8315,8316],{"class":548,"line":2582},[546,8317,1539],{"class":565},[546,8319,8320],{"class":548,"line":2587},[546,8321,1252],{"class":565},[546,8323,8324],{"class":548,"line":3220},[546,8325,1257],{"class":561},[546,8327,8328,8331,8333,8335,8337],{"class":548,"line":3239},[546,8329,8330],{"class":584},"  categorizeError",[546,8332,576],{"class":565},[546,8334,7890],{"class":644},[546,8336,609],{"class":565},[546,8338,650],{"class":565},[546,8340,8341,8343,8345,8347,8349,8352,8354],{"class":548,"line":3248},[546,8342,3106],{"class":664},[546,8344,1484],{"class":584},[546,8346,7890],{"class":561},[546,8348,3975],{"class":565},[546,8350,8351],{"class":1076}," 429",[546,8353,1080],{"class":584},[546,8355,579],{"class":565},[546,8357,8358,8360,8362,8364,8366,8368,8371],{"class":548,"line":3253},[546,8359,1425],{"class":565},[546,8361,7987],{"class":561},[546,8363,741],{"class":565},[546,8365,7312],{"class":561},[546,8367,741],{"class":565},[546,8369,8370],{"class":561},"rateLimit",[546,8372,8213],{"class":565},[546,8374,8375,8377,8379,8381,8383,8385,8387,8389,8391,8393,8395,8397,8399],{"class":548,"line":3258},[546,8376,1305],{"class":565},[546,8378,3404],{"class":664},[546,8380,4035],{"class":664},[546,8382,1484],{"class":584},[546,8384,7890],{"class":561},[546,8386,3975],{"class":565},[546,8388,6758],{"class":1076},[546,8390,2826],{"class":565},[546,8392,8190],{"class":561},[546,8394,3975],{"class":565},[546,8396,6774],{"class":1076},[546,8398,1080],{"class":584},[546,8400,579],{"class":565},[546,8402,8403,8405,8407,8409,8411,8413,8416],{"class":548,"line":3264},[546,8404,1425],{"class":565},[546,8406,7987],{"class":561},[546,8408,741],{"class":565},[546,8410,7312],{"class":561},[546,8412,741],{"class":565},[546,8414,8415],{"class":561},"authentication",[546,8417,8213],{"class":565},[546,8419,8420,8422,8424,8426,8428,8430,8433,8436,8438,8440,8442,8445,8447],{"class":548,"line":3287},[546,8421,1305],{"class":565},[546,8423,3404],{"class":664},[546,8425,4035],{"class":664},[546,8427,1484],{"class":584},[546,8429,7890],{"class":561},[546,8431,8432],{"class":565}," >=",[546,8434,8435],{"class":1076}," 400",[546,8437,2284],{"class":565},[546,8439,8190],{"class":561},[546,8441,2952],{"class":565},[546,8443,8444],{"class":1076}," 500",[546,8446,1080],{"class":584},[546,8448,579],{"class":565},[546,8450,8451,8453,8455,8457,8459,8461,8464],{"class":548,"line":3306},[546,8452,1425],{"class":565},[546,8454,7987],{"class":561},[546,8456,741],{"class":565},[546,8458,7312],{"class":561},[546,8460,741],{"class":565},[546,8462,8463],{"class":561},"validation",[546,8465,8213],{"class":565},[546,8467,8468,8470,8472,8474,8476,8478,8480,8482,8484],{"class":548,"line":3315},[546,8469,1305],{"class":565},[546,8471,3404],{"class":664},[546,8473,4035],{"class":664},[546,8475,1484],{"class":584},[546,8477,7890],{"class":561},[546,8479,8432],{"class":565},[546,8481,8444],{"class":1076},[546,8483,1080],{"class":584},[546,8485,579],{"class":565},[546,8487,8488,8490,8492,8494,8496,8498,8501],{"class":548,"line":3320},[546,8489,1425],{"class":565},[546,8491,7987],{"class":561},[546,8493,741],{"class":565},[546,8495,7312],{"class":561},[546,8497,741],{"class":565},[546,8499,8500],{"class":561},"server",[546,8502,8213],{"class":565},[546,8504,8505],{"class":548,"line":3325},[546,8506,1539],{"class":565},[546,8508,8509],{"class":548,"line":3339},[546,8510,1252],{"class":565},[546,8512,8513],{"class":548,"line":3362},[546,8514,1257],{"class":561},[546,8516,8517,8520,8522,8525,8527,8529,8531,8534],{"class":548,"line":3385},[546,8518,8519],{"class":584},"  recordSession",[546,8521,576],{"class":565},[546,8523,8524],{"class":644},"action",[546,8526,680],{"class":565},[546,8528,7825],{"class":644},[546,8530,661],{"class":565},[546,8532,8533],{"class":565}," null)",[546,8535,650],{"class":565},[546,8537,8538,8541,8543,8545,8547],{"class":548,"line":3399},[546,8539,8540],{"class":664},"    switch",[546,8542,1484],{"class":584},[546,8544,8524],{"class":561},[546,8546,1080],{"class":584},[546,8548,579],{"class":565},[546,8550,8551,8554,8556,8559,8561],{"class":548,"line":3409},[546,8552,8553],{"class":664},"      case",[546,8555,591],{"class":565},[546,8557,8558],{"class":594},"created",[546,8560,598],{"class":565},[546,8562,8563],{"class":565},":\n",[546,8565,8566,8569,8571,8573,8575,8577,8579],{"class":548,"line":3428},[546,8567,8568],{"class":565},"        this.",[546,8570,7987],{"class":561},[546,8572,741],{"class":565},[546,8574,1391],{"class":561},[546,8576,741],{"class":565},[546,8578,8558],{"class":561},[546,8580,8213],{"class":565},[546,8582,8583,8586],{"class":548,"line":3433},[546,8584,8585],{"class":664},"        break",[546,8587,612],{"class":565},[546,8589,8590,8592,8594,8596,8598],{"class":548,"line":3438},[546,8591,8553],{"class":664},[546,8593,591],{"class":565},[546,8595,3980],{"class":594},[546,8597,598],{"class":565},[546,8599,8563],{"class":565},[546,8601,8602,8604,8606,8608,8610,8612,8614],{"class":548,"line":3443},[546,8603,8568],{"class":565},[546,8605,7987],{"class":561},[546,8607,741],{"class":565},[546,8609,1391],{"class":561},[546,8611,741],{"class":565},[546,8613,3980],{"class":561},[546,8615,8213],{"class":565},[546,8617,8618,8620,8622,8624,8626],{"class":548,"line":3448},[546,8619,4808],{"class":664},[546,8621,1484],{"class":584},[546,8623,8180],{"class":561},[546,8625,1080],{"class":584},[546,8627,579],{"class":565},[546,8629,8630,8632,8635,8637,8639,8641],{"class":548,"line":3453},[546,8631,4569],{"class":565},[546,8633,8634],{"class":572},"updateAverageCompletionTime",[546,8636,576],{"class":584},[546,8638,8180],{"class":561},[546,8640,609],{"class":584},[546,8642,612],{"class":565},[546,8644,8645],{"class":548,"line":3485},[546,8646,4835],{"class":565},[546,8648,8649,8651],{"class":548,"line":3490},[546,8650,8585],{"class":664},[546,8652,612],{"class":565},[546,8654,8655,8657,8659,8661,8663],{"class":548,"line":3507},[546,8656,8553],{"class":664},[546,8658,591],{"class":565},[546,8660,4050],{"class":594},[546,8662,598],{"class":565},[546,8664,8563],{"class":565},[546,8666,8667,8669,8671,8673,8675,8677,8679],{"class":548,"line":3529},[546,8668,8568],{"class":565},[546,8670,7987],{"class":561},[546,8672,741],{"class":565},[546,8674,1391],{"class":561},[546,8676,741],{"class":565},[546,8678,4050],{"class":561},[546,8680,8213],{"class":565},[546,8682,8683,8685],{"class":548,"line":3536},[546,8684,8585],{"class":664},[546,8686,612],{"class":565},[546,8688,8689],{"class":548,"line":3578},[546,8690,1539],{"class":565},[546,8692,8693],{"class":548,"line":3588},[546,8694,1252],{"class":565},[546,8696,8697],{"class":548,"line":3607},[546,8698,1257],{"class":561},[546,8700,8701,8704,8706,8708,8710],{"class":548,"line":3612},[546,8702,8703],{"class":584},"  updateAverageCompletionTime",[546,8705,576],{"class":565},[546,8707,8180],{"class":644},[546,8709,609],{"class":565},[546,8711,650],{"class":565},[546,8713,8714,8716,8719,8721,8723,8725,8727,8729,8731,8733],{"class":548,"line":7007},[546,8715,1352],{"class":557},[546,8717,8718],{"class":561}," total",[546,8720,661],{"class":565},[546,8722,1241],{"class":565},[546,8724,7987],{"class":561},[546,8726,741],{"class":565},[546,8728,1391],{"class":561},[546,8730,741],{"class":565},[546,8732,3980],{"class":561},[546,8734,612],{"class":565},[546,8736,8737,8739,8742,8744,8746,8748,8750,8752,8754,8757],{"class":548,"line":7012},[546,8738,1352],{"class":557},[546,8740,8741],{"class":561}," current",[546,8743,661],{"class":565},[546,8745,1241],{"class":565},[546,8747,7987],{"class":561},[546,8749,741],{"class":565},[546,8751,1391],{"class":561},[546,8753,741],{"class":565},[546,8755,8756],{"class":561},"averageCompletionTime",[546,8758,612],{"class":565},[546,8760,8761,8763,8765,8767,8769,8771,8773,8775,8778,8781,8783,8785,8787,8789,8791,8793,8796,8798,8800,8803,8805],{"class":548,"line":7017},[546,8762,1168],{"class":565},[546,8764,7987],{"class":561},[546,8766,741],{"class":565},[546,8768,1391],{"class":561},[546,8770,741],{"class":565},[546,8772,8756],{"class":561},[546,8774,661],{"class":565},[546,8776,8777],{"class":584}," ((",[546,8779,8780],{"class":561},"current",[546,8782,6843],{"class":565},[546,8784,1484],{"class":584},[546,8786,8210],{"class":561},[546,8788,6860],{"class":565},[546,8790,1345],{"class":1076},[546,8792,2299],{"class":584},[546,8794,8795],{"class":565},"+",[546,8797,7825],{"class":561},[546,8799,1080],{"class":584},[546,8801,8802],{"class":565},"/",[546,8804,8718],{"class":561},[546,8806,612],{"class":565},[546,8808,8809],{"class":548,"line":7035},[546,8810,1252],{"class":565},[546,8812,8813],{"class":548,"line":7047},[546,8814,1257],{"class":561},[546,8816,8817,8820,8822],{"class":548,"line":7059},[546,8818,8819],{"class":584},"  getMetrics",[546,8821,782],{"class":565},[546,8823,650],{"class":565},[546,8825,8826,8828],{"class":548,"line":7070},[546,8827,1271],{"class":664},[546,8829,650],{"class":565},[546,8831,8832,8835,8837],{"class":548,"line":7079},[546,8833,8834],{"class":565},"      ...this.",[546,8836,7987],{"class":561},[546,8838,699],{"class":565},[546,8840,8841,8844,8846,8848,8851,8853],{"class":548,"line":7084},[546,8842,8843],{"class":584},"      successRate",[546,8845,588],{"class":565},[546,8847,1241],{"class":565},[546,8849,8850],{"class":572},"calculateSuccessRate",[546,8852,782],{"class":584},[546,8854,699],{"class":565},[546,8856,8857,8860,8862,8864,8867,8869],{"class":548,"line":7103},[546,8858,8859],{"class":584},"      averageResponseTime",[546,8861,588],{"class":565},[546,8863,1241],{"class":565},[546,8865,8866],{"class":572},"calculateAverageResponseTime",[546,8868,782],{"class":584},[546,8870,699],{"class":565},[546,8872,8873,8876,8878,8880,8883],{"class":548,"line":7129},[546,8874,8875],{"class":584},"      p95ResponseTime",[546,8877,588],{"class":565},[546,8879,1241],{"class":565},[546,8881,8882],{"class":572},"calculateP95ResponseTime",[546,8884,1828],{"class":584},[546,8886,8887],{"class":548,"line":7154},[546,8888,2384],{"class":565},[546,8890,8891],{"class":548,"line":7163},[546,8892,1252],{"class":565},[546,8894,8896],{"class":548,"line":8895},80,[546,8897,1257],{"class":561},[546,8899,8901,8904,8906],{"class":548,"line":8900},81,[546,8902,8903],{"class":584},"  calculateSuccessRate",[546,8905,782],{"class":565},[546,8907,650],{"class":565},[546,8909,8911,8913,8915,8917,8919,8921,8923,8925,8927,8929],{"class":548,"line":8910},82,[546,8912,1352],{"class":557},[546,8914,8718],{"class":561},[546,8916,661],{"class":565},[546,8918,1241],{"class":565},[546,8920,7987],{"class":561},[546,8922,741],{"class":565},[546,8924,8205],{"class":561},[546,8926,741],{"class":565},[546,8928,8210],{"class":561},[546,8930,612],{"class":565},[546,8932,8934,8936,8938,8940,8942,8945,8947,8949,8951,8953,8955,8957,8959,8962,8964,8966,8968,8970,8973,8975],{"class":548,"line":8933},83,[546,8935,1271],{"class":664},[546,8937,8718],{"class":561},[546,8939,3120],{"class":565},[546,8941,1077],{"class":1076},[546,8943,8944],{"class":565}," ?",[546,8946,1484],{"class":584},[546,8948,1234],{"class":565},[546,8950,7987],{"class":561},[546,8952,741],{"class":565},[546,8954,8205],{"class":561},[546,8956,741],{"class":565},[546,8958,8272],{"class":561},[546,8960,8961],{"class":565}," /",[546,8963,8718],{"class":561},[546,8965,1080],{"class":584},[546,8967,4877],{"class":565},[546,8969,4392],{"class":1076},[546,8971,8972],{"class":565}," :",[546,8974,1077],{"class":1076},[546,8976,612],{"class":565},[546,8978,8980],{"class":548,"line":8979},84,[546,8981,1252],{"class":565},[546,8983,8985],{"class":548,"line":8984},85,[546,8986,1257],{"class":561},[546,8988,8990,8993,8995],{"class":548,"line":8989},86,[546,8991,8992],{"class":584},"  calculateAverageResponseTime",[546,8994,782],{"class":565},[546,8996,650],{"class":565},[546,8998,9000,9002,9005,9007,9009,9011,9013,9015,9017,9019],{"class":548,"line":8999},87,[546,9001,1352],{"class":557},[546,9003,9004],{"class":561}," times",[546,9006,661],{"class":565},[546,9008,1241],{"class":565},[546,9010,7987],{"class":561},[546,9012,741],{"class":565},[546,9014,8205],{"class":561},[546,9016,741],{"class":565},[546,9018,8228],{"class":561},[546,9020,612],{"class":565},[546,9022,9024,9026,9028,9030,9032,9034,9036,9038,9040,9042,9045,9047,9049,9052,9054,9057,9059,9061,9064,9066,9068,9070,9072,9074,9076,9078,9080,9082,9084,9086],{"class":548,"line":9023},88,[546,9025,1271],{"class":664},[546,9027,9004],{"class":561},[546,9029,741],{"class":565},[546,9031,3117],{"class":561},[546,9033,3120],{"class":565},[546,9035,1077],{"class":1076},[546,9037,8944],{"class":565},[546,9039,9004],{"class":561},[546,9041,741],{"class":565},[546,9043,9044],{"class":572},"reduce",[546,9046,576],{"class":584},[546,9048,576],{"class":565},[546,9050,9051],{"class":644},"a",[546,9053,680],{"class":565},[546,9055,9056],{"class":644}," b",[546,9058,609],{"class":565},[546,9060,1040],{"class":557},[546,9062,9063],{"class":561}," a",[546,9065,4512],{"class":565},[546,9067,9056],{"class":561},[546,9069,680],{"class":565},[546,9071,1077],{"class":1076},[546,9073,1080],{"class":584},[546,9075,8802],{"class":565},[546,9077,9004],{"class":561},[546,9079,741],{"class":565},[546,9081,3117],{"class":561},[546,9083,8972],{"class":565},[546,9085,1077],{"class":1076},[546,9087,612],{"class":565},[546,9089,9091],{"class":548,"line":9090},89,[546,9092,1252],{"class":565},[546,9094,9096],{"class":548,"line":9095},90,[546,9097,1257],{"class":561},[546,9099,9101,9104,9106],{"class":548,"line":9100},91,[546,9102,9103],{"class":584},"  calculateP95ResponseTime",[546,9105,782],{"class":565},[546,9107,650],{"class":565},[546,9109,9111,9113,9115,9117,9119,9122,9124,9126,9128,9130,9132,9134,9136,9139,9141,9143,9145,9147,9149,9151,9153,9155,9157,9159,9161],{"class":548,"line":9110},92,[546,9112,1352],{"class":557},[546,9114,9004],{"class":561},[546,9116,661],{"class":565},[546,9118,1004],{"class":584},[546,9120,9121],{"class":565},"...this.",[546,9123,7987],{"class":561},[546,9125,741],{"class":565},[546,9127,8205],{"class":561},[546,9129,741],{"class":565},[546,9131,8228],{"class":561},[546,9133,1013],{"class":584},[546,9135,741],{"class":565},[546,9137,9138],{"class":572},"sort",[546,9140,576],{"class":584},[546,9142,576],{"class":565},[546,9144,9051],{"class":644},[546,9146,680],{"class":565},[546,9148,9056],{"class":644},[546,9150,609],{"class":565},[546,9152,1040],{"class":557},[546,9154,9063],{"class":561},[546,9156,6860],{"class":565},[546,9158,9056],{"class":561},[546,9160,609],{"class":584},[546,9162,612],{"class":565},[546,9164,9166,9168,9171,9173,9175,9177,9179,9181,9184,9186,9188,9190,9193,9195],{"class":548,"line":9165},93,[546,9167,1352],{"class":557},[546,9169,9170],{"class":561}," index",[546,9172,661],{"class":565},[546,9174,4858],{"class":561},[546,9176,741],{"class":565},[546,9178,6934],{"class":572},[546,9180,576],{"class":584},[546,9182,9183],{"class":561},"times",[546,9185,741],{"class":565},[546,9187,3117],{"class":561},[546,9189,6843],{"class":565},[546,9191,9192],{"class":1076}," 0.95",[546,9194,609],{"class":584},[546,9196,612],{"class":565},[546,9198,9200,9202,9204,9206,9209,9212,9214,9216],{"class":548,"line":9199},94,[546,9201,1271],{"class":664},[546,9203,9004],{"class":561},[546,9205,1293],{"class":584},[546,9207,9208],{"class":561},"index",[546,9210,9211],{"class":584},"] ",[546,9213,970],{"class":565},[546,9215,1077],{"class":1076},[546,9217,612],{"class":565},[546,9219,9221],{"class":548,"line":9220},95,[546,9222,1252],{"class":565},[546,9224,9226],{"class":548,"line":9225},96,[546,9227,789],{"class":565},[512,9229,9231],{"id":9230},"testing-best-practices","Testing Best Practices",[525,9233,9235],{"id":9234},"test-organization","Test Organization",[517,9237,9238],{},[532,9239,9240],{},"Structure tests logically",[536,9242,9244],{"className":538,"code":9243,"language":540,"meta":541,"style":541},"// tests/unit/sessions.test.js\ndescribe('Sessions API', () => {\n  let mockClient;\n  let sessionsAPI;\n  \n  beforeEach(() => {\n    mockClient = new MockMindPeekerClient();\n    sessionsAPI = new SessionsAPI(mockClient);\n  });\n  \n  describe('createSession', () => {\n    it('should create a session with valid parameters', async () => {\n      // Arrange\n      const sessionData = {\n        type: 'remote_viewing',\n        target: 'Test target',\n        modality: 'visual'\n      };\n      \n      mockClient.setMockResponse('sessions.create', {\n        sessionId: 'test_123',\n        status: 'initiated'\n      });\n      \n      // Act\n      const result = await sessionsAPI.createSession(sessionData);\n      \n      // Assert\n      expect(result.sessionId).toBe('test_123');\n      expect(result.status).toBe('initiated');\n      expect(mockClient.requests).toHaveLength(1);\n      expect(mockClient.requests[0].params).toMatchObject(sessionData);\n    });\n    \n    it('should throw validation error for invalid parameters', async () => {\n      // Arrange\n      const invalidData = {\n        type: 'invalid_type',\n        target: '',\n        modality: 'invalid_modality'\n      };\n      \n      // Act & Assert\n      await expect(sessionsAPI.createSession(invalidData))\n        .rejects\n        .toThrow(ValidationError);\n    });\n  });\n});\n",[543,9245,9246,9251,9273,9283,9292,9296,9309,9325,9346,9354,9358,9380,9404,9409,9420,9435,9451,9464,9469,9473,9496,9512,9526,9534,9538,9543,9568,9572,9577,9610,9640,9667,9705,9713,9717,9740,9744,9755,9770,9781,9794,9798,9802,9807,9831,9839,9854,9862,9870],{"__ignoreMap":541},[546,9247,9248],{"class":548,"line":82},[546,9249,9250],{"class":551},"// tests/unit/sessions.test.js\n",[546,9252,9253,9256,9258,9260,9263,9265,9267,9269,9271],{"class":548,"line":114},[546,9254,9255],{"class":572},"describe",[546,9257,576],{"class":561},[546,9259,598],{"class":565},[546,9261,9262],{"class":594},"Sessions API",[546,9264,598],{"class":565},[546,9266,680],{"class":565},[546,9268,7122],{"class":565},[546,9270,1040],{"class":557},[546,9272,650],{"class":565},[546,9274,9275,9278,9281],{"class":548,"line":146},[546,9276,9277],{"class":557},"  let",[546,9279,9280],{"class":561}," mockClient",[546,9282,612],{"class":565},[546,9284,9285,9287,9290],{"class":548,"line":178},[546,9286,9277],{"class":557},[546,9288,9289],{"class":561}," sessionsAPI",[546,9291,612],{"class":565},[546,9293,9294],{"class":548,"line":268},[546,9295,1257],{"class":584},[546,9297,9298,9301,9303,9305,9307],{"class":548,"line":273},[546,9299,9300],{"class":572},"  beforeEach",[546,9302,576],{"class":584},[546,9304,782],{"class":565},[546,9306,1040],{"class":557},[546,9308,650],{"class":565},[546,9310,9311,9314,9316,9318,9321,9323],{"class":548,"line":279},[546,9312,9313],{"class":561},"    mockClient",[546,9315,661],{"class":565},[546,9317,569],{"class":565},[546,9319,9320],{"class":572}," MockMindPeekerClient",[546,9322,782],{"class":584},[546,9324,612],{"class":565},[546,9326,9327,9330,9332,9334,9337,9339,9342,9344],{"class":548,"line":285},[546,9328,9329],{"class":561},"    sessionsAPI",[546,9331,661],{"class":565},[546,9333,569],{"class":565},[546,9335,9336],{"class":572}," SessionsAPI",[546,9338,576],{"class":584},[546,9340,9341],{"class":561},"mockClient",[546,9343,609],{"class":584},[546,9345,612],{"class":565},[546,9347,9348,9350,9352],{"class":548,"line":291},[546,9349,763],{"class":565},[546,9351,609],{"class":584},[546,9353,612],{"class":565},[546,9355,9356],{"class":548,"line":222},[546,9357,1257],{"class":584},[546,9359,9360,9363,9365,9367,9370,9372,9374,9376,9378],{"class":548,"line":227},[546,9361,9362],{"class":572},"  describe",[546,9364,576],{"class":584},[546,9366,598],{"class":565},[546,9368,9369],{"class":594},"createSession",[546,9371,598],{"class":565},[546,9373,680],{"class":565},[546,9375,7122],{"class":565},[546,9377,1040],{"class":557},[546,9379,650],{"class":565},[546,9381,9382,9385,9387,9389,9392,9394,9396,9398,9400,9402],{"class":548,"line":232},[546,9383,9384],{"class":572},"    it",[546,9386,576],{"class":584},[546,9388,598],{"class":565},[546,9390,9391],{"class":594},"should create a session with valid parameters",[546,9393,598],{"class":565},[546,9395,680],{"class":565},[546,9397,1993],{"class":557},[546,9399,7122],{"class":565},[546,9401,1040],{"class":557},[546,9403,650],{"class":565},[546,9405,9406],{"class":548,"line":238},[546,9407,9408],{"class":551},"      // Arrange\n",[546,9410,9411,9413,9416,9418],{"class":548,"line":243},[546,9412,2972],{"class":557},[546,9414,9415],{"class":561}," sessionData",[546,9417,661],{"class":565},[546,9419,650],{"class":565},[546,9421,9422,9425,9427,9429,9431,9433],{"class":548,"line":248},[546,9423,9424],{"class":584},"        type",[546,9426,588],{"class":565},[546,9428,591],{"class":565},[546,9430,1641],{"class":594},[546,9432,598],{"class":565},[546,9434,699],{"class":565},[546,9436,9437,9440,9442,9444,9447,9449],{"class":548,"line":792},[546,9438,9439],{"class":584},"        target",[546,9441,588],{"class":565},[546,9443,591],{"class":565},[546,9445,9446],{"class":594},"Test target",[546,9448,598],{"class":565},[546,9450,699],{"class":565},[546,9452,9453,9456,9458,9460,9462],{"class":548,"line":797},[546,9454,9455],{"class":584},"        modality",[546,9457,588],{"class":565},[546,9459,591],{"class":565},[546,9461,1745],{"class":594},[546,9463,978],{"class":565},[546,9465,9466],{"class":548,"line":803},[546,9467,9468],{"class":565},"      };\n",[546,9470,9471],{"class":548,"line":820},[546,9472,3040],{"class":584},[546,9474,9475,9478,9480,9483,9485,9487,9490,9492,9494],{"class":548,"line":843},[546,9476,9477],{"class":561},"      mockClient",[546,9479,741],{"class":565},[546,9481,9482],{"class":572},"setMockResponse",[546,9484,576],{"class":584},[546,9486,598],{"class":565},[546,9488,9489],{"class":594},"sessions.create",[546,9491,598],{"class":565},[546,9493,680],{"class":565},[546,9495,650],{"class":565},[546,9497,9498,9501,9503,9505,9508,9510],{"class":548,"line":1381},[546,9499,9500],{"class":584},"        sessionId",[546,9502,588],{"class":565},[546,9504,591],{"class":565},[546,9506,9507],{"class":594},"test_123",[546,9509,598],{"class":565},[546,9511,699],{"class":565},[546,9513,9514,9517,9519,9521,9524],{"class":548,"line":1416},[546,9515,9516],{"class":584},"        status",[546,9518,588],{"class":565},[546,9520,591],{"class":565},[546,9522,9523],{"class":594},"initiated",[546,9525,978],{"class":565},[546,9527,9528,9530,9532],{"class":548,"line":1422},[546,9529,3031],{"class":565},[546,9531,609],{"class":584},[546,9533,612],{"class":565},[546,9535,9536],{"class":548,"line":1439},[546,9537,3040],{"class":584},[546,9539,9540],{"class":548,"line":1452},[546,9541,9542],{"class":551},"      // Act\n",[546,9544,9545,9547,9550,9552,9554,9556,9558,9560,9562,9564,9566],{"class":548,"line":1476},[546,9546,2972],{"class":557},[546,9548,9549],{"class":561}," result",[546,9551,661],{"class":565},[546,9553,665],{"class":664},[546,9555,9289],{"class":561},[546,9557,741],{"class":565},[546,9559,9369],{"class":572},[546,9561,576],{"class":584},[546,9563,7096],{"class":561},[546,9565,609],{"class":584},[546,9567,612],{"class":565},[546,9569,9570],{"class":548,"line":1494},[546,9571,3040],{"class":584},[546,9573,9574],{"class":548,"line":1500},[546,9575,9576],{"class":551},"      // Assert\n",[546,9578,9579,9582,9584,9587,9589,9591,9593,9595,9598,9600,9602,9604,9606,9608],{"class":548,"line":1513},[546,9580,9581],{"class":572},"      expect",[546,9583,576],{"class":584},[546,9585,9586],{"class":561},"result",[546,9588,741],{"class":565},[546,9590,3824],{"class":561},[546,9592,609],{"class":584},[546,9594,741],{"class":565},[546,9596,9597],{"class":572},"toBe",[546,9599,576],{"class":584},[546,9601,598],{"class":565},[546,9603,9507],{"class":594},[546,9605,598],{"class":565},[546,9607,609],{"class":584},[546,9609,612],{"class":565},[546,9611,9612,9614,9616,9618,9620,9622,9624,9626,9628,9630,9632,9634,9636,9638],{"class":548,"line":1536},[546,9613,9581],{"class":572},[546,9615,576],{"class":584},[546,9617,9586],{"class":561},[546,9619,741],{"class":565},[546,9621,2113],{"class":561},[546,9623,609],{"class":584},[546,9625,741],{"class":565},[546,9627,9597],{"class":572},[546,9629,576],{"class":584},[546,9631,598],{"class":565},[546,9633,9523],{"class":594},[546,9635,598],{"class":565},[546,9637,609],{"class":584},[546,9639,612],{"class":565},[546,9641,9642,9644,9646,9648,9650,9652,9654,9656,9659,9661,9663,9665],{"class":548,"line":1542},[546,9643,9581],{"class":572},[546,9645,576],{"class":584},[546,9647,9341],{"class":561},[546,9649,741],{"class":565},[546,9651,8205],{"class":561},[546,9653,609],{"class":584},[546,9655,741],{"class":565},[546,9657,9658],{"class":572},"toHaveLength",[546,9660,576],{"class":584},[546,9662,1697],{"class":1076},[546,9664,609],{"class":584},[546,9666,612],{"class":565},[546,9668,9669,9671,9673,9675,9677,9679,9681,9683,9685,9687,9690,9692,9694,9697,9699,9701,9703],{"class":548,"line":1547},[546,9670,9581],{"class":572},[546,9672,576],{"class":584},[546,9674,9341],{"class":561},[546,9676,741],{"class":565},[546,9678,8205],{"class":561},[546,9680,1293],{"class":584},[546,9682,1932],{"class":1076},[546,9684,1013],{"class":584},[546,9686,741],{"class":565},[546,9688,9689],{"class":561},"params",[546,9691,609],{"class":584},[546,9693,741],{"class":565},[546,9695,9696],{"class":572},"toMatchObject",[546,9698,576],{"class":584},[546,9700,7096],{"class":561},[546,9702,609],{"class":584},[546,9704,612],{"class":565},[546,9706,9707,9709,9711],{"class":548,"line":2576},[546,9708,1305],{"class":565},[546,9710,609],{"class":584},[546,9712,612],{"class":565},[546,9714,9715],{"class":548,"line":2582},[546,9716,1371],{"class":584},[546,9718,9719,9721,9723,9725,9728,9730,9732,9734,9736,9738],{"class":548,"line":2587},[546,9720,9384],{"class":572},[546,9722,576],{"class":584},[546,9724,598],{"class":565},[546,9726,9727],{"class":594},"should throw validation error for invalid parameters",[546,9729,598],{"class":565},[546,9731,680],{"class":565},[546,9733,1993],{"class":557},[546,9735,7122],{"class":565},[546,9737,1040],{"class":557},[546,9739,650],{"class":565},[546,9741,9742],{"class":548,"line":3220},[546,9743,9408],{"class":551},[546,9745,9746,9748,9751,9753],{"class":548,"line":3239},[546,9747,2972],{"class":557},[546,9749,9750],{"class":561}," invalidData",[546,9752,661],{"class":565},[546,9754,650],{"class":565},[546,9756,9757,9759,9761,9763,9766,9768],{"class":548,"line":3248},[546,9758,9424],{"class":584},[546,9760,588],{"class":565},[546,9762,591],{"class":565},[546,9764,9765],{"class":594},"invalid_type",[546,9767,598],{"class":565},[546,9769,699],{"class":565},[546,9771,9772,9774,9776,9779],{"class":548,"line":3253},[546,9773,9439],{"class":584},[546,9775,588],{"class":565},[546,9777,9778],{"class":565}," ''",[546,9780,699],{"class":565},[546,9782,9783,9785,9787,9789,9792],{"class":548,"line":3258},[546,9784,9455],{"class":584},[546,9786,588],{"class":565},[546,9788,591],{"class":565},[546,9790,9791],{"class":594},"invalid_modality",[546,9793,978],{"class":565},[546,9795,9796],{"class":548,"line":3264},[546,9797,9468],{"class":565},[546,9799,9800],{"class":548,"line":3287},[546,9801,3040],{"class":584},[546,9803,9804],{"class":548,"line":3306},[546,9805,9806],{"class":551},"      // Act & Assert\n",[546,9808,9809,9811,9814,9816,9819,9821,9823,9825,9828],{"class":548,"line":3315},[546,9810,1384],{"class":664},[546,9812,9813],{"class":572}," expect",[546,9815,576],{"class":584},[546,9817,9818],{"class":561},"sessionsAPI",[546,9820,741],{"class":565},[546,9822,9369],{"class":572},[546,9824,576],{"class":584},[546,9826,9827],{"class":561},"invalidData",[546,9829,9830],{"class":584},"))\n",[546,9832,9833,9836],{"class":548,"line":3320},[546,9834,9835],{"class":565},"        .",[546,9837,9838],{"class":561},"rejects\n",[546,9840,9841,9843,9846,9848,9850,9852],{"class":548,"line":3325},[546,9842,9835],{"class":565},[546,9844,9845],{"class":572},"toThrow",[546,9847,576],{"class":584},[546,9849,5583],{"class":561},[546,9851,609],{"class":584},[546,9853,612],{"class":565},[546,9855,9856,9858,9860],{"class":548,"line":3339},[546,9857,1305],{"class":565},[546,9859,609],{"class":584},[546,9861,612],{"class":565},[546,9863,9864,9866,9868],{"class":548,"line":3362},[546,9865,763],{"class":565},[546,9867,609],{"class":584},[546,9869,612],{"class":565},[546,9871,9872,9874,9876],{"class":548,"line":3385},[546,9873,606],{"class":565},[546,9875,609],{"class":561},[546,9877,612],{"class":565},[525,9879,9881],{"id":9880},"test-data-management","Test Data Management",[517,9883,9884],{},[532,9885,9886],{},"Use factories for test data",[536,9888,9890],{"className":538,"code":9889,"language":540,"meta":541,"style":541},"// tests/factories/session-factory.js\nclass SessionFactory {\n  static create(overrides = {}) {\n    return {\n      type: 'remote_viewing',\n      target: 'Test investigation target',\n      modality: 'visual',\n      duration_minutes: 30,\n      privacy_level: 'private',\n      ...overrides\n    };\n  }\n  \n  static createCompleted(overrides = {}) {\n    return {\n      sessionId: 'completed_session_123',\n      status: 'completed',\n      confidenceScore: 0.85,\n      completedAt: '2025-01-15T10:30:00Z',\n      results: {\n        coordinates: { latitude: 40.7128, longitude: -74.0060 },\n        descriptors: ['test location', 'urban environment']\n      },\n      ...overrides\n    };\n  }\n  \n  static createFailed(overrides = {}) {\n    return {\n      sessionId: 'failed_session_123',\n      status: 'failed',\n      error: 'Session timeout',\n      ...overrides\n    };\n  }\n}\n\n// Usage in tests\nconst validSession = SessionFactory.create();\nconst completedSession = SessionFactory.createCompleted({\n  confidenceScore: 0.92\n});\n",[543,9891,9892,9897,9906,9925,9931,9946,9962,9977,9989,10005,10013,10017,10021,10025,10042,10048,10064,10079,10091,10107,10115,10146,10173,10177,10183,10187,10191,10195,10212,10218,10233,10247,10262,10268,10272,10276,10280,10284,10289,10308,10328,10338],{"__ignoreMap":541},[546,9893,9894],{"class":548,"line":82},[546,9895,9896],{"class":551},"// tests/factories/session-factory.js\n",[546,9898,9899,9901,9904],{"class":548,"line":114},[546,9900,1148],{"class":557},[546,9902,9903],{"class":1151}," SessionFactory",[546,9905,650],{"class":565},[546,9907,9908,9911,9914,9916,9919,9921,9923],{"class":548,"line":146},[546,9909,9910],{"class":557},"  static",[546,9912,9913],{"class":584}," create",[546,9915,576],{"class":565},[546,9917,9918],{"class":644},"overrides",[546,9920,661],{"class":565},[546,9922,2805],{"class":565},[546,9924,650],{"class":565},[546,9926,9927,9929],{"class":548,"line":178},[546,9928,1271],{"class":664},[546,9930,650],{"class":565},[546,9932,9933,9936,9938,9940,9942,9944],{"class":548,"line":268},[546,9934,9935],{"class":584},"      type",[546,9937,588],{"class":565},[546,9939,591],{"class":565},[546,9941,1641],{"class":594},[546,9943,598],{"class":565},[546,9945,699],{"class":565},[546,9947,9948,9951,9953,9955,9958,9960],{"class":548,"line":273},[546,9949,9950],{"class":584},"      target",[546,9952,588],{"class":565},[546,9954,591],{"class":565},[546,9956,9957],{"class":594},"Test investigation target",[546,9959,598],{"class":565},[546,9961,699],{"class":565},[546,9963,9964,9967,9969,9971,9973,9975],{"class":548,"line":279},[546,9965,9966],{"class":584},"      modality",[546,9968,588],{"class":565},[546,9970,591],{"class":565},[546,9972,1745],{"class":594},[546,9974,598],{"class":565},[546,9976,699],{"class":565},[546,9978,9979,9982,9984,9987],{"class":548,"line":285},[546,9980,9981],{"class":584},"      duration_minutes",[546,9983,588],{"class":565},[546,9985,9986],{"class":1076}," 30",[546,9988,699],{"class":565},[546,9990,9991,9994,9996,9998,10001,10003],{"class":548,"line":291},[546,9992,9993],{"class":584},"      privacy_level",[546,9995,588],{"class":565},[546,9997,591],{"class":565},[546,9999,10000],{"class":594},"private",[546,10002,598],{"class":565},[546,10004,699],{"class":565},[546,10006,10007,10010],{"class":548,"line":222},[546,10008,10009],{"class":565},"      ...",[546,10011,10012],{"class":561},"overrides\n",[546,10014,10015],{"class":548,"line":227},[546,10016,2384],{"class":565},[546,10018,10019],{"class":548,"line":232},[546,10020,1252],{"class":565},[546,10022,10023],{"class":548,"line":238},[546,10024,1257],{"class":561},[546,10026,10027,10029,10032,10034,10036,10038,10040],{"class":548,"line":243},[546,10028,9910],{"class":557},[546,10030,10031],{"class":584}," createCompleted",[546,10033,576],{"class":565},[546,10035,9918],{"class":644},[546,10037,661],{"class":565},[546,10039,2805],{"class":565},[546,10041,650],{"class":565},[546,10043,10044,10046],{"class":548,"line":248},[546,10045,1271],{"class":664},[546,10047,650],{"class":565},[546,10049,10050,10053,10055,10057,10060,10062],{"class":548,"line":792},[546,10051,10052],{"class":584},"      sessionId",[546,10054,588],{"class":565},[546,10056,591],{"class":565},[546,10058,10059],{"class":594},"completed_session_123",[546,10061,598],{"class":565},[546,10063,699],{"class":565},[546,10065,10066,10069,10071,10073,10075,10077],{"class":548,"line":797},[546,10067,10068],{"class":584},"      status",[546,10070,588],{"class":565},[546,10072,591],{"class":565},[546,10074,3980],{"class":594},[546,10076,598],{"class":565},[546,10078,699],{"class":565},[546,10080,10081,10084,10086,10089],{"class":548,"line":803},[546,10082,10083],{"class":584},"      confidenceScore",[546,10085,588],{"class":565},[546,10087,10088],{"class":1076}," 0.85",[546,10090,699],{"class":565},[546,10092,10093,10096,10098,10100,10103,10105],{"class":548,"line":820},[546,10094,10095],{"class":584},"      completedAt",[546,10097,588],{"class":565},[546,10099,591],{"class":565},[546,10101,10102],{"class":594},"2025-01-15T10:30:00Z",[546,10104,598],{"class":565},[546,10106,699],{"class":565},[546,10108,10109,10111,10113],{"class":548,"line":843},[546,10110,4603],{"class":584},[546,10112,588],{"class":565},[546,10114,650],{"class":565},[546,10116,10117,10120,10122,10124,10127,10129,10132,10134,10137,10139,10141,10144],{"class":548,"line":1381},[546,10118,10119],{"class":584},"        coordinates",[546,10121,588],{"class":565},[546,10123,709],{"class":565},[546,10125,10126],{"class":584}," latitude",[546,10128,588],{"class":565},[546,10130,10131],{"class":1076}," 40.7128",[546,10133,680],{"class":565},[546,10135,10136],{"class":584}," longitude",[546,10138,588],{"class":565},[546,10140,6860],{"class":565},[546,10142,10143],{"class":1076},"74.0060",[546,10145,728],{"class":565},[546,10147,10148,10151,10153,10155,10157,10160,10162,10164,10166,10169,10171],{"class":548,"line":1416},[546,10149,10150],{"class":584},"        descriptors",[546,10152,588],{"class":565},[546,10154,1004],{"class":584},[546,10156,598],{"class":565},[546,10158,10159],{"class":594},"test location",[546,10161,598],{"class":565},[546,10163,680],{"class":565},[546,10165,591],{"class":565},[546,10167,10168],{"class":594},"urban environment",[546,10170,598],{"class":565},[546,10172,1300],{"class":584},[546,10174,10175],{"class":548,"line":1422},[546,10176,8048],{"class":565},[546,10178,10179,10181],{"class":548,"line":1439},[546,10180,10009],{"class":565},[546,10182,10012],{"class":561},[546,10184,10185],{"class":548,"line":1452},[546,10186,2384],{"class":565},[546,10188,10189],{"class":548,"line":1476},[546,10190,1252],{"class":565},[546,10192,10193],{"class":548,"line":1494},[546,10194,1257],{"class":561},[546,10196,10197,10199,10202,10204,10206,10208,10210],{"class":548,"line":1500},[546,10198,9910],{"class":557},[546,10200,10201],{"class":584}," createFailed",[546,10203,576],{"class":565},[546,10205,9918],{"class":644},[546,10207,661],{"class":565},[546,10209,2805],{"class":565},[546,10211,650],{"class":565},[546,10213,10214,10216],{"class":548,"line":1513},[546,10215,1271],{"class":664},[546,10217,650],{"class":565},[546,10219,10220,10222,10224,10226,10229,10231],{"class":548,"line":1536},[546,10221,10052],{"class":584},[546,10223,588],{"class":565},[546,10225,591],{"class":565},[546,10227,10228],{"class":594},"failed_session_123",[546,10230,598],{"class":565},[546,10232,699],{"class":565},[546,10234,10235,10237,10239,10241,10243,10245],{"class":548,"line":1542},[546,10236,10068],{"class":584},[546,10238,588],{"class":565},[546,10240,591],{"class":565},[546,10242,4050],{"class":594},[546,10244,598],{"class":565},[546,10246,699],{"class":565},[546,10248,10249,10251,10253,10255,10258,10260],{"class":548,"line":1547},[546,10250,5843],{"class":584},[546,10252,588],{"class":565},[546,10254,591],{"class":565},[546,10256,10257],{"class":594},"Session timeout",[546,10259,598],{"class":565},[546,10261,699],{"class":565},[546,10263,10264,10266],{"class":548,"line":2576},[546,10265,10009],{"class":565},[546,10267,10012],{"class":561},[546,10269,10270],{"class":548,"line":2582},[546,10271,2384],{"class":565},[546,10273,10274],{"class":548,"line":2587},[546,10275,1252],{"class":565},[546,10277,10278],{"class":548,"line":3220},[546,10279,789],{"class":565},[546,10281,10282],{"class":548,"line":3239},[546,10283,618],{"emptyLinePlaceholder":617},[546,10285,10286],{"class":548,"line":3248},[546,10287,10288],{"class":551},"// Usage in tests\n",[546,10290,10291,10293,10296,10298,10300,10302,10304,10306],{"class":548,"line":3253},[546,10292,558],{"class":557},[546,10294,10295],{"class":561}," validSession ",[546,10297,566],{"class":565},[546,10299,9903],{"class":561},[546,10301,741],{"class":565},[546,10303,2063],{"class":572},[546,10305,782],{"class":561},[546,10307,612],{"class":565},[546,10309,10310,10312,10315,10317,10319,10321,10324,10326],{"class":548,"line":3258},[546,10311,558],{"class":557},[546,10313,10314],{"class":561}," completedSession ",[546,10316,566],{"class":565},[546,10318,9903],{"class":561},[546,10320,741],{"class":565},[546,10322,10323],{"class":572},"createCompleted",[546,10325,576],{"class":561},[546,10327,579],{"class":565},[546,10329,10330,10333,10335],{"class":548,"line":3264},[546,10331,10332],{"class":584},"  confidenceScore",[546,10334,588],{"class":565},[546,10336,10337],{"class":1076}," 0.92\n",[546,10339,10340,10342,10344],{"class":548,"line":3287},[546,10341,606],{"class":565},[546,10343,609],{"class":561},[546,10345,612],{"class":565},[512,10347,10349],{"id":10348},"documentation-best-practices","Documentation Best Practices",[525,10351,10353],{"id":10352},"api-documentation","API Documentation",[517,10355,10356],{},[532,10357,10358],{},"Maintain comprehensive API docs",[536,10360,10362],{"className":538,"code":10361,"language":540,"meta":541,"style":541},"/**\n * Creates a new psychic investigation session\n * \n * @param {Object} sessionData - Session configuration\n * @param {string} sessionData.type - Type of psychic investigation\n * @param {'remote_viewing'|'dowsing'|'automatic_writing'} sessionData.type\n * @param {string} sessionData.target - Target description (1-1000 chars)\n * @param {string} [sessionData.modality] - Psychic modality\n * @param {'visual'|'kinesthetic'|'auditory'} [sessionData.modality]\n * @param {number} [sessionData.duration_minutes=30] - Session duration in minutes\n * @param {string} [sessionData.privacy_level='private'] - Privacy level\n * @param {'public'|'private'|'classified'} [sessionData.privacy_level]\n * \n * @returns {Promise\u003CSession>} Created session object\n * @throws {ValidationError} When input parameters are invalid\n * @throws {AuthenticationError} When API credentials are invalid\n * @throws {RateLimitError} When rate limit is exceeded\n * \n * @example\n * const session = await createSession({\n *   type: 'remote_viewing',\n *   target: 'Missing person investigation',\n *   modality: 'visual',\n *   duration_minutes: 45\n * });\n */\nasync function createSession(sessionData) {\n  // Implementation\n}\n",[543,10363,10364,10369,10374,10379,10404,10424,10442,10462,10486,10507,10536,10565,10586,10590,10609,10627,10644,10661,10665,10674,10679,10684,10689,10694,10699,10704,10709,10725,10730],{"__ignoreMap":541},[546,10365,10366],{"class":548,"line":82},[546,10367,10368],{"class":551},"/**\n",[546,10370,10371],{"class":548,"line":114},[546,10372,10373],{"class":551}," * Creates a new psychic investigation session\n",[546,10375,10376],{"class":548,"line":146},[546,10377,10378],{"class":551}," * \n",[546,10380,10381,10384,10387,10391,10393,10397,10399,10401],{"class":548,"line":178},[546,10382,10383],{"class":551}," * ",[546,10385,10386],{"class":664},"@",[546,10388,10390],{"class":10389},"s6hCs","param",[546,10392,709],{"class":664},[546,10394,10396],{"class":10395},"sFweD","Object",[546,10398,606],{"class":664},[546,10400,9415],{"class":644},[546,10402,10403],{"class":551}," - Session configuration\n",[546,10405,10406,10408,10410,10412,10414,10416,10418,10421],{"class":548,"line":268},[546,10407,10383],{"class":551},[546,10409,10386],{"class":664},[546,10411,10390],{"class":10389},[546,10413,709],{"class":664},[546,10415,1627],{"class":10395},[546,10417,606],{"class":664},[546,10419,10420],{"class":644}," sessionData.type",[546,10422,10423],{"class":551}," - Type of psychic investigation\n",[546,10425,10426,10428,10430,10432,10434,10437,10439],{"class":548,"line":273},[546,10427,10383],{"class":551},[546,10429,10386],{"class":664},[546,10431,10390],{"class":10389},[546,10433,709],{"class":664},[546,10435,10436],{"class":10395},"'remote_viewing'|'dowsing'|'automatic_writing'",[546,10438,606],{"class":664},[546,10440,10441],{"class":644}," sessionData.type\n",[546,10443,10444,10446,10448,10450,10452,10454,10456,10459],{"class":548,"line":279},[546,10445,10383],{"class":551},[546,10447,10386],{"class":664},[546,10449,10390],{"class":10389},[546,10451,709],{"class":664},[546,10453,1627],{"class":10395},[546,10455,606],{"class":664},[546,10457,10458],{"class":644}," sessionData.target",[546,10460,10461],{"class":551}," - Target description (1-1000 chars)\n",[546,10463,10464,10466,10468,10470,10472,10474,10476,10478,10481,10483],{"class":548,"line":285},[546,10465,10383],{"class":551},[546,10467,10386],{"class":664},[546,10469,10390],{"class":10389},[546,10471,709],{"class":664},[546,10473,1627],{"class":10395},[546,10475,606],{"class":664},[546,10477,1004],{"class":664},[546,10479,10480],{"class":644},"sessionData.modality",[546,10482,1013],{"class":664},[546,10484,10485],{"class":551}," - Psychic modality\n",[546,10487,10488,10490,10492,10494,10496,10499,10501,10503,10505],{"class":548,"line":291},[546,10489,10383],{"class":551},[546,10491,10386],{"class":664},[546,10493,10390],{"class":10389},[546,10495,709],{"class":664},[546,10497,10498],{"class":10395},"'visual'|'kinesthetic'|'auditory'",[546,10500,606],{"class":664},[546,10502,1004],{"class":664},[546,10504,10480],{"class":644},[546,10506,1300],{"class":664},[546,10508,10509,10511,10513,10515,10517,10519,10521,10523,10526,10528,10531,10533],{"class":548,"line":222},[546,10510,10383],{"class":551},[546,10512,10386],{"class":664},[546,10514,10390],{"class":10389},[546,10516,709],{"class":664},[546,10518,1790],{"class":10395},[546,10520,606],{"class":664},[546,10522,1004],{"class":664},[546,10524,10525],{"class":644},"sessionData.duration_minutes",[546,10527,566],{"class":664},[546,10529,10530],{"class":644},"30",[546,10532,1013],{"class":664},[546,10534,10535],{"class":551}," - Session duration in minutes\n",[546,10537,10538,10540,10542,10544,10546,10548,10550,10552,10555,10557,10560,10562],{"class":548,"line":227},[546,10539,10383],{"class":551},[546,10541,10386],{"class":664},[546,10543,10390],{"class":10389},[546,10545,709],{"class":664},[546,10547,1627],{"class":10395},[546,10549,606],{"class":664},[546,10551,1004],{"class":664},[546,10553,10554],{"class":644},"sessionData.privacy_level",[546,10556,566],{"class":664},[546,10558,10559],{"class":644},"'private'",[546,10561,1013],{"class":664},[546,10563,10564],{"class":551}," - Privacy level\n",[546,10566,10567,10569,10571,10573,10575,10578,10580,10582,10584],{"class":548,"line":232},[546,10568,10383],{"class":551},[546,10570,10386],{"class":664},[546,10572,10390],{"class":10389},[546,10574,709],{"class":664},[546,10576,10577],{"class":10395},"'public'|'private'|'classified'",[546,10579,606],{"class":664},[546,10581,1004],{"class":664},[546,10583,10554],{"class":644},[546,10585,1300],{"class":664},[546,10587,10588],{"class":548,"line":238},[546,10589,10378],{"class":551},[546,10591,10592,10594,10596,10599,10601,10604,10606],{"class":548,"line":243},[546,10593,10383],{"class":551},[546,10595,10386],{"class":664},[546,10597,10598],{"class":10389},"returns",[546,10600,709],{"class":664},[546,10602,10603],{"class":10395},"Promise\u003CSession>",[546,10605,606],{"class":664},[546,10607,10608],{"class":551}," Created session object\n",[546,10610,10611,10613,10615,10618,10620,10622,10624],{"class":548,"line":248},[546,10612,10383],{"class":551},[546,10614,10386],{"class":664},[546,10616,10617],{"class":10389},"throws",[546,10619,709],{"class":664},[546,10621,5583],{"class":10395},[546,10623,606],{"class":664},[546,10625,10626],{"class":551}," When input parameters are invalid\n",[546,10628,10629,10631,10633,10635,10637,10639,10641],{"class":548,"line":792},[546,10630,10383],{"class":551},[546,10632,10386],{"class":664},[546,10634,10617],{"class":10389},[546,10636,709],{"class":664},[546,10638,5471],{"class":10395},[546,10640,606],{"class":664},[546,10642,10643],{"class":551}," When API credentials are invalid\n",[546,10645,10646,10648,10650,10652,10654,10656,10658],{"class":548,"line":797},[546,10647,10383],{"class":551},[546,10649,10386],{"class":664},[546,10651,10617],{"class":10389},[546,10653,709],{"class":664},[546,10655,5395],{"class":10395},[546,10657,606],{"class":664},[546,10659,10660],{"class":551}," When rate limit is exceeded\n",[546,10662,10663],{"class":548,"line":803},[546,10664,10378],{"class":551},[546,10666,10667,10669,10671],{"class":548,"line":820},[546,10668,10383],{"class":551},[546,10670,10386],{"class":664},[546,10672,10673],{"class":10389},"example\n",[546,10675,10676],{"class":548,"line":843},[546,10677,10678],{"class":551}," * const session = await createSession({\n",[546,10680,10681],{"class":548,"line":1381},[546,10682,10683],{"class":551}," *   type: 'remote_viewing',\n",[546,10685,10686],{"class":548,"line":1416},[546,10687,10688],{"class":551}," *   target: 'Missing person investigation',\n",[546,10690,10691],{"class":548,"line":1422},[546,10692,10693],{"class":551}," *   modality: 'visual',\n",[546,10695,10696],{"class":548,"line":1439},[546,10697,10698],{"class":551}," *   duration_minutes: 45\n",[546,10700,10701],{"class":548,"line":1452},[546,10702,10703],{"class":551}," * });\n",[546,10705,10706],{"class":548,"line":1476},[546,10707,10708],{"class":551}," */\n",[546,10710,10711,10713,10715,10717,10719,10721,10723],{"class":548,"line":1494},[546,10712,633],{"class":557},[546,10714,636],{"class":557},[546,10716,639],{"class":572},[546,10718,576],{"class":565},[546,10720,7096],{"class":644},[546,10722,609],{"class":565},[546,10724,650],{"class":565},[546,10726,10727],{"class":548,"line":1500},[546,10728,10729],{"class":551},"  // Implementation\n",[546,10731,10732],{"class":548,"line":1513},[546,10733,789],{"class":565},[512,10735,10737],{"id":10736},"support-resources","Support Resources",[10739,10740,10741,10753,10763,10773,10783],"ul",{},[10742,10743,10744,5537,10747],"li",{},[532,10745,10746],{},"Security Guidelines",[9051,10748,10752],{"href":10749,"rel":10750},"https://docs.mindpeeker.com/security",[10751],"nofollow","docs.mindpeeker.com/security",[10742,10754,10755,5537,10758],{},[532,10756,10757],{},"Performance Guide",[9051,10759,10762],{"href":10760,"rel":10761},"https://docs.mindpeeker.com/performance",[10751],"docs.mindpeeker.com/performance",[10742,10764,10765,5537,10768],{},[532,10766,10767],{},"Monitoring Best Practices",[9051,10769,10772],{"href":10770,"rel":10771},"https://docs.mindpeeker.com/monitoring",[10751],"docs.mindpeeker.com/monitoring",[10742,10774,10775,5537,10778],{},[532,10776,10777],{},"Community Forum",[9051,10779,10782],{"href":10780,"rel":10781},"https://community.mindpeeker.com",[10751],"community.mindpeeker.com",[10742,10784,10785,5537,10788],{},[532,10786,10787],{},"Security Team",[9051,10789,10791],{"href":10790},"mailto:security@mindpeeker.com","security@mindpeeker.com",[10793,10794,10795],"style",{},"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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .s6hCs, html code.shiki .s6hCs{--shiki-light:#9C3EDA;--shiki-light-font-style:italic;--shiki-default:#C792EA;--shiki-default-font-style:italic;--shiki-dark:#C792EA;--shiki-dark-font-style:italic}html pre.shiki code .sFweD, html code.shiki .sFweD{--shiki-light:#E2931D;--shiki-light-font-style:italic;--shiki-default:#FFCB6B;--shiki-default-font-style:italic;--shiki-dark:#FFCB6B;--shiki-dark-font-style:italic}",{"title":541,"searchDepth":82,"depth":114,"links":10797},[10798,10799,10804,10808,10812,10816,10820,10823],{"id":514,"depth":114,"text":515},{"id":522,"depth":114,"text":523,"children":10800},[10801,10802,10803],{"id":527,"depth":146,"text":528},{"id":1552,"depth":146,"text":1553},{"id":2407,"depth":146,"text":2408},{"id":2735,"depth":114,"text":2736,"children":10805},[10806,10807],{"id":2739,"depth":146,"text":2740},{"id":4279,"depth":146,"text":4280},{"id":5175,"depth":114,"text":5176,"children":10809},[10810,10811],{"id":5179,"depth":146,"text":5180},{"id":6213,"depth":146,"text":6214},{"id":7168,"depth":114,"text":7169,"children":10813},[10814,10815],{"id":7172,"depth":146,"text":7173},{"id":7952,"depth":146,"text":7953},{"id":9230,"depth":114,"text":9231,"children":10817},[10818,10819],{"id":9234,"depth":146,"text":9235},{"id":9880,"depth":146,"text":9881},{"id":10348,"depth":114,"text":10349,"children":10821},[10822],{"id":10352,"depth":146,"text":10353},{"id":10736,"depth":114,"text":10737},"Recommended best practices for developing with MindPeeker platform","md",null,{"icon":36},{"icon":36,"order":291},{"title":399,"description":10824},"0dqsJTMC2do5hVTnDLhxQNffnwcWmznmi3Z2HLaLhdA",[10832,10834],{"title":395,"path":396,"stem":397,"description":10833,"icon":356,"order":285,"children":-1},"Essential tools and utilities for MindPeeker platform development",{"title":403,"path":405,"stem":409,"description":10835,"icon":92,"children":-1},"Scientific validation, studies, and evidence-based insights",1776312212163]