From 49408c00e964093c654ee270d545c0e29857e61f Mon Sep 17 00:00:00 2001 From: Dax Date: Fri, 21 Nov 2025 20:41:27 -0500 Subject: enterprise (#4617) Co-authored-by: GitHub Action Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> --- packages/util/src/binary.ts | 41 +++++++++++++++++++++++++++++++++++++++++ packages/util/src/path.ts | 16 ++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 packages/util/src/binary.ts create mode 100644 packages/util/src/path.ts (limited to 'packages/util/src') diff --git a/packages/util/src/binary.ts b/packages/util/src/binary.ts new file mode 100644 index 000000000..3d8f61851 --- /dev/null +++ b/packages/util/src/binary.ts @@ -0,0 +1,41 @@ +export namespace Binary { + export function search(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } { + let left = 0 + let right = array.length - 1 + + while (left <= right) { + const mid = Math.floor((left + right) / 2) + const midId = compare(array[mid]) + + if (midId === id) { + return { found: true, index: mid } + } else if (midId < id) { + left = mid + 1 + } else { + right = mid - 1 + } + } + + return { found: false, index: left } + } + + export function insert(array: T[], item: T, compare: (item: T) => string): T[] { + const id = compare(item) + let left = 0 + let right = array.length + + while (left < right) { + const mid = Math.floor((left + right) / 2) + const midId = compare(array[mid]) + + if (midId < id) { + left = mid + 1 + } else { + right = mid + } + } + + array.splice(left, 0, item) + return array + } +} diff --git a/packages/util/src/path.ts b/packages/util/src/path.ts new file mode 100644 index 000000000..fbb84878d --- /dev/null +++ b/packages/util/src/path.ts @@ -0,0 +1,16 @@ +export function getFilename(path: string) { + if (!path) return "" + const trimmed = path.replace(/[\/]+$/, "") + const parts = trimmed.split("/") + return parts[parts.length - 1] ?? "" +} + +export function getDirectory(path: string) { + const parts = path.split("/") + return parts.slice(0, parts.length - 1).join("/") + "/" +} + +export function getFileExtension(path: string) { + const parts = path.split(".") + return parts[parts.length - 1] +} -- cgit v1.2.3