dsh-gitnexus-plus 0.0.0-stage → 0.1.2

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 (90) hide show
  1. package/LICENSE +38 -0
  2. package/README.md +631 -2
  3. package/cordis.patch.yml +18 -0
  4. package/lib/bin/gitnexus-coverage.d.ts +14 -0
  5. package/lib/bin/gitnexus-coverage.d.ts.map +1 -0
  6. package/lib/bin/gitnexus-coverage.js +171 -0
  7. package/lib/bin/gitnexus-coverage.js.map +1 -0
  8. package/lib/bin/search-helper.d.ts +22 -0
  9. package/lib/bin/search-helper.d.ts.map +1 -0
  10. package/lib/bin/search-helper.js +57 -0
  11. package/lib/bin/search-helper.js.map +1 -0
  12. package/lib/client.js +2131 -0
  13. package/lib/gitnexus/analyze.d.ts +173 -0
  14. package/lib/gitnexus/analyze.d.ts.map +1 -0
  15. package/lib/gitnexus/analyze.js +308 -0
  16. package/lib/gitnexus/analyze.js.map +1 -0
  17. package/lib/gitnexus/commands.d.ts +129 -0
  18. package/lib/gitnexus/commands.d.ts.map +1 -0
  19. package/lib/gitnexus/commands.js +185 -0
  20. package/lib/gitnexus/commands.js.map +1 -0
  21. package/lib/gitnexus/coverage.d.ts +340 -0
  22. package/lib/gitnexus/coverage.d.ts.map +1 -0
  23. package/lib/gitnexus/coverage.js +554 -0
  24. package/lib/gitnexus/coverage.js.map +1 -0
  25. package/lib/gitnexus/format.d.ts +16 -0
  26. package/lib/gitnexus/format.d.ts.map +1 -0
  27. package/lib/gitnexus/format.js +178 -0
  28. package/lib/gitnexus/format.js.map +1 -0
  29. package/lib/gitnexus/git-activity.d.ts +136 -0
  30. package/lib/gitnexus/git-activity.d.ts.map +1 -0
  31. package/lib/gitnexus/git-activity.js +345 -0
  32. package/lib/gitnexus/git-activity.js.map +1 -0
  33. package/lib/gitnexus/git.d.ts +70 -0
  34. package/lib/gitnexus/git.d.ts.map +1 -0
  35. package/lib/gitnexus/git.js +121 -0
  36. package/lib/gitnexus/git.js.map +1 -0
  37. package/lib/gitnexus/index-meta.d.ts +160 -0
  38. package/lib/gitnexus/index-meta.d.ts.map +1 -0
  39. package/lib/gitnexus/index-meta.js +176 -0
  40. package/lib/gitnexus/index-meta.js.map +1 -0
  41. package/lib/gitnexus/install.d.ts +97 -0
  42. package/lib/gitnexus/install.d.ts.map +1 -0
  43. package/lib/gitnexus/install.js +228 -0
  44. package/lib/gitnexus/install.js.map +1 -0
  45. package/lib/gitnexus/languages.d.ts +80 -0
  46. package/lib/gitnexus/languages.d.ts.map +1 -0
  47. package/lib/gitnexus/languages.js +297 -0
  48. package/lib/gitnexus/languages.js.map +1 -0
  49. package/lib/gitnexus/root.d.ts +74 -0
  50. package/lib/gitnexus/root.d.ts.map +1 -0
  51. package/lib/gitnexus/root.js +168 -0
  52. package/lib/gitnexus/root.js.map +1 -0
  53. package/lib/gitnexus/scan.d.ts +68 -0
  54. package/lib/gitnexus/scan.d.ts.map +1 -0
  55. package/lib/gitnexus/scan.js +249 -0
  56. package/lib/gitnexus/scan.js.map +1 -0
  57. package/lib/gitnexus/search.d.ts +167 -0
  58. package/lib/gitnexus/search.d.ts.map +1 -0
  59. package/lib/gitnexus/search.js +517 -0
  60. package/lib/gitnexus/search.js.map +1 -0
  61. package/lib/gitnexus/toolchain.d.ts +136 -0
  62. package/lib/gitnexus/toolchain.d.ts.map +1 -0
  63. package/lib/gitnexus/toolchain.js +251 -0
  64. package/lib/gitnexus/toolchain.js.map +1 -0
  65. package/lib/index.d.ts +98 -0
  66. package/lib/index.d.ts.map +1 -0
  67. package/lib/index.js +252 -0
  68. package/lib/index.js.map +1 -0
  69. package/lib/routes/analyze.d.ts +41 -0
  70. package/lib/routes/analyze.d.ts.map +1 -0
  71. package/lib/routes/analyze.js +75 -0
  72. package/lib/routes/analyze.js.map +1 -0
  73. package/lib/routes/coverage.d.ts +52 -0
  74. package/lib/routes/coverage.d.ts.map +1 -0
  75. package/lib/routes/coverage.js +81 -0
  76. package/lib/routes/coverage.js.map +1 -0
  77. package/lib/routes/guard.d.ts +92 -0
  78. package/lib/routes/guard.d.ts.map +1 -0
  79. package/lib/routes/guard.js +187 -0
  80. package/lib/routes/guard.js.map +1 -0
  81. package/lib/routes/install.d.ts +27 -0
  82. package/lib/routes/install.d.ts.map +1 -0
  83. package/lib/routes/install.js +46 -0
  84. package/lib/routes/install.js.map +1 -0
  85. package/lib/routes/search.d.ts +27 -0
  86. package/lib/routes/search.d.ts.map +1 -0
  87. package/lib/routes/search.js +77 -0
  88. package/lib/routes/search.js.map +1 -0
  89. package/package.json +87 -4
  90. package/scripts/link-runtime.mjs +146 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitnexus-coverage.d.ts","sourceRoot":"","sources":["../../src/bin/gitnexus-coverage.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `gitnexus-coverage` — report what an index left out.
4
+ *
5
+ * Usage:
6
+ * dsh-gitnexus-coverage [repo-path | -r <alias>] [--json]
7
+ * dsh-gitnexus-coverage --all # every registered repository
8
+ *
9
+ * Exit code is 0 even when files were skipped: a skipped bundle is a fact about
10
+ * the repository, not a failure of this tool. Pass `--fail-on-large` to make it a
11
+ * CI gate instead.
12
+ */
13
+ import path from 'node:path';
14
+ import { analyzeCoverage, formatBytes } from '../gitnexus/coverage.js';
15
+ import { readRegistry } from '../gitnexus/index-meta.js';
16
+ const argv = process.argv.slice(2);
17
+ function takeFlag(name) {
18
+ const i = argv.indexOf(name);
19
+ if (i === -1)
20
+ return false;
21
+ argv.splice(i, 1);
22
+ return true;
23
+ }
24
+ function takeOption(name) {
25
+ const i = argv.indexOf(name);
26
+ if (i === -1)
27
+ return undefined;
28
+ const value = argv[i + 1];
29
+ argv.splice(i, 2);
30
+ return value;
31
+ }
32
+ const asJson = takeFlag('--json');
33
+ const all = takeFlag('--all');
34
+ const failOnLarge = takeFlag('--fail-on-large');
35
+ const noLanguages = takeFlag('--no-languages');
36
+ const repoAlias = takeOption('-r') ?? takeOption('--repo');
37
+ const positional = argv.filter((a) => !a.startsWith('-'));
38
+ const useColor = process.stdout.isTTY === true && process.env.NO_COLOR === undefined;
39
+ const paint = (code, text) => (useColor ? `\u001b[${code}m${text}\u001b[0m` : text);
40
+ const bold = (t) => paint('1', t);
41
+ const dim = (t) => paint('2', t);
42
+ const yellow = (t) => paint('33', t);
43
+ const green = (t) => paint('32', t);
44
+ const red = (t) => paint('31', t);
45
+ function isFailure(entry) {
46
+ return 'error' in entry;
47
+ }
48
+ function renderHuman(report) {
49
+ const out = [];
50
+ const { repo, cap, totals, largeFiles, warnings, languages, index } = report;
51
+ out.push('');
52
+ out.push(bold(` ${repo.name}`) + dim(` ${repo.path}`));
53
+ if (!repo.indexed) {
54
+ out.push(red(' ✗ 未索引(没有 .gitnexus/gitnexus.json)'));
55
+ out.push('');
56
+ return out.join('\n');
57
+ }
58
+ out.push(dim(` 索引于 ${repo.indexedAt} · ${repo.branch ?? 'unknown'}@${(repo.lastCommit || 'unknown').slice(0, 8)}` +
59
+ ` · GitNexus ${report.analyzer.gitnexusVersion}` +
60
+ (report.analyzer.primitives === 'gitnexus' ? dim(' (复用上游扫描)') : yellow(' (回退扫描)'))));
61
+ out.push('');
62
+ out.push(` 扫描 ${bold(String(totals.scanned))} · 选中 ${bold(String(totals.selected))} · ` +
63
+ `图内 ${bold(String(totals.indexedInGraph))} · 跳过 ${totals.large > 0 ? yellow(bold(String(totals.large))) : '0'} · ` +
64
+ `声明抑制 ${totals.suppressedDeclarations}`);
65
+ out.push(dim(` 上限 ${cap.text}${cap.source === 'index' ? '(索引记录值)' : cap.source === 'env' ? '(来自 GITNEXUS_MAX_FILE_SIZE)' : '(默认值)'}` +
66
+ ` · 硬上限 ${cap.maxText}`));
67
+ if (largeFiles.length > 0) {
68
+ out.push('');
69
+ out.push(bold(' 被跳过的超大文件') + dim(` 合计 ${formatBytes(totals.largeBytes)}`));
70
+ const width = Math.min(56, Math.max(...largeFiles.map((f) => f.path.length)));
71
+ for (const file of largeFiles.slice(0, 25)) {
72
+ const p = file.path.length > width ? `…${file.path.slice(-(width - 1))}` : file.path.padEnd(width);
73
+ const label = file.language?.label ?? '';
74
+ const share = file.language !== null && file.shareOfLanguage > 0
75
+ ? dim(` ${(file.shareOfLanguage * 100).toFixed(0)}% of ${label}`)
76
+ : '';
77
+ const mini = file.minified?.binary
78
+ ? dim(' ⬢ 二进制')
79
+ : file.minified?.suspect
80
+ ? yellow(` ⚠ 单行~${Math.round(file.minified.avgLineLength)}字符`)
81
+ : file.generatedHint
82
+ ? dim(' ⚙ 构建产物路径')
83
+ : '';
84
+ out.push(` ${p} ${String(file.sizeText).padStart(9)} ${dim(label)}${share}${mini}`);
85
+ }
86
+ if (largeFiles.length > 25)
87
+ out.push(dim(` …还有 ${largeFiles.length - 25} 个`));
88
+ }
89
+ if (languages) {
90
+ out.push('');
91
+ out.push(bold(' 语言分布') + dim(`(索引内,按字节 · 共 ${languages.rows.length} 种)`));
92
+ const total = languages.totalBytes || 1;
93
+ for (const row of languages.rows.slice(0, 12)) {
94
+ const pct = ((row.bytes / total) * 100).toFixed(1);
95
+ const bar = '█'.repeat(Math.max(1, Math.round((row.bytes / total) * 24)));
96
+ const band = row.klass === 'parsed' ? green('●') : row.klass === 'recognized' ? yellow('○') : dim('·');
97
+ out.push(` ${band} ${row.label.padEnd(12)} ${pct.padStart(5)}% ${dim(bar)} ${dim(`${row.files} 文件`)}`);
98
+ }
99
+ if (languages.rows.length > 12)
100
+ out.push(dim(` …还有 ${languages.rows.length - 12} 种`));
101
+ out.push(dim(' ● 可解析进图 ○ 仅识别未解析 · 其他'));
102
+ }
103
+ const notable = warnings.filter((w) => w.level === 'warn');
104
+ if (notable.length > 0) {
105
+ out.push('');
106
+ for (const w of notable)
107
+ out.push(` ${yellow('⚠')} ${w.message}`);
108
+ }
109
+ const info = warnings.filter((w) => w.level === 'info');
110
+ if (info.length > 0) {
111
+ out.push('');
112
+ for (const w of info)
113
+ out.push(dim(` · ${w.message}`));
114
+ }
115
+ if (index.uncoveredCount > 0 || index.staleCount > 0) {
116
+ out.push(dim(` · 覆盖差异:扫描选中但未入索引 ${index.uncoveredCount},索引中存在但已消失 ${index.staleCount}`));
117
+ }
118
+ out.push('');
119
+ return out.join('\n');
120
+ }
121
+ async function main() {
122
+ let targets = [];
123
+ if (all) {
124
+ const entries = await readRegistry();
125
+ targets = entries.map((e) => e.path);
126
+ if (targets.length === 0) {
127
+ console.error('registry 中没有任何已索引仓库');
128
+ process.exit(1);
129
+ }
130
+ }
131
+ else if (repoAlias !== undefined) {
132
+ const entries = await readRegistry();
133
+ const hit = entries.find((e) => e.name === repoAlias);
134
+ if (hit === undefined) {
135
+ console.error(`找不到仓库别名: ${repoAlias}`);
136
+ process.exit(1);
137
+ }
138
+ targets = [hit.path];
139
+ }
140
+ else {
141
+ targets = [positional[0] ?? process.cwd()];
142
+ }
143
+ const reports = [];
144
+ for (const target of targets) {
145
+ try {
146
+ reports.push(await analyzeCoverage(path.resolve(target), { includeLanguages: !noLanguages }));
147
+ }
148
+ catch (error) {
149
+ const message = error instanceof Error ? error.message : String(error);
150
+ if (!asJson)
151
+ console.error(`${target}: ${message}`);
152
+ else
153
+ reports.push({ repo: { path: target }, error: message });
154
+ }
155
+ }
156
+ if (asJson) {
157
+ console.log(JSON.stringify(all ? reports : reports[0], null, 2));
158
+ }
159
+ else {
160
+ for (const report of reports) {
161
+ if (isFailure(report))
162
+ continue;
163
+ if (report.languages !== null || report.repo.indexed)
164
+ console.log(renderHuman(report));
165
+ }
166
+ }
167
+ if (failOnLarge && reports.some((r) => !isFailure(r) && r.totals.large > 0))
168
+ process.exit(2);
169
+ }
170
+ await main();
171
+ //# sourceMappingURL=gitnexus-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitnexus-coverage.js","sourceRoot":"","sources":["../../src/bin/gitnexus-coverage.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAuB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9B,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC;AACrF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5G,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACjD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACpD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAclD,SAAS,SAAS,CAAC,KAAoC;IACrD,OAAO,OAAO,IAAI,KAAK,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAE7E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,GAAG,CAAC,IAAI,CACN,GAAG,CACD,SAAS,IAAI,CAAC,SAAS,QAAQ,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACrG,iBAAiB,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;QAClD,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACrF,CACF,CAAC;IAEF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CACN,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO;QACjF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;QACtH,QAAQ,MAAM,CAAC,sBAAsB,EAAE,CAC1C,CAAC;IACF,GAAG,CAAC,IAAI,CACN,GAAG,CACD,QAAQ,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,OAAO,EAAE;QACtH,YAAY,GAAG,CAAC,OAAO,EAAE,CAC5B,CACF,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,QAAQ,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnG,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,KAAK,GACT,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC;gBAChD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC;gBACjE,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAChC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;gBAChB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO;oBACtB,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;oBAC/D,CAAC,CAAC,IAAI,CAAC,aAAa;wBAClB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;wBACnB,CAAC,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvG,GAAG,CAAC,IAAI,CACN,OAAO,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,CACjG,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACzF,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CACN,GAAG,CAAC,sBAAsB,KAAK,CAAC,cAAc,cAAc,KAAK,CAAC,UAAU,EAAE,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,GAAa,EAAE,CAAC;IAE3B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACtD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;;gBAC/C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,SAAS;YAChC,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Search helper, run by the **system Node** rather than the DSH host.
4
+ *
5
+ * The host is Electron's Node and cannot load GitNexus's LadybugDB native addon
6
+ * (ABI mismatch: "A dynamic link library (DLL) initialization routine failed").
7
+ * This process is started with the platform Node that the CLI already uses, imports
8
+ * the same adapter, runs one read-only query, and prints exactly one JSON object for
9
+ * the host to parse.
10
+ *
11
+ * Invocation:
12
+ * node search-helper.js <repo> <sanitized-query> [limit] [managedPrefix]
13
+ *
14
+ * Success: `{ "ok": true, "report": SearchReport }`
15
+ * Failure: `{ "ok": false, "status": <number>, "code": <SearchErrorCode>, "message": string }`
16
+ *
17
+ * It always exits 0 for a reported failure, so the host reads a structured answer
18
+ * instead of inferring one from an exit code. A process-level crash (native fault)
19
+ * is the one case the host handles from an unparseable stdout/stderr pair.
20
+ */
21
+ export {};
22
+ //# sourceMappingURL=search-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-helper.d.ts","sourceRoot":"","sources":["../../src/bin/search-helper.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Search helper, run by the **system Node** rather than the DSH host.
4
+ *
5
+ * The host is Electron's Node and cannot load GitNexus's LadybugDB native addon
6
+ * (ABI mismatch: "A dynamic link library (DLL) initialization routine failed").
7
+ * This process is started with the platform Node that the CLI already uses, imports
8
+ * the same adapter, runs one read-only query, and prints exactly one JSON object for
9
+ * the host to parse.
10
+ *
11
+ * Invocation:
12
+ * node search-helper.js <repo> <sanitized-query> [limit] [managedPrefix]
13
+ *
14
+ * Success: `{ "ok": true, "report": SearchReport }`
15
+ * Failure: `{ "ok": false, "status": <number>, "code": <SearchErrorCode>, "message": string }`
16
+ *
17
+ * It always exits 0 for a reported failure, so the host reads a structured answer
18
+ * instead of inferring one from an exit code. A process-level crash (native fault)
19
+ * is the one case the host handles from an unparseable stdout/stderr pair.
20
+ */
21
+ import { SearchError, searchSymbols } from '../gitnexus/search.js';
22
+ /** Write the one object, then exit once stdout has flushed. */
23
+ function emit(payload) {
24
+ const text = JSON.stringify(payload);
25
+ process.stdout.write(text, () => process.exit(0));
26
+ // A native handle can keep the event loop alive; the payload is already queued.
27
+ setTimeout(() => process.exit(0), 2000).unref();
28
+ }
29
+ const [, , repoArg, queryArg, limitArg, managedArg] = process.argv;
30
+ if (typeof repoArg !== 'string' || repoArg === '' || typeof queryArg !== 'string') {
31
+ emit({
32
+ ok: false,
33
+ status: 400,
34
+ code: 'invalid-query',
35
+ message: 'usage: search-helper <repo> <query> [limit] [managedPrefix]',
36
+ });
37
+ }
38
+ else {
39
+ const parsedLimit = limitArg === undefined ? undefined : Number.parseInt(limitArg, 10);
40
+ const limit = parsedLimit === undefined || !Number.isFinite(parsedLimit) ? undefined : parsedLimit;
41
+ try {
42
+ const report = await searchSymbols(repoArg, queryArg, {
43
+ limit,
44
+ managedPrefix: managedArg === undefined || managedArg === '' ? undefined : managedArg,
45
+ });
46
+ emit({ ok: true, report });
47
+ }
48
+ catch (error) {
49
+ emit({
50
+ ok: false,
51
+ status: error instanceof SearchError ? error.status : 500,
52
+ code: error instanceof SearchError ? error.code : 'search-failed',
53
+ message: error instanceof Error ? error.message : String(error),
54
+ });
55
+ }
56
+ }
57
+ //# sourceMappingURL=search-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-helper.js","sourceRoot":"","sources":["../../src/bin/search-helper.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnE,+DAA+D;AAC/D,SAAS,IAAI,CAAC,OAAgB;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,gFAAgF;IAChF,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAEnE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;IAClF,IAAI,CAAC;QACH,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,6DAA6D;KACvE,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,MAAM,WAAW,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IACnG,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE;YACpD,KAAK;YACL,aAAa,EAAE,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;SACtF,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;YACzD,IAAI,EAAE,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe;YACjE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAChE,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}