@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.
- package/README.md +429 -0
- package/dist/ai/index.d.ts +48 -0
- package/dist/ai/index.js +25 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/anthropic/index.d.ts +85 -0
- package/dist/anthropic/index.js +64 -0
- package/dist/anthropic/index.js.map +1 -0
- package/dist/chunk-A3AOZFPE.js +474 -0
- package/dist/chunk-A3AOZFPE.js.map +1 -0
- package/dist/chunk-FXEX72CO.js +43 -0
- package/dist/chunk-FXEX72CO.js.map +1 -0
- package/dist/chunk-JXXUBMF6.js +61 -0
- package/dist/chunk-JXXUBMF6.js.map +1 -0
- package/dist/chunk-QT3Y4ZIS.js +547 -0
- package/dist/chunk-QT3Y4ZIS.js.map +1 -0
- package/dist/{types.d.ts → client-B_I_0i1T.d.ts} +69 -37
- package/dist/index.d.ts +21 -5
- package/dist/index.js +3 -547
- package/dist/index.js.map +1 -0
- package/dist/instructions-BE0g1eFs.d.ts +284 -0
- package/dist/mcp/bin.d.ts +1 -0
- package/dist/mcp/bin.js +21 -0
- package/dist/mcp/bin.js.map +1 -0
- package/dist/mcp/index.d.ts +29 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/openai/index.d.ts +60 -0
- package/dist/openai/index.js +75 -0
- package/dist/openai/index.js.map +1 -0
- package/package.json +56 -8
- package/dist/api.d.ts +0 -10
- package/dist/api.d.ts.map +0 -1
- package/dist/client.d.ts +0 -13
- package/dist/client.d.ts.map +0 -1
- package/dist/config.d.ts +0 -8
- package/dist/config.d.ts.map +0 -1
- package/dist/errors.d.ts +0 -18
- package/dist/errors.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mirror.d.ts +0 -6
- package/dist/mirror.d.ts.map +0 -1
- package/dist/repo.d.ts +0 -28
- package/dist/repo.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils.d.ts +0 -5
- 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
|
-
|
|
1
|
+
interface GitMorphOptions {
|
|
2
2
|
token?: string;
|
|
3
3
|
host?: string;
|
|
4
4
|
}
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
52
|
+
interface MirrorResult {
|
|
53
53
|
repository: Repository;
|
|
54
|
-
repo:
|
|
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
|
-
|
|
60
|
+
interface LineRange {
|
|
61
61
|
start: number;
|
|
62
62
|
end: number;
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
interface ReadFileOptions {
|
|
65
65
|
ref?: string;
|
|
66
66
|
lines?: LineRange[];
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
interface FileContent {
|
|
69
69
|
path: string;
|
|
70
70
|
content: string;
|
|
71
71
|
totalLines: number;
|
|
72
72
|
lines?: LineRange[];
|
|
73
73
|
}
|
|
74
|
-
|
|
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
|
-
|
|
81
|
+
interface GrepSubmatch {
|
|
82
82
|
match: string;
|
|
83
83
|
startOffset: number;
|
|
84
84
|
endOffset: number;
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
interface GrepMatch {
|
|
87
87
|
path: string;
|
|
88
88
|
lineNumber: number;
|
|
89
89
|
lineContent: string;
|
|
90
90
|
submatches: GrepSubmatch[];
|
|
91
91
|
}
|
|
92
|
-
|
|
92
|
+
interface GrepResult {
|
|
93
93
|
matches: GrepMatch[];
|
|
94
94
|
total: number;
|
|
95
95
|
}
|
|
96
|
-
|
|
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
|
-
|
|
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
|
-
|
|
114
|
+
interface GrepAllResult {
|
|
115
115
|
matches: GrepAllMatch[];
|
|
116
116
|
total: number;
|
|
117
117
|
}
|
|
118
|
-
|
|
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
|
-
|
|
127
|
+
interface ListDirOptions {
|
|
128
128
|
path?: string;
|
|
129
129
|
ref?: string;
|
|
130
130
|
recursive?: boolean;
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
interface ListDirEntry {
|
|
133
133
|
path: string;
|
|
134
134
|
type: "file" | "dir";
|
|
135
135
|
size?: number;
|
|
136
136
|
mode: string;
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
interface ListDirResult {
|
|
139
139
|
entries: ListDirEntry[];
|
|
140
140
|
truncated: boolean;
|
|
141
141
|
}
|
|
142
|
-
|
|
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
|
-
|
|
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
|
-
|
|
158
|
+
interface Branch {
|
|
159
159
|
name: string;
|
|
160
160
|
commit: BranchCommit;
|
|
161
161
|
protected: boolean;
|
|
162
162
|
}
|
|
163
|
-
|
|
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
|
-
|
|
177
|
+
interface CommitUser {
|
|
178
178
|
name: string;
|
|
179
179
|
email: string;
|
|
180
180
|
date: string;
|
|
181
181
|
}
|
|
182
|
-
|
|
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
|
-
|
|
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
|
-
|
|
205
|
+
interface GlobResult {
|
|
206
206
|
entries: TreeEntry[];
|
|
207
207
|
truncated: boolean;
|
|
208
208
|
}
|
|
209
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 };
|