mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-24 13:24:05 -06:00
feat(path): add isAbsoluteURL function and corresponding tests
This commit is contained in:
parent
d1168170b7
commit
44abf3a30d
@ -38,6 +38,17 @@ describe("typeguards", () => {
|
|||||||
assert(!path.isRelativeURL("./abc/def.md"))
|
assert(!path.isRelativeURL("./abc/def.md"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("isAbsoluteURL", () => {
|
||||||
|
assert(path.isAbsoluteURL("https://example.com"))
|
||||||
|
assert(path.isAbsoluteURL("http://example.com"))
|
||||||
|
assert(path.isAbsoluteURL("ftp://example.com/a/b/c"))
|
||||||
|
assert(path.isAbsoluteURL("http://host/%25"))
|
||||||
|
assert(path.isAbsoluteURL("file://host/twoslashes?more//slashes"))
|
||||||
|
|
||||||
|
assert(!path.isAbsoluteURL("example.com/abc/def"))
|
||||||
|
assert(!path.isAbsoluteURL("abc"))
|
||||||
|
})
|
||||||
|
|
||||||
test("isFullSlug", () => {
|
test("isFullSlug", () => {
|
||||||
assert(path.isFullSlug("index"))
|
assert(path.isFullSlug("index"))
|
||||||
assert(path.isFullSlug("abc/def"))
|
assert(path.isFullSlug("abc/def"))
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import { slug as slugAnchor } from "github-slugger"
|
import { slug as slugAnchor } from "github-slugger"
|
||||||
import type { Element as HastElement } from "hast"
|
import type { Element as HastElement } from "hast"
|
||||||
import { clone } from "./clone"
|
import { clone } from "./clone"
|
||||||
|
import { URL } from "url"
|
||||||
|
|
||||||
// this file must be isomorphic so it can't use node libs (e.g. path)
|
// this file must be isomorphic so it can't use node libs (e.g. path)
|
||||||
|
|
||||||
export const QUARTZ = "quartz"
|
export const QUARTZ = "quartz"
|
||||||
@ -15,7 +17,6 @@ export function isFilePath(s: string): s is FilePath {
|
|||||||
return validStart && _hasFileExtension(s)
|
return validStart && _hasFileExtension(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Cannot be relative and may not have leading or trailing slashes. It can have `index` as it's last segment. Use this wherever possible is it's the most 'general' interpretation of a slug. */
|
/** Cannot be relative and may not have leading or trailing slashes. It can have `index` as it's last segment. Use this wherever possible is it's the most 'general' interpretation of a slug. */
|
||||||
export type FullSlug = SlugLike<"full">
|
export type FullSlug = SlugLike<"full">
|
||||||
export function isFullSlug(s: string): s is FullSlug {
|
export function isFullSlug(s: string): s is FullSlug {
|
||||||
@ -43,10 +44,10 @@ export function isRelativeURL(s: string): s is RelativeURL {
|
|||||||
export function isAbsoluteURL(s: string): boolean {
|
export function isAbsoluteURL(s: string): boolean {
|
||||||
try {
|
try {
|
||||||
new URL(s)
|
new URL(s)
|
||||||
return true
|
|
||||||
} catch {
|
} catch {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getFullSlug(window: Window): FullSlug {
|
export function getFullSlug(window: Window): FullSlug {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user