This is an automated email from the ASF dual-hosted git repository.

spmallette pushed a commit to branch js-translator
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 728e654a7324c00318e520c20dd7e6db20060b16
Author: Stephen Mallette <[email protected]>
AuthorDate: Fri Mar 20 15:44:33 2026 -0400

    Bumped to typescript for gremlint
---
 gremlin-mcp/src/main/javascript/package-lock.json  | 149 +--------------------
 gremlin-mcp/src/main/javascript/package.json       |   1 -
 .../src/main/javascript/src/gremlin/connection.ts  |  24 ++--
 .../main/javascript/src/gremlin/edge-patterns.ts   |   8 +-
 .../javascript/src/gremlin/property-analyzer.ts    |   5 +-
 .../src/main/javascript/src/gremlin/query-utils.ts |   8 +-
 .../javascript/src/gremlin/schema-generator.ts     |   4 +-
 .../src/main/javascript/src/gremlin/service.ts     |   2 +-
 .../src/main/javascript/src/gremlin/types.ts       |  10 +-
 gremlin-mcp/src/main/javascript/tsconfig.json      |   9 ++
 10 files changed, 39 insertions(+), 181 deletions(-)

diff --git a/gremlin-mcp/src/main/javascript/package-lock.json 
b/gremlin-mcp/src/main/javascript/package-lock.json
index ae1d20a78a..ccdfaae386 100644
--- a/gremlin-mcp/src/main/javascript/package-lock.json
+++ b/gremlin-mcp/src/main/javascript/package-lock.json
@@ -13,10 +13,8 @@
         "@effect/platform": "^0.90.6",
         "@effect/platform-node": "^0.96.0",
         "@modelcontextprotocol/sdk": "^1.17.4",
-        "@types/gremlin": "^3.6.7",
         "effect": "^3.17.9",
-        "gremlin": "^3.7.4",
-        "gremlin-language": 
"file:../../../../gremlin-javascript/src/main/javascript/gremlin-javascript",
+        "gremlin": 
"file:../../../../gremlin-javascript/src/main/javascript/gremlin-javascript",
         "gremlint": "~3.8.0",
         "winston": "^3.17.0",
         "zod": "^3.25.76"
@@ -2535,12 +2533,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@types/gremlin": {
-      "version": "3.6.7",
-      "resolved": 
"https://registry.npmjs.org/@types/gremlin/-/gremlin-3.6.7.tgz";,
-      "integrity": 
"sha512-qbzClMUhVb2+6XOtAwUnNtVmDeBsvAYXyoQYIvQcv9pQkk7z+Fct0o59rYCyLf4R47Xlg7U+6lvUkP3Ec/XRdg==",
-      "license": "MIT"
-    },
     "node_modules/@types/istanbul-lib-coverage": {
       "version": "2.0.6",
       "resolved": 
"https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz";,
@@ -3160,17 +3152,6 @@
         "win32"
       ]
     },
-    "node_modules/abort-controller": {
-      "version": "3.0.0",
-      "resolved": 
"https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz";,
-      "integrity": 
"sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-      "dependencies": {
-        "event-target-shim": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=6.5"
-      }
-    },
     "node_modules/accepts": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz";,
@@ -3424,25 +3405,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/base64-js": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz";,
-      "integrity": 
"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross";
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross";
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support";
-        }
-      ]
-    },
     "node_modules/body-parser": {
       "version": "2.2.0",
       "resolved": 
"https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz";,
@@ -3542,29 +3504,6 @@
         "node-int64": "^0.4.0"
       }
     },
-    "node_modules/buffer": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz";,
-      "integrity": 
"sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross";
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross";
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support";
-        }
-      ],
-      "dependencies": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.2.1"
-      }
-    },
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": 
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz";,
@@ -4526,28 +4465,13 @@
         "through": "^2.3.8"
       }
     },
-    "node_modules/event-target-shim": {
-      "version": "5.0.1",
-      "resolved": 
"https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz";,
-      "integrity": 
"sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/eventemitter3": {
       "version": "5.0.1",
       "resolved": 
"https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz";,
       "integrity": 
"sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+      "dev": true,
       "license": "MIT"
     },
-    "node_modules/events": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz";,
-      "integrity": 
"sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
-      "engines": {
-        "node": ">=0.8.x"
-      }
-    },
     "node_modules/eventsource": {
       "version": "3.0.7",
       "resolved": 
"https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz";,
@@ -5153,36 +5077,9 @@
       "license": "MIT"
     },
     "node_modules/gremlin": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/gremlin/-/gremlin-3.8.0.tgz";,
-      "integrity": 
"sha512-VG4XhHZjqmJsVSrEKwYE3adW/G5jwQ5AoYWb3NUSV+sXRsdGHOvYLYzTIwax/CoyRHeL971vCO2jsdGJHIcuGQ==",
-      "dependencies": {
-        "buffer": "^6.0.3",
-        "eventemitter3": "^5.0.1",
-        "readable-stream": "^4.5.2",
-        "uuid": "^9.0.1",
-        "ws": "^8.16.0"
-      },
-      "engines": {
-        "node": ">=20"
-      }
-    },
-    "node_modules/gremlin-language": {
       "resolved": 
"../../../../gremlin-javascript/src/main/javascript/gremlin-javascript",
       "link": true
     },
-    "node_modules/gremlin/node_modules/uuid": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz";,
-      "integrity": 
"sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
-      "funding": [
-        "https://github.com/sponsors/broofa";,
-        "https://github.com/sponsors/ctavan";
-      ],
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
     "node_modules/gremlint": {
       "version": "3.8.0",
       "resolved": "https://registry.npmjs.org/gremlint/-/gremlint-3.8.0.tgz";,
@@ -5317,25 +5214,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/ieee754": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz";,
-      "integrity": 
"sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/feross";
-        },
-        {
-          "type": "patreon",
-          "url": "https://www.patreon.com/feross";
-        },
-        {
-          "type": "consulting",
-          "url": "https://feross.org/support";
-        }
-      ]
-    },
     "node_modules/ignore": {
       "version": "5.3.2",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz";,
@@ -7441,14 +7319,6 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1";
       }
     },
-    "node_modules/process": {
-      "version": "0.11.10",
-      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz";,
-      "integrity": 
"sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
-      "engines": {
-        "node": ">= 0.6.0"
-      }
-    },
     "node_modules/proxy-addr": {
       "version": "2.0.7",
       "resolved": 
"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz";,
@@ -7554,21 +7424,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/readable-stream": {
-      "version": "4.7.0",
-      "resolved": 
"https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz";,
-      "integrity": 
"sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
-      "dependencies": {
-        "abort-controller": "^3.0.0",
-        "buffer": "^6.0.3",
-        "events": "^3.3.0",
-        "process": "^0.11.10",
-        "string_decoder": "^1.3.0"
-      },
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      }
-    },
     "node_modules/readline-transform": {
       "version": "1.0.0",
       "resolved": 
"https://registry.npmjs.org/readline-transform/-/readline-transform-1.0.0.tgz";,
diff --git a/gremlin-mcp/src/main/javascript/package.json 
b/gremlin-mcp/src/main/javascript/package.json
index 79d9e536ee..64507c5c0d 100644
--- a/gremlin-mcp/src/main/javascript/package.json
+++ b/gremlin-mcp/src/main/javascript/package.json
@@ -47,7 +47,6 @@
     "@effect/platform": "^0.90.6",
     "@effect/platform-node": "^0.96.0",
     "@modelcontextprotocol/sdk": "^1.17.4",
-    "@types/gremlin": "^3.6.7",
     "effect": "^3.17.9",
     "gremlin": 
"file:../../../../gremlin-javascript/src/main/javascript/gremlin-javascript",
     "winston": "^3.17.0",
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/connection.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/connection.ts
index db97f27b5a..7e45d3101b 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/connection.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/connection.ts
@@ -32,16 +32,15 @@
  */
 
 import { Effect, Layer, Option, Redacted, Ref, pipe } from 'effect';
-import gremlin from 'gremlin';
+import { driver, process } from 'gremlin';
 import { AppConfig } from '../config.js';
 import { Errors } from '../errors.js';
 import { GremlinClient } from './client.js';
 import type { ConnectionState } from './types.js';
 import type { GremlinConnectionError } from '../errors.js';
 
-const { PlainTextSaslAuthenticator } = gremlin.driver.auth;
-const { Client, DriverRemoteConnection } = gremlin.driver;
-const { AnonymousTraversalSource } = gremlin.process;
+const { Client, DriverRemoteConnection } = driver;
+const { AnonymousTraversalSource } = process;
 
 const NO_ENDPOINT_MSG =
   'No Gremlin Server configured. Set GREMLIN_MCP_ENDPOINT to enable graph 
operations.';
@@ -83,16 +82,21 @@ const createConnection = (
       traversalSource,
     });
 
-    const authenticator = Option.map(
-      authenticatorInput,
-      ({ username, password }) => new PlainTextSaslAuthenticator(username, 
password)
-    );
+    const headers = Option.match(authenticatorInput, {
+      onNone: () => undefined,
+      onSome: ({ username, password }) => {
+        const credentials = `${username}:${password}`;
+        return {
+          Authorization: `Basic 
${Buffer.from(credentials).toString('base64')}`,
+        };
+      },
+    });
 
     const connection = yield* Effect.try({
       try: () =>
         new DriverRemoteConnection(url, {
           traversalSource,
-          authenticator: Option.getOrUndefined(authenticator),
+          headers,
         }),
       catch: error => Errors.connection('Failed to create remote connection', 
{ error }),
     });
@@ -100,7 +104,7 @@ const createConnection = (
     const g = AnonymousTraversalSource.traversal().withRemote(connection);
     const client = new Client(url, {
       traversalSource,
-      authenticator: Option.getOrUndefined(authenticator),
+      headers,
     });
 
     // Verify the server is reachable before caching
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/edge-patterns.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/edge-patterns.ts
index 9a61147335..aefdc151ef 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/edge-patterns.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/edge-patterns.ts
@@ -25,15 +25,13 @@
  */
 
 import { Effect } from 'effect';
-import gremlin from 'gremlin';
+import { process } from 'gremlin';
 import type { EdgePattern } from './models/index.js';
 import { executeGremlinQuery } from './query-utils.js';
 import type { GremlinQueryError } from '../errors.js';
-import type { process } from 'gremlin';
+import type { GraphTraversalSource } from './types.js';
 
-type GraphTraversalSource = process.GraphTraversalSource;
-
-const { inV, outV, label } = gremlin.process.statics;
+const { inV, outV, label } = process.statics;
 
 /**
  * Raw pattern data from Gremlin project() query.
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/property-analyzer.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/property-analyzer.ts
index e1d05b61c5..0f0fa626d0 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/property-analyzer.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/property-analyzer.ts
@@ -26,13 +26,10 @@
 
 import { Effect } from 'effect';
 import type { Property } from './models/index.js';
-import type { SchemaConfig } from './types.js';
-import type { process } from 'gremlin';
+import type { GraphTraversalSource, SchemaConfig } from './types.js';
 import { getSamplePropertyValues, processBatched } from './query-utils.js';
 import type { GremlinQueryError } from '../errors.js';
 
-type GraphTraversalSource = process.GraphTraversalSource;
-
 /**
  * Analyzes property characteristics from collected values.
  *
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/query-utils.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/query-utils.ts
index 592d2c71af..13a4bfb56b 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/query-utils.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/query-utils.ts
@@ -25,13 +25,11 @@
  */
 
 import { Effect } from 'effect';
-import gremlin from 'gremlin';
+import { process } from 'gremlin';
 import { Errors, type GremlinQueryError } from '../errors.js';
-import type { process } from 'gremlin';
+import type { GraphTraversalSource } from './types.js';
 
-type GraphTraversalSource = process.GraphTraversalSource;
-
-const { label } = gremlin.process.statics;
+const { label } = process.statics;
 
 type CountResult = { value?: unknown };
 
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/schema-generator.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/schema-generator.ts
index 84b87b9193..be1992c89c 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/schema-generator.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/schema-generator.ts
@@ -28,7 +28,7 @@
 import { Effect, Duration } from 'effect';
 import { type GraphSchema, type Vertex, type Edge } from './models/index.js';
 import { Errors, type GremlinQueryError } from '../errors.js';
-import type { ConnectionState, SchemaConfig } from './types.js';
+import type { ConnectionState, GraphTraversalSource, SchemaConfig } from 
'./types.js';
 import {
   getVertexLabels,
   getEdgeLabels,
@@ -40,9 +40,7 @@ import {
 import { analyzeElementProperties, withElementCounts } from 
'./property-analyzer.js';
 import { generateEdgePatterns } from './edge-patterns.js';
 import { assembleGraphSchema } from './schema-assembly.js';
-import type { process } from 'gremlin';
 
-type GraphTraversalSource = process.GraphTraversalSource;
 type SchemaCountData = { value?: Record<string, number> } | null;
 
 const DEFAULT_SCHEMA_TIMEOUT_MS = 30000;
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/service.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/service.ts
index 8fc8d397a7..337a9a17d9 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/service.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/service.ts
@@ -98,7 +98,7 @@ const makeGremlinService = Effect.gen(function* () {
     client: GremlinClientType
   ): Effect.Effect<unknown, GremlinQueryError> =>
     pipe(
-      Effect.tryPromise(() => client.submit(query)),
+      Effect.tryPromise(() => client.submit(query, null)),
       Effect.mapError((error: unknown) => Errors.query('Query execution 
failed', query, error))
     );
 
diff --git a/gremlin-mcp/src/main/javascript/src/gremlin/types.ts 
b/gremlin-mcp/src/main/javascript/src/gremlin/types.ts
index 1629d23d0a..92eb1b170c 100644
--- a/gremlin-mcp/src/main/javascript/src/gremlin/types.ts
+++ b/gremlin-mcp/src/main/javascript/src/gremlin/types.ts
@@ -21,15 +21,15 @@
  * Shared types and interfaces for Gremlin service modules
  */
 
-import type { driver, process } from 'gremlin';
+import { driver, process } from 'gremlin';
 import type { GraphSchema } from './models/index.js';
 
 export type { GraphSchema };
 
-export type GremlinClientType = driver.Client;
-export type GremlinResultSet = driver.ResultSet;
-export type GremlinConnection = driver.DriverRemoteConnection;
-export type GraphTraversalSource = process.GraphTraversalSource;
+export type GremlinClientType = InstanceType<(typeof driver)['Client']>;
+export type GremlinResultSet = InstanceType<(typeof driver)['ResultSet']>;
+export type GremlinConnection = InstanceType<(typeof 
driver)['DriverRemoteConnection']>;
+export type GraphTraversalSource = InstanceType<(typeof 
process)['GraphTraversalSource']>;
 
 /**
  * Active Gremlin connection state. Only created when the connection succeeds.
diff --git a/gremlin-mcp/src/main/javascript/tsconfig.json 
b/gremlin-mcp/src/main/javascript/tsconfig.json
index 61dc9119d7..3d4adebadc 100644
--- a/gremlin-mcp/src/main/javascript/tsconfig.json
+++ b/gremlin-mcp/src/main/javascript/tsconfig.json
@@ -3,6 +3,15 @@
     "target": "ES2022",
     "module": "ESNext",
     "moduleResolution": "node",
+    "baseUrl": ".",
+    "paths": {
+      "gremlin": [
+        
"../../../../gremlin-javascript/src/main/javascript/gremlin-javascript/build/esm/index.d.ts"
+      ],
+      "gremlin/language": [
+        
"../../../../gremlin-javascript/src/main/javascript/gremlin-javascript/build/esm/language/index.d.ts"
+      ]
+    },
     "lib": ["ES2022"],
     "outDir": "./dist",
     "rootDir": "./src",

Reply via email to