Merge commit '0f6aab9da6fe982218a01f4a5b896e65fcced437' as 'third_party/flatbuffers'

This commit is contained in:
Siarhei Fedartsou
2024-06-22 13:33:34 +02:00
1814 changed files with 326902 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
load("@aspect_rules_js//js:defs.bzl", "js_test")
load("//:typescript.bzl", "flatbuffer_ts_library")
package(default_visibility = ["//visibility:private"])
flatbuffer_ts_library(
name = "typescript_ts_fbs",
srcs = ["typescript_keywords.fbs"],
deps = [
"//tests/ts/test_dir:include_ts_fbs",
"//tests/ts/test_dir:typescript_transitive_ts_fbs",
],
)
TEST_DATA = glob([
"my-game/*.js",
"my-game/example/*.js",
"my-game/example2/*.js",
])
TEST_UNION_VECTOR_DATA = glob([
"union_vector/*.js",
])
TEST_COMPLEX_ARRAYS_DATA = glob([
"arrays_test_complex/**/*.js",
])
# Here we're running the tests against the checked-in generated files. These
# are kept up-to-date with a CI-based mechanism. The intent of running these
# tests here via bazel is not to validate that they're up-to-date. Instead, we
# just want to make it easy to run these tests while making other changes. For
# example, this is useful when making changes to the rules_js setup to validate
# that the basic infrastructure is still working.
[js_test(
name = "%s_test" % test,
chdir = package_name(),
data = data + [
"package.json",
"//:node_modules/flatbuffers",
"//tests:test_data_copied_to_bin",
],
entry_point = "%s.js" % test,
) for test, data in (
("JavaScriptTest", TEST_DATA),
("JavaScriptUnionVectorTest", TEST_UNION_VECTOR_DATA),
# TODO(philsc): Figure out how to run this test with flexbuffers available.
# At the moment the flexbuffer library is not exposed as a bazel target.
#("JavaScriptFlexBuffersTest", TBD_DATA)
("JavaScriptComplexArraysTest", TEST_COMPLEX_ARRAYS_DATA),
)]
sh_test(
name = "bazel_repository_test",
srcs = ["bazel_repository_test.sh"],
data = [
"//:distribution",
"@bazel_linux_x86_64//file",
] + glob(
[
"bazel_repository_test_dir/**/*",
],
exclude = [
"bazel_repository_test_dir/bazel-*/**",
],
),
tags = [
# Since we have bazel downloading external repositories inside this
# test, we need to give it access to the internet.
"requires-network",
],
# We only have x86_64 Linux bazel exposed so restrict the test to that.
target_compatible_with = [
"@platforms//cpu:x86_64",
"@platforms//os:linux",
],
deps = ["@bazel_tools//tools/bash/runfiles"],
)
@@ -0,0 +1,126 @@
/* global BigInt */
import assert from 'assert';
import { readFileSync, writeFileSync } from 'fs';
import * as flatbuffers from 'flatbuffers';
import { ArrayStructT } from './arrays_test_complex/my-game/example/array-struct.js'
import { ArrayTable, ArrayTableT } from './arrays_test_complex/my-game/example/array-table.js'
import { InnerStructT } from './arrays_test_complex/my-game/example/inner-struct.js'
import { NestedStructT } from './arrays_test_complex/my-game/example/nested-struct.js'
import { OuterStructT } from './arrays_test_complex/my-game/example/outer-struct.js'
import { TestEnum } from './arrays_test_complex/my-game/example/test-enum.js'
// eslint-disable-next-line @typescript-eslint/no-explicit-any
BigInt.prototype.toJSON = function () {
return this.toString();
};
function fbObjToObj(fbObj) {
const ret = {};
for (const propName of Object.keys(fbObj)) {
const key = propName;
const prop = fbObj[key];
if (prop.valueOf) {
ret[key] = prop.valueOf();
} else if (typeof prop === 'object') {
ret[key] = fbObjToObj(prop);
}
}
return ret;
}
function testBuild(monFile, jsFile) {
const arrayTable = new ArrayTableT(
'Complex Array Test',
new ArrayStructT(
221.139008,
[-700, -600, -500, -400, -300, -200, -100, 0, 100, 200, 300, 400, 500, 600, 700],
13,
[
new NestedStructT(
[233, -123],
TestEnum.B,
[TestEnum.A, TestEnum.C],
[
new OuterStructT(
false,
123.456,
new InnerStructT(
123456792.0,
[13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],
91,
BigInt('9007199254740999')
),
[
new InnerStructT(
-987654321.9876,
[255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243],
123,
BigInt('9007199254741000')
),
new InnerStructT(
123000987.9876,
[101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113],
-123,
BigInt('9007199254741000')
),
],
new InnerStructT(
987654321.9876,
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
19,
BigInt('9007199254741000')
),
[111000111.222, 222000222.111, 333000333.333, 444000444.444]
),
]
),
],
-123456789
)
);
const builder = new flatbuffers.Builder();
builder.finish(arrayTable.pack(builder));
if (jsFile) {
const obj = fbObjToObj(arrayTable);
writeFileSync(jsFile, `export default ${JSON.stringify(obj, null, 2)}`);
}
if (monFile) {
writeFileSync(monFile, builder.asUint8Array());
}
return builder.asUint8Array();
}
function testParse(monFile, jsFile, buffer) {
if (!buffer) {
if (!monFile) {
console.log(`Please specify mon file read the buffer from.`);
process.exit(1);
}
buffer = readFileSync(monFile);
}
const byteBuffer = new flatbuffers.ByteBuffer(new Uint8Array(buffer));
const arrayTable = ArrayTable.getRootAsArrayTable(byteBuffer).unpack();
const json = JSON.stringify(arrayTable, null, 2);
if (jsFile) {
writeFileSync(jsFile, `export default ${json}`);
}
return arrayTable;
}
if (process.argv[2] === 'build') {
testBuild(process.argv[3], process.argv[4]);
} else if (process.argv[2] === 'parse') {
testParse(process.argv[3], process.argv[4], null);
} else {
const arr = testBuild(null, null);
const parsed = testParse(null, null, Buffer.from(arr));
assert.strictEqual(parsed.a, 'Complex Array Test', 'String Test');
assert.strictEqual(parsed?.cUnderscore?.aUnderscore, 221.13900756835938, 'Float Test');
assert.deepEqual(parsed?.cUnderscore?.bUnderscore, [-700, -600, -500, -400, -300, -200, -100, 0, 100, 200, 300, 400, 500, 600, 700], 'Array of signed integers');
assert.strictEqual(parsed?.cUnderscore.d?.[0].dOuter[0].d[1].a, 123000987.9876, 'Float in deep');
assert.deepEqual(parsed?.cUnderscore?.d[0].dOuter?.[0]?.e, {
a: 987654321.9876,
b: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
c: 19,
dUnderscore: '9007199254741000',
}, 'Object in deep');
assert.deepEqual(parsed?.cUnderscore.g, ['0', '0'], 'Last object');
console.log('Arrays test: completed successfully');
}
@@ -0,0 +1,390 @@
// Run this using JavaScriptTest.sh
import assert from 'assert'
import fs from 'fs'
import * as flexbuffers from 'flatbuffers/js/flexbuffers.js'
function main() {
testSingleValueBuffers();
testGoldBuffer();
testEncode();
testIndirectAdd();
testIndirectWithCache();
testMapBuilder();
testRoundTrip();
testRoundTripWithBuilder();
testDeduplicationOff();
testBugWhereOffestWereStoredAsIntInsteadOfUInt();
console.log('FlexBuffers test: completed successfully');
}
function testSingleValueBuffers() {
{
const ref = flexbuffers.toReference(new Uint8Array([0, 0, 1]).buffer);
assert.strictEqual(true, ref.isNull());
}
function _assert(object, buffer) {
assert.deepStrictEqual(flexbuffers.toObject(new Uint8Array(buffer).buffer), object);
}
_assert(true, [1, 104, 1]);
_assert(false, [0, 104, 1]);
_assert(25, [25, 4, 1]);
_assert(-25, [231, 4, 1]);
_assert(230, [230, 8, 1]);
_assert(230, [230, 0, 5, 2]);
_assert(-1025, [255, 251, 5, 2]);
_assert(1025, [1, 4, 9, 2]);
_assert(2147483647, [255, 255, 255, 127, 6, 4]);
_assert(-2147483648, [0, 0, 0, 128, 6, 4]);
_assert(4294967295n, [255, 255, 255, 255, 0, 0, 0, 0, 7, 8]);
_assert(9223372036854775807n, [255, 255, 255, 255, 255, 255, 255, 127, 7, 8]);
_assert(-9223372036854775808n, [0, 0, 0, 0, 0, 0, 0, 128, 7, 8]);
_assert(18446744073709551615n, [255, 255, 255, 255, 255, 255, 255, 255, 11, 8]);
_assert(4.5, [0, 0, 144, 64, 14, 4]);
_assert(0.10000000149011612, [205, 204, 204, 61, 14, 4]);
_assert(0.1, [154, 153, 153, 153, 153, 153, 185, 63, 15, 8]);
_assert(-1025, [255, 251, 5, 2]);
_assert("Maxim", [5, 77, 97, 120, 105, 109, 0, 6, 20, 1]);
_assert("hello 😱", [10, 104, 101, 108, 108, 111, 32, 240, 159, 152, 177, 0, 11, 20, 1]);
_assert({a:12}, [97, 0, 1, 3, 1, 1, 1, 12, 4, 2, 36, 1]);
_assert({"":45, "a": 12}, [0, 97, 0, 2, 4, 4, 2, 1, 2, 45, 12, 4, 4, 4, 36, 1]);
}
function testEncode() {
function _assert(value, buffer) {
assert.deepStrictEqual(flexbuffers.encode(value), new Uint8Array(buffer));
}
_assert(null, [0, 0, 1]);
_assert(true, [1, 104, 1]);
_assert(false, [0, 104, 1]);
_assert(1, [1, 4, 1]);
_assert(230, [230, 0, 5, 2]);
_assert(1025, [1, 4, 5, 2]);
_assert(-1025, [255, 251, 5, 2]);
_assert(0x100000001, [1, 0, 0, 0, 1, 0, 0, 0, 7, 8]);
_assert(0.1, [154, 153, 153, 153, 153, 153, 185, 63, 15, 8]);
_assert(0.5, [0, 0, 0, 63, 14, 4]);
_assert(new Uint8Array([1, 2, 3]), [3, 1, 2, 3, 3, 100, 1]);
_assert("Maxim", [5, 77, 97, 120, 105, 109, 0, 6, 20, 1]);
_assert("hello 😱", [10, 104, 101, 108, 108, 111, 32, 240, 159, 152, 177, 0, 11, 20, 1]);
_assert([1, 2], [1, 2, 2, 64, 1]);
_assert([-1, 256], [255, 255, 0, 1, 4, 65, 1]);
_assert([-45, 256000], [211, 255, 255, 255, 0, 232, 3, 0, 8, 66, 1]);
_assert([1.1, -256.0], [2, 0, 0, 0, 0, 0, 0, 0, 154, 153, 153, 153, 153, 153, 241, 63, 0, 255, 255, 255, 255, 255, 255, 255, 15, 5, 18, 43, 1]);
_assert([1, 2, 4], [1, 2, 4, 3, 76, 1]);
_assert([-1, 256, 4], [255, 255, 0, 1, 4, 0, 6, 77, 1]);
_assert([[61], 64], [1, 61, 2, 2, 64, 44, 4, 4, 40, 1]);
_assert(["foo", "bar", "baz"], [3, 102, 111, 111, 0, 3, 98, 97, 114, 0, 3, 98, 97, 122, 0, 3, 15, 11, 7, 3, 60, 1]);
_assert(["foo", "bar", "baz", "foo", "bar", "baz"], [3, 102, 111, 111, 0, 3, 98, 97, 114, 0, 3, 98, 97, 122, 0, 6, 15, 11, 7, 18, 14, 10, 6, 60, 1]);
_assert([true, false, true], [3, 1, 0, 1, 3, 144, 1]);
_assert(['foo', 1, -5, 1.3, true], [
3, 102, 111, 111, 0, 0, 0, 0,
5, 0, 0, 0, 0, 0, 0, 0,
15, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
251, 255, 255, 255, 255, 255, 255, 255,
205, 204, 204, 204, 204, 204, 244, 63,
1, 0, 0, 0, 0, 0, 0, 0,
20, 4, 4, 15, 104, 45, 43, 1
]);
_assert([1, 3.3, 'max', true, null, false], [
3, 109, 97, 120, 0, 0, 0, 0,
6, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
102, 102, 102, 102, 102, 102, 10, 64,
31, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
4, 15, 20, 104, 0, 104, 54, 43, 1
]);
_assert({"a": 12}, [97, 0, 1, 3, 1, 1, 1, 12, 4, 2, 36, 1]);
_assert({"a": 12, "":45}, [0, 97, 0, 2, 4, 4, 2, 1, 2, 45, 12, 4, 4, 4, 36, 1]);
// JS currently does not support key vector offset sharing
_assert([{'something':12}, {'something': 45}], [
115, 111, 109, 101, 116, 104, 105, 110, 103, 0,
1, 11, 1, 1, 1, 12, 4, 6, 1, 1, 45, 4, 2, 8, 4, 36, 36, 4, 40, 1
]);
}
function testDeduplicationOff() {
let buffer = flexbuffers.encode([{'something':12}, {'something': 45}], 1, true, true, false);
assert.deepStrictEqual(buffer, new Uint8Array([
115, 111, 109, 101, 116, 104, 105, 110, 103,
0, 1, 11, 1, 1, 1, 12, 4, 1,
18, 1, 1, 1, 45, 4, 2, 10, 4,
36, 36, 4, 40, 1
]));
buffer = flexbuffers.encode([{'something':12}, {'something': 45}], 1, true, false, false);
assert.deepStrictEqual(buffer, new Uint8Array([
115, 111, 109, 101, 116, 104, 105, 110, 103, 0,
1, 11, 1, 1, 1, 12, 4, 115, 111, 109,
101, 116, 104, 105, 110, 103, 0, 1, 11, 1,
1, 1, 45, 4, 2, 20, 4, 36, 36, 4,
40, 1
]));
buffer = flexbuffers.encode(['something', 'something', 'dark'], 1, true, false, false);
assert.deepStrictEqual(buffer, new Uint8Array([
9, 115, 111, 109, 101, 116, 104,
105, 110, 103, 0, 4, 100, 97,
114, 107, 0, 3, 17, 18, 8,
3, 60, 1
]));
buffer = flexbuffers.encode(['something', 'something', 'dark'], 1, false, false, false);
assert.deepStrictEqual(buffer, new Uint8Array([
9, 115, 111, 109, 101, 116, 104, 105, 110,
103, 0, 9, 115, 111, 109, 101, 116, 104,
105, 110, 103, 0, 4, 100, 97, 114, 107,
0, 3, 28, 18, 8, 3, 60, 1
]));
}
function testIndirectAdd() {
function _assertInt(buffer, value, indirect = false, cache = false) {
const builder = flexbuffers.builder();
builder.addInt(value, indirect, cache);
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
function _assertUInt(buffer, value, indirect = false, cache = false) {
const builder = flexbuffers.builder();
builder.addUInt(value, indirect, cache);
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
function _assertFloat(buffer, value, indirect = false, cache = false) {
const builder = flexbuffers.builder();
builder.addFloat(value, indirect, cache);
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
_assertInt([0, 4, 1], 0);
_assertInt([0, 1, 24, 1], 0, true);
_assertInt([255, 0, 5, 2], 255);
_assertUInt([0, 8, 1], 0);
_assertUInt([0, 1, 28, 1], 0, true);
_assertUInt([255, 8, 1], 255);
_assertUInt([185, 115, 175, 118, 250, 84, 8, 0, 11, 8], 2345234523452345);
_assertUInt([185, 115, 175, 118, 250, 84, 8, 0, 8, 31, 1], 2345234523452345, true);
_assertInt([185, 115, 175, 118, 250, 84, 8, 0, 7, 8], 2345234523452345);
_assertInt([185, 115, 175, 118, 250, 84, 8, 0, 8, 27, 1], 2345234523452345, true);
_assertFloat([154, 153, 153, 153, 153, 153, 185, 63, 15, 8], 0.1);
_assertFloat([154, 153, 153, 153, 153, 153, 185, 63, 8, 35, 1], 0.1, true);
_assertFloat([0, 0, 0, 0, 14, 4], 0);
_assertFloat([0, 0, 0, 0, 4, 34, 1], 0, true);
}
function testIndirectWithCache() {
function _assertInt(buffer, values) {
const builder = flexbuffers.builder();
builder.startVector();
values.forEach(v => {
builder.addInt(v, true, true)
});
builder.end();
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
function _assertUInt(buffer, values) {
const builder = flexbuffers.builder();
builder.startVector();
values.forEach(v => {
builder.addUInt(v, true, true);
});
builder.end();
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
function _assertFloat(buffer, values) {
const builder = flexbuffers.builder();
builder.startVector();
values.forEach(v => {
builder.addFloat(v, true, true);
});
builder.end();
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array(buffer));
}
_assertInt(
[185, 115, 175, 118, 250, 84, 8, 0, 4, 9, 10, 11, 12, 27, 27, 27, 27, 8, 40, 1],
[2345234523452345, 2345234523452345, 2345234523452345, 2345234523452345]
);
_assertUInt(
[185, 115, 175, 118, 250, 84, 8, 0, 4, 9, 10, 11, 12, 31, 31, 31, 31, 8, 40, 1],
[2345234523452345, 2345234523452345, 2345234523452345, 2345234523452345]
);
_assertFloat(
[154, 153, 153, 153, 153, 153, 185, 63, 4, 9, 10, 11, 12, 35, 35, 35, 35, 8, 40, 1],
[0.1, 0.1, 0.1, 0.1]
);
}
function testMapBuilder() {
const builder = flexbuffers.builder();
builder.startMap();
builder.addKey('a');
builder.add(12);
builder.addKey('');
builder.add(45);
builder.end();
const data = builder.finish();
assert.deepStrictEqual(data, new Uint8Array([97, 0, 0, 2, 2, 5, 2, 1, 2, 45, 12, 4, 4, 4, 36, 1]));
}
function testRoundTrip() {
const example = {
"age": 35,
"flags": [true, false, true, true],
"weight": 72.5,
"name": "Maxim",
"address": {
"city": "Bla",
"zip": "12345",
"countryCode": "XX",
}
};
function _assert(value) {
let buffer = flexbuffers.encode(value, 1);
let o = flexbuffers.toObject(buffer.buffer);
assert.deepStrictEqual(o, value);
}
_assert(example);
_assert(0x100000001n);
_assert({ test_number: 72.6 })
}
function testRoundTripWithBuilder() {
const example = {
"age": 35,
"flags": [true, false, true, true],
"weight": 72.5,
"name": "Maxim",
"address": {
"city": "Bla",
"zip": "12345",
"countryCode": "XX",
}
};
const builder = flexbuffers.builder();
builder.startMap();
builder.addKey('age');
builder.add(35);
builder.addKey('flags');
builder.startVector();
builder.add(true);
builder.add(false);
builder.add(true);
builder.add(true);
builder.end();
builder.addKey("weight");
builder.add(72.5);
builder.addKey("name");
builder.add("Maxim");
builder.addKey("address");
builder.startMap();
builder.addKey("city");
builder.add("Bla");
builder.addKey("zip");
builder.add("12345");
builder.addKey("countryCode");
builder.add("XX");
builder.end();
builder.end();
const data = builder.finish();
let o = flexbuffers.toObject(data.buffer);
assert.deepStrictEqual(o, example);
let root = flexbuffers.toReference(data.buffer);
assert.strictEqual(root.isMap(), true);
assert.strictEqual(root.get("age").numericValue(), 35);
assert.strictEqual(root.get("age").intValue(), 35);
assert.strictEqual(root.get("name").stringValue(), "Maxim");
assert.strictEqual(root.get("weight").floatValue(), 72.5);
assert.strictEqual(root.get("weight").numericValue(), 72.5);
let flags = root.get("flags");
assert.strictEqual(flags.isVector(), true);
assert.strictEqual(flags.length(), 4);
assert.strictEqual(flags.get(0).boolValue(), true);
assert.strictEqual(flags.get(1).boolValue(), false);
assert.strictEqual(flags.get(2).boolValue(), true);
assert.strictEqual(flags.get(3).boolValue(), true);
let address = root.get("address");
assert.strictEqual(address.isMap(), true);
assert.strictEqual(address.length(), 3);
assert.strictEqual(address.get("city").stringValue(), "Bla");
assert.strictEqual(address.get("zip").stringValue(), "12345");
assert.strictEqual(address.get("countryCode").stringValue(), "XX");
}
function testGoldBuffer() {
const data = new Uint8Array(fs.readFileSync('../gold_flexbuffer_example.bin')).buffer;
const b1 = flexbuffers.toReference(data).get("bools").get(1);
assert.strictEqual(b1.isBool(), true);
assert.strictEqual(b1.boolValue(), false);
const blob = flexbuffers.toReference(data).get("vec").get(3);
assert.strictEqual(blob.isBlob(), true);
assert.deepStrictEqual(blob.blobValue(), new Uint8Array([77]));
const o = flexbuffers.toObject(data);
assert.deepStrictEqual(o, {
bool: true,
bools: [true, false, true, false],
bar: [1, 2, 3],
bar3: [1, 2, 3],
foo: 100,
mymap: {foo:'Fred'},
vec: [-100, 'Fred', 4, new Uint8Array([77]), false, 4]
});
}
function testBugWhereOffestWereStoredAsIntInsteadOfUInt() {
// Reported in https://github.com/google/flatbuffers/issues/5949#issuecomment-688421193
const object = {'channels_in': 64, 'dilation_height_factor': 1, 'dilation_width_factor': 1, 'fused_activation_function': 1, 'pad_values': 1, 'padding': 0, 'stride_height': 1, 'stride_width': 1};
let data1 = flexbuffers.encode(object);
const data = [99, 104, 97, 110, 110, 101, 108, 115, 95, 105, 110, 0,
100, 105, 108, 97, 116, 105, 111, 110, 95, 104, 101, 105, 103, 104, 116, 95, 102, 97, 99, 116, 111, 114, 0,
100, 105, 108, 97, 116, 105, 111, 110, 95, 119, 105, 100, 116, 104, 95, 102, 97, 99, 116, 111, 114, 0,
102, 117, 115, 101, 100, 95, 97, 99, 116, 105, 118, 97, 116, 105, 111, 110, 95, 102, 117, 110, 99, 116, 105, 111, 110, 0,
112, 97, 100, 95, 118, 97, 108, 117, 101, 115, 0, 112, 97, 100, 100, 105, 110, 103, 0,
115, 116, 114, 105, 100, 101, 95, 104, 101, 105, 103, 104, 116, 0,
115, 116, 114, 105, 100, 101, 95, 119, 105, 100, 116, 104, 0,
8, 130, 119, 97, 76, 51, 41, 34, 21, 8, 1, 8, 64, 1, 1, 1, 1, 0, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 16, 36, 1];
let object2 = flexbuffers.toObject(new Uint8Array(data).buffer);
let object1 = flexbuffers.toObject(new Uint8Array(data1).buffer);
assert.deepStrictEqual(object, object2);
assert.deepStrictEqual(object, object1);
assert.strictEqual(data.length, data1.length);
let ref = flexbuffers.toReference(new Uint8Array(data).buffer);
assert.strictEqual(ref.isMap(), true);
assert.strictEqual(ref.length(), 8);
assert.strictEqual(ref.get("channels_in").numericValue(), 64);
assert.strictEqual(ref.get("padding").isNumber(), true);
}
main();
@@ -0,0 +1,32 @@
import assert from 'assert'
import * as flatbuffers from 'flatbuffers';
import { Foo } from './required-strings/foo.js';
var builder = new flatbuffers.Builder();
function main() {
testMissingFirstRequiredString();
builder.clear();
testMissingSecondRequiredString();
}
function testMissingFirstRequiredString() {
const undefined_string = builder.createString(undefined);
const defined_string = builder.createString('cat');
assert.throws(() => Foo.createFoo(
builder, undefined_string, defined_string
));
}
function testMissingSecondRequiredString() {
const defined_string = builder.createString('cat');
const undefined_string = builder.createString(undefined);
assert.throws(() => Foo.createFoo(
builder, defined_string, undefined_string
));
}
main();
+497
View File
@@ -0,0 +1,497 @@
// Run this using JavaScriptTest.sh
import assert from 'assert'
import fs from 'fs'
import * as flatbuffers from 'flatbuffers'
import { Monster, MonsterT } from './my-game/example/monster.js'
import { Test, TestT } from './my-game/example/test.js'
import { Stat } from './my-game/example/stat.js'
import { Vec3 } from './my-game/example/vec3.js'
import { Color } from './my-game/example/color.js';
import { Any } from './my-game/example/any.js';
function main() {
// First, let's test reading a FlatBuffer generated by C++ code:
// This file was generated from monsterdata_test.json
var data = new Uint8Array(fs.readFileSync('../monsterdata_test.mon'));
// Now test it:
var bb = new flatbuffers.ByteBuffer(data);
testBuffer(bb);
// Second, let's create a FlatBuffer from scratch in JavaScript, and test it also.
// We use an initial size of 1 to exercise the reallocation algorithm,
// normally a size larger than the typical FlatBuffer you generate would be
// better for performance.
var fbb = new flatbuffers.Builder(1);
createMonster(fbb);
serializeAndTest(fbb);
testObjApiPack(fbb);
// clear the builder, repeat tests
var clearIterations = 100;
var startingCapacity = fbb.bb.capacity();
for (var i = 0; i < clearIterations; i++) {
fbb.clear();
createMonster(fbb);
serializeAndTest(fbb);
testObjApiPack(fbb);
}
// the capacity of our buffer shouldn't increase with the same size payload
assert.strictEqual(fbb.bb.capacity(), startingCapacity);
test64bit();
testUnicode();
fuzzTest1();
testNullStrings();
testSharedStrings();
testVectorOfStructs();
testCreateByteVector();
console.log('FlatBuffers test: completed successfully');
}
function createMonster(fbb) {
// We set up the same values as monsterdata.json:
var str = fbb.createString('MyMonster');
var inv = Monster.createInventoryVector(fbb, [0, 1, 2, 3, 4]);
var fred = fbb.createString('Fred');
Monster.startMonster(fbb);
Monster.addName(fbb, fred);
var mon2 = Monster.endMonster(fbb);
Monster.startTest4Vector(fbb, 2);
Test.createTest(fbb, 10, 20);
Test.createTest(fbb, 30, 40);
var test4 = fbb.endVector();
var testArrayOfString = Monster.createTestarrayofstringVector(fbb, [
fbb.createString('test1'),
fbb.createString('test2')
]);
var testVectorOfLongs = Monster.createVectorOfLongsVector(fbb, [
1n,
101010100n
]);
Monster.startMonster(fbb);
Monster.addPos(fbb, Vec3.createVec3(fbb, 1, 2, 3, 3, Color.Green, 5, 6));
Monster.addHp(fbb, 80);
Monster.addName(fbb, str);
Monster.addInventory(fbb, inv);
Monster.addTestType(fbb, Any.Monster);
Monster.addTest(fbb, mon2);
Monster.addTest4(fbb, test4);
Monster.addTestarrayofstring(fbb, testArrayOfString);
Monster.addVectorOfLongs(fbb, testVectorOfLongs);
Monster.addTestbool(fbb, true);
var mon = Monster.endMonster(fbb);
Monster.finishMonsterBuffer(fbb, mon);
}
function serializeAndTest(fbb) {
// Write the result to a file for debugging purposes:
// Note that the binaries are not necessarily identical, since the JSON
// parser may serialize in a slightly different order than the above
// JavaScript code. They are functionally equivalent though.
fs.writeFileSync('monsterdata_javascript_wire.mon', Buffer.from(fbb.asUint8Array()));
// Tests mutation first. This will verify that we did not trample any other
// part of the byte buffer.
testMutation(fbb.dataBuffer());
testBuffer(fbb.dataBuffer());
}
function testMutation(bb) {
var monster = Monster.getRootAsMonster(bb);
monster.mutate_hp(120);
assert.strictEqual(monster.hp(), 120);
monster.mutate_hp(80);
assert.strictEqual(monster.hp(), 80);
var manaRes = monster.mutate_mana(10);
assert.strictEqual(manaRes, false); // Field was NOT present, because default value.
// TODO: There is not the availability to mutate structs or vectors.
}
function testObjApiPack(fbb) {
fbb.clear();
createMonster(fbb);
let monster_t = Monster.getRootAsMonster(fbb.dataBuffer()).unpack();
fbb.clear();
Monster.finishMonsterBuffer(fbb, monster_t.pack(fbb));
serializeAndTest(fbb);
}
function testObjApiUnpack(monster) {
assert.strictEqual(monster.hp, 80);
assert.strictEqual(monster.mana, 150); // default
assert.strictEqual(monster.name, 'MyMonster');
let pos = monster.pos;
assert.strictEqual(pos.x, 1);
assert.strictEqual(pos.y, 2);
assert.strictEqual(pos.z, 3);
assert.strictEqual(pos.test1, 3);
assert.strictEqual(pos.test2, Color.Green);
let test3 = pos.test3;
assert.strictEqual(test3.a, 5);
assert.strictEqual(test3.b, 6);
assert.strictEqual(monster.testType, Any.Monster);
let monster2 = monster.test;
assert.strictEqual(monster2 != null, true);
assert.strictEqual(monster2 instanceof MonsterT, true);
assert.strictEqual(monster2.name, 'Fred');
assert.strictEqual(monster.inventory.length, 5);
let invsum = 0;
for (let i = 0; i < monster.inventory.length; i++) {
invsum += monster.inventory[i];
}
assert.strictEqual(invsum, 10);
let test_0 = monster.test4[0];
let test_1 = monster.test4[1];
assert.strictEqual(monster.test4.length, 2);
assert.strictEqual(test_0.a + test_0.b + test_1.a + test_1.b, 100);
assert.strictEqual(monster.testarrayofstring.length, 2);
assert.strictEqual(monster.testarrayofstring[0], 'test1');
assert.strictEqual(monster.testarrayofstring[1], 'test2');
assert.strictEqual(monster.testbool, true);
}
function testBuffer(bb) {
assert.ok(Monster.bufferHasIdentifier(bb));
var monster = Monster.getRootAsMonster(bb);
assert.strictEqual(monster.hp(), 80);
assert.strictEqual(monster.mana(), 150); // default
assert.strictEqual(monster.name(), 'MyMonster');
var pos = monster.pos();
assert.strictEqual(pos.x(), 1);
assert.strictEqual(pos.y(), 2);
assert.strictEqual(pos.z(), 3);
assert.strictEqual(pos.test1(), 3);
assert.strictEqual(pos.test2(), Color.Green);
var t = pos.test3();
assert.strictEqual(t.a(), 5);
assert.strictEqual(t.b(), 6);
assert.strictEqual(monster.testType(), Any.Monster);
var monster2 = new Monster();
assert.strictEqual(monster.test(monster2) != null, true);
assert.strictEqual(monster2.name(), 'Fred');
assert.strictEqual(monster.inventoryLength(), 5);
var invsum = 0;
for (var i = 0; i < monster.inventoryLength(); i++) {
invsum += monster.inventory(i);
}
assert.strictEqual(invsum, 10);
var invsum2 = 0;
var invArr = monster.inventoryArray();
for (var i = 0; i < invArr.length; i++) {
invsum2 += invArr[i];
}
assert.strictEqual(invsum2, 10);
let longSum = 0n;
for (let idx = 0; idx < monster.vectorOfLongsLength(); ++idx) {
longSum += monster.vectorOfLongs(idx);
}
assert.strictEqual(longSum, 101010101n);
var test_0 = monster.test4(0);
var test_1 = monster.test4(1);
assert.strictEqual(monster.test4Length(), 2);
assert.strictEqual(test_0.a() + test_0.b() + test_1.a() + test_1.b(), 100);
assert.strictEqual(monster.testarrayofstringLength(), 2);
assert.strictEqual(monster.testarrayofstring(0), 'test1');
assert.strictEqual(monster.testarrayofstring(1), 'test2');
assert.strictEqual(monster.testbool(), true);
let monster_t = monster.unpack();
testObjApiUnpack(monster_t);
let monster2_t = new MonsterT();
monster.unpackTo(monster2_t);
testObjApiUnpack(monster2_t);
}
function test64bit() {
var fbb = new flatbuffers.Builder();
var required = fbb.createString('required');
Stat.startStat(fbb);
var stat2 = Stat.endStat(fbb);
Monster.startMonster(fbb);
Monster.addName(fbb, required);
Monster.addTestempty(fbb, stat2);
var mon2 = Monster.endMonster(fbb);
Stat.startStat(fbb);
// 2541551405100253985 = 0x2345678987654321
Stat.addVal(fbb, 0x2345678987654321n);
var stat = Stat.endStat(fbb);
Monster.startMonster(fbb);
Monster.addName(fbb, required);
Monster.addEnemy(fbb, mon2);
Monster.addTestempty(fbb, stat);
var mon = Monster.endMonster(fbb);
Monster.finishMonsterBuffer(fbb, mon);
var bytes = fbb.asUint8Array();
////////////////////////////////////////////////////////////////
var bb = new flatbuffers.ByteBuffer(bytes);
assert.ok(Monster.bufferHasIdentifier(bb));
var mon = Monster.getRootAsMonster(bb);
var stat = mon.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val(), 2541551405100253985n);
var mon2 = mon.enemy();
assert.strictEqual(mon2 != null, true);
stat = mon2.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val(), 0n); // default value
}
function testUnicode() {
var correct = fs.readFileSync('../unicode_test.mon');
var json = JSON.parse(fs.readFileSync('../unicode_test.json', 'utf8'));
// Test reading
function testReadingUnicode(bb) {
var monster = Monster.getRootAsMonster(bb);
assert.strictEqual(monster.name(), json.name);
assert.deepEqual(Buffer.from(monster.name(flatbuffers.Encoding.UTF8_BYTES)), Buffer.from(json.name));
assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
json.testarrayoftables.forEach(function(table, i) {
var value = monster.testarrayoftables(i);
assert.strictEqual(value.name(), table.name);
assert.deepEqual(Buffer.from(value.name(flatbuffers.Encoding.UTF8_BYTES)), Buffer.from(table.name));
});
assert.strictEqual(monster.testarrayofstringLength(), json.testarrayofstring.length);
json.testarrayofstring.forEach(function(string, i) {
assert.strictEqual(monster.testarrayofstring(i), string);
assert.deepEqual(Buffer.from(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), Buffer.from(string));
});
}
testReadingUnicode(new flatbuffers.ByteBuffer(new Uint8Array(correct)));
// Test writing
var fbb = new flatbuffers.Builder();
var name = fbb.createString(json.name);
var testarrayoftablesOffsets = json.testarrayoftables.map(function(table) {
var name = fbb.createString(new Uint8Array(Buffer.from(table.name)));
Monster.startMonster(fbb);
Monster.addName(fbb, name);
return Monster.endMonster(fbb);
});
var testarrayoftablesOffset = Monster.createTestarrayoftablesVector(fbb,
testarrayoftablesOffsets);
var testarrayofstringOffset = Monster.createTestarrayofstringVector(fbb,
json.testarrayofstring.map(function(string) { return fbb.createString(string); }));
Monster.startMonster(fbb);
Monster.addTestarrayofstring(fbb, testarrayofstringOffset);
Monster.addTestarrayoftables(fbb, testarrayoftablesOffset);
Monster.addName(fbb, name);
Monster.finishSizePrefixedMonsterBuffer(fbb, Monster.endMonster(fbb));
var bb = new flatbuffers.ByteBuffer(fbb.asUint8Array())
bb.setPosition(4);
testReadingUnicode(bb);
}
var __imul = Math.imul ? Math.imul : function(a, b) {
var ah = a >> 16 & 65535;
var bh = b >> 16 & 65535;
var al = a & 65535;
var bl = b & 65535;
return al * bl + (ah * bl + al * bh << 16) | 0;
};
// Include simple random number generator to ensure results will be the
// same cross platform.
// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator
var lcg_seed = 48271;
function lcg_rand() {
return lcg_seed = (__imul(lcg_seed, 279470273) >>> 0) % 4294967291;
}
function lcg_reset() {
lcg_seed = 48271;
}
// Converts a Field ID to a virtual table offset.
function fieldIndexToOffset(field_id) {
// Should correspond to what EndTable() below builds up.
var fixed_fields = 2; // Vtable size and Object Size.
return (field_id + fixed_fields) * 2;
}
// Low level stress/fuzz test: serialize/deserialize a variety of
// different kinds of data in different combinations
function fuzzTest1() {
// Values we're testing against: chosen to ensure no bits get chopped
// off anywhere, and also be different from eachother.
var bool_val = true;
var char_val = -127; // 0x81
var uchar_val = 0xFF;
var short_val = -32222; // 0x8222;
var ushort_val = 0xFEEE;
var int_val = 0x83333333 | 0;
var uint_val = 0xFDDDDDDD;
var long_val = BigInt.asIntN(64, 0x8444444444444444n);
var ulong_val = BigInt.asUintN(64, 0xFCCCCCCCCCCCCCCCn);
var float_val = new Float32Array([3.14159])[0];
var double_val = 3.14159265359;
var test_values_max = 11;
var fields_per_object = 4;
var num_fuzz_objects = 10000; // The higher, the more thorough :)
var builder = new flatbuffers.Builder();
lcg_reset(); // Keep it deterministic.
var objects = [];
// Generate num_fuzz_objects random objects each consisting of
// fields_per_object fields, each of a random type.
for (var i = 0; i < num_fuzz_objects; i++) {
builder.startObject(fields_per_object);
for (var f = 0; f < fields_per_object; f++) {
var choice = lcg_rand() % test_values_max;
switch (choice) {
case 0: builder.addFieldInt8(f, bool_val, 0); break;
case 1: builder.addFieldInt8(f, char_val, 0); break;
case 2: builder.addFieldInt8(f, uchar_val, 0); break;
case 3: builder.addFieldInt16(f, short_val, 0); break;
case 4: builder.addFieldInt16(f, ushort_val, 0); break;
case 5: builder.addFieldInt32(f, int_val, 0); break;
case 6: builder.addFieldInt32(f, uint_val, 0); break;
case 7: builder.addFieldInt64(f, long_val, 0n); break;
case 8: builder.addFieldInt64(f, ulong_val, 0n); break;
case 9: builder.addFieldFloat32(f, float_val, 0); break;
case 10: builder.addFieldFloat64(f, double_val, 0); break;
}
}
objects.push(builder.endObject());
}
builder.prep(8, 0); // Align whole buffer.
lcg_reset(); // Reset.
builder.finish(objects[objects.length - 1]);
var bytes = new Uint8Array(builder.asUint8Array());
var view = new DataView(bytes.buffer);
// Test that all objects we generated are readable and return the
// expected values. We generate random objects in the same order
// so this is deterministic.
for (var i = 0; i < num_fuzz_objects; i++) {
var offset = bytes.length - objects[i];
for (var f = 0; f < fields_per_object; f++) {
var choice = lcg_rand() % test_values_max;
var vtable_offset = fieldIndexToOffset(f);
var vtable = offset - view.getInt32(offset, true);
assert.ok(vtable_offset < view.getInt16(vtable, true));
var field_offset = offset + view.getInt16(vtable + vtable_offset, true);
switch (choice) {
case 0: assert.strictEqual(!!view.getInt8(field_offset), bool_val); break;
case 1: assert.strictEqual(view.getInt8(field_offset), char_val); break;
case 2: assert.strictEqual(view.getUint8(field_offset), uchar_val); break;
case 3: assert.strictEqual(view.getInt16(field_offset, true), short_val); break;
case 4: assert.strictEqual(view.getUint16(field_offset, true), ushort_val); break;
case 5: assert.strictEqual(view.getInt32(field_offset, true), int_val); break;
case 6: assert.strictEqual(view.getUint32(field_offset, true), uint_val); break;
case 7: assert.strictEqual(view.getBigInt64(field_offset, true), long_val); break;
case 8: assert.strictEqual(view.getBigUint64(field_offset, true), ulong_val); break;
case 9: assert.strictEqual(view.getFloat32(field_offset, true), float_val); break;
case 10: assert.strictEqual(view.getFloat64(field_offset, true), double_val); break;
}
}
}
}
function testSharedStrings() {
var shared_string = "Hello world";
var builder = new flatbuffers.Builder();
let mainOffset = builder.createSharedString(shared_string);
assert.strictEqual(builder.createSharedString(shared_string), mainOffset);
}
function testNullStrings() {
var builder = new flatbuffers.Builder();
assert.strictEqual(builder.createString(null), 0);
assert.strictEqual(builder.createSharedString(null), 0);
assert.strictEqual(builder.createString(undefined), 0);
assert.strictEqual(builder.createSharedString(undefined), 0);
}
function testVectorOfStructs() {
let monster = new MonsterT();
monster.name = 'testVectorOfStructs';
monster.test4 = [
new TestT(1, 2),
new TestT(3, 4)
];
let builder = new flatbuffers.Builder();
builder.finish(monster.pack(builder));
let decodedMonster = Monster.getRootAsMonster(builder.dataBuffer()).unpack();
assert.strictEqual(decodedMonster.test4[0].a, 1);
assert.strictEqual(decodedMonster.test4[0].b, 2);
assert.strictEqual(decodedMonster.test4[1].a, 3);
assert.strictEqual(decodedMonster.test4[1].b, 4);
}
function testCreateByteVector() {
const data = Uint8Array.from([1, 2, 3, 4, 5]);
const builder = new flatbuffers.Builder();
const required = builder.createString("required");
const offset = builder.createByteVector(data);
Monster.startMonster(builder);
Monster.addName(builder, required);
Monster.addInventory(builder, offset)
builder.finish(Monster.endMonster(builder));
let decodedMonster = Monster.getRootAsMonster(builder.dataBuffer());
assert.deepEqual(decodedMonster.inventoryArray(), data);
}
main();
+367
View File
@@ -0,0 +1,367 @@
// Run this using JavaScriptTest.sh
var assert = require('assert');
var fs = require('fs');
var flatbuffers = require('../../js/flatbuffers');
var MyGame = require(process.argv[2]).MyGame;
function main() {
// First, let's test reading a FlatBuffer generated by C++ code:
// This file was generated from monsterdata_test.json
var data = new Uint8Array(fs.readFileSync('../monsterdata_test.mon'));
// Now test it:
var bb = new flatbuffers.ByteBuffer(data);
testBuffer(bb);
// Second, let's create a FlatBuffer from scratch in JavaScript, and test it also.
// We use an initial size of 1 to exercise the reallocation algorithm,
// normally a size larger than the typical FlatBuffer you generate would be
// better for performance.
var fbb = new flatbuffers.Builder(1);
createMonster(fbb);
serializeAndTest(fbb);
// clear the builder, repeat tests
var clearIterations = 100;
var startingCapacity = fbb.bb.capacity();
for (var i = 0; i < clearIterations; i++) {
fbb.clear();
createMonster(fbb);
serializeAndTest(fbb);
}
// the capacity of our buffer shouldn't increase with the same size payload
assert.strictEqual(fbb.bb.capacity(), startingCapacity);
test64bit();
testUnicode();
fuzzTest1();
console.log('FlatBuffers test: completed successfully');
}
function createMonster(fbb) {
// We set up the same values as monsterdata.json:
var str = fbb.createString('MyMonster');
var inv = MyGame.Example.Monster.createInventoryVector(fbb, [0, 1, 2, 3, 4]);
var fred = fbb.createString('Fred');
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, fred);
var mon2 = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Monster.startTest4Vector(fbb, 2);
MyGame.Example.Test.createTest(fbb, 10, 20);
MyGame.Example.Test.createTest(fbb, 30, 40);
var test4 = fbb.endVector();
var testArrayOfString = MyGame.Example.Monster.createTestarrayofstringVector(fbb, [
fbb.createString('test1'),
fbb.createString('test2')
]);
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addPos(fbb, MyGame.Example.Vec3.createVec3(fbb, 1, 2, 3, 3, MyGame.Example.Color.Green, 5, 6));
MyGame.Example.Monster.addHp(fbb, 80);
MyGame.Example.Monster.addName(fbb, str);
MyGame.Example.Monster.addInventory(fbb, inv);
MyGame.Example.Monster.addTestType(fbb, MyGame.Example.Any.Monster);
MyGame.Example.Monster.addTest(fbb, mon2);
MyGame.Example.Monster.addTest4(fbb, test4);
MyGame.Example.Monster.addTestarrayofstring(fbb, testArrayOfString);
MyGame.Example.Monster.addTestbool(fbb, true);
var mon = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Monster.finishMonsterBuffer(fbb, mon);
}
function serializeAndTest(fbb) {
// Write the result to a file for debugging purposes:
// Note that the binaries are not necessarily identical, since the JSON
// parser may serialize in a slightly different order than the above
// JavaScript code. They are functionally equivalent though.
fs.writeFileSync('monsterdata_javascript_wire.mon', new Buffer(fbb.asUint8Array()));
// Tests mutation first. This will verify that we did not trample any other
// part of the byte buffer.
testMutation(fbb.dataBuffer());
testBuffer(fbb.dataBuffer());
}
function testMutation(bb) {
var monster = MyGame.Example.Monster.getRootAsMonster(bb);
monster.mutate_hp(120);
assert.strictEqual(monster.hp(), 120);
monster.mutate_hp(80);
assert.strictEqual(monster.hp(), 80);
var manaRes = monster.mutate_mana(10);
assert.strictEqual(manaRes, false); // Field was NOT present, because default value.
// TODO: There is not the availability to mutate structs or vectors.
}
function testBuffer(bb) {
assert.ok(MyGame.Example.Monster.bufferHasIdentifier(bb));
var monster = MyGame.Example.Monster.getRootAsMonster(bb);
assert.strictEqual(monster.hp(), 80);
assert.strictEqual(monster.mana(), 150); // default
assert.strictEqual(monster.name(), 'MyMonster');
var pos = monster.pos();
assert.strictEqual(pos.x(), 1);
assert.strictEqual(pos.y(), 2);
assert.strictEqual(pos.z(), 3);
assert.strictEqual(pos.test1(), 3);
assert.strictEqual(pos.test2(), MyGame.Example.Color.Green);
var t = pos.test3();
assert.strictEqual(t.a(), 5);
assert.strictEqual(t.b(), 6);
assert.strictEqual(monster.testType(), MyGame.Example.Any.Monster);
var monster2 = new MyGame.Example.Monster();
assert.strictEqual(monster.test(monster2) != null, true);
assert.strictEqual(monster2.name(), 'Fred');
assert.strictEqual(monster.inventoryLength(), 5);
var invsum = 0;
for (var i = 0; i < monster.inventoryLength(); i++) {
invsum += monster.inventory(i);
}
assert.strictEqual(invsum, 10);
var invsum2 = 0;
var invArr = monster.inventoryArray();
for (var i = 0; i < invArr.length; i++) {
invsum2 += invArr[i];
}
assert.strictEqual(invsum2, 10);
var test_0 = monster.test4(0);
var test_1 = monster.test4(1);
assert.strictEqual(monster.test4Length(), 2);
assert.strictEqual(test_0.a() + test_0.b() + test_1.a() + test_1.b(), 100);
assert.strictEqual(monster.testarrayofstringLength(), 2);
assert.strictEqual(monster.testarrayofstring(0), 'test1');
assert.strictEqual(monster.testarrayofstring(1), 'test2');
assert.strictEqual(monster.testbool(), true);
}
function test64bit() {
var fbb = new flatbuffers.Builder();
var required = fbb.createString('required');
MyGame.Example.Stat.startStat(fbb);
var stat2 = MyGame.Example.Stat.endStat(fbb);
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, required);
MyGame.Example.Monster.addTestempty(fbb, stat2);
var mon2 = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Stat.startStat(fbb);
MyGame.Example.Stat.addVal(fbb, 0x2345678987654321n);
var stat = MyGame.Example.Stat.endStat(fbb);
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, required);
MyGame.Example.Monster.addEnemy(fbb, mon2);
MyGame.Example.Monster.addTestempty(fbb, stat);
var mon = MyGame.Example.Monster.endMonster(fbb);
MyGame.Example.Monster.finishMonsterBuffer(fbb, mon);
var bytes = fbb.asUint8Array();
////////////////////////////////////////////////////////////////
var bb = new flatbuffers.ByteBuffer(bytes);
assert.ok(MyGame.Example.Monster.bufferHasIdentifier(bb));
var mon = MyGame.Example.Monster.getRootAsMonster(bb);
var stat = mon.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val(), 2541551405100253985n);
var mon2 = mon.enemy();
assert.strictEqual(mon2 != null, true);
stat = mon2.testempty();
assert.strictEqual(stat != null, true);
assert.strictEqual(stat.val() != null, true);
assert.strictEqual(stat.val(), 0n); // default value
}
function testUnicode() {
var correct = fs.readFileSync('unicode_test.mon');
var json = JSON.parse(fs.readFileSync('../unicode_test.json', 'utf8'));
// Test reading
function testReadingUnicode(bb) {
var monster = MyGame.Example.Monster.getRootAsMonster(bb);
assert.strictEqual(monster.name(), json.name);
assert.deepEqual(new Buffer(monster.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(json.name));
assert.strictEqual(monster.testarrayoftablesLength(), json.testarrayoftables.length);
json.testarrayoftables.forEach(function(table, i) {
var value = monster.testarrayoftables(i);
assert.strictEqual(value.name(), table.name);
assert.deepEqual(new Buffer(value.name(flatbuffers.Encoding.UTF8_BYTES)), new Buffer(table.name));
});
assert.strictEqual(monster.testarrayofstringLength(), json.testarrayofstring.length);
json.testarrayofstring.forEach(function(string, i) {
assert.strictEqual(monster.testarrayofstring(i), string);
assert.deepEqual(new Buffer(monster.testarrayofstring(i, flatbuffers.Encoding.UTF8_BYTES)), new Buffer(string));
});
}
testReadingUnicode(new flatbuffers.ByteBuffer(new Uint8Array(correct)));
// Test writing
var fbb = new flatbuffers.Builder();
var name = fbb.createString(json.name);
var testarrayoftablesOffsets = json.testarrayoftables.map(function(table) {
var name = fbb.createString(new Uint8Array(new Buffer(table.name)));
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addName(fbb, name);
return MyGame.Example.Monster.endMonster(fbb);
});
var testarrayoftablesOffset = MyGame.Example.Monster.createTestarrayoftablesVector(fbb,
testarrayoftablesOffsets);
var testarrayofstringOffset = MyGame.Example.Monster.createTestarrayofstringVector(fbb,
json.testarrayofstring.map(function(string) { return fbb.createString(string); }));
MyGame.Example.Monster.startMonster(fbb);
MyGame.Example.Monster.addTestarrayofstring(fbb, testarrayofstringOffset);
MyGame.Example.Monster.addTestarrayoftables(fbb, testarrayoftablesOffset);
MyGame.Example.Monster.addName(fbb, name);
MyGame.Example.Monster.finishSizePrefixedMonsterBuffer(fbb, MyGame.Example.Monster.endMonster(fbb));
var bb = new flatbuffers.ByteBuffer(fbb.asUint8Array())
bb.setPosition(4);
testReadingUnicode(bb);
}
var __imul = Math.imul ? Math.imul : function(a, b) {
var ah = a >> 16 & 65535;
var bh = b >> 16 & 65535;
var al = a & 65535;
var bl = b & 65535;
return al * bl + (ah * bl + al * bh << 16) | 0;
};
// Include simple random number generator to ensure results will be the
// same cross platform.
// http://en.wikipedia.org/wiki/Park%E2%80%93Miller_random_number_generator
var lcg_seed = 48271;
function lcg_rand() {
return lcg_seed = (__imul(lcg_seed, 279470273) >>> 0) % 4294967291;
}
function lcg_reset() {
lcg_seed = 48271;
}
// Converts a Field ID to a virtual table offset.
function fieldIndexToOffset(field_id) {
// Should correspond to what EndTable() below builds up.
var fixed_fields = 2; // Vtable size and Object Size.
return (field_id + fixed_fields) * 2;
}
// Low level stress/fuzz test: serialize/deserialize a variety of
// different kinds of data in different combinations
function fuzzTest1() {
// Values we're testing against: chosen to ensure no bits get chopped
// off anywhere, and also be different from eachother.
var bool_val = true;
var char_val = -127; // 0x81
var uchar_val = 0xFF;
var short_val = -32222; // 0x8222;
var ushort_val = 0xFEEE;
var int_val = 0x83333333 | 0;
var uint_val = 0xFDDDDDDD;
var long_val = BigInt.asIntN(64, 0x8444444444444444n);
var ulong_val = BigInt.asUintN(64, 0xFCCCCCCCCCCCCCCCn);
var float_val = new Float32Array([3.14159])[0];
var double_val = 3.14159265359;
var test_values_max = 11;
var fields_per_object = 4;
var num_fuzz_objects = 10000; // The higher, the more thorough :)
var builder = new flatbuffers.Builder();
lcg_reset(); // Keep it deterministic.
var objects = [];
// Generate num_fuzz_objects random objects each consisting of
// fields_per_object fields, each of a random type.
for (var i = 0; i < num_fuzz_objects; i++) {
builder.startObject(fields_per_object);
for (var f = 0; f < fields_per_object; f++) {
var choice = lcg_rand() % test_values_max;
switch (choice) {
case 0: builder.addFieldInt8(f, bool_val, 0); break;
case 1: builder.addFieldInt8(f, char_val, 0); break;
case 2: builder.addFieldInt8(f, uchar_val, 0); break;
case 3: builder.addFieldInt16(f, short_val, 0); break;
case 4: builder.addFieldInt16(f, ushort_val, 0); break;
case 5: builder.addFieldInt32(f, int_val, 0); break;
case 6: builder.addFieldInt32(f, uint_val, 0); break;
case 7: builder.addFieldInt64(f, long_val, 0n); break;
case 8: builder.addFieldInt64(f, ulong_val, 0n); break;
case 9: builder.addFieldFloat32(f, float_val, 0); break;
case 10: builder.addFieldFloat64(f, double_val, 0); break;
}
}
objects.push(builder.endObject());
}
builder.prep(8, 0); // Align whole buffer.
lcg_reset(); // Reset.
builder.finish(objects[objects.length - 1]);
var bytes = new Uint8Array(builder.asUint8Array());
var view = new DataView(bytes.buffer);
// Test that all objects we generated are readable and return the
// expected values. We generate random objects in the same order
// so this is deterministic.
for (var i = 0; i < num_fuzz_objects; i++) {
var offset = bytes.length - objects[i];
for (var f = 0; f < fields_per_object; f++) {
var choice = lcg_rand() % test_values_max;
var vtable_offset = fieldIndexToOffset(f);
var vtable = offset - view.getInt32(offset, true);
assert.ok(vtable_offset < view.getInt16(vtable, true));
var field_offset = offset + view.getInt16(vtable + vtable_offset, true);
switch (choice) {
case 0: assert.strictEqual(!!view.getInt8(field_offset), bool_val); break;
case 1: assert.strictEqual(view.getInt8(field_offset), char_val); break;
case 2: assert.strictEqual(view.getUint8(field_offset), uchar_val); break;
case 3: assert.strictEqual(view.getInt16(field_offset, true), short_val); break;
case 4: assert.strictEqual(view.getUint16(field_offset, true), ushort_val); break;
case 5: assert.strictEqual(view.getInt32(field_offset, true), int_val); break;
case 6: assert.strictEqual(view.getUint32(field_offset, true), uint_val); break;
case 7: assert.strictEqual(view.getBigInt64(field_offset, true), long_val); break;
case 8: assert.strictEqual(view.getBigUint64(field_offset, true), ulong_val); break;
case 9: assert.strictEqual(view.getFloat32(field_offset, true), float_val); break;
case 10: assert.strictEqual(view.getFloat64(field_offset, true), double_val); break;
}
}
}
}
main();
@@ -0,0 +1,26 @@
import assert from 'assert'
import * as flatbuffers from 'flatbuffers'
import {UnionUnderlyingType as Test} from './union_underlying_type_test.js'
function main() {
let a = new Test.AT();
a.a = 1;
let b = new Test.BT();
b.b = "foo";
let c = new Test.CT();
c.c = true;
let d = new Test.DT();
d.testUnionType = Test.ABC.A;
d.testUnion = a;
d.testVectorOfUnionType = [Test.ABC.A, Test.ABC.B, Test.ABC.C];
d.testVectorOfUnion = [a, b, c];
let fbb = new flatbuffers.Builder();
let offset = d.pack(fbb);
fbb.finish(offset);
let unpacked = Test.D.getRootAsD(fbb.dataBuffer()).unpack();
assert.equal(JSON.stringify(unpacked), JSON.stringify(d));
}
main()
@@ -0,0 +1,111 @@
import assert from 'assert'
import * as flatbuffers from 'flatbuffers'
import { Character } from './union_vector/character.js'
import { BookReader, BookReaderT } from './union_vector/book-reader.js'
import { Attacker, AttackerT } from './union_vector/attacker.js'
import { Movie, MovieT } from './union_vector/movie.js'
var charTypes = [
Character.Belle,
Character.MuLan,
Character.BookFan,
Character.Other
];
function testMovieBuf(movie) {
assert.strictEqual(movie.charactersTypeLength(), charTypes.length);
assert.strictEqual(movie.charactersLength(), movie.charactersTypeLength());
for (var i = 0; i < charTypes.length; ++i) {
assert.strictEqual(movie.charactersType(i), charTypes[i]);
}
var bookReader7 = movie.characters(0, new BookReader());
assert.strictEqual(bookReader7.booksRead(), 7);
var attacker = movie.characters(1, new Attacker());
assert.strictEqual(attacker.swordAttackDamage(), 5);
var bookReader2 = movie.characters(2, new BookReader());
assert.strictEqual(bookReader2.booksRead(), 2);
var other = movie.characters(3, '');
assert.strictEqual(other, "I am other");
}
function testMovieUnpack(movie) {
assert.strictEqual(movie.charactersType.length, charTypes.length);
assert.strictEqual(movie.characters.length, movie.charactersType.length);
for (var i = 0; i < charTypes.length; ++i) {
assert.strictEqual(movie.charactersType[i], charTypes[i]);
}
var bookReader7 = movie.characters[0];
assert.strictEqual(bookReader7 instanceof BookReaderT, true);
assert.strictEqual(bookReader7.booksRead, 7);
var attacker = movie.characters[1];
assert.strictEqual(attacker instanceof AttackerT, true);
assert.strictEqual(attacker.swordAttackDamage, 5);
var bookReader2 = movie.characters[2];
assert.strictEqual(bookReader2 instanceof BookReaderT, true);
assert.strictEqual(bookReader2.booksRead, 2);
var other = movie.characters[3];
assert.strictEqual(other, "I am other");
}
function createMovie(fbb) {
Attacker.startAttacker(fbb);
Attacker.addSwordAttackDamage(fbb, 5);
var attackerOffset = Attacker.endAttacker(fbb);
var charTypesOffset = Movie.createCharactersTypeVector(fbb, charTypes);
var charsOffset = 0;
let otherOffset = fbb.createString("I am other");
charsOffset = Movie.createCharactersVector(
fbb,
[
BookReader.createBookReader(fbb, 7),
attackerOffset,
BookReader.createBookReader(fbb, 2),
otherOffset
]
);
Movie.startMovie(fbb);
Movie.addCharactersType(fbb, charTypesOffset);
Movie.addCharacters(fbb, charsOffset);
Movie.finishMovieBuffer(fbb, Movie.endMovie(fbb))
}
function main() {
var fbb = new flatbuffers.Builder();
createMovie(fbb);
var buf = new flatbuffers.ByteBuffer(fbb.asUint8Array());
var movie = Movie.getRootAsMovie(buf);
testMovieBuf(movie);
testMovieUnpack(movie.unpack());
var movie_to = new MovieT();
movie.unpackTo(movie_to);
testMovieUnpack(movie_to);
fbb.clear();
Movie.finishMovieBuffer(fbb, movie_to.pack(fbb));
var unpackBuf = new flatbuffers.ByteBuffer(fbb.asUint8Array());
testMovieBuf(Movie.getRootAsMovie(unpackBuf));
console.log('FlatBuffers union vector test: completed successfully');
}
main();
+140
View File
@@ -0,0 +1,140 @@
#!/usr/bin/env python3
#
# Copyright 2022 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import platform
import shutil
import subprocess
import sys
from pathlib import Path
# Get the path where this script is located so we can invoke the script from
# any directory and have the paths work correctly.
tests_path = Path(__file__).parent.resolve()
# Get the root path as an absolute path, so all derived paths are absolute.
root_path = tests_path.parent.parent.absolute()
# Windows works with subprocess.run a bit differently.
is_windows = platform.system() == "Windows"
# Get the location of the flatc executable
flatc_exe = Path("flatc.exe" if is_windows else "flatc")
# Find and assert flatc compiler is present.
if root_path in flatc_exe.parents:
flatc_exe = flatc_exe.relative_to(root_path)
flatc_path = Path(root_path, flatc_exe)
assert flatc_path.exists(), "Cannot find the flatc compiler " + str(flatc_path)
def check_call(args, cwd=tests_path):
subprocess.check_call(args, cwd=str(cwd), shell=is_windows)
# Execute the flatc compiler with the specified parameters
def flatc(options, schema, prefix=None, include=None, data=None, cwd=tests_path):
print("Invoking flatc on schema " + str(schema))
cmd = [str(flatc_path)] + options
if prefix:
cmd += ["-o"] + [prefix]
if include:
cmd += ["-I"] + [include]
cmd += [schema] if isinstance(schema, str) else schema
if data:
cmd += [data] if isinstance(data, str) else data
check_call(cmd)
# Execute esbuild with the specified parameters
def esbuild(input, output):
cmd = ["esbuild", input, "--outfile=" + output]
cmd += ["--format=cjs", "--bundle", "--external:flatbuffers"]
check_call(cmd)
print("Removing node_modules/ directory...")
shutil.rmtree(Path(tests_path, "node_modules"), ignore_errors=True)
check_call(["npm", "install", "--silent"])
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
schema="../monster_test.fbs",
include="../include_test",
)
esbuild("monster_test.ts", "monster_test_generated.cjs")
flatc(
options=["--gen-object-api", "-b"],
schema="../monster_test.fbs",
include="../include_test",
data="../unicode_test.json",
)
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
schema="../union_vector/union_vector.fbs",
prefix="union_vector",
)
esbuild("union_vector/union_vector.ts", "union_vector/union_vector_generated.cjs")
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings"],
schema="../optional_scalars.fbs",
)
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--ts-no-import-ext"],
schema="../optional_scalars.fbs",
prefix="no_import_ext",
)
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
schema="arrays_test_complex/arrays_test_complex.fbs",
prefix="arrays_test_complex"
)
esbuild("arrays_test_complex/my-game/example.ts", "arrays_test_complex/arrays_test_complex_generated.cjs")
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
schema=[
"typescript_keywords.fbs",
"test_dir/typescript_include.fbs",
"test_dir/typescript_transitive_include.fbs",
"../../reflection/reflection.fbs",
],
include="../../",
)
esbuild("typescript_keywords.ts", "typescript_keywords_generated.cjs")
flatc(
options=["--ts", "--reflect-names", "--gen-name-strings", "--gen-mutable", "--gen-object-api", "--ts-entry-points", "--ts-flat-files"],
schema="../union_underlying_type_test.fbs"
)
print("Running TypeScript Compiler...")
check_call(["tsc"])
print("Running TypeScript Compiler in old node resolution mode for no_import_ext...")
check_call(["tsc", "-p", "./tsconfig.node.json"])
NODE_CMD = ["node"]
print("Running TypeScript Tests...")
check_call(NODE_CMD + ["JavaScriptTest"])
check_call(NODE_CMD + ["JavaScriptUnionVectorTest"])
check_call(NODE_CMD + ["JavaScriptFlexBuffersTest"])
check_call(NODE_CMD + ["JavaScriptComplexArraysTest"])
check_call(NODE_CMD + ["JavaScriptUnionUnderlyingTypeTest"])
print("Running old v1 TypeScript Tests...")
check_call(NODE_CMD + ["JavaScriptTestv1.cjs", "./monster_test_generated.cjs"])
@@ -0,0 +1,46 @@
namespace MyGame.Example;
enum TestEnum : byte { A, B, C }
struct InnerStruct {
a:float64;
b:[ubyte:13];
c:int8;
d_underscore:int64;
}
struct OuterStruct {
a:bool;
b:double;
c_underscore:InnerStruct;
d:[InnerStruct:3];
e:InnerStruct;
f:[float64:4];
}
struct NestedStruct{
a:[int:2];
b:TestEnum;
c_underscore:[TestEnum:2];
d_outer:[OuterStruct:5];
e:[int64:2];
}
struct ArrayStruct{
a_underscore:float;
b_underscore:[int:0xF];
c:byte;
d:[NestedStruct:2];
e:int32;
f:[OuterStruct:2];
g:[int64:2];
}
table ArrayTable{
a:string;
c_underscore:ArrayStruct;
}
root_type ArrayTable;
file_identifier "RHUB";
file_extension "mon";
@@ -0,0 +1,460 @@
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// arrays_test_complex/my-game/example.ts
var example_exports = {};
__export(example_exports, {
ArrayStruct: () => ArrayStruct,
ArrayStructT: () => ArrayStructT,
ArrayTable: () => ArrayTable,
ArrayTableT: () => ArrayTableT,
InnerStruct: () => InnerStruct,
InnerStructT: () => InnerStructT,
NestedStruct: () => NestedStruct,
NestedStructT: () => NestedStructT,
OuterStruct: () => OuterStruct,
OuterStructT: () => OuterStructT,
TestEnum: () => TestEnum
});
module.exports = __toCommonJS(example_exports);
// arrays_test_complex/my-game/example/inner-struct.js
var InnerStruct = class {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a() {
return this.bb.readFloat64(this.bb_pos);
}
b(index) {
return this.bb.readUint8(this.bb_pos + 8 + index);
}
c() {
return this.bb.readInt8(this.bb_pos + 21);
}
dUnderscore() {
return this.bb.readInt64(this.bb_pos + 24);
}
static getFullyQualifiedName() {
return "MyGame.Example.InnerStruct";
}
static sizeOf() {
return 32;
}
static createInnerStruct(builder, a, b, c, d_underscore) {
builder.prep(8, 32);
builder.writeInt64(BigInt(d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8(b?.[i] ?? 0);
}
builder.writeFloat64(a);
return builder.offset();
}
unpack() {
return new InnerStructT(this.a(), this.bb.createScalarList(this.b.bind(this), 13), this.c(), this.dUnderscore());
}
unpackTo(_o) {
_o.a = this.a();
_o.b = this.bb.createScalarList(this.b.bind(this), 13);
_o.c = this.c();
_o.dUnderscore = this.dUnderscore();
}
};
var InnerStructT = class {
constructor(a = 0, b = [], c = 0, dUnderscore = BigInt("0")) {
this.a = a;
this.b = b;
this.c = c;
this.dUnderscore = dUnderscore;
}
pack(builder) {
return InnerStruct.createInnerStruct(builder, this.a, this.b, this.c, this.dUnderscore);
}
};
// arrays_test_complex/my-game/example/outer-struct.js
var OuterStruct = class {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a() {
return !!this.bb.readInt8(this.bb_pos);
}
b() {
return this.bb.readFloat64(this.bb_pos + 8);
}
cUnderscore(obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 16, this.bb);
}
d(index, obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 48 + index * 32, this.bb);
}
e(obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 144, this.bb);
}
f(index) {
return this.bb.readFloat64(this.bb_pos + 176 + index * 8);
}
static getFullyQualifiedName() {
return "MyGame.Example.OuterStruct";
}
static sizeOf() {
return 208;
}
static createOuterStruct(builder, a, b, c_underscore_a, c_underscore_b, c_underscore_c, c_underscore_d_underscore, d, e_a, e_b, e_c, e_d_underscore, f) {
builder.prep(8, 208);
for (let i = 3; i >= 0; --i) {
builder.writeFloat64(f?.[i] ?? 0);
}
builder.prep(8, 32);
builder.writeInt64(BigInt(e_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(e_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8(e_b?.[i] ?? 0);
}
builder.writeFloat64(e_a);
for (let i = 2; i >= 0; --i) {
const item = d?.[i];
if (item instanceof InnerStructT) {
item.pack(builder);
continue;
}
InnerStruct.createInnerStruct(builder, item?.a, item?.b, item?.c, item?.dUnderscore);
}
builder.prep(8, 32);
builder.writeInt64(BigInt(c_underscore_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c_underscore_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8(c_underscore_b?.[i] ?? 0);
}
builder.writeFloat64(c_underscore_a);
builder.writeFloat64(b);
builder.pad(7);
builder.writeInt8(Number(Boolean(a)));
return builder.offset();
}
unpack() {
return new OuterStructT(this.a(), this.b(), this.cUnderscore() !== null ? this.cUnderscore().unpack() : null, this.bb.createObjList(this.d.bind(this), 3), this.e() !== null ? this.e().unpack() : null, this.bb.createScalarList(this.f.bind(this), 4));
}
unpackTo(_o) {
_o.a = this.a();
_o.b = this.b();
_o.cUnderscore = this.cUnderscore() !== null ? this.cUnderscore().unpack() : null;
_o.d = this.bb.createObjList(this.d.bind(this), 3);
_o.e = this.e() !== null ? this.e().unpack() : null;
_o.f = this.bb.createScalarList(this.f.bind(this), 4);
}
};
var OuterStructT = class {
constructor(a = false, b = 0, cUnderscore = null, d = [], e = null, f = []) {
this.a = a;
this.b = b;
this.cUnderscore = cUnderscore;
this.d = d;
this.e = e;
this.f = f;
}
pack(builder) {
return OuterStruct.createOuterStruct(builder, this.a, this.b, this.cUnderscore?.a ?? 0, this.cUnderscore?.b ?? [], this.cUnderscore?.c ?? 0, this.cUnderscore?.dUnderscore ?? BigInt(0), this.d, this.e?.a ?? 0, this.e?.b ?? [], this.e?.c ?? 0, this.e?.dUnderscore ?? BigInt(0), this.f);
}
};
// arrays_test_complex/my-game/example/test-enum.js
var TestEnum;
(function(TestEnum2) {
TestEnum2[TestEnum2["A"] = 0] = "A";
TestEnum2[TestEnum2["B"] = 1] = "B";
TestEnum2[TestEnum2["C"] = 2] = "C";
})(TestEnum || (TestEnum = {}));
// arrays_test_complex/my-game/example/nested-struct.js
var NestedStruct = class {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a(index) {
return this.bb.readInt32(this.bb_pos + 0 + index * 4);
}
b() {
return this.bb.readInt8(this.bb_pos + 8);
}
cUnderscore(index) {
return this.bb.readInt8(this.bb_pos + 9 + index);
}
dOuter(index, obj) {
return (obj || new OuterStruct()).__init(this.bb_pos + 16 + index * 208, this.bb);
}
e(index) {
return this.bb.readInt64(this.bb_pos + 1056 + index * 8);
}
static getFullyQualifiedName() {
return "MyGame.Example.NestedStruct";
}
static sizeOf() {
return 1072;
}
static createNestedStruct(builder, a, b, c_underscore, d_outer, e) {
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() {
return new NestedStructT(this.bb.createScalarList(this.a.bind(this), 2), this.b(), this.bb.createScalarList(this.cUnderscore.bind(this), 2), this.bb.createObjList(this.dOuter.bind(this), 5), this.bb.createScalarList(this.e.bind(this), 2));
}
unpackTo(_o) {
_o.a = this.bb.createScalarList(this.a.bind(this), 2);
_o.b = this.b();
_o.cUnderscore = this.bb.createScalarList(this.cUnderscore.bind(this), 2);
_o.dOuter = this.bb.createObjList(this.dOuter.bind(this), 5);
_o.e = this.bb.createScalarList(this.e.bind(this), 2);
}
};
var NestedStructT = class {
constructor(a = [], b = TestEnum.A, cUnderscore = [TestEnum.A, TestEnum.A], dOuter = [], e = []) {
this.a = a;
this.b = b;
this.cUnderscore = cUnderscore;
this.dOuter = dOuter;
this.e = e;
}
pack(builder) {
return NestedStruct.createNestedStruct(builder, this.a, this.b, this.cUnderscore, this.dOuter, this.e);
}
};
// arrays_test_complex/my-game/example/array-struct.js
var ArrayStruct = class {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
aUnderscore() {
return this.bb.readFloat32(this.bb_pos);
}
bUnderscore(index) {
return this.bb.readInt32(this.bb_pos + 4 + index * 4);
}
c() {
return this.bb.readInt8(this.bb_pos + 64);
}
d(index, obj) {
return (obj || new NestedStruct()).__init(this.bb_pos + 72 + index * 1072, this.bb);
}
e() {
return this.bb.readInt32(this.bb_pos + 2216);
}
f(index, obj) {
return (obj || new OuterStruct()).__init(this.bb_pos + 2224 + index * 208, this.bb);
}
g(index) {
return this.bb.readInt64(this.bb_pos + 2640 + index * 8);
}
static getFullyQualifiedName() {
return "MyGame.Example.ArrayStruct";
}
static sizeOf() {
return 2656;
}
static createArrayStruct(builder, a_underscore, b_underscore, c, d, e, f, g) {
builder.prep(8, 2656);
for (let i = 1; i >= 0; --i) {
builder.writeInt64(BigInt(g?.[i] ?? 0));
}
for (let i = 1; i >= 0; --i) {
const item = f?.[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(4);
builder.writeInt32(e);
for (let i = 1; i >= 0; --i) {
const item = d?.[i];
if (item instanceof NestedStructT) {
item.pack(builder);
continue;
}
NestedStruct.createNestedStruct(builder, item?.a, item?.b, item?.cUnderscore, item?.dOuter, item?.e);
}
builder.pad(7);
builder.writeInt8(c);
for (let i = 14; i >= 0; --i) {
builder.writeInt32(b_underscore?.[i] ?? 0);
}
builder.writeFloat32(a_underscore);
return builder.offset();
}
unpack() {
return new ArrayStructT(this.aUnderscore(), this.bb.createScalarList(this.bUnderscore.bind(this), 15), this.c(), this.bb.createObjList(this.d.bind(this), 2), this.e(), this.bb.createObjList(this.f.bind(this), 2), this.bb.createScalarList(this.g.bind(this), 2));
}
unpackTo(_o) {
_o.aUnderscore = this.aUnderscore();
_o.bUnderscore = this.bb.createScalarList(this.bUnderscore.bind(this), 15);
_o.c = this.c();
_o.d = this.bb.createObjList(this.d.bind(this), 2);
_o.e = this.e();
_o.f = this.bb.createObjList(this.f.bind(this), 2);
_o.g = this.bb.createScalarList(this.g.bind(this), 2);
}
};
var ArrayStructT = class {
constructor(aUnderscore = 0, bUnderscore = [], c = 0, d = [], e = 0, f = [], g = []) {
this.aUnderscore = aUnderscore;
this.bUnderscore = bUnderscore;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
}
pack(builder) {
return ArrayStruct.createArrayStruct(builder, this.aUnderscore, this.bUnderscore, this.c, this.d, this.e, this.f, this.g);
}
};
// arrays_test_complex/my-game/example/array-table.js
var flatbuffers = __toESM(require("flatbuffers"), 1);
var ArrayTable = class _ArrayTable {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsArrayTable(bb, obj) {
return (obj || new _ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsArrayTable(bb, obj) {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new _ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static bufferHasIdentifier(bb) {
return bb.__has_identifier("RHUB");
}
a(optionalEncoding) {
const offset = this.bb.__offset(this.bb_pos, 4);
return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
}
cUnderscore(obj) {
const offset = this.bb.__offset(this.bb_pos, 6);
return offset ? (obj || new ArrayStruct()).__init(this.bb_pos + offset, this.bb) : null;
}
static getFullyQualifiedName() {
return "MyGame.Example.ArrayTable";
}
static startArrayTable(builder) {
builder.startObject(2);
}
static addA(builder, aOffset) {
builder.addFieldOffset(0, aOffset, 0);
}
static addCUnderscore(builder, cUnderscoreOffset) {
builder.addFieldStruct(1, cUnderscoreOffset, 0);
}
static endArrayTable(builder) {
const offset = builder.endObject();
return offset;
}
static finishArrayTableBuffer(builder, offset) {
builder.finish(offset, "RHUB");
}
static finishSizePrefixedArrayTableBuffer(builder, offset) {
builder.finish(offset, "RHUB", true);
}
unpack() {
return new ArrayTableT(this.a(), this.cUnderscore() !== null ? this.cUnderscore().unpack() : null);
}
unpackTo(_o) {
_o.a = this.a();
_o.cUnderscore = this.cUnderscore() !== null ? this.cUnderscore().unpack() : null;
}
};
var ArrayTableT = class {
constructor(a = null, cUnderscore = null) {
this.a = a;
this.cUnderscore = cUnderscore;
}
pack(builder) {
const a = this.a !== null ? builder.createString(this.a) : 0;
ArrayTable.startArrayTable(builder);
ArrayTable.addA(builder, a);
ArrayTable.addCUnderscore(builder, this.cUnderscore !== null ? this.cUnderscore.pack(builder) : 0);
return ArrayTable.endArrayTable(builder);
}
};
@@ -0,0 +1,6 @@
export { ArrayStruct, ArrayStructT } from './example/array-struct.js';
export { ArrayTable, ArrayTableT } from './example/array-table.js';
export { InnerStruct, InnerStructT } from './example/inner-struct.js';
export { NestedStruct, NestedStructT } from './example/nested-struct.js';
export { OuterStruct, OuterStructT } from './example/outer-struct.js';
export { TestEnum } from './example/test-enum.js';
@@ -0,0 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { ArrayStruct, ArrayStructT } from './example/array-struct.js';
export { ArrayTable, ArrayTableT } from './example/array-table.js';
export { InnerStruct, InnerStructT } from './example/inner-struct.js';
export { NestedStruct, NestedStructT } from './example/nested-struct.js';
export { OuterStruct, OuterStructT } from './example/outer-struct.js';
export { TestEnum } from './example/test-enum.js';
@@ -0,0 +1,10 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { ArrayStruct, ArrayStructT } from './example/array-struct.js';
export { ArrayTable, ArrayTableT } from './example/array-table.js';
export { InnerStruct, InnerStructT } from './example/inner-struct.js';
export { NestedStruct, NestedStructT } from './example/nested-struct.js';
export { OuterStruct, OuterStructT } from './example/outer-struct.js';
export { TestEnum } from './example/test-enum.js';
@@ -0,0 +1,31 @@
import * as flatbuffers from 'flatbuffers';
import { NestedStruct, NestedStructT } from '../../my-game/example/nested-struct.js';
import { OuterStruct, OuterStructT } from '../../my-game/example/outer-struct.js';
export declare class ArrayStruct implements flatbuffers.IUnpackableObject<ArrayStructT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): ArrayStruct;
aUnderscore(): number;
bUnderscore(index: number): number | null;
c(): number;
d(index: number, obj?: NestedStruct): NestedStruct | null;
e(): number;
f(index: number, obj?: OuterStruct): OuterStruct | null;
g(index: number): bigint | null;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createArrayStruct(builder: flatbuffers.Builder, a_underscore: number, b_underscore: number[] | null, c: number, d: (any | NestedStructT)[] | null, e: number, f: (any | OuterStructT)[] | null, g: bigint[] | null): flatbuffers.Offset;
unpack(): ArrayStructT;
unpackTo(_o: ArrayStructT): void;
}
export declare class ArrayStructT implements flatbuffers.IGeneratedObject {
aUnderscore: number;
bUnderscore: (number)[];
c: number;
d: (NestedStructT)[];
e: number;
f: (OuterStructT)[];
g: (bigint)[];
constructor(aUnderscore?: number, bUnderscore?: (number)[], c?: number, d?: (NestedStructT)[], e?: number, f?: (OuterStructT)[], g?: (bigint)[]);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,98 @@
// automatically generated by the FlatBuffers compiler, do not modify
import { NestedStruct, NestedStructT } from '../../my-game/example/nested-struct.js';
import { OuterStruct, OuterStructT } from '../../my-game/example/outer-struct.js';
export class ArrayStruct {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
aUnderscore() {
return this.bb.readFloat32(this.bb_pos);
}
bUnderscore(index) {
return this.bb.readInt32(this.bb_pos + 4 + index * 4);
}
c() {
return this.bb.readInt8(this.bb_pos + 64);
}
d(index, obj) {
return (obj || new NestedStruct()).__init(this.bb_pos + 72 + index * 1072, this.bb);
}
e() {
return this.bb.readInt32(this.bb_pos + 2216);
}
f(index, obj) {
return (obj || new OuterStruct()).__init(this.bb_pos + 2224 + index * 208, this.bb);
}
g(index) {
return this.bb.readInt64(this.bb_pos + 2640 + index * 8);
}
static getFullyQualifiedName() {
return 'MyGame.Example.ArrayStruct';
}
static sizeOf() {
return 2656;
}
static createArrayStruct(builder, a_underscore, b_underscore, c, d, e, f, g) {
builder.prep(8, 2656);
for (let i = 1; i >= 0; --i) {
builder.writeInt64(BigInt(g?.[i] ?? 0));
}
for (let i = 1; i >= 0; --i) {
const item = f?.[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(4);
builder.writeInt32(e);
for (let i = 1; i >= 0; --i) {
const item = d?.[i];
if (item instanceof NestedStructT) {
item.pack(builder);
continue;
}
NestedStruct.createNestedStruct(builder, item?.a, item?.b, item?.cUnderscore, item?.dOuter, item?.e);
}
builder.pad(7);
builder.writeInt8(c);
for (let i = 14; i >= 0; --i) {
builder.writeInt32((b_underscore?.[i] ?? 0));
}
builder.writeFloat32(a_underscore);
return builder.offset();
}
unpack() {
return new ArrayStructT(this.aUnderscore(), this.bb.createScalarList(this.bUnderscore.bind(this), 15), this.c(), this.bb.createObjList(this.d.bind(this), 2), this.e(), this.bb.createObjList(this.f.bind(this), 2), this.bb.createScalarList(this.g.bind(this), 2));
}
unpackTo(_o) {
_o.aUnderscore = this.aUnderscore();
_o.bUnderscore = this.bb.createScalarList(this.bUnderscore.bind(this), 15);
_o.c = this.c();
_o.d = this.bb.createObjList(this.d.bind(this), 2);
_o.e = this.e();
_o.f = this.bb.createObjList(this.f.bind(this), 2);
_o.g = this.bb.createScalarList(this.g.bind(this), 2);
}
}
export class ArrayStructT {
constructor(aUnderscore = 0.0, bUnderscore = [], c = 0, d = [], e = 0, f = [], g = []) {
this.aUnderscore = aUnderscore;
this.bUnderscore = bUnderscore;
this.c = c;
this.d = d;
this.e = e;
this.f = f;
this.g = g;
}
pack(builder) {
return ArrayStruct.createArrayStruct(builder, this.aUnderscore, this.bUnderscore, this.c, this.d, this.e, this.f, this.g);
}
}
@@ -0,0 +1,168 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { NestedStruct, NestedStructT } from '../../my-game/example/nested-struct.js';
import { OuterStruct, OuterStructT } from '../../my-game/example/outer-struct.js';
export class ArrayStruct implements flatbuffers.IUnpackableObject<ArrayStructT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):ArrayStruct {
this.bb_pos = i;
this.bb = bb;
return this;
}
aUnderscore():number {
return this.bb!.readFloat32(this.bb_pos);
}
bUnderscore(index: number):number|null {
return this.bb!.readInt32(this.bb_pos + 4 + index * 4);
}
c():number {
return this.bb!.readInt8(this.bb_pos + 64);
}
d(index: number, obj?:NestedStruct):NestedStruct|null {
return (obj || new NestedStruct()).__init(this.bb_pos + 72 + index * 1072, this.bb!);
}
e():number {
return this.bb!.readInt32(this.bb_pos + 2216);
}
f(index: number, obj?:OuterStruct):OuterStruct|null {
return (obj || new OuterStruct()).__init(this.bb_pos + 2224 + index * 208, this.bb!);
}
g(index: number):bigint|null {
return this.bb!.readInt64(this.bb_pos + 2640 + index * 8);
}
static getFullyQualifiedName():string {
return 'MyGame.Example.ArrayStruct';
}
static sizeOf():number {
return 2656;
}
static createArrayStruct(builder:flatbuffers.Builder, a_underscore: number, b_underscore: number[]|null, c: number, d: (any|NestedStructT)[]|null, e: number, f: (any|OuterStructT)[]|null, g: bigint[]|null):flatbuffers.Offset {
builder.prep(8, 2656);
for (let i = 1; i >= 0; --i) {
builder.writeInt64(BigInt(g?.[i] ?? 0));
}
for (let i = 1; i >= 0; --i) {
const item = f?.[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(4);
builder.writeInt32(e);
for (let i = 1; i >= 0; --i) {
const item = d?.[i];
if (item instanceof NestedStructT) {
item.pack(builder);
continue;
}
NestedStruct.createNestedStruct(builder,
item?.a,
item?.b,
item?.cUnderscore,
item?.dOuter,
item?.e
);
}
builder.pad(7);
builder.writeInt8(c);
for (let i = 14; i >= 0; --i) {
builder.writeInt32((b_underscore?.[i] ?? 0));
}
builder.writeFloat32(a_underscore);
return builder.offset();
}
unpack(): ArrayStructT {
return new ArrayStructT(
this.aUnderscore(),
this.bb!.createScalarList<number>(this.bUnderscore.bind(this), 15),
this.c(),
this.bb!.createObjList<NestedStruct, NestedStructT>(this.d.bind(this), 2),
this.e(),
this.bb!.createObjList<OuterStruct, OuterStructT>(this.f.bind(this), 2),
this.bb!.createScalarList<bigint>(this.g.bind(this), 2)
);
}
unpackTo(_o: ArrayStructT): void {
_o.aUnderscore = this.aUnderscore();
_o.bUnderscore = this.bb!.createScalarList<number>(this.bUnderscore.bind(this), 15);
_o.c = this.c();
_o.d = this.bb!.createObjList<NestedStruct, NestedStructT>(this.d.bind(this), 2);
_o.e = this.e();
_o.f = this.bb!.createObjList<OuterStruct, OuterStructT>(this.f.bind(this), 2);
_o.g = this.bb!.createScalarList<bigint>(this.g.bind(this), 2);
}
}
export class ArrayStructT implements flatbuffers.IGeneratedObject {
constructor(
public aUnderscore: number = 0.0,
public bUnderscore: (number)[] = [],
public c: number = 0,
public d: (NestedStructT)[] = [],
public e: number = 0,
public f: (OuterStructT)[] = [],
public g: (bigint)[] = []
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return ArrayStruct.createArrayStruct(builder,
this.aUnderscore,
this.bUnderscore,
this.c,
this.d,
this.e,
this.f,
this.g
);
}
}
@@ -0,0 +1,28 @@
import * as flatbuffers from 'flatbuffers';
import { ArrayStruct, ArrayStructT } from '../../my-game/example/array-struct.js';
export declare class ArrayTable implements flatbuffers.IUnpackableObject<ArrayTableT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): ArrayTable;
static getRootAsArrayTable(bb: flatbuffers.ByteBuffer, obj?: ArrayTable): ArrayTable;
static getSizePrefixedRootAsArrayTable(bb: flatbuffers.ByteBuffer, obj?: ArrayTable): ArrayTable;
static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean;
a(): string | null;
a(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
cUnderscore(obj?: ArrayStruct): ArrayStruct | null;
static getFullyQualifiedName(): string;
static startArrayTable(builder: flatbuffers.Builder): void;
static addA(builder: flatbuffers.Builder, aOffset: flatbuffers.Offset): void;
static addCUnderscore(builder: flatbuffers.Builder, cUnderscoreOffset: flatbuffers.Offset): void;
static endArrayTable(builder: flatbuffers.Builder): flatbuffers.Offset;
static finishArrayTableBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
static finishSizePrefixedArrayTableBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
unpack(): ArrayTableT;
unpackTo(_o: ArrayTableT): void;
}
export declare class ArrayTableT implements flatbuffers.IGeneratedObject {
a: string | Uint8Array | null;
cUnderscore: ArrayStructT | null;
constructor(a?: string | Uint8Array | null, cUnderscore?: ArrayStructT | null);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,75 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { ArrayStruct } from '../../my-game/example/array-struct.js';
export class ArrayTable {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsArrayTable(bb, obj) {
return (obj || new ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsArrayTable(bb, obj) {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static bufferHasIdentifier(bb) {
return bb.__has_identifier('RHUB');
}
a(optionalEncoding) {
const offset = this.bb.__offset(this.bb_pos, 4);
return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
}
cUnderscore(obj) {
const offset = this.bb.__offset(this.bb_pos, 6);
return offset ? (obj || new ArrayStruct()).__init(this.bb_pos + offset, this.bb) : null;
}
static getFullyQualifiedName() {
return 'MyGame.Example.ArrayTable';
}
static startArrayTable(builder) {
builder.startObject(2);
}
static addA(builder, aOffset) {
builder.addFieldOffset(0, aOffset, 0);
}
static addCUnderscore(builder, cUnderscoreOffset) {
builder.addFieldStruct(1, cUnderscoreOffset, 0);
}
static endArrayTable(builder) {
const offset = builder.endObject();
return offset;
}
static finishArrayTableBuffer(builder, offset) {
builder.finish(offset, 'RHUB');
}
static finishSizePrefixedArrayTableBuffer(builder, offset) {
builder.finish(offset, 'RHUB', true);
}
unpack() {
return new ArrayTableT(this.a(), (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null));
}
unpackTo(_o) {
_o.a = this.a();
_o.cUnderscore = (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null);
}
}
export class ArrayTableT {
constructor(a = null, cUnderscore = null) {
this.a = a;
this.cUnderscore = cUnderscore;
}
pack(builder) {
const a = (this.a !== null ? builder.createString(this.a) : 0);
ArrayTable.startArrayTable(builder);
ArrayTable.addA(builder, a);
ArrayTable.addCUnderscore(builder, (this.cUnderscore !== null ? this.cUnderscore.pack(builder) : 0));
return ArrayTable.endArrayTable(builder);
}
}
@@ -0,0 +1,104 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { ArrayStruct, ArrayStructT } from '../../my-game/example/array-struct.js';
export class ArrayTable implements flatbuffers.IUnpackableObject<ArrayTableT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):ArrayTable {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsArrayTable(bb:flatbuffers.ByteBuffer, obj?:ArrayTable):ArrayTable {
return (obj || new ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsArrayTable(bb:flatbuffers.ByteBuffer, obj?:ArrayTable):ArrayTable {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new ArrayTable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static bufferHasIdentifier(bb:flatbuffers.ByteBuffer):boolean {
return bb.__has_identifier('RHUB');
}
a():string|null
a(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
a(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 4);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}
cUnderscore(obj?:ArrayStruct):ArrayStruct|null {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? (obj || new ArrayStruct()).__init(this.bb_pos + offset, this.bb!) : null;
}
static getFullyQualifiedName():string {
return 'MyGame.Example.ArrayTable';
}
static startArrayTable(builder:flatbuffers.Builder) {
builder.startObject(2);
}
static addA(builder:flatbuffers.Builder, aOffset:flatbuffers.Offset) {
builder.addFieldOffset(0, aOffset, 0);
}
static addCUnderscore(builder:flatbuffers.Builder, cUnderscoreOffset:flatbuffers.Offset) {
builder.addFieldStruct(1, cUnderscoreOffset, 0);
}
static endArrayTable(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}
static finishArrayTableBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
builder.finish(offset, 'RHUB');
}
static finishSizePrefixedArrayTableBuffer(builder:flatbuffers.Builder, offset:flatbuffers.Offset) {
builder.finish(offset, 'RHUB', true);
}
unpack(): ArrayTableT {
return new ArrayTableT(
this.a(),
(this.cUnderscore() !== null ? this.cUnderscore()!.unpack() : null)
);
}
unpackTo(_o: ArrayTableT): void {
_o.a = this.a();
_o.cUnderscore = (this.cUnderscore() !== null ? this.cUnderscore()!.unpack() : null);
}
}
export class ArrayTableT implements flatbuffers.IGeneratedObject {
constructor(
public a: string|Uint8Array|null = null,
public cUnderscore: ArrayStructT|null = null
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
const a = (this.a !== null ? builder.createString(this.a!) : 0);
ArrayTable.startArrayTable(builder);
ArrayTable.addA(builder, a);
ArrayTable.addCUnderscore(builder, (this.cUnderscore !== null ? this.cUnderscore!.pack(builder) : 0));
return ArrayTable.endArrayTable(builder);
}
}
@@ -0,0 +1,23 @@
import * as flatbuffers from 'flatbuffers';
export declare class InnerStruct implements flatbuffers.IUnpackableObject<InnerStructT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): InnerStruct;
a(): number;
b(index: number): number | null;
c(): number;
dUnderscore(): bigint;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createInnerStruct(builder: flatbuffers.Builder, a: number, b: number[] | null, c: number, d_underscore: bigint): flatbuffers.Offset;
unpack(): InnerStructT;
unpackTo(_o: InnerStructT): void;
}
export declare class InnerStructT implements flatbuffers.IGeneratedObject {
a: number;
b: (number)[];
c: number;
dUnderscore: bigint;
constructor(a?: number, b?: (number)[], c?: number, dUnderscore?: bigint);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,61 @@
// automatically generated by the FlatBuffers compiler, do not modify
export class InnerStruct {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a() {
return this.bb.readFloat64(this.bb_pos);
}
b(index) {
return this.bb.readUint8(this.bb_pos + 8 + index);
}
c() {
return this.bb.readInt8(this.bb_pos + 21);
}
dUnderscore() {
return this.bb.readInt64(this.bb_pos + 24);
}
static getFullyQualifiedName() {
return 'MyGame.Example.InnerStruct';
}
static sizeOf() {
return 32;
}
static createInnerStruct(builder, a, b, c, d_underscore) {
builder.prep(8, 32);
builder.writeInt64(BigInt(d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((b?.[i] ?? 0));
}
builder.writeFloat64(a);
return builder.offset();
}
unpack() {
return new InnerStructT(this.a(), this.bb.createScalarList(this.b.bind(this), 13), this.c(), this.dUnderscore());
}
unpackTo(_o) {
_o.a = this.a();
_o.b = this.bb.createScalarList(this.b.bind(this), 13);
_o.c = this.c();
_o.dUnderscore = this.dUnderscore();
}
}
export class InnerStructT {
constructor(a = 0.0, b = [], c = 0, dUnderscore = BigInt('0')) {
this.a = a;
this.b = b;
this.c = c;
this.dUnderscore = dUnderscore;
}
pack(builder) {
return InnerStruct.createInnerStruct(builder, this.a, this.b, this.c, this.dUnderscore);
}
}
@@ -0,0 +1,93 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class InnerStruct implements flatbuffers.IUnpackableObject<InnerStructT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):InnerStruct {
this.bb_pos = i;
this.bb = bb;
return this;
}
a():number {
return this.bb!.readFloat64(this.bb_pos);
}
b(index: number):number|null {
return this.bb!.readUint8(this.bb_pos + 8 + index);
}
c():number {
return this.bb!.readInt8(this.bb_pos + 21);
}
dUnderscore():bigint {
return this.bb!.readInt64(this.bb_pos + 24);
}
static getFullyQualifiedName():string {
return 'MyGame.Example.InnerStruct';
}
static sizeOf():number {
return 32;
}
static createInnerStruct(builder:flatbuffers.Builder, a: number, b: number[]|null, c: number, d_underscore: bigint):flatbuffers.Offset {
builder.prep(8, 32);
builder.writeInt64(BigInt(d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((b?.[i] ?? 0));
}
builder.writeFloat64(a);
return builder.offset();
}
unpack(): InnerStructT {
return new InnerStructT(
this.a(),
this.bb!.createScalarList<number>(this.b.bind(this), 13),
this.c(),
this.dUnderscore()
);
}
unpackTo(_o: InnerStructT): void {
_o.a = this.a();
_o.b = this.bb!.createScalarList<number>(this.b.bind(this), 13);
_o.c = this.c();
_o.dUnderscore = this.dUnderscore();
}
}
export class InnerStructT implements flatbuffers.IGeneratedObject {
constructor(
public a: number = 0.0,
public b: (number)[] = [],
public c: number = 0,
public dUnderscore: bigint = BigInt('0')
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return InnerStruct.createInnerStruct(builder,
this.a,
this.b,
this.c,
this.dUnderscore
);
}
}
@@ -0,0 +1,27 @@
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 declare class NestedStruct implements flatbuffers.IUnpackableObject<NestedStructT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): NestedStruct;
a(index: number): number | null;
b(): TestEnum;
cUnderscore(index: number): TestEnum | null;
dOuter(index: number, obj?: OuterStruct): OuterStruct | null;
e(index: number): bigint | null;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createNestedStruct(builder: flatbuffers.Builder, a: number[] | null, b: TestEnum, c_underscore: number[] | null, d_outer: (any | OuterStructT)[] | null, e: bigint[] | null): flatbuffers.Offset;
unpack(): NestedStructT;
unpackTo(_o: NestedStructT): void;
}
export declare class NestedStructT implements flatbuffers.IGeneratedObject {
a: (number)[];
b: TestEnum;
cUnderscore: (TestEnum)[];
dOuter: (OuterStructT)[];
e: (bigint)[];
constructor(a?: (number)[], b?: TestEnum, cUnderscore?: (TestEnum)[], dOuter?: (OuterStructT)[], e?: (bigint)[]);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,80 @@
// automatically generated by the FlatBuffers compiler, do not modify
import { OuterStruct, OuterStructT } from '../../my-game/example/outer-struct.js';
import { TestEnum } from '../../my-game/example/test-enum.js';
export class NestedStruct {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a(index) {
return this.bb.readInt32(this.bb_pos + 0 + index * 4);
}
b() {
return this.bb.readInt8(this.bb_pos + 8);
}
cUnderscore(index) {
return this.bb.readInt8(this.bb_pos + 9 + index);
}
dOuter(index, obj) {
return (obj || new OuterStruct()).__init(this.bb_pos + 16 + index * 208, this.bb);
}
e(index) {
return this.bb.readInt64(this.bb_pos + 1056 + index * 8);
}
static getFullyQualifiedName() {
return 'MyGame.Example.NestedStruct';
}
static sizeOf() {
return 1072;
}
static createNestedStruct(builder, a, b, c_underscore, d_outer, e) {
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() {
return new NestedStructT(this.bb.createScalarList(this.a.bind(this), 2), this.b(), this.bb.createScalarList(this.cUnderscore.bind(this), 2), this.bb.createObjList(this.dOuter.bind(this), 5), this.bb.createScalarList(this.e.bind(this), 2));
}
unpackTo(_o) {
_o.a = this.bb.createScalarList(this.a.bind(this), 2);
_o.b = this.b();
_o.cUnderscore = this.bb.createScalarList(this.cUnderscore.bind(this), 2);
_o.dOuter = this.bb.createObjList(this.dOuter.bind(this), 5);
_o.e = this.bb.createScalarList(this.e.bind(this), 2);
}
}
export class NestedStructT {
constructor(a = [], b = TestEnum.A, cUnderscore = [TestEnum.A, TestEnum.A], dOuter = [], e = []) {
this.a = a;
this.b = b;
this.cUnderscore = cUnderscore;
this.dOuter = dOuter;
this.e = e;
}
pack(builder) {
return NestedStruct.createNestedStruct(builder, this.a, this.b, this.cUnderscore, this.dOuter, this.e);
}
}
@@ -0,0 +1,137 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
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
);
}
}
@@ -0,0 +1,28 @@
import * as flatbuffers from 'flatbuffers';
import { InnerStruct, InnerStructT } from '../../my-game/example/inner-struct.js';
export declare class OuterStruct implements flatbuffers.IUnpackableObject<OuterStructT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): OuterStruct;
a(): boolean;
b(): number;
cUnderscore(obj?: InnerStruct): InnerStruct | null;
d(index: number, obj?: InnerStruct): InnerStruct | null;
e(obj?: InnerStruct): InnerStruct | null;
f(index: number): number | null;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createOuterStruct(builder: flatbuffers.Builder, a: boolean, b: number, c_underscore_a: number, c_underscore_b: number[] | null, c_underscore_c: number, c_underscore_d_underscore: bigint, d: (any | InnerStructT)[] | null, e_a: number, e_b: number[] | null, e_c: number, e_d_underscore: bigint, f: number[] | null): flatbuffers.Offset;
unpack(): OuterStructT;
unpackTo(_o: OuterStructT): void;
}
export declare class OuterStructT implements flatbuffers.IGeneratedObject {
a: boolean;
b: number;
cUnderscore: InnerStructT | null;
d: (InnerStructT)[];
e: InnerStructT | null;
f: (number)[];
constructor(a?: boolean, b?: number, cUnderscore?: InnerStructT | null, d?: (InnerStructT)[], e?: InnerStructT | null, f?: (number)[]);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,95 @@
// automatically generated by the FlatBuffers compiler, do not modify
import { InnerStruct, InnerStructT } from '../../my-game/example/inner-struct.js';
export class OuterStruct {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a() {
return !!this.bb.readInt8(this.bb_pos);
}
b() {
return this.bb.readFloat64(this.bb_pos + 8);
}
cUnderscore(obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 16, this.bb);
}
d(index, obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 48 + index * 32, this.bb);
}
e(obj) {
return (obj || new InnerStruct()).__init(this.bb_pos + 144, this.bb);
}
f(index) {
return this.bb.readFloat64(this.bb_pos + 176 + index * 8);
}
static getFullyQualifiedName() {
return 'MyGame.Example.OuterStruct';
}
static sizeOf() {
return 208;
}
static createOuterStruct(builder, a, b, c_underscore_a, c_underscore_b, c_underscore_c, c_underscore_d_underscore, d, e_a, e_b, e_c, e_d_underscore, f) {
builder.prep(8, 208);
for (let i = 3; i >= 0; --i) {
builder.writeFloat64((f?.[i] ?? 0));
}
builder.prep(8, 32);
builder.writeInt64(BigInt(e_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(e_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((e_b?.[i] ?? 0));
}
builder.writeFloat64(e_a);
for (let i = 2; i >= 0; --i) {
const item = d?.[i];
if (item instanceof InnerStructT) {
item.pack(builder);
continue;
}
InnerStruct.createInnerStruct(builder, item?.a, item?.b, item?.c, item?.dUnderscore);
}
builder.prep(8, 32);
builder.writeInt64(BigInt(c_underscore_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c_underscore_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((c_underscore_b?.[i] ?? 0));
}
builder.writeFloat64(c_underscore_a);
builder.writeFloat64(b);
builder.pad(7);
builder.writeInt8(Number(Boolean(a)));
return builder.offset();
}
unpack() {
return new OuterStructT(this.a(), this.b(), (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null), this.bb.createObjList(this.d.bind(this), 3), (this.e() !== null ? this.e().unpack() : null), this.bb.createScalarList(this.f.bind(this), 4));
}
unpackTo(_o) {
_o.a = this.a();
_o.b = this.b();
_o.cUnderscore = (this.cUnderscore() !== null ? this.cUnderscore().unpack() : null);
_o.d = this.bb.createObjList(this.d.bind(this), 3);
_o.e = (this.e() !== null ? this.e().unpack() : null);
_o.f = this.bb.createScalarList(this.f.bind(this), 4);
}
}
export class OuterStructT {
constructor(a = false, b = 0.0, cUnderscore = null, d = [], e = null, f = []) {
this.a = a;
this.b = b;
this.cUnderscore = cUnderscore;
this.d = d;
this.e = e;
this.f = f;
}
pack(builder) {
return OuterStruct.createOuterStruct(builder, this.a, this.b, (this.cUnderscore?.a ?? 0), (this.cUnderscore?.b ?? []), (this.cUnderscore?.c ?? 0), (this.cUnderscore?.dUnderscore ?? BigInt(0)), this.d, (this.e?.a ?? 0), (this.e?.b ?? []), (this.e?.c ?? 0), (this.e?.dUnderscore ?? BigInt(0)), this.f);
}
}
@@ -0,0 +1,154 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { InnerStruct, InnerStructT } from '../../my-game/example/inner-struct.js';
export class OuterStruct implements flatbuffers.IUnpackableObject<OuterStructT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):OuterStruct {
this.bb_pos = i;
this.bb = bb;
return this;
}
a():boolean {
return !!this.bb!.readInt8(this.bb_pos);
}
b():number {
return this.bb!.readFloat64(this.bb_pos + 8);
}
cUnderscore(obj?:InnerStruct):InnerStruct|null {
return (obj || new InnerStruct()).__init(this.bb_pos + 16, this.bb!);
}
d(index: number, obj?:InnerStruct):InnerStruct|null {
return (obj || new InnerStruct()).__init(this.bb_pos + 48 + index * 32, this.bb!);
}
e(obj?:InnerStruct):InnerStruct|null {
return (obj || new InnerStruct()).__init(this.bb_pos + 144, this.bb!);
}
f(index: number):number|null {
return this.bb!.readFloat64(this.bb_pos + 176 + index * 8);
}
static getFullyQualifiedName():string {
return 'MyGame.Example.OuterStruct';
}
static sizeOf():number {
return 208;
}
static createOuterStruct(builder:flatbuffers.Builder, a: boolean, b: number, c_underscore_a: number, c_underscore_b: number[]|null, c_underscore_c: number, c_underscore_d_underscore: bigint, d: (any|InnerStructT)[]|null, e_a: number, e_b: number[]|null, e_c: number, e_d_underscore: bigint, f: number[]|null):flatbuffers.Offset {
builder.prep(8, 208);
for (let i = 3; i >= 0; --i) {
builder.writeFloat64((f?.[i] ?? 0));
}
builder.prep(8, 32);
builder.writeInt64(BigInt(e_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(e_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((e_b?.[i] ?? 0));
}
builder.writeFloat64(e_a);
for (let i = 2; i >= 0; --i) {
const item = d?.[i];
if (item instanceof InnerStructT) {
item.pack(builder);
continue;
}
InnerStruct.createInnerStruct(builder,
item?.a,
item?.b,
item?.c,
item?.dUnderscore
);
}
builder.prep(8, 32);
builder.writeInt64(BigInt(c_underscore_d_underscore ?? 0));
builder.pad(2);
builder.writeInt8(c_underscore_c);
for (let i = 12; i >= 0; --i) {
builder.writeInt8((c_underscore_b?.[i] ?? 0));
}
builder.writeFloat64(c_underscore_a);
builder.writeFloat64(b);
builder.pad(7);
builder.writeInt8(Number(Boolean(a)));
return builder.offset();
}
unpack(): OuterStructT {
return new OuterStructT(
this.a(),
this.b(),
(this.cUnderscore() !== null ? this.cUnderscore()!.unpack() : null),
this.bb!.createObjList<InnerStruct, InnerStructT>(this.d.bind(this), 3),
(this.e() !== null ? this.e()!.unpack() : null),
this.bb!.createScalarList<number>(this.f.bind(this), 4)
);
}
unpackTo(_o: OuterStructT): void {
_o.a = this.a();
_o.b = this.b();
_o.cUnderscore = (this.cUnderscore() !== null ? this.cUnderscore()!.unpack() : null);
_o.d = this.bb!.createObjList<InnerStruct, InnerStructT>(this.d.bind(this), 3);
_o.e = (this.e() !== null ? this.e()!.unpack() : null);
_o.f = this.bb!.createScalarList<number>(this.f.bind(this), 4);
}
}
export class OuterStructT implements flatbuffers.IGeneratedObject {
constructor(
public a: boolean = false,
public b: number = 0.0,
public cUnderscore: InnerStructT|null = null,
public d: (InnerStructT)[] = [],
public e: InnerStructT|null = null,
public f: (number)[] = []
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return OuterStruct.createOuterStruct(builder,
this.a,
this.b,
(this.cUnderscore?.a ?? 0),
(this.cUnderscore?.b ?? []),
(this.cUnderscore?.c ?? 0),
(this.cUnderscore?.dUnderscore ?? BigInt(0)),
this.d,
(this.e?.a ?? 0),
(this.e?.b ?? []),
(this.e?.c ?? 0),
(this.e?.dUnderscore ?? BigInt(0)),
this.f
);
}
}
@@ -0,0 +1,5 @@
export declare enum TestEnum {
A = 0,
B = 1,
C = 2
}
@@ -0,0 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export var TestEnum;
(function (TestEnum) {
TestEnum[TestEnum["A"] = 0] = "A";
TestEnum[TestEnum["B"] = 1] = "B";
TestEnum[TestEnum["C"] = 2] = "C";
})(TestEnum || (TestEnum = {}));
@@ -0,0 +1,9 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export enum TestEnum {
A = 0,
B = 1,
C = 2
}
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# This test makes sure that a separate repository can import the flatbuffers
# repository and use it in their JavaScript code.
# --- begin runfiles.bash initialization v3 ---
# Copy-pasted from the Bazel Bash runfiles library v3.
set -uo pipefail; set +e; f=bazel_tools/tools/bash/runfiles/runfiles.bash
source "${RUNFILES_DIR:-/dev/null}/$f" 2>/dev/null || \
source "$(grep -sm1 "^$f " "${RUNFILES_MANIFEST_FILE:-/dev/null}" | cut -f2- -d' ')" 2>/dev/null || \
source "$0.runfiles/$f" 2>/dev/null || \
source "$(grep -sm1 "^$f " "$0.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \
source "$(grep -sm1 "^$f " "$0.exe.runfiles_manifest" | cut -f2- -d' ')" 2>/dev/null || \
{ echo>&2 "ERROR: cannot find $f"; exit 1; }; f=; set -e
# --- end runfiles.bash initialization v3 ---
BAZEL_BIN="$(rlocation bazel_linux_x86_64/file/bazel)"
readonly BAZEL_BIN
if [[ ! -x "${BAZEL_BIN}" ]]; then
echo "Failed to find the bazel binary." >&2
exit 1
fi
export PATH="$(dirname "${BAZEL_BIN}"):${PATH}"
cd tests/ts/bazel_repository_test_dir/
bazel test //...
@@ -0,0 +1 @@
node_modules
@@ -0,0 +1 @@
build --symlink_prefix=/
@@ -0,0 +1 @@
bazel-*
+1
View File
@@ -0,0 +1 @@
../../../.npmrc
@@ -0,0 +1,32 @@
load("@aspect_rules_js//js:defs.bzl", "js_test")
load("@aspect_rules_js//npm:defs.bzl", "npm_link_package")
load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library")
load("@npm//:defs.bzl", "npm_link_all_packages")
npm_link_all_packages(name = "node_modules")
npm_link_package(
name = "node_modules/flatbuffers",
src = "@com_github_google_flatbuffers//ts:flatbuffers",
)
flatbuffer_ts_library(
name = "one_fbs",
srcs = ["one.fbs"],
)
flatbuffer_ts_library(
name = "two_fbs",
srcs = ["two.fbs"],
deps = [":one_fbs"],
)
js_test(
name = "import_test",
data = [
"package.json",
":node_modules/flatbuffers",
":two_fbs",
],
entry_point = "import_test.js",
)
@@ -0,0 +1,71 @@
workspace(name = "bazel_repository_test")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
local_repository(
name = "com_github_google_flatbuffers",
path = "../../../",
)
http_archive(
name = "aspect_rules_js",
sha256 = "124ed29fb0b3d0cba5b44f8f8e07897cf61b34e35e33b1f83d1a943dfd91b193",
strip_prefix = "rules_js-1.24.0",
url = "https://github.com/aspect-build/rules_js/releases/download/v1.24.0/rules_js-v1.24.0.tar.gz",
)
load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
rules_js_dependencies()
load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock", "pnpm_repository")
pnpm_repository(name = "pnpm")
http_archive(
name = "aspect_rules_ts",
sha256 = "8eb25d1fdafc0836f5778d33fb8eaac37c64176481d67872b54b0a05de5be5c0",
strip_prefix = "rules_ts-1.3.3",
url = "https://github.com/aspect-build/rules_ts/releases/download/v1.3.3/rules_ts-v1.3.3.tar.gz",
)
load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies")
rules_ts_dependencies(
# curl --silent https://registry.npmjs.org/typescript/5.0.3 | jq ._integrity
ts_integrity = "sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==",
ts_version = "5.0.3",
)
load("@rules_nodejs//nodejs:repositories.bzl", "DEFAULT_NODE_VERSION", "nodejs_register_toolchains")
nodejs_register_toolchains(
name = "nodejs",
node_version = DEFAULT_NODE_VERSION,
)
npm_translate_lock(
name = "npm",
npmrc = "//:.npmrc",
pnpm_lock = "//:pnpm-lock.yaml",
verify_node_modules_ignored = "//:.bazelignore",
)
load("@npm//:repositories.bzl", "npm_repositories")
npm_repositories()
http_archive(
name = "aspect_rules_esbuild",
sha256 = "2ea31bd97181a315e048be693ddc2815fddda0f3a12ca7b7cc6e91e80f31bac7",
strip_prefix = "rules_esbuild-0.14.4",
url = "https://github.com/aspect-build/rules_esbuild/releases/download/v0.14.4/rules_esbuild-v0.14.4.tar.gz",
)
# Register a toolchain containing esbuild npm package and native bindings
load("@aspect_rules_esbuild//esbuild:repositories.bzl", "LATEST_VERSION", "esbuild_register_toolchains")
esbuild_register_toolchains(
name = "esbuild",
esbuild_version = LATEST_VERSION,
)
@@ -0,0 +1,28 @@
import assert from 'assert'
import * as flatbuffers from 'flatbuffers'
import two_cjs from './two_generated.cjs'
const bazel_repository_test = two_cjs.bazel_repository_test;
function main() {
// Validate building a table with a table field.
var fbb = new flatbuffers.Builder(1);
bazel_repository_test.One.startOne(fbb);
bazel_repository_test.One.addInformation(fbb, 42);
var one = bazel_repository_test.One.endOne(fbb);
bazel_repository_test.Two.startTwo(fbb);
bazel_repository_test.Two.addOne(fbb, one);
var two = bazel_repository_test.Two.endTwo(fbb);
fbb.finish(two);
// Call as a sanity check. Would be better to validate actual output here.
fbb.asUint8Array();
console.log('FlatBuffers bazel repository test: completed successfully');
}
main();
@@ -0,0 +1,7 @@
namespace bazel_repository_test;
table One {
information:int;
}
root_type One;
@@ -0,0 +1,8 @@
{
"name": "bazel_repository_test",
"type": "module",
"private": true,
"devDependencies": {
"@types/node": "18.15.11"
}
}
@@ -0,0 +1,12 @@
lockfileVersion: '6.0'
devDependencies:
'@types/node':
specifier: 18.15.11
version: 18.15.11
packages:
/@types/node@18.15.11:
resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==}
dev: true
@@ -0,0 +1,9 @@
include 'one.fbs';
namespace bazel_repository_test;
table Two {
one:One;
}
root_type Two;
+1
View File
@@ -0,0 +1 @@
export { Abc } from './foobar/abc.js';
+3
View File
@@ -0,0 +1,3 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { Abc } from './foobar/abc.js';
+5
View File
@@ -0,0 +1,5 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { Abc } from './foobar/abc.js';
+3
View File
@@ -0,0 +1,3 @@
export declare enum Abc {
a = 0
}
+6
View File
@@ -0,0 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export var Abc;
(function (Abc) {
Abc[Abc["a"] = 0] = "a";
})(Abc || (Abc = {}));
+7
View File
@@ -0,0 +1,7 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export enum Abc {
a = 0
}
+3
View File
@@ -0,0 +1,3 @@
export declare enum class_ {
arguments_ = 0
}
+6
View File
@@ -0,0 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export var class_;
(function (class_) {
class_[class_["arguments_"] = 0] = "arguments_";
})(class_ || (class_ = {}));
+7
View File
@@ -0,0 +1,7 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export enum class_ {
arguments_ = 0
}
+134
View File
@@ -0,0 +1,134 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { Abc } from '../foobar/abc.js';
import { class_ } from '../foobar/class.js';
export class Tab implements flatbuffers.IUnpackableObject<TabT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):Tab {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsTab(bb:flatbuffers.ByteBuffer, obj?:Tab):Tab {
return (obj || new Tab()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsTab(bb:flatbuffers.ByteBuffer, obj?:Tab):Tab {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new Tab()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
abc():Abc {
const offset = this.bb!.__offset(this.bb_pos, 4);
return offset ? this.bb!.readInt32(this.bb_pos + offset) : Abc.a;
}
mutate_abc(value:Abc):boolean {
const offset = this.bb!.__offset(this.bb_pos, 4);
if (offset === 0) {
return false;
}
this.bb!.writeInt32(this.bb_pos + offset, value);
return true;
}
arg():class_ {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? this.bb!.readInt32(this.bb_pos + offset) : class_.arguments_;
}
mutate_arg(value:class_):boolean {
const offset = this.bb!.__offset(this.bb_pos, 6);
if (offset === 0) {
return false;
}
this.bb!.writeInt32(this.bb_pos + offset, value);
return true;
}
name():string|null
name(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
name(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 8);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}
static getFullyQualifiedName():string {
return 'foobar.Tab';
}
static startTab(builder:flatbuffers.Builder) {
builder.startObject(3);
}
static addAbc(builder:flatbuffers.Builder, abc:Abc) {
builder.addFieldInt32(0, abc, Abc.a);
}
static addArg(builder:flatbuffers.Builder, arg:class_) {
builder.addFieldInt32(1, arg, class_.arguments_);
}
static addName(builder:flatbuffers.Builder, nameOffset:flatbuffers.Offset) {
builder.addFieldOffset(2, nameOffset, 0);
}
static endTab(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}
static createTab(builder:flatbuffers.Builder, abc:Abc, arg:class_, nameOffset:flatbuffers.Offset):flatbuffers.Offset {
Tab.startTab(builder);
Tab.addAbc(builder, abc);
Tab.addArg(builder, arg);
Tab.addName(builder, nameOffset);
return Tab.endTab(builder);
}
unpack(): TabT {
return new TabT(
this.abc(),
this.arg(),
this.name()
);
}
unpackTo(_o: TabT): void {
_o.abc = this.abc();
_o.arg = this.arg();
_o.name = this.name();
}
}
export class TabT implements flatbuffers.IGeneratedObject {
constructor(
public abc: Abc = Abc.a,
public arg: class_ = class_.arguments_,
public name: string|Uint8Array|null = null
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
const name = (this.name !== null ? builder.createString(this.name!) : 0);
return Tab.createTab(builder,
this.abc,
this.arg,
name
);
}
}
+2
View File
@@ -0,0 +1,2 @@
export { TableA, TableAT } from './table-a.js';
export * as MyGame from './my-game.js';
+4
View File
@@ -0,0 +1,4 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { TableA, TableAT } from './table-a.js';
export * as MyGame from './my-game.js';
+6
View File
@@ -0,0 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { TableA, TableAT } from './table-a.js';
export * as MyGame from './my-game.js';
File diff suppressed because it is too large Load Diff
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
export { InParentNamespace, InParentNamespaceT } from './my-game/in-parent-namespace.js';
export * as Example from './my-game/example.js';
export * as Example2 from './my-game/example2.js';
export * as OtherNameSpace from './my-game/other-name-space.js';
+6
View File
@@ -0,0 +1,6 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { InParentNamespace, InParentNamespaceT } from './my-game/in-parent-namespace.js';
export * as Example from './my-game/example.js';
export * as Example2 from './my-game/example2.js';
export * as OtherNameSpace from './my-game/other-name-space.js';
+8
View File
@@ -0,0 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { InParentNamespace, InParentNamespaceT } from './my-game/in-parent-namespace.js';
export * as Example from './my-game/example.js';
export * as Example2 from './my-game/example2.js';
export * as OtherNameSpace from './my-game/other-name-space.js';
+16
View File
@@ -0,0 +1,16 @@
export { Ability, AbilityT } from './example/ability.js';
export { Any } from './example/any.js';
export { AnyAmbiguousAliases } from './example/any-ambiguous-aliases.js';
export { AnyUniqueAliases } from './example/any-unique-aliases.js';
export { Color } from './example/color.js';
export { LongEnum } from './example/long-enum.js';
export { Monster, MonsterT } from './example/monster.js';
export { Race } from './example/race.js';
export { Referrable, ReferrableT } from './example/referrable.js';
export { Stat, StatT } from './example/stat.js';
export { StructOfStructs, StructOfStructsT } from './example/struct-of-structs.js';
export { StructOfStructsOfStructs, StructOfStructsOfStructsT } from './example/struct-of-structs-of-structs.js';
export { Test, TestT } from './example/test.js';
export { TestSimpleTableWithEnum, TestSimpleTableWithEnumT } from './example/test-simple-table-with-enum.js';
export { TypeAliases, TypeAliasesT } from './example/type-aliases.js';
export { Vec3, Vec3T } from './example/vec3.js';
+18
View File
@@ -0,0 +1,18 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { Ability, AbilityT } from './example/ability.js';
export { Any } from './example/any.js';
export { AnyAmbiguousAliases } from './example/any-ambiguous-aliases.js';
export { AnyUniqueAliases } from './example/any-unique-aliases.js';
export { Color } from './example/color.js';
export { LongEnum } from './example/long-enum.js';
export { Monster, MonsterT } from './example/monster.js';
export { Race } from './example/race.js';
export { Referrable, ReferrableT } from './example/referrable.js';
export { Stat, StatT } from './example/stat.js';
export { StructOfStructs, StructOfStructsT } from './example/struct-of-structs.js';
export { StructOfStructsOfStructs, StructOfStructsOfStructsT } from './example/struct-of-structs-of-structs.js';
export { Test, TestT } from './example/test.js';
export { TestSimpleTableWithEnum, TestSimpleTableWithEnumT } from './example/test-simple-table-with-enum.js';
export { TypeAliases, TypeAliasesT } from './example/type-aliases.js';
export { Vec3, Vec3T } from './example/vec3.js';
+20
View File
@@ -0,0 +1,20 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export { Ability, AbilityT } from './example/ability.js';
export { Any } from './example/any.js';
export { AnyAmbiguousAliases } from './example/any-ambiguous-aliases.js';
export { AnyUniqueAliases } from './example/any-unique-aliases.js';
export { Color } from './example/color.js';
export { LongEnum } from './example/long-enum.js';
export { Monster, MonsterT } from './example/monster.js';
export { Race } from './example/race.js';
export { Referrable, ReferrableT } from './example/referrable.js';
export { Stat, StatT } from './example/stat.js';
export { StructOfStructs, StructOfStructsT } from './example/struct-of-structs.js';
export { StructOfStructsOfStructs, StructOfStructsOfStructsT } from './example/struct-of-structs-of-structs.js';
export { Test, TestT } from './example/test.js';
export { TestSimpleTableWithEnum, TestSimpleTableWithEnumT } from './example/test-simple-table-with-enum.js';
export { TypeAliases, TypeAliasesT } from './example/type-aliases.js';
export { Vec3, Vec3T } from './example/vec3.js';
@@ -0,0 +1,21 @@
import * as flatbuffers from 'flatbuffers';
export declare class Ability implements flatbuffers.IUnpackableObject<AbilityT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): Ability;
id(): number;
mutate_id(value: number): boolean;
distance(): number;
mutate_distance(value: number): boolean;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createAbility(builder: flatbuffers.Builder, id: number, distance: number): flatbuffers.Offset;
unpack(): AbilityT;
unpackTo(_o: AbilityT): void;
}
export declare class AbilityT implements flatbuffers.IGeneratedObject {
id: number;
distance: number;
constructor(id?: number, distance?: number);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,54 @@
// automatically generated by the FlatBuffers compiler, do not modify
export class Ability {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
id() {
return this.bb.readUint32(this.bb_pos);
}
mutate_id(value) {
this.bb.writeUint32(this.bb_pos + 0, value);
return true;
}
distance() {
return this.bb.readUint32(this.bb_pos + 4);
}
mutate_distance(value) {
this.bb.writeUint32(this.bb_pos + 4, value);
return true;
}
static getFullyQualifiedName() {
return 'MyGame.Example.Ability';
}
static sizeOf() {
return 8;
}
static createAbility(builder, id, distance) {
builder.prep(4, 8);
builder.writeInt32(distance);
builder.writeInt32(id);
return builder.offset();
}
unpack() {
return new AbilityT(this.id(), this.distance());
}
unpackTo(_o) {
_o.id = this.id();
_o.distance = this.distance();
}
}
export class AbilityT {
constructor(id = 0, distance = 0) {
this.id = id;
this.distance = distance;
}
pack(builder) {
return Ability.createAbility(builder, this.id, this.distance);
}
}
@@ -0,0 +1,79 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Ability implements flatbuffers.IUnpackableObject<AbilityT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):Ability {
this.bb_pos = i;
this.bb = bb;
return this;
}
id():number {
return this.bb!.readUint32(this.bb_pos);
}
mutate_id(value:number):boolean {
this.bb!.writeUint32(this.bb_pos + 0, value);
return true;
}
distance():number {
return this.bb!.readUint32(this.bb_pos + 4);
}
mutate_distance(value:number):boolean {
this.bb!.writeUint32(this.bb_pos + 4, value);
return true;
}
static getFullyQualifiedName():string {
return 'MyGame.Example.Ability';
}
static sizeOf():number {
return 8;
}
static createAbility(builder:flatbuffers.Builder, id: number, distance: number):flatbuffers.Offset {
builder.prep(4, 8);
builder.writeInt32(distance);
builder.writeInt32(id);
return builder.offset();
}
unpack(): AbilityT {
return new AbilityT(
this.id(),
this.distance()
);
}
unpackTo(_o: AbilityT): void {
_o.id = this.id();
_o.distance = this.distance();
}
}
export class AbilityT implements flatbuffers.IGeneratedObject {
constructor(
public id: number = 0,
public distance: number = 0
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return Ability.createAbility(builder,
this.id,
this.distance
);
}
}
@@ -0,0 +1,9 @@
import { Monster } from '../../my-game/example/monster.js';
export declare enum AnyAmbiguousAliases {
NONE = 0,
M1 = 1,
M2 = 2,
M3 = 3
}
export declare function unionToAnyAmbiguousAliases(type: AnyAmbiguousAliases, accessor: (obj: Monster) => Monster | null): Monster | null;
export declare function unionListToAnyAmbiguousAliases(type: AnyAmbiguousAliases, accessor: (index: number, obj: Monster) => Monster | null, index: number): Monster | null;
@@ -0,0 +1,28 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster } from '../../my-game/example/monster.js';
export var AnyAmbiguousAliases;
(function (AnyAmbiguousAliases) {
AnyAmbiguousAliases[AnyAmbiguousAliases["NONE"] = 0] = "NONE";
AnyAmbiguousAliases[AnyAmbiguousAliases["M1"] = 1] = "M1";
AnyAmbiguousAliases[AnyAmbiguousAliases["M2"] = 2] = "M2";
AnyAmbiguousAliases[AnyAmbiguousAliases["M3"] = 3] = "M3";
})(AnyAmbiguousAliases || (AnyAmbiguousAliases = {}));
export function unionToAnyAmbiguousAliases(type, accessor) {
switch (AnyAmbiguousAliases[type]) {
case 'NONE': return null;
case 'M1': return accessor(new Monster());
case 'M2': return accessor(new Monster());
case 'M3': return accessor(new Monster());
default: return null;
}
}
export function unionListToAnyAmbiguousAliases(type, accessor, index) {
switch (AnyAmbiguousAliases[type]) {
case 'NONE': return null;
case 'M1': return accessor(index, new Monster());
case 'M2': return accessor(index, new Monster());
case 'M3': return accessor(index, new Monster());
default: return null;
}
}
@@ -0,0 +1,40 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster, MonsterT } from '../../my-game/example/monster.js';
export enum AnyAmbiguousAliases {
NONE = 0,
M1 = 1,
M2 = 2,
M3 = 3
}
export function unionToAnyAmbiguousAliases(
type: AnyAmbiguousAliases,
accessor: (obj:Monster) => Monster|null
): Monster|null {
switch(AnyAmbiguousAliases[type]) {
case 'NONE': return null;
case 'M1': return accessor(new Monster())! as Monster;
case 'M2': return accessor(new Monster())! as Monster;
case 'M3': return accessor(new Monster())! as Monster;
default: return null;
}
}
export function unionListToAnyAmbiguousAliases(
type: AnyAmbiguousAliases,
accessor: (index: number, obj:Monster) => Monster|null,
index: number
): Monster|null {
switch(AnyAmbiguousAliases[type]) {
case 'NONE': return null;
case 'M1': return accessor(index, new Monster())! as Monster;
case 'M2': return accessor(index, new Monster())! as Monster;
case 'M3': return accessor(index, new Monster())! as Monster;
default: return null;
}
}
@@ -0,0 +1,11 @@
import { Monster as MyGame_Example2_Monster } from '../../my-game/example2/monster.js';
import { Monster } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum } from '../../my-game/example/test-simple-table-with-enum.js';
export declare enum AnyUniqueAliases {
NONE = 0,
M = 1,
TS = 2,
M2 = 3
}
export declare function unionToAnyUniqueAliases(type: AnyUniqueAliases, accessor: (obj: Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum) => Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null): Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null;
export declare function unionListToAnyUniqueAliases(type: AnyUniqueAliases, accessor: (index: number, obj: Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum) => Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null, index: number): Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null;
@@ -0,0 +1,30 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster as MyGame_Example2_Monster } from '../../my-game/example2/monster.js';
import { Monster } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum } from '../../my-game/example/test-simple-table-with-enum.js';
export var AnyUniqueAliases;
(function (AnyUniqueAliases) {
AnyUniqueAliases[AnyUniqueAliases["NONE"] = 0] = "NONE";
AnyUniqueAliases[AnyUniqueAliases["M"] = 1] = "M";
AnyUniqueAliases[AnyUniqueAliases["TS"] = 2] = "TS";
AnyUniqueAliases[AnyUniqueAliases["M2"] = 3] = "M2";
})(AnyUniqueAliases || (AnyUniqueAliases = {}));
export function unionToAnyUniqueAliases(type, accessor) {
switch (AnyUniqueAliases[type]) {
case 'NONE': return null;
case 'M': return accessor(new Monster());
case 'TS': return accessor(new TestSimpleTableWithEnum());
case 'M2': return accessor(new MyGame_Example2_Monster());
default: return null;
}
}
export function unionListToAnyUniqueAliases(type, accessor, index) {
switch (AnyUniqueAliases[type]) {
case 'NONE': return null;
case 'M': return accessor(index, new Monster());
case 'TS': return accessor(index, new TestSimpleTableWithEnum());
case 'M2': return accessor(index, new MyGame_Example2_Monster());
default: return null;
}
}
@@ -0,0 +1,42 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster as MyGame_Example2_Monster, MonsterT as MyGame_Example2_MonsterT } from '../../my-game/example2/monster.js';
import { Monster, MonsterT } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum, TestSimpleTableWithEnumT } from '../../my-game/example/test-simple-table-with-enum.js';
export enum AnyUniqueAliases {
NONE = 0,
M = 1,
TS = 2,
M2 = 3
}
export function unionToAnyUniqueAliases(
type: AnyUniqueAliases,
accessor: (obj:Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum) => Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null
): Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null {
switch(AnyUniqueAliases[type]) {
case 'NONE': return null;
case 'M': return accessor(new Monster())! as Monster;
case 'TS': return accessor(new TestSimpleTableWithEnum())! as TestSimpleTableWithEnum;
case 'M2': return accessor(new MyGame_Example2_Monster())! as MyGame_Example2_Monster;
default: return null;
}
}
export function unionListToAnyUniqueAliases(
type: AnyUniqueAliases,
accessor: (index: number, obj:Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum) => Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null,
index: number
): Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null {
switch(AnyUniqueAliases[type]) {
case 'NONE': return null;
case 'M': return accessor(index, new Monster())! as Monster;
case 'TS': return accessor(index, new TestSimpleTableWithEnum())! as TestSimpleTableWithEnum;
case 'M2': return accessor(index, new MyGame_Example2_Monster())! as MyGame_Example2_Monster;
default: return null;
}
}
@@ -0,0 +1,11 @@
import { Monster as MyGame_Example2_Monster } from '../../my-game/example2/monster.js';
import { Monster } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum } from '../../my-game/example/test-simple-table-with-enum.js';
export declare enum Any {
NONE = 0,
Monster = 1,
TestSimpleTableWithEnum = 2,
MyGame_Example2_Monster = 3
}
export declare function unionToAny(type: Any, accessor: (obj: Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum) => Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null): Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null;
export declare function unionListToAny(type: Any, accessor: (index: number, obj: Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum) => Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null, index: number): Monster | MyGame_Example2_Monster | TestSimpleTableWithEnum | null;
+30
View File
@@ -0,0 +1,30 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster as MyGame_Example2_Monster } from '../../my-game/example2/monster.js';
import { Monster } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum } from '../../my-game/example/test-simple-table-with-enum.js';
export var Any;
(function (Any) {
Any[Any["NONE"] = 0] = "NONE";
Any[Any["Monster"] = 1] = "Monster";
Any[Any["TestSimpleTableWithEnum"] = 2] = "TestSimpleTableWithEnum";
Any[Any["MyGame_Example2_Monster"] = 3] = "MyGame_Example2_Monster";
})(Any || (Any = {}));
export function unionToAny(type, accessor) {
switch (Any[type]) {
case 'NONE': return null;
case 'Monster': return accessor(new Monster());
case 'TestSimpleTableWithEnum': return accessor(new TestSimpleTableWithEnum());
case 'MyGame_Example2_Monster': return accessor(new MyGame_Example2_Monster());
default: return null;
}
}
export function unionListToAny(type, accessor, index) {
switch (Any[type]) {
case 'NONE': return null;
case 'Monster': return accessor(index, new Monster());
case 'TestSimpleTableWithEnum': return accessor(index, new TestSimpleTableWithEnum());
case 'MyGame_Example2_Monster': return accessor(index, new MyGame_Example2_Monster());
default: return null;
}
}
+42
View File
@@ -0,0 +1,42 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import { Monster as MyGame_Example2_Monster, MonsterT as MyGame_Example2_MonsterT } from '../../my-game/example2/monster.js';
import { Monster, MonsterT } from '../../my-game/example/monster.js';
import { TestSimpleTableWithEnum, TestSimpleTableWithEnumT } from '../../my-game/example/test-simple-table-with-enum.js';
export enum Any {
NONE = 0,
Monster = 1,
TestSimpleTableWithEnum = 2,
MyGame_Example2_Monster = 3
}
export function unionToAny(
type: Any,
accessor: (obj:Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum) => Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null
): Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null {
switch(Any[type]) {
case 'NONE': return null;
case 'Monster': return accessor(new Monster())! as Monster;
case 'TestSimpleTableWithEnum': return accessor(new TestSimpleTableWithEnum())! as TestSimpleTableWithEnum;
case 'MyGame_Example2_Monster': return accessor(new MyGame_Example2_Monster())! as MyGame_Example2_Monster;
default: return null;
}
}
export function unionListToAny(
type: Any,
accessor: (index: number, obj:Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum) => Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null,
index: number
): Monster|MyGame_Example2_Monster|TestSimpleTableWithEnum|null {
switch(Any[type]) {
case 'NONE': return null;
case 'Monster': return accessor(index, new Monster())! as Monster;
case 'TestSimpleTableWithEnum': return accessor(index, new TestSimpleTableWithEnum())! as TestSimpleTableWithEnum;
case 'MyGame_Example2_Monster': return accessor(index, new MyGame_Example2_Monster())! as MyGame_Example2_Monster;
default: return null;
}
}
@@ -0,0 +1,15 @@
/**
* Composite components of Monster color.
*/
export declare enum Color {
Red = 1,
/**
* \brief color Green
* Green is bit_flag with value (1u << 1)
*/
Green = 2,
/**
* \brief color Blue (1u << 3)
*/
Blue = 8
}
@@ -0,0 +1,18 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
/**
* Composite components of Monster color.
*/
export var Color;
(function (Color) {
Color[Color["Red"] = 1] = "Red";
/**
* \brief color Green
* Green is bit_flag with value (1u << 1)
*/
Color[Color["Green"] = 2] = "Green";
/**
* \brief color Blue (1u << 3)
*/
Color[Color["Blue"] = 8] = "Blue";
})(Color || (Color = {}));
@@ -0,0 +1,21 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
/**
* Composite components of Monster color.
*/
export enum Color {
Red = 1,
/**
* \brief color Green
* Green is bit_flag with value (1u << 1)
*/
Green = 2,
/**
* \brief color Blue (1u << 3)
*/
Blue = 8
}
@@ -0,0 +1,5 @@
export declare enum LongEnum {
LongOne = "2",
LongTwo = "4",
LongBig = "1099511627776"
}
@@ -0,0 +1,8 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export var LongEnum;
(function (LongEnum) {
LongEnum["LongOne"] = "2";
LongEnum["LongTwo"] = "4";
LongEnum["LongBig"] = "1099511627776";
})(LongEnum || (LongEnum = {}));
@@ -0,0 +1,9 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export enum LongEnum {
LongOne = '2',
LongTwo = '4',
LongBig = '1099511627776'
}
@@ -0,0 +1,325 @@
import * as flatbuffers from 'flatbuffers';
import { MonsterT as MyGame_Example2_MonsterT } from '../../my-game/example2/monster.js';
import { Ability, AbilityT } from '../../my-game/example/ability.js';
import { Any } from '../../my-game/example/any.js';
import { AnyAmbiguousAliases } from '../../my-game/example/any-ambiguous-aliases.js';
import { AnyUniqueAliases } from '../../my-game/example/any-unique-aliases.js';
import { Color } from '../../my-game/example/color.js';
import { Race } from '../../my-game/example/race.js';
import { Referrable, ReferrableT } from '../../my-game/example/referrable.js';
import { Stat, StatT } from '../../my-game/example/stat.js';
import { Test, TestT } from '../../my-game/example/test.js';
import { TestSimpleTableWithEnumT } from '../../my-game/example/test-simple-table-with-enum.js';
import { Vec3, Vec3T } from '../../my-game/example/vec3.js';
import { InParentNamespace, InParentNamespaceT } from '../../my-game/in-parent-namespace.js';
/**
* an example documentation comment: "monster object"
*/
export declare class Monster implements flatbuffers.IUnpackableObject<MonsterT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): Monster;
static getRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster): Monster;
static getSizePrefixedRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster): Monster;
static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean;
pos(obj?: Vec3): Vec3 | null;
mana(): number;
mutate_mana(value: number): boolean;
hp(): number;
mutate_hp(value: number): boolean;
name(): string | null;
name(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
inventory(index: number): number | null;
inventoryLength(): number;
inventoryArray(): Uint8Array | null;
color(): Color;
mutate_color(value: Color): boolean;
testType(): Any;
test<T extends flatbuffers.Table>(obj: any): any | null;
test4(index: number, obj?: Test): Test | null;
test4Length(): number;
testarrayofstring(index: number): string;
testarrayofstring(index: number, optionalEncoding: flatbuffers.Encoding): string | Uint8Array;
testarrayofstringLength(): number;
/**
* an example documentation comment: this will end up in the generated code
* multiline too
*/
testarrayoftables(index: number, obj?: Monster): Monster | null;
testarrayoftablesLength(): number;
enemy(obj?: Monster): Monster | null;
testnestedflatbuffer(index: number): number | null;
testnestedflatbufferLength(): number;
testnestedflatbufferArray(): Uint8Array | null;
testempty(obj?: Stat): Stat | null;
testbool(): boolean;
mutate_testbool(value: boolean): boolean;
testhashs32Fnv1(): number;
mutate_testhashs32_fnv1(value: number): boolean;
testhashu32Fnv1(): number;
mutate_testhashu32_fnv1(value: number): boolean;
testhashs64Fnv1(): bigint;
mutate_testhashs64_fnv1(value: bigint): boolean;
testhashu64Fnv1(): bigint;
mutate_testhashu64_fnv1(value: bigint): boolean;
testhashs32Fnv1a(): number;
mutate_testhashs32_fnv1a(value: number): boolean;
testhashu32Fnv1a(): number;
mutate_testhashu32_fnv1a(value: number): boolean;
testhashs64Fnv1a(): bigint;
mutate_testhashs64_fnv1a(value: bigint): boolean;
testhashu64Fnv1a(): bigint;
mutate_testhashu64_fnv1a(value: bigint): boolean;
testarrayofbools(index: number): boolean | null;
testarrayofboolsLength(): number;
testarrayofboolsArray(): Int8Array | null;
testf(): number;
mutate_testf(value: number): boolean;
testf2(): number;
mutate_testf2(value: number): boolean;
testf3(): number;
mutate_testf3(value: number): boolean;
testarrayofstring2(index: number): string;
testarrayofstring2(index: number, optionalEncoding: flatbuffers.Encoding): string | Uint8Array;
testarrayofstring2Length(): number;
testarrayofsortedstruct(index: number, obj?: Ability): Ability | null;
testarrayofsortedstructLength(): number;
flex(index: number): number | null;
flexLength(): number;
flexArray(): Uint8Array | null;
test5(index: number, obj?: Test): Test | null;
test5Length(): number;
vectorOfLongs(index: number): bigint | null;
vectorOfLongsLength(): number;
vectorOfDoubles(index: number): number | null;
vectorOfDoublesLength(): number;
vectorOfDoublesArray(): Float64Array | null;
parentNamespaceTest(obj?: InParentNamespace): InParentNamespace | null;
vectorOfReferrables(index: number, obj?: Referrable): Referrable | null;
vectorOfReferrablesLength(): number;
singleWeakReference(): bigint;
mutate_single_weak_reference(value: bigint): boolean;
vectorOfWeakReferences(index: number): bigint | null;
vectorOfWeakReferencesLength(): number;
vectorOfStrongReferrables(index: number, obj?: Referrable): Referrable | null;
vectorOfStrongReferrablesLength(): number;
coOwningReference(): bigint;
mutate_co_owning_reference(value: bigint): boolean;
vectorOfCoOwningReferences(index: number): bigint | null;
vectorOfCoOwningReferencesLength(): number;
nonOwningReference(): bigint;
mutate_non_owning_reference(value: bigint): boolean;
vectorOfNonOwningReferences(index: number): bigint | null;
vectorOfNonOwningReferencesLength(): number;
anyUniqueType(): AnyUniqueAliases;
anyUnique<T extends flatbuffers.Table>(obj: any): any | null;
anyAmbiguousType(): AnyAmbiguousAliases;
anyAmbiguous<T extends flatbuffers.Table>(obj: any): any | null;
vectorOfEnums(index: number): Color | null;
vectorOfEnumsLength(): number;
vectorOfEnumsArray(): Uint8Array | null;
signedEnum(): Race;
mutate_signed_enum(value: Race): boolean;
testrequirednestedflatbuffer(index: number): number | null;
testrequirednestedflatbufferLength(): number;
testrequirednestedflatbufferArray(): Uint8Array | null;
scalarKeySortedTables(index: number, obj?: Stat): Stat | null;
scalarKeySortedTablesLength(): number;
nativeInline(obj?: Test): Test | null;
longEnumNonEnumDefault(): bigint;
mutate_long_enum_non_enum_default(value: bigint): boolean;
longEnumNormalDefault(): bigint;
mutate_long_enum_normal_default(value: bigint): boolean;
nanDefault(): number;
mutate_nan_default(value: number): boolean;
infDefault(): number;
mutate_inf_default(value: number): boolean;
positiveInfDefault(): number;
mutate_positive_inf_default(value: number): boolean;
infinityDefault(): number;
mutate_infinity_default(value: number): boolean;
positiveInfinityDefault(): number;
mutate_positive_infinity_default(value: number): boolean;
negativeInfDefault(): number;
mutate_negative_inf_default(value: number): boolean;
negativeInfinityDefault(): number;
mutate_negative_infinity_default(value: number): boolean;
doubleInfDefault(): number;
mutate_double_inf_default(value: number): boolean;
static getFullyQualifiedName(): string;
static startMonster(builder: flatbuffers.Builder): void;
static addPos(builder: flatbuffers.Builder, posOffset: flatbuffers.Offset): void;
static addMana(builder: flatbuffers.Builder, mana: number): void;
static addHp(builder: flatbuffers.Builder, hp: number): void;
static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset): void;
static addInventory(builder: flatbuffers.Builder, inventoryOffset: flatbuffers.Offset): void;
static createInventoryVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
static startInventoryVector(builder: flatbuffers.Builder, numElems: number): void;
static addColor(builder: flatbuffers.Builder, color: Color): void;
static addTestType(builder: flatbuffers.Builder, testType: Any): void;
static addTest(builder: flatbuffers.Builder, testOffset: flatbuffers.Offset): void;
static addTest4(builder: flatbuffers.Builder, test4Offset: flatbuffers.Offset): void;
static startTest4Vector(builder: flatbuffers.Builder, numElems: number): void;
static addTestarrayofstring(builder: flatbuffers.Builder, testarrayofstringOffset: flatbuffers.Offset): void;
static createTestarrayofstringVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startTestarrayofstringVector(builder: flatbuffers.Builder, numElems: number): void;
static addTestarrayoftables(builder: flatbuffers.Builder, testarrayoftablesOffset: flatbuffers.Offset): void;
static createTestarrayoftablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startTestarrayoftablesVector(builder: flatbuffers.Builder, numElems: number): void;
static addEnemy(builder: flatbuffers.Builder, enemyOffset: flatbuffers.Offset): void;
static addTestnestedflatbuffer(builder: flatbuffers.Builder, testnestedflatbufferOffset: flatbuffers.Offset): void;
static createTestnestedflatbufferVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
static startTestnestedflatbufferVector(builder: flatbuffers.Builder, numElems: number): void;
static addTestempty(builder: flatbuffers.Builder, testemptyOffset: flatbuffers.Offset): void;
static addTestbool(builder: flatbuffers.Builder, testbool: boolean): void;
static addTesthashs32Fnv1(builder: flatbuffers.Builder, testhashs32Fnv1: number): void;
static addTesthashu32Fnv1(builder: flatbuffers.Builder, testhashu32Fnv1: number): void;
static addTesthashs64Fnv1(builder: flatbuffers.Builder, testhashs64Fnv1: bigint): void;
static addTesthashu64Fnv1(builder: flatbuffers.Builder, testhashu64Fnv1: bigint): void;
static addTesthashs32Fnv1a(builder: flatbuffers.Builder, testhashs32Fnv1a: number): void;
static addTesthashu32Fnv1a(builder: flatbuffers.Builder, testhashu32Fnv1a: number): void;
static addTesthashs64Fnv1a(builder: flatbuffers.Builder, testhashs64Fnv1a: bigint): void;
static addTesthashu64Fnv1a(builder: flatbuffers.Builder, testhashu64Fnv1a: bigint): void;
static addTestarrayofbools(builder: flatbuffers.Builder, testarrayofboolsOffset: flatbuffers.Offset): void;
static createTestarrayofboolsVector(builder: flatbuffers.Builder, data: boolean[]): flatbuffers.Offset;
static startTestarrayofboolsVector(builder: flatbuffers.Builder, numElems: number): void;
static addTestf(builder: flatbuffers.Builder, testf: number): void;
static addTestf2(builder: flatbuffers.Builder, testf2: number): void;
static addTestf3(builder: flatbuffers.Builder, testf3: number): void;
static addTestarrayofstring2(builder: flatbuffers.Builder, testarrayofstring2Offset: flatbuffers.Offset): void;
static createTestarrayofstring2Vector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startTestarrayofstring2Vector(builder: flatbuffers.Builder, numElems: number): void;
static addTestarrayofsortedstruct(builder: flatbuffers.Builder, testarrayofsortedstructOffset: flatbuffers.Offset): void;
static startTestarrayofsortedstructVector(builder: flatbuffers.Builder, numElems: number): void;
static addFlex(builder: flatbuffers.Builder, flexOffset: flatbuffers.Offset): void;
static createFlexVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
static startFlexVector(builder: flatbuffers.Builder, numElems: number): void;
static addTest5(builder: flatbuffers.Builder, test5Offset: flatbuffers.Offset): void;
static startTest5Vector(builder: flatbuffers.Builder, numElems: number): void;
static addVectorOfLongs(builder: flatbuffers.Builder, vectorOfLongsOffset: flatbuffers.Offset): void;
static createVectorOfLongsVector(builder: flatbuffers.Builder, data: bigint[]): flatbuffers.Offset;
static startVectorOfLongsVector(builder: flatbuffers.Builder, numElems: number): void;
static addVectorOfDoubles(builder: flatbuffers.Builder, vectorOfDoublesOffset: flatbuffers.Offset): void;
static createVectorOfDoublesVector(builder: flatbuffers.Builder, data: number[] | Float64Array): flatbuffers.Offset;
/**
* @deprecated This Uint8Array overload will be removed in the future.
*/
static createVectorOfDoublesVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
static startVectorOfDoublesVector(builder: flatbuffers.Builder, numElems: number): void;
static addParentNamespaceTest(builder: flatbuffers.Builder, parentNamespaceTestOffset: flatbuffers.Offset): void;
static addVectorOfReferrables(builder: flatbuffers.Builder, vectorOfReferrablesOffset: flatbuffers.Offset): void;
static createVectorOfReferrablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startVectorOfReferrablesVector(builder: flatbuffers.Builder, numElems: number): void;
static addSingleWeakReference(builder: flatbuffers.Builder, singleWeakReference: bigint): void;
static addVectorOfWeakReferences(builder: flatbuffers.Builder, vectorOfWeakReferencesOffset: flatbuffers.Offset): void;
static createVectorOfWeakReferencesVector(builder: flatbuffers.Builder, data: bigint[]): flatbuffers.Offset;
static startVectorOfWeakReferencesVector(builder: flatbuffers.Builder, numElems: number): void;
static addVectorOfStrongReferrables(builder: flatbuffers.Builder, vectorOfStrongReferrablesOffset: flatbuffers.Offset): void;
static createVectorOfStrongReferrablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startVectorOfStrongReferrablesVector(builder: flatbuffers.Builder, numElems: number): void;
static addCoOwningReference(builder: flatbuffers.Builder, coOwningReference: bigint): void;
static addVectorOfCoOwningReferences(builder: flatbuffers.Builder, vectorOfCoOwningReferencesOffset: flatbuffers.Offset): void;
static createVectorOfCoOwningReferencesVector(builder: flatbuffers.Builder, data: bigint[]): flatbuffers.Offset;
static startVectorOfCoOwningReferencesVector(builder: flatbuffers.Builder, numElems: number): void;
static addNonOwningReference(builder: flatbuffers.Builder, nonOwningReference: bigint): void;
static addVectorOfNonOwningReferences(builder: flatbuffers.Builder, vectorOfNonOwningReferencesOffset: flatbuffers.Offset): void;
static createVectorOfNonOwningReferencesVector(builder: flatbuffers.Builder, data: bigint[]): flatbuffers.Offset;
static startVectorOfNonOwningReferencesVector(builder: flatbuffers.Builder, numElems: number): void;
static addAnyUniqueType(builder: flatbuffers.Builder, anyUniqueType: AnyUniqueAliases): void;
static addAnyUnique(builder: flatbuffers.Builder, anyUniqueOffset: flatbuffers.Offset): void;
static addAnyAmbiguousType(builder: flatbuffers.Builder, anyAmbiguousType: AnyAmbiguousAliases): void;
static addAnyAmbiguous(builder: flatbuffers.Builder, anyAmbiguousOffset: flatbuffers.Offset): void;
static addVectorOfEnums(builder: flatbuffers.Builder, vectorOfEnumsOffset: flatbuffers.Offset): void;
static createVectorOfEnumsVector(builder: flatbuffers.Builder, data: Color[]): flatbuffers.Offset;
static startVectorOfEnumsVector(builder: flatbuffers.Builder, numElems: number): void;
static addSignedEnum(builder: flatbuffers.Builder, signedEnum: Race): void;
static addTestrequirednestedflatbuffer(builder: flatbuffers.Builder, testrequirednestedflatbufferOffset: flatbuffers.Offset): void;
static createTestrequirednestedflatbufferVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset;
static startTestrequirednestedflatbufferVector(builder: flatbuffers.Builder, numElems: number): void;
static addScalarKeySortedTables(builder: flatbuffers.Builder, scalarKeySortedTablesOffset: flatbuffers.Offset): void;
static createScalarKeySortedTablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset;
static startScalarKeySortedTablesVector(builder: flatbuffers.Builder, numElems: number): void;
static addNativeInline(builder: flatbuffers.Builder, nativeInlineOffset: flatbuffers.Offset): void;
static addLongEnumNonEnumDefault(builder: flatbuffers.Builder, longEnumNonEnumDefault: bigint): void;
static addLongEnumNormalDefault(builder: flatbuffers.Builder, longEnumNormalDefault: bigint): void;
static addNanDefault(builder: flatbuffers.Builder, nanDefault: number): void;
static addInfDefault(builder: flatbuffers.Builder, infDefault: number): void;
static addPositiveInfDefault(builder: flatbuffers.Builder, positiveInfDefault: number): void;
static addInfinityDefault(builder: flatbuffers.Builder, infinityDefault: number): void;
static addPositiveInfinityDefault(builder: flatbuffers.Builder, positiveInfinityDefault: number): void;
static addNegativeInfDefault(builder: flatbuffers.Builder, negativeInfDefault: number): void;
static addNegativeInfinityDefault(builder: flatbuffers.Builder, negativeInfinityDefault: number): void;
static addDoubleInfDefault(builder: flatbuffers.Builder, doubleInfDefault: number): void;
static endMonster(builder: flatbuffers.Builder): flatbuffers.Offset;
static finishMonsterBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
static finishSizePrefixedMonsterBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset): void;
serialize(): Uint8Array;
static deserialize(buffer: Uint8Array): Monster;
unpack(): MonsterT;
unpackTo(_o: MonsterT): void;
}
export declare class MonsterT implements flatbuffers.IGeneratedObject {
pos: Vec3T | null;
mana: number;
hp: number;
name: string | Uint8Array | null;
inventory: (number)[];
color: Color;
testType: Any;
test: MonsterT | MyGame_Example2_MonsterT | TestSimpleTableWithEnumT | null;
test4: (TestT)[];
testarrayofstring: (string)[];
testarrayoftables: (MonsterT)[];
enemy: MonsterT | null;
testnestedflatbuffer: (number)[];
testempty: StatT | null;
testbool: boolean;
testhashs32Fnv1: number;
testhashu32Fnv1: number;
testhashs64Fnv1: bigint;
testhashu64Fnv1: bigint;
testhashs32Fnv1a: number;
testhashu32Fnv1a: number;
testhashs64Fnv1a: bigint;
testhashu64Fnv1a: bigint;
testarrayofbools: (boolean)[];
testf: number;
testf2: number;
testf3: number;
testarrayofstring2: (string)[];
testarrayofsortedstruct: (AbilityT)[];
flex: (number)[];
test5: (TestT)[];
vectorOfLongs: (bigint)[];
vectorOfDoubles: (number)[];
parentNamespaceTest: InParentNamespaceT | null;
vectorOfReferrables: (ReferrableT)[];
singleWeakReference: bigint;
vectorOfWeakReferences: (bigint)[];
vectorOfStrongReferrables: (ReferrableT)[];
coOwningReference: bigint;
vectorOfCoOwningReferences: (bigint)[];
nonOwningReference: bigint;
vectorOfNonOwningReferences: (bigint)[];
anyUniqueType: AnyUniqueAliases;
anyUnique: MonsterT | MyGame_Example2_MonsterT | TestSimpleTableWithEnumT | null;
anyAmbiguousType: AnyAmbiguousAliases;
anyAmbiguous: MonsterT | null;
vectorOfEnums: (Color)[];
signedEnum: Race;
testrequirednestedflatbuffer: (number)[];
scalarKeySortedTables: (StatT)[];
nativeInline: TestT | null;
longEnumNonEnumDefault: bigint;
longEnumNormalDefault: bigint;
nanDefault: number;
infDefault: number;
positiveInfDefault: number;
infinityDefault: number;
positiveInfinityDefault: number;
negativeInfDefault: number;
negativeInfinityDefault: number;
doubleInfDefault: number;
constructor(pos?: Vec3T | null, mana?: number, hp?: number, name?: string | Uint8Array | null, inventory?: (number)[], color?: Color, testType?: Any, test?: MonsterT | MyGame_Example2_MonsterT | TestSimpleTableWithEnumT | null, test4?: (TestT)[], testarrayofstring?: (string)[], testarrayoftables?: (MonsterT)[], enemy?: MonsterT | null, testnestedflatbuffer?: (number)[], testempty?: StatT | null, testbool?: boolean, testhashs32Fnv1?: number, testhashu32Fnv1?: number, testhashs64Fnv1?: bigint, testhashu64Fnv1?: bigint, testhashs32Fnv1a?: number, testhashu32Fnv1a?: number, testhashs64Fnv1a?: bigint, testhashu64Fnv1a?: bigint, testarrayofbools?: (boolean)[], testf?: number, testf2?: number, testf3?: number, testarrayofstring2?: (string)[], testarrayofsortedstruct?: (AbilityT)[], flex?: (number)[], test5?: (TestT)[], vectorOfLongs?: (bigint)[], vectorOfDoubles?: (number)[], parentNamespaceTest?: InParentNamespaceT | null, vectorOfReferrables?: (ReferrableT)[], singleWeakReference?: bigint, vectorOfWeakReferences?: (bigint)[], vectorOfStrongReferrables?: (ReferrableT)[], coOwningReference?: bigint, vectorOfCoOwningReferences?: (bigint)[], nonOwningReference?: bigint, vectorOfNonOwningReferences?: (bigint)[], anyUniqueType?: AnyUniqueAliases, anyUnique?: MonsterT | MyGame_Example2_MonsterT | TestSimpleTableWithEnumT | null, anyAmbiguousType?: AnyAmbiguousAliases, anyAmbiguous?: MonsterT | null, vectorOfEnums?: (Color)[], signedEnum?: Race, testrequirednestedflatbuffer?: (number)[], scalarKeySortedTables?: (StatT)[], nativeInline?: TestT | null, longEnumNonEnumDefault?: bigint, longEnumNormalDefault?: bigint, nanDefault?: number, infDefault?: number, positiveInfDefault?: number, infinityDefault?: number, positiveInfinityDefault?: number, negativeInfDefault?: number, negativeInfinityDefault?: number, doubleInfDefault?: number);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,6 @@
export declare enum Race {
None = -1,
Human = 0,
Dwarf = 1,
Elf = 2
}
@@ -0,0 +1,9 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export var Race;
(function (Race) {
Race[Race["None"] = -1] = "None";
Race[Race["Human"] = 0] = "Human";
Race[Race["Dwarf"] = 1] = "Dwarf";
Race[Race["Elf"] = 2] = "Elf";
})(Race || (Race = {}));
@@ -0,0 +1,10 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
export enum Race {
None = -1,
Human = 0,
Dwarf = 1,
Elf = 2
}
@@ -0,0 +1,24 @@
import * as flatbuffers from 'flatbuffers';
export declare class Referrable implements flatbuffers.IUnpackableObject<ReferrableT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): Referrable;
static getRootAsReferrable(bb: flatbuffers.ByteBuffer, obj?: Referrable): Referrable;
static getSizePrefixedRootAsReferrable(bb: flatbuffers.ByteBuffer, obj?: Referrable): Referrable;
id(): bigint;
mutate_id(value: bigint): boolean;
static getFullyQualifiedName(): string;
static startReferrable(builder: flatbuffers.Builder): void;
static addId(builder: flatbuffers.Builder, id: bigint): void;
static endReferrable(builder: flatbuffers.Builder): flatbuffers.Offset;
static createReferrable(builder: flatbuffers.Builder, id: bigint): flatbuffers.Offset;
serialize(): Uint8Array;
static deserialize(buffer: Uint8Array): Referrable;
unpack(): ReferrableT;
unpackTo(_o: ReferrableT): void;
}
export declare class ReferrableT implements flatbuffers.IGeneratedObject {
id: bigint;
constructor(id?: bigint);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,71 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Referrable {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsReferrable(bb, obj) {
return (obj || new Referrable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsReferrable(bb, obj) {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new Referrable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
id() {
const offset = this.bb.__offset(this.bb_pos, 4);
return offset ? this.bb.readUint64(this.bb_pos + offset) : BigInt('0');
}
mutate_id(value) {
const offset = this.bb.__offset(this.bb_pos, 4);
if (offset === 0) {
return false;
}
this.bb.writeUint64(this.bb_pos + offset, value);
return true;
}
static getFullyQualifiedName() {
return 'MyGame.Example.Referrable';
}
static startReferrable(builder) {
builder.startObject(1);
}
static addId(builder, id) {
builder.addFieldInt64(0, id, BigInt('0'));
}
static endReferrable(builder) {
const offset = builder.endObject();
return offset;
}
static createReferrable(builder, id) {
Referrable.startReferrable(builder);
Referrable.addId(builder, id);
return Referrable.endReferrable(builder);
}
serialize() {
return this.bb.bytes();
}
static deserialize(buffer) {
return Referrable.getRootAsReferrable(new flatbuffers.ByteBuffer(buffer));
}
unpack() {
return new ReferrableT(this.id());
}
unpackTo(_o) {
_o.id = this.id();
}
}
export class ReferrableT {
constructor(id = BigInt('0')) {
this.id = id;
}
pack(builder) {
return Referrable.createReferrable(builder, this.id);
}
}
@@ -0,0 +1,97 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Referrable implements flatbuffers.IUnpackableObject<ReferrableT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):Referrable {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsReferrable(bb:flatbuffers.ByteBuffer, obj?:Referrable):Referrable {
return (obj || new Referrable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsReferrable(bb:flatbuffers.ByteBuffer, obj?:Referrable):Referrable {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new Referrable()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
id():bigint {
const offset = this.bb!.__offset(this.bb_pos, 4);
return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0');
}
mutate_id(value:bigint):boolean {
const offset = this.bb!.__offset(this.bb_pos, 4);
if (offset === 0) {
return false;
}
this.bb!.writeUint64(this.bb_pos + offset, value);
return true;
}
static getFullyQualifiedName():string {
return 'MyGame.Example.Referrable';
}
static startReferrable(builder:flatbuffers.Builder) {
builder.startObject(1);
}
static addId(builder:flatbuffers.Builder, id:bigint) {
builder.addFieldInt64(0, id, BigInt('0'));
}
static endReferrable(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}
static createReferrable(builder:flatbuffers.Builder, id:bigint):flatbuffers.Offset {
Referrable.startReferrable(builder);
Referrable.addId(builder, id);
return Referrable.endReferrable(builder);
}
serialize():Uint8Array {
return this.bb!.bytes();
}
static deserialize(buffer: Uint8Array):Referrable {
return Referrable.getRootAsReferrable(new flatbuffers.ByteBuffer(buffer))
}
unpack(): ReferrableT {
return new ReferrableT(
this.id()
);
}
unpackTo(_o: ReferrableT): void {
_o.id = this.id();
}
}
export class ReferrableT implements flatbuffers.IGeneratedObject {
constructor(
public id: bigint = BigInt('0')
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return Referrable.createReferrable(builder,
this.id
);
}
}
@@ -0,0 +1,32 @@
import * as flatbuffers from 'flatbuffers';
export declare class Stat implements flatbuffers.IUnpackableObject<StatT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): Stat;
static getRootAsStat(bb: flatbuffers.ByteBuffer, obj?: Stat): Stat;
static getSizePrefixedRootAsStat(bb: flatbuffers.ByteBuffer, obj?: Stat): Stat;
id(): string | null;
id(optionalEncoding: flatbuffers.Encoding): string | Uint8Array | null;
val(): bigint;
mutate_val(value: bigint): boolean;
count(): number;
mutate_count(value: number): boolean;
static getFullyQualifiedName(): string;
static startStat(builder: flatbuffers.Builder): void;
static addId(builder: flatbuffers.Builder, idOffset: flatbuffers.Offset): void;
static addVal(builder: flatbuffers.Builder, val: bigint): void;
static addCount(builder: flatbuffers.Builder, count: number): void;
static endStat(builder: flatbuffers.Builder): flatbuffers.Offset;
static createStat(builder: flatbuffers.Builder, idOffset: flatbuffers.Offset, val: bigint, count: number): flatbuffers.Offset;
serialize(): Uint8Array;
static deserialize(buffer: Uint8Array): Stat;
unpack(): StatT;
unpackTo(_o: StatT): void;
}
export declare class StatT implements flatbuffers.IGeneratedObject {
id: string | Uint8Array | null;
val: bigint;
count: number;
constructor(id?: string | Uint8Array | null, val?: bigint, count?: number);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
+100
View File
@@ -0,0 +1,100 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Stat {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsStat(bb, obj) {
return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsStat(bb, obj) {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
id(optionalEncoding) {
const offset = this.bb.__offset(this.bb_pos, 4);
return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
}
val() {
const offset = this.bb.__offset(this.bb_pos, 6);
return offset ? this.bb.readInt64(this.bb_pos + offset) : BigInt('0');
}
mutate_val(value) {
const offset = this.bb.__offset(this.bb_pos, 6);
if (offset === 0) {
return false;
}
this.bb.writeInt64(this.bb_pos + offset, value);
return true;
}
count() {
const offset = this.bb.__offset(this.bb_pos, 8);
return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
}
mutate_count(value) {
const offset = this.bb.__offset(this.bb_pos, 8);
if (offset === 0) {
return false;
}
this.bb.writeUint16(this.bb_pos + offset, value);
return true;
}
static getFullyQualifiedName() {
return 'MyGame.Example.Stat';
}
static startStat(builder) {
builder.startObject(3);
}
static addId(builder, idOffset) {
builder.addFieldOffset(0, idOffset, 0);
}
static addVal(builder, val) {
builder.addFieldInt64(1, val, BigInt('0'));
}
static addCount(builder, count) {
builder.addFieldInt16(2, count, 0);
}
static endStat(builder) {
const offset = builder.endObject();
return offset;
}
static createStat(builder, idOffset, val, count) {
Stat.startStat(builder);
Stat.addId(builder, idOffset);
Stat.addVal(builder, val);
Stat.addCount(builder, count);
return Stat.endStat(builder);
}
serialize() {
return this.bb.bytes();
}
static deserialize(buffer) {
return Stat.getRootAsStat(new flatbuffers.ByteBuffer(buffer));
}
unpack() {
return new StatT(this.id(), this.val(), this.count());
}
unpackTo(_o) {
_o.id = this.id();
_o.val = this.val();
_o.count = this.count();
}
}
export class StatT {
constructor(id = null, val = BigInt('0'), count = 0) {
this.id = id;
this.val = val;
this.count = count;
}
pack(builder) {
const id = (this.id !== null ? builder.createString(this.id) : 0);
return Stat.createStat(builder, id, this.val, this.count);
}
}
+140
View File
@@ -0,0 +1,140 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Stat implements flatbuffers.IUnpackableObject<StatT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):Stat {
this.bb_pos = i;
this.bb = bb;
return this;
}
static getRootAsStat(bb:flatbuffers.ByteBuffer, obj?:Stat):Stat {
return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
static getSizePrefixedRootAsStat(bb:flatbuffers.ByteBuffer, obj?:Stat):Stat {
bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb);
}
id():string|null
id(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null
id(optionalEncoding?:any):string|Uint8Array|null {
const offset = this.bb!.__offset(this.bb_pos, 4);
return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;
}
val():bigint {
const offset = this.bb!.__offset(this.bb_pos, 6);
return offset ? this.bb!.readInt64(this.bb_pos + offset) : BigInt('0');
}
mutate_val(value:bigint):boolean {
const offset = this.bb!.__offset(this.bb_pos, 6);
if (offset === 0) {
return false;
}
this.bb!.writeInt64(this.bb_pos + offset, value);
return true;
}
count():number {
const offset = this.bb!.__offset(this.bb_pos, 8);
return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;
}
mutate_count(value:number):boolean {
const offset = this.bb!.__offset(this.bb_pos, 8);
if (offset === 0) {
return false;
}
this.bb!.writeUint16(this.bb_pos + offset, value);
return true;
}
static getFullyQualifiedName():string {
return 'MyGame.Example.Stat';
}
static startStat(builder:flatbuffers.Builder) {
builder.startObject(3);
}
static addId(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset) {
builder.addFieldOffset(0, idOffset, 0);
}
static addVal(builder:flatbuffers.Builder, val:bigint) {
builder.addFieldInt64(1, val, BigInt('0'));
}
static addCount(builder:flatbuffers.Builder, count:number) {
builder.addFieldInt16(2, count, 0);
}
static endStat(builder:flatbuffers.Builder):flatbuffers.Offset {
const offset = builder.endObject();
return offset;
}
static createStat(builder:flatbuffers.Builder, idOffset:flatbuffers.Offset, val:bigint, count:number):flatbuffers.Offset {
Stat.startStat(builder);
Stat.addId(builder, idOffset);
Stat.addVal(builder, val);
Stat.addCount(builder, count);
return Stat.endStat(builder);
}
serialize():Uint8Array {
return this.bb!.bytes();
}
static deserialize(buffer: Uint8Array):Stat {
return Stat.getRootAsStat(new flatbuffers.ByteBuffer(buffer))
}
unpack(): StatT {
return new StatT(
this.id(),
this.val(),
this.count()
);
}
unpackTo(_o: StatT): void {
_o.id = this.id();
_o.val = this.val();
_o.count = this.count();
}
}
export class StatT implements flatbuffers.IGeneratedObject {
constructor(
public id: string|Uint8Array|null = null,
public val: bigint = BigInt('0'),
public count: number = 0
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
const id = (this.id !== null ? builder.createString(this.id!) : 0);
return Stat.createStat(builder,
id,
this.val,
this.count
);
}
}
@@ -0,0 +1,18 @@
import * as flatbuffers from 'flatbuffers';
import { StructOfStructs, StructOfStructsT } from '../../my-game/example/struct-of-structs.js';
export declare class StructOfStructsOfStructs implements flatbuffers.IUnpackableObject<StructOfStructsOfStructsT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): StructOfStructsOfStructs;
a(obj?: StructOfStructs): StructOfStructs | null;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createStructOfStructsOfStructs(builder: flatbuffers.Builder, a_a_id: number, a_a_distance: number, a_b_a: number, a_b_b: number, a_c_id: number, a_c_distance: number): flatbuffers.Offset;
unpack(): StructOfStructsOfStructsT;
unpackTo(_o: StructOfStructsOfStructsT): void;
}
export declare class StructOfStructsOfStructsT implements flatbuffers.IGeneratedObject {
a: StructOfStructsT | null;
constructor(a?: StructOfStructsT | null);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,51 @@
// automatically generated by the FlatBuffers compiler, do not modify
import { StructOfStructs } from '../../my-game/example/struct-of-structs.js';
export class StructOfStructsOfStructs {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a(obj) {
return (obj || new StructOfStructs()).__init(this.bb_pos, this.bb);
}
static getFullyQualifiedName() {
return 'MyGame.Example.StructOfStructsOfStructs';
}
static sizeOf() {
return 20;
}
static createStructOfStructsOfStructs(builder, a_a_id, a_a_distance, a_b_a, a_b_b, a_c_id, a_c_distance) {
builder.prep(4, 20);
builder.prep(4, 20);
builder.prep(4, 8);
builder.writeInt32(a_c_distance);
builder.writeInt32(a_c_id);
builder.prep(2, 4);
builder.pad(1);
builder.writeInt8(a_b_b);
builder.writeInt16(a_b_a);
builder.prep(4, 8);
builder.writeInt32(a_a_distance);
builder.writeInt32(a_a_id);
return builder.offset();
}
unpack() {
return new StructOfStructsOfStructsT((this.a() !== null ? this.a().unpack() : null));
}
unpackTo(_o) {
_o.a = (this.a() !== null ? this.a().unpack() : null);
}
}
export class StructOfStructsOfStructsT {
constructor(a = null) {
this.a = a;
}
pack(builder) {
return StructOfStructsOfStructs.createStructOfStructsOfStructs(builder, (this.a?.a?.id ?? 0), (this.a?.a?.distance ?? 0), (this.a?.b?.a ?? 0), (this.a?.b?.b ?? 0), (this.a?.c?.id ?? 0), (this.a?.c?.distance ?? 0));
}
}
@@ -0,0 +1,76 @@
// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
import { StructOfStructs, StructOfStructsT } from '../../my-game/example/struct-of-structs.js';
export class StructOfStructsOfStructs implements flatbuffers.IUnpackableObject<StructOfStructsOfStructsT> {
bb: flatbuffers.ByteBuffer|null = null;
bb_pos = 0;
__init(i:number, bb:flatbuffers.ByteBuffer):StructOfStructsOfStructs {
this.bb_pos = i;
this.bb = bb;
return this;
}
a(obj?:StructOfStructs):StructOfStructs|null {
return (obj || new StructOfStructs()).__init(this.bb_pos, this.bb!);
}
static getFullyQualifiedName():string {
return 'MyGame.Example.StructOfStructsOfStructs';
}
static sizeOf():number {
return 20;
}
static createStructOfStructsOfStructs(builder:flatbuffers.Builder, a_a_id: number, a_a_distance: number, a_b_a: number, a_b_b: number, a_c_id: number, a_c_distance: number):flatbuffers.Offset {
builder.prep(4, 20);
builder.prep(4, 20);
builder.prep(4, 8);
builder.writeInt32(a_c_distance);
builder.writeInt32(a_c_id);
builder.prep(2, 4);
builder.pad(1);
builder.writeInt8(a_b_b);
builder.writeInt16(a_b_a);
builder.prep(4, 8);
builder.writeInt32(a_a_distance);
builder.writeInt32(a_a_id);
return builder.offset();
}
unpack(): StructOfStructsOfStructsT {
return new StructOfStructsOfStructsT(
(this.a() !== null ? this.a()!.unpack() : null)
);
}
unpackTo(_o: StructOfStructsOfStructsT): void {
_o.a = (this.a() !== null ? this.a()!.unpack() : null);
}
}
export class StructOfStructsOfStructsT implements flatbuffers.IGeneratedObject {
constructor(
public a: StructOfStructsT|null = null
){}
pack(builder:flatbuffers.Builder): flatbuffers.Offset {
return StructOfStructsOfStructs.createStructOfStructsOfStructs(builder,
(this.a?.a?.id ?? 0),
(this.a?.a?.distance ?? 0),
(this.a?.b?.a ?? 0),
(this.a?.b?.b ?? 0),
(this.a?.c?.id ?? 0),
(this.a?.c?.distance ?? 0)
);
}
}
@@ -0,0 +1,23 @@
import * as flatbuffers from 'flatbuffers';
import { Ability, AbilityT } from '../../my-game/example/ability.js';
import { Test, TestT } from '../../my-game/example/test.js';
export declare class StructOfStructs implements flatbuffers.IUnpackableObject<StructOfStructsT> {
bb: flatbuffers.ByteBuffer | null;
bb_pos: number;
__init(i: number, bb: flatbuffers.ByteBuffer): StructOfStructs;
a(obj?: Ability): Ability | null;
b(obj?: Test): Test | null;
c(obj?: Ability): Ability | null;
static getFullyQualifiedName(): string;
static sizeOf(): number;
static createStructOfStructs(builder: flatbuffers.Builder, a_id: number, a_distance: number, b_a: number, b_b: number, c_id: number, c_distance: number): flatbuffers.Offset;
unpack(): StructOfStructsT;
unpackTo(_o: StructOfStructsT): void;
}
export declare class StructOfStructsT implements flatbuffers.IGeneratedObject {
a: AbilityT | null;
b: TestT | null;
c: AbilityT | null;
constructor(a?: AbilityT | null, b?: TestT | null, c?: AbilityT | null);
pack(builder: flatbuffers.Builder): flatbuffers.Offset;
}
@@ -0,0 +1,61 @@
// automatically generated by the FlatBuffers compiler, do not modify
import { Ability } from '../../my-game/example/ability.js';
import { Test } from '../../my-game/example/test.js';
export class StructOfStructs {
constructor() {
this.bb = null;
this.bb_pos = 0;
}
__init(i, bb) {
this.bb_pos = i;
this.bb = bb;
return this;
}
a(obj) {
return (obj || new Ability()).__init(this.bb_pos, this.bb);
}
b(obj) {
return (obj || new Test()).__init(this.bb_pos + 8, this.bb);
}
c(obj) {
return (obj || new Ability()).__init(this.bb_pos + 12, this.bb);
}
static getFullyQualifiedName() {
return 'MyGame.Example.StructOfStructs';
}
static sizeOf() {
return 20;
}
static createStructOfStructs(builder, a_id, a_distance, b_a, b_b, c_id, c_distance) {
builder.prep(4, 20);
builder.prep(4, 8);
builder.writeInt32(c_distance);
builder.writeInt32(c_id);
builder.prep(2, 4);
builder.pad(1);
builder.writeInt8(b_b);
builder.writeInt16(b_a);
builder.prep(4, 8);
builder.writeInt32(a_distance);
builder.writeInt32(a_id);
return builder.offset();
}
unpack() {
return new StructOfStructsT((this.a() !== null ? this.a().unpack() : null), (this.b() !== null ? this.b().unpack() : null), (this.c() !== null ? this.c().unpack() : null));
}
unpackTo(_o) {
_o.a = (this.a() !== null ? this.a().unpack() : null);
_o.b = (this.b() !== null ? this.b().unpack() : null);
_o.c = (this.c() !== null ? this.c().unpack() : null);
}
}
export class StructOfStructsT {
constructor(a = null, b = null, c = null) {
this.a = a;
this.b = b;
this.c = c;
}
pack(builder) {
return StructOfStructs.createStructOfStructs(builder, (this.a?.id ?? 0), (this.a?.distance ?? 0), (this.b?.a ?? 0), (this.b?.b ?? 0), (this.c?.id ?? 0), (this.c?.distance ?? 0));
}
}

Some files were not shown because too many files have changed in this diff Show More