\n\n### Desired behavior\n\nA performance score of 90 or above\n\n### Reproduction\n\nhttps://vitepress-openapi.vercel.app/example/operations/getAllArtists.html\n\n### Steps to reproduce\n\n- Open any page generated by this plugin\n- Open Lighthouse\n- Look at the performance score\n",[2867,2870],{"name":2868,"color":2869},"enhancement","a2eeef",{"name":2871,"color":2872},"help wanted","008672",171,"enzonotario","vitepress-openapi","open","Performance issues","2025-02-08T02:57:38Z","https://github.com/enzonotario/vitepress-openapi/issues/171",0.794923,{"description":2882,"labels":2883,"number":2884,"owner":2874,"repository":2875,"state":2876,"title":2885,"updated_at":2886,"url":2887,"score":2888},"### Current behavior\n\n`isDark` is not working when using `apparance: 'force-dark'`\n\n### Desired behavior\n\n`isDark = true` when using `apparance: 'force-dark'`\n\n### Reproduction\n\n_No response_\n\n### Steps to reproduce\n\nSet `apparance: 'force-dark'` in `.vitepress/config.js`\n\n### Logs and Error Messages\n\n_No response_\n\n### Other Information\n\nIt's because we are now trying to get `isDark` from the `useData` VitePress composable. However there is a pending issue for this: https://github.com/vuejs/vitepress/pull/4509\n\nDue to this, we are currently retrieving `isDark` from `@vueuse/core`, but it doesn't work when using `apparance: 'force-dark'`.\n\nA workaround would be to allow forcing `isDark` prop from Feature Components.",[],178,"`isDark` is not working when using `apparance: 'force-dark'`","2025-02-17T02:26:34Z","https://github.com/enzonotario/vitepress-openapi/issues/178",0.8458727,{"description":2890,"labels":2891,"number":2895,"owner":2874,"repository":2875,"state":2896,"title":2897,"updated_at":2898,"url":2899,"score":2900},"### Current behavior\n\nin a setup where all operations are sown in one page, the table of content contains links to each one of them as anchor links\r\n\r\nThe operation that have parameters in their url (using`{}`) have their links not working\n\n### Desired behavior\n\nI expect all links to work\n\n### Reproduction\n\n_No response_\n\n### Steps to reproduce\n\ngit clone https://github.com/wighawag/fuzd.git\r\ncd fuzd\r\ngit checkout feat/vitepress-openapi\r\npnpm i\r\npnpm docs:dev\r\n# navigate to http://localhost:5173/api-all-in-one/\r\n# click on links\n\n### Logs and Error Messages\n\n_No response_\n\n### Other Information\n\n_No response_",[2892],{"name":2893,"color":2894},"bug","d73a4a",108,"closed","anchor links that have parameter do not work","2024-11-06T00:17:01Z","https://github.com/enzonotario/vitepress-openapi/issues/108",0.69591516,{"description":2902,"labels":2903,"number":2905,"owner":2874,"repository":2875,"state":2896,"title":2906,"updated_at":2907,"url":2908,"score":2909},"### Current behavior\n\nI added two open api specification files to my site configuration. While building the site, it fails with a heap limit allocation failed error as follows:\r\n\r\n```\r\n\u003C--- Last few GCs --->\r\n\r\n[8528:0000028921749270] 51958 ms: Scavenge 4038.9 (4137.2) -> 4038.5 (4142.0) MB, 5.89 / 0.00 ms (average mu = 0.723, current mu = 0.560) allocation failure;\r\n[8528:0000028921749270] 53307 ms: Mark-Compact 4042.1 (4142.2) -> 4040.3 (4145.0) MB, 1345.40 / 0.00 ms (average mu = 0.530, current mu = 0.017) allocation failure; scavenge might not succeed\r\n\r\n\r\n\u003C--- JS stacktrace --->\r\n\r\nFATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory\r\n----- Native stack trace -----\r\n\r\n 1: 00007FF7257A39EB node::SetCppgcReference+18459\r\n 2: 00007FF725713238 DSA_meth_get_flags+93160\r\n 3: 00007FF72618C771 v8::Isolate::ReportExternalAllocationLimitReached+65\r\n 4: 00007FF726175EC8 v8::Function::Experimental_IsNopFunction+1336\r\n 5: 00007FF725FD7970 v8::Platform::SystemClockTimeMillis+659328\r\n 6: 00007FF725FD49F8 v8::Platform::SystemClockTimeMillis+647176\r\n 7: 00007FF725FE9D0A v8::Platform::SystemClockTimeMillis+733978\r\n 8: 00007FF725FEA587 v8::Platform::SystemClockTimeMillis+736151\r\n 9: 00007FF725FF8E7F v8::Platform::SystemClockTimeMillis+795791\r\n10: 00007FF725CB9565 v8::CodeEvent::GetFunctionName+116773\r\n11: 00007FF72623E0FE v8::PropertyDescriptor::writable+678094\r\n12: 00007FF6A726D238\r\n```\n\n### Desired behavior\n\nNo errors during build\n\n### Steps to reproduce\n\nI added a markdown file like this\r\n\r\n```\r\n---\r\naside: true\r\noutline: [1, 2]\r\ntitle: \u003Credactedname> API v1\r\n---\r\n\r\n\u003Cscript setup lang=\"ts\">\r\nimport { useData } from 'vitepress'\r\nimport spec from '../../Services/ServiceClients/swagger/\u003Credactedname>_v1.json'\r\nconst { isDark } = useData()\r\n\u003C/script>\r\n\r\n\u003COASpec :spec=\"spec\" :hideInfo=\"true\" :hideServers=\"true\" :isDark=\"isDark\" />\r\n```\n\n### Logs and Error Messages\n\n\u003C--- Last few GCs --->\r\n\r\n[8528:0000028921749270] 51958 ms: Scavenge 4038.9 (4137.2) -> 4038.5 (4142.0) MB, 5.89 / 0.00 ms (average mu = 0.723, current mu = 0.560) allocation failure;\r\n[8528:0000028921749270] 53307 ms: Mark-Compact 4042.1 (4142.2) -> 4040.3 (4145.0) MB, 1345.40 / 0.00 ms (average mu = 0.530, current mu = 0.017) allocation failure; scavenge might not succeed\r\n\r\n\r\n\u003C--- JS stacktrace --->\r\n\r\nFATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory\r\n----- Native stack trace -----\r\n\r\n 1: 00007FF7257A39EB node::SetCppgcReference+18459\r\n 2: 00007FF725713238 DSA_meth_get_flags+93160\r\n 3: 00007FF72618C771 v8::Isolate::ReportExternalAllocationLimitReached+65\r\n 4: 00007FF726175EC8 v8::Function::Experimental_IsNopFunction+1336\r\n 5: 00007FF725FD7970 v8::Platform::SystemClockTimeMillis+659328\r\n 6: 00007FF725FD49F8 v8::Platform::SystemClockTimeMillis+647176\r\n 7: 00007FF725FE9D0A v8::Platform::SystemClockTimeMillis+733978\r\n 8: 00007FF725FEA587 v8::Platform::SystemClockTimeMillis+736151\r\n 9: 00007FF725FF8E7F v8::Platform::SystemClockTimeMillis+795791\r\n10: 00007FF725CB9565 v8::CodeEvent::GetFunctionName+116773\r\n11: 00007FF72623E0FE v8::PropertyDescriptor::writable+678094\r\n12: 00007FF6A726D238\n\n### Other Information\n\nDuring the build, I also get many errors like this:\r\n\r\nReferenceError: localStorage is not defined\r\n at file:///C:/Repos/Work/\u003Credactedname>/Docs/node_modules/vitepress-theme-openapi/dist/vitepress-theme-openapi.es.js:66959:56\r\n at Array.map (\u003Canonymous>)\r\n at setup (file:///C:/Repos/Work/\u003Credactedname>/Docs/node_modules/vitepress-theme-openapi/dist/vitepress-theme-openapi.es.js:66957:43)\r\n at callWithErrorHandling (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:86:19)\r\n at setupStatefulComponent (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:6241:25)\r\n at setupComponent (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:6228:36)\r\n at renderComponentVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:376:15)\r\n at renderVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:507:14)\r\n at renderVNodeChildren (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:523:5)\r\n at renderElementVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:567:9)\r\nReferenceError: localStorage is not defined\r\n at file:///C:/Repos/Work/\u003Credactedname>/Docs/node_modules/vitepress-theme-openapi/dist/vitepress-theme-openapi.es.js:66959:56\r\n at Array.map (\u003Canonymous>)\r\n at setup (file:///C:/Repos/Work/\u003Credactedname>/Docs/node_modules/vitepress-theme-openapi/dist/vitepress-theme-openapi.es.js:66957:43)\r\n at callWithErrorHandling (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:86:19)\r\n at setupStatefulComponent (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:6241:25)\r\n at setupComponent (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\runtime-core\\dist\\runtime-core.cjs.prod.js:6228:36)\r\n at renderComponentVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:376:15)\r\n at renderVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:507:14)\r\n at renderVNodeChildren (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:523:5)\r\n at renderElementVNode (C:\\Repos\\Work\\\u003Credactedname>\\Docs\\node_modules\\@vue\\server-renderer\\dist\\server-renderer.cjs.prod.js:567:9)",[2904],{"name":2868,"color":2869},65,"Build fails with \"heap limit allocation failed\"","2024-10-29T16:35:25Z","https://github.com/enzonotario/vitepress-openapi/issues/65",0.76755816,{"description":2911,"labels":2912,"number":2916,"owner":2874,"repository":2875,"state":2896,"title":2917,"updated_at":2918,"url":2919,"score":2920},"### What would you like?\n\nVitepress-openapi is beautiful. I have a doc site already, and I would like to add the vitepress-openapi docs as a menu item on my top navigation menu. \r\n\r\n\r\n\n\n### Why is this needed?\n\nThere is often a lot of material besides the openapi specification that one needs for documentation. I'd like to be able to include the openapi site within another site to keep everything together.\n\n### How could it be implemented?\n\nI'm not knowledgeable enough to know. Right now I am embedding `openapi-explorer` in a simple `layout: page` page associated with the menu item:\r\n\r\n```vue\r\n---\r\nlayout: page\r\nsidebar: false\r\n---\r\n\u003Cscript setup>\r\n import 'openapi-explorer/dist/es/openapi-explorer.js';\r\n import { useData } from 'vitepress'\r\n const { isDark, theme, page, frontmatter } = useData()\r\n\u003C/script>\r\n\r\n\u003CClientonly>\r\n \u003Copenapi-explorer\r\n v-if = isDark\r\n spec-url = \"/adm-spec.yaml\"\r\n hide-console = true\r\n hide-authentication = true\r\n hide-server-selection = true\r\n hide-components = false\r\n nav-bg-color = #1b1b1f\r\n secondary-color = #F8F8F5\r\n nav-hover-text-color = #85bd4f\r\n bg-color = #1b1b1f\r\n text-color = \"#F8F8F5\"\r\n >\r\n \u003C/openapi-explorer>\r\n\r\n\r\n \u003Copenapi-explorer\r\n v-else\r\n spec-url = \"/adm-spec.yaml\"\r\n hide-console = true\r\n hide-authentication = true\r\n hide-server-selection = true\r\n hide-components = false\r\n nav-bg-color = #ffffff\r\n secondary-color = #000000\r\n nav-hover-text-color = #F8F8F5\r\n >\r\n \u003C/openapi-explorer>\r\n\r\n\u003C/ClientOnly>\r\n```\r\n\r\nThis seems very awkward, and it's difficult to get the styles to match Vitepress's theme. Might there be a way to extend the default theme with a layout called `openapi` and somehow link my spec file in the front matter?\n\n### Other information\n\nI appreciate this work very much. Thanks for considering the suggestion.",[2913],{"name":2914,"color":2915},"question","d876e3",71,"Is it possible to add vitepress-openapi to an existing Vitepress site as a menu item","2024-10-19T02:30:08Z","https://github.com/enzonotario/vitepress-openapi/issues/71",0.7834679,{"description":2922,"labels":2923,"number":2925,"owner":2874,"repository":2926,"state":2896,"title":2927,"updated_at":2928,"url":2929,"score":2930},"Hola buenos dias estimados queria consultarles el horario de actualizacion que tienen para el Dolar Bolsa para no realizar requests de más. Desde ya muchas gracias",[2924],{"name":2914,"color":2915},42,"esjs-dolar-api","Consulta horarios de actualizacion","2025-03-20T18:46:11Z","https://github.com/enzonotario/esjs-dolar-api/issues/42",0.800975,{"description":2932,"labels":2933,"number":2935,"owner":2874,"repository":2875,"state":2896,"title":2936,"updated_at":2937,"url":2938,"score":2939},"### What would you like?\r\n\r\nParameter example values along with the description\r\n\r\nSo for example after I overloaded your template for this section I see this:\r\n\r\n**$filter** string\r\nExample name eq 'hello'\r\n\r\n\r\nYou can see the example [live here](https://apidev.digilean.tools/docs/operations/Boards_List) as well\r\n\r\n### Why is this needed?\r\n\r\nI see you use the example values in the playground/try it section\r\n\r\nBut I choose not to display this.\r\n\r\n### How could it be implemented?\r\n\r\nSomething like \r\n```vue\r\n\u003Cdiv v-if=\"props.parameter.example\" class=\"flex flex-row space-x-2\">\r\n \u003Cspan class=\"text-sm example font-bold\">\r\n Example\r\n \u003C/span>\r\n \u003Cspan class=\"text-sm text-gray-600 dark:text-gray-300\">\r\n {{ props.parameter.example }}\r\n \u003C/span>\r\n\u003C/div>\r\n```\r\n\r\n### Other information\r\n\r\n_No response_",[2934],{"name":2868,"color":2869},93,"Display example values for Parameters","2024-10-17T08:22:46Z","https://github.com/enzonotario/vitepress-openapi/issues/93",0.81699586,{"description":2941,"labels":2942,"number":2944,"owner":2874,"repository":2875,"state":2896,"title":2945,"updated_at":2946,"url":2947,"score":2948},"Take the following minimal crashable example:\r\n\r\n```json\r\n{\r\n \"openapi\": \"3.0.0\",\r\n \"info\": {\r\n \"title\": \"Minimal API with Circular Reference\",\r\n \"version\": \"1.0.0\"\r\n },\r\n \"paths\": {\r\n \"/parent\": {\r\n \"get\": {\r\n \"summary\": \"Get a parent\",\r\n \"operationId\": \"getParent\",\r\n \"responses\": {\r\n \"200\": {\r\n \"description\": \"A parent with a child\",\r\n \"content\": {\r\n \"application/json\": {\r\n \"schema\": {\r\n \"$ref\": \"#/components/schemas/Parent\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \"components\": {\r\n \"schemas\": {\r\n \"Parent\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"id\": {\r\n \"type\": \"string\"\r\n },\r\n \"child\": {\r\n \"$ref\": \"#/components/schemas/Child\"\r\n }\r\n }\r\n },\r\n \"Child\": {\r\n \"type\": \"object\",\r\n \"properties\": {\r\n \"id\": {\r\n \"type\": \"string\"\r\n },\r\n \"parent\": {\r\n \"$ref\": \"#/components/schemas/Parent\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\nThis is valid openapi spec as can be seen checked using a [validator](https://apitools.dev/swagger-parser/online/). Of course, dealing with a circular swagger requires a form of normalization. \r\n\r\nI am currently using the standard swagger UI, which does nicely deal with circular references. However, as I have moved all my documentation over to vitepress, I would also prefer to maybe include some swagger here and there as it could help make explanations a bit clearer.",[2943],{"name":2893,"color":2894},57,"[BUG] Generator crashes if openapi-spec contains a circular reference","2024-09-28T15:43:59Z","https://github.com/enzonotario/vitepress-openapi/issues/57",0.8194696,{"description":2950,"labels":2951,"number":2953,"owner":2874,"repository":2875,"state":2896,"title":2954,"updated_at":2955,"url":2956,"score":2957},"### What would you like?\n\nThe current version generates \"static\" code for each language, based only on the url and method. Unfortunately, the url is simply: `const url = props.baseUrl + props.path`. This has the issue that any path parameters are left as-is in the code.\r\n\r\nIt would be great if the sample code could be updated to include the variables in the \"try it\" box. This way the code sample would be \"complete\". I _think_ this would be done in much the same was as the `OACodeBlock` currently computes the URL for curl\n\n### Why is this needed?\n\nIf you copy-and-paste the code sample as-is, you will end up with an invalid URL if there are path parameters.\r\n\r\nAlso, it would be nice to mix-and-match such that you can _remove_ the try it portion of the playground, but keep the sample code. This way people can \"build\" a request in their language of choice based on the variables form.\n\n### How could it be implemented?\n\nI _think_ you would need to extract (or just duplicate?) the code used to compute the curl information:\r\n\r\n```\r\nconst curl = computed(() => {\r\n const headers = request.value.headers\r\n if (!headers?.['Content-Type']) {\r\n headers['Content-Type'] = 'application/json'\r\n }\r\n\r\n return fetchToCurl({\r\n method: props.method.toUpperCase(),\r\n url: request.value.url,\r\n headers,\r\n body: request.value.body ? formatJson(request.value.body) : null,\r\n })\r\n})\r\n```\r\n\r\nThen pass this as a parameter to `generateCodeSamples` so that it can generate each code sample appropriately.\n\n### Other information\n\nIt would also be _awesome_ to select _which_ languages you want to support, and possibly even some way to provide the template for each language. I realize this is above-and-beyond, but something to think about if you're changing this.",[2952],{"name":2868,"color":2869},92,"Modify Sample Code Based on Variables","2024-11-15T02:40:07Z","https://github.com/enzonotario/vitepress-openapi/issues/92",0.8216252,{"description":2959,"labels":2960,"number":2962,"owner":2874,"repository":2875,"state":2896,"title":2963,"updated_at":2964,"url":2965,"score":2966},"Especifico el tipo de respuesta que retornara la petición, pero lo toma como un objeto.\r\n\r\n--\r\n\r\n",[2961],{"name":2868,"color":2869},33,"Tipo de respuesta ","2024-09-26T23:34:06Z","https://github.com/enzonotario/vitepress-openapi/issues/33",0.8257612,["Reactive",2968],{},["Set"],["ShallowReactive",2971],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fsGbbULdZ5EBU9uXelM6EtAEZ7pMxb7qEdgx4RUoKebg":-1},"/enzonotario/vitepress-openapi/107"]