summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatt korwel <[email protected]>2025-06-08 02:05:55 -0700
committerGitHub <[email protected]>2025-06-08 02:05:55 -0700
commit584286cfd9b53eee8f1189a3ad98462c77eb8fb9 (patch)
tree7c55df6bd6fbc60c3264f2a58ee531b3517f639e
parentd0b78225a1dc559ed325f2bc0040a50430fe9838 (diff)
fix(deps): externalize tree-sitter (#840)
Submitting without approval to fix broken deployment on main. But also, we should lock this down.
-rw-r--r--esbuild.config.js29
-rw-r--r--eslint.config.js2
-rw-r--r--package-lock.json17
-rw-r--r--package.json13
-rw-r--r--packages/core/package.json7
-rw-r--r--scripts/esbuild-banner.js11
6 files changed, 59 insertions, 20 deletions
diff --git a/esbuild.config.js b/esbuild.config.js
new file mode 100644
index 00000000..7dae9e37
--- /dev/null
+++ b/esbuild.config.js
@@ -0,0 +1,29 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import esbuild from 'esbuild';
+
+esbuild
+ .build({
+ entryPoints: ['packages/cli/index.ts'],
+ bundle: true,
+ outfile: 'bundle/gemini.js',
+ platform: 'node',
+ format: 'esm',
+ banner: {
+ js: `import { createRequire } from 'module'; const require = createRequire(import.meta.url); globalThis.__filename = require('url').fileURLToPath(import.meta.url); globalThis.__dirname = require('path').dirname(globalThis.__filename);`,
+ },
+ external: [
+ 'tree-sitter',
+ 'tree-sitter-c-sharp',
+ 'tree-sitter-go',
+ 'tree-sitter-java',
+ 'tree-sitter-python',
+ 'tree-sitter-rust',
+ 'tree-sitter-typescript',
+ ],
+ })
+ .catch(() => process.exit(1));
diff --git a/eslint.config.js b/eslint.config.js
index 6865ca4c..9bf13cde 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -155,7 +155,7 @@ export default tseslint.config(
},
// extra settings for scripts that we run directly with node
{
- files: ['./scripts/**/*.js'],
+ files: ['./scripts/**/*.js', 'esbuild.config.js'],
languageOptions: {
globals: {
process: 'readonly',
diff --git a/package-lock.json b/package-lock.json
index 3dadcb4f..8af3f4dd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,13 @@
"packages/*"
],
"dependencies": {
- "tree-sitter-rust": "^0.21.0"
+ "tree-sitter": "^0.21.0",
+ "tree-sitter-c-sharp": "^0.21.0",
+ "tree-sitter-go": "^0.21.0",
+ "tree-sitter-java": "^0.21.0",
+ "tree-sitter-python": "^0.21.0",
+ "tree-sitter-rust": "^0.21.0",
+ "tree-sitter-typescript": "^0.21.0"
},
"bin": {
"gemini": "bundle/gemini.js"
@@ -10404,14 +10410,7 @@
"fast-glob": "^3.3.3",
"minimatch": "^10.0.0",
"shell-quote": "^1.8.2",
- "strip-ansi": "^7.1.0",
- "tree-sitter": "^0.21.0",
- "tree-sitter-c-sharp": "^0.21.0",
- "tree-sitter-go": "^0.21.0",
- "tree-sitter-java": "^0.21.0",
- "tree-sitter-python": "^0.21.0",
- "tree-sitter-rust": "^0.21.0",
- "tree-sitter-typescript": "^0.21.0"
+ "strip-ansi": "^7.1.0"
},
"devDependencies": {
"@types/diff": "^7.0.2",
diff --git a/package.json b/package.json
index 068dad1e..04239d58 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
"auth:docker": "gcloud auth configure-docker us-west1-docker.pkg.dev",
"auth": "npm run auth:npm && npm run auth:docker",
"prerelease:dev": "npm run prerelease:version --workspaces && npm run prerelease:deps --workspaces",
- "bundle": "npm run generate && node_modules/.bin/esbuild packages/cli/index.ts --bundle --outfile=bundle/gemini.js --platform=node --format=esm --banner:js=\"import { createRequire } from 'module'; const require = createRequire(import.meta.url); globalThis.__filename = require('url').fileURLToPath(import.meta.url); globalThis.__dirname = require('path').dirname(globalThis.__filename);\" && bash scripts/copy_bundle_assets.sh",
+ "bundle": "npm run generate && node esbuild.config.js",
"build:cli": "npm run build --workspace packages/cli",
"build:core": "npm run build --workspace packages/core",
"build:packages": "npm run build:core && npm run build:cli",
@@ -42,7 +42,8 @@
"files": [
"bundle/",
"README.md",
- "LICENSE"
+ "LICENSE",
+ "node_modules/tree-sitter-*/build/Release/*.node"
],
"devDependencies": {
"@types/micromatch": "^4.0.9",
@@ -66,6 +67,12 @@
"yargs": "^17.7.2"
},
"dependencies": {
- "tree-sitter-rust": "^0.21.0"
+ "tree-sitter": "^0.21.0",
+ "tree-sitter-c-sharp": "^0.21.0",
+ "tree-sitter-go": "^0.21.0",
+ "tree-sitter-java": "^0.21.0",
+ "tree-sitter-python": "^0.21.0",
+ "tree-sitter-rust": "^0.21.0",
+ "tree-sitter-typescript": "^0.21.0"
}
}
diff --git a/packages/core/package.json b/packages/core/package.json
index 6be05df0..ae6e6fc7 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -29,13 +29,6 @@
"minimatch": "^10.0.0",
"shell-quote": "^1.8.2",
"strip-ansi": "^7.1.0",
- "tree-sitter": "^0.21.0",
- "tree-sitter-c-sharp": "^0.21.0",
- "tree-sitter-go": "^0.21.0",
- "tree-sitter-java": "^0.21.0",
- "tree-sitter-python": "^0.21.0",
- "tree-sitter-rust": "^0.21.0",
- "tree-sitter-typescript": "^0.21.0",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/sdk-node": "^0.52.0",
"@opentelemetry/exporter-trace-otlp-grpc": "^0.52.0",
diff --git a/scripts/esbuild-banner.js b/scripts/esbuild-banner.js
new file mode 100644
index 00000000..98b14617
--- /dev/null
+++ b/scripts/esbuild-banner.js
@@ -0,0 +1,11 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// esbuild-banner.js
+import { createRequire } from 'module';
+const require = createRequire(import.meta.url);
+globalThis.__filename = require('url').fileURLToPath(import.meta.url);
+globalThis.__dirname = require('path').dirname(globalThis.__filename);