feat: rework typescript generator & add suite#46
feat: rework typescript generator & add suite#460x241F31 wants to merge 30 commits intozefchain:mainfrom
Conversation
9a6ea57 to
6c2f861
Compare
|
Thanks @MrFoxPro for your work. It looks like the lint error is on |
Yep, PR requires some polishing |
|
I thought one way to speedup encoding is to preallocate chunk for fixed-size values of type by recursive lookup of it in code generator and adding flag to "noAlloc" in |
61ed1e6 to
4c9f0c3
Compare
667bb00 to
591dc0c
Compare
|
I decided to change TypeScript implementation. Now it looks like this: enum MultiEnum {
VariantA(i32),
VariantB(String),
VariantC { x: u8, y: f64 },
UnitVariant,
}
struct ComplexStruct {
inner: SimpleStruct,
flag: bool,
items: Vec<MultiEnum>,
unit: UnitStruct,
newtype: NewtypeStruct,
tuple: TupleStruct,
tupple_inline: (String, i32),
map: HashMap<i32, i64>
}-> export const ComplexStruct_obj: Registry.ComplexStruct = {
inner: { a: 42, b: "Hello" },
flag: true,
items: [
{ $: "variant_a", $0: 10 },
{ $: "variant_b", $0: "World" }
],
unit: null,
newtype: 99,
tuple: { $0: 123, $1: 45.67, $2: "Test" },
tupple_inline: { $0: "SomeString", $1: 777 },
map: new Map().set(3, 7n)
} |
591dc0c to
89dbcaf
Compare
switch to node --experimental-strip-types
9e0642e to
145392e
Compare
|
I updated to bincode 2, but I'm not sure about it. There are some breaking changes that could lead to potential problems in javascript encoder/decoder |
|
@ma2bd what dou you think about this PR? Maybe it's better to move my implementation in separate crate and repository? |
|
Yes, bincode v2 format is different from v1 |
|
@MrFoxPro Thanks for the PR.
|
Closes #43
Probably needs more tests
Checkout
suite/typescript/ts/test.tsandsuite/typescript/readme.mdfor example usage and additional informationYou can fix and adjust as you want if you have time
Benchamrks:
Encode
Decode
Need investigation how to improve encoding.
It's worth to look into protobuf-js implementation