-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
is-absolute.ts
33 lines (27 loc) · 954 Bytes
/
is-absolute.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* @file isAbsolute
* @module pathe/lib/isAbsolute
*/
import ensurePosix from '#src/internal/ensure-posix'
import isDrivePath from '#src/internal/is-drive-path'
import isSep from '#src/internal/is-sep'
import validateString from '#src/internal/validate-string'
import { at, isEmptyString } from '@flex-development/tutils'
/**
* Determines if `path` is an absolute path.
*
* If the given `path` is a zero-length string, `false` will be returned.
*
* @param {string} path - Path to evaluate
* @return {boolean} `true` if `path` is absolute, `false` otherwise
* @throws {TypeError} If `path` is not a string
*/
const isAbsolute = (path: string): boolean => {
validateString(path, 'path')
// exit early if path is empty string
if (isEmptyString(path)) return false
// ensure path meets posix standards
path = ensurePosix(path)
return isSep(at(path, 0)) || (isDrivePath(path) && isSep(at(path, 2)))
}
export default isAbsolute