@morphllm/gitmorph-sdk 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +429 -0
  2. package/dist/ai/index.d.ts +48 -0
  3. package/dist/ai/index.js +25 -0
  4. package/dist/ai/index.js.map +1 -0
  5. package/dist/anthropic/index.d.ts +85 -0
  6. package/dist/anthropic/index.js +64 -0
  7. package/dist/anthropic/index.js.map +1 -0
  8. package/dist/chunk-A3AOZFPE.js +474 -0
  9. package/dist/chunk-A3AOZFPE.js.map +1 -0
  10. package/dist/chunk-FXEX72CO.js +43 -0
  11. package/dist/chunk-FXEX72CO.js.map +1 -0
  12. package/dist/chunk-JXXUBMF6.js +61 -0
  13. package/dist/chunk-JXXUBMF6.js.map +1 -0
  14. package/dist/chunk-QT3Y4ZIS.js +547 -0
  15. package/dist/chunk-QT3Y4ZIS.js.map +1 -0
  16. package/dist/{types.d.ts → client-B_I_0i1T.d.ts} +69 -37
  17. package/dist/index.d.ts +21 -5
  18. package/dist/index.js +3 -547
  19. package/dist/index.js.map +1 -0
  20. package/dist/instructions-BE0g1eFs.d.ts +284 -0
  21. package/dist/mcp/bin.d.ts +1 -0
  22. package/dist/mcp/bin.js +21 -0
  23. package/dist/mcp/bin.js.map +1 -0
  24. package/dist/mcp/index.d.ts +29 -0
  25. package/dist/mcp/index.js +5 -0
  26. package/dist/mcp/index.js.map +1 -0
  27. package/dist/openai/index.d.ts +60 -0
  28. package/dist/openai/index.js +75 -0
  29. package/dist/openai/index.js.map +1 -0
  30. package/package.json +56 -8
  31. package/dist/api.d.ts +0 -10
  32. package/dist/api.d.ts.map +0 -1
  33. package/dist/client.d.ts +0 -13
  34. package/dist/client.d.ts.map +0 -1
  35. package/dist/config.d.ts +0 -8
  36. package/dist/config.d.ts.map +0 -1
  37. package/dist/errors.d.ts +0 -18
  38. package/dist/errors.d.ts.map +0 -1
  39. package/dist/index.d.ts.map +0 -1
  40. package/dist/mirror.d.ts +0 -6
  41. package/dist/mirror.d.ts.map +0 -1
  42. package/dist/repo.d.ts +0 -28
  43. package/dist/repo.d.ts.map +0 -1
  44. package/dist/types.d.ts.map +0 -1
  45. package/dist/utils.d.ts +0 -5
  46. package/dist/utils.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/api.ts","../src/repo.ts","../src/config.ts","../src/mirror.ts","../src/utils.ts","../src/client.ts"],"names":[],"mappings":"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","file":"chunk-QT3Y4ZIS.js","sourcesContent":["export class GitMorphError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"GitMorphError\";\n }\n}\n\nexport class AuthenticationError extends GitMorphError {\n constructor(message?: string) {\n super(\n message ??\n \"Not authenticated. Provide a token or configure ~/.config/gm/config.json\"\n );\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class ApiError extends GitMorphError {\n status: number;\n url: string;\n\n constructor(message: string, status: number, url: string) {\n super(message);\n this.name = \"ApiError\";\n this.status = status;\n this.url = url;\n }\n}\n\nexport class MirrorError extends GitMorphError {\n constructor(message: string) {\n super(message);\n this.name = \"MirrorError\";\n }\n}\n\nexport class GrepError extends GitMorphError {\n constructor(message: string) {\n super(message);\n this.name = \"GrepError\";\n }\n}\n","import { ApiError } from \"./errors.js\";\n\ninterface RequestOptions {\n host: string;\n token: string;\n body?: unknown;\n params?: Record<string, string>;\n}\n\nfunction buildUrl(path: string, options: RequestOptions): URL {\n const baseUrl = `https://${options.host}/api/v1`;\n const url = new URL(path.startsWith(\"/\") ? `${baseUrl}${path}` : `${baseUrl}/${path}`);\n if (options.params) {\n for (const [key, value] of Object.entries(options.params)) {\n url.searchParams.set(key, value);\n }\n }\n return url;\n}\n\nfunction buildHeaders(options: RequestOptions): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `token ${options.token}`,\n };\n if (options.body) {\n headers[\"Content-Type\"] = \"application/json\";\n headers[\"Accept\"] = \"application/json\";\n } else {\n headers[\"Accept\"] = \"application/json\";\n }\n return headers;\n}\n\nasync function handleErrorResponse(res: Response, url: URL): Promise<never> {\n let message = `API request failed: ${res.status}`;\n try {\n const body = await res.json();\n if (body.message) message = body.message;\n } catch {}\n throw new ApiError(message, res.status, url.toString());\n}\n\nexport async function apiRequest<T = unknown>(\n method: string,\n path: string,\n options: RequestOptions\n): Promise<T> {\n const url = buildUrl(path, options);\n const headers = buildHeaders(options);\n\n const res = await fetch(url.toString(), {\n method,\n headers,\n body: options.body ? JSON.stringify(options.body) : undefined,\n });\n\n if (!res.ok) return handleErrorResponse(res, url);\n if (res.status === 204) return undefined as T;\n\n return (await res.json()) as T;\n}\n\nexport async function apiRequestRaw(\n method: string,\n path: string,\n options: RequestOptions\n): Promise<string> {\n const url = buildUrl(path, options);\n const headers: Record<string, string> = {\n Authorization: `token ${options.token}`,\n };\n\n const res = await fetch(url.toString(), { method, headers });\n\n if (!res.ok) return handleErrorResponse(res, url);\n\n return res.text();\n}\n","import { apiRequest, apiRequestRaw } from \"./api.js\";\nimport { GitMorphError, GrepError } from \"./errors.js\";\nimport type {\n Repository,\n ReadFileOptions,\n FileContent,\n GrepOptions,\n GrepMatch,\n GrepResult,\n GrepSubmatch,\n FileContentEntry,\n GlobOptions,\n GlobResult,\n ListDirOptions,\n ListDirEntry,\n ListDirResult,\n ListBranchesOptions,\n Branch,\n BranchCommit,\n ListCommitsOptions,\n Commit,\n TreeEntry,\n TreeResponse,\n} from \"./types.js\";\n\n// ── Server response shapes (not exported) ────────────────────────────────────\n\ninterface CodeSearchLine {\n num: number;\n content: string;\n}\n\ninterface CodeSearchResultItem {\n repo_id: number;\n repo_name: string;\n filename: string;\n commit_id: string;\n language: string;\n color: string;\n lines: CodeSearchLine[];\n updated_unix: number;\n}\n\ninterface CodeSearchResponse {\n ok: boolean;\n data: CodeSearchResultItem[];\n total: number;\n}\n\ninterface ContentsResponseRaw {\n name: string;\n path: string;\n sha: string;\n size: number;\n type: string;\n encoding: string | null;\n content: string | null;\n download_url: string | null;\n}\n\nexport class GitMorphRepo {\n private owner: string;\n private name: string;\n private auth: { token: string; host: string };\n private treeCache = new Map<string, TreeEntry[]>();\n private defaultRef?: string;\n private repoId?: number;\n\n constructor(\n owner: string,\n name: string,\n auth: { token: string; host: string }\n ) {\n this.owner = owner;\n this.name = name;\n this.auth = auth;\n }\n\n private async resolveRepoInfo(): Promise<{ ref: string; id: number }> {\n if (this.defaultRef && this.repoId) {\n return { ref: this.defaultRef, id: this.repoId };\n }\n const info = await apiRequest<Repository>(\n \"GET\",\n `/repos/${this.owner}/${this.name}`,\n this.auth\n );\n this.defaultRef = info.default_branch;\n this.repoId = info.id;\n return { ref: this.defaultRef, id: this.repoId };\n }\n\n private async resolveRef(ref?: string): Promise<string> {\n if (ref) return ref;\n const info = await this.resolveRepoInfo();\n return info.ref;\n }\n\n private async resolveRepoId(): Promise<number> {\n const info = await this.resolveRepoInfo();\n return info.id;\n }\n\n private async fetchTree(ref: string): Promise<{ entries: TreeEntry[]; truncated: boolean }> {\n if (this.treeCache.has(ref)) {\n return { entries: this.treeCache.get(ref)!, truncated: false };\n }\n\n const encodedRef = encodeURIComponent(ref);\n const firstPage = await apiRequest<TreeResponse>(\n \"GET\",\n `/repos/${this.owner}/${this.name}/git/trees/${encodedRef}`,\n { ...this.auth, params: { recursive: \"true\", per_page: \"10000\" } }\n );\n\n let allEntries = [...firstPage.tree];\n let truncated = firstPage.truncated;\n\n if (truncated && firstPage.total_count && firstPage.total_count > allEntries.length) {\n let page = 2;\n while (allEntries.length < firstPage.total_count) {\n const nextPage = await apiRequest<TreeResponse>(\n \"GET\",\n `/repos/${this.owner}/${this.name}/git/trees/${encodedRef}`,\n { ...this.auth, params: { recursive: \"true\", per_page: \"10000\", page: String(page) } }\n );\n if (!nextPage.tree.length) break;\n allEntries = allEntries.concat(nextPage.tree);\n truncated = nextPage.truncated;\n page++;\n }\n }\n\n this.treeCache.set(ref, allEntries);\n return { entries: allEntries, truncated };\n }\n\n private async fetchRaw(path: string, ref: string): Promise<string> {\n const encodedRef = encodeURIComponent(ref);\n return apiRequestRaw(\n \"GET\",\n `/repos/${this.owner}/${this.name}/raw/${path}`,\n { ...this.auth, params: { ref: encodedRef } }\n );\n }\n\n // ── readFile ──────────────────────────────────────────────────────────────\n\n async readFile(path: string, options?: ReadFileOptions): Promise<FileContent> {\n const ref = await this.resolveRef(options?.ref);\n\n if (options?.lines) {\n for (const range of options.lines) {\n if (range.start < 1) {\n throw new GitMorphError(`LineRange.start must be >= 1, got ${range.start}`);\n }\n if (range.end < range.start) {\n throw new GitMorphError(`LineRange.end (${range.end}) must be >= start (${range.start})`);\n }\n }\n }\n\n const rawContent = await this.fetchRaw(path, ref);\n const allLines = rawContent.split(\"\\n\");\n const totalLines = allLines.length;\n\n if (!options?.lines) {\n return { path, content: rawContent, totalLines };\n }\n\n const clampedRanges: { start: number; end: number }[] = [];\n const extracted: string[] = [];\n\n for (const range of options.lines) {\n const start = Math.min(range.start, totalLines);\n const end = Math.min(range.end, totalLines);\n clampedRanges.push({ start, end });\n extracted.push(allLines.slice(start - 1, end).join(\"\\n\"));\n }\n\n return {\n path,\n content: extracted.join(\"\\n\"),\n totalLines,\n lines: clampedRanges,\n };\n }\n\n // ── grep (server-side via Bleve/git-grep) ─────────────────────────────────\n\n async grep(options: GrepOptions): Promise<GrepResult> {\n if (!options.pattern) {\n throw new GrepError(\"pattern is required\");\n }\n\n const repoId = await this.resolveRepoId();\n\n const params: Record<string, string> = {\n q: options.pattern,\n repo_id: String(repoId),\n };\n if (options.language) params.l = options.language;\n if (options.maxMatches) params.limit = String(Math.min(options.maxMatches, 50));\n if (options.page) params.page = String(options.page);\n\n const response = await apiRequest<CodeSearchResponse>(\n \"GET\",\n \"/repos/code/search\",\n { ...this.auth, params }\n );\n\n if (!response.ok) {\n throw new GrepError(\"Code search returned ok=false\");\n }\n\n const matches: GrepMatch[] = [];\n const caseSensitive = options.caseSensitive ?? false;\n const flags = caseSensitive ? \"g\" : \"gi\";\n\n // Build regex for submatch extraction. The server already matched;\n // we just need offsets within each returned line.\n let regex: RegExp | null = null;\n try {\n regex = new RegExp(options.pattern, flags);\n } catch {\n // Pattern may not be valid JS regex (server uses word/fixed-string matching).\n // Submatch extraction will be skipped.\n }\n\n for (const item of response.data) {\n for (const line of item.lines) {\n // Server returns HTML-highlighted content; strip tags for plain text\n const plainContent = line.content.replace(/<[^>]*>/g, \"\");\n\n const submatches: GrepSubmatch[] = [];\n\n if (regex) {\n regex.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = regex.exec(plainContent)) !== null) {\n submatches.push({\n match: m[0],\n startOffset: m.index,\n endOffset: m.index + m[0].length,\n });\n if (!regex.global) break;\n }\n }\n\n matches.push({\n path: item.filename,\n lineNumber: line.num,\n lineContent: plainContent,\n submatches,\n });\n }\n }\n\n return { matches, total: response.total };\n }\n\n // ── getFileContents (batch) ───────────────────────────────────────────────\n\n async getFileContents(\n paths: string[],\n options?: { ref?: string }\n ): Promise<(FileContentEntry | null)[]> {\n if (paths.length === 0) return [];\n\n const ref = await this.resolveRef(options?.ref);\n const encodedBody = JSON.stringify({ files: paths });\n\n const raw = await apiRequest<(ContentsResponseRaw | null)[]>(\n \"GET\",\n `/repos/${this.owner}/${this.name}/file-contents`,\n {\n ...this.auth,\n params: { ref, body: encodedBody },\n }\n );\n\n return raw.map((item) => {\n if (!item) return null;\n return {\n name: item.name,\n path: item.path,\n sha: item.sha,\n size: item.size,\n encoding: item.encoding,\n content: item.content ? (\n item.encoding === \"base64\"\n ? Buffer.from(item.content, \"base64\").toString(\"utf-8\")\n : item.content\n ) : null,\n downloadUrl: item.download_url,\n };\n });\n }\n\n // ── glob ──────────────────────────────────────────────────────────────────\n\n async glob(options: GlobOptions): Promise<GlobResult> {\n const ref = await this.resolveRef(options.ref);\n const encodedRef = encodeURIComponent(ref);\n\n const params = new URLSearchParams();\n for (const p of options.patterns) {\n params.append(\"pattern\", p);\n }\n if (options.prefix) params.set(\"prefix\", options.prefix);\n if (options.sizes === false) params.set(\"sizes\", \"false\");\n if (options.limit) params.set(\"limit\", String(options.limit));\n\n const url = `/repos/${this.owner}/${this.name}/git/trees/${encodedRef}/glob?${params.toString()}`;\n const data = await apiRequest<TreeResponse>(\"GET\", url, this.auth);\n\n return {\n entries: data.tree,\n truncated: data.truncated,\n };\n }\n\n // ── listBranches ──────────────────────────────────────────────────────────\n\n async listBranches(options?: ListBranchesOptions): Promise<Branch[]> {\n const params: Record<string, string> = {};\n if (options?.page) params.page = String(options.page);\n if (options?.limit) params.limit = String(options.limit);\n\n const raw = await apiRequest<any[]>(\n \"GET\",\n `/repos/${this.owner}/${this.name}/branches`,\n { ...this.auth, params }\n );\n\n return raw.map((b) => ({\n name: b.name,\n commit: {\n id: b.commit?.id ?? \"\",\n message: b.commit?.message ?? \"\",\n url: b.commit?.url ?? \"\",\n timestamp: b.commit?.timestamp ?? \"\",\n author: {\n name: b.commit?.author?.name ?? \"\",\n email: b.commit?.author?.email ?? \"\",\n },\n } satisfies BranchCommit,\n protected: b.protected ?? false,\n }));\n }\n\n // ── listCommits ──────────────────────────────────────────────────────────\n\n async listCommits(options?: ListCommitsOptions): Promise<Commit[]> {\n const params: Record<string, string> = {\n stat: \"false\",\n verification: \"false\",\n files: \"false\",\n };\n if (options?.sha) params.sha = options.sha;\n if (options?.path) params.path = options.path;\n if (options?.since) params.since = options.since;\n if (options?.until) params.until = options.until;\n if (options?.page) params.page = String(options.page);\n if (options?.limit) params.limit = String(options.limit);\n\n const raw = await apiRequest<any[]>(\n \"GET\",\n `/repos/${this.owner}/${this.name}/commits`,\n { ...this.auth, params }\n );\n\n return raw.map((c) => ({\n sha: c.sha ?? \"\",\n message: c.commit?.message ?? \"\",\n author: {\n name: c.commit?.author?.name ?? \"\",\n email: c.commit?.author?.email ?? \"\",\n date: c.commit?.author?.date ?? \"\",\n },\n committer: {\n name: c.commit?.committer?.name ?? \"\",\n email: c.commit?.committer?.email ?? \"\",\n date: c.commit?.committer?.date ?? \"\",\n },\n html_url: c.html_url ?? \"\",\n parents: (c.parents ?? []).map((p: any) => ({\n sha: p.sha ?? \"\",\n url: p.url ?? \"\",\n })),\n }));\n }\n\n // ── listDir ───────────────────────────────────────────────────────────────\n\n async listDir(options?: ListDirOptions): Promise<ListDirResult> {\n const ref = await this.resolveRef(options?.ref);\n const { entries: treeEntries, truncated } = await this.fetchTree(ref);\n const prefix = options?.path?.replace(/\\/$/, \"\") ?? \"\";\n\n const filtered = treeEntries.filter((e) => {\n if (prefix && !e.path.startsWith(prefix)) return false;\n\n if (!options?.recursive) {\n const relative = prefix ? e.path.slice(prefix.length).replace(/^\\//, \"\") : e.path;\n if (relative.includes(\"/\")) return false;\n }\n\n return true;\n });\n\n const entries: ListDirEntry[] = filtered.map((e) => ({\n path: e.path,\n type: e.type === \"blob\" ? \"file\" : \"dir\",\n size: e.size,\n mode: e.mode,\n }));\n\n return { entries, truncated };\n }\n}\n","import { readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { AuthenticationError } from \"./errors.js\";\n\nconst DEFAULT_HOST = \"gitmorph.com\";\n\ninterface GmConfig {\n host: string;\n token: string;\n refreshToken?: string;\n expiresAt?: number;\n clientId?: string;\n user?: string;\n}\n\nfunction configPath(): string {\n const dir = process.env.GM_CONFIG_DIR || join(process.env.HOME || \"\", \".config\", \"gm\");\n return join(dir, \"config.json\");\n}\n\nfunction loadConfig(): GmConfig | null {\n try {\n const raw = readFileSync(configPath(), \"utf-8\");\n return JSON.parse(raw) as GmConfig;\n } catch {\n return null;\n }\n}\n\nexport function resolveAuth(options?: { token?: string; host?: string }): {\n token: string;\n host: string;\n} {\n // Token: constructor > env > config file\n const token =\n options?.token ||\n process.env.GM_TOKEN ||\n loadConfig()?.token ||\n null;\n\n if (!token) {\n throw new AuthenticationError();\n }\n\n // Host: constructor > env > config file > default\n const host =\n options?.host ||\n process.env.GM_HOST ||\n loadConfig()?.host ||\n DEFAULT_HOST;\n\n return { token, host };\n}\n","import { apiRequest } from \"./api.js\";\nimport { MirrorError } from \"./errors.js\";\nimport type { Repository, MirrorOptions } from \"./types.js\";\n\nconst SERVICE_MAP: Record<string, string> = {\n github: \"github\",\n gitea: \"gitea\",\n gitlab: \"gitlab\",\n};\n\n/**\n * Parse a source into a clone URL and service type.\n * Accepts:\n * - \"https://github.com/owner/repo\"\n * - \"https://github.com/owner/repo.git\"\n * - \"owner/repo\" (defaults to github)\n */\nfunction parseSource(\n source: string,\n options?: MirrorOptions\n): { cloneAddr: string; service: string; repoName: string; owner: string } {\n let cloneAddr: string;\n let service: string;\n let owner: string;\n let repoName: string;\n\n if (source.startsWith(\"https://\") || source.startsWith(\"http://\")) {\n const url = new URL(source);\n const pathParts = url.pathname.replace(/^\\//, \"\").replace(/\\.git$/, \"\").split(\"/\");\n if (pathParts.length < 2 || !pathParts[0] || !pathParts[1]) {\n throw new MirrorError(`Cannot parse source URL: \"${source}\". Expected \"https://host/owner/repo\".`);\n }\n owner = pathParts[0];\n repoName = pathParts[1];\n cloneAddr = `${url.origin}/${owner}/${repoName}.git`;\n\n // Auto-detect service from hostname\n const hostname = url.hostname;\n if (hostname.includes(\"github\")) service = SERVICE_MAP.github;\n else if (hostname.includes(\"gitlab\")) service = SERVICE_MAP.gitlab;\n else if (hostname.includes(\"gitea\")) service = SERVICE_MAP.gitea;\n else service = SERVICE_MAP[options?.source ?? \"github\"];\n } else {\n // Shorthand: \"owner/repo\"\n const parts = source.replace(/\\.git$/, \"\").split(\"/\");\n if (parts.length !== 2 || !parts[0] || !parts[1]) {\n throw new MirrorError(`Invalid source: \"${source}\". Expected \"owner/repo\" or a full URL.`);\n }\n owner = parts[0];\n repoName = parts[1];\n const serviceKey = options?.source ?? \"github\";\n service = SERVICE_MAP[serviceKey];\n\n const hostMap: Record<string, string> = {\n github: \"https://github.com\",\n gitlab: \"https://gitlab.com\",\n gitea: \"https://gitea.com\",\n };\n cloneAddr = `${hostMap[serviceKey]}/${owner}/${repoName}.git`;\n }\n\n return {\n cloneAddr,\n service,\n repoName: options?.repoName ?? repoName,\n owner,\n };\n}\n\nexport async function mirrorRepository(\n source: string,\n auth: { token: string; host: string },\n options?: MirrorOptions\n): Promise<Repository> {\n const { cloneAddr, service, repoName } = parseSource(source, options);\n\n const body: Record<string, unknown> = {\n clone_addr: cloneAddr,\n repo_name: repoName,\n service,\n mirror: true,\n private: options?.private ?? false,\n wiki: options?.wiki ?? false,\n issues: options?.issues ?? false,\n pull_requests: options?.pullRequests ?? false,\n releases: options?.releases ?? false,\n labels: options?.labels ?? false,\n milestones: options?.milestones ?? false,\n lfs: options?.lfs ?? false,\n };\n\n try {\n return await apiRequest<Repository>(\"POST\", \"/repos/migrate\", {\n ...auth,\n body,\n });\n } catch (err: unknown) {\n if (err instanceof Error && \"status\" in err) throw err; // let ApiError through\n throw new MirrorError((err as Error).message);\n }\n}\n","import { GitMorphError } from \"./errors.js\";\n\nexport function parseRepoSlug(input: string): { owner: string; name: string } {\n const cleaned = input.replace(/\\.git$/, \"\");\n const parts = cleaned.split(\"/\");\n if (parts.length !== 2 || !parts[0] || !parts[1]) {\n throw new GitMorphError(\n `Invalid repo format: \"${input}\". Expected \"owner/repo\".`\n );\n }\n return { owner: parts[0], name: parts[1] };\n}\n","import { resolveAuth } from \"./config.js\";\nimport { apiRequest } from \"./api.js\";\nimport { mirrorRepository } from \"./mirror.js\";\nimport { GitMorphRepo } from \"./repo.js\";\nimport { parseRepoSlug } from \"./utils.js\";\nimport type {\n GitMorphOptions,\n Repository,\n MirrorOptions,\n MirrorResult,\n GrepAllOptions,\n GrepAllResult,\n GrepAllMatch,\n} from \"./types.js\";\n\n// Server response shape for global code search\ninterface CodeSearchLine {\n num: number;\n content: string;\n}\n\ninterface CodeSearchResultItem {\n repo_id: number;\n repo_name: string;\n filename: string;\n commit_id: string;\n language: string;\n color: string;\n lines: CodeSearchLine[];\n updated_unix: number;\n}\n\ninterface CodeSearchResponse {\n ok: boolean;\n data: CodeSearchResultItem[];\n total: number;\n}\n\nexport class GitMorph {\n private token: string;\n private host: string;\n\n constructor(options?: GitMorphOptions) {\n const auth = resolveAuth(options);\n this.token = auth.token;\n this.host = auth.host;\n }\n\n private get auth() {\n return { token: this.token, host: this.host };\n }\n\n repo(slug: string): GitMorphRepo {\n const { owner, name } = parseRepoSlug(slug);\n return new GitMorphRepo(owner, name, this.auth);\n }\n\n async getRepositoryInfo(slug: string): Promise<Repository> {\n const { owner, name } = parseRepoSlug(slug);\n return apiRequest<Repository>(\"GET\", `/repos/${owner}/${name}`, this.auth);\n }\n\n async mirror(source: string, options?: MirrorOptions): Promise<MirrorResult> {\n const repository = await mirrorRepository(source, this.auth, options);\n const repo = this.repo(repository.full_name);\n return { repository, repo };\n }\n\n async grepAll(options: GrepAllOptions): Promise<GrepAllResult> {\n const params: Record<string, string> = {\n q: options.pattern,\n };\n if (options.language) params.l = options.language;\n if (options.page) params.page = String(options.page);\n if (options.limit) params.limit = String(Math.min(options.limit, 50));\n if (options.sortByStars) params.sort_by_stars = \"true\";\n\n const response = await apiRequest<CodeSearchResponse>(\n \"GET\",\n \"/repos/code/search\",\n { ...this.auth, params }\n );\n\n const matches: GrepAllMatch[] = response.data.map((item) => ({\n repoId: item.repo_id,\n repoName: item.repo_name,\n filename: item.filename,\n commitId: item.commit_id,\n language: item.language,\n lines: item.lines.map((l) => ({ num: l.num, content: l.content })),\n }));\n\n return { matches, total: response.total };\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- export interface GitMorphOptions {
1
+ interface GitMorphOptions {
2
2
  token?: string;
3
3
  host?: string;
4
4
  }
5
- export interface User {
5
+ interface User {
6
6
  id: number;
7
7
  login: string;
8
8
  full_name: string;
@@ -11,7 +11,7 @@ export interface User {
11
11
  created: string;
12
12
  is_admin: boolean;
13
13
  }
14
- export interface Repository {
14
+ interface Repository {
15
15
  id: number;
16
16
  owner: User;
17
17
  name: string;
@@ -37,7 +37,7 @@ export interface Repository {
37
37
  has_pull_requests: boolean;
38
38
  language: string;
39
39
  }
40
- export interface MirrorOptions {
40
+ interface MirrorOptions {
41
41
  source?: "github" | "gitlab" | "gitea";
42
42
  repoName?: string;
43
43
  private?: boolean;
@@ -49,58 +49,58 @@ export interface MirrorOptions {
49
49
  milestones?: boolean;
50
50
  lfs?: boolean;
51
51
  }
52
- export interface MirrorResult {
52
+ interface MirrorResult {
53
53
  repository: Repository;
54
- repo: import("./repo.js").GitMorphRepo;
54
+ repo: GitMorphRepo;
55
55
  }
56
56
  /**
57
57
  * 1-indexed, inclusive on both ends.
58
58
  * `{ start: 1, end: 5 }` returns lines 1, 2, 3, 4, 5.
59
59
  */
60
- export interface LineRange {
60
+ interface LineRange {
61
61
  start: number;
62
62
  end: number;
63
63
  }
64
- export interface ReadFileOptions {
64
+ interface ReadFileOptions {
65
65
  ref?: string;
66
66
  lines?: LineRange[];
67
67
  }
68
- export interface FileContent {
68
+ interface FileContent {
69
69
  path: string;
70
70
  content: string;
71
71
  totalLines: number;
72
72
  lines?: LineRange[];
73
73
  }
74
- export interface GrepOptions {
74
+ interface GrepOptions {
75
75
  pattern: string;
76
76
  language?: string;
77
77
  caseSensitive?: boolean;
78
78
  maxMatches?: number;
79
79
  page?: number;
80
80
  }
81
- export interface GrepSubmatch {
81
+ interface GrepSubmatch {
82
82
  match: string;
83
83
  startOffset: number;
84
84
  endOffset: number;
85
85
  }
86
- export interface GrepMatch {
86
+ interface GrepMatch {
87
87
  path: string;
88
88
  lineNumber: number;
89
89
  lineContent: string;
90
90
  submatches: GrepSubmatch[];
91
91
  }
92
- export interface GrepResult {
92
+ interface GrepResult {
93
93
  matches: GrepMatch[];
94
94
  total: number;
95
95
  }
96
- export interface GrepAllOptions {
96
+ interface GrepAllOptions {
97
97
  pattern: string;
98
98
  language?: string;
99
99
  page?: number;
100
100
  limit?: number;
101
101
  sortByStars?: boolean;
102
102
  }
103
- export interface GrepAllMatch {
103
+ interface GrepAllMatch {
104
104
  repoId: number;
105
105
  repoName: string;
106
106
  filename: string;
@@ -111,11 +111,11 @@ export interface GrepAllMatch {
111
111
  content: string;
112
112
  }[];
113
113
  }
114
- export interface GrepAllResult {
114
+ interface GrepAllResult {
115
115
  matches: GrepAllMatch[];
116
116
  total: number;
117
117
  }
118
- export interface FileContentEntry {
118
+ interface FileContentEntry {
119
119
  name: string;
120
120
  path: string;
121
121
  sha: string;
@@ -124,28 +124,28 @@ export interface FileContentEntry {
124
124
  content: string | null;
125
125
  downloadUrl: string | null;
126
126
  }
127
- export interface ListDirOptions {
127
+ interface ListDirOptions {
128
128
  path?: string;
129
129
  ref?: string;
130
130
  recursive?: boolean;
131
131
  }
132
- export interface ListDirEntry {
132
+ interface ListDirEntry {
133
133
  path: string;
134
134
  type: "file" | "dir";
135
135
  size?: number;
136
136
  mode: string;
137
137
  }
138
- export interface ListDirResult {
138
+ interface ListDirResult {
139
139
  entries: ListDirEntry[];
140
140
  truncated: boolean;
141
141
  }
142
- export interface ListBranchesOptions {
142
+ interface ListBranchesOptions {
143
143
  /** Page number (1-indexed). */
144
144
  page?: number;
145
145
  /** Results per page (default determined by server, typically 50). */
146
146
  limit?: number;
147
147
  }
148
- export interface BranchCommit {
148
+ interface BranchCommit {
149
149
  id: string;
150
150
  message: string;
151
151
  url: string;
@@ -155,12 +155,12 @@ export interface BranchCommit {
155
155
  email: string;
156
156
  };
157
157
  }
158
- export interface Branch {
158
+ interface Branch {
159
159
  name: string;
160
160
  commit: BranchCommit;
161
161
  protected: boolean;
162
162
  }
163
- export interface ListCommitsOptions {
163
+ interface ListCommitsOptions {
164
164
  /** Branch name or SHA to list commits from. Defaults to the repo's default branch. */
165
165
  sha?: string;
166
166
  /** Only include commits that affect this file/directory path. */
@@ -174,12 +174,12 @@ export interface ListCommitsOptions {
174
174
  /** Results per page (default determined by server, typically 50). */
175
175
  limit?: number;
176
176
  }
177
- export interface CommitUser {
177
+ interface CommitUser {
178
178
  name: string;
179
179
  email: string;
180
180
  date: string;
181
181
  }
182
- export interface Commit {
182
+ interface Commit {
183
183
  sha: string;
184
184
  message: string;
185
185
  author: CommitUser;
@@ -190,7 +190,7 @@ export interface Commit {
190
190
  url: string;
191
191
  }[];
192
192
  }
193
- export interface GlobOptions {
193
+ interface GlobOptions {
194
194
  /** Doublestar glob patterns, e.g. ["**\/*.ts"]. */
195
195
  patterns: string[];
196
196
  /** Branch, tag, or commit SHA. Defaults to the repo's default branch. */
@@ -202,22 +202,54 @@ export interface GlobOptions {
202
202
  /** Maximum number of results (default 1000). */
203
203
  limit?: number;
204
204
  }
205
- export interface GlobResult {
205
+ interface GlobResult {
206
206
  entries: TreeEntry[];
207
207
  truncated: boolean;
208
208
  }
209
- export interface TreeEntry {
209
+ interface TreeEntry {
210
210
  path: string;
211
211
  mode: string;
212
212
  type: "blob" | "tree" | "commit";
213
213
  size?: number;
214
214
  sha: string;
215
215
  }
216
- export interface TreeResponse {
217
- sha: string;
218
- tree: TreeEntry[];
219
- truncated: boolean;
220
- total_count?: number;
221
- page?: number;
222
- }
223
- //# sourceMappingURL=types.d.ts.map
216
+
217
+ declare class GitMorphRepo {
218
+ private owner;
219
+ private name;
220
+ private auth;
221
+ private treeCache;
222
+ private defaultRef?;
223
+ private repoId?;
224
+ constructor(owner: string, name: string, auth: {
225
+ token: string;
226
+ host: string;
227
+ });
228
+ private resolveRepoInfo;
229
+ private resolveRef;
230
+ private resolveRepoId;
231
+ private fetchTree;
232
+ private fetchRaw;
233
+ readFile(path: string, options?: ReadFileOptions): Promise<FileContent>;
234
+ grep(options: GrepOptions): Promise<GrepResult>;
235
+ getFileContents(paths: string[], options?: {
236
+ ref?: string;
237
+ }): Promise<(FileContentEntry | null)[]>;
238
+ glob(options: GlobOptions): Promise<GlobResult>;
239
+ listBranches(options?: ListBranchesOptions): Promise<Branch[]>;
240
+ listCommits(options?: ListCommitsOptions): Promise<Commit[]>;
241
+ listDir(options?: ListDirOptions): Promise<ListDirResult>;
242
+ }
243
+
244
+ declare class GitMorph {
245
+ private token;
246
+ private host;
247
+ constructor(options?: GitMorphOptions);
248
+ private get auth();
249
+ repo(slug: string): GitMorphRepo;
250
+ getRepositoryInfo(slug: string): Promise<Repository>;
251
+ mirror(source: string, options?: MirrorOptions): Promise<MirrorResult>;
252
+ grepAll(options: GrepAllOptions): Promise<GrepAllResult>;
253
+ }
254
+
255
+ export { type Branch as B, type Commit as C, type FileContent as F, GitMorph as G, type LineRange as L, type MirrorOptions as M, type ReadFileOptions as R, type User as U, type BranchCommit as a, type CommitUser as b, type FileContentEntry as c, type GitMorphOptions as d, GitMorphRepo as e, type GlobOptions as f, type GlobResult as g, type GrepAllMatch as h, type GrepAllOptions as i, type GrepAllResult as j, type GrepMatch as k, type GrepOptions as l, type GrepResult as m, type GrepSubmatch as n, type ListBranchesOptions as o, type ListCommitsOptions as p, type ListDirEntry as q, type ListDirOptions as r, type ListDirResult as s, type MirrorResult as t, type Repository as u };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,21 @@
1
- export { GitMorph } from "./client.js";
2
- export { GitMorphRepo } from "./repo.js";
3
- export type { GitMorphOptions, Repository, User, MirrorOptions, MirrorResult, LineRange, ReadFileOptions, FileContent, GrepOptions, GrepSubmatch, GrepMatch, GrepResult, GrepAllOptions, GrepAllMatch, GrepAllResult, FileContentEntry, GlobOptions, GlobResult, ListDirOptions, ListDirEntry, ListDirResult, ListBranchesOptions, Branch, BranchCommit, ListCommitsOptions, Commit, CommitUser, } from "./types.js";
4
- export { GitMorphError, AuthenticationError, ApiError, MirrorError, GrepError, } from "./errors.js";
5
- //# sourceMappingURL=index.d.ts.map
1
+ export { B as Branch, a as BranchCommit, C as Commit, b as CommitUser, F as FileContent, c as FileContentEntry, G as GitMorph, d as GitMorphOptions, e as GitMorphRepo, f as GlobOptions, g as GlobResult, h as GrepAllMatch, i as GrepAllOptions, j as GrepAllResult, k as GrepMatch, l as GrepOptions, m as GrepResult, n as GrepSubmatch, L as LineRange, o as ListBranchesOptions, p as ListCommitsOptions, q as ListDirEntry, r as ListDirOptions, s as ListDirResult, M as MirrorOptions, t as MirrorResult, R as ReadFileOptions, u as Repository, U as User } from './client-B_I_0i1T.js';
2
+
3
+ declare class GitMorphError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ declare class AuthenticationError extends GitMorphError {
7
+ constructor(message?: string);
8
+ }
9
+ declare class ApiError extends GitMorphError {
10
+ status: number;
11
+ url: string;
12
+ constructor(message: string, status: number, url: string);
13
+ }
14
+ declare class MirrorError extends GitMorphError {
15
+ constructor(message: string);
16
+ }
17
+ declare class GrepError extends GitMorphError {
18
+ constructor(message: string);
19
+ }
20
+
21
+ export { ApiError, AuthenticationError, GitMorphError, GrepError, MirrorError };