[{"data":1,"prerenderedAt":1076},["ShallowReactive",2],{"navigation":3,"/blog/astro-plus-elysia-in-a-hurry":18,"/blog/astro-plus-elysia-in-a-hurry-surround":1072},[4],{"title":5,"path":6,"stem":7,"children":8,"page":17},"Blog","/blog","blog",[9,13],{"title":10,"path":11,"stem":12},"Astro + Elysia in a hurry","/blog/astro-plus-elysia-in-a-hurry","blog/astro-plus-elysia-in-a-hurry",{"title":14,"path":15,"stem":16},"Salesforce Bulk API 2.0 in a hurry","/blog/salesforce-bulk-api-2-in-a-hurry","blog/salesforce-bulk-api-2-in-a-hurry",false,{"id":19,"title":10,"author":20,"body":24,"date":1065,"description":1066,"extension":1067,"image":1068,"meta":1069,"minRead":123,"navigation":126,"path":11,"seo":1070,"stem":12,"__hash__":1071},"blog/blog/astro-plus-elysia-in-a-hurry.md",{"name":21,"avatar":22},"Bryan Ferreira",{"src":23,"alt":21},"/profile-cropped.png",{"type":25,"value":26,"toc":1053},"minimark",[27,32,36,40,51,56,68,177,181,203,207,218,525,529,532,546,553,792,795,805,809,812,912,919,942,946,1045,1049],[28,29,31],"h2",{"id":30},"why-use-elysia-inside-astro","Why use Elysia inside Astro?",[33,34,35],"p",{},"Basically, you get a Bun powered API, end-to-end type safe via Eden Treaty, with automatic OpenAPI docs, and minimal config.",[28,37,39],{"id":38},"the-steps","The steps",[33,41,42,43,50],{},"For the full reference, check the ",[44,45,49],"a",{"href":46,"rel":47},"https://elysiajs.com/integrations/astro",[48],"nofollow","official Elysia + Astro docs",".",[52,53,55],"h3",{"id":54},"_1-set-output-to-server-in-astroconfigmjs","1. Set output to server in astro.config.mjs",[57,58,59],"blockquote",{},[33,60,61,62,67],{},"Check the ",[44,63,66],{"href":64,"rel":65},"https://docs.astro.build/en/install-and-setup/",[48],"official setup guide"," to create a new Astro project if you don't have one already.",[69,70,75],"pre",{"className":71,"code":72,"language":73,"meta":74,"style":74},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// astro.config.mjs\nimport { defineConfig } from \"astro/config\";\n\nexport default defineConfig({\n  output: \"server\",\n});\n","js","",[76,77,78,87,121,128,146,166],"code",{"__ignoreMap":74},[79,80,83],"span",{"class":81,"line":82},"line",1,[79,84,86],{"class":85},"sHwdD","// astro.config.mjs\n",[79,88,90,94,98,102,105,108,111,115,118],{"class":81,"line":89},2,[79,91,93],{"class":92},"s7zQu","import",[79,95,97],{"class":96},"sMK4o"," {",[79,99,101],{"class":100},"sTEyZ"," defineConfig",[79,103,104],{"class":96}," }",[79,106,107],{"class":92}," from",[79,109,110],{"class":96}," \"",[79,112,114],{"class":113},"sfazB","astro/config",[79,116,117],{"class":96},"\"",[79,119,120],{"class":96},";\n",[79,122,124],{"class":81,"line":123},3,[79,125,127],{"emptyLinePlaceholder":126},true,"\n",[79,129,131,134,137,140,143],{"class":81,"line":130},4,[79,132,133],{"class":92},"export",[79,135,136],{"class":92}," default",[79,138,101],{"class":139},"s2Zo4",[79,141,142],{"class":100},"(",[79,144,145],{"class":96},"{\n",[79,147,149,153,156,158,161,163],{"class":81,"line":148},5,[79,150,152],{"class":151},"swJcz","  output",[79,154,155],{"class":96},":",[79,157,110],{"class":96},[79,159,160],{"class":113},"server",[79,162,117],{"class":96},[79,164,165],{"class":96},",\n",[79,167,169,172,175],{"class":81,"line":168},6,[79,170,171],{"class":96},"}",[79,173,174],{"class":100},")",[79,176,120],{"class":96},[52,178,180],{"id":179},"_2-install-elysia","2. Install Elysia",[69,182,186],{"className":183,"code":184,"language":185,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add elysia @elysiajs/eden\n","bash",[76,187,188],{"__ignoreMap":74},[79,189,190,194,197,200],{"class":81,"line":82},[79,191,193],{"class":192},"sBMFI","bun",[79,195,196],{"class":113}," add",[79,198,199],{"class":113}," elysia",[79,201,202],{"class":113}," @elysiajs/eden\n",[52,204,206],{"id":205},"_3-create-the-catch-all-route","3. Create the catch-all route",[33,208,209,210,213,214,217],{},"Create a file in ",[76,211,212],{},"src/pages/"," that catches every ",[76,215,216],{},"/api/*"," request and hands it off to Elysia.",[69,219,223],{"className":220,"code":221,"language":222,"meta":74,"style":74},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// src/pages/[...slugs].ts\nimport { Elysia } from \"elysia\";\n\nconst app = new Elysia({ prefix: \"/api\" })\n  .get(\"/health\", () => ({ status: \"ok\" }))\n  .get(\"/hello\", () => ({ message: \"Hello from Elysia!\" }));\n\nconst handle = app.handle;\n\nexport const GET = handle;\nexport const POST = handle;\nexport const PUT = handle;\nexport const PATCH = handle;\nexport const DELETE = handle;\n\nexport type App = typeof app;\n","ts",[76,224,225,230,252,256,295,343,387,392,412,417,435,451,467,483,499,504],{"__ignoreMap":74},[79,226,227],{"class":81,"line":82},[79,228,229],{"class":85},"// src/pages/[...slugs].ts\n",[79,231,232,234,236,239,241,243,245,248,250],{"class":81,"line":89},[79,233,93],{"class":92},[79,235,97],{"class":96},[79,237,238],{"class":100}," Elysia",[79,240,104],{"class":96},[79,242,107],{"class":92},[79,244,110],{"class":96},[79,246,247],{"class":113},"elysia",[79,249,117],{"class":96},[79,251,120],{"class":96},[79,253,254],{"class":81,"line":123},[79,255,127],{"emptyLinePlaceholder":126},[79,257,258,262,265,268,271,273,275,278,281,283,285,288,290,292],{"class":81,"line":130},[79,259,261],{"class":260},"spNyl","const",[79,263,264],{"class":100}," app ",[79,266,267],{"class":96},"=",[79,269,270],{"class":96}," new",[79,272,238],{"class":139},[79,274,142],{"class":100},[79,276,277],{"class":96},"{",[79,279,280],{"class":151}," prefix",[79,282,155],{"class":96},[79,284,110],{"class":96},[79,286,287],{"class":113},"/api",[79,289,117],{"class":96},[79,291,104],{"class":96},[79,293,294],{"class":100},")\n",[79,296,297,300,303,305,307,310,312,315,318,321,324,326,329,331,333,336,338,340],{"class":81,"line":148},[79,298,299],{"class":96},"  .",[79,301,302],{"class":139},"get",[79,304,142],{"class":100},[79,306,117],{"class":96},[79,308,309],{"class":113},"/health",[79,311,117],{"class":96},[79,313,314],{"class":96},",",[79,316,317],{"class":96}," ()",[79,319,320],{"class":260}," =>",[79,322,323],{"class":100}," (",[79,325,277],{"class":96},[79,327,328],{"class":151}," status",[79,330,155],{"class":96},[79,332,110],{"class":96},[79,334,335],{"class":113},"ok",[79,337,117],{"class":96},[79,339,104],{"class":96},[79,341,342],{"class":100},"))\n",[79,344,345,347,349,351,353,356,358,360,362,364,366,368,371,373,375,378,380,382,385],{"class":81,"line":168},[79,346,299],{"class":96},[79,348,302],{"class":139},[79,350,142],{"class":100},[79,352,117],{"class":96},[79,354,355],{"class":113},"/hello",[79,357,117],{"class":96},[79,359,314],{"class":96},[79,361,317],{"class":96},[79,363,320],{"class":260},[79,365,323],{"class":100},[79,367,277],{"class":96},[79,369,370],{"class":151}," message",[79,372,155],{"class":96},[79,374,110],{"class":96},[79,376,377],{"class":113},"Hello from Elysia!",[79,379,117],{"class":96},[79,381,104],{"class":96},[79,383,384],{"class":100},"))",[79,386,120],{"class":96},[79,388,390],{"class":81,"line":389},7,[79,391,127],{"emptyLinePlaceholder":126},[79,393,395,397,400,402,405,407,410],{"class":81,"line":394},8,[79,396,261],{"class":260},[79,398,399],{"class":100}," handle ",[79,401,267],{"class":96},[79,403,404],{"class":100}," app",[79,406,50],{"class":96},[79,408,409],{"class":100},"handle",[79,411,120],{"class":96},[79,413,415],{"class":81,"line":414},9,[79,416,127],{"emptyLinePlaceholder":126},[79,418,420,422,425,428,430,433],{"class":81,"line":419},10,[79,421,133],{"class":92},[79,423,424],{"class":260}," const",[79,426,427],{"class":100}," GET ",[79,429,267],{"class":96},[79,431,432],{"class":100}," handle",[79,434,120],{"class":96},[79,436,438,440,442,445,447,449],{"class":81,"line":437},11,[79,439,133],{"class":92},[79,441,424],{"class":260},[79,443,444],{"class":100}," POST ",[79,446,267],{"class":96},[79,448,432],{"class":100},[79,450,120],{"class":96},[79,452,454,456,458,461,463,465],{"class":81,"line":453},12,[79,455,133],{"class":92},[79,457,424],{"class":260},[79,459,460],{"class":100}," PUT ",[79,462,267],{"class":96},[79,464,432],{"class":100},[79,466,120],{"class":96},[79,468,470,472,474,477,479,481],{"class":81,"line":469},13,[79,471,133],{"class":92},[79,473,424],{"class":260},[79,475,476],{"class":100}," PATCH ",[79,478,267],{"class":96},[79,480,432],{"class":100},[79,482,120],{"class":96},[79,484,486,488,490,493,495,497],{"class":81,"line":485},14,[79,487,133],{"class":92},[79,489,424],{"class":260},[79,491,492],{"class":100}," DELETE ",[79,494,267],{"class":96},[79,496,432],{"class":100},[79,498,120],{"class":96},[79,500,502],{"class":81,"line":501},15,[79,503,127],{"emptyLinePlaceholder":126},[79,505,507,509,512,515,518,521,523],{"class":81,"line":506},16,[79,508,133],{"class":92},[79,510,511],{"class":260}," type",[79,513,514],{"class":192}," App",[79,516,517],{"class":96}," =",[79,519,520],{"class":96}," typeof",[79,522,404],{"class":100},[79,524,120],{"class":96},[52,526,528],{"id":527},"_4-add-openapi","4. Add OpenAPI",[33,530,531],{},"Install the plugin:",[69,533,535],{"className":183,"code":534,"language":185,"meta":74,"style":74},"bun add @elysiajs/openapi\n",[76,536,537],{"__ignoreMap":74},[79,538,539,541,543],{"class":81,"line":82},[79,540,193],{"class":192},[79,542,196],{"class":113},[79,544,545],{"class":113}," @elysiajs/openapi\n",[33,547,548,549,552],{},"Then plug it into your app. Use ",[76,550,551],{},"enabled: import.meta.env.DEV"," so the Swagger UI only shows up in development.",[69,554,556],{"className":220,"code":555,"language":222,"meta":74,"style":74},"// src/pages/[...slugs].ts\nimport { Elysia } from \"elysia\";\nimport { openapi } from \"@elysiajs/openapi\";\n\nconst app = new Elysia({ prefix: \"/api\" })\n  .use(\n    openapi({\n      provider: \"swagger-ui\",\n      enabled: import.meta.env.DEV,\n    }),\n  )\n  .get(\"/health\", () => ({ status: \"ok\" }))\n  .get(\"/hello\", () => ({ message: \"Hello from Elysia!\" }));\n",[76,557,558,562,582,604,608,638,648,657,673,700,709,714,752],{"__ignoreMap":74},[79,559,560],{"class":81,"line":82},[79,561,229],{"class":85},[79,563,564,566,568,570,572,574,576,578,580],{"class":81,"line":89},[79,565,93],{"class":92},[79,567,97],{"class":96},[79,569,238],{"class":100},[79,571,104],{"class":96},[79,573,107],{"class":92},[79,575,110],{"class":96},[79,577,247],{"class":113},[79,579,117],{"class":96},[79,581,120],{"class":96},[79,583,584,586,588,591,593,595,597,600,602],{"class":81,"line":123},[79,585,93],{"class":92},[79,587,97],{"class":96},[79,589,590],{"class":100}," openapi",[79,592,104],{"class":96},[79,594,107],{"class":92},[79,596,110],{"class":96},[79,598,599],{"class":113},"@elysiajs/openapi",[79,601,117],{"class":96},[79,603,120],{"class":96},[79,605,606],{"class":81,"line":130},[79,607,127],{"emptyLinePlaceholder":126},[79,609,610,612,614,616,618,620,622,624,626,628,630,632,634,636],{"class":81,"line":148},[79,611,261],{"class":260},[79,613,264],{"class":100},[79,615,267],{"class":96},[79,617,270],{"class":96},[79,619,238],{"class":139},[79,621,142],{"class":100},[79,623,277],{"class":96},[79,625,280],{"class":151},[79,627,155],{"class":96},[79,629,110],{"class":96},[79,631,287],{"class":113},[79,633,117],{"class":96},[79,635,104],{"class":96},[79,637,294],{"class":100},[79,639,640,642,645],{"class":81,"line":168},[79,641,299],{"class":96},[79,643,644],{"class":139},"use",[79,646,647],{"class":100},"(\n",[79,649,650,653,655],{"class":81,"line":389},[79,651,652],{"class":139},"    openapi",[79,654,142],{"class":100},[79,656,145],{"class":96},[79,658,659,662,664,666,669,671],{"class":81,"line":394},[79,660,661],{"class":151},"      provider",[79,663,155],{"class":96},[79,665,110],{"class":96},[79,667,668],{"class":113},"swagger-ui",[79,670,117],{"class":96},[79,672,165],{"class":96},[79,674,675,678,680,683,685,688,690,693,695,698],{"class":81,"line":414},[79,676,677],{"class":151},"      enabled",[79,679,155],{"class":96},[79,681,682],{"class":92}," import",[79,684,50],{"class":96},[79,686,687],{"class":100},"meta",[79,689,50],{"class":96},[79,691,692],{"class":100},"env",[79,694,50],{"class":96},[79,696,697],{"class":100},"DEV",[79,699,165],{"class":96},[79,701,702,705,707],{"class":81,"line":419},[79,703,704],{"class":96},"    }",[79,706,174],{"class":100},[79,708,165],{"class":96},[79,710,711],{"class":81,"line":437},[79,712,713],{"class":100},"  )\n",[79,715,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750],{"class":81,"line":453},[79,717,299],{"class":96},[79,719,302],{"class":139},[79,721,142],{"class":100},[79,723,117],{"class":96},[79,725,309],{"class":113},[79,727,117],{"class":96},[79,729,314],{"class":96},[79,731,317],{"class":96},[79,733,320],{"class":260},[79,735,323],{"class":100},[79,737,277],{"class":96},[79,739,328],{"class":151},[79,741,155],{"class":96},[79,743,110],{"class":96},[79,745,335],{"class":113},[79,747,117],{"class":96},[79,749,104],{"class":96},[79,751,342],{"class":100},[79,753,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790],{"class":81,"line":469},[79,755,299],{"class":96},[79,757,302],{"class":139},[79,759,142],{"class":100},[79,761,117],{"class":96},[79,763,355],{"class":113},[79,765,117],{"class":96},[79,767,314],{"class":96},[79,769,317],{"class":96},[79,771,320],{"class":260},[79,773,323],{"class":100},[79,775,277],{"class":96},[79,777,370],{"class":151},[79,779,155],{"class":96},[79,781,110],{"class":96},[79,783,377],{"class":113},[79,785,117],{"class":96},[79,787,104],{"class":96},[79,789,384],{"class":100},[79,791,120],{"class":96},[33,793,794],{},"Once running:",[796,797,798],"ul",{},[799,800,801,802],"li",{},"OpenAPI endpoint → ",[76,803,804],{},"/api/openapi",[52,806,808],{"id":807},"_5-set-up-the-eden-client","5. Set up the Eden client",[33,810,811],{},"Eden Treaty gives you full type safety when calling your API — no codegen needed.",[69,813,815],{"className":220,"code":814,"language":222,"meta":74,"style":74},"// src/lib/eden.ts\nimport { treaty } from \"@elysiajs/eden\";\nimport type { App } from \"../pages/[...slugs]\";\n\nexport const client = treaty\u003CApp>(import.meta.env.PUBLIC_API_URL);\n",[76,816,817,822,844,867,871],{"__ignoreMap":74},[79,818,819],{"class":81,"line":82},[79,820,821],{"class":85},"// src/lib/eden.ts\n",[79,823,824,826,828,831,833,835,837,840,842],{"class":81,"line":89},[79,825,93],{"class":92},[79,827,97],{"class":96},[79,829,830],{"class":100}," treaty",[79,832,104],{"class":96},[79,834,107],{"class":92},[79,836,110],{"class":96},[79,838,839],{"class":113},"@elysiajs/eden",[79,841,117],{"class":96},[79,843,120],{"class":96},[79,845,846,848,850,852,854,856,858,860,863,865],{"class":81,"line":123},[79,847,93],{"class":92},[79,849,511],{"class":92},[79,851,97],{"class":96},[79,853,514],{"class":100},[79,855,104],{"class":96},[79,857,107],{"class":92},[79,859,110],{"class":96},[79,861,862],{"class":113},"../pages/[...slugs]",[79,864,117],{"class":96},[79,866,120],{"class":96},[79,868,869],{"class":81,"line":130},[79,870,127],{"emptyLinePlaceholder":126},[79,872,873,875,877,880,882,884,887,890,893,895,897,899,901,903,905,907,910],{"class":81,"line":148},[79,874,133],{"class":92},[79,876,424],{"class":260},[79,878,879],{"class":100}," client ",[79,881,267],{"class":96},[79,883,830],{"class":139},[79,885,886],{"class":96},"\u003C",[79,888,889],{"class":192},"App",[79,891,892],{"class":96},">",[79,894,142],{"class":100},[79,896,93],{"class":92},[79,898,50],{"class":96},[79,900,687],{"class":100},[79,902,50],{"class":96},[79,904,692],{"class":100},[79,906,50],{"class":96},[79,908,909],{"class":100},"PUBLIC_API_URL)",[79,911,120],{"class":96},[33,913,914,915,918],{},"Set the variable in your ",[76,916,917],{},".env"," file:",[69,920,922],{"className":183,"code":921,"language":185,"meta":74,"style":74},"# .env\nPUBLIC_API_URL=localhost:4321  # in dev, this points to your local Astro server\n",[76,923,924,929],{"__ignoreMap":74},[79,925,926],{"class":81,"line":82},[79,927,928],{"class":85},"# .env\n",[79,930,931,934,936,939],{"class":81,"line":89},[79,932,933],{"class":100},"PUBLIC_API_URL",[79,935,267],{"class":96},[79,937,938],{"class":113},"localhost:4321",[79,940,941],{"class":85},"  # in dev, this points to your local Astro server\n",[52,943,945],{"id":944},"_6-call-the-api-from-an-astro-page","6. Call the API from an Astro page",[69,947,949],{"className":220,"code":948,"language":222,"meta":74,"style":74},"// src/pages/index.astro (frontmatter)\nimport { client } from \"../lib/eden\";\n\nconst { data } = await client.api.hello.get();\n\n\u003Ch1>{data?.message}\u003C/h1>\n",[76,950,951,956,978,982,1019,1023],{"__ignoreMap":74},[79,952,953],{"class":81,"line":82},[79,954,955],{"class":85},"// src/pages/index.astro (frontmatter)\n",[79,957,958,960,962,965,967,969,971,974,976],{"class":81,"line":89},[79,959,93],{"class":92},[79,961,97],{"class":96},[79,963,964],{"class":100}," client",[79,966,104],{"class":96},[79,968,107],{"class":92},[79,970,110],{"class":96},[79,972,973],{"class":113},"../lib/eden",[79,975,117],{"class":96},[79,977,120],{"class":96},[79,979,980],{"class":81,"line":123},[79,981,127],{"emptyLinePlaceholder":126},[79,983,984,986,988,991,993,995,998,1000,1002,1005,1007,1010,1012,1014,1017],{"class":81,"line":130},[79,985,261],{"class":260},[79,987,97],{"class":96},[79,989,990],{"class":100}," data ",[79,992,171],{"class":96},[79,994,517],{"class":96},[79,996,997],{"class":92}," await",[79,999,964],{"class":100},[79,1001,50],{"class":96},[79,1003,1004],{"class":100},"api",[79,1006,50],{"class":96},[79,1008,1009],{"class":100},"hello",[79,1011,50],{"class":96},[79,1013,302],{"class":139},[79,1015,1016],{"class":100},"()",[79,1018,120],{"class":96},[79,1020,1021],{"class":81,"line":148},[79,1022,127],{"emptyLinePlaceholder":126},[79,1024,1025,1027,1030,1032,1034,1037,1040,1042],{"class":81,"line":168},[79,1026,886],{"class":100},[79,1028,1029],{"class":192},"h1",[79,1031,892],{"class":100},[79,1033,277],{"class":96},[79,1035,1036],{"class":100},"data?.message",[79,1038,1039],{"class":96},"}\u003C/",[79,1041,1029],{"class":100},[79,1043,1044],{"class":96},">\n",[28,1046,1048],{"id":1047},"now-you-have-elysia-inside-astro","Now you have Elysia inside Astro!",[1050,1051,1052],"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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":74,"searchDepth":89,"depth":89,"links":1054},[1055,1056,1064],{"id":30,"depth":89,"text":31},{"id":38,"depth":89,"text":39,"children":1057},[1058,1059,1060,1061,1062,1063],{"id":54,"depth":123,"text":55},{"id":179,"depth":123,"text":180},{"id":205,"depth":123,"text":206},{"id":527,"depth":123,"text":528},{"id":807,"depth":123,"text":808},{"id":944,"depth":123,"text":945},{"id":1047,"depth":89,"text":1048},"2026-02-24T00:00:00.000Z","A quick guide to integrating Elysia as your API layer inside an Astro project","md","/content/astro-plus-elysia-in-a-hurry.png",{},{"title":10,"description":1066},"FVRkBKzCNFxyogFjRdE_z9cA87LaUWxcuWnkiLq-q1Q",[1073,1074],null,{"title":14,"path":15,"stem":16,"description":1075,"children":-1},"A straightforward guide to using Salesforce Bulk API 2.0",1771950611810]