google / flatbuffers

FlatBuffers: Memory Efficient Serialization Library

Home Page:http://google.github.io/flatbuffers/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[TS] Regression in generating from simple schema

FallingSnow opened this issue · comments

When upgrading from flatc version 2.0.0 to 2.0.5 it no longer correctly generates proper typescript code. Using the schema below (datapoint.fbs) data.ts and datapoint.ts files are generated. data.ts contains usable code but imports datapoint.ts. datapoint.ts only contains a single line, a reference to itself.

datapoint.fbs

struct Datapoint {
  t: int64;
  o: float64;
  h: float64;
  l: float64;
  c: float64;
  v: float64;
  w: float64;
}

table Data {
  datapoints: [Datapoint];
}

root_type Data;
$ flatc --ts datapoint.fbs

Generated datapoint.ts

export { Datapoint } from './datapoint';

@krojew for ts support

I tried to reproduce it myself and it seems to me that the problem is a name collision. The generated files include${your_schema}.ts and ${your_type[i]}.ts for each of your types. The type Datapoint and the schema file name datapoint.fbs both try to generate datapoint.ts and collide.

A simple workaround would be to rename your schema file. My 2c for a fix would be that the file with the export should be called datapoint.fbs.ts or datapoint_generated.ts or something that's harder to collide with.

I think I am seeing the same issue when trying to create the ts code for Apache Arrow.

FWIW, the single-file ts codegen flag I created for #7161 would allow you to work around this, although it does actually generate self-imports (although they are at least correct self-imports), but I imagine that swapping to that would be more work than getting the relevant codegen fixed for this case.

Seems like making the top-level generated file for typescript have a _generated (well, whatever the contents are of --filename-suffix are, more precisely) suffix would be desirable, though.

@krojew @CasperN Can you take a look at this regression?

ezoic increase your site revenue