( workspaceId: string, path: string )
| 98 | } |
| 99 | |
| 100 | async function resolveCreateTarget( |
| 101 | workspaceId: string, |
| 102 | path: string |
| 103 | ): Promise<ResolvedCreateTarget> { |
| 104 | const parsed = parseWorkspaceFileCreatePath(path) |
| 105 | const folderId = |
| 106 | parsed.folderSegments.length > 0 |
| 107 | ? await findWorkspaceFileFolderIdByPath(workspaceId, parsed.folderSegments, { |
| 108 | includeReservedSystemFolders: true, |
| 109 | }) |
| 110 | : null |
| 111 | |
| 112 | if (parsed.folderSegments.length > 0 && !folderId) { |
| 113 | throw new Error( |
| 114 | `Directory not yet created: ${displayFolderPath(parsed.folderSegments)}. Create the directory first, then retry the file write.` |
| 115 | ) |
| 116 | } |
| 117 | |
| 118 | const existing = await getWorkspaceFileByName(workspaceId, parsed.fileName, { folderId }) |
| 119 | if (existing) { |
| 120 | throw new Error(`File already exists at ${parsed.vfsPath}. Use mode "overwrite" to update it.`) |
| 121 | } |
| 122 | |
| 123 | return { |
| 124 | fileName: parsed.fileName, |
| 125 | folderId, |
| 126 | vfsPath: parsed.vfsPath, |
| 127 | } |
| 128 | } |
| 129 | |
| 130 | function vfsPathForRecord(record: WorkspaceFileRecord): string { |
| 131 | return canonicalWorkspaceFilePath({ folderPath: record.folderPath, name: record.name }) |
no test coverage detected