diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8f70096..16f6e50 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartwebdav', - version: '1.1.1', + version: '1.1.2', description: 'A TypeScript library for easy interaction with WebDAV servers, including file and directory management.' } diff --git a/ts/classes.webdavclient.ts b/ts/classes.webdavclient.ts index fed05c4..5d1d9ed 100644 --- a/ts/classes.webdavclient.ts +++ b/ts/classes.webdavclient.ts @@ -1,3 +1,4 @@ +import type { isFile } from '@push.rocks/smartpath/dist_ts/smartpath.check.js'; import * as plugins from './plugins.js'; export interface IWebdavClientOptions { @@ -113,9 +114,11 @@ export class WebdavClient { } public async deleteFile(pathArg: string, checkNotDirectory = true) { - const stat = (await this.wdClient.stat(pathArg)) as plugins.webdav.FileStat; - if (checkNotDirectory && stat.type === 'directory') { - throw new Error(`Cannot delete a directory using deleteFile method. Use deleteDirectory instead.`); + if (!(await this.wdClient.exists(pathArg))) { + throw new Error(`Path does not exist`); + } + if (checkNotDirectory && (await this.isDirecory(pathArg))) { + throw new Error(`Path is a directory, not a file`); } await this.wdClient.deleteFile(pathArg); } @@ -123,4 +126,14 @@ export class WebdavClient { public async deleteDirectory(pathArg: string) { await this.deleteFile(pathArg, false); } + + public async isFile(pathArg: string) { + const stat = (await this.wdClient.stat(pathArg)) as plugins.webdav.FileStat; + return stat.type === 'file'; + } + + public async isDirecory(pathArg: string) { + const stat = (await this.wdClient.stat(pathArg)) as plugins.webdav.FileStat; + return stat.type === 'directory'; + } }