Skip to content

Commit 1fd6341

Browse files
committed
feat: improve inspection of pointers
1 parent 25d7470 commit 1fd6341

22 files changed

+44
-23
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ This project is a rework of [jdiaz5513/capnp-ts](https://github.com/jdiaz5513/ca
7676
- Use reflection (getter setters) to access structs.
7777
- RPC level-1 merged from [jdiaz5513/capnp-ts#169](https://github.com/jdiaz5513/capnp-ts/pull/169).
7878
- List interface implements [`Array` object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) (custom methods removed).
79+
- Pointers had been improved to feel (inspected and serialized) like native JS values as much as possible.
7980

8081
</details>
8182

src/serialization/pointers/bool-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class BoolList extends List<boolean> {
2828
c.segment.setUint8(byteOffset, value ? v | bitMask : v & ~bitMask);
2929
}
3030

31-
toString(): string {
31+
[Symbol.toStringTag](): string {
3232
return `Bool_${super.toString()}`;
3333
}
3434
}

src/serialization/pointers/composite-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function CompositeList<T extends Struct>(
2828
copyFrom(value, this.get(index));
2929
}
3030

31-
toString(): string {
31+
[Symbol.toStringTag](): string {
3232
return `Composite_${super.toString()},cls:${CompositeClass.toString()}`;
3333
}
3434
};

src/serialization/pointers/data.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export class Data extends List<number> {
116116
return new DataView(c.segment.buffer, c.byteOffset, this.length);
117117
}
118118

119-
toString(): string {
119+
[Symbol.toStringTag](): string {
120120
return `Data_${super.toString()}`;
121121
}
122122

src/serialization/pointers/float32-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class Float32List extends List<number> {
2222
c.segment.setFloat32(c.byteOffset + index * 4, value);
2323
}
2424

25-
toString(): string {
25+
[Symbol.toStringTag](): string {
2626
return `Float32_${super.toString()}`;
2727
}
2828
}

src/serialization/pointers/float64-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class Float64List extends List<number> {
2222
c.segment.setFloat64(c.byteOffset + index * 8, value);
2323
}
2424

25-
toString(): string {
25+
[Symbol.toStringTag](): string {
2626
return `Float64_${super.toString()}`;
2727
}
2828
}

src/serialization/pointers/int16-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class Int16List extends List<number> {
2222
c.segment.setInt16(c.byteOffset + index * 2, value);
2323
}
2424

25-
toString(): string {
25+
[Symbol.toStringTag](): string {
2626
return `Int16_${super.toString()}`;
2727
}
2828
}

src/serialization/pointers/int32-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Int32List extends List<number> {
2020
c.segment.setInt32(c.byteOffset + index * 4, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Int32_${super.toString()}`;
2525
}
2626
}

src/serialization/pointers/int64-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Int64List extends List<bigint> {
2020
c.segment.setInt64(c.byteOffset + index * 8, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Int64_${super.toString()}`;
2525
}
2626
}

src/serialization/pointers/int8-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Int8List extends List<number> {
2020
c.segment.setInt8(c.byteOffset + index, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Int8_${super.toString()}`;
2525
}
2626
}

src/serialization/pointers/interface.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class Interface extends Pointer {
5050
return getClient(this);
5151
}
5252

53-
toString(): string {
53+
[Symbol.for("nodejs.util.inspect.custom")](): string {
5454
return format(
5555
"Interface_%d@%a,%d,limit:%x",
5656
this.segment.id,

src/serialization/pointers/list.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,8 @@ export class List<T> extends Pointer implements Array<T> {
361361
return this.values();
362362
}
363363

364-
[Symbol.toStringTag]() {
365-
return "[object Array]";
364+
toJSON(): unknown {
365+
return this.toArray();
366366
}
367367

368368
toString(): string {
@@ -373,7 +373,11 @@ export class List<T> extends Pointer implements Array<T> {
373373
return this.toString();
374374
}
375375

376-
static toString(): string {
376+
[Symbol.toStringTag]() {
377+
return "[object Array]";
378+
}
379+
380+
static [Symbol.toStringTag](): string {
377381
return this._capnp.displayName;
378382
}
379383
}

src/serialization/pointers/orphan.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ export class Orphan<T extends Pointer> {
201201
this._capnp = undefined;
202202
}
203203

204-
toString(): string {
204+
[Symbol.for("nodejs.util.inspect.custom")](): string {
205205
return format(
206206
"Orphan_%d@%a,type:%s",
207207
this.segment.id,

src/serialization/pointers/pointer-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export function PointerList<T extends Pointer>(
2626
copyFrom(value, this.get(index));
2727
}
2828

29-
toString(): string {
29+
[Symbol.toStringTag](): string {
3030
return `Pointer_${super.toString()},cls:${PointerClass.toString()}`;
3131
}
3232
};

src/serialization/pointers/pointer.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ export class Pointer<T extends _Pointer = _Pointer> {
110110
}
111111
}
112112

113+
[Symbol.toStringTag](): string {
114+
return format("Pointer_%d", this.segment.id);
115+
}
116+
113117
toString(): string {
114118
return format("->%d@%a%s", this.segment.id, this.byteOffset, dump(this));
115119
}
@@ -709,7 +713,7 @@ export function getTargetPointerType(p: Pointer): PointerType {
709713
/**
710714
* Get the size of the struct referenced by a pointer, following far pointers if necessary.
711715
*
712-
* @param {Pointer} p The poiner to read from.
716+
* @param {Pointer} p The pointer to read from.
713717
* @returns {ObjectSize} The size of the struct referenced by this pointer.
714718
*/
715719

src/serialization/pointers/struct.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,11 @@ export class Struct extends Pointer<_Struct> {
141141
this._capnp.compositeList = compositeIndex !== undefined;
142142
}
143143

144-
static toString(): string {
144+
static [Symbol.toStringTag](): string {
145145
return this._capnp.displayName;
146146
}
147147

148-
toString(): string {
148+
[Symbol.toStringTag](): string {
149149
return (
150150
`Struct_${super.toString()}` +
151151
`${this._capnp.compositeIndex === undefined ? "" : `,ci:${this._capnp.compositeIndex}`}` +

src/serialization/pointers/text-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class TextList extends List<string> {
2727
Text.fromPointer(c).set(0, value);
2828
}
2929

30-
toString(): string {
30+
[Symbol.toStringTag](): string {
3131
return `Text_${super.toString()}`;
3232
}
3333
}

src/serialization/pointers/text.ts

+12
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ export class Text extends List<string> {
9999
}
100100

101101
toString(): string {
102+
return this.get();
103+
}
104+
105+
toJSON(): string {
106+
return this.get();
107+
}
108+
109+
[Symbol.toPrimitive](): string {
110+
return this.get();
111+
}
112+
113+
[Symbol.toStringTag](): string {
102114
return `Text_${super.toString()}`;
103115
}
104116
}

src/serialization/pointers/uint16-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export class Uint16List extends List<number> {
2121
c.segment.setUint16(c.byteOffset + index * 2, value);
2222
}
2323

24-
toString(): string {
24+
[Symbol.toStringTag](): string {
2525
return `Uint16_${super.toString()}`;
2626
}
2727
}

src/serialization/pointers/uint32-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Uint32List extends List<number> {
2020
c.segment.setUint32(c.byteOffset + index * 4, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Uint32_${super.toString()}`;
2525
}
2626
}

src/serialization/pointers/uint64-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Uint64List extends List<bigint> {
2020
c.segment.setUint64(c.byteOffset + index * 8, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Uint64_${super.toString()}`;
2525
}
2626
}

src/serialization/pointers/uint8-list.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class Uint8List extends List<number> {
2020
c.segment.setUint8(c.byteOffset + index, value);
2121
}
2222

23-
toString(): string {
23+
[Symbol.toStringTag](): string {
2424
return `Uint8_${super.toString()}`;
2525
}
2626
}

0 commit comments

Comments
 (0)