mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-11 23:40:57 +00:00
[TS/JS] Entry point per namespace and reworked 1.x compatible single file build (#7510)
* [TS/JS] Entry point per namespace * Fix handling of outputpath and array_test * Attempt to fix generate_code * Fix cwd for ts in generate_code * Attempt to fixup bazel and some docs * Add --ts-flat-files to bazel build to get bundle * Move to DEFAULT_FLATC_TS_ARGS * Attempt to add esbuild * Attempt to use npm instead * Remove futile attempt to add esbuild * Attempt to as bazel esbuild * Shuffle * Upgrade bazel deps * Revert failed attempts to get bazel working * Ignore flatc tests for now * Add esbuild dependency * `package.json` Include esbuild * `WORKSPACE` Add fetching esbuild binary * Update WORKSPACE * Unfreeze Lockfile * Update WORKSPACE * Update BUILD.bazel * Rework to suggest instead of running external bundler * Add esbuild generation to test script * Prelim bundle test * Run test JavaScriptTest from flatbuffers 1.x * Deps upgrade * Clang format fix * Revert bazel changes * Fix newline * Generate with type declarations * Handle "empty" root namespace * Adjust tests for typescript_keywords.ts * Separate test procedure for old node resolution module output * Fix rel path for root level re-exports * Bazel support for esbuild-based flatc Unfortunately, we lose typing information because the new esbuild method of generating single files does not generate type information. The method used here is a bit hack-ish because it relies on parsing the console output of flatc to figure out what to do. * Try to fix bazel build for when node isn't present on host * Auto formatting fixes * Fix missing generated code Co-authored-by: Derek Bailey <derekbailey@google.com> Co-authored-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
This commit is contained in:
135
tests/ts/arrays_test_complex/my-game/example/nested-struct.ts
Normal file
135
tests/ts/arrays_test_complex/my-game/example/nested-struct.ts
Normal file
@@ -0,0 +1,135 @@
|
||||
// automatically generated by the FlatBuffers compiler, do not modify
|
||||
|
||||
import * as flatbuffers from 'flatbuffers';
|
||||
|
||||
import { OuterStruct, OuterStructT } from '../../my-game/example/outer-struct.js';
|
||||
import { TestEnum } from '../../my-game/example/test-enum.js';
|
||||
|
||||
|
||||
export class NestedStruct implements flatbuffers.IUnpackableObject<NestedStructT> {
|
||||
bb: flatbuffers.ByteBuffer|null = null;
|
||||
bb_pos = 0;
|
||||
__init(i:number, bb:flatbuffers.ByteBuffer):NestedStruct {
|
||||
this.bb_pos = i;
|
||||
this.bb = bb;
|
||||
return this;
|
||||
}
|
||||
|
||||
a(index: number):number|null {
|
||||
return this.bb!.readInt32(this.bb_pos + 0 + index * 4);
|
||||
}
|
||||
|
||||
b():TestEnum {
|
||||
return this.bb!.readInt8(this.bb_pos + 8);
|
||||
}
|
||||
|
||||
cUnderscore(index: number):TestEnum|null {
|
||||
return this.bb!.readInt8(this.bb_pos + 9 + index);
|
||||
}
|
||||
|
||||
dOuter(index: number, obj?:OuterStruct):OuterStruct|null {
|
||||
return (obj || new OuterStruct()).__init(this.bb_pos + 16 + index * 208, this.bb!);
|
||||
}
|
||||
|
||||
e(index: number):bigint|null {
|
||||
return this.bb!.readInt64(this.bb_pos + 1056 + index * 8);
|
||||
}
|
||||
|
||||
static getFullyQualifiedName():string {
|
||||
return 'MyGame.Example.NestedStruct';
|
||||
}
|
||||
|
||||
static sizeOf():number {
|
||||
return 1072;
|
||||
}
|
||||
|
||||
static createNestedStruct(builder:flatbuffers.Builder, a: number[]|null, b: TestEnum, c_underscore: number[]|null, d_outer: (any|OuterStructT)[]|null, e: bigint[]|null):flatbuffers.Offset {
|
||||
builder.prep(8, 1072);
|
||||
|
||||
for (let i = 1; i >= 0; --i) {
|
||||
builder.writeInt64(BigInt(e?.[i] ?? 0));
|
||||
}
|
||||
|
||||
|
||||
for (let i = 4; i >= 0; --i) {
|
||||
const item = d_outer?.[i];
|
||||
|
||||
if (item instanceof OuterStructT) {
|
||||
item.pack(builder);
|
||||
continue;
|
||||
}
|
||||
|
||||
OuterStruct.createOuterStruct(builder,
|
||||
item?.a,
|
||||
item?.b,
|
||||
(item?.cUnderscore?.a ?? 0),
|
||||
(item?.cUnderscore?.b ?? []),
|
||||
(item?.cUnderscore?.c ?? 0),
|
||||
(item?.cUnderscore?.dUnderscore ?? BigInt(0)),
|
||||
item?.d,
|
||||
(item?.e?.a ?? 0),
|
||||
(item?.e?.b ?? []),
|
||||
(item?.e?.c ?? 0),
|
||||
(item?.e?.dUnderscore ?? BigInt(0)),
|
||||
item?.f
|
||||
);
|
||||
}
|
||||
|
||||
builder.pad(5);
|
||||
|
||||
for (let i = 1; i >= 0; --i) {
|
||||
builder.writeInt8((c_underscore?.[i] ?? 0));
|
||||
|
||||
}
|
||||
|
||||
builder.writeInt8(b);
|
||||
|
||||
for (let i = 1; i >= 0; --i) {
|
||||
builder.writeInt32((a?.[i] ?? 0));
|
||||
|
||||
}
|
||||
|
||||
return builder.offset();
|
||||
}
|
||||
|
||||
|
||||
unpack(): NestedStructT {
|
||||
return new NestedStructT(
|
||||
this.bb!.createScalarList<number>(this.a.bind(this), 2),
|
||||
this.b(),
|
||||
this.bb!.createScalarList<TestEnum>(this.cUnderscore.bind(this), 2),
|
||||
this.bb!.createObjList<OuterStruct, OuterStructT>(this.dOuter.bind(this), 5),
|
||||
this.bb!.createScalarList<bigint>(this.e.bind(this), 2)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
unpackTo(_o: NestedStructT): void {
|
||||
_o.a = this.bb!.createScalarList<number>(this.a.bind(this), 2);
|
||||
_o.b = this.b();
|
||||
_o.cUnderscore = this.bb!.createScalarList<TestEnum>(this.cUnderscore.bind(this), 2);
|
||||
_o.dOuter = this.bb!.createObjList<OuterStruct, OuterStructT>(this.dOuter.bind(this), 5);
|
||||
_o.e = this.bb!.createScalarList<bigint>(this.e.bind(this), 2);
|
||||
}
|
||||
}
|
||||
|
||||
export class NestedStructT implements flatbuffers.IGeneratedObject {
|
||||
constructor(
|
||||
public a: (number)[] = [],
|
||||
public b: TestEnum = TestEnum.A,
|
||||
public cUnderscore: (TestEnum)[] = [TestEnum.A, TestEnum.A],
|
||||
public dOuter: (OuterStructT)[] = [],
|
||||
public e: (bigint)[] = []
|
||||
){}
|
||||
|
||||
|
||||
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
|
||||
return NestedStruct.createNestedStruct(builder,
|
||||
this.a,
|
||||
this.b,
|
||||
this.cUnderscore,
|
||||
this.dOuter,
|
||||
this.e
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user