@trebired/git-host 0.2.0 → 1.1.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/CHANGELOG.md +11 -1
- package/README.md +64 -3
- package/dist/api/handler.js +1 -1
- package/dist/api/handler.js.map +1 -1
- package/dist/api/socket_events.d.ts +7 -0
- package/dist/api/socket_events.d.ts.map +1 -0
- package/dist/api/socket_events.js +7 -0
- package/dist/api/socket_events.js.map +1 -0
- package/dist/api/socket_server.d.ts +6 -0
- package/dist/api/socket_server.d.ts.map +1 -0
- package/dist/api/socket_server.js +156 -0
- package/dist/api/socket_server.js.map +1 -0
- package/dist/core/create_git_host.js +1 -1
- package/dist/core/create_git_host.js.map +1 -1
- package/dist/core/inspect/linguist_progress.d.ts +14 -0
- package/dist/core/inspect/linguist_progress.d.ts.map +1 -0
- package/dist/core/inspect/linguist_progress.js +92 -0
- package/dist/core/inspect/linguist_progress.js.map +1 -0
- package/dist/core/inspect.d.ts +3 -1
- package/dist/core/inspect.d.ts.map +1 -1
- package/dist/core/inspect.js +74 -8
- package/dist/core/inspect.js.map +1 -1
- package/dist/http/handler.js +1 -1
- package/dist/http/handler.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logging.d.ts +2 -2
- package/dist/logging.d.ts.map +1 -1
- package/dist/logging.js +8 -131
- package/dist/logging.js.map +1 -1
- package/dist/react/client/types.d.ts +45 -2
- package/dist/react/client/types.d.ts.map +1 -1
- package/dist/react/client.d.ts +1 -1
- package/dist/react/client.d.ts.map +1 -1
- package/dist/react/client.js +147 -0
- package/dist/react/client.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/ssh/server.js +1 -1
- package/dist/ssh/server.js.map +1 -1
- package/dist/types/common.d.ts +8 -25
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/host.d.ts +5 -2
- package/dist/types/host.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/repository.d.ts +19 -1
- package/dist/types/repository.d.ts.map +1 -1
- package/dist/types/transports.d.ts +13 -4
- package/dist/types/transports.d.ts.map +1 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,11 +4,21 @@ All notable changes to `@trebired/git-host` will be documented here.
|
|
|
4
4
|
|
|
5
5
|
This project follows semantic versioning once published.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 1.1.0
|
|
8
|
+
|
|
9
|
+
- Switched package logger adaptation over to `@trebired/logger-adapter`.
|
|
10
|
+
- Added the `loggerAdapter(logger, event)` option across the logging entrypoints for callers who want exact control over the final emitted log structure.
|
|
11
|
+
|
|
12
|
+
## 1.0.0
|
|
13
|
+
|
|
14
|
+
- Marked `@trebired/git-host` as stable and bumped the package to `1.0.0`.
|
|
15
|
+
- Replaced the earlier live linguist scan streaming transport with Socket.IO through `createGitApiSocketServer()` and the typed `openLinguistSocket()` client helper.
|
|
16
|
+
- Promoted the current public API surface, including the core host, JSON API handler, smart HTTP and SSH transports, React client and hooks, and Socket.IO progress transport, as the first stable release contract.
|
|
8
17
|
|
|
9
18
|
## 0.2.0
|
|
10
19
|
|
|
11
20
|
- Added repository linguist analysis through `readLinguist()` with ref-based text blob inspection powered by `linguist-js`.
|
|
21
|
+
- Added live linguist progress reporting through `readLinguist(..., { onProgress })` and the initial API/client streaming support for long-running scans.
|
|
12
22
|
- Added optional tree entry enrichment for detected file languages and inline SVG icons from `material-icon-theme`.
|
|
13
23
|
- Added tag APIs for listing, reading, creating, and deleting tags.
|
|
14
24
|
- Added path- and ref-scoped commit history plus path-scoped diff filtering.
|
package/README.md
CHANGED
|
@@ -70,7 +70,12 @@ await gitHost.ensureRepository("demo", {
|
|
|
70
70
|
const summary = await gitHost.readSummary("demo");
|
|
71
71
|
console.log(summary.repository.current_branch);
|
|
72
72
|
|
|
73
|
-
const linguist = await gitHost.readLinguist("demo", {
|
|
73
|
+
const linguist = await gitHost.readLinguist("demo", {
|
|
74
|
+
ref: "main",
|
|
75
|
+
onProgress(event) {
|
|
76
|
+
console.log(event.stage, event.percent);
|
|
77
|
+
},
|
|
78
|
+
});
|
|
74
79
|
console.log(linguist.languages.results);
|
|
75
80
|
|
|
76
81
|
const tree = await gitHost.listTree("demo", {
|
|
@@ -198,7 +203,7 @@ JSON API hosting:
|
|
|
198
203
|
|
|
199
204
|
```ts
|
|
200
205
|
import { createServer } from "node:http";
|
|
201
|
-
import { createGitApiHandler, createGitHost } from "@trebired/git-host";
|
|
206
|
+
import { createGitApiHandler, createGitApiSocketServer, createGitHost } from "@trebired/git-host";
|
|
202
207
|
import { createLog } from "@trebired/logger";
|
|
203
208
|
|
|
204
209
|
const log = createLog({
|
|
@@ -225,6 +230,16 @@ const apiServer = createServer(createGitApiHandler({
|
|
|
225
230
|
},
|
|
226
231
|
}));
|
|
227
232
|
|
|
233
|
+
createGitApiSocketServer({
|
|
234
|
+
basePath: "/api/git",
|
|
235
|
+
gitHost,
|
|
236
|
+
httpServer: apiServer,
|
|
237
|
+
logger: log,
|
|
238
|
+
authorize({ action, repositoryId }) {
|
|
239
|
+
return canReadRepository(repositoryId, action);
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
|
|
228
243
|
apiServer.listen(3100);
|
|
229
244
|
```
|
|
230
245
|
|
|
@@ -275,6 +290,22 @@ function App() {
|
|
|
275
290
|
}
|
|
276
291
|
```
|
|
277
292
|
|
|
293
|
+
For long-running repository scans, the typed client also exposes a live Socket.IO linguist stream:
|
|
294
|
+
|
|
295
|
+
```ts
|
|
296
|
+
const socket = gitClient.openLinguistSocket("demo", {
|
|
297
|
+
ref: "main",
|
|
298
|
+
onProgress(event) {
|
|
299
|
+
console.log(event.stage, event.percent);
|
|
300
|
+
},
|
|
301
|
+
onResult(event) {
|
|
302
|
+
console.log(event.data.languages.results);
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
await socket.completed;
|
|
307
|
+
```
|
|
308
|
+
|
|
278
309
|
The React entry is intentionally headless. It helps apps fetch and mutate Git data consistently, but it does not ship a bundled styled UI.
|
|
279
310
|
|
|
280
311
|
## Current API
|
|
@@ -287,6 +318,7 @@ The first public slice is intentionally small:
|
|
|
287
318
|
- `buildGitEnv()`
|
|
288
319
|
- `RepositoryLockManager`
|
|
289
320
|
- `createGitApiHandler()`
|
|
321
|
+
- `createGitApiSocketServer()`
|
|
290
322
|
- `createGitHttpHandler()`
|
|
291
323
|
- `generateSshKeyPair()`
|
|
292
324
|
- `normalizeSshPublicKey()`
|
|
@@ -338,6 +370,7 @@ The React entry currently exports:
|
|
|
338
370
|
|
|
339
371
|
- `createGitApiClient()`
|
|
340
372
|
- `GitApiClientProvider`
|
|
373
|
+
- `openLinguistSocket()` through the typed client instance
|
|
341
374
|
- `useGitRepositorySummary()`
|
|
342
375
|
- `useGitBranches()`
|
|
343
376
|
- `useGitCommits()`
|
|
@@ -411,6 +444,7 @@ Hosted transports keep identity and permission policy in your app.
|
|
|
411
444
|
- `createGitHttpHandler()` supports host-owned repository resolution, optional identity resolution, permission checks, and request audit events.
|
|
412
445
|
- `createGitSshServer()` supports host-owned public key authentication, permission checks, and command audit events.
|
|
413
446
|
- `createGitApiHandler()` supports host-owned repository id mapping and per-route authorization.
|
|
447
|
+
- `createGitApiSocketServer()` supports host-owned Socket.IO progress delivery for long-running linguist scans with the same repository mapping and authorization hooks.
|
|
414
448
|
- `generateSshKeyPair()`, `normalizeSshPublicKey()`, `compareSshPublicKeys()`, and `fingerprintSshPublicKey()` help host apps manage SSH transport setup without owning the parsing details themselves.
|
|
415
449
|
|
|
416
450
|
## Platform Fit
|
|
@@ -454,7 +488,9 @@ log.info("git-host", "initializing repository", { repositoryId: "demo" });
|
|
|
454
488
|
|
|
455
489
|
comes from `@trebired/logger`.
|
|
456
490
|
|
|
457
|
-
|
|
491
|
+
The runtime adaptation behind `logger` and `loggerAdapter` is powered by `@trebired/logger-adapter`.
|
|
492
|
+
|
|
493
|
+
You can pass that same `log` object into `createGitHost()`, `createGitHttpHandler()`, `createGitSshServer()`, `createGitApiHandler()`, and `createGitApiSocketServer()` through their `logger` option.
|
|
458
494
|
|
|
459
495
|
If you do not pass a logger and `@trebired/logger` is installed in the host app, git-host will create a quiet console-only logger automatically before falling back to raw `console`.
|
|
460
496
|
|
|
@@ -488,6 +524,31 @@ type SinkLogger = {
|
|
|
488
524
|
|
|
489
525
|
Common logger objects such as `console`, pino-style level methods, or Winston-style sinks are also adapted as sensibly as possible.
|
|
490
526
|
|
|
527
|
+
If you want exact control over the emitted structure, pass `logger` plus `loggerAdapter`:
|
|
528
|
+
|
|
529
|
+
```ts
|
|
530
|
+
const rows: unknown[] = [];
|
|
531
|
+
|
|
532
|
+
const host = createGitHost({
|
|
533
|
+
logger: rows,
|
|
534
|
+
loggerAdapter(logger, event) {
|
|
535
|
+
logger.push({
|
|
536
|
+
when: event.timestamp,
|
|
537
|
+
scope: event.group,
|
|
538
|
+
severity: event.level,
|
|
539
|
+
text: event.message,
|
|
540
|
+
extra: event.metadata,
|
|
541
|
+
});
|
|
542
|
+
},
|
|
543
|
+
resolveRepository(repositoryId) {
|
|
544
|
+
return {
|
|
545
|
+
id: repositoryId,
|
|
546
|
+
path: `/srv/repos/${repositoryId}`,
|
|
547
|
+
};
|
|
548
|
+
},
|
|
549
|
+
});
|
|
550
|
+
```
|
|
551
|
+
|
|
491
552
|
If no logger is provided and `@trebired/logger` is not installed, git-host falls back to plain `console` output for its own diagnostics.
|
|
492
553
|
|
|
493
554
|
## Roadmap
|
package/dist/api/handler.js
CHANGED
|
@@ -4,7 +4,7 @@ import { runGitApiAction } from "./handler/action.js";
|
|
|
4
4
|
import { applyAuthorizationHeaders, authorizationAllowed, serializeError, statusForError, writeJson, } from "./handler/response.js";
|
|
5
5
|
import { parseGitApiRoute } from "./handler/route.js";
|
|
6
6
|
async function handleGitApiRequest(req, res, options) {
|
|
7
|
-
const logger = resolveLogger(options.logger);
|
|
7
|
+
const logger = resolveLogger(options.logger, options.loggerAdapter);
|
|
8
8
|
const verbose = options.verbose === true;
|
|
9
9
|
const logGroup = "git-host.api";
|
|
10
10
|
const method = text(req.method).toUpperCase() || "GET";
|
package/dist/api/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/api/handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,KAAK,UAAU,mBAAmB,CAAC,GAAoB,EAAE,GAAmB,EAAE,OAAmC;IAC/G,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/api/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const LINGUIST_START_EVENT = "git:linguist:start";
|
|
2
|
+
declare const LINGUIST_PROGRESS_EVENT = "git:linguist:progress";
|
|
3
|
+
declare const LINGUIST_RESULT_EVENT = "git:linguist:result";
|
|
4
|
+
declare const LINGUIST_DONE_EVENT = "git:linguist:done";
|
|
5
|
+
declare const LINGUIST_ERROR_EVENT = "git:linguist:error";
|
|
6
|
+
export { LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT, };
|
|
7
|
+
//# sourceMappingURL=socket_events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket_events.d.ts","sourceRoot":"","sources":["../../src/api/socket_events.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB,uBAAuB,CAAC;AAClD,QAAA,MAAM,uBAAuB,0BAA0B,CAAC;AACxD,QAAA,MAAM,qBAAqB,wBAAwB,CAAC;AACpD,QAAA,MAAM,mBAAmB,sBAAsB,CAAC;AAChD,QAAA,MAAM,oBAAoB,uBAAuB,CAAC;AAElD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const LINGUIST_START_EVENT = "git:linguist:start";
|
|
2
|
+
const LINGUIST_PROGRESS_EVENT = "git:linguist:progress";
|
|
3
|
+
const LINGUIST_RESULT_EVENT = "git:linguist:result";
|
|
4
|
+
const LINGUIST_DONE_EVENT = "git:linguist:done";
|
|
5
|
+
const LINGUIST_ERROR_EVENT = "git:linguist:error";
|
|
6
|
+
export { LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT, };
|
|
7
|
+
//# sourceMappingURL=socket_events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket_events.js","sourceRoot":"","sources":["../../src/api/socket_events.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAClD,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AACxD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AACpD,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAChD,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAElD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Server as SocketIoServer } from "socket.io";
|
|
2
|
+
import type { CreateGitApiSocketServerOptions } from "../types.js";
|
|
3
|
+
import { LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT } from "./socket_events.js";
|
|
4
|
+
declare function createGitApiSocketServer(options: CreateGitApiSocketServerOptions): SocketIoServer<import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, import("socket.io").DefaultEventsMap, any>;
|
|
5
|
+
export { createGitApiSocketServer, LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT, };
|
|
6
|
+
//# sourceMappingURL=socket_server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket_server.d.ts","sourceRoot":"","sources":["../../src/api/socket_server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAc5B,iBAAS,wBAAwB,CAAC,OAAO,EAAE,+BAA+B,yIAgJzE;AAED,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Server as SocketIoServer } from "socket.io";
|
|
2
|
+
import { resolveLogger } from "../logging.js";
|
|
3
|
+
import { text } from "../utils/text.js";
|
|
4
|
+
import { LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT, } from "./socket_events.js";
|
|
5
|
+
import { authorizationAllowed, serializeError, statusForError } from "./handler/response.js";
|
|
6
|
+
function normalizeSocketPath(basePathInput, socketPathInput) {
|
|
7
|
+
const socketPath = text(socketPathInput).replace(/\/+$/g, "");
|
|
8
|
+
if (socketPath) {
|
|
9
|
+
return socketPath.startsWith("/") ? socketPath : `/${socketPath}`;
|
|
10
|
+
}
|
|
11
|
+
const basePath = text(basePathInput).replace(/\/+$/g, "");
|
|
12
|
+
if (!basePath || basePath === "/")
|
|
13
|
+
return "/socket.io";
|
|
14
|
+
return `${basePath.startsWith("/") ? basePath : `/${basePath}`}/socket.io`;
|
|
15
|
+
}
|
|
16
|
+
function createGitApiSocketServer(options) {
|
|
17
|
+
if (!options || typeof options.gitHost !== "object") {
|
|
18
|
+
throw new TypeError("createGitApiSocketServer() requires a gitHost instance.");
|
|
19
|
+
}
|
|
20
|
+
if (!options.httpServer) {
|
|
21
|
+
throw new TypeError("createGitApiSocketServer() requires an httpServer.");
|
|
22
|
+
}
|
|
23
|
+
const logger = resolveLogger(options.logger, options.loggerAdapter);
|
|
24
|
+
const verbose = options.verbose === true;
|
|
25
|
+
const logGroup = "git-host.api.socket";
|
|
26
|
+
const basePath = text(options.basePath, "/api/git");
|
|
27
|
+
const path = normalizeSocketPath(basePath, options.socketPath);
|
|
28
|
+
const io = new SocketIoServer(options.httpServer, {
|
|
29
|
+
...(options.socketOptions || {}),
|
|
30
|
+
path,
|
|
31
|
+
});
|
|
32
|
+
io.on("connection", (socket) => {
|
|
33
|
+
socket.on(LINGUIST_START_EVENT, async (payload) => {
|
|
34
|
+
const repositoryKey = text(payload && payload.repositoryKey);
|
|
35
|
+
const ref = text(payload && payload.ref);
|
|
36
|
+
const pathname = `${basePath.replace(/\/+$/g, "") || ""}/repositories/${encodeURIComponent(repositoryKey)}/linguist/socket`;
|
|
37
|
+
if (!repositoryKey) {
|
|
38
|
+
socket.emit(LINGUIST_ERROR_EVENT, {
|
|
39
|
+
error: {
|
|
40
|
+
code: "repository_not_found",
|
|
41
|
+
message: "Repository key is required.",
|
|
42
|
+
},
|
|
43
|
+
status: 404,
|
|
44
|
+
});
|
|
45
|
+
socket.emit(LINGUIST_DONE_EVENT, { ok: false });
|
|
46
|
+
socket.disconnect();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const repositoryId = text(options.resolveRepositoryId
|
|
50
|
+
? await options.resolveRepositoryId(repositoryKey, socket.request)
|
|
51
|
+
: repositoryKey);
|
|
52
|
+
if (!repositoryId) {
|
|
53
|
+
socket.emit(LINGUIST_ERROR_EVENT, {
|
|
54
|
+
error: {
|
|
55
|
+
code: "repository_not_found",
|
|
56
|
+
message: "Repository not found.",
|
|
57
|
+
},
|
|
58
|
+
status: 404,
|
|
59
|
+
});
|
|
60
|
+
socket.emit(LINGUIST_DONE_EVENT, { ok: false, repository_key: repositoryKey });
|
|
61
|
+
socket.disconnect();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const searchParams = new URLSearchParams();
|
|
65
|
+
if (ref)
|
|
66
|
+
searchParams.set("ref", ref);
|
|
67
|
+
const auth = authorizationAllowed(options.authorize
|
|
68
|
+
? await options.authorize({
|
|
69
|
+
action: "linguist_socket",
|
|
70
|
+
method: "SOCKET",
|
|
71
|
+
pathname,
|
|
72
|
+
remoteAddress: text(socket.handshake.address),
|
|
73
|
+
repositoryId,
|
|
74
|
+
repositoryKey,
|
|
75
|
+
request: socket.request,
|
|
76
|
+
searchParams,
|
|
77
|
+
})
|
|
78
|
+
: undefined);
|
|
79
|
+
if (!auth.allowed) {
|
|
80
|
+
logger.warn(logGroup, "api socket permission denied", {
|
|
81
|
+
action: "linguist_socket",
|
|
82
|
+
pathname,
|
|
83
|
+
repositoryId,
|
|
84
|
+
repositoryKey,
|
|
85
|
+
status: auth.status || 403,
|
|
86
|
+
});
|
|
87
|
+
socket.emit(LINGUIST_ERROR_EVENT, {
|
|
88
|
+
error: {
|
|
89
|
+
code: "permission_denied",
|
|
90
|
+
message: auth.message || "Permission denied.",
|
|
91
|
+
},
|
|
92
|
+
status: auth.status || 403,
|
|
93
|
+
});
|
|
94
|
+
socket.emit(LINGUIST_DONE_EVENT, {
|
|
95
|
+
ok: false,
|
|
96
|
+
repository_id: repositoryId,
|
|
97
|
+
repository_key: repositoryKey,
|
|
98
|
+
});
|
|
99
|
+
socket.disconnect();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const data = await options.gitHost.readLinguist(repositoryId, {
|
|
104
|
+
onProgress(progressEvent) {
|
|
105
|
+
socket.emit(LINGUIST_PROGRESS_EVENT, progressEvent);
|
|
106
|
+
},
|
|
107
|
+
ref,
|
|
108
|
+
});
|
|
109
|
+
socket.emit(LINGUIST_RESULT_EVENT, {
|
|
110
|
+
action: "linguist",
|
|
111
|
+
data,
|
|
112
|
+
repository_id: repositoryId,
|
|
113
|
+
repository_key: repositoryKey,
|
|
114
|
+
});
|
|
115
|
+
socket.emit(LINGUIST_DONE_EVENT, {
|
|
116
|
+
ok: true,
|
|
117
|
+
repository_id: repositoryId,
|
|
118
|
+
repository_key: repositoryKey,
|
|
119
|
+
});
|
|
120
|
+
if (verbose) {
|
|
121
|
+
logger.info(logGroup, "api linguist socket completed", {
|
|
122
|
+
repositoryId,
|
|
123
|
+
repositoryKey,
|
|
124
|
+
socketId: socket.id,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
logger.error(logGroup, "api linguist socket failed", {
|
|
130
|
+
error: error instanceof Error ? error.message : String(error),
|
|
131
|
+
repositoryId,
|
|
132
|
+
repositoryKey,
|
|
133
|
+
socketId: socket.id,
|
|
134
|
+
});
|
|
135
|
+
socket.emit(LINGUIST_ERROR_EVENT, {
|
|
136
|
+
...serializeError(error),
|
|
137
|
+
ok: false,
|
|
138
|
+
repository_id: repositoryId,
|
|
139
|
+
repository_key: repositoryKey,
|
|
140
|
+
status: statusForError(error),
|
|
141
|
+
});
|
|
142
|
+
socket.emit(LINGUIST_DONE_EVENT, {
|
|
143
|
+
ok: false,
|
|
144
|
+
repository_id: repositoryId,
|
|
145
|
+
repository_key: repositoryKey,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
socket.disconnect();
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
return io;
|
|
154
|
+
}
|
|
155
|
+
export { createGitApiSocketServer, LINGUIST_DONE_EVENT, LINGUIST_ERROR_EVENT, LINGUIST_PROGRESS_EVENT, LINGUIST_RESULT_EVENT, LINGUIST_START_EVENT, };
|
|
156
|
+
//# sourceMappingURL=socket_server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket_server.js","sourceRoot":"","sources":["../../src/api/socket_server.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ function createGitHost(options) {
|
|
|
17
17
|
if (!options || typeof options.resolveRepository !== "function") {
|
|
18
18
|
throw new TypeError("createGitHost() requires a resolveRepository() function.");
|
|
19
19
|
}
|
|
20
|
-
const logger = resolveLogger(options.logger);
|
|
20
|
+
const logger = resolveLogger(options.logger, options.loggerAdapter);
|
|
21
21
|
const verbose = options.verbose === true;
|
|
22
22
|
const logGroup = "git-host";
|
|
23
23
|
const lockManager = new RepositoryLockManager();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_git_host.js","sourceRoot":"","sources":["../../src/core/create_git_host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE9F,SAAS,aAAa,CAAC,OAA6B;IAClD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QAChE,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"create_git_host.js","sourceRoot":"","sources":["../../src/core/create_git_host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GitLinguistProgressEvent, GitLinguistProgressStage, GitRepositoryHandle, MaybePromise } from "../../types.js";
|
|
2
|
+
type GitLinguistProgressCallback = (event: GitLinguistProgressEvent) => MaybePromise<void>;
|
|
3
|
+
type CreateLinguistProgressReporterOptions = {
|
|
4
|
+
onProgress?: GitLinguistProgressCallback;
|
|
5
|
+
repository: GitRepositoryHandle;
|
|
6
|
+
ref?: string;
|
|
7
|
+
};
|
|
8
|
+
declare function createLinguistProgressReporter(options: CreateLinguistProgressReporterOptions): {
|
|
9
|
+
emit: (stage: GitLinguistProgressStage, update?: Partial<Omit<GitLinguistProgressEvent, "emitted_at" | "percent" | "repository_id" | "scan_id" | "stage">>) => Promise<void>;
|
|
10
|
+
scanId: `${string}-${string}-${string}-${string}-${string}`;
|
|
11
|
+
};
|
|
12
|
+
export { createLinguistProgressReporter };
|
|
13
|
+
export type { GitLinguistProgressCallback };
|
|
14
|
+
//# sourceMappingURL=linguist_progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linguist_progress.d.ts","sourceRoot":"","sources":["../../../src/core/inspect/linguist_progress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAGxB,KAAK,2BAA2B,GAAG,CAAC,KAAK,EAAE,wBAAwB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;AAE3F,KAAK,qCAAqC,GAAG;IAC3C,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,UAAU,EAAE,mBAAmB,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAoDF,iBAAS,8BAA8B,CAAC,OAAO,EAAE,qCAAqC;kBAY3E,wBAAwB,WACvB,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,KAChH,OAAO,CAAC,IAAI,CAAC;;EA6BjB;AAED,OAAO,EAAE,8BAA8B,EAAE,CAAC;AAC1C,YAAY,EAAE,2BAA2B,EAAE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { text } from "../../utils/text.js";
|
|
3
|
+
function computeLinguistPercent(stage, state) {
|
|
4
|
+
if (stage === "queued")
|
|
5
|
+
return 0;
|
|
6
|
+
if (stage === "resolving_ref")
|
|
7
|
+
return 5;
|
|
8
|
+
if (stage === "listing_tree")
|
|
9
|
+
return 10;
|
|
10
|
+
if (stage === "analyzing")
|
|
11
|
+
return 90;
|
|
12
|
+
if (stage === "completed")
|
|
13
|
+
return 100;
|
|
14
|
+
if (stage === "failed") {
|
|
15
|
+
if (state.total_blobs > 0) {
|
|
16
|
+
const ratio = state.processed_blobs / state.total_blobs;
|
|
17
|
+
return Math.max(0, Math.min(95, Math.round(15 + (ratio * 70))));
|
|
18
|
+
}
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
if (state.total_blobs <= 0)
|
|
22
|
+
return 15;
|
|
23
|
+
const ratio = state.processed_blobs / state.total_blobs;
|
|
24
|
+
return Math.max(15, Math.min(85, Math.round(15 + (ratio * 70))));
|
|
25
|
+
}
|
|
26
|
+
function defaultLinguistMessage(stage, state) {
|
|
27
|
+
switch (stage) {
|
|
28
|
+
case "queued":
|
|
29
|
+
return "Queued linguist scan.";
|
|
30
|
+
case "resolving_ref":
|
|
31
|
+
return "Resolving repository ref.";
|
|
32
|
+
case "listing_tree":
|
|
33
|
+
return "Listing repository tree.";
|
|
34
|
+
case "reading_blobs":
|
|
35
|
+
return state.total_blobs > 0
|
|
36
|
+
? `Reading repository files (${state.processed_blobs}/${state.total_blobs}).`
|
|
37
|
+
: "Reading repository files.";
|
|
38
|
+
case "analyzing":
|
|
39
|
+
return "Analyzing repository languages.";
|
|
40
|
+
case "completed":
|
|
41
|
+
return "Completed linguist scan.";
|
|
42
|
+
case "failed":
|
|
43
|
+
return "Linguist scan failed.";
|
|
44
|
+
default:
|
|
45
|
+
return "Processing linguist scan.";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function createLinguistProgressReporter(options) {
|
|
49
|
+
const onProgress = typeof options.onProgress === "function" ? options.onProgress : null;
|
|
50
|
+
const scanId = randomUUID();
|
|
51
|
+
const state = {
|
|
52
|
+
commit: "",
|
|
53
|
+
processed_blobs: 0,
|
|
54
|
+
ref: text(options.ref, "HEAD"),
|
|
55
|
+
total_blobs: 0,
|
|
56
|
+
total_entries: 0,
|
|
57
|
+
};
|
|
58
|
+
async function emit(stage, update = {}) {
|
|
59
|
+
if (!onProgress)
|
|
60
|
+
return;
|
|
61
|
+
if (typeof update.ref === "string")
|
|
62
|
+
state.ref = text(update.ref, state.ref);
|
|
63
|
+
if (typeof update.commit === "string")
|
|
64
|
+
state.commit = text(update.commit, state.commit);
|
|
65
|
+
if (typeof update.total_entries === "number")
|
|
66
|
+
state.total_entries = Math.max(0, Number(update.total_entries) || 0);
|
|
67
|
+
if (typeof update.total_blobs === "number")
|
|
68
|
+
state.total_blobs = Math.max(0, Number(update.total_blobs) || 0);
|
|
69
|
+
if (typeof update.processed_blobs === "number")
|
|
70
|
+
state.processed_blobs = Math.max(0, Number(update.processed_blobs) || 0);
|
|
71
|
+
await onProgress({
|
|
72
|
+
commit: text(update.commit, state.commit) || undefined,
|
|
73
|
+
emitted_at: new Date().toISOString(),
|
|
74
|
+
error: update.error,
|
|
75
|
+
message: text(update.message, defaultLinguistMessage(stage, state)),
|
|
76
|
+
percent: computeLinguistPercent(stage, state),
|
|
77
|
+
processed_blobs: state.processed_blobs,
|
|
78
|
+
ref: text(update.ref, state.ref),
|
|
79
|
+
repository_id: options.repository.id,
|
|
80
|
+
scan_id: scanId,
|
|
81
|
+
stage,
|
|
82
|
+
total_blobs: state.total_blobs,
|
|
83
|
+
total_entries: state.total_entries,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
emit,
|
|
88
|
+
scanId,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export { createLinguistProgressReporter };
|
|
92
|
+
//# sourceMappingURL=linguist_progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linguist_progress.js","sourceRoot":"","sources":["../../../src/core/inspect/linguist_progress.ts"],"names":[],"mappings":"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"}
|
package/dist/core/inspect.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { GitArchive, GitBlob, GitBlame, GitCommitDetail, GitCompareSummary, GitRepositoryHandle, GitRepositoryLinguist, GitSearchResult, GitTreeEntry } from "../types.js";
|
|
1
|
+
import type { GitArchive, GitBlob, GitBlame, GitCommitDetail, GitCompareSummary, GitLinguistProgressEvent, GitRepositoryHandle, GitRepositoryLinguist, GitSearchResult, GitTreeEntry } from "../types.js";
|
|
2
2
|
declare function readRepositoryLinguist(repository: GitRepositoryHandle, options?: {
|
|
3
|
+
onProgress?: (event: GitLinguistProgressEvent) => Promise<void> | void;
|
|
3
4
|
ref?: string;
|
|
4
5
|
}): Promise<GitRepositoryLinguist>;
|
|
5
6
|
declare function listRepositoryTree(repository: GitRepositoryHandle, options?: {
|
|
6
7
|
icons?: boolean;
|
|
7
8
|
linguist?: boolean;
|
|
9
|
+
onLinguistProgress?: (event: GitLinguistProgressEvent) => Promise<void> | void;
|
|
8
10
|
path?: string;
|
|
9
11
|
recursive?: boolean;
|
|
10
12
|
ref?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EAER,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EAGrB,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EAER,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EAGrB,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AAkPrB,iBAAe,sBAAsB,CACnC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,qBAAqB,CAAC,CAgDhC;AAED,iBAAe,kBAAkB,CAC/B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,YAAY,EAAE,CAAC,CAsBzB;AAED,iBAAe,kBAAkB,CAC/B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAED,iBAAe,oBAAoB,CAAC,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAqDtH;AAED,iBAAe,qBAAqB,CAClC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,iBAAiB,CAAC,CAmD5B;AAED,iBAAe,mBAAmB,CAChC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,QAAQ,CAAC,CAiEnB;AAED,iBAAe,gBAAgB,CAC7B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,eAAe,CAAC,CAqE1B;AAED,iBAAe,qBAAqB,CAClC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,UAAU,CAAC,CAyBrB;AAED,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,CAAC"}
|