[{"data":1,"prerenderedAt":3083},["ShallowReactive",2],{"navigation_docs_id":3,"-id-advanced-contributing-providers":160,"-id-advanced-contributing-providers-surround":3078},[4,21,47,93,119],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":20},"Mulai","i-lucide-rocket","\u002Fid\u002Fgetting-started","id\u002F1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Pendahuluan","\u002Fid\u002Fgetting-started\u002Fintroduction","id\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Instalasi","\u002Fid\u002Fgetting-started\u002Finstallation","id\u002F1.getting-started\u002F2.installation","i-lucide-download",false,{"title":22,"icon":23,"path":24,"stem":25,"children":26,"page":20},"Komponen","i-lucide-component","\u002Fid\u002Fcomponents","id\u002F2.components",[27,32,37,42],{"title":28,"path":29,"stem":30,"icon":31},"NuxtPdfKit","\u002Fid\u002Fcomponents\u002Fnuxt-pdf-kit","id\u002F2.components\u002F1.nuxt-pdf-kit","i-lucide-file-text",{"title":33,"path":34,"stem":35,"icon":36},"Props","\u002Fid\u002Fcomponents\u002Fprops","id\u002F2.components\u002F2.props","i-lucide-list",{"title":38,"path":39,"stem":40,"icon":41},"Slots","\u002Fid\u002Fcomponents\u002Fslots","id\u002F2.components\u002F3.slots","i-lucide-layout",{"title":43,"path":44,"stem":45,"icon":46},"Metode","\u002Fid\u002Fcomponents\u002Fmethods","id\u002F2.components\u002F4.methods","i-lucide-play",{"title":48,"icon":49,"path":50,"stem":51,"children":52,"page":20},"Composables","i-lucide-code","\u002Fid\u002Fcomposables","id\u002F3.composables",[53,58,63,68,73,78,83,88],{"title":54,"path":55,"stem":56,"icon":57},"Ringkasan","\u002Fid\u002Fcomposables\u002Foverview","id\u002F3.composables\u002F1.overview","i-lucide-info",{"title":59,"path":60,"stem":61,"icon":62},"usePdfKitDocument","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-document","id\u002F3.composables\u002F2.use-pdf-kit-document","i-lucide-file",{"title":64,"path":65,"stem":66,"icon":67},"usePdfKitZoom","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-zoom","id\u002F3.composables\u002F3.use-pdf-kit-zoom","i-lucide-zoom-in",{"title":69,"path":70,"stem":71,"icon":72},"usePdfKitSearch","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-search","id\u002F3.composables\u002F4.use-pdf-kit-search","i-lucide-search",{"title":74,"path":75,"stem":76,"icon":77},"usePdfKitPageNavigation","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-page-navigation","id\u002F3.composables\u002F5.use-pdf-kit-page-navigation","i-lucide-navigation",{"title":79,"path":80,"stem":81,"icon":82},"usePdfKitViewMode","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-view-mode","id\u002F3.composables\u002F6.use-pdf-kit-view-mode","i-lucide-layout-grid",{"title":84,"path":85,"stem":86,"icon":87},"usePdfKitRotation","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-rotation","id\u002F3.composables\u002F7.use-pdf-kit-rotation","i-lucide-rotate-cw",{"title":89,"path":90,"stem":91,"icon":92},"usePdfKitVirtualScroll","\u002Fid\u002Fcomposables\u002Fuse-pdf-kit-virtual-scroll","id\u002F3.composables\u002F8.use-pdf-kit-virtual-scroll","i-lucide-layers",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":20},"Configuration","i-lucide-settings","\u002Fid\u002Fconfiguration","id\u002F4.configuration",[99,104,109,114],{"title":100,"path":101,"stem":102,"icon":103},"Opsi Modul","\u002Fid\u002Fconfiguration\u002Fmodule-options","id\u002F4.configuration\u002F1.module-options","i-lucide-sliders",{"title":105,"path":106,"stem":107,"icon":108},"Opsi Toolbar","\u002Fid\u002Fconfiguration\u002Ftoolbar-options","id\u002F4.configuration\u002F2.toolbar-options","i-lucide-panel-top",{"title":110,"path":111,"stem":112,"icon":113},"Konfigurasi Per-Instance","\u002Fid\u002Fconfiguration\u002Fper-instance-config","id\u002F4.configuration\u002F3.per-instance-config","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"TypeScript","\u002Fid\u002Fconfiguration\u002Ftypescript","id\u002F4.configuration\u002F4.typescript","i-simple-icons-typescript",{"title":120,"icon":121,"path":122,"stem":123,"children":124,"page":20},"Advanced","i-lucide-sparkles","\u002Fid\u002Fadvanced","id\u002F5.advanced",[125,130,135,140,145,150,155],{"title":126,"path":127,"stem":128,"icon":129},"Contoh","\u002Fid\u002Fadvanced\u002Fexamples","id\u002F5.advanced\u002F1.examples","i-lucide-book-open",{"title":131,"path":132,"stem":133,"icon":134},"Penyedia","\u002Fid\u002Fadvanced\u002Fproviders","id\u002F5.advanced\u002F2.providers","i-heroicons-cloud",{"title":136,"path":137,"stem":138,"icon":139},"Berkontribusi","\u002Fid\u002Fadvanced\u002Fcontributing-providers","id\u002F5.advanced\u002F3.contributing-providers","i-heroicons-code-bracket",{"title":141,"path":142,"stem":143,"icon":144},"Kustomisasi Tampilan","\u002Fid\u002Fadvanced\u002Fcustom-styling","id\u002F5.advanced\u002F4.custom-styling","i-lucide-palette",{"title":146,"path":147,"stem":148,"icon":149},"Pintasan Keyboard","\u002Fid\u002Fadvanced\u002Fkeyboard-shortcuts","id\u002F5.advanced\u002F5.keyboard-shortcuts","i-lucide-keyboard",{"title":151,"path":152,"stem":153,"icon":154},"Pemecahan Masalah","\u002Fid\u002Fadvanced\u002Ftroubleshooting","id\u002F5.advanced\u002F6.troubleshooting","i-lucide-wrench",{"title":156,"path":157,"stem":158,"icon":159},"Demo","\u002Fid\u002Fadvanced\u002Fdemo","id\u002F5.advanced\u002F7.demo","i-lucide-square-dashed-bottom-code",{"id":161,"title":162,"body":163,"description":3071,"extension":3072,"links":3073,"meta":3074,"navigation":3075,"path":137,"seo":3076,"stem":138,"__hash__":3077},"docs_id\u002Fid\u002F5.advanced\u002F3.contributing-providers.md","Berkontribusi Membuat Penyedia",{"type":164,"value":165,"toc":3051},"minimark",[166,171,175,179,182,205,208,212,220,346,348,352,358,842,844,848,851,856,861,1926,1930,1937,2172,2174,2178,2184,2508,2510,2514,2520,2618,2620,2624,2675,2677,2681,2684,2754,2756,2760,2764,2767,2836,2840,2843,2901,2905,2908,2996,3000,3014,3016,3020,3044,3047],[167,168,170],"h1",{"id":169},"berkontribusi-membuat-penyedia-baru","Berkontribusi Membuat Penyedia Baru",[172,173,174],"p",{},"Ingin menambahkan dukungan untuk OneDrive, Dropbox, S3, atau layanan penyimpanan file lainnya? Panduan ini akan memandu kamu melalui prosesnya!",[176,177,54],"h2",{"id":178},"ringkasan",[172,180,181],{},"Menambahkan penyedia baru melibatkan tiga langkah utama:",[183,184,185,193,199],"ol",{},[186,187,188,192],"li",{},[189,190,191],"strong",{},"Menambahkan tipe penyedia"," ke definisi TypeScript",[186,194,195,198],{},[189,196,197],{},"Membuat logika transformasi"," di dalam composable",[186,200,201,204],{},[189,202,203],{},"Menambahkan rute server"," (jika diperlukan untuk CORS\u002Fautentikasi)",[206,207],"hr",{},[176,209,211],{"id":210},"langkah-1-tambahkan-tipe-penyedia","Langkah 1: Tambahkan Tipe Penyedia",[172,213,214,215,219],{},"Edit file ",[216,217,218],"code",{},"src\u002Fruntime\u002Ftypes.ts"," untuk menambahkan penyedia baru kamu:",[221,222,227],"pre",{"className":223,"code":224,"language":225,"meta":226,"style":226},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Sebelum\nexport type PdfProvider = \"url\" | \"gdrive\" | \"custom\";\n\n\u002F\u002F Sesudah\nexport type PdfProvider = \"url\" | \"gdrive\" | \"onedrive\" | \"custom\";\n","typescript","",[216,228,229,238,289,296,302],{"__ignoreMap":226},[230,231,234],"span",{"class":232,"line":233},"line",1,[230,235,237],{"class":236},"sHwdD","\u002F\u002F Sebelum\n",[230,239,241,245,249,253,257,260,264,267,270,272,275,277,279,281,284,286],{"class":232,"line":240},2,[230,242,244],{"class":243},"s7zQu","export",[230,246,248],{"class":247},"spNyl"," type",[230,250,252],{"class":251},"sBMFI"," PdfProvider",[230,254,256],{"class":255},"sMK4o"," =",[230,258,259],{"class":255}," \"",[230,261,263],{"class":262},"sfazB","url",[230,265,266],{"class":255},"\"",[230,268,269],{"class":255}," |",[230,271,259],{"class":255},[230,273,274],{"class":262},"gdrive",[230,276,266],{"class":255},[230,278,269],{"class":255},[230,280,259],{"class":255},[230,282,283],{"class":262},"custom",[230,285,266],{"class":255},[230,287,288],{"class":255},";\n",[230,290,292],{"class":232,"line":291},3,[230,293,295],{"emptyLinePlaceholder":294},true,"\n",[230,297,299],{"class":232,"line":298},4,[230,300,301],{"class":236},"\u002F\u002F Sesudah\n",[230,303,305,307,309,311,313,315,317,319,321,323,325,327,329,331,334,336,338,340,342,344],{"class":232,"line":304},5,[230,306,244],{"class":243},[230,308,248],{"class":247},[230,310,252],{"class":251},[230,312,256],{"class":255},[230,314,259],{"class":255},[230,316,263],{"class":262},[230,318,266],{"class":255},[230,320,269],{"class":255},[230,322,259],{"class":255},[230,324,274],{"class":262},[230,326,266],{"class":255},[230,328,269],{"class":255},[230,330,259],{"class":255},[230,332,333],{"class":262},"onedrive",[230,335,266],{"class":255},[230,337,269],{"class":255},[230,339,259],{"class":255},[230,341,283],{"class":262},[230,343,266],{"class":255},[230,345,288],{"class":255},[206,347],{},[176,349,351],{"id":350},"langkah-2-tambahkan-logika-transformasi","Langkah 2: Tambahkan Logika Transformasi",[172,353,214,354,357],{},[216,355,356],{},"src\u002Fruntime\u002Fcomposables\u002FusePdfKitProvider.ts",":",[221,359,361],{"className":223,"code":360,"language":225,"meta":226,"style":226},"\u002F**\n * Mengubah tautan berbagi OneDrive menjadi URL unduhan langsung\n *\u002F\nfunction transformOneDrive(src: string, config?: ProviderConfig): string {\n  \u002F\u002F Bersihkan ID share\n  const shareId = src.trim();\n\n  \u002F\u002F Dapatkan rute proxy dari config atau gunakan default\n  const proxyRoute = config?.baseUrl || \"\u002Fpdf-proxy\u002Fonedrive\";\n\n  return `${proxyRoute}\u002F${shareId}.pdf`;\n}\n\n\u002F\u002F Tambahkan ke fungsi utama\nexport function usePdfKitProvider(\n  provider: PdfProvider = \"url\",\n  src: string,\n  config?: ProviderConfig,\n): string {\n  if (!src) {\n    console.warn(\"[nuxt-pdf-kit] Src kosong diberikan ke usePdfKitProvider\");\n    return \"\";\n  }\n\n  switch (provider) {\n    case \"gdrive\":\n      return transformGoogleDrive(src, config);\n    case \"onedrive\": \u002F\u002F Tambahkan ini\n      return transformOneDrive(src, config);\n    case \"custom\":\n      return transformCustom(src, config);\n    case \"url\":\n    default:\n      return src;\n  }\n}\n",[216,362,363,368,373,378,419,424,451,456,462,492,497,531,537,542,548,562,583,595,607,616,636,661,672,678,683,698,713,734,750,769,782,802,815,823,832,837],{"__ignoreMap":226},[230,364,365],{"class":232,"line":233},[230,366,367],{"class":236},"\u002F**\n",[230,369,370],{"class":232,"line":240},[230,371,372],{"class":236}," * Mengubah tautan berbagi OneDrive menjadi URL unduhan langsung\n",[230,374,375],{"class":232,"line":291},[230,376,377],{"class":236}," *\u002F\n",[230,379,380,383,387,390,394,396,399,402,405,408,411,414,416],{"class":232,"line":298},[230,381,382],{"class":247},"function",[230,384,386],{"class":385},"s2Zo4"," transformOneDrive",[230,388,389],{"class":255},"(",[230,391,393],{"class":392},"sHdIc","src",[230,395,357],{"class":255},[230,397,398],{"class":251}," string",[230,400,401],{"class":255},",",[230,403,404],{"class":392}," config",[230,406,407],{"class":255},"?:",[230,409,410],{"class":251}," ProviderConfig",[230,412,413],{"class":255},"):",[230,415,398],{"class":251},[230,417,418],{"class":255}," {\n",[230,420,421],{"class":232,"line":304},[230,422,423],{"class":236},"  \u002F\u002F Bersihkan ID share\n",[230,425,427,430,434,436,439,442,445,449],{"class":232,"line":426},6,[230,428,429],{"class":247},"  const",[230,431,433],{"class":432},"sTEyZ"," shareId",[230,435,256],{"class":255},[230,437,438],{"class":432}," src",[230,440,441],{"class":255},".",[230,443,444],{"class":385},"trim",[230,446,448],{"class":447},"swJcz","()",[230,450,288],{"class":255},[230,452,454],{"class":232,"line":453},7,[230,455,295],{"emptyLinePlaceholder":294},[230,457,459],{"class":232,"line":458},8,[230,460,461],{"class":236},"  \u002F\u002F Dapatkan rute proxy dari config atau gunakan default\n",[230,463,465,467,470,472,474,477,480,483,485,488,490],{"class":232,"line":464},9,[230,466,429],{"class":247},[230,468,469],{"class":432}," proxyRoute",[230,471,256],{"class":255},[230,473,404],{"class":432},[230,475,476],{"class":255},"?.",[230,478,479],{"class":432},"baseUrl",[230,481,482],{"class":255}," ||",[230,484,259],{"class":255},[230,486,487],{"class":262},"\u002Fpdf-proxy\u002Fonedrive",[230,489,266],{"class":255},[230,491,288],{"class":255},[230,493,495],{"class":232,"line":494},10,[230,496,295],{"emptyLinePlaceholder":294},[230,498,500,503,506,509,512,515,518,521,523,526,529],{"class":232,"line":499},11,[230,501,502],{"class":243},"  return",[230,504,505],{"class":255}," `${",[230,507,508],{"class":432},"proxyRoute",[230,510,511],{"class":255},"}",[230,513,514],{"class":262},"\u002F",[230,516,517],{"class":255},"${",[230,519,520],{"class":432},"shareId",[230,522,511],{"class":255},[230,524,525],{"class":262},".pdf",[230,527,528],{"class":255},"`",[230,530,288],{"class":255},[230,532,534],{"class":232,"line":533},12,[230,535,536],{"class":255},"}\n",[230,538,540],{"class":232,"line":539},13,[230,541,295],{"emptyLinePlaceholder":294},[230,543,545],{"class":232,"line":544},14,[230,546,547],{"class":236},"\u002F\u002F Tambahkan ke fungsi utama\n",[230,549,551,553,556,559],{"class":232,"line":550},15,[230,552,244],{"class":243},[230,554,555],{"class":247}," function",[230,557,558],{"class":385}," usePdfKitProvider",[230,560,561],{"class":255},"(\n",[230,563,565,568,570,572,574,576,578,580],{"class":232,"line":564},16,[230,566,567],{"class":392},"  provider",[230,569,357],{"class":255},[230,571,252],{"class":251},[230,573,256],{"class":255},[230,575,259],{"class":255},[230,577,263],{"class":262},[230,579,266],{"class":255},[230,581,582],{"class":255},",\n",[230,584,586,589,591,593],{"class":232,"line":585},17,[230,587,588],{"class":392},"  src",[230,590,357],{"class":255},[230,592,398],{"class":251},[230,594,582],{"class":255},[230,596,598,601,603,605],{"class":232,"line":597},18,[230,599,600],{"class":392},"  config",[230,602,407],{"class":255},[230,604,410],{"class":251},[230,606,582],{"class":255},[230,608,610,612,614],{"class":232,"line":609},19,[230,611,413],{"class":255},[230,613,398],{"class":251},[230,615,418],{"class":255},[230,617,619,622,625,628,630,633],{"class":232,"line":618},20,[230,620,621],{"class":243},"  if",[230,623,624],{"class":447}," (",[230,626,627],{"class":255},"!",[230,629,393],{"class":432},[230,631,632],{"class":447},") ",[230,634,635],{"class":255},"{\n",[230,637,639,642,644,647,649,651,654,656,659],{"class":232,"line":638},21,[230,640,641],{"class":432},"    console",[230,643,441],{"class":255},[230,645,646],{"class":385},"warn",[230,648,389],{"class":447},[230,650,266],{"class":255},[230,652,653],{"class":262},"[nuxt-pdf-kit] Src kosong diberikan ke usePdfKitProvider",[230,655,266],{"class":255},[230,657,658],{"class":447},")",[230,660,288],{"class":255},[230,662,664,667,670],{"class":232,"line":663},22,[230,665,666],{"class":243},"    return",[230,668,669],{"class":255}," \"\"",[230,671,288],{"class":255},[230,673,675],{"class":232,"line":674},23,[230,676,677],{"class":255},"  }\n",[230,679,681],{"class":232,"line":680},24,[230,682,295],{"emptyLinePlaceholder":294},[230,684,686,689,691,694,696],{"class":232,"line":685},25,[230,687,688],{"class":243},"  switch",[230,690,624],{"class":447},[230,692,693],{"class":432},"provider",[230,695,632],{"class":447},[230,697,635],{"class":255},[230,699,701,704,706,708,710],{"class":232,"line":700},26,[230,702,703],{"class":243},"    case",[230,705,259],{"class":255},[230,707,274],{"class":262},[230,709,266],{"class":255},[230,711,712],{"class":255},":\n",[230,714,716,719,722,724,726,728,730,732],{"class":232,"line":715},27,[230,717,718],{"class":243},"      return",[230,720,721],{"class":385}," transformGoogleDrive",[230,723,389],{"class":447},[230,725,393],{"class":432},[230,727,401],{"class":255},[230,729,404],{"class":432},[230,731,658],{"class":447},[230,733,288],{"class":255},[230,735,737,739,741,743,745,747],{"class":232,"line":736},28,[230,738,703],{"class":243},[230,740,259],{"class":255},[230,742,333],{"class":262},[230,744,266],{"class":255},[230,746,357],{"class":255},[230,748,749],{"class":236}," \u002F\u002F Tambahkan ini\n",[230,751,753,755,757,759,761,763,765,767],{"class":232,"line":752},29,[230,754,718],{"class":243},[230,756,386],{"class":385},[230,758,389],{"class":447},[230,760,393],{"class":432},[230,762,401],{"class":255},[230,764,404],{"class":432},[230,766,658],{"class":447},[230,768,288],{"class":255},[230,770,772,774,776,778,780],{"class":232,"line":771},30,[230,773,703],{"class":243},[230,775,259],{"class":255},[230,777,283],{"class":262},[230,779,266],{"class":255},[230,781,712],{"class":255},[230,783,785,787,790,792,794,796,798,800],{"class":232,"line":784},31,[230,786,718],{"class":243},[230,788,789],{"class":385}," transformCustom",[230,791,389],{"class":447},[230,793,393],{"class":432},[230,795,401],{"class":255},[230,797,404],{"class":432},[230,799,658],{"class":447},[230,801,288],{"class":255},[230,803,805,807,809,811,813],{"class":232,"line":804},32,[230,806,703],{"class":243},[230,808,259],{"class":255},[230,810,263],{"class":262},[230,812,266],{"class":255},[230,814,712],{"class":255},[230,816,818,821],{"class":232,"line":817},33,[230,819,820],{"class":243},"    default",[230,822,712],{"class":255},[230,824,826,828,830],{"class":232,"line":825},34,[230,827,718],{"class":243},[230,829,438],{"class":432},[230,831,288],{"class":255},[230,833,835],{"class":232,"line":834},35,[230,836,677],{"class":255},[230,838,840],{"class":232,"line":839},36,[230,841,536],{"class":255},[206,843],{},[176,845,847],{"id":846},"langkah-3-buat-rute-server-opsional","Langkah 3: Buat Rute Server (Opsional)",[172,849,850],{},"Jika penyedia kamu membutuhkan penanganan CORS atau autentikasi, buatlah rute server:",[852,853,855],"h3",{"id":854},"buat-file-rute","Buat file rute",[172,857,858,357],{},[216,859,860],{},"src\u002Fruntime\u002Fserver\u002Froutes\u002Fpdf-proxy\u002Fonedrive\u002F[id].ts",[221,862,864],{"className":223,"code":863,"language":225,"meta":226,"style":226},"import {\n  createError,\n  defineEventHandler,\n  sendStream,\n  setResponseHeader,\n} from \"h3\";\n\nexport default defineEventHandler(async (event) => {\n  \u002F\u002F 1. Ekstrak ID file dari URL\n  const path = event.path || event.node.req.url || \"\";\n  const match = path.match(\u002F\\\u002Fpdf-proxy\\\u002Fonedrive\\\u002F([^\u002F]+?)(?:\\.pdf)?$\u002F);\n  const shareId = match ? match[1] : \"\";\n\n  if (!shareId) {\n    throw createError({\n      statusCode: 400,\n      statusMessage: \"ID berbagi OneDrive hilang\",\n    });\n  }\n\n  \u002F\u002F 2. Buat URL unduhan OneDrive\n  \u002F\u002F Contoh: Ubah tautan berbagi menjadi unduhan langsung\n  const oneDriveUrl = `https:\u002F\u002Fapi.onedrive.com\u002Fv1.0\u002Fshares\u002F${shareId}\u002Froot\u002Fcontent`;\n\n  try {\n    \u002F\u002F 3. Fetch dari OneDrive\n    const response = await fetch(oneDriveUrl, {\n      headers: {\n        \"User-Agent\": \"Mozilla\u002F5.0...\",\n        Accept: \"*\u002F*\",\n      },\n      redirect: \"follow\",\n    });\n\n    if (!response.ok) {\n      throw createError({\n        statusCode: response.status,\n        statusMessage: `OneDrive Error: ${response.statusText}`,\n      });\n    }\n\n    \u002F\u002F 4. Periksa Content-Type\n    const contentType = response.headers.get(\"content-type\");\n    if (contentType && !contentType.includes(\"application\u002Fpdf\")) {\n      throw createError({\n        statusCode: 502,\n        statusMessage: \"OneDrive tidak mengembalikan file PDF\",\n      });\n    }\n\n    \u002F\u002F 5. Atur header respons\n    setResponseHeader(event, \"Content-Type\", \"application\u002Fpdf\");\n    setResponseHeader(event, \"Cache-Control\", \"public, max-age=86400\");\n    setResponseHeader(event, \"Access-Control-Allow-Origin\", \"*\");\n\n    \u002F\u002F 6. Stream respons\n    if (!response.body) {\n      throw createError({\n        statusCode: 500,\n        statusMessage: \"Respons kosong dari OneDrive\",\n      });\n    }\n\n    return sendStream(event, response.body);\n  } catch (error: any) {\n    console.error(\"[nuxt-pdf-kit] OneDrive error:\", error.message);\n\n    if (error.statusCode) {\n      throw error;\n    }\n\n    throw createError({\n      statusCode: 500,\n      statusMessage: error.message || \"Internal Server Error\",\n    });\n  }\n});\n",[216,865,866,873,880,887,894,901,916,920,947,952,993,1051,1082,1086,1100,1112,1124,1140,1149,1153,1157,1162,1167,1195,1199,1206,1211,1236,1245,1266,1282,1287,1303,1311,1315,1336,1347,1364,1391,1401,1407,1412,1418,1453,1490,1501,1513,1529,1538,1543,1548,1554,1585,1616,1647,1652,1658,1678,1689,1701,1717,1726,1731,1736,1760,1783,1815,1820,1838,1847,1852,1857,1868,1879,1903,1912,1917],{"__ignoreMap":226},[230,867,868,871],{"class":232,"line":233},[230,869,870],{"class":243},"import",[230,872,418],{"class":255},[230,874,875,878],{"class":232,"line":240},[230,876,877],{"class":432},"  createError",[230,879,582],{"class":255},[230,881,882,885],{"class":232,"line":291},[230,883,884],{"class":432},"  defineEventHandler",[230,886,582],{"class":255},[230,888,889,892],{"class":232,"line":298},[230,890,891],{"class":432},"  sendStream",[230,893,582],{"class":255},[230,895,896,899],{"class":232,"line":304},[230,897,898],{"class":432},"  setResponseHeader",[230,900,582],{"class":255},[230,902,903,905,908,910,912,914],{"class":232,"line":426},[230,904,511],{"class":255},[230,906,907],{"class":243}," from",[230,909,259],{"class":255},[230,911,852],{"class":262},[230,913,266],{"class":255},[230,915,288],{"class":255},[230,917,918],{"class":232,"line":453},[230,919,295],{"emptyLinePlaceholder":294},[230,921,922,924,927,930,932,935,937,940,942,945],{"class":232,"line":458},[230,923,244],{"class":243},[230,925,926],{"class":243}," default",[230,928,929],{"class":385}," defineEventHandler",[230,931,389],{"class":432},[230,933,934],{"class":247},"async",[230,936,624],{"class":255},[230,938,939],{"class":392},"event",[230,941,658],{"class":255},[230,943,944],{"class":247}," =>",[230,946,418],{"class":255},[230,948,949],{"class":232,"line":464},[230,950,951],{"class":236},"  \u002F\u002F 1. Ekstrak ID file dari URL\n",[230,953,954,956,959,961,964,966,969,971,973,975,978,980,983,985,987,989,991],{"class":232,"line":494},[230,955,429],{"class":247},[230,957,958],{"class":432}," path",[230,960,256],{"class":255},[230,962,963],{"class":432}," event",[230,965,441],{"class":255},[230,967,968],{"class":432},"path",[230,970,482],{"class":255},[230,972,963],{"class":432},[230,974,441],{"class":255},[230,976,977],{"class":432},"node",[230,979,441],{"class":255},[230,981,982],{"class":432},"req",[230,984,441],{"class":255},[230,986,263],{"class":432},[230,988,482],{"class":255},[230,990,669],{"class":255},[230,992,288],{"class":255},[230,994,995,997,1000,1002,1004,1006,1009,1011,1013,1016,1019,1021,1023,1025,1028,1030,1033,1036,1039,1042,1045,1047,1049],{"class":232,"line":499},[230,996,429],{"class":247},[230,998,999],{"class":432}," match",[230,1001,256],{"class":255},[230,1003,958],{"class":432},[230,1005,441],{"class":255},[230,1007,1008],{"class":385},"match",[230,1010,389],{"class":447},[230,1012,514],{"class":255},[230,1014,1015],{"class":432},"\\\u002F",[230,1017,1018],{"class":262},"pdf-proxy",[230,1020,1015],{"class":432},[230,1022,333],{"class":262},[230,1024,1015],{"class":432},[230,1026,1027],{"class":255},"([^",[230,1029,514],{"class":262},[230,1031,1032],{"class":255},"]+?)(?:",[230,1034,1035],{"class":432},"\\.",[230,1037,1038],{"class":262},"pdf",[230,1040,1041],{"class":255},")?",[230,1043,1044],{"class":243},"$",[230,1046,514],{"class":255},[230,1048,658],{"class":447},[230,1050,288],{"class":255},[230,1052,1053,1055,1057,1059,1061,1064,1066,1069,1073,1076,1078,1080],{"class":232,"line":533},[230,1054,429],{"class":247},[230,1056,433],{"class":432},[230,1058,256],{"class":255},[230,1060,999],{"class":432},[230,1062,1063],{"class":255}," ?",[230,1065,999],{"class":432},[230,1067,1068],{"class":447},"[",[230,1070,1072],{"class":1071},"sbssI","1",[230,1074,1075],{"class":447},"] ",[230,1077,357],{"class":255},[230,1079,669],{"class":255},[230,1081,288],{"class":255},[230,1083,1084],{"class":232,"line":539},[230,1085,295],{"emptyLinePlaceholder":294},[230,1087,1088,1090,1092,1094,1096,1098],{"class":232,"line":544},[230,1089,621],{"class":243},[230,1091,624],{"class":447},[230,1093,627],{"class":255},[230,1095,520],{"class":432},[230,1097,632],{"class":447},[230,1099,635],{"class":255},[230,1101,1102,1105,1108,1110],{"class":232,"line":550},[230,1103,1104],{"class":243},"    throw",[230,1106,1107],{"class":385}," createError",[230,1109,389],{"class":447},[230,1111,635],{"class":255},[230,1113,1114,1117,1119,1122],{"class":232,"line":564},[230,1115,1116],{"class":447},"      statusCode",[230,1118,357],{"class":255},[230,1120,1121],{"class":1071}," 400",[230,1123,582],{"class":255},[230,1125,1126,1129,1131,1133,1136,1138],{"class":232,"line":585},[230,1127,1128],{"class":447},"      statusMessage",[230,1130,357],{"class":255},[230,1132,259],{"class":255},[230,1134,1135],{"class":262},"ID berbagi OneDrive hilang",[230,1137,266],{"class":255},[230,1139,582],{"class":255},[230,1141,1142,1145,1147],{"class":232,"line":597},[230,1143,1144],{"class":255},"    }",[230,1146,658],{"class":447},[230,1148,288],{"class":255},[230,1150,1151],{"class":232,"line":609},[230,1152,677],{"class":255},[230,1154,1155],{"class":232,"line":618},[230,1156,295],{"emptyLinePlaceholder":294},[230,1158,1159],{"class":232,"line":638},[230,1160,1161],{"class":236},"  \u002F\u002F 2. Buat URL unduhan OneDrive\n",[230,1163,1164],{"class":232,"line":663},[230,1165,1166],{"class":236},"  \u002F\u002F Contoh: Ubah tautan berbagi menjadi unduhan langsung\n",[230,1168,1169,1171,1174,1176,1179,1182,1184,1186,1188,1191,1193],{"class":232,"line":674},[230,1170,429],{"class":247},[230,1172,1173],{"class":432}," oneDriveUrl",[230,1175,256],{"class":255},[230,1177,1178],{"class":255}," `",[230,1180,1181],{"class":262},"https:\u002F\u002Fapi.onedrive.com\u002Fv1.0\u002Fshares\u002F",[230,1183,517],{"class":255},[230,1185,520],{"class":432},[230,1187,511],{"class":255},[230,1189,1190],{"class":262},"\u002Froot\u002Fcontent",[230,1192,528],{"class":255},[230,1194,288],{"class":255},[230,1196,1197],{"class":232,"line":680},[230,1198,295],{"emptyLinePlaceholder":294},[230,1200,1201,1204],{"class":232,"line":685},[230,1202,1203],{"class":243},"  try",[230,1205,418],{"class":255},[230,1207,1208],{"class":232,"line":700},[230,1209,1210],{"class":236},"    \u002F\u002F 3. Fetch dari OneDrive\n",[230,1212,1213,1216,1219,1221,1224,1227,1229,1232,1234],{"class":232,"line":715},[230,1214,1215],{"class":247},"    const",[230,1217,1218],{"class":432}," response",[230,1220,256],{"class":255},[230,1222,1223],{"class":243}," await",[230,1225,1226],{"class":385}," fetch",[230,1228,389],{"class":447},[230,1230,1231],{"class":432},"oneDriveUrl",[230,1233,401],{"class":255},[230,1235,418],{"class":255},[230,1237,1238,1241,1243],{"class":232,"line":736},[230,1239,1240],{"class":447},"      headers",[230,1242,357],{"class":255},[230,1244,418],{"class":255},[230,1246,1247,1250,1253,1255,1257,1259,1262,1264],{"class":232,"line":752},[230,1248,1249],{"class":255},"        \"",[230,1251,1252],{"class":447},"User-Agent",[230,1254,266],{"class":255},[230,1256,357],{"class":255},[230,1258,259],{"class":255},[230,1260,1261],{"class":262},"Mozilla\u002F5.0...",[230,1263,266],{"class":255},[230,1265,582],{"class":255},[230,1267,1268,1271,1273,1275,1278,1280],{"class":232,"line":771},[230,1269,1270],{"class":447},"        Accept",[230,1272,357],{"class":255},[230,1274,259],{"class":255},[230,1276,1277],{"class":262},"*\u002F*",[230,1279,266],{"class":255},[230,1281,582],{"class":255},[230,1283,1284],{"class":232,"line":784},[230,1285,1286],{"class":255},"      },\n",[230,1288,1289,1292,1294,1296,1299,1301],{"class":232,"line":804},[230,1290,1291],{"class":447},"      redirect",[230,1293,357],{"class":255},[230,1295,259],{"class":255},[230,1297,1298],{"class":262},"follow",[230,1300,266],{"class":255},[230,1302,582],{"class":255},[230,1304,1305,1307,1309],{"class":232,"line":817},[230,1306,1144],{"class":255},[230,1308,658],{"class":447},[230,1310,288],{"class":255},[230,1312,1313],{"class":232,"line":825},[230,1314,295],{"emptyLinePlaceholder":294},[230,1316,1317,1320,1322,1324,1327,1329,1332,1334],{"class":232,"line":834},[230,1318,1319],{"class":243},"    if",[230,1321,624],{"class":447},[230,1323,627],{"class":255},[230,1325,1326],{"class":432},"response",[230,1328,441],{"class":255},[230,1330,1331],{"class":432},"ok",[230,1333,632],{"class":447},[230,1335,635],{"class":255},[230,1337,1338,1341,1343,1345],{"class":232,"line":839},[230,1339,1340],{"class":243},"      throw",[230,1342,1107],{"class":385},[230,1344,389],{"class":447},[230,1346,635],{"class":255},[230,1348,1350,1353,1355,1357,1359,1362],{"class":232,"line":1349},37,[230,1351,1352],{"class":447},"        statusCode",[230,1354,357],{"class":255},[230,1356,1218],{"class":432},[230,1358,441],{"class":255},[230,1360,1361],{"class":432},"status",[230,1363,582],{"class":255},[230,1365,1367,1370,1372,1374,1377,1379,1381,1383,1386,1389],{"class":232,"line":1366},38,[230,1368,1369],{"class":447},"        statusMessage",[230,1371,357],{"class":255},[230,1373,1178],{"class":255},[230,1375,1376],{"class":262},"OneDrive Error: ",[230,1378,517],{"class":255},[230,1380,1326],{"class":432},[230,1382,441],{"class":255},[230,1384,1385],{"class":432},"statusText",[230,1387,1388],{"class":255},"}`",[230,1390,582],{"class":255},[230,1392,1394,1397,1399],{"class":232,"line":1393},39,[230,1395,1396],{"class":255},"      }",[230,1398,658],{"class":447},[230,1400,288],{"class":255},[230,1402,1404],{"class":232,"line":1403},40,[230,1405,1406],{"class":255},"    }\n",[230,1408,1410],{"class":232,"line":1409},41,[230,1411,295],{"emptyLinePlaceholder":294},[230,1413,1415],{"class":232,"line":1414},42,[230,1416,1417],{"class":236},"    \u002F\u002F 4. Periksa Content-Type\n",[230,1419,1421,1423,1426,1428,1430,1432,1435,1437,1440,1442,1444,1447,1449,1451],{"class":232,"line":1420},43,[230,1422,1215],{"class":247},[230,1424,1425],{"class":432}," contentType",[230,1427,256],{"class":255},[230,1429,1218],{"class":432},[230,1431,441],{"class":255},[230,1433,1434],{"class":432},"headers",[230,1436,441],{"class":255},[230,1438,1439],{"class":385},"get",[230,1441,389],{"class":447},[230,1443,266],{"class":255},[230,1445,1446],{"class":262},"content-type",[230,1448,266],{"class":255},[230,1450,658],{"class":447},[230,1452,288],{"class":255},[230,1454,1456,1458,1460,1463,1466,1469,1471,1473,1476,1478,1480,1483,1485,1488],{"class":232,"line":1455},44,[230,1457,1319],{"class":243},[230,1459,624],{"class":447},[230,1461,1462],{"class":432},"contentType",[230,1464,1465],{"class":255}," &&",[230,1467,1468],{"class":255}," !",[230,1470,1462],{"class":432},[230,1472,441],{"class":255},[230,1474,1475],{"class":385},"includes",[230,1477,389],{"class":447},[230,1479,266],{"class":255},[230,1481,1482],{"class":262},"application\u002Fpdf",[230,1484,266],{"class":255},[230,1486,1487],{"class":447},")) ",[230,1489,635],{"class":255},[230,1491,1493,1495,1497,1499],{"class":232,"line":1492},45,[230,1494,1340],{"class":243},[230,1496,1107],{"class":385},[230,1498,389],{"class":447},[230,1500,635],{"class":255},[230,1502,1504,1506,1508,1511],{"class":232,"line":1503},46,[230,1505,1352],{"class":447},[230,1507,357],{"class":255},[230,1509,1510],{"class":1071}," 502",[230,1512,582],{"class":255},[230,1514,1516,1518,1520,1522,1525,1527],{"class":232,"line":1515},47,[230,1517,1369],{"class":447},[230,1519,357],{"class":255},[230,1521,259],{"class":255},[230,1523,1524],{"class":262},"OneDrive tidak mengembalikan file PDF",[230,1526,266],{"class":255},[230,1528,582],{"class":255},[230,1530,1532,1534,1536],{"class":232,"line":1531},48,[230,1533,1396],{"class":255},[230,1535,658],{"class":447},[230,1537,288],{"class":255},[230,1539,1541],{"class":232,"line":1540},49,[230,1542,1406],{"class":255},[230,1544,1546],{"class":232,"line":1545},50,[230,1547,295],{"emptyLinePlaceholder":294},[230,1549,1551],{"class":232,"line":1550},51,[230,1552,1553],{"class":236},"    \u002F\u002F 5. Atur header respons\n",[230,1555,1557,1560,1562,1564,1566,1568,1571,1573,1575,1577,1579,1581,1583],{"class":232,"line":1556},52,[230,1558,1559],{"class":385},"    setResponseHeader",[230,1561,389],{"class":447},[230,1563,939],{"class":432},[230,1565,401],{"class":255},[230,1567,259],{"class":255},[230,1569,1570],{"class":262},"Content-Type",[230,1572,266],{"class":255},[230,1574,401],{"class":255},[230,1576,259],{"class":255},[230,1578,1482],{"class":262},[230,1580,266],{"class":255},[230,1582,658],{"class":447},[230,1584,288],{"class":255},[230,1586,1588,1590,1592,1594,1596,1598,1601,1603,1605,1607,1610,1612,1614],{"class":232,"line":1587},53,[230,1589,1559],{"class":385},[230,1591,389],{"class":447},[230,1593,939],{"class":432},[230,1595,401],{"class":255},[230,1597,259],{"class":255},[230,1599,1600],{"class":262},"Cache-Control",[230,1602,266],{"class":255},[230,1604,401],{"class":255},[230,1606,259],{"class":255},[230,1608,1609],{"class":262},"public, max-age=86400",[230,1611,266],{"class":255},[230,1613,658],{"class":447},[230,1615,288],{"class":255},[230,1617,1619,1621,1623,1625,1627,1629,1632,1634,1636,1638,1641,1643,1645],{"class":232,"line":1618},54,[230,1620,1559],{"class":385},[230,1622,389],{"class":447},[230,1624,939],{"class":432},[230,1626,401],{"class":255},[230,1628,259],{"class":255},[230,1630,1631],{"class":262},"Access-Control-Allow-Origin",[230,1633,266],{"class":255},[230,1635,401],{"class":255},[230,1637,259],{"class":255},[230,1639,1640],{"class":262},"*",[230,1642,266],{"class":255},[230,1644,658],{"class":447},[230,1646,288],{"class":255},[230,1648,1650],{"class":232,"line":1649},55,[230,1651,295],{"emptyLinePlaceholder":294},[230,1653,1655],{"class":232,"line":1654},56,[230,1656,1657],{"class":236},"    \u002F\u002F 6. Stream respons\n",[230,1659,1661,1663,1665,1667,1669,1671,1674,1676],{"class":232,"line":1660},57,[230,1662,1319],{"class":243},[230,1664,624],{"class":447},[230,1666,627],{"class":255},[230,1668,1326],{"class":432},[230,1670,441],{"class":255},[230,1672,1673],{"class":432},"body",[230,1675,632],{"class":447},[230,1677,635],{"class":255},[230,1679,1681,1683,1685,1687],{"class":232,"line":1680},58,[230,1682,1340],{"class":243},[230,1684,1107],{"class":385},[230,1686,389],{"class":447},[230,1688,635],{"class":255},[230,1690,1692,1694,1696,1699],{"class":232,"line":1691},59,[230,1693,1352],{"class":447},[230,1695,357],{"class":255},[230,1697,1698],{"class":1071}," 500",[230,1700,582],{"class":255},[230,1702,1704,1706,1708,1710,1713,1715],{"class":232,"line":1703},60,[230,1705,1369],{"class":447},[230,1707,357],{"class":255},[230,1709,259],{"class":255},[230,1711,1712],{"class":262},"Respons kosong dari OneDrive",[230,1714,266],{"class":255},[230,1716,582],{"class":255},[230,1718,1720,1722,1724],{"class":232,"line":1719},61,[230,1721,1396],{"class":255},[230,1723,658],{"class":447},[230,1725,288],{"class":255},[230,1727,1729],{"class":232,"line":1728},62,[230,1730,1406],{"class":255},[230,1732,1734],{"class":232,"line":1733},63,[230,1735,295],{"emptyLinePlaceholder":294},[230,1737,1739,1741,1744,1746,1748,1750,1752,1754,1756,1758],{"class":232,"line":1738},64,[230,1740,666],{"class":243},[230,1742,1743],{"class":385}," sendStream",[230,1745,389],{"class":447},[230,1747,939],{"class":432},[230,1749,401],{"class":255},[230,1751,1218],{"class":432},[230,1753,441],{"class":255},[230,1755,1673],{"class":432},[230,1757,658],{"class":447},[230,1759,288],{"class":255},[230,1761,1763,1766,1769,1771,1774,1776,1779,1781],{"class":232,"line":1762},65,[230,1764,1765],{"class":255},"  }",[230,1767,1768],{"class":243}," catch",[230,1770,624],{"class":255},[230,1772,1773],{"class":392},"error",[230,1775,357],{"class":255},[230,1777,1778],{"class":251}," any",[230,1780,658],{"class":255},[230,1782,418],{"class":255},[230,1784,1786,1788,1790,1792,1794,1796,1799,1801,1803,1806,1808,1811,1813],{"class":232,"line":1785},66,[230,1787,641],{"class":432},[230,1789,441],{"class":255},[230,1791,1773],{"class":385},[230,1793,389],{"class":447},[230,1795,266],{"class":255},[230,1797,1798],{"class":262},"[nuxt-pdf-kit] OneDrive error:",[230,1800,266],{"class":255},[230,1802,401],{"class":255},[230,1804,1805],{"class":432}," error",[230,1807,441],{"class":255},[230,1809,1810],{"class":432},"message",[230,1812,658],{"class":447},[230,1814,288],{"class":255},[230,1816,1818],{"class":232,"line":1817},67,[230,1819,295],{"emptyLinePlaceholder":294},[230,1821,1823,1825,1827,1829,1831,1834,1836],{"class":232,"line":1822},68,[230,1824,1319],{"class":243},[230,1826,624],{"class":447},[230,1828,1773],{"class":432},[230,1830,441],{"class":255},[230,1832,1833],{"class":432},"statusCode",[230,1835,632],{"class":447},[230,1837,635],{"class":255},[230,1839,1841,1843,1845],{"class":232,"line":1840},69,[230,1842,1340],{"class":243},[230,1844,1805],{"class":432},[230,1846,288],{"class":255},[230,1848,1850],{"class":232,"line":1849},70,[230,1851,1406],{"class":255},[230,1853,1855],{"class":232,"line":1854},71,[230,1856,295],{"emptyLinePlaceholder":294},[230,1858,1860,1862,1864,1866],{"class":232,"line":1859},72,[230,1861,1104],{"class":243},[230,1863,1107],{"class":385},[230,1865,389],{"class":447},[230,1867,635],{"class":255},[230,1869,1871,1873,1875,1877],{"class":232,"line":1870},73,[230,1872,1116],{"class":447},[230,1874,357],{"class":255},[230,1876,1698],{"class":1071},[230,1878,582],{"class":255},[230,1880,1882,1884,1886,1888,1890,1892,1894,1896,1899,1901],{"class":232,"line":1881},74,[230,1883,1128],{"class":447},[230,1885,357],{"class":255},[230,1887,1805],{"class":432},[230,1889,441],{"class":255},[230,1891,1810],{"class":432},[230,1893,482],{"class":255},[230,1895,259],{"class":255},[230,1897,1898],{"class":262},"Internal Server Error",[230,1900,266],{"class":255},[230,1902,582],{"class":255},[230,1904,1906,1908,1910],{"class":232,"line":1905},75,[230,1907,1144],{"class":255},[230,1909,658],{"class":447},[230,1911,288],{"class":255},[230,1913,1915],{"class":232,"line":1914},76,[230,1916,677],{"class":255},[230,1918,1920,1922,1924],{"class":232,"line":1919},77,[230,1921,511],{"class":255},[230,1923,658],{"class":432},[230,1925,288],{"class":255},[852,1927,1929],{"id":1928},"daftarkan-rute","Daftarkan rute",[172,1931,1932,1933,1936],{},"Edit ",[216,1934,1935],{},"src\u002Fmodule.ts"," untuk mendaftarkan rute server kamu:",[221,1938,1940],{"className":223,"code":1939,"language":225,"meta":226,"style":226},"\u002F\u002F Tambahkan rute server untuk penyedia\nnuxt.hook(\"nitro:config\", (nitroConfig) => {\n  nitroConfig.handlers = nitroConfig.handlers || [];\n\n  \u002F\u002F Rute proxy Google Drive\n  nitroConfig.handlers.push({\n    route: \"\u002Fpdf-proxy\u002Fgdrive\u002F**\",\n    handler: resolver.resolve(\".\u002Fruntime\u002Fserver\u002Froutes\u002Fpdf-proxy\u002Fgdrive\u002F[id]\"),\n  });\n\n  \u002F\u002F Rute proxy OneDrive (TAMBAHKAN INI)\n  nitroConfig.handlers.push({\n    route: \"\u002Fpdf-proxy\u002Fonedrive\u002F**\",\n    handler: resolver.resolve(\n      \".\u002Fruntime\u002Fserver\u002Froutes\u002Fpdf-proxy\u002Fonedrive\u002F[id]\",\n    ),\n  });\n});\n",[216,1941,1942,1947,1979,2005,2009,2014,2031,2047,2075,2083,2087,2092,2108,2123,2137,2149,2156,2164],{"__ignoreMap":226},[230,1943,1944],{"class":232,"line":233},[230,1945,1946],{"class":236},"\u002F\u002F Tambahkan rute server untuk penyedia\n",[230,1948,1949,1952,1954,1957,1959,1961,1964,1966,1968,1970,1973,1975,1977],{"class":232,"line":240},[230,1950,1951],{"class":432},"nuxt",[230,1953,441],{"class":255},[230,1955,1956],{"class":385},"hook",[230,1958,389],{"class":432},[230,1960,266],{"class":255},[230,1962,1963],{"class":262},"nitro:config",[230,1965,266],{"class":255},[230,1967,401],{"class":255},[230,1969,624],{"class":255},[230,1971,1972],{"class":392},"nitroConfig",[230,1974,658],{"class":255},[230,1976,944],{"class":247},[230,1978,418],{"class":255},[230,1980,1981,1984,1986,1989,1991,1994,1996,1998,2000,2003],{"class":232,"line":291},[230,1982,1983],{"class":432},"  nitroConfig",[230,1985,441],{"class":255},[230,1987,1988],{"class":432},"handlers",[230,1990,256],{"class":255},[230,1992,1993],{"class":432}," nitroConfig",[230,1995,441],{"class":255},[230,1997,1988],{"class":432},[230,1999,482],{"class":255},[230,2001,2002],{"class":447}," []",[230,2004,288],{"class":255},[230,2006,2007],{"class":232,"line":298},[230,2008,295],{"emptyLinePlaceholder":294},[230,2010,2011],{"class":232,"line":304},[230,2012,2013],{"class":236},"  \u002F\u002F Rute proxy Google Drive\n",[230,2015,2016,2018,2020,2022,2024,2027,2029],{"class":232,"line":426},[230,2017,1983],{"class":432},[230,2019,441],{"class":255},[230,2021,1988],{"class":432},[230,2023,441],{"class":255},[230,2025,2026],{"class":385},"push",[230,2028,389],{"class":447},[230,2030,635],{"class":255},[230,2032,2033,2036,2038,2040,2043,2045],{"class":232,"line":453},[230,2034,2035],{"class":447},"    route",[230,2037,357],{"class":255},[230,2039,259],{"class":255},[230,2041,2042],{"class":262},"\u002Fpdf-proxy\u002Fgdrive\u002F**",[230,2044,266],{"class":255},[230,2046,582],{"class":255},[230,2048,2049,2052,2054,2057,2059,2062,2064,2066,2069,2071,2073],{"class":232,"line":458},[230,2050,2051],{"class":447},"    handler",[230,2053,357],{"class":255},[230,2055,2056],{"class":432}," resolver",[230,2058,441],{"class":255},[230,2060,2061],{"class":385},"resolve",[230,2063,389],{"class":447},[230,2065,266],{"class":255},[230,2067,2068],{"class":262},".\u002Fruntime\u002Fserver\u002Froutes\u002Fpdf-proxy\u002Fgdrive\u002F[id]",[230,2070,266],{"class":255},[230,2072,658],{"class":447},[230,2074,582],{"class":255},[230,2076,2077,2079,2081],{"class":232,"line":464},[230,2078,1765],{"class":255},[230,2080,658],{"class":447},[230,2082,288],{"class":255},[230,2084,2085],{"class":232,"line":494},[230,2086,295],{"emptyLinePlaceholder":294},[230,2088,2089],{"class":232,"line":499},[230,2090,2091],{"class":236},"  \u002F\u002F Rute proxy OneDrive (TAMBAHKAN INI)\n",[230,2093,2094,2096,2098,2100,2102,2104,2106],{"class":232,"line":533},[230,2095,1983],{"class":432},[230,2097,441],{"class":255},[230,2099,1988],{"class":432},[230,2101,441],{"class":255},[230,2103,2026],{"class":385},[230,2105,389],{"class":447},[230,2107,635],{"class":255},[230,2109,2110,2112,2114,2116,2119,2121],{"class":232,"line":539},[230,2111,2035],{"class":447},[230,2113,357],{"class":255},[230,2115,259],{"class":255},[230,2117,2118],{"class":262},"\u002Fpdf-proxy\u002Fonedrive\u002F**",[230,2120,266],{"class":255},[230,2122,582],{"class":255},[230,2124,2125,2127,2129,2131,2133,2135],{"class":232,"line":544},[230,2126,2051],{"class":447},[230,2128,357],{"class":255},[230,2130,2056],{"class":432},[230,2132,441],{"class":255},[230,2134,2061],{"class":385},[230,2136,561],{"class":447},[230,2138,2139,2142,2145,2147],{"class":232,"line":550},[230,2140,2141],{"class":255},"      \"",[230,2143,2144],{"class":262},".\u002Fruntime\u002Fserver\u002Froutes\u002Fpdf-proxy\u002Fonedrive\u002F[id]",[230,2146,266],{"class":255},[230,2148,582],{"class":255},[230,2150,2151,2154],{"class":232,"line":564},[230,2152,2153],{"class":447},"    )",[230,2155,582],{"class":255},[230,2157,2158,2160,2162],{"class":232,"line":585},[230,2159,1765],{"class":255},[230,2161,658],{"class":447},[230,2163,288],{"class":255},[230,2165,2166,2168,2170],{"class":232,"line":597},[230,2167,511],{"class":255},[230,2169,658],{"class":432},[230,2171,288],{"class":255},[206,2173],{},[176,2175,2177],{"id":2176},"langkah-4-tambahkan-pengujian-tests","Langkah 4: Tambahkan Pengujian (Tests)",[172,2179,2180,2181,357],{},"Buat file pengujian ",[216,2182,2183],{},"test\u002Fproviders.test.ts",[221,2185,2187],{"className":223,"code":2186,"language":225,"meta":226,"style":226},"import { describe, it, expect } from \"vitest\";\nimport { usePdfKitProvider } from \"..\u002Fsrc\u002Fruntime\u002Fcomposables\u002FusePdfKitProvider\";\n\ndescribe(\"usePdfKitProvider\", () => {\n  it(\"mengubah ID berbagi OneDrive dengan benar\", () => {\n    const result = usePdfKitProvider(\n      \"onedrive\",\n      \"u!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY\",\n    );\n\n    expect(result).toBe(\n      \"\u002Fpdf-proxy\u002Fonedrive\u002Fu!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY.pdf\",\n    );\n  });\n\n  it(\"menggunakan baseUrl kustom untuk OneDrive\", () => {\n    const result = usePdfKitProvider(\"onedrive\", \"share-123\", {\n      baseUrl: \"\u002Fcustom-proxy\",\n    });\n\n    expect(result).toBe(\"\u002Fcustom-proxy\u002Fshare-123.pdf\");\n  });\n});\n",[216,2188,2189,2223,2244,2248,2271,2293,2306,2316,2327,2333,2337,2356,2367,2373,2381,2385,2406,2437,2453,2461,2465,2492,2500],{"__ignoreMap":226},[230,2190,2191,2193,2196,2199,2201,2204,2206,2209,2212,2214,2216,2219,2221],{"class":232,"line":233},[230,2192,870],{"class":243},[230,2194,2195],{"class":255}," {",[230,2197,2198],{"class":432}," describe",[230,2200,401],{"class":255},[230,2202,2203],{"class":432}," it",[230,2205,401],{"class":255},[230,2207,2208],{"class":432}," expect",[230,2210,2211],{"class":255}," }",[230,2213,907],{"class":243},[230,2215,259],{"class":255},[230,2217,2218],{"class":262},"vitest",[230,2220,266],{"class":255},[230,2222,288],{"class":255},[230,2224,2225,2227,2229,2231,2233,2235,2237,2240,2242],{"class":232,"line":240},[230,2226,870],{"class":243},[230,2228,2195],{"class":255},[230,2230,558],{"class":432},[230,2232,2211],{"class":255},[230,2234,907],{"class":243},[230,2236,259],{"class":255},[230,2238,2239],{"class":262},"..\u002Fsrc\u002Fruntime\u002Fcomposables\u002FusePdfKitProvider",[230,2241,266],{"class":255},[230,2243,288],{"class":255},[230,2245,2246],{"class":232,"line":291},[230,2247,295],{"emptyLinePlaceholder":294},[230,2249,2250,2253,2255,2257,2260,2262,2264,2267,2269],{"class":232,"line":298},[230,2251,2252],{"class":385},"describe",[230,2254,389],{"class":432},[230,2256,266],{"class":255},[230,2258,2259],{"class":262},"usePdfKitProvider",[230,2261,266],{"class":255},[230,2263,401],{"class":255},[230,2265,2266],{"class":255}," ()",[230,2268,944],{"class":247},[230,2270,418],{"class":255},[230,2272,2273,2276,2278,2280,2283,2285,2287,2289,2291],{"class":232,"line":304},[230,2274,2275],{"class":385},"  it",[230,2277,389],{"class":447},[230,2279,266],{"class":255},[230,2281,2282],{"class":262},"mengubah ID berbagi OneDrive dengan benar",[230,2284,266],{"class":255},[230,2286,401],{"class":255},[230,2288,2266],{"class":255},[230,2290,944],{"class":247},[230,2292,418],{"class":255},[230,2294,2295,2297,2300,2302,2304],{"class":232,"line":426},[230,2296,1215],{"class":247},[230,2298,2299],{"class":432}," result",[230,2301,256],{"class":255},[230,2303,558],{"class":385},[230,2305,561],{"class":447},[230,2307,2308,2310,2312,2314],{"class":232,"line":453},[230,2309,2141],{"class":255},[230,2311,333],{"class":262},[230,2313,266],{"class":255},[230,2315,582],{"class":255},[230,2317,2318,2320,2323,2325],{"class":232,"line":458},[230,2319,2141],{"class":255},[230,2321,2322],{"class":262},"u!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY",[230,2324,266],{"class":255},[230,2326,582],{"class":255},[230,2328,2329,2331],{"class":232,"line":464},[230,2330,2153],{"class":447},[230,2332,288],{"class":255},[230,2334,2335],{"class":232,"line":494},[230,2336,295],{"emptyLinePlaceholder":294},[230,2338,2339,2342,2344,2347,2349,2351,2354],{"class":232,"line":499},[230,2340,2341],{"class":385},"    expect",[230,2343,389],{"class":447},[230,2345,2346],{"class":432},"result",[230,2348,658],{"class":447},[230,2350,441],{"class":255},[230,2352,2353],{"class":385},"toBe",[230,2355,561],{"class":447},[230,2357,2358,2360,2363,2365],{"class":232,"line":533},[230,2359,2141],{"class":255},[230,2361,2362],{"class":262},"\u002Fpdf-proxy\u002Fonedrive\u002Fu!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY.pdf",[230,2364,266],{"class":255},[230,2366,582],{"class":255},[230,2368,2369,2371],{"class":232,"line":539},[230,2370,2153],{"class":447},[230,2372,288],{"class":255},[230,2374,2375,2377,2379],{"class":232,"line":544},[230,2376,1765],{"class":255},[230,2378,658],{"class":447},[230,2380,288],{"class":255},[230,2382,2383],{"class":232,"line":550},[230,2384,295],{"emptyLinePlaceholder":294},[230,2386,2387,2389,2391,2393,2396,2398,2400,2402,2404],{"class":232,"line":564},[230,2388,2275],{"class":385},[230,2390,389],{"class":447},[230,2392,266],{"class":255},[230,2394,2395],{"class":262},"menggunakan baseUrl kustom untuk OneDrive",[230,2397,266],{"class":255},[230,2399,401],{"class":255},[230,2401,2266],{"class":255},[230,2403,944],{"class":247},[230,2405,418],{"class":255},[230,2407,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2431,2433,2435],{"class":232,"line":585},[230,2409,1215],{"class":247},[230,2411,2299],{"class":432},[230,2413,256],{"class":255},[230,2415,558],{"class":385},[230,2417,389],{"class":447},[230,2419,266],{"class":255},[230,2421,333],{"class":262},[230,2423,266],{"class":255},[230,2425,401],{"class":255},[230,2427,259],{"class":255},[230,2429,2430],{"class":262},"share-123",[230,2432,266],{"class":255},[230,2434,401],{"class":255},[230,2436,418],{"class":255},[230,2438,2439,2442,2444,2446,2449,2451],{"class":232,"line":597},[230,2440,2441],{"class":447},"      baseUrl",[230,2443,357],{"class":255},[230,2445,259],{"class":255},[230,2447,2448],{"class":262},"\u002Fcustom-proxy",[230,2450,266],{"class":255},[230,2452,582],{"class":255},[230,2454,2455,2457,2459],{"class":232,"line":609},[230,2456,1144],{"class":255},[230,2458,658],{"class":447},[230,2460,288],{"class":255},[230,2462,2463],{"class":232,"line":618},[230,2464,295],{"emptyLinePlaceholder":294},[230,2466,2467,2469,2471,2473,2475,2477,2479,2481,2483,2486,2488,2490],{"class":232,"line":638},[230,2468,2341],{"class":385},[230,2470,389],{"class":447},[230,2472,2346],{"class":432},[230,2474,658],{"class":447},[230,2476,441],{"class":255},[230,2478,2353],{"class":385},[230,2480,389],{"class":447},[230,2482,266],{"class":255},[230,2484,2485],{"class":262},"\u002Fcustom-proxy\u002Fshare-123.pdf",[230,2487,266],{"class":255},[230,2489,658],{"class":447},[230,2491,288],{"class":255},[230,2493,2494,2496,2498],{"class":232,"line":663},[230,2495,1765],{"class":255},[230,2497,658],{"class":447},[230,2499,288],{"class":255},[230,2501,2502,2504,2506],{"class":232,"line":674},[230,2503,511],{"class":255},[230,2505,658],{"class":432},[230,2507,288],{"class":255},[206,2509],{},[176,2511,2513],{"id":2512},"langkah-5-tambahkan-dokumentasi","Langkah 5: Tambahkan Dokumentasi",[172,2515,2516,2517,357],{},"Buat dokumentasi untuk penyedia kamu di ",[216,2518,2519],{},"docs\u002Fcontent\u002Fen\u002F5.advanced\u002F2.providers.md",[221,2521,2525],{"className":2522,"code":2523,"language":2524,"meta":226,"style":226},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","### Penyedia OneDrive\n\nMemuat PDF dari tautan berbagi OneDrive.\n\n\\`\\`\\`vue\n\u003Ctemplate>\n\u003CNuxtPdfKit\n    provider=\"onedrive\"\n    src=\"u!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY\"\n  \u002F>\n\u003C\u002Ftemplate>\n\\`\\`\\`\n\n**Cara mendapatkan ID Berbagi OneDrive:**\n\n1. Klik kanan file kamu di OneDrive\n2. Klik \"Share\" (Bagikan) → \"Copy link\" (Salin tautan)\n3. Ekstrak ID berbagi dari URL tersebut\n4. Gunakan ID tersebut sebagai prop `src`\n","markdown",[216,2526,2527,2532,2536,2541,2545,2550,2555,2560,2565,2570,2575,2580,2585,2589,2594,2598,2603,2608,2613],{"__ignoreMap":226},[230,2528,2529],{"class":232,"line":233},[230,2530,2531],{},"### Penyedia OneDrive\n",[230,2533,2534],{"class":232,"line":240},[230,2535,295],{"emptyLinePlaceholder":294},[230,2537,2538],{"class":232,"line":291},[230,2539,2540],{},"Memuat PDF dari tautan berbagi OneDrive.\n",[230,2542,2543],{"class":232,"line":298},[230,2544,295],{"emptyLinePlaceholder":294},[230,2546,2547],{"class":232,"line":304},[230,2548,2549],{},"\\`\\`\\`vue\n",[230,2551,2552],{"class":232,"line":426},[230,2553,2554],{},"\u003Ctemplate>\n",[230,2556,2557],{"class":232,"line":453},[230,2558,2559],{},"\u003CNuxtPdfKit\n",[230,2561,2562],{"class":232,"line":458},[230,2563,2564],{},"    provider=\"onedrive\"\n",[230,2566,2567],{"class":232,"line":464},[230,2568,2569],{},"    src=\"u!aHR0cHM6Ly8xZHJ2Lm1zL2IvcyFBcXRhYmNkZWY\"\n",[230,2571,2572],{"class":232,"line":494},[230,2573,2574],{},"  \u002F>\n",[230,2576,2577],{"class":232,"line":499},[230,2578,2579],{},"\u003C\u002Ftemplate>\n",[230,2581,2582],{"class":232,"line":533},[230,2583,2584],{},"\\`\\`\\`\n",[230,2586,2587],{"class":232,"line":539},[230,2588,295],{"emptyLinePlaceholder":294},[230,2590,2591],{"class":232,"line":544},[230,2592,2593],{},"**Cara mendapatkan ID Berbagi OneDrive:**\n",[230,2595,2596],{"class":232,"line":550},[230,2597,295],{"emptyLinePlaceholder":294},[230,2599,2600],{"class":232,"line":564},[230,2601,2602],{},"1. Klik kanan file kamu di OneDrive\n",[230,2604,2605],{"class":232,"line":585},[230,2606,2607],{},"2. Klik \"Share\" (Bagikan) → \"Copy link\" (Salin tautan)\n",[230,2609,2610],{"class":232,"line":597},[230,2611,2612],{},"3. Ekstrak ID berbagi dari URL tersebut\n",[230,2614,2615],{"class":232,"line":609},[230,2616,2617],{},"4. Gunakan ID tersebut sebagai prop `src`\n",[206,2619],{},[176,2621,2623],{"id":2622},"langkah-6-kirim-pull-request","Langkah 6: Kirim Pull Request",[183,2625,2626,2632,2641,2649,2657],{},[186,2627,2628,2631],{},[189,2629,2630],{},"Fork repositori"," di GitHub",[186,2633,2634,2637,2638],{},[189,2635,2636],{},"Buat branch fitur",": ",[216,2639,2640],{},"git checkout -b feat\u002Fonedrive-provider",[186,2642,2643,2637,2646],{},[189,2644,2645],{},"Commit perubahan kamu",[216,2647,2648],{},"git commit -m \"feat: add OneDrive provider support\"",[186,2650,2651,2637,2654],{},[189,2652,2653],{},"Push ke fork kamu",[216,2655,2656],{},"git push origin feat\u002Fonedrive-provider",[186,2658,2659,2662,2663],{},[189,2660,2661],{},"Buka Pull Request"," dengan:\n",[2664,2665,2666,2669,2672],"ul",{},[186,2667,2668],{},"Deskripsi yang jelas tentang penyedia",[186,2670,2671],{},"Contoh penggunaan",[186,2673,2674],{},"Batasan atau masalah yang diketahui",[206,2676],{},[176,2678,2680],{"id":2679},"checklist-penyedia","Checklist Penyedia",[172,2682,2683],{},"Sebelum mengirimkan PR kamu, pastikan hal-hal berikut:",[2664,2685,2688,2700,2709,2715,2724,2730,2736,2742,2748],{"className":2686},[2687],"contains-task-list",[186,2689,2692,2696,2697],{"className":2690},[2691],"task-list-item",[2693,2694],"input",{"disabled":294,"type":2695},"checkbox"," Tipe penyedia ditambahkan ke ",[216,2698,2699],{},"types.ts",[186,2701,2703,2705,2706],{"className":2702},[2691],[2693,2704],{"disabled":294,"type":2695}," Logika transformasi ditambahkan ke ",[216,2707,2708],{},"usePdfKitProvider.ts",[186,2710,2712,2714],{"className":2711},[2691],[2693,2713],{"disabled":294,"type":2695}," Rute server dibuat (jika diperlukan)",[186,2716,2718,2720,2721],{"className":2717},[2691],[2693,2719],{"disabled":294,"type":2695}," Rute server didaftarkan di ",[216,2722,2723],{},"module.ts",[186,2725,2727,2729],{"className":2726},[2691],[2693,2728],{"disabled":294,"type":2695}," Tes ditambahkan dan lolos",[186,2731,2733,2735],{"className":2732},[2691],[2693,2734],{"disabled":294,"type":2695}," Dokumentasi ditambahkan",[186,2737,2739,2741],{"className":2738},[2691],[2693,2740],{"disabled":294,"type":2695}," Contoh penggunaan di playground",[186,2743,2745,2747],{"className":2744},[2691],[2693,2746],{"disabled":294,"type":2695}," Tipe TypeScript sudah benar",[186,2749,2751,2753],{"className":2750},[2691],[2693,2752],{"disabled":294,"type":2695}," Tidak ada error linting",[206,2755],{},[176,2757,2759],{"id":2758},"praktik-terbaik","Praktik Terbaik",[852,2761,2763],{"id":2762},"penanganan-error","Penanganan Error",[172,2765,2766],{},"Selalu berikan pesan error yang jelas:",[221,2768,2770],{"className":223,"code":2769,"language":225,"meta":226,"style":226},"if (!fileId) {\n  throw createError({\n    statusCode: 400,\n    statusMessage: \"ID File hilang. Mohon berikan tautan berbagi yang valid.\",\n  });\n}\n",[216,2771,2772,2786,2797,2808,2824,2832],{"__ignoreMap":226},[230,2773,2774,2777,2779,2781,2784],{"class":232,"line":233},[230,2775,2776],{"class":243},"if",[230,2778,624],{"class":432},[230,2780,627],{"class":255},[230,2782,2783],{"class":432},"fileId) ",[230,2785,635],{"class":255},[230,2787,2788,2791,2793,2795],{"class":232,"line":240},[230,2789,2790],{"class":243},"  throw",[230,2792,1107],{"class":385},[230,2794,389],{"class":447},[230,2796,635],{"class":255},[230,2798,2799,2802,2804,2806],{"class":232,"line":291},[230,2800,2801],{"class":447},"    statusCode",[230,2803,357],{"class":255},[230,2805,1121],{"class":1071},[230,2807,582],{"class":255},[230,2809,2810,2813,2815,2817,2820,2822],{"class":232,"line":298},[230,2811,2812],{"class":447},"    statusMessage",[230,2814,357],{"class":255},[230,2816,259],{"class":255},[230,2818,2819],{"class":262},"ID File hilang. Mohon berikan tautan berbagi yang valid.",[230,2821,266],{"class":255},[230,2823,582],{"class":255},[230,2825,2826,2828,2830],{"class":232,"line":304},[230,2827,1765],{"class":255},[230,2829,658],{"class":447},[230,2831,288],{"class":255},[230,2833,2834],{"class":232,"line":426},[230,2835,536],{"class":255},[852,2837,2839],{"id":2838},"logging","Logging",[172,2841,2842],{},"Gunakan format logging yang konsisten:",[221,2844,2846],{"className":223,"code":2845,"language":225,"meta":226,"style":226},"console.log(\"[nuxt-pdf-kit] OneDrive - Memproses file:\", fileId);\nconsole.error(\"[nuxt-pdf-kit] OneDrive error:\", error.message);\n",[216,2847,2848,2874],{"__ignoreMap":226},[230,2849,2850,2853,2855,2858,2860,2862,2865,2867,2869,2872],{"class":232,"line":233},[230,2851,2852],{"class":432},"console",[230,2854,441],{"class":255},[230,2856,2857],{"class":385},"log",[230,2859,389],{"class":432},[230,2861,266],{"class":255},[230,2863,2864],{"class":262},"[nuxt-pdf-kit] OneDrive - Memproses file:",[230,2866,266],{"class":255},[230,2868,401],{"class":255},[230,2870,2871],{"class":432}," fileId)",[230,2873,288],{"class":255},[230,2875,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2899],{"class":232,"line":240},[230,2877,2852],{"class":432},[230,2879,441],{"class":255},[230,2881,1773],{"class":385},[230,2883,389],{"class":432},[230,2885,266],{"class":255},[230,2887,1798],{"class":262},[230,2889,266],{"class":255},[230,2891,401],{"class":255},[230,2893,1805],{"class":432},[230,2895,441],{"class":255},[230,2897,2898],{"class":432},"message)",[230,2900,288],{"class":255},[852,2902,2904],{"id":2903},"caching","Caching",[172,2906,2907],{},"Atur header cache yang sesuai:",[221,2909,2911],{"className":223,"code":2910,"language":225,"meta":226,"style":226},"\u002F\u002F Cache selama 24 jam\nsetResponseHeader(event, \"Cache-Control\", \"public, max-age=86400\");\n\n\u002F\u002F Atau nonaktifkan cache untuk file sensitif\nsetResponseHeader(\n  event,\n  \"Cache-Control\",\n  \"no-cache, no-store, must-revalidate\",\n);\n",[216,2912,2913,2918,2946,2950,2955,2961,2968,2979,2990],{"__ignoreMap":226},[230,2914,2915],{"class":232,"line":233},[230,2916,2917],{"class":236},"\u002F\u002F Cache selama 24 jam\n",[230,2919,2920,2923,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944],{"class":232,"line":240},[230,2921,2922],{"class":385},"setResponseHeader",[230,2924,2925],{"class":432},"(event",[230,2927,401],{"class":255},[230,2929,259],{"class":255},[230,2931,1600],{"class":262},[230,2933,266],{"class":255},[230,2935,401],{"class":255},[230,2937,259],{"class":255},[230,2939,1609],{"class":262},[230,2941,266],{"class":255},[230,2943,658],{"class":432},[230,2945,288],{"class":255},[230,2947,2948],{"class":232,"line":291},[230,2949,295],{"emptyLinePlaceholder":294},[230,2951,2952],{"class":232,"line":298},[230,2953,2954],{"class":236},"\u002F\u002F Atau nonaktifkan cache untuk file sensitif\n",[230,2956,2957,2959],{"class":232,"line":304},[230,2958,2922],{"class":385},[230,2960,561],{"class":432},[230,2962,2963,2966],{"class":232,"line":426},[230,2964,2965],{"class":432},"  event",[230,2967,582],{"class":255},[230,2969,2970,2973,2975,2977],{"class":232,"line":453},[230,2971,2972],{"class":255},"  \"",[230,2974,1600],{"class":262},[230,2976,266],{"class":255},[230,2978,582],{"class":255},[230,2980,2981,2983,2986,2988],{"class":232,"line":458},[230,2982,2972],{"class":255},[230,2984,2985],{"class":262},"no-cache, no-store, must-revalidate",[230,2987,266],{"class":255},[230,2989,582],{"class":255},[230,2991,2992,2994],{"class":232,"line":464},[230,2993,658],{"class":432},[230,2995,288],{"class":255},[852,2997,2999],{"id":2998},"keamanan","Keamanan",[2664,3001,3002,3005,3008,3011],{},[186,3003,3004],{},"Jangan pernah mengekspos API key atau rahasia di kode sisi klien",[186,3006,3007],{},"Validasi semua input pengguna",[186,3009,3010],{},"Gunakan HTTPS untuk semua permintaan eksternal",[186,3012,3013],{},"Atur header CORS yang sesuai",[206,3015],{},[176,3017,3019],{"id":3018},"butuh-bantuan","Butuh Bantuan?",[2664,3021,3022,3028,3034],{},[186,3023,3024,3027],{},[189,3025,3026],{},"Discord",": Bergabung dengan server komunitas kami",[186,3029,3030,3033],{},[189,3031,3032],{},"GitHub Issues",": Buat issue untuk pertanyaan",[186,3035,3036,2637,3039],{},[189,3037,3038],{},"Email",[3040,3041,3043],"a",{"href":3042},"mailto:contact@nuxt-pdf-kit.com","contact@nuxt-pdf-kit.com",[172,3045,3046],{},"Kami sangat antusias melihat penyedia apa yang akan kamu tambahkan! 🚀",[3048,3049,3050],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":226,"searchDepth":240,"depth":240,"links":3052},[3053,3054,3055,3056,3060,3061,3062,3063,3064,3070],{"id":178,"depth":240,"text":54},{"id":210,"depth":240,"text":211},{"id":350,"depth":240,"text":351},{"id":846,"depth":240,"text":847,"children":3057},[3058,3059],{"id":854,"depth":291,"text":855},{"id":1928,"depth":291,"text":1929},{"id":2176,"depth":240,"text":2177},{"id":2512,"depth":240,"text":2513},{"id":2622,"depth":240,"text":2623},{"id":2679,"depth":240,"text":2680},{"id":2758,"depth":240,"text":2759,"children":3065},[3066,3067,3068,3069],{"id":2762,"depth":291,"text":2763},{"id":2838,"depth":291,"text":2839},{"id":2903,"depth":291,"text":2904},{"id":2998,"depth":291,"text":2999},{"id":3018,"depth":240,"text":3019},"Pelajari cara berkontribusi membuat penyedia file baru untuk Nuxt PDF Kit","md",null,{},{"title":136,"icon":139},{"title":162,"description":3071},"kXlS4irSz4D7vDav2uEE_zminywTg2Mm9XDfXASe-O4",[3079,3081],{"title":131,"path":132,"stem":133,"description":3080,"icon":134,"children":-1},"Pelajari cara menggunakan berbagai sumber file dengan Nuxt PDF Kit",{"title":141,"path":142,"stem":143,"description":3082,"icon":144,"children":-1},"Kustomisasi tampilan Nuxt PDF Kit.",1785862382131]