refactor(naming): survivor renames — github pushdown, gcal/msgraph _client, sharepoint resolve, mem0 detect_scope (plan §3)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
bytecii
2026-08-16 03:55:00 -07:00
parent bba66f8291
commit 1f59264232
54 changed files with 69 additions and 64 deletions
+1 -1
View File
@@ -50,7 +50,7 @@ from mirage.commands.cli.types import CLISpec
from mirage.core.databricks_volume.path import configured_root
from mirage.core.discord.config import DiscordConfig
from mirage.core.email.config import EmailConfig
from mirage.core.sharepoint import _resolver as sharepoint_resolver
from mirage.core.sharepoint import resolve as sharepoint_resolver
from mirage.resource.aliyun import AliyunConfig, AliyunResource
from mirage.resource.backblaze import BackblazeConfig, BackblazeResource
from mirage.resource.box import BoxConfig, BoxResource
@@ -18,9 +18,9 @@ from mirage.commands.builtin.github.io import resolve_glob
from mirage.commands.builtin.grep_helper import (is_literal_pattern,
search_query)
from mirage.core.github.constants import SCOPE_WARN
from mirage.core.github.pushdown import (count_scope_files, scope_relative_key,
should_use_search)
from mirage.core.github.repo import ensure_default_branch
from mirage.core.github.scope import (count_scope_files, scope_relative_key,
should_use_search)
from mirage.core.github.search import narrow_paths
from mirage.core.github.tree import ensure_tree
from mirage.types import PathSpec
@@ -23,7 +23,7 @@ from mirage.commands.errors import UsageError
from mirage.commands.registry import command
from mirage.commands.spec import SPECS
from mirage.commands.spec.types import FlagView
from mirage.core.mem0.scope import ScopeLevel, detect
from mirage.core.mem0.scope import ScopeLevel, detect_scope
from mirage.core.mem0.search import search_memories_rendered
from mirage.io.types import ByteSource, IOResult
from mirage.types import PathSpec
@@ -57,7 +57,7 @@ def is_mount_root(path: PathSpec) -> bool:
def memory_ids(paths: list[PathSpec]) -> set[str]:
ids: set[str] = set()
for path in paths:
scope = detect(path)
scope = detect_scope(path)
if scope.level != ScopeLevel.MEMORY or scope.memory_id is None:
raise FileNotFoundError(path.virtual)
ids.add(scope.memory_id)
+1 -1
View File
@@ -17,7 +17,7 @@ from dataclasses import dataclass
from mirage.core.github._client import github_get
from mirage.core.github.config import GitHubConfig
from mirage.core.github.scope import scope_relative_key
from mirage.core.github.pushdown import scope_relative_key
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key, mount_prefix_of
+2 -2
View File
@@ -18,7 +18,7 @@ from typing import Any
from mirage.accessor.mem0 import Mem0Accessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.mem0._client import get_memory
from mirage.core.mem0.scope import ScopeLevel, detect
from mirage.core.mem0.scope import ScopeLevel, detect_scope
from mirage.core.render.json import json_bytes
from mirage.types import PathSpec
from mirage.utils.errors import enoent
@@ -29,7 +29,7 @@ async def _resolve_memory(
path: PathSpec,
index: IndexCacheStore,
) -> dict[str, Any]:
scope = detect(path)
scope = detect_scope(path)
if scope.level != ScopeLevel.MEMORY or scope.memory_id is None:
raise enoent(path)
lookup = await index.get(path.virtual)
+2 -2
View File
@@ -15,7 +15,7 @@
from mirage.accessor.mem0 import Mem0Accessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore, IndexEntry
from mirage.core.mem0._client import get_all_memories
from mirage.core.mem0.scope import ScopeLevel, detect
from mirage.core.mem0.scope import ScopeLevel, detect_scope
from mirage.core.render.json import json_bytes
from mirage.types import PathSpec
from mirage.utils.errors import enoent, enotdir
@@ -33,7 +33,7 @@ async def readdir(
path (PathSpec): the directory path (only the mount root is a dir).
index (IndexCacheStore): index cache.
"""
scope = detect(path)
scope = detect_scope(path)
if scope.level == ScopeLevel.INVALID:
raise enoent(path)
if scope.level != ScopeLevel.ROOT:
+1 -1
View File
@@ -34,7 +34,7 @@ def _backend_key(path: PathSpec) -> str:
return path.resource_path.strip("/")
def detect(path: PathSpec) -> Mem0Scope:
def detect_scope(path: PathSpec) -> Mem0Scope:
"""Classify a mem0 virtual path.
Args:
+2 -2
View File
@@ -17,7 +17,7 @@ from typing import Any
from mirage.accessor.mem0 import Mem0Accessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.mem0._client import get_memory
from mirage.core.mem0.scope import ScopeLevel, detect
from mirage.core.mem0.scope import ScopeLevel, detect_scope
from mirage.core.render.json import json_bytes
from mirage.types import FileStat, FileType, PathSpec
from mirage.utils.errors import enoent
@@ -49,7 +49,7 @@ async def stat(
path (PathSpec): the path to stat.
index (IndexCacheStore): index cache.
"""
scope = detect(path)
scope = detect_scope(path)
if scope.level == ScopeLevel.ROOT:
return FileStat(name="/", type=FileType.DIRECTORY)
if scope.level != ScopeLevel.MEMORY or scope.memory_id is None:
+1 -1
View File
@@ -4,7 +4,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.core.msgraph.config import MsGraphConfig
from mirage.core.msgraph.drive_ops import DriveLoc, copy_tree
from mirage.core.sharepoint._client import drive_ref_path, item_url
from mirage.core.sharepoint._resolver import ResolvedPath, resolve
from mirage.core.sharepoint.resolve import ResolvedPath, resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -4,7 +4,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_write
from mirage.core.sharepoint._client import (graph_put_bytes, item_url,
split_path)
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.observe.context import record
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -15,7 +15,7 @@
from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.msgraph.drive_ops import du_tree_entries
from mirage.core.sharepoint._resolver import drive_loc, resolve
from mirage.core.sharepoint.resolve import drive_loc, resolve
from mirage.core.sharepoint.stat import stat
from mirage.types import FileType, PathSpec
+1 -1
View File
@@ -15,7 +15,7 @@
from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.msgraph.drive_ops import du_tree_total
from mirage.core.sharepoint._resolver import drive_loc, resolve
from mirage.core.sharepoint.resolve import drive_loc, resolve
from mirage.core.sharepoint.stat import stat
from mirage.types import FileType, PathSpec
+2 -2
View File
@@ -6,8 +6,8 @@ from mirage.commands.builtin.find_eval import (FindEntry, PredNode, build_tree,
emit_start_path, keep,
start_basename)
from mirage.core.msgraph.drive_ops import drive_root_empty, find_items
from mirage.core.sharepoint._resolver import (ResolvedPath, drive_entries,
drive_loc, resolve, site_entries)
from mirage.core.sharepoint.resolve import (ResolvedPath, drive_entries,
drive_loc, resolve, site_entries)
from mirage.core.sharepoint.stat import stat
from mirage.types import FileType, PathSpec
+1 -1
View File
@@ -4,7 +4,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_write, invalidate_ancestors
from mirage.core.msgraph.drive_ops import create_child_folder
from mirage.core.sharepoint._client import item_url, split_path
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -2,7 +2,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.msgraph.drive_ops import read_item
from mirage.core.sharepoint._client import split_path
from mirage.core.sharepoint._resolver import drive_loc, resolve
from mirage.core.sharepoint.resolve import drive_loc, resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+2 -2
View File
@@ -2,8 +2,8 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import (NULL_INDEX, IndexCacheStore, IndexEntry,
ResourceType)
from mirage.core.msgraph.drive_ops import readdir_items
from mirage.core.sharepoint._resolver import (drive_loc, list_drives,
list_sites, resolve)
from mirage.core.sharepoint.resolve import (drive_loc, list_drives, list_sites,
resolve)
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_prefix_of
+1 -1
View File
@@ -1,8 +1,8 @@
from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_unlink
from mirage.core.msgraph.drive_ops import rename_replace
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.copy import drive_loc
from mirage.core.sharepoint.resolve import resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -1,7 +1,7 @@
from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_unlink
from mirage.core.sharepoint._client import graph_delete, item_url, split_path
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.types import PathSpec
+1 -1
View File
@@ -1,7 +1,7 @@
from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_unlink
from mirage.core.sharepoint._client import graph_delete, item_url, split_path
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.types import PathSpec
+1 -1
View File
@@ -2,7 +2,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.msgraph.drive_ops import stat_item
from mirage.core.sharepoint._client import split_path
from mirage.core.sharepoint._resolver import drive_loc, resolve
from mirage.core.sharepoint.resolve import drive_loc, resolve
from mirage.types import FileStat, FileType, PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -4,8 +4,8 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.index import NULL_INDEX, IndexCacheStore
from mirage.core.msgraph.drive_ops import stream_item
from mirage.core.sharepoint._client import split_path
from mirage.core.sharepoint._resolver import drive_loc, resolve
from mirage.core.sharepoint.read import read_bytes
from mirage.core.sharepoint.resolve import drive_loc, resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -2,7 +2,7 @@ from mirage.accessor.sharepoint import SharePointAccessor
from mirage.cache.context import invalidate_after_unlink
from mirage.core.sharepoint._client import (GraphError, graph_delete, item_url,
split_path)
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.types import PathSpec
from mirage.utils.errors import enoent
+1 -1
View File
@@ -6,7 +6,7 @@ from mirage.core.msgraph.drive_ops import (SIMPLE_UPLOAD_MAX,
upload_session_write)
from mirage.core.sharepoint._client import (graph_put_bytes, item_url,
split_path)
from mirage.core.sharepoint._resolver import resolve
from mirage.core.sharepoint.resolve import resolve
from mirage.observe.context import record
from mirage.types import PathSpec
from mirage.utils.errors import enoent
@@ -16,8 +16,8 @@ from types import SimpleNamespace
import pytest
from mirage.core.github.scope import (count_scope_files, is_repo_root,
scope_relative_key)
from mirage.core.github.pushdown import (count_scope_files, is_repo_root,
scope_relative_key)
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+6 -5
View File
@@ -1,9 +1,10 @@
from mirage.core.mem0.scope import ScopeLevel, detect
from mirage.core.mem0.scope import ScopeLevel, detect_scope
from mirage.types import PathSpec
def test_root():
s = detect(PathSpec(virtual="/mem", directory="/mem", resource_path=""))
s = detect_scope(
PathSpec(virtual="/mem", directory="/mem", resource_path=""))
assert s.level == ScopeLevel.ROOT
assert s.memory_id is None
@@ -12,7 +13,7 @@ def test_memory_file():
p = PathSpec(virtual="/mem/abc.json",
directory="/mem",
resource_path="abc.json")
s = detect(p)
s = detect_scope(p)
assert s.level == ScopeLevel.MEMORY
assert s.memory_id == "abc"
@@ -21,10 +22,10 @@ def test_hidden_is_invalid():
p = PathSpec(virtual="/mem/.secret",
directory="/mem",
resource_path=".secret")
s = detect(p)
s = detect_scope(p)
assert s.level == ScopeLevel.INVALID
def test_empty_memory_id_is_invalid():
p = PathSpec(virtual="/mem/.json", directory="/mem", resource_path=".json")
assert detect(p).level == ScopeLevel.INVALID
assert detect_scope(p).level == ScopeLevel.INVALID
@@ -2,8 +2,8 @@ import pytest
from aioresponses import aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.du import entries
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -2,8 +2,8 @@ import pytest
from aioresponses import aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.du import size
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -3,8 +3,8 @@ from aioresponses import CallbackResult, aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._client import GraphError
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.copy import copy
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -4,7 +4,7 @@ import pytest
import mirage.core.msgraph.drive_ops as drive_ops
from mirage.core.sharepoint import find as find_mod
from mirage.core.sharepoint._resolver import ResolvedPath
from mirage.core.sharepoint.resolve import ResolvedPath
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -3,8 +3,8 @@ from aioresponses import CallbackResult, aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._client import GraphError
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.mkdir import mkdir
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -2,8 +2,8 @@ import pytest
from aioresponses import CallbackResult, aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.read import read_bytes
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -5,8 +5,8 @@ from aioresponses import aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.cache.index import RAMIndexCacheStore
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.readdir import readdir
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -3,8 +3,8 @@ from aioresponses import CallbackResult, aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._client import GraphError
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.rename import rename
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
@@ -4,7 +4,7 @@ import pytest
from aioresponses import aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache, resolve
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache, resolve
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -3,9 +3,9 @@ from aioresponses import aioresponses
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.cache.index import RAMIndexCacheStore
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.read import read_bytes
from mirage.core.sharepoint.readdir import readdir
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.core.sharepoint.stat import stat
from mirage.types import FileType, PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -4,7 +4,7 @@ from aioresponses import CallbackResult, aioresponses
import mirage.core.msgraph.drive_ops as drive_ops
import mirage.core.sharepoint.write as write_mod
from mirage.accessor.sharepoint import SharePointAccessor, SharePointConfig
from mirage.core.sharepoint._resolver import _drive_cache, _site_cache
from mirage.core.sharepoint.resolve import _drive_cache, _site_cache
from mirage.core.sharepoint.write import write_bytes
from mirage.types import PathSpec
from mirage.utils.key_prefix import mount_key
+1 -1
View File
@@ -1,5 +1,5 @@
{
"baseline": 299,
"baseline": 297,
"baseline_reason": "Every divergence below the excused ones predates the gate and each needs its own decision, so --strict fails on a rise rather than demanding zero. Lower this number whenever a divergence is closed; the gate fails on a drop too, so an improvement cannot be silently spent. Items 31-37 of the cleanup plan are scoped from this report. The unit is one module, never one directory: a one-sided directory counts once per module inside it, so it cannot absorb new modules without moving the number. An excused directory is the deliberate exception -- it excuses its whole subtree, because the excuse is that there is no counterpart to mirror, which makes growth inside it expected rather than drift.",
"directories": {
"python_only": {
@@ -14,7 +14,7 @@
import { z } from 'zod'
import { Accessor } from './base.ts'
import { graphList } from '../core/msgraph/client.ts'
import { graphList } from '../core/msgraph/_client.ts'
import {
MSGRAPH_CONFIG_SHAPE,
graphApi,
@@ -17,7 +17,11 @@ import type { IndexCacheStore } from '../../../cache/index/store.ts'
import { SCOPE_WARN } from '../../../core/github/constants.ts'
import { resolveGlobOf } from '../generic_bind/index.ts'
import { GITHUB_IO } from './io.ts'
import { countScopeFiles, scopeRelativeKey, shouldUseSearch } from '../../../core/github/scope.ts'
import {
countScopeFiles,
scopeRelativeKey,
shouldUseSearch,
} from '../../../core/github/pushdown.ts'
import { narrowPaths } from '../../../core/github/search.ts'
import type { PathSpec } from '../../../types.ts'
import { isLiteralPattern, searchQuery } from '../grep_helper.ts'
@@ -18,7 +18,7 @@ import { CALENDAR_FILE, parseEventFilename } from '../../resource/gcal/event_ent
import type { PathSpec } from '../../types.ts'
import { eisdir, enoent } from '../../utils/errors.ts'
import { dayBounds } from './day.ts'
import { listEvents } from './client.ts'
import { listEvents } from './_client.ts'
import { bucketZone, calendarIndex, calendarPayload, normalize } from './readdir.ts'
import { compactJsonBytes } from '../render/json.ts'
@@ -37,7 +37,7 @@ import {
validDay,
windowBounds,
} from './day.ts'
import { listCalendars, listEvents } from './client.ts'
import { listCalendars, listEvents } from './_client.ts'
import { compareCodePoints } from '../../utils/sort.ts'
import { compactJsonBytes } from '../render/json.ts'
@@ -79,7 +79,7 @@ const EVENTS: Record<string, JsonValue>[] = [
const listed: [string, string, string][] = []
const deleted: [string, string][] = []
vi.mock('./client.ts', () => ({
vi.mock('./_client.ts', () => ({
listCalendars: (_tm: unknown, minAccessRole?: string) => {
const all = [PRIMARY, TEAM, SHARED]
if (minAccessRole === undefined || minAccessRole === '') return Promise.resolve(all)
@@ -18,7 +18,7 @@ import type { IndexCacheStore } from '../../cache/index/store.ts'
import { parseEventFilename } from '../../resource/gcal/event_entry.ts'
import type { PathSpec } from '../../types.ts'
import { eacces, eisdir, enoent } from '../../utils/errors.ts'
import { deleteEvent } from './client.ts'
import { deleteEvent } from './_client.ts'
import { calendarIndex, normalize } from './readdir.ts'
const WRITABLE_ROLES = new Set(['owner', 'writer'])
@@ -16,7 +16,7 @@ import { mountKey } from '../../utils/key_prefix.ts'
import { describe, expect, it } from 'vitest'
import { PathSpec } from '../../types.ts'
import type { TreeEntry } from './tree_entry.ts'
import { countScopeFiles, isRepoRoot, scopeRelativeKey, shouldUseSearch } from './scope.ts'
import { countScopeFiles, isRepoRoot, scopeRelativeKey, shouldUseSearch } from './pushdown.ts'
const TREE: Record<string, TreeEntry> = {
docs: { path: 'docs', type: 'tree', sha: 's1', size: null },
@@ -12,7 +12,7 @@ const ENCODER = new TextEncoder()
type Mem0Scope = { level: 'root' } | { level: 'memory'; memoryId: string } | { level: 'invalid' }
function detect(path: PathSpec): Mem0Scope {
function detectScope(path: PathSpec): Mem0Scope {
const key = stripSlash(path.resourcePath)
if (key === '') return { level: 'root' }
const parts = key.split('/')
@@ -41,7 +41,7 @@ async function resolveMemory(
path: PathSpec,
index?: IndexCacheStore,
): Promise<Record<string, unknown>> {
const scope = detect(path)
const scope = detectScope(path)
if (scope.level !== 'memory') throw enoent(path)
return (await cachedMemory(index, path)) ?? getMemory(accessor, scope.memoryId, path)
}
@@ -67,7 +67,7 @@ export async function readdir(
path: PathSpec,
index?: IndexCacheStore,
): Promise<string[]> {
const scope = detect(path)
const scope = detectScope(path)
if (scope.level === 'invalid') throw enoent(path)
if (scope.level !== 'root') throw enotdir(path)
if (index !== undefined) {
@@ -122,7 +122,7 @@ export async function stat(
path: PathSpec,
index?: IndexCacheStore,
): Promise<FileStat> {
const scope = detect(path)
const scope = detectScope(path)
if (scope.level === 'root') return new FileStat({ name: '/', type: FileType.DIRECTORY })
if (scope.level !== 'memory') throw enoent(path)
return fileStat(await resolveMemory(accessor, path, index))
@@ -1,6 +1,6 @@
import { afterEach, describe, expect, it, vi } from 'vitest'
import { graphGet, graphList } from './client.ts'
import { graphGet, graphList } from './_client.ts'
import { resolveMsGraphConfig } from './config.ts'
afterEach(() => {
@@ -37,7 +37,7 @@ import {
graphStream,
pollMonitor,
uploadChunk,
} from './client.ts'
} from './_client.ts'
import { compareCodePoints } from '../../utils/sort.ts'
const SIMPLE_UPLOAD_MAX = 4 * 1024 * 1024
@@ -25,7 +25,7 @@ import type { FindOptions } from '../../resource/base.ts'
import { FileStat, FileType, type PathSpec } from '../../types.ts'
import { enoent } from '../../utils/errors.ts'
import { mountPrefixOf } from '../../utils/key_prefix.ts'
import { GraphError, graphDelete, graphGet } from '../msgraph/client.ts'
import { GraphError, graphDelete, graphGet } from '../msgraph/_client.ts'
import {
asNumber,
copyTree,
@@ -34,7 +34,7 @@ import { FileStat, FileType, type PathSpec } from '../../types.ts'
import { enoent } from '../../utils/errors.ts'
import { mountPrefixOf } from '../../utils/key_prefix.ts'
import { stripSlash } from '../../utils/slash.ts'
import { GraphError, graphDelete } from '../msgraph/client.ts'
import { GraphError, graphDelete } from '../msgraph/_client.ts'
import {
copyTree,
createChildFolder,