gitnexus 1.6.2-rc.2 → 1.6.2-rc.21

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 (198) hide show
  1. package/dist/_shared/lbug/schema-constants.d.ts +1 -1
  2. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  3. package/dist/_shared/lbug/schema-constants.js +1 -0
  4. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  5. package/dist/cli/analyze.js +3 -0
  6. package/dist/core/embeddings/ast-utils.d.ts +22 -0
  7. package/dist/core/embeddings/ast-utils.js +105 -0
  8. package/dist/core/embeddings/character-chunk.d.ts +12 -0
  9. package/dist/core/embeddings/character-chunk.js +43 -0
  10. package/dist/core/embeddings/chunker.d.ts +14 -0
  11. package/dist/core/embeddings/chunker.js +234 -0
  12. package/dist/core/embeddings/embedder.js +5 -0
  13. package/dist/core/embeddings/embedding-pipeline.d.ts +29 -24
  14. package/dist/core/embeddings/embedding-pipeline.js +244 -125
  15. package/dist/core/embeddings/line-index.d.ts +7 -0
  16. package/dist/core/embeddings/line-index.js +42 -0
  17. package/dist/core/embeddings/server-mapping.d.ts +15 -0
  18. package/dist/core/embeddings/server-mapping.js +33 -0
  19. package/dist/core/embeddings/structural-extractor.d.ts +15 -0
  20. package/dist/core/embeddings/structural-extractor.js +58 -0
  21. package/dist/core/embeddings/text-generator.d.ts +20 -13
  22. package/dist/core/embeddings/text-generator.js +151 -119
  23. package/dist/core/embeddings/types.d.ts +81 -3
  24. package/dist/core/embeddings/types.js +105 -3
  25. package/dist/core/group/extractors/http-patterns/node.js +130 -0
  26. package/dist/core/group/extractors/manifest-extractor.js +20 -5
  27. package/dist/core/group/sync.js +49 -1
  28. package/dist/core/ingestion/call-extractors/configs/c-cpp.d.ts +3 -0
  29. package/dist/core/ingestion/call-extractors/configs/c-cpp.js +8 -0
  30. package/dist/core/ingestion/call-extractors/configs/csharp.d.ts +2 -0
  31. package/dist/core/ingestion/call-extractors/configs/csharp.js +6 -0
  32. package/dist/core/ingestion/call-extractors/configs/dart.d.ts +2 -0
  33. package/dist/core/ingestion/call-extractors/configs/dart.js +5 -0
  34. package/dist/core/ingestion/call-extractors/configs/go.d.ts +2 -0
  35. package/dist/core/ingestion/call-extractors/configs/go.js +5 -0
  36. package/dist/core/ingestion/call-extractors/configs/jvm.d.ts +3 -0
  37. package/dist/core/ingestion/call-extractors/configs/jvm.js +51 -0
  38. package/dist/core/ingestion/call-extractors/configs/php.d.ts +2 -0
  39. package/dist/core/ingestion/call-extractors/configs/php.js +5 -0
  40. package/dist/core/ingestion/call-extractors/configs/python.d.ts +2 -0
  41. package/dist/core/ingestion/call-extractors/configs/python.js +5 -0
  42. package/dist/core/ingestion/call-extractors/configs/ruby.d.ts +2 -0
  43. package/dist/core/ingestion/call-extractors/configs/ruby.js +5 -0
  44. package/dist/core/ingestion/call-extractors/configs/rust.d.ts +2 -0
  45. package/dist/core/ingestion/call-extractors/configs/rust.js +5 -0
  46. package/dist/core/ingestion/call-extractors/configs/swift.d.ts +2 -0
  47. package/dist/core/ingestion/call-extractors/configs/swift.js +5 -0
  48. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.d.ts +3 -0
  49. package/dist/core/ingestion/call-extractors/configs/typescript-javascript.js +8 -0
  50. package/dist/core/ingestion/call-extractors/generic.d.ts +5 -0
  51. package/dist/core/ingestion/call-extractors/generic.js +59 -0
  52. package/dist/core/ingestion/call-processor.d.ts +1 -3
  53. package/dist/core/ingestion/call-processor.js +49 -47
  54. package/dist/core/ingestion/call-types.d.ts +60 -0
  55. package/dist/core/ingestion/call-types.js +2 -0
  56. package/dist/core/ingestion/class-extractors/configs/c-cpp.d.ts +3 -0
  57. package/dist/core/ingestion/class-extractors/configs/c-cpp.js +11 -0
  58. package/dist/core/ingestion/class-extractors/configs/csharp.d.ts +2 -0
  59. package/dist/core/ingestion/class-extractors/configs/csharp.js +21 -0
  60. package/dist/core/ingestion/class-extractors/configs/dart.d.ts +2 -0
  61. package/dist/core/ingestion/class-extractors/configs/dart.js +7 -0
  62. package/dist/core/ingestion/class-extractors/configs/go.d.ts +2 -0
  63. package/dist/core/ingestion/class-extractors/configs/go.js +20 -0
  64. package/dist/core/ingestion/class-extractors/configs/jvm.d.ts +3 -0
  65. package/dist/core/ingestion/class-extractors/configs/jvm.js +35 -0
  66. package/dist/core/ingestion/class-extractors/configs/php.d.ts +2 -0
  67. package/dist/core/ingestion/class-extractors/configs/php.js +7 -0
  68. package/dist/core/ingestion/class-extractors/configs/python.d.ts +2 -0
  69. package/dist/core/ingestion/class-extractors/configs/python.js +7 -0
  70. package/dist/core/ingestion/class-extractors/configs/ruby.d.ts +2 -0
  71. package/dist/core/ingestion/class-extractors/configs/ruby.js +7 -0
  72. package/dist/core/ingestion/class-extractors/configs/rust.d.ts +2 -0
  73. package/dist/core/ingestion/class-extractors/configs/rust.js +7 -0
  74. package/dist/core/ingestion/class-extractors/configs/swift.d.ts +2 -0
  75. package/dist/core/ingestion/class-extractors/configs/swift.js +18 -0
  76. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.d.ts +4 -0
  77. package/dist/core/ingestion/class-extractors/configs/typescript-javascript.js +28 -0
  78. package/dist/core/ingestion/field-types.d.ts +1 -1
  79. package/dist/core/ingestion/import-resolvers/configs/c-cpp.d.ts +7 -0
  80. package/dist/core/ingestion/import-resolvers/configs/c-cpp.js +14 -0
  81. package/dist/core/ingestion/import-resolvers/configs/csharp.d.ts +8 -0
  82. package/dist/core/ingestion/import-resolvers/configs/csharp.js +27 -0
  83. package/dist/core/ingestion/import-resolvers/configs/dart.d.ts +17 -0
  84. package/dist/core/ingestion/import-resolvers/{dart.js → configs/dart.js} +26 -16
  85. package/dist/core/ingestion/import-resolvers/configs/go.d.ts +8 -0
  86. package/dist/core/ingestion/import-resolvers/configs/go.js +26 -0
  87. package/dist/core/ingestion/import-resolvers/configs/jvm.d.ts +13 -0
  88. package/dist/core/ingestion/import-resolvers/configs/jvm.js +68 -0
  89. package/dist/core/ingestion/import-resolvers/configs/php.d.ts +8 -0
  90. package/dist/core/ingestion/import-resolvers/configs/php.js +15 -0
  91. package/dist/core/ingestion/import-resolvers/configs/python.d.ts +12 -0
  92. package/dist/core/ingestion/import-resolvers/configs/python.js +41 -0
  93. package/dist/core/ingestion/import-resolvers/configs/ruby.d.ts +8 -0
  94. package/dist/core/ingestion/import-resolvers/configs/ruby.js +16 -0
  95. package/dist/core/ingestion/import-resolvers/configs/rust.d.ts +8 -0
  96. package/dist/core/ingestion/import-resolvers/configs/rust.js +54 -0
  97. package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +8 -0
  98. package/dist/core/ingestion/import-resolvers/{swift.js → configs/swift.js} +10 -5
  99. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.d.ts +9 -0
  100. package/dist/core/ingestion/import-resolvers/configs/typescript-javascript.js +23 -0
  101. package/dist/core/ingestion/import-resolvers/csharp.d.ts +4 -5
  102. package/dist/core/ingestion/import-resolvers/csharp.js +4 -20
  103. package/dist/core/ingestion/import-resolvers/go.d.ts +4 -5
  104. package/dist/core/ingestion/import-resolvers/go.js +4 -19
  105. package/dist/core/ingestion/import-resolvers/jvm.d.ts +5 -10
  106. package/dist/core/ingestion/import-resolvers/jvm.js +5 -58
  107. package/dist/core/ingestion/import-resolvers/php.d.ts +4 -5
  108. package/dist/core/ingestion/import-resolvers/php.js +4 -7
  109. package/dist/core/ingestion/import-resolvers/python.d.ts +3 -6
  110. package/dist/core/ingestion/import-resolvers/python.js +3 -18
  111. package/dist/core/ingestion/import-resolvers/resolver-factory.d.ts +24 -0
  112. package/dist/core/ingestion/import-resolvers/resolver-factory.js +33 -0
  113. package/dist/core/ingestion/import-resolvers/ruby.d.ts +4 -5
  114. package/dist/core/ingestion/import-resolvers/ruby.js +4 -7
  115. package/dist/core/ingestion/import-resolvers/rust.d.ts +4 -5
  116. package/dist/core/ingestion/import-resolvers/rust.js +4 -47
  117. package/dist/core/ingestion/import-resolvers/standard.d.ts +3 -9
  118. package/dist/core/ingestion/import-resolvers/standard.js +7 -8
  119. package/dist/core/ingestion/import-resolvers/types.d.ts +24 -0
  120. package/dist/core/ingestion/language-provider.d.ts +12 -0
  121. package/dist/core/ingestion/languages/c-cpp.js +15 -12
  122. package/dist/core/ingestion/languages/csharp.js +11 -21
  123. package/dist/core/ingestion/languages/dart.js +11 -7
  124. package/dist/core/ingestion/languages/go.js +11 -20
  125. package/dist/core/ingestion/languages/java.js +11 -18
  126. package/dist/core/ingestion/languages/kotlin.js +11 -13
  127. package/dist/core/ingestion/languages/php.js +11 -7
  128. package/dist/core/ingestion/languages/python.js +11 -7
  129. package/dist/core/ingestion/languages/ruby.js +11 -7
  130. package/dist/core/ingestion/languages/rust.js +11 -7
  131. package/dist/core/ingestion/languages/swift.js +11 -18
  132. package/dist/core/ingestion/languages/typescript.js +15 -23
  133. package/dist/core/ingestion/languages/vue.js +11 -17
  134. package/dist/core/ingestion/model/index.d.ts +2 -2
  135. package/dist/core/ingestion/model/index.js +1 -1
  136. package/dist/core/ingestion/model/resolve.d.ts +3 -0
  137. package/dist/core/ingestion/model/resolve.js +6 -2
  138. package/dist/core/ingestion/parsing-processor.d.ts +1 -2
  139. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  140. package/dist/core/ingestion/tree-sitter-queries.js +81 -0
  141. package/dist/core/ingestion/type-env.d.ts +1 -1
  142. package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -1
  143. package/dist/core/ingestion/utils/ast-helpers.js +3 -0
  144. package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
  145. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
  146. package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
  147. package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
  148. package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
  149. package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
  150. package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
  151. package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
  152. package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
  153. package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
  154. package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
  155. package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
  156. package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
  157. package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
  158. package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
  159. package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
  160. package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
  161. package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
  162. package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
  163. package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
  164. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
  165. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
  166. package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
  167. package/dist/core/ingestion/variable-extractors/generic.js +80 -0
  168. package/dist/core/ingestion/variable-types.d.ts +82 -0
  169. package/dist/core/ingestion/variable-types.js +2 -0
  170. package/dist/core/ingestion/workers/parse-worker.js +196 -166
  171. package/dist/core/ingestion/workers/worker-pool.js +3 -0
  172. package/dist/core/lbug/csv-generator.js +1 -0
  173. package/dist/core/lbug/lbug-adapter.d.ts +13 -4
  174. package/dist/core/lbug/lbug-adapter.js +166 -81
  175. package/dist/core/lbug/schema.d.ts +9 -1
  176. package/dist/core/lbug/schema.js +19 -2
  177. package/dist/core/run-analyze.js +17 -4
  178. package/dist/core/tree-sitter/parser-loader.d.ts +3 -0
  179. package/dist/core/tree-sitter/parser-loader.js +17 -8
  180. package/dist/mcp/core/embedder.js +5 -0
  181. package/dist/mcp/local/local-backend.js +29 -19
  182. package/dist/server/api.js +10 -21
  183. package/package.json +5 -3
  184. package/scripts/build-tree-sitter-proto.cjs +82 -0
  185. package/vendor/node_modules/node-addon-api/node_addon_api.Makefile +6 -0
  186. package/vendor/node_modules/node-addon-api/node_addon_api.target.mk +104 -0
  187. package/vendor/node_modules/node-addon-api/node_addon_api_except.target.mk +108 -0
  188. package/vendor/node_modules/node-addon-api/node_addon_api_except_all.target.mk +104 -0
  189. package/vendor/node_modules/node-addon-api/node_addon_api_maybe.target.mk +104 -0
  190. package/vendor/tree-sitter-proto/package.json +1 -7
  191. package/dist/core/ingestion/call-sites/extract-language-call-site.d.ts +0 -10
  192. package/dist/core/ingestion/call-sites/extract-language-call-site.js +0 -22
  193. package/dist/core/ingestion/call-sites/java.d.ts +0 -9
  194. package/dist/core/ingestion/call-sites/java.js +0 -30
  195. package/dist/core/ingestion/import-resolvers/dart.d.ts +0 -7
  196. package/dist/core/ingestion/import-resolvers/swift.d.ts +0 -7
  197. package/dist/core/ingestion/import-resolvers/vue.d.ts +0 -8
  198. package/dist/core/ingestion/import-resolvers/vue.js +0 -9
@@ -16,6 +16,8 @@ export { isWriteQuery };
16
16
  import { parseDiffHunks } from '../../storage/git.js';
17
17
  import { listRegisteredRepos, cleanupOldKuzuFiles, } from '../../storage/repo-manager.js';
18
18
  import { GroupService } from '../../core/group/service.js';
19
+ import { collectBestChunks } from '../../core/embeddings/types.js';
20
+ import { EMBEDDING_TABLE_NAME, EMBEDDING_INDEX_NAME } from '../../core/lbug/schema.js';
19
21
  // AI context generation is CLI-only (gitnexus analyze)
20
22
  // import { generateAIContextFiles } from '../../cli/ai-context.js';
21
23
  /**
@@ -691,29 +693,37 @@ export class LocalBackend {
691
693
  async semanticSearch(repo, query, limit) {
692
694
  try {
693
695
  // Check if embedding table exists before loading the model (avoids heavy model init when embeddings are off)
694
- const tableCheck = await executeQuery(repo.id, `MATCH (e:CodeEmbedding) RETURN COUNT(*) AS cnt LIMIT 1`);
696
+ const tableCheck = await executeQuery(repo.id, `MATCH (e:${EMBEDDING_TABLE_NAME}) RETURN COUNT(*) AS cnt LIMIT 1`);
695
697
  if (!tableCheck.length || (tableCheck[0].cnt ?? tableCheck[0][0]) === 0)
696
698
  return [];
697
699
  const { embedQuery, getEmbeddingDims } = await import('../core/embedder.js');
698
700
  const queryVec = await embedQuery(query);
699
701
  const dims = getEmbeddingDims();
700
702
  const queryVecStr = `[${queryVec.join(',')}]`;
701
- const vectorQuery = `
702
- CALL QUERY_VECTOR_INDEX('CodeEmbedding', 'code_embedding_idx',
703
- CAST(${queryVecStr} AS FLOAT[${dims}]), ${limit})
704
- YIELD node AS emb, distance
705
- WITH emb, distance
706
- WHERE distance < 0.6
707
- RETURN emb.nodeId AS nodeId, distance
708
- ORDER BY distance
709
- `;
710
- const embResults = await executeQuery(repo.id, vectorQuery);
711
- if (embResults.length === 0)
703
+ const bestChunks = await collectBestChunks(limit, async (fetchLimit) => {
704
+ const vectorQuery = `
705
+ CALL QUERY_VECTOR_INDEX('${EMBEDDING_TABLE_NAME}', '${EMBEDDING_INDEX_NAME}',
706
+ CAST(${queryVecStr} AS FLOAT[${dims}]), ${fetchLimit})
707
+ YIELD node AS emb, distance
708
+ WITH emb, distance
709
+ WHERE distance < 0.6
710
+ RETURN emb.nodeId AS nodeId, emb.chunkIndex AS chunkIndex,
711
+ emb.startLine AS startLine, emb.endLine AS endLine, distance
712
+ ORDER BY distance
713
+ `;
714
+ const embResults = await executeQuery(repo.id, vectorQuery);
715
+ return embResults.map((row) => ({
716
+ nodeId: row.nodeId ?? row[0],
717
+ chunkIndex: row.chunkIndex ?? row[1] ?? 0,
718
+ startLine: row.startLine ?? row[2] ?? 0,
719
+ endLine: row.endLine ?? row[3] ?? 0,
720
+ distance: row.distance ?? row[4],
721
+ }));
722
+ });
723
+ if (bestChunks.size === 0)
712
724
  return [];
713
725
  const results = [];
714
- for (const embRow of embResults) {
715
- const nodeId = embRow.nodeId ?? embRow[0];
716
- const distance = embRow.distance ?? embRow[1];
726
+ for (const [nodeId, chunk] of Array.from(bestChunks.entries()).slice(0, limit)) {
717
727
  const labelEndIdx = nodeId.indexOf(':');
718
728
  const label = labelEndIdx > 0 ? nodeId.substring(0, labelEndIdx) : 'Unknown';
719
729
  // Validate label against known node types to prevent Cypher injection
@@ -722,7 +732,7 @@ export class LocalBackend {
722
732
  try {
723
733
  const nodeQuery = label === 'File'
724
734
  ? `MATCH (n:File {id: $nodeId}) RETURN n.name AS name, n.filePath AS filePath`
725
- : `MATCH (n:\`${label}\` {id: $nodeId}) RETURN n.name AS name, n.filePath AS filePath, n.startLine AS startLine, n.endLine AS endLine`;
735
+ : `MATCH (n:\`${label}\` {id: $nodeId}) RETURN n.name AS name, n.filePath AS filePath`;
726
736
  const nodeRows = await executeParameterized(repo.id, nodeQuery, { nodeId });
727
737
  if (nodeRows.length > 0) {
728
738
  const nodeRow = nodeRows[0];
@@ -731,9 +741,9 @@ export class LocalBackend {
731
741
  name: nodeRow.name ?? nodeRow[0] ?? '',
732
742
  type: label,
733
743
  filePath: nodeRow.filePath ?? nodeRow[1] ?? '',
734
- distance,
735
- startLine: label !== 'File' ? (nodeRow.startLine ?? nodeRow[2]) : undefined,
736
- endLine: label !== 'File' ? (nodeRow.endLine ?? nodeRow[3]) : undefined,
744
+ distance: chunk.distance,
745
+ startLine: chunk.startLine,
746
+ endLine: chunk.endLine,
737
747
  });
738
748
  }
739
749
  }
@@ -1277,25 +1277,12 @@ export const createServer = async (port, host = '127.0.0.1') => {
1277
1277
  const lbugPath = path.join(entry.storagePath, 'lbug');
1278
1278
  await withLbugDb(lbugPath, async () => {
1279
1279
  const { runEmbeddingPipeline } = await import('../core/embeddings/embedding-pipeline.js');
1280
- // Skip nodes that already have embeddings — Kuzu forbids SET on vector-indexed properties.
1281
- let skipNodeIds;
1282
- try {
1283
- const rows = await executeQuery('MATCH (e:CodeEmbedding) RETURN e.nodeId AS nodeId');
1284
- if (rows && rows.length > 0) {
1285
- skipNodeIds = new Set(rows.map((r) => r.nodeId ?? r[0]).filter(Boolean));
1286
- console.log(`[embed] ${skipNodeIds.size} nodes already embedded — skipping in incremental run`);
1287
- }
1288
- }
1289
- catch (err) {
1290
- // Swallow only "table does not exist" — let real connection errors propagate.
1291
- // Log so ops can see this path fire if Kuzu ever changes error wording.
1292
- const msg = err?.message ?? '';
1293
- if (msg.includes('does not exist') || msg.includes('not found')) {
1294
- console.log(`[embed] CodeEmbedding table not yet present — full embedding run (${msg})`);
1295
- }
1296
- else {
1297
- throw err;
1298
- }
1280
+ // Fetch existing content hashes for incremental embedding.
1281
+ // Delegated to lbug-adapter which owns the DB query logic and legacy-fallback handling.
1282
+ const { fetchExistingEmbeddingHashes } = await import('../core/lbug/lbug-adapter.js');
1283
+ const existingEmbeddings = await fetchExistingEmbeddingHashes(executeQuery);
1284
+ if (existingEmbeddings && existingEmbeddings.size > 0) {
1285
+ console.log(`[embed] ${existingEmbeddings.size} nodes already embedded incremental run with content-hash comparison`);
1299
1286
  }
1300
1287
  await runEmbeddingPipeline(executeQuery, executeWithReusedStatement, (p) => {
1301
1288
  embedJobManager.updateJob(job.id, {
@@ -1313,8 +1300,10 @@ export const createServer = async (port, host = '127.0.0.1') => {
1313
1300
  : `${p.phase} (${p.percent}%)`,
1314
1301
  },
1315
1302
  });
1316
- }, {}, // config: use defaults (runEmbeddingPipeline signature: executeQuery, executeWithReusedStatement, onProgress, config, skipNodeIds)
1317
- skipNodeIds);
1303
+ }, {}, // config: use defaults
1304
+ undefined, // skipNodeIds
1305
+ undefined, // context
1306
+ existingEmbeddings);
1318
1307
  });
1319
1308
  clearTimeout(embedTimeout);
1320
1309
  releaseRepoLock(repoLockPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitnexus",
3
- "version": "1.6.2-rc.2",
3
+ "version": "1.6.2-rc.21",
4
4
  "description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
5
5
  "author": "Abhigyan Patwari",
6
6
  "license": "PolyForm-Noncommercial-1.0.0",
@@ -46,7 +46,7 @@
46
46
  "test:integration": "vitest run test/integration",
47
47
  "test:watch": "vitest",
48
48
  "test:coverage": "vitest run --coverage",
49
- "postinstall": "node scripts/patch-tree-sitter-swift.cjs",
49
+ "postinstall": "node scripts/patch-tree-sitter-swift.cjs && node scripts/build-tree-sitter-proto.cjs",
50
50
  "prepare": "node scripts/build.js",
51
51
  "prepack": "node scripts/build.js"
52
52
  },
@@ -71,7 +71,7 @@
71
71
  "pandemonium": "^2.4.0",
72
72
  "tree-sitter": "^0.21.1",
73
73
  "tree-sitter-c": "0.23.2",
74
- "tree-sitter-c-sharp": "^0.23.1",
74
+ "tree-sitter-c-sharp": "0.23.1",
75
75
  "tree-sitter-cpp": "^0.23.4",
76
76
  "tree-sitter-go": "^0.23.0",
77
77
  "tree-sitter-java": "^0.23.5",
@@ -84,6 +84,8 @@
84
84
  "uuid": "^13.0.0"
85
85
  },
86
86
  "optionalDependencies": {
87
+ "node-addon-api": "^8.0.0",
88
+ "node-gyp-build": "^4.8.0",
87
89
  "tree-sitter-dart": "git+https://github.com/UserNobody14/tree-sitter-dart.git#80e23c07b64494f7e21090bb3450223ef0b192f4",
88
90
  "tree-sitter-kotlin": "^0.3.8",
89
91
  "tree-sitter-proto": "file:./vendor/tree-sitter-proto",
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build tree-sitter-proto native binding.
4
+ *
5
+ * Why this script exists:
6
+ * tree-sitter-proto is vendored under gitnexus/vendor/tree-sitter-proto/
7
+ * and declared as a `file:` optionalDependency. Previously, the vendored
8
+ * package had its own `dependencies` and `install` script, which caused
9
+ * npm to create `vendor/tree-sitter-proto/node_modules/` and
10
+ * `vendor/tree-sitter-proto/build/` during install. Those directories
11
+ * blocked `rmdir` on global-install upgrade, producing:
12
+ *
13
+ * ENOTEMPTY: directory not empty, rmdir
14
+ * '.../gitnexus/vendor/tree-sitter-proto/node_modules/node-addon-api'
15
+ *
16
+ * (See https://github.com/abhigyanpatwari/GitNexus/issues/836.)
17
+ *
18
+ * We stripped `dependencies` and the `install` script from the vendored
19
+ * package.json, hoisted `node-addon-api` and `node-gyp-build` into
20
+ * gitnexus's own optionalDependencies, and moved native compilation here.
21
+ *
22
+ * What this does:
23
+ * Runs `npx node-gyp rebuild` inside `node_modules/tree-sitter-proto/`
24
+ * (which npm creates as a copy of vendor/tree-sitter-proto/ when
25
+ * resolving the file: dep). Build output lands in
26
+ * `node_modules/tree-sitter-proto/build/Release/tree_sitter_proto_binding.node`
27
+ * — under npm-managed territory, safe on upgrade.
28
+ *
29
+ * Mirrors scripts/patch-tree-sitter-swift.cjs. Best-effort: if any
30
+ * precondition fails (optional dep absent, no toolchain, --ignore-scripts),
31
+ * warn and exit 0 so gitnexus install still succeeds.
32
+ */
33
+ const fs = require('fs');
34
+ const path = require('path');
35
+ const { execSync } = require('child_process');
36
+
37
+ const protoDir = path.join(__dirname, '..', 'node_modules', 'tree-sitter-proto');
38
+ const bindingGyp = path.join(protoDir, 'binding.gyp');
39
+ const bindingNode = path.join(protoDir, 'build', 'Release', 'tree_sitter_proto_binding.node');
40
+
41
+ try {
42
+ if (!fs.existsSync(bindingGyp)) {
43
+ // tree-sitter-proto is an optionalDependency; absent when install
44
+ // skipped optional deps or the file: dep was not resolved.
45
+ process.exit(0);
46
+ }
47
+
48
+ // Skip if the native binding already exists (idempotent re-run).
49
+ if (fs.existsSync(bindingNode)) {
50
+ process.exit(0);
51
+ }
52
+
53
+ // Pre-flight: the hoisted build deps must be resolvable.
54
+ try {
55
+ require.resolve('node-addon-api');
56
+ require.resolve('node-gyp-build');
57
+ } catch (resolveErr) {
58
+ console.warn(
59
+ '[tree-sitter-proto] Skipping build: hoisted build deps not resolvable (%s).',
60
+ resolveErr.message,
61
+ );
62
+ console.warn(
63
+ '[tree-sitter-proto] Proto parsing will be unavailable. Install without --no-optional and with scripts enabled to build.',
64
+ );
65
+ process.exit(0);
66
+ }
67
+
68
+ console.log('[tree-sitter-proto] Building native binding...');
69
+ execSync('npx node-gyp rebuild', {
70
+ cwd: protoDir,
71
+ stdio: 'pipe',
72
+ timeout: 180000,
73
+ });
74
+ console.log('[tree-sitter-proto] Native binding built successfully');
75
+ } catch (err) {
76
+ console.warn('[tree-sitter-proto] Could not build native binding:', err.message);
77
+ console.warn(
78
+ '[tree-sitter-proto] Proto (.proto) parsing will be unavailable. Non-proto gitnexus functionality is unaffected.',
79
+ );
80
+ // Exit 0: optionalDependency failures must not fail the gitnexus install.
81
+ process.exit(0);
82
+ }
@@ -0,0 +1,6 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ export builddir_name ?= ./build/../../node_modules/node-addon-api/.
4
+ .PHONY: all
5
+ all:
6
+ $(MAKE) -C ../../tree-sitter-proto/build node_addon_api_except
@@ -0,0 +1,104 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ TOOLSET := target
4
+ TARGET := node_addon_api
5
+ DEFS_Debug := \
6
+ '-DNODE_GYP_MODULE_NAME=node_addon_api' \
7
+ '-DUSING_UV_SHARED=1' \
8
+ '-DUSING_V8_SHARED=1' \
9
+ '-DV8_DEPRECATION_WARNINGS=1' \
10
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
11
+ '-D_FILE_OFFSET_BITS=64' \
12
+ '-D_LARGEFILE_SOURCE' \
13
+ '-D__STDC_FORMAT_MACROS' \
14
+ '-DOPENSSL_NO_PINSHARED' \
15
+ '-DOPENSSL_THREADS' \
16
+ '-DDEBUG' \
17
+ '-D_DEBUG'
18
+
19
+ # Flags passed to all source files.
20
+ CFLAGS_Debug := \
21
+ -fPIC \
22
+ -pthread \
23
+ -Wall \
24
+ -Wextra \
25
+ -Wno-unused-parameter \
26
+ -m64 \
27
+ -g \
28
+ -O0
29
+
30
+ # Flags passed to only C files.
31
+ CFLAGS_C_Debug :=
32
+
33
+ # Flags passed to only C++ files.
34
+ CFLAGS_CC_Debug := \
35
+ -fno-rtti \
36
+ -fno-exceptions \
37
+ -std=gnu++17
38
+
39
+ INCS_Debug := \
40
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
41
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
42
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
43
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
44
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
45
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
46
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
47
+
48
+ DEFS_Release := \
49
+ '-DNODE_GYP_MODULE_NAME=node_addon_api' \
50
+ '-DUSING_UV_SHARED=1' \
51
+ '-DUSING_V8_SHARED=1' \
52
+ '-DV8_DEPRECATION_WARNINGS=1' \
53
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
54
+ '-D_FILE_OFFSET_BITS=64' \
55
+ '-D_LARGEFILE_SOURCE' \
56
+ '-D__STDC_FORMAT_MACROS' \
57
+ '-DOPENSSL_NO_PINSHARED' \
58
+ '-DOPENSSL_THREADS'
59
+
60
+ # Flags passed to all source files.
61
+ CFLAGS_Release := \
62
+ -fPIC \
63
+ -pthread \
64
+ -Wall \
65
+ -Wextra \
66
+ -Wno-unused-parameter \
67
+ -m64 \
68
+ -O3 \
69
+ -fno-omit-frame-pointer
70
+
71
+ # Flags passed to only C files.
72
+ CFLAGS_C_Release :=
73
+
74
+ # Flags passed to only C++ files.
75
+ CFLAGS_CC_Release := \
76
+ -fno-rtti \
77
+ -fno-exceptions \
78
+ -std=gnu++17
79
+
80
+ INCS_Release := \
81
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
82
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
83
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
84
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
85
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
86
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
87
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
88
+
89
+ OBJS :=
90
+
91
+ # Add to the list of files we specially track dependencies for.
92
+ all_deps += $(OBJS)
93
+
94
+
95
+ ### Rules for final target.
96
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api.stamp: TOOLSET := $(TOOLSET)
97
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api.stamp: FORCE_DO_CMD
98
+ $(call do_cmd,touch)
99
+
100
+ all_deps += $(obj).target/../../node_modules/node-addon-api/node_addon_api.stamp
101
+ # Add target alias
102
+ .PHONY: node_addon_api
103
+ node_addon_api: $(obj).target/../../node_modules/node-addon-api/node_addon_api.stamp
104
+
@@ -0,0 +1,108 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ TOOLSET := target
4
+ TARGET := node_addon_api_except
5
+ DEFS_Debug := \
6
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_except' \
7
+ '-DUSING_UV_SHARED=1' \
8
+ '-DUSING_V8_SHARED=1' \
9
+ '-DV8_DEPRECATION_WARNINGS=1' \
10
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
11
+ '-D_FILE_OFFSET_BITS=64' \
12
+ '-D_LARGEFILE_SOURCE' \
13
+ '-D__STDC_FORMAT_MACROS' \
14
+ '-DOPENSSL_NO_PINSHARED' \
15
+ '-DOPENSSL_THREADS' \
16
+ '-DDEBUG' \
17
+ '-D_DEBUG'
18
+
19
+ # Flags passed to all source files.
20
+ CFLAGS_Debug := \
21
+ -fPIC \
22
+ -pthread \
23
+ -Wall \
24
+ -Wextra \
25
+ -Wno-unused-parameter \
26
+ -m64 \
27
+ -g \
28
+ -O0
29
+
30
+ # Flags passed to only C files.
31
+ CFLAGS_C_Debug :=
32
+
33
+ # Flags passed to only C++ files.
34
+ CFLAGS_CC_Debug := \
35
+ -fno-rtti \
36
+ -fno-exceptions \
37
+ -std=gnu++17
38
+
39
+ INCS_Debug := \
40
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
41
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
42
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
43
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
44
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
45
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
46
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
47
+
48
+ DEFS_Release := \
49
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_except' \
50
+ '-DUSING_UV_SHARED=1' \
51
+ '-DUSING_V8_SHARED=1' \
52
+ '-DV8_DEPRECATION_WARNINGS=1' \
53
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
54
+ '-D_FILE_OFFSET_BITS=64' \
55
+ '-D_LARGEFILE_SOURCE' \
56
+ '-D__STDC_FORMAT_MACROS' \
57
+ '-DOPENSSL_NO_PINSHARED' \
58
+ '-DOPENSSL_THREADS'
59
+
60
+ # Flags passed to all source files.
61
+ CFLAGS_Release := \
62
+ -fPIC \
63
+ -pthread \
64
+ -Wall \
65
+ -Wextra \
66
+ -Wno-unused-parameter \
67
+ -m64 \
68
+ -O3 \
69
+ -fno-omit-frame-pointer
70
+
71
+ # Flags passed to only C files.
72
+ CFLAGS_C_Release :=
73
+
74
+ # Flags passed to only C++ files.
75
+ CFLAGS_CC_Release := \
76
+ -fno-rtti \
77
+ -fno-exceptions \
78
+ -std=gnu++17
79
+
80
+ INCS_Release := \
81
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
82
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
83
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
84
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
85
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
86
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
87
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
88
+
89
+ OBJS :=
90
+
91
+ # Add to the list of files we specially track dependencies for.
92
+ all_deps += $(OBJS)
93
+
94
+
95
+ ### Rules for final target.
96
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_except.stamp: TOOLSET := $(TOOLSET)
97
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_except.stamp: FORCE_DO_CMD
98
+ $(call do_cmd,touch)
99
+
100
+ all_deps += $(obj).target/../../node_modules/node-addon-api/node_addon_api_except.stamp
101
+ # Add target alias
102
+ .PHONY: node_addon_api_except
103
+ node_addon_api_except: $(obj).target/../../node_modules/node-addon-api/node_addon_api_except.stamp
104
+
105
+ # Add target alias to "all" target.
106
+ .PHONY: all
107
+ all: node_addon_api_except
108
+
@@ -0,0 +1,104 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ TOOLSET := target
4
+ TARGET := node_addon_api_except_all
5
+ DEFS_Debug := \
6
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_except_all' \
7
+ '-DUSING_UV_SHARED=1' \
8
+ '-DUSING_V8_SHARED=1' \
9
+ '-DV8_DEPRECATION_WARNINGS=1' \
10
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
11
+ '-D_FILE_OFFSET_BITS=64' \
12
+ '-D_LARGEFILE_SOURCE' \
13
+ '-D__STDC_FORMAT_MACROS' \
14
+ '-DOPENSSL_NO_PINSHARED' \
15
+ '-DOPENSSL_THREADS' \
16
+ '-DDEBUG' \
17
+ '-D_DEBUG'
18
+
19
+ # Flags passed to all source files.
20
+ CFLAGS_Debug := \
21
+ -fPIC \
22
+ -pthread \
23
+ -Wall \
24
+ -Wextra \
25
+ -Wno-unused-parameter \
26
+ -m64 \
27
+ -g \
28
+ -O0
29
+
30
+ # Flags passed to only C files.
31
+ CFLAGS_C_Debug :=
32
+
33
+ # Flags passed to only C++ files.
34
+ CFLAGS_CC_Debug := \
35
+ -fno-rtti \
36
+ -fno-exceptions \
37
+ -std=gnu++17
38
+
39
+ INCS_Debug := \
40
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
41
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
42
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
43
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
44
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
45
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
46
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
47
+
48
+ DEFS_Release := \
49
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_except_all' \
50
+ '-DUSING_UV_SHARED=1' \
51
+ '-DUSING_V8_SHARED=1' \
52
+ '-DV8_DEPRECATION_WARNINGS=1' \
53
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
54
+ '-D_FILE_OFFSET_BITS=64' \
55
+ '-D_LARGEFILE_SOURCE' \
56
+ '-D__STDC_FORMAT_MACROS' \
57
+ '-DOPENSSL_NO_PINSHARED' \
58
+ '-DOPENSSL_THREADS'
59
+
60
+ # Flags passed to all source files.
61
+ CFLAGS_Release := \
62
+ -fPIC \
63
+ -pthread \
64
+ -Wall \
65
+ -Wextra \
66
+ -Wno-unused-parameter \
67
+ -m64 \
68
+ -O3 \
69
+ -fno-omit-frame-pointer
70
+
71
+ # Flags passed to only C files.
72
+ CFLAGS_C_Release :=
73
+
74
+ # Flags passed to only C++ files.
75
+ CFLAGS_CC_Release := \
76
+ -fno-rtti \
77
+ -fno-exceptions \
78
+ -std=gnu++17
79
+
80
+ INCS_Release := \
81
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
82
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
83
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
84
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
85
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
86
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
87
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
88
+
89
+ OBJS :=
90
+
91
+ # Add to the list of files we specially track dependencies for.
92
+ all_deps += $(OBJS)
93
+
94
+
95
+ ### Rules for final target.
96
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_except_all.stamp: TOOLSET := $(TOOLSET)
97
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_except_all.stamp: FORCE_DO_CMD
98
+ $(call do_cmd,touch)
99
+
100
+ all_deps += $(obj).target/../../node_modules/node-addon-api/node_addon_api_except_all.stamp
101
+ # Add target alias
102
+ .PHONY: node_addon_api_except_all
103
+ node_addon_api_except_all: $(obj).target/../../node_modules/node-addon-api/node_addon_api_except_all.stamp
104
+
@@ -0,0 +1,104 @@
1
+ # This file is generated by gyp; do not edit.
2
+
3
+ TOOLSET := target
4
+ TARGET := node_addon_api_maybe
5
+ DEFS_Debug := \
6
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_maybe' \
7
+ '-DUSING_UV_SHARED=1' \
8
+ '-DUSING_V8_SHARED=1' \
9
+ '-DV8_DEPRECATION_WARNINGS=1' \
10
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
11
+ '-D_FILE_OFFSET_BITS=64' \
12
+ '-D_LARGEFILE_SOURCE' \
13
+ '-D__STDC_FORMAT_MACROS' \
14
+ '-DOPENSSL_NO_PINSHARED' \
15
+ '-DOPENSSL_THREADS' \
16
+ '-DDEBUG' \
17
+ '-D_DEBUG'
18
+
19
+ # Flags passed to all source files.
20
+ CFLAGS_Debug := \
21
+ -fPIC \
22
+ -pthread \
23
+ -Wall \
24
+ -Wextra \
25
+ -Wno-unused-parameter \
26
+ -m64 \
27
+ -g \
28
+ -O0
29
+
30
+ # Flags passed to only C files.
31
+ CFLAGS_C_Debug :=
32
+
33
+ # Flags passed to only C++ files.
34
+ CFLAGS_CC_Debug := \
35
+ -fno-rtti \
36
+ -fno-exceptions \
37
+ -std=gnu++17
38
+
39
+ INCS_Debug := \
40
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
41
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
42
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
43
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
44
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
45
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
46
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
47
+
48
+ DEFS_Release := \
49
+ '-DNODE_GYP_MODULE_NAME=node_addon_api_maybe' \
50
+ '-DUSING_UV_SHARED=1' \
51
+ '-DUSING_V8_SHARED=1' \
52
+ '-DV8_DEPRECATION_WARNINGS=1' \
53
+ '-D_GLIBCXX_USE_CXX11_ABI=1' \
54
+ '-D_FILE_OFFSET_BITS=64' \
55
+ '-D_LARGEFILE_SOURCE' \
56
+ '-D__STDC_FORMAT_MACROS' \
57
+ '-DOPENSSL_NO_PINSHARED' \
58
+ '-DOPENSSL_THREADS'
59
+
60
+ # Flags passed to all source files.
61
+ CFLAGS_Release := \
62
+ -fPIC \
63
+ -pthread \
64
+ -Wall \
65
+ -Wextra \
66
+ -Wno-unused-parameter \
67
+ -m64 \
68
+ -O3 \
69
+ -fno-omit-frame-pointer
70
+
71
+ # Flags passed to only C files.
72
+ CFLAGS_C_Release :=
73
+
74
+ # Flags passed to only C++ files.
75
+ CFLAGS_CC_Release := \
76
+ -fno-rtti \
77
+ -fno-exceptions \
78
+ -std=gnu++17
79
+
80
+ INCS_Release := \
81
+ -I/home/runner/.cache/node-gyp/20.20.2/include/node \
82
+ -I/home/runner/.cache/node-gyp/20.20.2/src \
83
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/config \
84
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/openssl/openssl/include \
85
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/uv/include \
86
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/zlib \
87
+ -I/home/runner/.cache/node-gyp/20.20.2/deps/v8/include
88
+
89
+ OBJS :=
90
+
91
+ # Add to the list of files we specially track dependencies for.
92
+ all_deps += $(OBJS)
93
+
94
+
95
+ ### Rules for final target.
96
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_maybe.stamp: TOOLSET := $(TOOLSET)
97
+ $(obj).target/../../node_modules/node-addon-api/node_addon_api_maybe.stamp: FORCE_DO_CMD
98
+ $(call do_cmd,touch)
99
+
100
+ all_deps += $(obj).target/../../node_modules/node-addon-api/node_addon_api_maybe.stamp
101
+ # Add target alias
102
+ .PHONY: node_addon_api_maybe
103
+ node_addon_api_maybe: $(obj).target/../../node_modules/node-addon-api/node_addon_api_maybe.stamp
104
+