Skip to content

Commit 8084b55

Browse files
author
Dmitry Khitrin
committed
feat: support new separated type scheme for js port
1 parent f376f66 commit 8084b55

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

port/js/src/Codec.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,18 @@ export class Codec<Config extends GenericConfig = GenericConfig> {
1313
this.protocols.load(rawTypes);
1414
const converterFactory = new ConverterFactory(this.protocols);
1515

16-
for (const { name, proto_id: protoId, types } of protocols) {
16+
for (const { name: protoName, proto_id: protoId, messages } of protocols) {
1717
const typeMap = new Map<string, Converter>();
1818
const idMap = new Map<MessageId, Converter>();
1919

20-
for (const [messageId, typeName] of Object.entries(types)) {
20+
for (const message of Object.values(messages)) {
21+
const { message_id: messageId, name, type: typeName } = message;
2122
const converter = converterFactory.toConverter(typeName);
2223

23-
typeMap.set(typeName, converter);
24-
idMap.set(parseInt(messageId, 10), converter);
24+
typeMap.set(name, converter);
25+
idMap.set(messageId, converter);
2526
}
26-
this.typesByName.set(name, typeMap);
27+
this.typesByName.set(protoName, typeMap);
2728
this.typesById.set(protoId, idMap);
2829
}
2930
}

port/js/src/protocol/Protocols.types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,14 @@ export interface EnumTypeClass {
4040

4141
export type StructureType = StructTypeClass | EnumTypeClass;
4242

43+
export interface RawMessage {
44+
message_id: number;
45+
name: IName;
46+
type: string;
47+
}
48+
4349
export interface Protocol {
4450
name: string;
4551
proto_id: number;
46-
types: Record<string, IName>;
52+
messages: Record<string, RawMessage>;
4753
}

port/js/tests/Codec.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ describe('Codec', () => {
3838
f9: true,
3939
};
4040

41-
const message = codec.serialize('test_proto', 'messgen/test/simple_struct', rawData);
41+
const message = codec.serialize('test_proto', 'simple_struct_msg', rawData);
4242

4343
expect(codec.deserialize(1, 0, message.buffer)).toEqual({
4444
...rawData,
@@ -54,7 +54,7 @@ describe('Codec', () => {
5454

5555
const message = codec.serialize(
5656
'another_proto',
57-
'cross_proto',
57+
'cross_proto_msg',
5858
rawData,
5959
);
6060

port/js/tests/Integration.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('integration', () => {
3333
};
3434
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/simple_struct.bin');
3535

36-
const buffer = codec.serialize('test_proto', 'messgen/test/simple_struct', rawData);
36+
const buffer = codec.serialize('test_proto', 'simple_struct_msg', rawData);
3737
const result = codec.deserialize(1, 0, new Uint8Array(rawDataBit).buffer);
3838

3939
expect(result).toEqual({ ...rawData, f5: expect.closeTo(rawData.f5, 5) });
@@ -49,7 +49,7 @@ describe('integration', () => {
4949
};
5050
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/var_size_struct.bin');
5151

52-
const buffer = codec.serialize('test_proto', 'messgen/test/var_size_struct', rawData);
52+
const buffer = codec.serialize('test_proto', 'var_size_struct_msg', rawData);
5353
const result = codec.deserialize(1, 2, new Uint8Array(rawDataBit).buffer);
5454

5555
expect(result).toEqual(rawData);
@@ -61,7 +61,7 @@ describe('integration', () => {
6161
const rawData = { f0: bigint, f1: bigint, e0: 1 };
6262
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/struct_with_enum.bin');
6363

64-
const buffer = codec.serialize('test_proto', 'messgen/test/struct_with_enum', rawData);
64+
const buffer = codec.serialize('test_proto', 'struct_with_enum_msg', rawData);
6565
const result = codec.deserialize(1, 3, new Uint8Array(rawDataBit).buffer);
6666

6767
expect(result).toEqual(rawData);
@@ -73,7 +73,7 @@ describe('integration', () => {
7373
const rawData = {};
7474
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/empty_struct.bin');
7575

76-
const buffer = codec.serialize('test_proto', 'messgen/test/empty_struct', rawData);
76+
const buffer = codec.serialize('test_proto', 'empty_struct_msg', rawData);
7777
const result = codec.deserialize(1, 4, new Uint8Array(rawDataBit).buffer);
7878

7979
expect(result).toEqual(rawData);
@@ -105,7 +105,7 @@ describe('integration', () => {
105105
};
106106
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/complex_struct_with_empty.bin');
107107

108-
const buffer = codec.serialize('test_proto', 'messgen/test/complex_struct_with_empty', rawData);
108+
const buffer = codec.serialize('test_proto', 'complex_struct_with_empty_msg', rawData);
109109
const result = codec.deserialize(1, 5, new Uint8Array(rawDataBit).buffer);
110110

111111
expect(result).toEqual(rawData);
@@ -162,7 +162,7 @@ describe('integration', () => {
162162
};
163163
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/complex_struct_nostl.bin');
164164

165-
const buffer = codec.serialize('test_proto', 'messgen/test/complex_struct_nostl', rawData);
165+
const buffer = codec.serialize('test_proto', 'complex_struct_nostl_msg', rawData);
166166
const result = codec.deserialize(1, 6, new Uint8Array(rawDataBit).buffer);
167167

168168
simpleStruct.f5 = expect.closeTo(simpleStruct.f5, 4);
@@ -220,7 +220,7 @@ describe('integration', () => {
220220
};
221221
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/complex_struct.bin');
222222

223-
const buffer = codec.serialize('test_proto', 'messgen/test/complex_struct', rawData);
223+
const buffer = codec.serialize('test_proto', 'complex_struct_msg', rawData);
224224
const result = codec.deserialize(1, 1, new Uint8Array(rawDataBit).buffer);
225225

226226
simpleStruct.f5 = expect.closeTo(simpleStruct.f5, 4);
@@ -245,7 +245,7 @@ describe('integration', () => {
245245
};
246246
const rawDataBit = uploadBinary('../../../tests/data/serialized/bin/flat_struct.bin');
247247

248-
const buffer = codec.serialize('test_proto', 'messgen/test/flat_struct', rawData);
248+
const buffer = codec.serialize('test_proto', 'flat_struct_msg', rawData);
249249
const result = codec.deserialize(1, 7, new Uint8Array(rawDataBit).buffer);
250250

251251
rawData.f5 = expect.closeTo(rawData.f5, 5);

0 commit comments

Comments
 (0)