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

colegreer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/master by this push:
     new f52f8d2b93 CTR Minor fixes to JS imports, exports, and serializers
f52f8d2b93 is described below

commit f52f8d2b9319588fa017470f8731c16e32dc5ee2
Author: Cole Greer <[email protected]>
AuthorDate: Tue Jan 20 10:10:34 2026 -0800

    CTR Minor fixes to JS imports, exports, and serializers
    
    This is in preparation of the work to overhaul the GLV
    for TP4. Note that there remain a few GB serializer tests
    which fail against a 3.8.0 server as the updated classSerializer
    in 3.8 has not been properly integrated into this branch, which
    leads to a cascade of failures for serialization of Bytecode and
    TraversalStrategy which depend on class serialization. This is
    slated for removal in 4 already, so the effort is better spent
    implementing GB4 and updating the tests to match the new spec.
---
 .../gremlin-javascript/lib/structure/graph.ts      | 14 ++--
 .../lib/structure/io/binary/GraphBinary.js         |  2 +-
 .../structure/io/binary/internals/AnySerializer.js |  2 +-
 .../binary/internals/OffsetDateTimeSerializer.js   |  6 +-
 .../lib/structure/io/graph-serializer.ts           |  1 -
 .../lib/structure/io/type-serializers.ts           | 12 +--
 .../test/unit/graphbinary/AnySerializer-test.js    |  2 +-
 .../test/unit/graphbinary/ClassSerializer-test.js  | 87 ----------------------
 .../test/unit/graphbinary/EnumSerializer-test.js   | 21 +++---
 .../test/unit/graphbinary/PathSerializer-test.js   |  1 +
 10 files changed, 27 insertions(+), 121 deletions(-)

diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.ts
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.ts
index b646c46101..e00a88b036 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.ts
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.ts
@@ -49,7 +49,7 @@ class Element<TLabel extends string = string, TId = any> {
     readonly label: TLabel,
     readonly properties: Property[] = []
   ) {
-    this.properties = properties != null ? properties : [];
+    this.properties = properties ?? [];
   }
 
   /**
@@ -71,9 +71,9 @@ export class Vertex<
   constructor(
     id: TId,
     label: TLabel,
-    readonly properties: Property[] = [],
+    properties: Property[] | null = [],
   ) {
-    super(id, label, properties);
+    super(id, label, properties ?? []);
   }
 
   toString() {
@@ -93,9 +93,9 @@ export class Edge<
     readonly outV: TOutVertex,
     readonly label: TLabel,
     readonly inV: TInVertex,
-    readonly properties: Property[] = [],
+    properties: Property[] | null = [],
   ) {
-    super(id, label, properties);
+    super(id, label, properties ?? []);
   }
 
   toString() {
@@ -118,9 +118,9 @@ export class VertexProperty<
     id: TId,
     label: TLabel,
     readonly value: TValue,
-    readonly properties: Property[] = [],
+    properties: Property[] | null = [],
   ) {
-    super(id, label, properties);
+    super(id, label, properties ?? []);
     this.value = value;
     this.key = this.label;
   }
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/GraphBinary.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/GraphBinary.js
index d0813e424b..4e78e90bbc 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/GraphBinary.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/GraphBinary.js
@@ -111,7 +111,7 @@ ioc.stringSerializer = new StringSerializer(ioc, 
ioc.DataType.STRING);
 ioc.dateSerializer = new DateSerializer(ioc, ioc.DataType.DATE);
 ioc.offsetDateTimeSerializer = new OffsetDateTimeSerializer(ioc, 
ioc.DataType.OFFSETDATETIME);
 ioc.timestampSerializer = new DateSerializer(ioc, ioc.DataType.TIMESTAMP);
-ioc.classSerializer = new ClassSerializer(ioc, ioc.DataType.CLASS);
+ioc.classSerializer = new StringSerializer(ioc, ioc.DataType.CLASS);
 ioc.doubleSerializer = new DoubleSerializer(ioc);
 ioc.floatSerializer = new FloatSerializer(ioc);
 ioc.listSerializer = new ArraySerializer(ioc, ioc.DataType.LIST);
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/AnySerializer.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/AnySerializer.js
index 1e4c836f18..a378b3d5fe 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/AnySerializer.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/AnySerializer.js
@@ -48,8 +48,8 @@ export default class AnySerializer {
       ioc.propertySerializer,
       ioc.vertexSerializer,
       ioc.vertexPropertySerializer,
-      ioc.classSerializer,
       ioc.stringSerializer,
+      ioc.classSerializer,
       ioc.textPSerializer,
       ioc.traversalStrategySerializer,
 
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js
index 3ca8c7c0a5..d8a1d62918 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/binary/internals/OffsetDateTimeSerializer.js
@@ -17,9 +17,9 @@
  *  under the License.
  */
 
-const { Buffer } = require('buffer');
+import { Buffer } from 'buffer';
 
-module.exports = class OffsetDateTimeSerializer {
+export default class OffsetDateTimeSerializer {
   constructor(ioc, ID) {
     this.ioc = ioc;
     this.ID = ID;
@@ -146,4 +146,4 @@ module.exports = class OffsetDateTimeSerializer {
       throw this.ioc.utils.des_error({ serializer: this, args: arguments, 
cursor, err });
     }
   }
-};
+}
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.ts
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.ts
index b780cb6550..c41a602774 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.ts
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/graph-serializer.ts
@@ -318,7 +318,6 @@ const graphSON3Deserializers = Object.assign({}, 
graphSON2Deserializers, {
 
 const graphSON2Serializers = [
   NumberSerializer,
-  DateSerializer,
   OffsetDateTimeSerializer,
   BytecodeSerializer,
   TraverserSerializer,
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.ts
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.ts
index 5a7523f14f..da2143421d 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.ts
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/io/type-serializers.ts
@@ -89,15 +89,9 @@ export class NumberSerializer extends TypeSerializer<number> 
{
     return typeof value === 'number';
   }
 }
-// consolidate into DateTime when implementing HTTP for js
+// TODO:: consolidate into DateTime when implementing HTTP for js
 export class DateSerializer extends TypeSerializer<Date> {
-  serialize(item: Date) {
-    return {
-      [typeKey]: 'g:Date',
-      [valueKey]: item.getTime(),
-    };
-  }
-
+  // only deserialize g:Date objects
   deserialize(obj: SerializedValue) {
     return new Date(obj[valueKey]);
   }
@@ -111,7 +105,7 @@ export class OffsetDateTimeSerializer extends 
TypeSerializer<Date> {
   serialize(item: Date) {
     return {
       [typeKey]: 'gx:OffsetDateTime',
-      [valueKey]: item.getTime(),
+      [valueKey]: item.toISOString(),
     };
   }
 
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/AnySerializer-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/AnySerializer-test.js
index bcd323ac96..575c10e03a 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/AnySerializer-test.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/AnySerializer-test.js
@@ -178,7 +178,7 @@ describe('GraphBinary.AnySerializer', () => {
       { v: new EnumValue('GType', 'BYTE'),
         b: [ DataType.GTYPE,0x00, DataType.STRING,0x00, 0x00,0x00,0x00,0x04, 
...from('byte') ]
       },
-      { v: new t.EnumValue('Operator', 'addAll'),
+      { v: new EnumValue('Operator', 'addAll'),
         b: [ DataType.OPERATOR,0x00, DataType.STRING,0x00, 
0x00,0x00,0x00,0x06, ...from('addAll') ]
       },
       { v: new EnumValue('Order', 'desc'),
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/ClassSerializer-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/ClassSerializer-test.js
deleted file mode 100644
index 991faea4c5..0000000000
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/ClassSerializer-test.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-const utils = require('./utils');
-const assert = require('assert');
-const { classSerializer } = 
require('../../../lib/structure/io/binary/GraphBinary');
-const t = require('../../../lib/process/traversal');
-const ts = require('../../../lib/process/traversal-strategy');
-
-const { from, concat } = Buffer;
-
-describe('GraphBinary.ClassSerializer', () => {
-
-    const type_code =  from([0x06]);
-    const value_flag = from([0x00]);
-
-    const cases = [
-        { v:undefined, fq:1, b:[0x06,0x01], },
-        { v:undefined, fq:0, b:[0x00,0x00,0x00,0x00] },
-        { v:null,      fq:1, b:[0x06,0x01] },
-        { v:null,      fq:0, b:[0x00,0x00,0x00,0x00] },
-
-        { v:ts.ElementIdStrategy,
-            b:[
-                0x00,0x00,0x00,0x54, 
...from('org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategy'),
-            ]
-        },
-
-        { v:ts.OptionsStrategy,
-            b:[
-                0x00,0x00,0x00,0x52, 
...from('org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.OptionsStrategy'),
-            ]
-        },
-    ];
-
-    describe('#serialize', () =>
-        cases
-            .forEach(({ v, fq, b }, i) => it(utils.ser_title({i,v}), () => {
-                b = from(b);
-
-                // when fq is under control
-                if (fq !== undefined) {
-                    assert.deepEqual( classSerializer.serialize(v, fq), b );
-                    return;
-                }
-
-                // generic case
-                assert.deepEqual( classSerializer.serialize(v, true),  
concat([type_code, value_flag, b]) );
-                assert.deepEqual( classSerializer.serialize(v, false), 
concat([                       b]) );
-            }))
-    );
-
-    describe('#canBeUsedFor', () =>
-        // most of the cases are implicitly tested via 
AnySerializer.serialize() tests
-        [
-            { v: null,                       e: false },
-            { v: undefined,                  e: false },
-            { v: {},                         e: false },
-            { v: new t.Traverser(),          e: false },
-            { v: new t.P(),                  e: false },
-            { v: [],                         e: false },
-            { v: [0],                        e: false },
-            { v: [function(){}],             e: false },
-            { v: function(){},               e: false },
-            { v: ts.TraversalStrategy,       e: true  },
-        ].forEach(({ v, e }, i) => it(utils.cbuf_title({i,v}), () =>
-            assert.strictEqual(classSerializer.canBeUsedFor(v), e )
-        ))
-    );
-
-});
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/EnumSerializer-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/EnumSerializer-test.js
index 6f3105e31d..379bda0c8f 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/EnumSerializer-test.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/EnumSerializer-test.js
@@ -31,17 +31,16 @@ const { from, concat } = Buffer;
 describe('GraphBinary.EnumSerializer', () => {
 
   const types = [
-    { name: 'Barrier',     code: from([0x13]), enum: t.barrier },
-    { name: 'Cardinality', code: from([0x16]), enum: t.cardinality },
-    { name: 'Column',      code: from([0x17]), enum: t.column },
-    { name: 'Direction',   code: from([0x18]), enum: t.direction },
-    { name: 'GType',       code: from([0x30]), enum: t.gType },
-    { name: 'Operator',    code: from([0x19]), enum: t.operator },
-    { name: 'Order',       code: from([0x1A]), enum: t.order },
-    { name: 'Pick',        code: from([0x1B]), enum: t.pick },
-    { name: 'Pop',         code: from([0x1C]), enum: t.pop },
-    { name: 'Scope',       code: from([0x1F]), enum: t.scope },
-    { name: 'T',           code: from([0x20]), enum: t.t },
+    { name: 'Barrier',     code: from([0x13]), enum: barrier },
+    { name: 'Cardinality', code: from([0x16]), enum: cardinality },
+    { name: 'Column',      code: from([0x17]), enum: column },
+    { name: 'Direction',   code: from([0x18]), enum: direction },
+    { name: 'Operator',    code: from([0x19]), enum: operator },
+    { name: 'Order',       code: from([0x1A]), enum: order },
+    { name: 'Pick',        code: from([0x1B]), enum: pick },
+    { name: 'Pop',         code: from([0x1C]), enum: pop },
+    { name: 'Scope',       code: from([0x1F]), enum: scope },
+    { name: 'T',           code: from([0x20]), enum: t },
   ];
   const value_flag = from([0x00]);
 
diff --git 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/PathSerializer-test.js
 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/PathSerializer-test.js
index c341880934..ab668dee2a 100644
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/PathSerializer-test.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/graphbinary/PathSerializer-test.js
@@ -26,6 +26,7 @@ import assert from 'assert';
 import { pathSerializer } from 
'../../../lib/structure/io/binary/GraphBinary.js';
 import { Traverser, P } from '../../../lib/process/traversal.js';
 import { Path } from '../../../lib/structure/graph.js';
+import * as g from "../../../lib/structure/graph.js";
 
 const { from, concat } = Buffer;
 

Reply via email to