(url = "")
| 47 | }; |
| 48 | |
| 49 | const convertToProotPath = (url = "") => { |
| 50 | const { alpineRoot, publicDir } = getTerminalPaths(); |
| 51 | if (isAcodeTerminalPublicSafUri(url)) { |
| 52 | try { |
| 53 | const { docId } = Uri.parse(url); |
| 54 | const cleanDocId = /::/.test(url) |
| 55 | ? decodeURIComponent(docId || "") |
| 56 | : docId || ""; |
| 57 | if (!cleanDocId) return "/public"; |
| 58 | if (cleanDocId.startsWith(publicDir)) { |
| 59 | return cleanDocId.replace(publicDir, "/public") || "/public"; |
| 60 | } |
| 61 | if (cleanDocId.startsWith("/public")) { |
| 62 | return cleanDocId; |
| 63 | } |
| 64 | if (cleanDocId.startsWith("public:")) { |
| 65 | const relativePath = cleanDocId.slice("public:".length); |
| 66 | return relativePath ? Path.join("/public", relativePath) : "/public"; |
| 67 | } |
| 68 | const relativePath = cleanDocId |
| 69 | .replace(/^\/+/, "") |
| 70 | .replace(/^public\//, ""); |
| 71 | return relativePath ? Path.join("/public", relativePath) : "/public"; |
| 72 | } catch (error) { |
| 73 | console.warn( |
| 74 | `Failed to parse public SAF URI for terminal conversion: ${url}`, |
| 75 | ); |
| 76 | return "/public"; |
| 77 | } |
| 78 | } |
| 79 | const cleanUrl = url.replace(/^file:\/\//, ""); |
| 80 | if (cleanUrl.startsWith(publicDir)) { |
| 81 | return cleanUrl.replace(publicDir, "/public"); |
| 82 | } |
| 83 | if (cleanUrl.startsWith(alpineRoot)) { |
| 84 | return cleanUrl.replace(alpineRoot, "") || "/"; |
| 85 | } |
| 86 | console.warn(`Unrecognized path for terminal conversion: ${url}`); |
| 87 | return cleanUrl; |
| 88 | }; |
| 89 | |
| 90 | /** |
| 91 | * @typedef {import('../components/collapsableList').Collapsible} Collapsible |
no test coverage detected