From ab716ee41dc3b0f0c645d9492ea0c2b41bea64b3 Mon Sep 17 00:00:00 2001 From: Adam Oleksy Date: Wed, 26 Apr 2023 07:37:06 +0200 Subject: [PATCH 1/7] Make JSON supporting advanced union features (#7869) This change allows user to decode binary with given schema to JSON representation when schema defines union with struct. Co-authored-by: Derek Bailey --- src/idl_parser.cpp | 3 ++- tests/json_test.cpp | 33 +++++++++++++++++++++++++++++++++ tests/json_test.h | 1 + tests/test.cpp | 1 + 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index 084506460..36497eef2 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -2584,7 +2584,8 @@ bool Parser::SupportsAdvancedUnionFeatures() const { return (opts.lang_to_generate & ~(IDLOptions::kCpp | IDLOptions::kTs | IDLOptions::kPhp | IDLOptions::kJava | IDLOptions::kCSharp | IDLOptions::kKotlin | - IDLOptions::kBinary | IDLOptions::kSwift | IDLOptions::kNim)) == 0; + IDLOptions::kBinary | IDLOptions::kSwift | IDLOptions::kNim | + IDLOptions::kJson)) == 0; } bool Parser::SupportsAdvancedArrayFeatures() const { diff --git a/tests/json_test.cpp b/tests/json_test.cpp index 2224b1a17..e4249f9ec 100644 --- a/tests/json_test.cpp +++ b/tests/json_test.cpp @@ -170,5 +170,38 @@ void JsonUnsortedArrayTest() { TEST_NOTNULL(monster->testarrayoftables()->LookupByKey("ccc")); } +void JsonUnionStructTest() { + // schema to parse data + auto schema = R"( +struct MyStruct { field: int; } +union UnionWithStruct { MyStruct } +table JsonUnionStructTest { union_with_struct: UnionWithStruct; } +root_type JsonUnionStructTest; +)"; + // source text to parse and expected result of generation text back + auto json_source =R"({ + union_with_struct_type: "MyStruct", + union_with_struct: { + field: 12345 + } +} +)"; + + flatbuffers::Parser parser; + // set output language to JSON, so we assure that is supported + parser.opts.lang_to_generate = IDLOptions::kJson; + // parse schema first, so we assure that output language is supported + // and can use it to parse the data after + TEST_EQ(true, parser.Parse(schema)); + TEST_EQ(true, parser.ParseJson(json_source)); + + // now generate text back from the binary, and compare the two: + std::string json_generated; + auto generate_result = + GenerateText(parser, parser.builder_.GetBufferPointer(), &json_generated); + TEST_EQ(true, generate_result); + TEST_EQ_STR(json_source, json_generated.c_str()); +} + } // namespace tests } // namespace flatbuffers diff --git a/tests/json_test.h b/tests/json_test.h index a2aa6fba5..1c8e8093f 100644 --- a/tests/json_test.h +++ b/tests/json_test.h @@ -11,6 +11,7 @@ void JsonEnumsTest(const std::string& tests_data_path); void JsonOptionalTest(const std::string& tests_data_path, bool default_scalars); void ParseIncorrectMonsterJsonTest(const std::string& tests_data_path); void JsonUnsortedArrayTest(); +void JsonUnionStructTest(); } // namespace tests } // namespace flatbuffers diff --git a/tests/test.cpp b/tests/test.cpp index e59245655..6bc23ed6d 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -1557,6 +1557,7 @@ int FlatBufferTests(const std::string &tests_data_path) { ParseIncorrectMonsterJsonTest(tests_data_path); FixedLengthArraySpanTest(tests_data_path); DoNotRequireEofTest(tests_data_path); + JsonUnionStructTest(); #else // Guard against -Wunused-parameter. (void)tests_data_path; From f6af2087eeb4f256972e063261b55f26ffd6dddb Mon Sep 17 00:00:00 2001 From: Nikita Sokolov Date: Wed, 26 Apr 2023 09:39:37 +0400 Subject: [PATCH 2/7] drop glibc from runtime dependencies (#7906) https://github.com/google/flatbuffers/issues/7696 The binary size grows from 5.8MB to 7.2MB, but this way it works on Ubuntu 18.04 and amazonlinux. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90c6cfe50..0024c4904 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,7 +30,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: cmake - run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . + run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_STATIC_FLATC=ON . - name: build run: make -j - name: test From 6eae49a79a1ac30c88255a9bea9c344589f7249d Mon Sep 17 00:00:00 2001 From: Jongwoo Han Date: Wed, 26 Apr 2023 14:50:37 +0900 Subject: [PATCH 3/7] Replace deprecated command with environment file (#7921) Co-authored-by: Derek Bailey --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0024c4904..cc2a614fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,11 +60,11 @@ jobs: - name: Generate SLSA subjects - clang if: matrix.cxx == 'clang++-12' && startsWith(github.ref, 'refs/tags/') id: hash-clang - run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" + run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT - name: Generate SLSA subjects - gcc if: matrix.cxx == 'g++-10' && startsWith(github.ref, 'refs/tags/') id: hash-gcc - run: echo "::set-output name=hashes::$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" + run: echo "hashes=$(sha256sum Linux.flatc.binary.${{ matrix.cxx }}.zip | base64 -w0)" >> $GITHUB_OUTPUT build-linux-no-file-tests: name: Build Linux with -DFLATBUFFERS_NO_FILE_TESTS @@ -166,7 +166,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') id: hash shell: bash - run: echo "::set-output name=hashes::$(sha256sum Windows.flatc.binary.zip | base64 -w0)" + run: echo "hashes=$(sha256sum Windows.flatc.binary.zip | base64 -w0)" >> $GITHUB_OUTPUT build-windows-2017: name: Build Windows 2017 @@ -267,7 +267,7 @@ jobs: - name: Generate SLSA subjects if: startsWith(github.ref, 'refs/tags/') id: hash - run: echo "::set-output name=hashes::$(shasum -a 256 MacIntel.flatc.binary.zip | base64)" + run: echo "hashes=$(shasum -a 256 MacIntel.flatc.binary.zip | base64)" >> $GITHUB_OUTPUT build-mac-universal: permissions: @@ -310,7 +310,7 @@ jobs: - name: Generate SLSA subjects if: startsWith(github.ref, 'refs/tags/') id: hash - run: echo "::set-output name=hashes::$(shasum -a 256 Mac.flatc.binary.zip | base64)" + run: echo "hashes=$(shasum -a 256 Mac.flatc.binary.zip | base64)" >> $GITHUB_OUTPUT build-android: name: Build Android (on Linux) @@ -561,7 +561,7 @@ jobs: echo "$MAC_DIGESTS" | base64 -d >> checksums.txt echo "$MACINTEL_DIGESTS" | base64 -d >> checksums.txt echo "$WINDOWS_DIGESTS" | base64 -d >> checksums.txt - echo "::set-output name=digests::$(cat checksums.txt | base64 -w0)" + echo "digests=$(cat checksums.txt | base64 -w0)" >> $GITHUB_OUTPUT provenance: if: startsWith(github.ref, 'refs/tags/') From a397dd7e8c3137fecc8b686b3efb5c31bf1d1b1e Mon Sep 17 00:00:00 2001 From: Max Burke Date: Fri, 28 Apr 2023 09:38:29 -0700 Subject: [PATCH 4/7] Optionally generate Python type annotations (#7858) * optionally generate type prefixes and suffixes for python code * fix codegen error when qualified name is empty * WIP: Python typing * more progress towards python typing * Further iterate on Python generated code typing * clang-format * Regenerate code * add documentation for Python type annotations option * generate code with Python type annotations * handle forward references * clang-format --- .../python/greeter/models/HelloReply.py | 10 +- .../python/greeter/models/HelloRequest.py | 10 +- include/flatbuffers/idl.h | 2 + python/flatbuffers/reflection/Enum.py | 58 +-- python/flatbuffers/reflection/EnumVal.py | 42 +- python/flatbuffers/reflection/Field.py | 90 ++-- python/flatbuffers/reflection/KeyValue.py | 16 +- python/flatbuffers/reflection/Object.py | 62 +-- python/flatbuffers/reflection/RPCCall.py | 44 +- python/flatbuffers/reflection/Schema.py | 70 +-- python/flatbuffers/reflection/SchemaFile.py | 18 +- python/flatbuffers/reflection/Service.py | 44 +- python/flatbuffers/reflection/Type.py | 40 +- python/py.typed | 0 scripts/generate_code.py | 2 +- src/flatc.cpp | 8 +- src/idl_gen_python.cpp | 370 +++++++++++---- tests/MyGame/Example/ArrayStruct.py | 21 +- tests/MyGame/Example/ArrayTable.py | 30 +- tests/MyGame/Example/Monster.py | 438 +++++++++--------- tests/MyGame/Example/NestedStruct.py | 17 +- .../Example/NestedUnion/NestedUnionTest.py | 56 +-- tests/MyGame/Example/NestedUnion/Test.py | 5 +- .../NestedUnion/TestSimpleTableWithEnum.py | 25 +- tests/MyGame/Example/NestedUnion/Vec3.py | 70 +-- tests/MyGame/Example/Referrable.py | 10 +- tests/MyGame/Example/Stat.py | 22 +- .../MyGame/Example/TestSimpleTableWithEnum.py | 10 +- tests/MyGame/Example/TypeAliases.py | 80 ++-- tests/MyGame/Example2/Monster.py | 4 +- tests/MyGame/InParentNamespace.py | 4 +- tests/MyGame/MonsterExtra.py | 117 ++--- tests/monster_test_generated.py | 174 +++---- tests/optional_scalars/ScalarStuff.py | 220 ++++----- tests/test.fbs | 85 ++++ 35 files changed, 1295 insertions(+), 979 deletions(-) create mode 100644 python/py.typed create mode 100644 tests/test.fbs diff --git a/grpc/examples/python/greeter/models/HelloReply.py b/grpc/examples/python/greeter/models/HelloReply.py index f1082fa23..bf182fc85 100644 --- a/grpc/examples/python/greeter/models/HelloReply.py +++ b/grpc/examples/python/greeter/models/HelloReply.py @@ -32,16 +32,16 @@ class HelloReply(object): return None def HelloReplyStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def Start(builder): - return HelloReplyStart(builder) + HelloReplyStart(builder) def HelloReplyAddMessage(builder, message): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(message), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(message), 0) -def AddMessage(builder, message): - return HelloReplyAddMessage(builder, message) +def AddMessage(builder: flatbuffers.Builder, message: int): + HelloReplyAddMessage(builder, message) def HelloReplyEnd(builder): return builder.EndObject() diff --git a/grpc/examples/python/greeter/models/HelloRequest.py b/grpc/examples/python/greeter/models/HelloRequest.py index b295369e6..9df6b22c9 100644 --- a/grpc/examples/python/greeter/models/HelloRequest.py +++ b/grpc/examples/python/greeter/models/HelloRequest.py @@ -32,16 +32,16 @@ class HelloRequest(object): return None def HelloRequestStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def Start(builder): - return HelloRequestStart(builder) + HelloRequestStart(builder) def HelloRequestAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return HelloRequestAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + HelloRequestAddName(builder, name) def HelloRequestEnd(builder): return builder.EndObject() diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index bee672740..ced2049d8 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -698,6 +698,7 @@ struct IDLOptions { bool require_json_eof; bool keep_proto_id; bool python_no_type_prefix_suffix; + bool python_typing; ProtoIdGapAction proto_id_gap_action; // Possible options for the more general generator below. @@ -808,6 +809,7 @@ struct IDLOptions { require_json_eof(true), keep_proto_id(false), python_no_type_prefix_suffix(false), + python_typing(false), proto_id_gap_action(ProtoIdGapAction::WARNING), mini_reflect(IDLOptions::kNone), require_explicit_ids(false), diff --git a/python/flatbuffers/reflection/Enum.py b/python/flatbuffers/reflection/Enum.py index bd2a7b336..fd4c410a1 100644 --- a/python/flatbuffers/reflection/Enum.py +++ b/python/flatbuffers/reflection/Enum.py @@ -42,7 +42,7 @@ class Enum(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.EnumVal import EnumVal + from .reflection.EnumVal import EnumVal obj = EnumVal() obj.Init(self._tab.Bytes, x) return obj @@ -72,7 +72,7 @@ class Enum(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Type import Type + from .reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -85,7 +85,7 @@ class Enum(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -132,70 +132,70 @@ class Enum(object): return None def EnumStart(builder): - return builder.StartObject(7) + builder.StartObject(7) def Start(builder): - return EnumStart(builder) + EnumStart(builder) def EnumAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return EnumAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + EnumAddName(builder, name) def EnumAddValues(builder, values): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(values), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(values), 0) -def AddValues(builder, values): - return EnumAddValues(builder, values) +def AddValues(builder: flatbuffers.Builder, values: int): + EnumAddValues(builder, values) def EnumStartValuesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartValuesVector(builder, numElems): +def StartValuesVector(builder, numElems: int) -> int: return EnumStartValuesVector(builder, numElems) def EnumAddIsUnion(builder, isUnion): - return builder.PrependBoolSlot(2, isUnion, 0) + builder.PrependBoolSlot(2, isUnion, 0) -def AddIsUnion(builder, isUnion): - return EnumAddIsUnion(builder, isUnion) +def AddIsUnion(builder: flatbuffers.Builder, isUnion: bool): + EnumAddIsUnion(builder, isUnion) def EnumAddUnderlyingType(builder, underlyingType): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(underlyingType), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(underlyingType), 0) -def AddUnderlyingType(builder, underlyingType): - return EnumAddUnderlyingType(builder, underlyingType) +def AddUnderlyingType(builder: flatbuffers.Builder, underlyingType: int): + EnumAddUnderlyingType(builder, underlyingType) def EnumAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return EnumAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + EnumAddAttributes(builder, attributes) def EnumStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return EnumStartAttributesVector(builder, numElems) def EnumAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return EnumAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + EnumAddDocumentation(builder, documentation) def EnumStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return EnumStartDocumentationVector(builder, numElems) def EnumAddDeclarationFile(builder, declarationFile): - return builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) + builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder, declarationFile): - return EnumAddDeclarationFile(builder, declarationFile) +def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): + EnumAddDeclarationFile(builder, declarationFile) def EnumEnd(builder): return builder.EndObject() diff --git a/python/flatbuffers/reflection/EnumVal.py b/python/flatbuffers/reflection/EnumVal.py index 7019ec46d..207dd8436 100644 --- a/python/flatbuffers/reflection/EnumVal.py +++ b/python/flatbuffers/reflection/EnumVal.py @@ -47,7 +47,7 @@ class EnumVal(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Type import Type + from .reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -80,7 +80,7 @@ class EnumVal(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -99,51 +99,51 @@ class EnumVal(object): return o == 0 def EnumValStart(builder): - return builder.StartObject(6) + builder.StartObject(6) def Start(builder): - return EnumValStart(builder) + EnumValStart(builder) def EnumValAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return EnumValAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + EnumValAddName(builder, name) def EnumValAddValue(builder, value): - return builder.PrependInt64Slot(1, value, 0) + builder.PrependInt64Slot(1, value, 0) -def AddValue(builder, value): - return EnumValAddValue(builder, value) +def AddValue(builder: flatbuffers.Builder, value: int): + EnumValAddValue(builder, value) def EnumValAddUnionType(builder, unionType): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(unionType), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(unionType), 0) -def AddUnionType(builder, unionType): - return EnumValAddUnionType(builder, unionType) +def AddUnionType(builder: flatbuffers.Builder, unionType: int): + EnumValAddUnionType(builder, unionType) def EnumValAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return EnumValAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + EnumValAddDocumentation(builder, documentation) def EnumValStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return EnumValStartDocumentationVector(builder, numElems) def EnumValAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return EnumValAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + EnumValAddAttributes(builder, attributes) def EnumValStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return EnumValStartAttributesVector(builder, numElems) def EnumValEnd(builder): diff --git a/python/flatbuffers/reflection/Field.py b/python/flatbuffers/reflection/Field.py index a0e660fd6..36ceb2bfe 100644 --- a/python/flatbuffers/reflection/Field.py +++ b/python/flatbuffers/reflection/Field.py @@ -40,7 +40,7 @@ class Field(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Type import Type + from .reflection.Type import Type obj = Type() obj.Init(self._tab.Bytes, x) return obj @@ -102,7 +102,7 @@ class Field(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -156,100 +156,100 @@ class Field(object): return 0 def FieldStart(builder): - return builder.StartObject(13) + builder.StartObject(13) def Start(builder): - return FieldStart(builder) + FieldStart(builder) def FieldAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return FieldAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + FieldAddName(builder, name) def FieldAddType(builder, type): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(type), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(type), 0) -def AddType(builder, type): - return FieldAddType(builder, type) +def AddType(builder: flatbuffers.Builder, type: int): + FieldAddType(builder, type) def FieldAddId(builder, id): - return builder.PrependUint16Slot(2, id, 0) + builder.PrependUint16Slot(2, id, 0) -def AddId(builder, id): - return FieldAddId(builder, id) +def AddId(builder: flatbuffers.Builder, id: int): + FieldAddId(builder, id) def FieldAddOffset(builder, offset): - return builder.PrependUint16Slot(3, offset, 0) + builder.PrependUint16Slot(3, offset, 0) -def AddOffset(builder, offset): - return FieldAddOffset(builder, offset) +def AddOffset(builder: flatbuffers.Builder, offset: int): + FieldAddOffset(builder, offset) def FieldAddDefaultInteger(builder, defaultInteger): - return builder.PrependInt64Slot(4, defaultInteger, 0) + builder.PrependInt64Slot(4, defaultInteger, 0) -def AddDefaultInteger(builder, defaultInteger): - return FieldAddDefaultInteger(builder, defaultInteger) +def AddDefaultInteger(builder: flatbuffers.Builder, defaultInteger: int): + FieldAddDefaultInteger(builder, defaultInteger) def FieldAddDefaultReal(builder, defaultReal): - return builder.PrependFloat64Slot(5, defaultReal, 0.0) + builder.PrependFloat64Slot(5, defaultReal, 0.0) -def AddDefaultReal(builder, defaultReal): - return FieldAddDefaultReal(builder, defaultReal) +def AddDefaultReal(builder: flatbuffers.Builder, defaultReal: float): + FieldAddDefaultReal(builder, defaultReal) def FieldAddDeprecated(builder, deprecated): - return builder.PrependBoolSlot(6, deprecated, 0) + builder.PrependBoolSlot(6, deprecated, 0) -def AddDeprecated(builder, deprecated): - return FieldAddDeprecated(builder, deprecated) +def AddDeprecated(builder: flatbuffers.Builder, deprecated: bool): + FieldAddDeprecated(builder, deprecated) def FieldAddRequired(builder, required): - return builder.PrependBoolSlot(7, required, 0) + builder.PrependBoolSlot(7, required, 0) -def AddRequired(builder, required): - return FieldAddRequired(builder, required) +def AddRequired(builder: flatbuffers.Builder, required: bool): + FieldAddRequired(builder, required) def FieldAddKey(builder, key): - return builder.PrependBoolSlot(8, key, 0) + builder.PrependBoolSlot(8, key, 0) -def AddKey(builder, key): - return FieldAddKey(builder, key) +def AddKey(builder: flatbuffers.Builder, key: bool): + FieldAddKey(builder, key) def FieldAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return FieldAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + FieldAddAttributes(builder, attributes) def FieldStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return FieldStartAttributesVector(builder, numElems) def FieldAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return FieldAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + FieldAddDocumentation(builder, documentation) def FieldStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return FieldStartDocumentationVector(builder, numElems) def FieldAddOptional(builder, optional): - return builder.PrependBoolSlot(11, optional, 0) + builder.PrependBoolSlot(11, optional, 0) -def AddOptional(builder, optional): - return FieldAddOptional(builder, optional) +def AddOptional(builder: flatbuffers.Builder, optional: bool): + FieldAddOptional(builder, optional) def FieldAddPadding(builder, padding): - return builder.PrependUint16Slot(12, padding, 0) + builder.PrependUint16Slot(12, padding, 0) -def AddPadding(builder, padding): - return FieldAddPadding(builder, padding) +def AddPadding(builder: flatbuffers.Builder, padding: int): + FieldAddPadding(builder, padding) def FieldEnd(builder): return builder.EndObject() diff --git a/python/flatbuffers/reflection/KeyValue.py b/python/flatbuffers/reflection/KeyValue.py index 7b24a76e5..fb9014c97 100644 --- a/python/flatbuffers/reflection/KeyValue.py +++ b/python/flatbuffers/reflection/KeyValue.py @@ -43,22 +43,22 @@ class KeyValue(object): return None def KeyValueStart(builder): - return builder.StartObject(2) + builder.StartObject(2) def Start(builder): - return KeyValueStart(builder) + KeyValueStart(builder) def KeyValueAddKey(builder, key): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(key), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(key), 0) -def AddKey(builder, key): - return KeyValueAddKey(builder, key) +def AddKey(builder: flatbuffers.Builder, key: int): + KeyValueAddKey(builder, key) def KeyValueAddValue(builder, value): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(value), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(value), 0) -def AddValue(builder, value): - return KeyValueAddValue(builder, value) +def AddValue(builder: flatbuffers.Builder, value: int): + KeyValueAddValue(builder, value) def KeyValueEnd(builder): return builder.EndObject() diff --git a/python/flatbuffers/reflection/Object.py b/python/flatbuffers/reflection/Object.py index f890ffbc1..139e06278 100644 --- a/python/flatbuffers/reflection/Object.py +++ b/python/flatbuffers/reflection/Object.py @@ -42,7 +42,7 @@ class Object(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.Field import Field + from .reflection.Field import Field obj = Field() obj.Init(self._tab.Bytes, x) return obj @@ -88,7 +88,7 @@ class Object(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -135,76 +135,76 @@ class Object(object): return None def ObjectStart(builder): - return builder.StartObject(8) + builder.StartObject(8) def Start(builder): - return ObjectStart(builder) + ObjectStart(builder) def ObjectAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return ObjectAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + ObjectAddName(builder, name) def ObjectAddFields(builder, fields): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(fields), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(fields), 0) -def AddFields(builder, fields): - return ObjectAddFields(builder, fields) +def AddFields(builder: flatbuffers.Builder, fields: int): + ObjectAddFields(builder, fields) def ObjectStartFieldsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartFieldsVector(builder, numElems): +def StartFieldsVector(builder, numElems: int) -> int: return ObjectStartFieldsVector(builder, numElems) def ObjectAddIsStruct(builder, isStruct): - return builder.PrependBoolSlot(2, isStruct, 0) + builder.PrependBoolSlot(2, isStruct, 0) -def AddIsStruct(builder, isStruct): - return ObjectAddIsStruct(builder, isStruct) +def AddIsStruct(builder: flatbuffers.Builder, isStruct: bool): + ObjectAddIsStruct(builder, isStruct) def ObjectAddMinalign(builder, minalign): - return builder.PrependInt32Slot(3, minalign, 0) + builder.PrependInt32Slot(3, minalign, 0) -def AddMinalign(builder, minalign): - return ObjectAddMinalign(builder, minalign) +def AddMinalign(builder: flatbuffers.Builder, minalign: int): + ObjectAddMinalign(builder, minalign) def ObjectAddBytesize(builder, bytesize): - return builder.PrependInt32Slot(4, bytesize, 0) + builder.PrependInt32Slot(4, bytesize, 0) -def AddBytesize(builder, bytesize): - return ObjectAddBytesize(builder, bytesize) +def AddBytesize(builder: flatbuffers.Builder, bytesize: int): + ObjectAddBytesize(builder, bytesize) def ObjectAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return ObjectAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + ObjectAddAttributes(builder, attributes) def ObjectStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return ObjectStartAttributesVector(builder, numElems) def ObjectAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(6, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return ObjectAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + ObjectAddDocumentation(builder, documentation) def ObjectStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return ObjectStartDocumentationVector(builder, numElems) def ObjectAddDeclarationFile(builder, declarationFile): - return builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) + builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder, declarationFile): - return ObjectAddDeclarationFile(builder, declarationFile) +def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): + ObjectAddDeclarationFile(builder, declarationFile) def ObjectEnd(builder): return builder.EndObject() diff --git a/python/flatbuffers/reflection/RPCCall.py b/python/flatbuffers/reflection/RPCCall.py index b126f04e4..f78edec08 100644 --- a/python/flatbuffers/reflection/RPCCall.py +++ b/python/flatbuffers/reflection/RPCCall.py @@ -40,7 +40,7 @@ class RPCCall(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Object import Object + from .reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -51,7 +51,7 @@ class RPCCall(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Object import Object + from .reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -64,7 +64,7 @@ class RPCCall(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -103,51 +103,51 @@ class RPCCall(object): return o == 0 def RPCCallStart(builder): - return builder.StartObject(5) + builder.StartObject(5) def Start(builder): - return RPCCallStart(builder) + RPCCallStart(builder) def RPCCallAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return RPCCallAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + RPCCallAddName(builder, name) def RPCCallAddRequest(builder, request): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(request), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(request), 0) -def AddRequest(builder, request): - return RPCCallAddRequest(builder, request) +def AddRequest(builder: flatbuffers.Builder, request: int): + RPCCallAddRequest(builder, request) def RPCCallAddResponse(builder, response): - return builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(response), 0) + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(response), 0) -def AddResponse(builder, response): - return RPCCallAddResponse(builder, response) +def AddResponse(builder: flatbuffers.Builder, response: int): + RPCCallAddResponse(builder, response) def RPCCallAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return RPCCallAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + RPCCallAddAttributes(builder, attributes) def RPCCallStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return RPCCallStartAttributesVector(builder, numElems) def RPCCallAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return RPCCallAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + RPCCallAddDocumentation(builder, documentation) def RPCCallStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return RPCCallStartDocumentationVector(builder, numElems) def RPCCallEnd(builder): diff --git a/python/flatbuffers/reflection/Schema.py b/python/flatbuffers/reflection/Schema.py index d7929a49b..06df1a041 100644 --- a/python/flatbuffers/reflection/Schema.py +++ b/python/flatbuffers/reflection/Schema.py @@ -35,7 +35,7 @@ class Schema(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.Object import Object + from .reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -60,7 +60,7 @@ class Schema(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.Enum import Enum + from .reflection.Enum import Enum obj = Enum() obj.Init(self._tab.Bytes, x) return obj @@ -97,7 +97,7 @@ class Schema(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(12)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from reflection.Object import Object + from .reflection.Object import Object obj = Object() obj.Init(self._tab.Bytes, x) return obj @@ -110,7 +110,7 @@ class Schema(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.Service import Service + from .reflection.Service import Service obj = Service() obj.Init(self._tab.Bytes, x) return obj @@ -144,7 +144,7 @@ class Schema(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.SchemaFile import SchemaFile + from .reflection.SchemaFile import SchemaFile obj = SchemaFile() obj.Init(self._tab.Bytes, x) return obj @@ -163,81 +163,81 @@ class Schema(object): return o == 0 def SchemaStart(builder): - return builder.StartObject(8) + builder.StartObject(8) def Start(builder): - return SchemaStart(builder) + SchemaStart(builder) def SchemaAddObjects(builder, objects): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(objects), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(objects), 0) -def AddObjects(builder, objects): - return SchemaAddObjects(builder, objects) +def AddObjects(builder: flatbuffers.Builder, objects: int): + SchemaAddObjects(builder, objects) def SchemaStartObjectsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartObjectsVector(builder, numElems): +def StartObjectsVector(builder, numElems: int) -> int: return SchemaStartObjectsVector(builder, numElems) def SchemaAddEnums(builder, enums): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(enums), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(enums), 0) -def AddEnums(builder, enums): - return SchemaAddEnums(builder, enums) +def AddEnums(builder: flatbuffers.Builder, enums: int): + SchemaAddEnums(builder, enums) def SchemaStartEnumsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartEnumsVector(builder, numElems): +def StartEnumsVector(builder, numElems: int) -> int: return SchemaStartEnumsVector(builder, numElems) def SchemaAddFileIdent(builder, fileIdent): - return builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fileIdent), 0) + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(fileIdent), 0) -def AddFileIdent(builder, fileIdent): - return SchemaAddFileIdent(builder, fileIdent) +def AddFileIdent(builder: flatbuffers.Builder, fileIdent: int): + SchemaAddFileIdent(builder, fileIdent) def SchemaAddFileExt(builder, fileExt): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(fileExt), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(fileExt), 0) -def AddFileExt(builder, fileExt): - return SchemaAddFileExt(builder, fileExt) +def AddFileExt(builder: flatbuffers.Builder, fileExt: int): + SchemaAddFileExt(builder, fileExt) def SchemaAddRootTable(builder, rootTable): - return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(rootTable), 0) + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(rootTable), 0) -def AddRootTable(builder, rootTable): - return SchemaAddRootTable(builder, rootTable) +def AddRootTable(builder: flatbuffers.Builder, rootTable: int): + SchemaAddRootTable(builder, rootTable) def SchemaAddServices(builder, services): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(services), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(services), 0) -def AddServices(builder, services): - return SchemaAddServices(builder, services) +def AddServices(builder: flatbuffers.Builder, services: int): + SchemaAddServices(builder, services) def SchemaStartServicesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartServicesVector(builder, numElems): +def StartServicesVector(builder, numElems: int) -> int: return SchemaStartServicesVector(builder, numElems) def SchemaAddAdvancedFeatures(builder, advancedFeatures): - return builder.PrependUint64Slot(6, advancedFeatures, 0) + builder.PrependUint64Slot(6, advancedFeatures, 0) -def AddAdvancedFeatures(builder, advancedFeatures): - return SchemaAddAdvancedFeatures(builder, advancedFeatures) +def AddAdvancedFeatures(builder: flatbuffers.Builder, advancedFeatures: int): + SchemaAddAdvancedFeatures(builder, advancedFeatures) def SchemaAddFbsFiles(builder, fbsFiles): - return builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(fbsFiles), 0) + builder.PrependUOffsetTRelativeSlot(7, flatbuffers.number_types.UOffsetTFlags.py_type(fbsFiles), 0) -def AddFbsFiles(builder, fbsFiles): - return SchemaAddFbsFiles(builder, fbsFiles) +def AddFbsFiles(builder: flatbuffers.Builder, fbsFiles: int): + SchemaAddFbsFiles(builder, fbsFiles) def SchemaStartFbsFilesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartFbsFilesVector(builder, numElems): +def StartFbsFilesVector(builder, numElems: int) -> int: return SchemaStartFbsFilesVector(builder, numElems) def SchemaEnd(builder): diff --git a/python/flatbuffers/reflection/SchemaFile.py b/python/flatbuffers/reflection/SchemaFile.py index d4c817862..009e7f2f0 100644 --- a/python/flatbuffers/reflection/SchemaFile.py +++ b/python/flatbuffers/reflection/SchemaFile.py @@ -61,27 +61,27 @@ class SchemaFile(object): return o == 0 def SchemaFileStart(builder): - return builder.StartObject(2) + builder.StartObject(2) def Start(builder): - return SchemaFileStart(builder) + SchemaFileStart(builder) def SchemaFileAddFilename(builder, filename): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(filename), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(filename), 0) -def AddFilename(builder, filename): - return SchemaFileAddFilename(builder, filename) +def AddFilename(builder: flatbuffers.Builder, filename: int): + SchemaFileAddFilename(builder, filename) def SchemaFileAddIncludedFilenames(builder, includedFilenames): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(includedFilenames), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(includedFilenames), 0) -def AddIncludedFilenames(builder, includedFilenames): - return SchemaFileAddIncludedFilenames(builder, includedFilenames) +def AddIncludedFilenames(builder: flatbuffers.Builder, includedFilenames: int): + SchemaFileAddIncludedFilenames(builder, includedFilenames) def SchemaFileStartIncludedFilenamesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartIncludedFilenamesVector(builder, numElems): +def StartIncludedFilenamesVector(builder, numElems: int) -> int: return SchemaFileStartIncludedFilenamesVector(builder, numElems) def SchemaFileEnd(builder): diff --git a/python/flatbuffers/reflection/Service.py b/python/flatbuffers/reflection/Service.py index eaec60af1..eb8db7ef8 100644 --- a/python/flatbuffers/reflection/Service.py +++ b/python/flatbuffers/reflection/Service.py @@ -42,7 +42,7 @@ class Service(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.RPCCall import RPCCall + from .reflection.RPCCall import RPCCall obj = RPCCall() obj.Init(self._tab.Bytes, x) return obj @@ -67,7 +67,7 @@ class Service(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from reflection.KeyValue import KeyValue + from .reflection.KeyValue import KeyValue obj = KeyValue() obj.Init(self._tab.Bytes, x) return obj @@ -114,58 +114,58 @@ class Service(object): return None def ServiceStart(builder): - return builder.StartObject(5) + builder.StartObject(5) def Start(builder): - return ServiceStart(builder) + ServiceStart(builder) def ServiceAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return ServiceAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + ServiceAddName(builder, name) def ServiceAddCalls(builder, calls): - return builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(calls), 0) + builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(calls), 0) -def AddCalls(builder, calls): - return ServiceAddCalls(builder, calls) +def AddCalls(builder: flatbuffers.Builder, calls: int): + ServiceAddCalls(builder, calls) def ServiceStartCallsVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartCallsVector(builder, numElems): +def StartCallsVector(builder, numElems: int) -> int: return ServiceStartCallsVector(builder, numElems) def ServiceAddAttributes(builder, attributes): - return builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(attributes), 0) -def AddAttributes(builder, attributes): - return ServiceAddAttributes(builder, attributes) +def AddAttributes(builder: flatbuffers.Builder, attributes: int): + ServiceAddAttributes(builder, attributes) def ServiceStartAttributesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartAttributesVector(builder, numElems): +def StartAttributesVector(builder, numElems: int) -> int: return ServiceStartAttributesVector(builder, numElems) def ServiceAddDocumentation(builder, documentation): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(documentation), 0) -def AddDocumentation(builder, documentation): - return ServiceAddDocumentation(builder, documentation) +def AddDocumentation(builder: flatbuffers.Builder, documentation: int): + ServiceAddDocumentation(builder, documentation) def ServiceStartDocumentationVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartDocumentationVector(builder, numElems): +def StartDocumentationVector(builder, numElems: int) -> int: return ServiceStartDocumentationVector(builder, numElems) def ServiceAddDeclarationFile(builder, declarationFile): - return builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) + builder.PrependUOffsetTRelativeSlot(4, flatbuffers.number_types.UOffsetTFlags.py_type(declarationFile), 0) -def AddDeclarationFile(builder, declarationFile): - return ServiceAddDeclarationFile(builder, declarationFile) +def AddDeclarationFile(builder: flatbuffers.Builder, declarationFile: int): + ServiceAddDeclarationFile(builder, declarationFile) def ServiceEnd(builder): return builder.EndObject() diff --git a/python/flatbuffers/reflection/Type.py b/python/flatbuffers/reflection/Type.py index eb58dd8a0..76c08c48a 100644 --- a/python/flatbuffers/reflection/Type.py +++ b/python/flatbuffers/reflection/Type.py @@ -73,46 +73,46 @@ class Type(object): return 0 def TypeStart(builder): - return builder.StartObject(6) + builder.StartObject(6) def Start(builder): - return TypeStart(builder) + TypeStart(builder) def TypeAddBaseType(builder, baseType): - return builder.PrependInt8Slot(0, baseType, 0) + builder.PrependInt8Slot(0, baseType, 0) -def AddBaseType(builder, baseType): - return TypeAddBaseType(builder, baseType) +def AddBaseType(builder: flatbuffers.Builder, baseType: int): + TypeAddBaseType(builder, baseType) def TypeAddElement(builder, element): - return builder.PrependInt8Slot(1, element, 0) + builder.PrependInt8Slot(1, element, 0) -def AddElement(builder, element): - return TypeAddElement(builder, element) +def AddElement(builder: flatbuffers.Builder, element: int): + TypeAddElement(builder, element) def TypeAddIndex(builder, index): - return builder.PrependInt32Slot(2, index, -1) + builder.PrependInt32Slot(2, index, -1) -def AddIndex(builder, index): - return TypeAddIndex(builder, index) +def AddIndex(builder: flatbuffers.Builder, index: int): + TypeAddIndex(builder, index) def TypeAddFixedLength(builder, fixedLength): - return builder.PrependUint16Slot(3, fixedLength, 0) + builder.PrependUint16Slot(3, fixedLength, 0) -def AddFixedLength(builder, fixedLength): - return TypeAddFixedLength(builder, fixedLength) +def AddFixedLength(builder: flatbuffers.Builder, fixedLength: int): + TypeAddFixedLength(builder, fixedLength) def TypeAddBaseSize(builder, baseSize): - return builder.PrependUint32Slot(4, baseSize, 4) + builder.PrependUint32Slot(4, baseSize, 4) -def AddBaseSize(builder, baseSize): - return TypeAddBaseSize(builder, baseSize) +def AddBaseSize(builder: flatbuffers.Builder, baseSize: int): + TypeAddBaseSize(builder, baseSize) def TypeAddElementSize(builder, elementSize): - return builder.PrependUint32Slot(5, elementSize, 0) + builder.PrependUint32Slot(5, elementSize, 0) -def AddElementSize(builder, elementSize): - return TypeAddElementSize(builder, elementSize) +def AddElementSize(builder: flatbuffers.Builder, elementSize: int): + TypeAddElementSize(builder, elementSize) def TypeEnd(builder): return builder.EndObject() diff --git a/python/py.typed b/python/py.typed new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/generate_code.py b/scripts/generate_code.py index 49dfe34e1..6c18c7f8a 100755 --- a/scripts/generate_code.py +++ b/scripts/generate_code.py @@ -103,7 +103,7 @@ JAVA_OPTS = ["--java"] KOTLIN_OPTS = ["--kotlin"] PHP_OPTS = ["--php"] DART_OPTS = ["--dart"] -PYTHON_OPTS = ["--python"] +PYTHON_OPTS = ["--python", "--python-typing"] BINARY_OPTS = ["-b", "--schema", "--bfbs-comments", "--bfbs-builtins"] PROTO_OPTS = ["--proto"] diff --git a/src/flatc.cpp b/src/flatc.cpp index 0e20a2f7d..4a3ffb70a 100644 --- a/src/flatc.cpp +++ b/src/flatc.cpp @@ -252,6 +252,8 @@ const static FlatCOption flatc_options[] = { "Currently this is required to generate private types in Rust" }, { "", "python-no-type-prefix-suffix", "", "Skip emission of Python functions that are prefixed with typenames" }, + { "", "python-typing", "", + "Generate Python type annotations" }, { "", "file-names-only", "", "Print out generated file names without writing to the files"}, }; @@ -652,9 +654,11 @@ FlatCOptions FlatCompiler::ParseFromCommandLineArguments(int argc, opts.ts_no_import_ext = true; } else if (arg == "--no-leak-private-annotation") { opts.no_leak_private_annotations = true; - } else if (arg == "--python-no-type-prefix-suffix") { + } else if (arg == "--python-no-type-prefix-suffix") { opts.python_no_type_prefix_suffix = true; - } else if (arg == "--annotate-sparse-vectors") { + } else if (arg == "--python-typing") { + opts.python_typing = true; + } else if (arg == "--annotate-sparse-vectors") { options.annotate_include_vector_contents = false; } else if (arg == "--annotate") { if (++argi >= argc) Error("missing path following: " + arg, true); diff --git a/src/idl_gen_python.cpp b/src/idl_gen_python.cpp index 6c93b9092..83d589cad 100644 --- a/src/idl_gen_python.cpp +++ b/src/idl_gen_python.cpp @@ -35,6 +35,9 @@ namespace python { namespace { +typedef std::pair ImportMapEntry; +typedef std::set ImportMap; + static std::set PythonKeywords() { return { "False", "None", "True", "and", "as", "assert", "break", "class", "continue", "def", "del", "elif", @@ -129,7 +132,11 @@ class PythonGenerator : public BaseGenerator { code += Indent + "@classmethod\n"; code += Indent + "def GetRootAs"; - code += "(cls, buf, offset=0):"; + if (parser_.opts.python_typing) { + code += "(cls, buf, offset: int = 0):"; + } else { + code += "(cls, buf, offset=0):"; + } code += "\n"; code += Indent + Indent; code += "n = flatbuffers.encode.Get"; @@ -156,7 +163,11 @@ class PythonGenerator : public BaseGenerator { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += "Init(self, buf, pos):\n"; + if (parser_.opts.python_typing) { + code += "Init(self, buf: bytes, pos: int):\n"; + } else { + code += "Init(self, buf, pos):\n"; + } code += Indent + Indent + "self._tab = flatbuffers.table.Table(buf, pos)\n"; code += "\n"; } @@ -167,8 +178,11 @@ class PythonGenerator : public BaseGenerator { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += namer_.Method(field) + "Length(self"; - code += "):"; + code += namer_.Method(field) + "Length(self)"; + if (parser_.opts.python_typing) { + code += " -> int"; + } + code += ":"; if(!IsArray(field.value.type)){ code += OffsetPrefix(field,false); code += GenIndents(3) + "return self._tab.VectorLen(o)"; @@ -184,8 +198,11 @@ class PythonGenerator : public BaseGenerator { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += namer_.Method(field) + "IsNone(self"; - code += "):"; + code += namer_.Method(field) + "IsNone(self)"; + if (parser_.opts.python_typing) { + code += " -> bool"; + } + code += ":"; if(!IsArray(field.value.type)){ code += GenIndents(2) + "o = flatbuffers.number_types.UOffsetTFlags.py_type" + @@ -253,17 +270,32 @@ class PythonGenerator : public BaseGenerator { // Get the value of a fixed size array. void GetArrayOfStruct(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) const { + std::string *code_ptr, ImportMap &imports) const { auto &code = *code_ptr; const auto vec_type = field.value.type.VectorType(); GenReceiver(struct_def, code_ptr); code += namer_.Method(field); - code += "(self, i: int):"; - if (parser_.opts.include_dependence_headers) { - code += GenIndents(2); - code += "from " + GenPackageReference(field.value.type) + " import " + - TypeName(field); + + const ImportMapEntry import_entry = { + "." + GenPackageReference(field.value.type), TypeName(field) + }; + + if (parser_.opts.python_typing) { + const std::string return_type = ReturnType(struct_def, field); + code += "(self, i: int)"; + code += " -> " + return_type + ":"; + + imports.insert(import_entry); + } else { + code += "(self, i):"; } + + if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { + code += GenIndents(2); + code += "from " + import_entry.first + " import " + import_entry.second + + "\n"; + } + code += GenIndents(2) + "obj = " + TypeName(field) + "()"; code += GenIndents(2) + "obj.Init(self._tab.Bytes, self._tab.Pos + "; code += NumToString(field.value.offset) + " + i * "; @@ -299,11 +331,22 @@ class PythonGenerator : public BaseGenerator { // Get a struct by initializing an existing struct. // Specific to Table. void GetStructFieldOfTable(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) const { + std::string *code_ptr, ImportMap &imports) const { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += namer_.Method(field); - code += "(self):"; + code += namer_.Method(field) + "(self)"; + + const ImportMapEntry import_entry = { + "." + GenPackageReference(field.value.type), TypeName(field) + }; + + if (parser_.opts.python_typing) { + const std::string return_type = ReturnType(struct_def, field); + code += " -> Optional[" + return_type + "]"; + imports.insert(ImportMapEntry{ "typing", "Optional" }); + imports.insert(import_entry); + } + code += ":"; code += OffsetPrefix(field); if (field.value.type.struct_def->fixed) { code += Indent + Indent + Indent + "x = o + self._tab.Pos\n"; @@ -311,10 +354,11 @@ class PythonGenerator : public BaseGenerator { code += Indent + Indent + Indent; code += "x = self._tab.Indirect(o + self._tab.Pos)\n"; } - if (parser_.opts.include_dependence_headers) { + + if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { code += Indent + Indent + Indent; - code += "from " + GenPackageReference(field.value.type) + " import " + - TypeName(field) + "\n"; + code += "from " + import_entry.first + " import " + import_entry.second + + "\n"; } code += Indent + Indent + Indent + "obj = " + TypeName(field) + "()\n"; code += Indent + Indent + Indent + "obj.Init(self._tab.Bytes, x)\n"; @@ -324,11 +368,18 @@ class PythonGenerator : public BaseGenerator { // Get the value of a string. void GetStringField(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) const { + std::string *code_ptr, ImportMap &imports) const { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); code += namer_.Method(field); - code += "(self):"; + + if (parser_.opts.python_typing) { + code += "(self) -> Optional[str]:"; + imports.insert(ImportMapEntry{ "typing", "Optional" }); + } else { + code += "(self):"; + } + code += OffsetPrefix(field); code += Indent + Indent + Indent + "return " + GenGetter(field.value.type); code += "o + self._tab.Pos)\n"; @@ -337,21 +388,34 @@ class PythonGenerator : public BaseGenerator { // Get the value of a union from an object. void GetUnionField(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) const { + std::string *code_ptr, ImportMap &imports) const { auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += namer_.Method(field) + "(self):"; + std::string return_ty = "flatbuffers.table.Table"; + + bool is_native_table = TypeName(field) == "*flatbuffers.Table"; + ImportMapEntry import_entry; + if (is_native_table) { + import_entry = ImportMapEntry{ "flatbuffers.table", "Table" }; + } else { + return_ty = TypeName(field); + import_entry = ImportMapEntry{ GenPackageReference(field.value.type), + TypeName(field) }; + } + + code += namer_.Method(field) + "(self)"; + if (parser_.opts.python_typing) { + code += " -> Optional[" + return_ty + "]"; + imports.insert(ImportMapEntry{ "typing", "Optional" }); + imports.insert(import_entry); + } + code += ":"; code += OffsetPrefix(field); - // TODO(rw): this works and is not the good way to it: - bool is_native_table = TypeName(field) == "*flatbuffers.Table"; - if (is_native_table) { - code += - Indent + Indent + Indent + "from flatbuffers.table import Table\n"; - } else if (parser_.opts.include_dependence_headers) { + if (!parser_.opts.python_typing) { code += Indent + Indent + Indent; - code += "from " + GenPackageReference(field.value.type) + " import " + - TypeName(field) + "\n"; + code += "from " + import_entry.first + " import " + import_entry.second + + "\n"; } code += Indent + Indent + Indent + "obj = Table(bytearray(), 0)\n"; code += Indent + Indent + Indent + GenGetter(field.value.type); @@ -373,14 +437,26 @@ class PythonGenerator : public BaseGenerator { // Get the value of a vector's struct member. void GetMemberOfVectorOfStruct(const StructDef &struct_def, - const FieldDef &field, - std::string *code_ptr) const { + const FieldDef &field, std::string *code_ptr, + ImportMap &imports) const { auto &code = *code_ptr; auto vectortype = field.value.type.VectorType(); GenReceiver(struct_def, code_ptr); code += namer_.Method(field); - code += "(self, j):" + OffsetPrefix(field); + const ImportMapEntry import_entry = { + "." + GenPackageReference(field.value.type), TypeName(field) + }; + + if (parser_.opts.python_typing) { + const std::string return_type = ReturnType(struct_def, field); + code += "(self, j: int) -> Optional[" + return_type + "]"; + imports.insert(ImportMapEntry{ "typing", "Optional" }); + imports.insert(import_entry); + } else { + code += "(self, j)"; + } + code += ":" + OffsetPrefix(field); code += Indent + Indent + Indent + "x = self._tab.Vector(o)\n"; code += Indent + Indent + Indent; code += "x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * "; @@ -388,10 +464,10 @@ class PythonGenerator : public BaseGenerator { if (!(vectortype.struct_def->fixed)) { code += Indent + Indent + Indent + "x = self._tab.Indirect(x)\n"; } - if (parser_.opts.include_dependence_headers) { + if (parser_.opts.include_dependence_headers && !parser_.opts.python_typing) { code += Indent + Indent + Indent; - code += "from " + GenPackageReference(field.value.type) + " import " + - TypeName(field) + "\n"; + code += "from " + import_entry.first + " import " + import_entry.second + + "\n"; } code += Indent + Indent + Indent + "obj = " + TypeName(field) + "()\n"; code += Indent + Indent + Indent + "obj.Init(self._tab.Bytes, x)\n"; @@ -409,7 +485,12 @@ class PythonGenerator : public BaseGenerator { GenReceiver(struct_def, code_ptr); code += namer_.Method(field); - code += "(self, j):"; + if (parser_.opts.python_typing) { + code += "(self, j: int)"; + } else { + code += "(self, j)"; + } + code += ":"; code += OffsetPrefix(field); code += Indent + Indent + Indent + "a = self._tab.Vector(o)\n"; code += Indent + Indent + Indent; @@ -476,8 +557,8 @@ class PythonGenerator : public BaseGenerator { // Returns a nested flatbuffer as itself. void GetVectorAsNestedFlatbuffer(const StructDef &struct_def, - const FieldDef &field, - std::string *code_ptr) const { + const FieldDef &field, std::string *code_ptr, + ImportMap &imports) const { auto nested = field.attributes.Lookup("nested_flatbuffer"); if (!nested) { return; } // There is no nested flatbuffer. @@ -487,14 +568,26 @@ class PythonGenerator : public BaseGenerator { qualified_name = nested->constant; } + const ImportMapEntry import_entry = { "." + qualified_name, + unqualified_name }; + auto &code = *code_ptr; GenReceiver(struct_def, code_ptr); - code += namer_.Method(field) + "NestedRoot(self):"; + code += namer_.Method(field) + "NestedRoot(self)"; + if (parser_.opts.python_typing) { + code += " -> Union[" + unqualified_name + ", int]"; + imports.insert(ImportMapEntry{ "typing", "Union" }); + imports.insert(import_entry); + } + code += ":"; code += OffsetPrefix(field); - code += Indent + Indent + Indent; - code += "from " + qualified_name + " import " + unqualified_name + "\n"; + if (!parser_.opts.python_typing) { + code += Indent + Indent + Indent; + code += "from " + import_entry.first + " import " + import_entry.second + + "\n"; + } code += Indent + Indent + Indent + "return " + unqualified_name; code += ".GetRootAs"; code += "(self._tab.Bytes, self._tab.Vector(o))\n"; @@ -613,15 +706,25 @@ class PythonGenerator : public BaseGenerator { const auto name = parser_.opts.python_no_type_prefix_suffix ? "Start" : struct_type + "Start"; - code += "def " + name + "(builder):\n"; - code += Indent + "return builder.StartObject("; + code += "def " + name; + if (parser_.opts.python_typing) { + code += "(builder: flatbuffers.Builder):\n"; + } else { + code += "(builder):\n"; + } + + code += Indent + "builder.StartObject("; code += NumToString(struct_def.fields.vec.size()); code += ")\n\n"; if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def Start(builder):\n"; - code += Indent + "return " + struct_type + "Start(builder)\n\n"; + if (parser_.opts.python_typing) { + code += "def Start(builder: flatbuffers.Builder):\n"; + } else { + code += "def Start(builder):\n"; + } + code += Indent + struct_type + "Start(builder)\n\n"; } } @@ -631,15 +734,19 @@ class PythonGenerator : public BaseGenerator { auto &code = *code_ptr; const std::string field_var = namer_.Variable(field); const std::string field_method = namer_.Method(field); + const std::string field_ty = GenFieldTy(field); const auto name = parser_.opts.python_no_type_prefix_suffix ? "Add" + field_method : namer_.Type(struct_def) + "Add" + field_method; // Generate method with struct name. code += "def " + name; - code += "(builder, "; - code += field_var; + if (parser_.opts.python_typing) { + code += "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty; + } else { + code += "(builder, " + field_var; + } code += "):\n"; - code += Indent + "return builder.Prepend"; + code += Indent + "builder.Prepend"; code += GenMethod(field) + "Slot("; code += NumToString(offset) + ", "; if (!IsScalar(field.value.type.base_type) && (!struct_def.fixed)) { @@ -660,9 +767,9 @@ class PythonGenerator : public BaseGenerator { if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def Add" + field_method + "(builder, " + field_var + "):\n"; + code += "def Add" + field_method + "(builder: flatbuffers.Builder, " + field_var + ": " + field_ty + "):\n"; code += - Indent + "return " + namer_.Type(struct_def) + "Add" + field_method; + Indent + namer_.Type(struct_def) + "Add" + field_method; code += "(builder, "; code += field_var; code += ")\n\n"; @@ -679,7 +786,12 @@ class PythonGenerator : public BaseGenerator { // Generate method with struct name. const auto name = parser_.opts.python_no_type_prefix_suffix ? "Start" + field_method : struct_type + "Start" + field_method; code += "def " + name; - code += "Vector(builder, numElems):\n"; + if (parser_.opts.python_typing) { + code += "Vector(builder, numElems: int) -> int:\n"; + } else { + code += "Vector(builder, numElems):\n"; + } + code += Indent + "return builder.StartVector("; auto vector_type = field.value.type.VectorType(); auto alignment = InlineAlignment(vector_type); @@ -690,7 +802,7 @@ class PythonGenerator : public BaseGenerator { if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def Start" + field_method + "Vector(builder, numElems):\n"; + code += "def Start" + field_method + "Vector(builder, numElems: int) -> int:\n"; code += Indent + "return " + struct_type + "Start"; code += field_method + "Vector(builder, numElems)\n\n"; } @@ -739,12 +851,20 @@ class PythonGenerator : public BaseGenerator { const auto name = parser_.opts.python_no_type_prefix_suffix ? "End" : namer_.Type(struct_def) + "End"; // Generate method with struct name. - code += "def " + name + "(builder):\n"; + if (parser_.opts.python_typing) { + code += "def " + name + "(builder: flatbuffers.Builder) -> int:\n"; + } else { + code += "def " + name + "(builder):\n"; + } code += Indent + "return builder.EndObject()\n\n"; if (!parser_.opts.one_file && !parser_.opts.python_no_type_prefix_suffix) { // Generate method without struct name. - code += "def End(builder):\n"; + if (parser_.opts.python_typing) { + code += "def End(builder: flatbuffers.Builder) -> int:\n"; + } else { + code += "def End(builder):\n"; + } code += Indent + "return " + namer_.Type(struct_def) + "End(builder)"; code += "\n"; } @@ -759,7 +879,7 @@ class PythonGenerator : public BaseGenerator { // Generate a struct field, conditioned on its child type(s). void GenStructAccessor(const StructDef &struct_def, const FieldDef &field, - std::string *code_ptr) const { + std::string *code_ptr, ImportMap &imports) const { GenComment(field.doc_comment, code_ptr, &def_comment, Indent.c_str()); if (IsScalar(field.value.type.base_type)) { if (struct_def.fixed) { @@ -773,35 +893,35 @@ class PythonGenerator : public BaseGenerator { if (struct_def.fixed) { GetStructFieldOfStruct(struct_def, field, code_ptr); } else { - GetStructFieldOfTable(struct_def, field, code_ptr); + GetStructFieldOfTable(struct_def, field, code_ptr, imports); } break; case BASE_TYPE_STRING: - GetStringField(struct_def, field, code_ptr); + GetStringField(struct_def, field, code_ptr, imports); break; case BASE_TYPE_VECTOR: { auto vectortype = field.value.type.VectorType(); if (vectortype.base_type == BASE_TYPE_STRUCT) { - GetMemberOfVectorOfStruct(struct_def, field, code_ptr); + GetMemberOfVectorOfStruct(struct_def, field, code_ptr, imports); } else { GetMemberOfVectorOfNonStruct(struct_def, field, code_ptr); GetVectorOfNonStructAsNumpy(struct_def, field, code_ptr); - GetVectorAsNestedFlatbuffer(struct_def, field, code_ptr); + GetVectorAsNestedFlatbuffer(struct_def, field, code_ptr, imports); } break; } case BASE_TYPE_ARRAY: { auto vectortype = field.value.type.VectorType(); if (vectortype.base_type == BASE_TYPE_STRUCT) { - GetArrayOfStruct(struct_def, field, code_ptr); + GetArrayOfStruct(struct_def, field, code_ptr, imports); } else { GetArrayOfNonStruct(struct_def, field, code_ptr); GetVectorOfNonStructAsNumpy(struct_def, field, code_ptr); - GetVectorAsNestedFlatbuffer(struct_def, field, code_ptr); + GetVectorAsNestedFlatbuffer(struct_def, field, code_ptr, imports); } break; } - case BASE_TYPE_UNION: GetUnionField(struct_def, field, code_ptr); break; + case BASE_TYPE_UNION: GetUnionField(struct_def, field, code_ptr, imports); break; default: FLATBUFFERS_ASSERT(0); } } @@ -816,7 +936,11 @@ class PythonGenerator : public BaseGenerator { std::string *code_ptr) const { auto &code = *code_ptr; code += Indent + "@classmethod\n"; - code += Indent + "def SizeOf(cls):\n"; + if (parser_.opts.python_typing) { + code += Indent + "def SizeOf(cls) -> int:\n"; + } else { + code += Indent + "def SizeOf(cls):\n"; + } code += Indent + Indent + "return " + NumToString(struct_def.bytesize) + "\n"; code += "\n"; @@ -868,7 +992,8 @@ class PythonGenerator : public BaseGenerator { } // Generates struct or table methods. - void GenStruct(const StructDef &struct_def, std::string *code_ptr) const { + void GenStruct(const StructDef &struct_def, std::string *code_ptr, + ImportMap &imports) const { if (struct_def.generated) return; GenComment(struct_def.doc_comment, code_ptr, &def_comment); @@ -893,7 +1018,7 @@ class PythonGenerator : public BaseGenerator { auto &field = **it; if (field.deprecated) continue; - GenStructAccessor(struct_def, field, code_ptr); + GenStructAccessor(struct_def, field, code_ptr, imports); } if (struct_def.fixed) { @@ -1763,6 +1888,31 @@ class PythonGenerator : public BaseGenerator { } } + std::string GenFieldTy(const FieldDef &field) const { + if (IsScalar(field.value.type.base_type) || IsArray(field.value.type)) { + const std::string ty = GenTypeBasic(field.value.type); + if (ty.find("int") != std::string::npos) { + return "int"; + } + + if (ty.find("float") != std::string::npos) { + return "float"; + } + + if (ty == "bool") { + return "bool"; + } + + return "Any"; + } else { + if (IsStruct(field.value.type)) { + return "Any"; + } else { + return "int"; + } + } + } + // Returns the method name for use with add/put calls. std::string GenMethod(const FieldDef &field) const { return (IsScalar(field.value.type.base_type) || IsArray(field.value.type)) @@ -1805,6 +1955,31 @@ class PythonGenerator : public BaseGenerator { return GenTypeGet(field.value.type); } + std::string ReturnType(const StructDef &struct_def, + const FieldDef &field) const { + // If we have a class member that returns an instance of the same class, + // for example: + // class Field(object): + // def Children(self, j: int) -> Optional[Field]: + // pass + // + // we need to quote the return type: + // class Field(object): + // def Children(self, j: int) -> Optional['Field']: + // pass + // + // because Python is unable to resolve the name during parse and will return + // an error. + // (see PEP 484 under forward references: + // https://peps.python.org/pep-0484/#forward-references) + const std::string self_type = struct_def.name; + std::string field_type = TypeName(field); + + if (self_type == field_type) { field_type = "'" + field_type + "'"; } + + return field_type; + } + // Create a struct with a builder and the struct's arguments. void GenStructBuilder(const StructDef &struct_def, std::string *code_ptr) const { @@ -1822,13 +1997,16 @@ class PythonGenerator : public BaseGenerator { bool generate() { std::string one_file_code; + ImportMap one_file_imports; if (!generateEnums(&one_file_code)) return false; - if (!generateStructs(&one_file_code)) return false; + if (!generateStructs(&one_file_code, one_file_imports)) return false; if (parser_.opts.one_file) { + const std::string mod = file_name_ + "_generated"; + // Legacy file format uses keep casing. - return SaveType(file_name_ + "_generated.py", *parser_.current_namespace_, - one_file_code, true); + return SaveType(mod + ".py", *parser_.current_namespace_, one_file_code, + one_file_imports, mod, true); } return true; @@ -1848,29 +2026,45 @@ class PythonGenerator : public BaseGenerator { if (parser_.opts.one_file && !enumcode.empty()) { *one_file_code += enumcode + "\n\n"; } else { + ImportMap imports; + const std::string mod = + namer_.File(enum_def, SkipFile::SuffixAndExtension); + if (!SaveType(namer_.File(enum_def, SkipFile::Suffix), - *enum_def.defined_namespace, enumcode, false)) + *enum_def.defined_namespace, enumcode, imports, mod, + false)) return false; } } return true; } - bool generateStructs(std::string *one_file_code) const { + bool generateStructs(std::string *one_file_code, + ImportMap &one_file_imports) const { for (auto it = parser_.structs_.vec.begin(); it != parser_.structs_.vec.end(); ++it) { auto &struct_def = **it; std::string declcode; - GenStruct(struct_def, &declcode); + ImportMap imports; + GenStruct(struct_def, &declcode, imports); if (parser_.opts.generate_object_based_api) { GenStructForObjectAPI(struct_def, &declcode); } - if (parser_.opts.one_file && !declcode.empty()) { - *one_file_code += declcode + "\n\n"; + if (parser_.opts.one_file) { + if (!declcode.empty()) { + *one_file_code += declcode + "\n\n"; + } + + for (auto import_str: imports) { + one_file_imports.insert(import_str); + } } else { + const std::string mod = + namer_.File(struct_def, SkipFile::SuffixAndExtension); if (!SaveType(namer_.File(struct_def, SkipFile::Suffix), - *struct_def.defined_namespace, declcode, true)) + *struct_def.defined_namespace, declcode, imports, mod, + true)) return false; } } @@ -1879,24 +2073,44 @@ class PythonGenerator : public BaseGenerator { // Begin by declaring namespace and imports. void BeginFile(const std::string &name_space_name, const bool needs_imports, - std::string *code_ptr) const { + std::string *code_ptr, const std::string &mod, + const ImportMap &imports) const { auto &code = *code_ptr; code = code + "# " + FlatBuffersGeneratedWarning() + "\n\n"; code += "# namespace: " + name_space_name + "\n\n"; + if (needs_imports) { + const std::string local_import = "." + mod; + code += "import flatbuffers\n"; code += "from flatbuffers.compat import import_numpy\n"; + if (parser_.opts.python_typing) { + code += "from typing import Any\n"; + + for (auto import_entry : imports) { + // If we have a file called, say, "MyType.py" and in it we have a + // class "MyType", we can generate imports -- usually when we + // have a type that contains arrays of itself -- of the type + // "from .MyType import MyType", which Python can't resolve. So + // if we are trying to import ourself, we skip. + if (import_entry.first != local_import) { + code += "from " + import_entry.first + " import " + + import_entry.second + "\n"; + } + } + } code += "np = import_numpy()\n\n"; } } // Save out the generated code for a Python Table type. bool SaveType(const std::string &defname, const Namespace &ns, - const std::string &classcode, bool needs_imports) const { + const std::string &classcode, const ImportMap &imports, + const std::string &mod, bool needs_imports) const { if (!classcode.length()) return true; std::string code = ""; - BeginFile(LastNamespacePart(ns), needs_imports, &code); + BeginFile(LastNamespacePart(ns), needs_imports, &code, mod, imports); code += classcode; const std::string directories = diff --git a/tests/MyGame/Example/ArrayStruct.py b/tests/MyGame/Example/ArrayStruct.py index d80f84253..be85ec896 100644 --- a/tests/MyGame/Example/ArrayStruct.py +++ b/tests/MyGame/Example/ArrayStruct.py @@ -4,17 +4,19 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any +from .MyGame.Example.NestedStruct import NestedStruct np = import_numpy() class ArrayStruct(object): __slots__ = ['_tab'] @classmethod - def SizeOf(cls): + def SizeOf(cls) -> int: return 160 # ArrayStruct - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # ArrayStruct @@ -33,28 +35,27 @@ class ArrayStruct(object): return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Int32Flags, self._tab.Pos + 4, self.BLength()) # ArrayStruct - def BLength(self): + def BLength(self) -> int: return 15 # ArrayStruct - def BIsNone(self): + def BIsNone(self) -> bool: return False # ArrayStruct def C(self): return self._tab.Get(flatbuffers.number_types.Int8Flags, self._tab.Pos + flatbuffers.number_types.UOffsetTFlags.py_type(64)) # ArrayStruct - def D(self, i: int): - from MyGame.Example.NestedStruct import NestedStruct + def D(self, i: int) -> NestedStruct: obj = NestedStruct() obj.Init(self._tab.Bytes, self._tab.Pos + 72 + i * 32) return obj # ArrayStruct - def DLength(self): + def DLength(self) -> int: return 2 # ArrayStruct - def DIsNone(self): + def DIsNone(self) -> bool: return False # ArrayStruct @@ -73,11 +74,11 @@ class ArrayStruct(object): return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Int64Flags, self._tab.Pos + 144, self.FLength()) # ArrayStruct - def FLength(self): + def FLength(self) -> int: return 2 # ArrayStruct - def FIsNone(self): + def FIsNone(self) -> bool: return False diff --git a/tests/MyGame/Example/ArrayTable.py b/tests/MyGame/Example/ArrayTable.py index 7f4051f5e..90fbb4a46 100644 --- a/tests/MyGame/Example/ArrayTable.py +++ b/tests/MyGame/Example/ArrayTable.py @@ -4,13 +4,16 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any +from .MyGame.Example.ArrayStruct import ArrayStruct +from typing import Optional np = import_numpy() class ArrayTable(object): __slots__ = ['_tab'] @classmethod - def GetRootAs(cls, buf, offset=0): + def GetRootAs(cls, buf, offset: int = 0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = ArrayTable() x.Init(buf, n + offset) @@ -25,36 +28,35 @@ class ArrayTable(object): return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x41\x52\x52\x54", size_prefixed=size_prefixed) # ArrayTable - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # ArrayTable - def A(self): + def A(self) -> Optional[ArrayStruct]: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: x = o + self._tab.Pos - from MyGame.Example.ArrayStruct import ArrayStruct obj = ArrayStruct() obj.Init(self._tab.Bytes, x) return obj return None -def ArrayTableStart(builder): - return builder.StartObject(1) +def ArrayTableStart(builder: flatbuffers.Builder): + builder.StartObject(1) -def Start(builder): - return ArrayTableStart(builder) +def Start(builder: flatbuffers.Builder): + ArrayTableStart(builder) -def ArrayTableAddA(builder, a): - return builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(a), 0) +def ArrayTableAddA(builder: flatbuffers.Builder, a: Any): + builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(a), 0) -def AddA(builder, a): - return ArrayTableAddA(builder, a) +def AddA(builder: flatbuffers.Builder, a: Any): + ArrayTableAddA(builder, a) -def ArrayTableEnd(builder): +def ArrayTableEnd(builder: flatbuffers.Builder) -> int: return builder.EndObject() -def End(builder): +def End(builder: flatbuffers.Builder) -> int: return ArrayTableEnd(builder) import MyGame.Example.ArrayStruct diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py index bde02b4ab..f216f84f7 100644 --- a/tests/MyGame/Example/Monster.py +++ b/tests/MyGame/Example/Monster.py @@ -34,7 +34,7 @@ class Monster(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: x = o + self._tab.Pos - from MyGame.Example.Vec3 import Vec3 + from .MyGame.Example.Vec3 import Vec3 obj = Vec3() obj.Init(self._tab.Bytes, x) return obj @@ -118,7 +118,7 @@ class Monster(object): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 - from MyGame.Example.Test import Test + from .MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -165,7 +165,7 @@ class Monster(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster obj = Monster() obj.Init(self._tab.Bytes, x) return obj @@ -188,7 +188,7 @@ class Monster(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(28)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster obj = Monster() obj.Init(self._tab.Bytes, x) return obj @@ -213,7 +213,7 @@ class Monster(object): def TestnestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30)) if o != 0: - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -234,7 +234,7 @@ class Monster(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(32)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from MyGame.Example.Stat import Stat + from .MyGame.Example.Stat import Stat obj = Stat() obj.Init(self._tab.Bytes, x) return obj @@ -377,7 +377,7 @@ class Monster(object): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 8 - from MyGame.Example.Ability import Ability + from .MyGame.Example.Ability import Ability obj = Ability() obj.Init(self._tab.Bytes, x) return obj @@ -428,7 +428,7 @@ class Monster(object): if o != 0: x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 - from MyGame.Example.Test import Test + from .MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -505,7 +505,7 @@ class Monster(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(72)) if o != 0: x = self._tab.Indirect(o + self._tab.Pos) - from MyGame.InParentNamespace import InParentNamespace + from .MyGame.InParentNamespace import InParentNamespace obj = InParentNamespace() obj.Init(self._tab.Bytes, x) return obj @@ -518,7 +518,7 @@ class Monster(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from MyGame.Example.Referrable import Referrable + from .MyGame.Example.Referrable import Referrable obj = Referrable() obj.Init(self._tab.Bytes, x) return obj @@ -577,7 +577,7 @@ class Monster(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from MyGame.Example.Referrable import Referrable + from .MyGame.Example.Referrable import Referrable obj = Referrable() obj.Init(self._tab.Bytes, x) return obj @@ -750,7 +750,7 @@ class Monster(object): def TestrequirednestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102)) if o != 0: - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -773,7 +773,7 @@ class Monster(object): x = self._tab.Vector(o) x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4 x = self._tab.Indirect(x) - from MyGame.Example.Stat import Stat + from .MyGame.Example.Stat import Stat obj = Stat() obj.Init(self._tab.Bytes, x) return obj @@ -796,7 +796,7 @@ class Monster(object): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(106)) if o != 0: x = o + self._tab.Pos - from MyGame.Example.Test import Test + from .MyGame.Example.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj @@ -873,117 +873,117 @@ class Monster(object): return float('inf') def MonsterStart(builder): - return builder.StartObject(62) + builder.StartObject(62) def Start(builder): - return MonsterStart(builder) + MonsterStart(builder) def MonsterAddPos(builder, pos): - return builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) + builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) -def AddPos(builder, pos): - return MonsterAddPos(builder, pos) +def AddPos(builder: flatbuffers.Builder, pos: Any): + MonsterAddPos(builder, pos) def MonsterAddMana(builder, mana): - return builder.PrependInt16Slot(1, mana, 150) + builder.PrependInt16Slot(1, mana, 150) -def AddMana(builder, mana): - return MonsterAddMana(builder, mana) +def AddMana(builder: flatbuffers.Builder, mana: int): + MonsterAddMana(builder, mana) def MonsterAddHp(builder, hp): - return builder.PrependInt16Slot(2, hp, 100) + builder.PrependInt16Slot(2, hp, 100) -def AddHp(builder, hp): - return MonsterAddHp(builder, hp) +def AddHp(builder: flatbuffers.Builder, hp: int): + MonsterAddHp(builder, hp) def MonsterAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return MonsterAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + MonsterAddName(builder, name) def MonsterAddInventory(builder, inventory): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0) -def AddInventory(builder, inventory): - return MonsterAddInventory(builder, inventory) +def AddInventory(builder: flatbuffers.Builder, inventory: int): + MonsterAddInventory(builder, inventory) def MonsterStartInventoryVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartInventoryVector(builder, numElems): +def StartInventoryVector(builder, numElems: int) -> int: return MonsterStartInventoryVector(builder, numElems) def MonsterAddColor(builder, color): - return builder.PrependUint8Slot(6, color, 8) + builder.PrependUint8Slot(6, color, 8) -def AddColor(builder, color): - return MonsterAddColor(builder, color) +def AddColor(builder: flatbuffers.Builder, color: int): + MonsterAddColor(builder, color) def MonsterAddTestType(builder, testType): - return builder.PrependUint8Slot(7, testType, 0) + builder.PrependUint8Slot(7, testType, 0) -def AddTestType(builder, testType): - return MonsterAddTestType(builder, testType) +def AddTestType(builder: flatbuffers.Builder, testType: int): + MonsterAddTestType(builder, testType) def MonsterAddTest(builder, test): - return builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0) + builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0) -def AddTest(builder, test): - return MonsterAddTest(builder, test) +def AddTest(builder: flatbuffers.Builder, test: int): + MonsterAddTest(builder, test) def MonsterAddTest4(builder, test4): - return builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0) + builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0) -def AddTest4(builder, test4): - return MonsterAddTest4(builder, test4) +def AddTest4(builder: flatbuffers.Builder, test4: int): + MonsterAddTest4(builder, test4) def MonsterStartTest4Vector(builder, numElems): return builder.StartVector(4, numElems, 2) -def StartTest4Vector(builder, numElems): +def StartTest4Vector(builder, numElems: int) -> int: return MonsterStartTest4Vector(builder, numElems) def MonsterAddTestarrayofstring(builder, testarrayofstring): - return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0) + builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0) -def AddTestarrayofstring(builder, testarrayofstring): - return MonsterAddTestarrayofstring(builder, testarrayofstring) +def AddTestarrayofstring(builder: flatbuffers.Builder, testarrayofstring: int): + MonsterAddTestarrayofstring(builder, testarrayofstring) def MonsterStartTestarrayofstringVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartTestarrayofstringVector(builder, numElems): +def StartTestarrayofstringVector(builder, numElems: int) -> int: return MonsterStartTestarrayofstringVector(builder, numElems) def MonsterAddTestarrayoftables(builder, testarrayoftables): - return builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0) + builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0) -def AddTestarrayoftables(builder, testarrayoftables): - return MonsterAddTestarrayoftables(builder, testarrayoftables) +def AddTestarrayoftables(builder: flatbuffers.Builder, testarrayoftables: int): + MonsterAddTestarrayoftables(builder, testarrayoftables) def MonsterStartTestarrayoftablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartTestarrayoftablesVector(builder, numElems): +def StartTestarrayoftablesVector(builder, numElems: int) -> int: return MonsterStartTestarrayoftablesVector(builder, numElems) def MonsterAddEnemy(builder, enemy): - return builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0) + builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0) -def AddEnemy(builder, enemy): - return MonsterAddEnemy(builder, enemy) +def AddEnemy(builder: flatbuffers.Builder, enemy: int): + MonsterAddEnemy(builder, enemy) def MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer): - return builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0) + builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0) -def AddTestnestedflatbuffer(builder, testnestedflatbuffer): - return MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer) +def AddTestnestedflatbuffer(builder: flatbuffers.Builder, testnestedflatbuffer: int): + MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer) def MonsterStartTestnestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartTestnestedflatbufferVector(builder, numElems): +def StartTestnestedflatbufferVector(builder, numElems: int) -> int: return MonsterStartTestnestedflatbufferVector(builder, numElems) def MonsterMakeTestnestedflatbufferVectorFromBytes(builder, bytes): @@ -994,303 +994,303 @@ def MonsterMakeTestnestedflatbufferVectorFromBytes(builder, bytes): def MakeTestnestedflatbufferVectorFromBytes(builder, bytes): return MonsterMakeTestnestedflatbufferVectorFromBytes(builder, bytes) def MonsterAddTestempty(builder, testempty): - return builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0) + builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0) -def AddTestempty(builder, testempty): - return MonsterAddTestempty(builder, testempty) +def AddTestempty(builder: flatbuffers.Builder, testempty: int): + MonsterAddTestempty(builder, testempty) def MonsterAddTestbool(builder, testbool): - return builder.PrependBoolSlot(15, testbool, 0) + builder.PrependBoolSlot(15, testbool, 0) -def AddTestbool(builder, testbool): - return MonsterAddTestbool(builder, testbool) +def AddTestbool(builder: flatbuffers.Builder, testbool: bool): + MonsterAddTestbool(builder, testbool) def MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1): - return builder.PrependInt32Slot(16, testhashs32Fnv1, 0) + builder.PrependInt32Slot(16, testhashs32Fnv1, 0) -def AddTesthashs32Fnv1(builder, testhashs32Fnv1): - return MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1) +def AddTesthashs32Fnv1(builder: flatbuffers.Builder, testhashs32Fnv1: int): + MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1) def MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1): - return builder.PrependUint32Slot(17, testhashu32Fnv1, 0) + builder.PrependUint32Slot(17, testhashu32Fnv1, 0) -def AddTesthashu32Fnv1(builder, testhashu32Fnv1): - return MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1) +def AddTesthashu32Fnv1(builder: flatbuffers.Builder, testhashu32Fnv1: int): + MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1) def MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1): - return builder.PrependInt64Slot(18, testhashs64Fnv1, 0) + builder.PrependInt64Slot(18, testhashs64Fnv1, 0) -def AddTesthashs64Fnv1(builder, testhashs64Fnv1): - return MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1) +def AddTesthashs64Fnv1(builder: flatbuffers.Builder, testhashs64Fnv1: int): + MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1) def MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1): - return builder.PrependUint64Slot(19, testhashu64Fnv1, 0) + builder.PrependUint64Slot(19, testhashu64Fnv1, 0) -def AddTesthashu64Fnv1(builder, testhashu64Fnv1): - return MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1) +def AddTesthashu64Fnv1(builder: flatbuffers.Builder, testhashu64Fnv1: int): + MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1) def MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a): - return builder.PrependInt32Slot(20, testhashs32Fnv1a, 0) + builder.PrependInt32Slot(20, testhashs32Fnv1a, 0) -def AddTesthashs32Fnv1a(builder, testhashs32Fnv1a): - return MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a) +def AddTesthashs32Fnv1a(builder: flatbuffers.Builder, testhashs32Fnv1a: int): + MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a) def MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a): - return builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) + builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) -def AddTesthashu32Fnv1a(builder, testhashu32Fnv1a): - return MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a) +def AddTesthashu32Fnv1a(builder: flatbuffers.Builder, testhashu32Fnv1a: int): + MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a) def MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a): - return builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) + builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) -def AddTesthashs64Fnv1a(builder, testhashs64Fnv1a): - return MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a) +def AddTesthashs64Fnv1a(builder: flatbuffers.Builder, testhashs64Fnv1a: int): + MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a) def MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a): - return builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) + builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) -def AddTesthashu64Fnv1a(builder, testhashu64Fnv1a): - return MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a) +def AddTesthashu64Fnv1a(builder: flatbuffers.Builder, testhashu64Fnv1a: int): + MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a) def MonsterAddTestarrayofbools(builder, testarrayofbools): - return builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0) + builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0) -def AddTestarrayofbools(builder, testarrayofbools): - return MonsterAddTestarrayofbools(builder, testarrayofbools) +def AddTestarrayofbools(builder: flatbuffers.Builder, testarrayofbools: int): + MonsterAddTestarrayofbools(builder, testarrayofbools) def MonsterStartTestarrayofboolsVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartTestarrayofboolsVector(builder, numElems): +def StartTestarrayofboolsVector(builder, numElems: int) -> int: return MonsterStartTestarrayofboolsVector(builder, numElems) def MonsterAddTestf(builder, testf): - return builder.PrependFloat32Slot(25, testf, 3.14159) + builder.PrependFloat32Slot(25, testf, 3.14159) -def AddTestf(builder, testf): - return MonsterAddTestf(builder, testf) +def AddTestf(builder: flatbuffers.Builder, testf: float): + MonsterAddTestf(builder, testf) def MonsterAddTestf2(builder, testf2): - return builder.PrependFloat32Slot(26, testf2, 3.0) + builder.PrependFloat32Slot(26, testf2, 3.0) -def AddTestf2(builder, testf2): - return MonsterAddTestf2(builder, testf2) +def AddTestf2(builder: flatbuffers.Builder, testf2: float): + MonsterAddTestf2(builder, testf2) def MonsterAddTestf3(builder, testf3): - return builder.PrependFloat32Slot(27, testf3, 0.0) + builder.PrependFloat32Slot(27, testf3, 0.0) -def AddTestf3(builder, testf3): - return MonsterAddTestf3(builder, testf3) +def AddTestf3(builder: flatbuffers.Builder, testf3: float): + MonsterAddTestf3(builder, testf3) def MonsterAddTestarrayofstring2(builder, testarrayofstring2): - return builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0) + builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0) -def AddTestarrayofstring2(builder, testarrayofstring2): - return MonsterAddTestarrayofstring2(builder, testarrayofstring2) +def AddTestarrayofstring2(builder: flatbuffers.Builder, testarrayofstring2: int): + MonsterAddTestarrayofstring2(builder, testarrayofstring2) def MonsterStartTestarrayofstring2Vector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartTestarrayofstring2Vector(builder, numElems): +def StartTestarrayofstring2Vector(builder, numElems: int) -> int: return MonsterStartTestarrayofstring2Vector(builder, numElems) def MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct): - return builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0) + builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0) -def AddTestarrayofsortedstruct(builder, testarrayofsortedstruct): - return MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct) +def AddTestarrayofsortedstruct(builder: flatbuffers.Builder, testarrayofsortedstruct: int): + MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct) def MonsterStartTestarrayofsortedstructVector(builder, numElems): return builder.StartVector(8, numElems, 4) -def StartTestarrayofsortedstructVector(builder, numElems): +def StartTestarrayofsortedstructVector(builder, numElems: int) -> int: return MonsterStartTestarrayofsortedstructVector(builder, numElems) def MonsterAddFlex(builder, flex): - return builder.PrependUOffsetTRelativeSlot(30, flatbuffers.number_types.UOffsetTFlags.py_type(flex), 0) + builder.PrependUOffsetTRelativeSlot(30, flatbuffers.number_types.UOffsetTFlags.py_type(flex), 0) -def AddFlex(builder, flex): - return MonsterAddFlex(builder, flex) +def AddFlex(builder: flatbuffers.Builder, flex: int): + MonsterAddFlex(builder, flex) def MonsterStartFlexVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartFlexVector(builder, numElems): +def StartFlexVector(builder, numElems: int) -> int: return MonsterStartFlexVector(builder, numElems) def MonsterAddTest5(builder, test5): - return builder.PrependUOffsetTRelativeSlot(31, flatbuffers.number_types.UOffsetTFlags.py_type(test5), 0) + builder.PrependUOffsetTRelativeSlot(31, flatbuffers.number_types.UOffsetTFlags.py_type(test5), 0) -def AddTest5(builder, test5): - return MonsterAddTest5(builder, test5) +def AddTest5(builder: flatbuffers.Builder, test5: int): + MonsterAddTest5(builder, test5) def MonsterStartTest5Vector(builder, numElems): return builder.StartVector(4, numElems, 2) -def StartTest5Vector(builder, numElems): +def StartTest5Vector(builder, numElems: int) -> int: return MonsterStartTest5Vector(builder, numElems) def MonsterAddVectorOfLongs(builder, vectorOfLongs): - return builder.PrependUOffsetTRelativeSlot(32, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfLongs), 0) + builder.PrependUOffsetTRelativeSlot(32, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfLongs), 0) -def AddVectorOfLongs(builder, vectorOfLongs): - return MonsterAddVectorOfLongs(builder, vectorOfLongs) +def AddVectorOfLongs(builder: flatbuffers.Builder, vectorOfLongs: int): + MonsterAddVectorOfLongs(builder, vectorOfLongs) def MonsterStartVectorOfLongsVector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVectorOfLongsVector(builder, numElems): +def StartVectorOfLongsVector(builder, numElems: int) -> int: return MonsterStartVectorOfLongsVector(builder, numElems) def MonsterAddVectorOfDoubles(builder, vectorOfDoubles): - return builder.PrependUOffsetTRelativeSlot(33, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfDoubles), 0) + builder.PrependUOffsetTRelativeSlot(33, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfDoubles), 0) -def AddVectorOfDoubles(builder, vectorOfDoubles): - return MonsterAddVectorOfDoubles(builder, vectorOfDoubles) +def AddVectorOfDoubles(builder: flatbuffers.Builder, vectorOfDoubles: int): + MonsterAddVectorOfDoubles(builder, vectorOfDoubles) def MonsterStartVectorOfDoublesVector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVectorOfDoublesVector(builder, numElems): +def StartVectorOfDoublesVector(builder, numElems: int) -> int: return MonsterStartVectorOfDoublesVector(builder, numElems) def MonsterAddParentNamespaceTest(builder, parentNamespaceTest): - return builder.PrependUOffsetTRelativeSlot(34, flatbuffers.number_types.UOffsetTFlags.py_type(parentNamespaceTest), 0) + builder.PrependUOffsetTRelativeSlot(34, flatbuffers.number_types.UOffsetTFlags.py_type(parentNamespaceTest), 0) -def AddParentNamespaceTest(builder, parentNamespaceTest): - return MonsterAddParentNamespaceTest(builder, parentNamespaceTest) +def AddParentNamespaceTest(builder: flatbuffers.Builder, parentNamespaceTest: int): + MonsterAddParentNamespaceTest(builder, parentNamespaceTest) def MonsterAddVectorOfReferrables(builder, vectorOfReferrables): - return builder.PrependUOffsetTRelativeSlot(35, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfReferrables), 0) + builder.PrependUOffsetTRelativeSlot(35, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfReferrables), 0) -def AddVectorOfReferrables(builder, vectorOfReferrables): - return MonsterAddVectorOfReferrables(builder, vectorOfReferrables) +def AddVectorOfReferrables(builder: flatbuffers.Builder, vectorOfReferrables: int): + MonsterAddVectorOfReferrables(builder, vectorOfReferrables) def MonsterStartVectorOfReferrablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartVectorOfReferrablesVector(builder, numElems): +def StartVectorOfReferrablesVector(builder, numElems: int) -> int: return MonsterStartVectorOfReferrablesVector(builder, numElems) def MonsterAddSingleWeakReference(builder, singleWeakReference): - return builder.PrependUint64Slot(36, singleWeakReference, 0) + builder.PrependUint64Slot(36, singleWeakReference, 0) -def AddSingleWeakReference(builder, singleWeakReference): - return MonsterAddSingleWeakReference(builder, singleWeakReference) +def AddSingleWeakReference(builder: flatbuffers.Builder, singleWeakReference: int): + MonsterAddSingleWeakReference(builder, singleWeakReference) def MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences): - return builder.PrependUOffsetTRelativeSlot(37, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfWeakReferences), 0) + builder.PrependUOffsetTRelativeSlot(37, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfWeakReferences), 0) -def AddVectorOfWeakReferences(builder, vectorOfWeakReferences): - return MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences) +def AddVectorOfWeakReferences(builder: flatbuffers.Builder, vectorOfWeakReferences: int): + MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences) def MonsterStartVectorOfWeakReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVectorOfWeakReferencesVector(builder, numElems): +def StartVectorOfWeakReferencesVector(builder, numElems: int) -> int: return MonsterStartVectorOfWeakReferencesVector(builder, numElems) def MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables): - return builder.PrependUOffsetTRelativeSlot(38, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfStrongReferrables), 0) + builder.PrependUOffsetTRelativeSlot(38, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfStrongReferrables), 0) -def AddVectorOfStrongReferrables(builder, vectorOfStrongReferrables): - return MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables) +def AddVectorOfStrongReferrables(builder: flatbuffers.Builder, vectorOfStrongReferrables: int): + MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables) def MonsterStartVectorOfStrongReferrablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartVectorOfStrongReferrablesVector(builder, numElems): +def StartVectorOfStrongReferrablesVector(builder, numElems: int) -> int: return MonsterStartVectorOfStrongReferrablesVector(builder, numElems) def MonsterAddCoOwningReference(builder, coOwningReference): - return builder.PrependUint64Slot(39, coOwningReference, 0) + builder.PrependUint64Slot(39, coOwningReference, 0) -def AddCoOwningReference(builder, coOwningReference): - return MonsterAddCoOwningReference(builder, coOwningReference) +def AddCoOwningReference(builder: flatbuffers.Builder, coOwningReference: int): + MonsterAddCoOwningReference(builder, coOwningReference) def MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences): - return builder.PrependUOffsetTRelativeSlot(40, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfCoOwningReferences), 0) + builder.PrependUOffsetTRelativeSlot(40, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfCoOwningReferences), 0) -def AddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences): - return MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences) +def AddVectorOfCoOwningReferences(builder: flatbuffers.Builder, vectorOfCoOwningReferences: int): + MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences) def MonsterStartVectorOfCoOwningReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVectorOfCoOwningReferencesVector(builder, numElems): +def StartVectorOfCoOwningReferencesVector(builder, numElems: int) -> int: return MonsterStartVectorOfCoOwningReferencesVector(builder, numElems) def MonsterAddNonOwningReference(builder, nonOwningReference): - return builder.PrependUint64Slot(41, nonOwningReference, 0) + builder.PrependUint64Slot(41, nonOwningReference, 0) -def AddNonOwningReference(builder, nonOwningReference): - return MonsterAddNonOwningReference(builder, nonOwningReference) +def AddNonOwningReference(builder: flatbuffers.Builder, nonOwningReference: int): + MonsterAddNonOwningReference(builder, nonOwningReference) def MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): - return builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0) + builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0) -def AddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): - return MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences) +def AddVectorOfNonOwningReferences(builder: flatbuffers.Builder, vectorOfNonOwningReferences: int): + MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences) def MonsterStartVectorOfNonOwningReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVectorOfNonOwningReferencesVector(builder, numElems): +def StartVectorOfNonOwningReferencesVector(builder, numElems: int) -> int: return MonsterStartVectorOfNonOwningReferencesVector(builder, numElems) def MonsterAddAnyUniqueType(builder, anyUniqueType): - return builder.PrependUint8Slot(43, anyUniqueType, 0) + builder.PrependUint8Slot(43, anyUniqueType, 0) -def AddAnyUniqueType(builder, anyUniqueType): - return MonsterAddAnyUniqueType(builder, anyUniqueType) +def AddAnyUniqueType(builder: flatbuffers.Builder, anyUniqueType: int): + MonsterAddAnyUniqueType(builder, anyUniqueType) def MonsterAddAnyUnique(builder, anyUnique): - return builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0) + builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0) -def AddAnyUnique(builder, anyUnique): - return MonsterAddAnyUnique(builder, anyUnique) +def AddAnyUnique(builder: flatbuffers.Builder, anyUnique: int): + MonsterAddAnyUnique(builder, anyUnique) def MonsterAddAnyAmbiguousType(builder, anyAmbiguousType): - return builder.PrependUint8Slot(45, anyAmbiguousType, 0) + builder.PrependUint8Slot(45, anyAmbiguousType, 0) -def AddAnyAmbiguousType(builder, anyAmbiguousType): - return MonsterAddAnyAmbiguousType(builder, anyAmbiguousType) +def AddAnyAmbiguousType(builder: flatbuffers.Builder, anyAmbiguousType: int): + MonsterAddAnyAmbiguousType(builder, anyAmbiguousType) def MonsterAddAnyAmbiguous(builder, anyAmbiguous): - return builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0) + builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0) -def AddAnyAmbiguous(builder, anyAmbiguous): - return MonsterAddAnyAmbiguous(builder, anyAmbiguous) +def AddAnyAmbiguous(builder: flatbuffers.Builder, anyAmbiguous: int): + MonsterAddAnyAmbiguous(builder, anyAmbiguous) def MonsterAddVectorOfEnums(builder, vectorOfEnums): - return builder.PrependUOffsetTRelativeSlot(47, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfEnums), 0) + builder.PrependUOffsetTRelativeSlot(47, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfEnums), 0) -def AddVectorOfEnums(builder, vectorOfEnums): - return MonsterAddVectorOfEnums(builder, vectorOfEnums) +def AddVectorOfEnums(builder: flatbuffers.Builder, vectorOfEnums: int): + MonsterAddVectorOfEnums(builder, vectorOfEnums) def MonsterStartVectorOfEnumsVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartVectorOfEnumsVector(builder, numElems): +def StartVectorOfEnumsVector(builder, numElems: int) -> int: return MonsterStartVectorOfEnumsVector(builder, numElems) def MonsterAddSignedEnum(builder, signedEnum): - return builder.PrependInt8Slot(48, signedEnum, -1) + builder.PrependInt8Slot(48, signedEnum, -1) -def AddSignedEnum(builder, signedEnum): - return MonsterAddSignedEnum(builder, signedEnum) +def AddSignedEnum(builder: flatbuffers.Builder, signedEnum: int): + MonsterAddSignedEnum(builder, signedEnum) def MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): - return builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0) + builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0) -def AddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): - return MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer) +def AddTestrequirednestedflatbuffer(builder: flatbuffers.Builder, testrequirednestedflatbuffer: int): + MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer) def MonsterStartTestrequirednestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartTestrequirednestedflatbufferVector(builder, numElems): +def StartTestrequirednestedflatbufferVector(builder, numElems: int) -> int: return MonsterStartTestrequirednestedflatbufferVector(builder, numElems) def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): @@ -1301,82 +1301,82 @@ def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): def MakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): return MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes) def MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables): - return builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) + builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) -def AddScalarKeySortedTables(builder, scalarKeySortedTables): - return MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables) +def AddScalarKeySortedTables(builder: flatbuffers.Builder, scalarKeySortedTables: int): + MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables) def MonsterStartScalarKeySortedTablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) -def StartScalarKeySortedTablesVector(builder, numElems): +def StartScalarKeySortedTablesVector(builder, numElems: int) -> int: return MonsterStartScalarKeySortedTablesVector(builder, numElems) def MonsterAddNativeInline(builder, nativeInline): - return builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) + builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) -def AddNativeInline(builder, nativeInline): - return MonsterAddNativeInline(builder, nativeInline) +def AddNativeInline(builder: flatbuffers.Builder, nativeInline: Any): + MonsterAddNativeInline(builder, nativeInline) def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): - return builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) + builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) -def AddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): - return MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault) +def AddLongEnumNonEnumDefault(builder: flatbuffers.Builder, longEnumNonEnumDefault: int): + MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault) def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): - return builder.PrependUint64Slot(53, longEnumNormalDefault, 2) + builder.PrependUint64Slot(53, longEnumNormalDefault, 2) -def AddLongEnumNormalDefault(builder, longEnumNormalDefault): - return MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault) +def AddLongEnumNormalDefault(builder: flatbuffers.Builder, longEnumNormalDefault: int): + MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault) def MonsterAddNanDefault(builder, nanDefault): - return builder.PrependFloat32Slot(54, nanDefault, float('nan')) + builder.PrependFloat32Slot(54, nanDefault, float('nan')) -def AddNanDefault(builder, nanDefault): - return MonsterAddNanDefault(builder, nanDefault) +def AddNanDefault(builder: flatbuffers.Builder, nanDefault: float): + MonsterAddNanDefault(builder, nanDefault) def MonsterAddInfDefault(builder, infDefault): - return builder.PrependFloat32Slot(55, infDefault, float('inf')) + builder.PrependFloat32Slot(55, infDefault, float('inf')) -def AddInfDefault(builder, infDefault): - return MonsterAddInfDefault(builder, infDefault) +def AddInfDefault(builder: flatbuffers.Builder, infDefault: float): + MonsterAddInfDefault(builder, infDefault) def MonsterAddPositiveInfDefault(builder, positiveInfDefault): - return builder.PrependFloat32Slot(56, positiveInfDefault, float('inf')) + builder.PrependFloat32Slot(56, positiveInfDefault, float('inf')) -def AddPositiveInfDefault(builder, positiveInfDefault): - return MonsterAddPositiveInfDefault(builder, positiveInfDefault) +def AddPositiveInfDefault(builder: flatbuffers.Builder, positiveInfDefault: float): + MonsterAddPositiveInfDefault(builder, positiveInfDefault) def MonsterAddInfinityDefault(builder, infinityDefault): - return builder.PrependFloat32Slot(57, infinityDefault, float('inf')) + builder.PrependFloat32Slot(57, infinityDefault, float('inf')) -def AddInfinityDefault(builder, infinityDefault): - return MonsterAddInfinityDefault(builder, infinityDefault) +def AddInfinityDefault(builder: flatbuffers.Builder, infinityDefault: float): + MonsterAddInfinityDefault(builder, infinityDefault) def MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault): - return builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf')) + builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf')) -def AddPositiveInfinityDefault(builder, positiveInfinityDefault): - return MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault) +def AddPositiveInfinityDefault(builder: flatbuffers.Builder, positiveInfinityDefault: float): + MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault) def MonsterAddNegativeInfDefault(builder, negativeInfDefault): - return builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf')) + builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf')) -def AddNegativeInfDefault(builder, negativeInfDefault): - return MonsterAddNegativeInfDefault(builder, negativeInfDefault) +def AddNegativeInfDefault(builder: flatbuffers.Builder, negativeInfDefault: float): + MonsterAddNegativeInfDefault(builder, negativeInfDefault) def MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault): - return builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf')) + builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf')) -def AddNegativeInfinityDefault(builder, negativeInfinityDefault): - return MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault) +def AddNegativeInfinityDefault(builder: flatbuffers.Builder, negativeInfinityDefault: float): + MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault) def MonsterAddDoubleInfDefault(builder, doubleInfDefault): - return builder.PrependFloat64Slot(61, doubleInfDefault, float('inf')) + builder.PrependFloat64Slot(61, doubleInfDefault, float('inf')) -def AddDoubleInfDefault(builder, doubleInfDefault): - return MonsterAddDoubleInfDefault(builder, doubleInfDefault) +def AddDoubleInfDefault(builder: flatbuffers.Builder, doubleInfDefault: float): + MonsterAddDoubleInfDefault(builder, doubleInfDefault) def MonsterEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/Example/NestedStruct.py b/tests/MyGame/Example/NestedStruct.py index 7f8d18ef1..d5d672a2e 100644 --- a/tests/MyGame/Example/NestedStruct.py +++ b/tests/MyGame/Example/NestedStruct.py @@ -4,17 +4,18 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any np = import_numpy() class NestedStruct(object): __slots__ = ['_tab'] @classmethod - def SizeOf(cls): + def SizeOf(cls) -> int: return 32 # NestedStruct - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # NestedStruct @@ -31,11 +32,11 @@ class NestedStruct(object): return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Int32Flags, self._tab.Pos + 0, self.ALength()) # NestedStruct - def ALength(self): + def ALength(self) -> int: return 2 # NestedStruct - def AIsNone(self): + def AIsNone(self) -> bool: return False # NestedStruct @@ -54,11 +55,11 @@ class NestedStruct(object): return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Int8Flags, self._tab.Pos + 9, self.CLength()) # NestedStruct - def CLength(self): + def CLength(self) -> int: return 2 # NestedStruct - def CIsNone(self): + def CIsNone(self) -> bool: return False # NestedStruct @@ -75,11 +76,11 @@ class NestedStruct(object): return self._tab.GetArrayAsNumpy(flatbuffers.number_types.Int64Flags, self._tab.Pos + 16, self.DLength()) # NestedStruct - def DLength(self): + def DLength(self) -> int: return 2 # NestedStruct - def DIsNone(self): + def DIsNone(self) -> bool: return False diff --git a/tests/MyGame/Example/NestedUnion/NestedUnionTest.py b/tests/MyGame/Example/NestedUnion/NestedUnionTest.py index 33c2a4415..7540b6e8a 100644 --- a/tests/MyGame/Example/NestedUnion/NestedUnionTest.py +++ b/tests/MyGame/Example/NestedUnion/NestedUnionTest.py @@ -4,13 +4,16 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any +from flatbuffers.table import Table +from typing import Optional np = import_numpy() class NestedUnionTest(object): __slots__ = ['_tab'] @classmethod - def GetRootAs(cls, buf, offset=0): + def GetRootAs(cls, buf, offset: int = 0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = NestedUnionTest() x.Init(buf, n + offset) @@ -21,11 +24,11 @@ class NestedUnionTest(object): """This method is deprecated. Please switch to GetRootAs.""" return cls.GetRootAs(buf, offset) # NestedUnionTest - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # NestedUnionTest - def Name(self): + def Name(self) -> Optional[str]: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4)) if o != 0: return self._tab.String(o + self._tab.Pos) @@ -39,10 +42,9 @@ class NestedUnionTest(object): return 0 # NestedUnionTest - def Data(self): + def Data(self) -> Optional[flatbuffers.table.Table]: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8)) if o != 0: - from flatbuffers.table import Table obj = Table(bytearray(), 0) self._tab.Union(obj, o) return obj @@ -55,40 +57,40 @@ class NestedUnionTest(object): return self._tab.Get(flatbuffers.number_types.Int16Flags, o + self._tab.Pos) return 0 -def NestedUnionTestStart(builder): - return builder.StartObject(4) +def NestedUnionTestStart(builder: flatbuffers.Builder): + builder.StartObject(4) -def Start(builder): - return NestedUnionTestStart(builder) +def Start(builder: flatbuffers.Builder): + NestedUnionTestStart(builder) -def NestedUnionTestAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) +def NestedUnionTestAddName(builder: flatbuffers.Builder, name: int): + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) -def AddName(builder, name): - return NestedUnionTestAddName(builder, name) +def AddName(builder: flatbuffers.Builder, name: int): + NestedUnionTestAddName(builder, name) -def NestedUnionTestAddDataType(builder, dataType): - return builder.PrependUint8Slot(1, dataType, 0) +def NestedUnionTestAddDataType(builder: flatbuffers.Builder, dataType: int): + builder.PrependUint8Slot(1, dataType, 0) -def AddDataType(builder, dataType): - return NestedUnionTestAddDataType(builder, dataType) +def AddDataType(builder: flatbuffers.Builder, dataType: int): + NestedUnionTestAddDataType(builder, dataType) -def NestedUnionTestAddData(builder, data): - return builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0) +def NestedUnionTestAddData(builder: flatbuffers.Builder, data: int): + builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(data), 0) -def AddData(builder, data): - return NestedUnionTestAddData(builder, data) +def AddData(builder: flatbuffers.Builder, data: int): + NestedUnionTestAddData(builder, data) -def NestedUnionTestAddId(builder, id): - return builder.PrependInt16Slot(3, id, 0) +def NestedUnionTestAddId(builder: flatbuffers.Builder, id: int): + builder.PrependInt16Slot(3, id, 0) -def AddId(builder, id): - return NestedUnionTestAddId(builder, id) +def AddId(builder: flatbuffers.Builder, id: int): + NestedUnionTestAddId(builder, id) -def NestedUnionTestEnd(builder): +def NestedUnionTestEnd(builder: flatbuffers.Builder) -> int: return builder.EndObject() -def End(builder): +def End(builder: flatbuffers.Builder) -> int: return NestedUnionTestEnd(builder) import MyGame.Example.NestedUnion.Any diff --git a/tests/MyGame/Example/NestedUnion/Test.py b/tests/MyGame/Example/NestedUnion/Test.py index 143d1dfde..e4e90be27 100644 --- a/tests/MyGame/Example/NestedUnion/Test.py +++ b/tests/MyGame/Example/NestedUnion/Test.py @@ -4,17 +4,18 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any np = import_numpy() class Test(object): __slots__ = ['_tab'] @classmethod - def SizeOf(cls): + def SizeOf(cls) -> int: return 4 # Test - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # Test diff --git a/tests/MyGame/Example/NestedUnion/TestSimpleTableWithEnum.py b/tests/MyGame/Example/NestedUnion/TestSimpleTableWithEnum.py index b3ad74f76..9b7ef28c0 100644 --- a/tests/MyGame/Example/NestedUnion/TestSimpleTableWithEnum.py +++ b/tests/MyGame/Example/NestedUnion/TestSimpleTableWithEnum.py @@ -4,13 +4,14 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any np = import_numpy() class TestSimpleTableWithEnum(object): __slots__ = ['_tab'] @classmethod - def GetRootAs(cls, buf, offset=0): + def GetRootAs(cls, buf, offset: int = 0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = TestSimpleTableWithEnum() x.Init(buf, n + offset) @@ -21,7 +22,7 @@ class TestSimpleTableWithEnum(object): """This method is deprecated. Please switch to GetRootAs.""" return cls.GetRootAs(buf, offset) # TestSimpleTableWithEnum - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # TestSimpleTableWithEnum @@ -31,22 +32,22 @@ class TestSimpleTableWithEnum(object): return self._tab.Get(flatbuffers.number_types.Uint8Flags, o + self._tab.Pos) return 2 -def TestSimpleTableWithEnumStart(builder): - return builder.StartObject(1) +def TestSimpleTableWithEnumStart(builder: flatbuffers.Builder): + builder.StartObject(1) -def Start(builder): - return TestSimpleTableWithEnumStart(builder) +def Start(builder: flatbuffers.Builder): + TestSimpleTableWithEnumStart(builder) -def TestSimpleTableWithEnumAddColor(builder, color): - return builder.PrependUint8Slot(0, color, 2) +def TestSimpleTableWithEnumAddColor(builder: flatbuffers.Builder, color: int): + builder.PrependUint8Slot(0, color, 2) -def AddColor(builder, color): - return TestSimpleTableWithEnumAddColor(builder, color) +def AddColor(builder: flatbuffers.Builder, color: int): + TestSimpleTableWithEnumAddColor(builder, color) -def TestSimpleTableWithEnumEnd(builder): +def TestSimpleTableWithEnumEnd(builder: flatbuffers.Builder) -> int: return builder.EndObject() -def End(builder): +def End(builder: flatbuffers.Builder) -> int: return TestSimpleTableWithEnumEnd(builder) diff --git a/tests/MyGame/Example/NestedUnion/Vec3.py b/tests/MyGame/Example/NestedUnion/Vec3.py index 915f58014..11feab119 100644 --- a/tests/MyGame/Example/NestedUnion/Vec3.py +++ b/tests/MyGame/Example/NestedUnion/Vec3.py @@ -4,13 +4,16 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any +from .MyGame.Example.NestedUnion.Test import Test +from typing import Optional np = import_numpy() class Vec3(object): __slots__ = ['_tab'] @classmethod - def GetRootAs(cls, buf, offset=0): + def GetRootAs(cls, buf, offset: int = 0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = Vec3() x.Init(buf, n + offset) @@ -21,7 +24,7 @@ class Vec3(object): """This method is deprecated. Please switch to GetRootAs.""" return cls.GetRootAs(buf, offset) # Vec3 - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # Vec3 @@ -60,62 +63,61 @@ class Vec3(object): return 0 # Vec3 - def Test3(self): + def Test3(self) -> Optional[Test]: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14)) if o != 0: x = o + self._tab.Pos - from MyGame.Example.NestedUnion.Test import Test obj = Test() obj.Init(self._tab.Bytes, x) return obj return None -def Vec3Start(builder): - return builder.StartObject(6) +def Vec3Start(builder: flatbuffers.Builder): + builder.StartObject(6) -def Start(builder): - return Vec3Start(builder) +def Start(builder: flatbuffers.Builder): + Vec3Start(builder) -def Vec3AddX(builder, x): - return builder.PrependFloat64Slot(0, x, 0.0) +def Vec3AddX(builder: flatbuffers.Builder, x: float): + builder.PrependFloat64Slot(0, x, 0.0) -def AddX(builder, x): - return Vec3AddX(builder, x) +def AddX(builder: flatbuffers.Builder, x: float): + Vec3AddX(builder, x) -def Vec3AddY(builder, y): - return builder.PrependFloat64Slot(1, y, 0.0) +def Vec3AddY(builder: flatbuffers.Builder, y: float): + builder.PrependFloat64Slot(1, y, 0.0) -def AddY(builder, y): - return Vec3AddY(builder, y) +def AddY(builder: flatbuffers.Builder, y: float): + Vec3AddY(builder, y) -def Vec3AddZ(builder, z): - return builder.PrependFloat64Slot(2, z, 0.0) +def Vec3AddZ(builder: flatbuffers.Builder, z: float): + builder.PrependFloat64Slot(2, z, 0.0) -def AddZ(builder, z): - return Vec3AddZ(builder, z) +def AddZ(builder: flatbuffers.Builder, z: float): + Vec3AddZ(builder, z) -def Vec3AddTest1(builder, test1): - return builder.PrependFloat64Slot(3, test1, 0.0) +def Vec3AddTest1(builder: flatbuffers.Builder, test1: float): + builder.PrependFloat64Slot(3, test1, 0.0) -def AddTest1(builder, test1): - return Vec3AddTest1(builder, test1) +def AddTest1(builder: flatbuffers.Builder, test1: float): + Vec3AddTest1(builder, test1) -def Vec3AddTest2(builder, test2): - return builder.PrependUint8Slot(4, test2, 0) +def Vec3AddTest2(builder: flatbuffers.Builder, test2: int): + builder.PrependUint8Slot(4, test2, 0) -def AddTest2(builder, test2): - return Vec3AddTest2(builder, test2) +def AddTest2(builder: flatbuffers.Builder, test2: int): + Vec3AddTest2(builder, test2) -def Vec3AddTest3(builder, test3): - return builder.PrependStructSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(test3), 0) +def Vec3AddTest3(builder: flatbuffers.Builder, test3: Any): + builder.PrependStructSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(test3), 0) -def AddTest3(builder, test3): - return Vec3AddTest3(builder, test3) +def AddTest3(builder: flatbuffers.Builder, test3: Any): + Vec3AddTest3(builder, test3) -def Vec3End(builder): +def Vec3End(builder: flatbuffers.Builder) -> int: return builder.EndObject() -def End(builder): +def End(builder: flatbuffers.Builder) -> int: return Vec3End(builder) import MyGame.Example.NestedUnion.Test diff --git a/tests/MyGame/Example/Referrable.py b/tests/MyGame/Example/Referrable.py index e5081e1ae..203c93412 100644 --- a/tests/MyGame/Example/Referrable.py +++ b/tests/MyGame/Example/Referrable.py @@ -36,16 +36,16 @@ class Referrable(object): return 0 def ReferrableStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def Start(builder): - return ReferrableStart(builder) + ReferrableStart(builder) def ReferrableAddId(builder, id): - return builder.PrependUint64Slot(0, id, 0) + builder.PrependUint64Slot(0, id, 0) -def AddId(builder, id): - return ReferrableAddId(builder, id) +def AddId(builder: flatbuffers.Builder, id: int): + ReferrableAddId(builder, id) def ReferrableEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/Example/Stat.py b/tests/MyGame/Example/Stat.py index 00ca1a468..4f175574e 100644 --- a/tests/MyGame/Example/Stat.py +++ b/tests/MyGame/Example/Stat.py @@ -50,28 +50,28 @@ class Stat(object): return 0 def StatStart(builder): - return builder.StartObject(3) + builder.StartObject(3) def Start(builder): - return StatStart(builder) + StatStart(builder) def StatAddId(builder, id): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0) -def AddId(builder, id): - return StatAddId(builder, id) +def AddId(builder: flatbuffers.Builder, id: int): + StatAddId(builder, id) def StatAddVal(builder, val): - return builder.PrependInt64Slot(1, val, 0) + builder.PrependInt64Slot(1, val, 0) -def AddVal(builder, val): - return StatAddVal(builder, val) +def AddVal(builder: flatbuffers.Builder, val: int): + StatAddVal(builder, val) def StatAddCount(builder, count): - return builder.PrependUint16Slot(2, count, 0) + builder.PrependUint16Slot(2, count, 0) -def AddCount(builder, count): - return StatAddCount(builder, count) +def AddCount(builder: flatbuffers.Builder, count: int): + StatAddCount(builder, count) def StatEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.py b/tests/MyGame/Example/TestSimpleTableWithEnum.py index 99e5c41bc..856442c8e 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.py +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.py @@ -36,16 +36,16 @@ class TestSimpleTableWithEnum(object): return 2 def TestSimpleTableWithEnumStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def Start(builder): - return TestSimpleTableWithEnumStart(builder) + TestSimpleTableWithEnumStart(builder) def TestSimpleTableWithEnumAddColor(builder, color): - return builder.PrependUint8Slot(0, color, 2) + builder.PrependUint8Slot(0, color, 2) -def AddColor(builder, color): - return TestSimpleTableWithEnumAddColor(builder, color) +def AddColor(builder: flatbuffers.Builder, color: int): + TestSimpleTableWithEnumAddColor(builder, color) def TestSimpleTableWithEnumEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/Example/TypeAliases.py b/tests/MyGame/Example/TypeAliases.py index 8fb33b9d3..27c6c4f93 100644 --- a/tests/MyGame/Example/TypeAliases.py +++ b/tests/MyGame/Example/TypeAliases.py @@ -153,93 +153,93 @@ class TypeAliases(object): return o == 0 def TypeAliasesStart(builder): - return builder.StartObject(12) + builder.StartObject(12) def Start(builder): - return TypeAliasesStart(builder) + TypeAliasesStart(builder) def TypeAliasesAddI8(builder, i8): - return builder.PrependInt8Slot(0, i8, 0) + builder.PrependInt8Slot(0, i8, 0) -def AddI8(builder, i8): - return TypeAliasesAddI8(builder, i8) +def AddI8(builder: flatbuffers.Builder, i8: int): + TypeAliasesAddI8(builder, i8) def TypeAliasesAddU8(builder, u8): - return builder.PrependUint8Slot(1, u8, 0) + builder.PrependUint8Slot(1, u8, 0) -def AddU8(builder, u8): - return TypeAliasesAddU8(builder, u8) +def AddU8(builder: flatbuffers.Builder, u8: int): + TypeAliasesAddU8(builder, u8) def TypeAliasesAddI16(builder, i16): - return builder.PrependInt16Slot(2, i16, 0) + builder.PrependInt16Slot(2, i16, 0) -def AddI16(builder, i16): - return TypeAliasesAddI16(builder, i16) +def AddI16(builder: flatbuffers.Builder, i16: int): + TypeAliasesAddI16(builder, i16) def TypeAliasesAddU16(builder, u16): - return builder.PrependUint16Slot(3, u16, 0) + builder.PrependUint16Slot(3, u16, 0) -def AddU16(builder, u16): - return TypeAliasesAddU16(builder, u16) +def AddU16(builder: flatbuffers.Builder, u16: int): + TypeAliasesAddU16(builder, u16) def TypeAliasesAddI32(builder, i32): - return builder.PrependInt32Slot(4, i32, 0) + builder.PrependInt32Slot(4, i32, 0) -def AddI32(builder, i32): - return TypeAliasesAddI32(builder, i32) +def AddI32(builder: flatbuffers.Builder, i32: int): + TypeAliasesAddI32(builder, i32) def TypeAliasesAddU32(builder, u32): - return builder.PrependUint32Slot(5, u32, 0) + builder.PrependUint32Slot(5, u32, 0) -def AddU32(builder, u32): - return TypeAliasesAddU32(builder, u32) +def AddU32(builder: flatbuffers.Builder, u32: int): + TypeAliasesAddU32(builder, u32) def TypeAliasesAddI64(builder, i64): - return builder.PrependInt64Slot(6, i64, 0) + builder.PrependInt64Slot(6, i64, 0) -def AddI64(builder, i64): - return TypeAliasesAddI64(builder, i64) +def AddI64(builder: flatbuffers.Builder, i64: int): + TypeAliasesAddI64(builder, i64) def TypeAliasesAddU64(builder, u64): - return builder.PrependUint64Slot(7, u64, 0) + builder.PrependUint64Slot(7, u64, 0) -def AddU64(builder, u64): - return TypeAliasesAddU64(builder, u64) +def AddU64(builder: flatbuffers.Builder, u64: int): + TypeAliasesAddU64(builder, u64) def TypeAliasesAddF32(builder, f32): - return builder.PrependFloat32Slot(8, f32, 0.0) + builder.PrependFloat32Slot(8, f32, 0.0) -def AddF32(builder, f32): - return TypeAliasesAddF32(builder, f32) +def AddF32(builder: flatbuffers.Builder, f32: float): + TypeAliasesAddF32(builder, f32) def TypeAliasesAddF64(builder, f64): - return builder.PrependFloat64Slot(9, f64, 0.0) + builder.PrependFloat64Slot(9, f64, 0.0) -def AddF64(builder, f64): - return TypeAliasesAddF64(builder, f64) +def AddF64(builder: flatbuffers.Builder, f64: float): + TypeAliasesAddF64(builder, f64) def TypeAliasesAddV8(builder, v8): - return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(v8), 0) + builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(v8), 0) -def AddV8(builder, v8): - return TypeAliasesAddV8(builder, v8) +def AddV8(builder: flatbuffers.Builder, v8: int): + TypeAliasesAddV8(builder, v8) def TypeAliasesStartV8Vector(builder, numElems): return builder.StartVector(1, numElems, 1) -def StartV8Vector(builder, numElems): +def StartV8Vector(builder, numElems: int) -> int: return TypeAliasesStartV8Vector(builder, numElems) def TypeAliasesAddVf64(builder, vf64): - return builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(vf64), 0) + builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(vf64), 0) -def AddVf64(builder, vf64): - return TypeAliasesAddVf64(builder, vf64) +def AddVf64(builder: flatbuffers.Builder, vf64: int): + TypeAliasesAddVf64(builder, vf64) def TypeAliasesStartVf64Vector(builder, numElems): return builder.StartVector(8, numElems, 8) -def StartVf64Vector(builder, numElems): +def StartVf64Vector(builder, numElems: int) -> int: return TypeAliasesStartVf64Vector(builder, numElems) def TypeAliasesEnd(builder): diff --git a/tests/MyGame/Example2/Monster.py b/tests/MyGame/Example2/Monster.py index 965c4ffdc..41c43e9ea 100644 --- a/tests/MyGame/Example2/Monster.py +++ b/tests/MyGame/Example2/Monster.py @@ -29,10 +29,10 @@ class Monster(object): self._tab = flatbuffers.table.Table(buf, pos) def MonsterStart(builder): - return builder.StartObject(0) + builder.StartObject(0) def Start(builder): - return MonsterStart(builder) + MonsterStart(builder) def MonsterEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/InParentNamespace.py b/tests/MyGame/InParentNamespace.py index bd10e6955..adbce9172 100644 --- a/tests/MyGame/InParentNamespace.py +++ b/tests/MyGame/InParentNamespace.py @@ -29,10 +29,10 @@ class InParentNamespace(object): self._tab = flatbuffers.table.Table(buf, pos) def InParentNamespaceStart(builder): - return builder.StartObject(0) + builder.StartObject(0) def Start(builder): - return InParentNamespaceStart(builder) + InParentNamespaceStart(builder) def InParentNamespaceEnd(builder): return builder.EndObject() diff --git a/tests/MyGame/MonsterExtra.py b/tests/MyGame/MonsterExtra.py index 10e380b79..d9e183617 100644 --- a/tests/MyGame/MonsterExtra.py +++ b/tests/MyGame/MonsterExtra.py @@ -4,13 +4,14 @@ import flatbuffers from flatbuffers.compat import import_numpy +from typing import Any np = import_numpy() class MonsterExtra(object): __slots__ = ['_tab'] @classmethod - def GetRootAs(cls, buf, offset=0): + def GetRootAs(cls, buf, offset: int = 0): n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset) x = MonsterExtra() x.Init(buf, n + offset) @@ -25,7 +26,7 @@ class MonsterExtra(object): return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x4D\x4F\x4E\x45", size_prefixed=size_prefixed) # MonsterExtra - def Init(self, buf, pos): + def Init(self, buf: bytes, pos: int): self._tab = flatbuffers.table.Table(buf, pos) # MonsterExtra @@ -85,7 +86,7 @@ class MonsterExtra(object): return float('-inf') # MonsterExtra - def Dvec(self, j): + def Dvec(self, j: int): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(20)) if o != 0: a = self._tab.Vector(o) @@ -100,19 +101,19 @@ class MonsterExtra(object): return 0 # MonsterExtra - def DvecLength(self): + def DvecLength(self) -> int: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(20)) if o != 0: return self._tab.VectorLen(o) return 0 # MonsterExtra - def DvecIsNone(self): + def DvecIsNone(self) -> bool: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(20)) return o == 0 # MonsterExtra - def Fvec(self, j): + def Fvec(self, j: int): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22)) if o != 0: a = self._tab.Vector(o) @@ -127,99 +128,99 @@ class MonsterExtra(object): return 0 # MonsterExtra - def FvecLength(self): + def FvecLength(self) -> int: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22)) if o != 0: return self._tab.VectorLen(o) return 0 # MonsterExtra - def FvecIsNone(self): + def FvecIsNone(self) -> bool: o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(22)) return o == 0 -def MonsterExtraStart(builder): - return builder.StartObject(11) +def MonsterExtraStart(builder: flatbuffers.Builder): + builder.StartObject(11) -def Start(builder): - return MonsterExtraStart(builder) +def Start(builder: flatbuffers.Builder): + MonsterExtraStart(builder) -def MonsterExtraAddD0(builder, d0): - return builder.PrependFloat64Slot(0, d0, float('nan')) +def MonsterExtraAddD0(builder: flatbuffers.Builder, d0: float): + builder.PrependFloat64Slot(0, d0, float('nan')) -def AddD0(builder, d0): - return MonsterExtraAddD0(builder, d0) +def AddD0(builder: flatbuffers.Builder, d0: float): + MonsterExtraAddD0(builder, d0) -def MonsterExtraAddD1(builder, d1): - return builder.PrependFloat64Slot(1, d1, float('nan')) +def MonsterExtraAddD1(builder: flatbuffers.Builder, d1: float): + builder.PrependFloat64Slot(1, d1, float('nan')) -def AddD1(builder, d1): - return MonsterExtraAddD1(builder, d1) +def AddD1(builder: flatbuffers.Builder, d1: float): + MonsterExtraAddD1(builder, d1) -def MonsterExtraAddD2(builder, d2): - return builder.PrependFloat64Slot(2, d2, float('inf')) +def MonsterExtraAddD2(builder: flatbuffers.Builder, d2: float): + builder.PrependFloat64Slot(2, d2, float('inf')) -def AddD2(builder, d2): - return MonsterExtraAddD2(builder, d2) +def AddD2(builder: flatbuffers.Builder, d2: float): + MonsterExtraAddD2(builder, d2) -def MonsterExtraAddD3(builder, d3): - return builder.PrependFloat64Slot(3, d3, float('-inf')) +def MonsterExtraAddD3(builder: flatbuffers.Builder, d3: float): + builder.PrependFloat64Slot(3, d3, float('-inf')) -def AddD3(builder, d3): - return MonsterExtraAddD3(builder, d3) +def AddD3(builder: flatbuffers.Builder, d3: float): + MonsterExtraAddD3(builder, d3) -def MonsterExtraAddF0(builder, f0): - return builder.PrependFloat32Slot(4, f0, float('nan')) +def MonsterExtraAddF0(builder: flatbuffers.Builder, f0: float): + builder.PrependFloat32Slot(4, f0, float('nan')) -def AddF0(builder, f0): - return MonsterExtraAddF0(builder, f0) +def AddF0(builder: flatbuffers.Builder, f0: float): + MonsterExtraAddF0(builder, f0) -def MonsterExtraAddF1(builder, f1): - return builder.PrependFloat32Slot(5, f1, float('nan')) +def MonsterExtraAddF1(builder: flatbuffers.Builder, f1: float): + builder.PrependFloat32Slot(5, f1, float('nan')) -def AddF1(builder, f1): - return MonsterExtraAddF1(builder, f1) +def AddF1(builder: flatbuffers.Builder, f1: float): + MonsterExtraAddF1(builder, f1) -def MonsterExtraAddF2(builder, f2): - return builder.PrependFloat32Slot(6, f2, float('inf')) +def MonsterExtraAddF2(builder: flatbuffers.Builder, f2: float): + builder.PrependFloat32Slot(6, f2, float('inf')) -def AddF2(builder, f2): - return MonsterExtraAddF2(builder, f2) +def AddF2(builder: flatbuffers.Builder, f2: float): + MonsterExtraAddF2(builder, f2) -def MonsterExtraAddF3(builder, f3): - return builder.PrependFloat32Slot(7, f3, float('-inf')) +def MonsterExtraAddF3(builder: flatbuffers.Builder, f3: float): + builder.PrependFloat32Slot(7, f3, float('-inf')) -def AddF3(builder, f3): - return MonsterExtraAddF3(builder, f3) +def AddF3(builder: flatbuffers.Builder, f3: float): + MonsterExtraAddF3(builder, f3) -def MonsterExtraAddDvec(builder, dvec): - return builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(dvec), 0) +def MonsterExtraAddDvec(builder: flatbuffers.Builder, dvec: int): + builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(dvec), 0) -def AddDvec(builder, dvec): - return MonsterExtraAddDvec(builder, dvec) +def AddDvec(builder: flatbuffers.Builder, dvec: int): + MonsterExtraAddDvec(builder, dvec) -def MonsterExtraStartDvecVector(builder, numElems): +def MonsterExtraStartDvecVector(builder, numElems: int) -> int: return builder.StartVector(8, numElems, 8) -def StartDvecVector(builder, numElems): +def StartDvecVector(builder, numElems: int) -> int: return MonsterExtraStartDvecVector(builder, numElems) -def MonsterExtraAddFvec(builder, fvec): - return builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(fvec), 0) +def MonsterExtraAddFvec(builder: flatbuffers.Builder, fvec: int): + builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(fvec), 0) -def AddFvec(builder, fvec): - return MonsterExtraAddFvec(builder, fvec) +def AddFvec(builder: flatbuffers.Builder, fvec: int): + MonsterExtraAddFvec(builder, fvec) -def MonsterExtraStartFvecVector(builder, numElems): +def MonsterExtraStartFvecVector(builder, numElems: int) -> int: return builder.StartVector(4, numElems, 4) -def StartFvecVector(builder, numElems): +def StartFvecVector(builder, numElems: int) -> int: return MonsterExtraStartFvecVector(builder, numElems) -def MonsterExtraEnd(builder): +def MonsterExtraEnd(builder: flatbuffers.Builder) -> int: return builder.EndObject() -def End(builder): +def End(builder: flatbuffers.Builder) -> int: return MonsterExtraEnd(builder) try: diff --git a/tests/monster_test_generated.py b/tests/monster_test_generated.py index 36bbb6021..2acdf6ce8 100644 --- a/tests/monster_test_generated.py +++ b/tests/monster_test_generated.py @@ -109,7 +109,7 @@ class InParentNamespace(object): self._tab = flatbuffers.table.Table(buf, pos) def InParentNamespaceStart(builder): - return builder.StartObject(0) + builder.StartObject(0) def InParentNamespaceEnd(builder): return builder.EndObject() @@ -174,7 +174,7 @@ class Monster(object): self._tab = flatbuffers.table.Table(buf, pos) def MonsterStart(builder): - return builder.StartObject(0) + builder.StartObject(0) def MonsterEnd(builder): return builder.EndObject() @@ -306,10 +306,10 @@ class TestSimpleTableWithEnum(object): return 2 def TestSimpleTableWithEnumStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def TestSimpleTableWithEnumAddColor(builder, color): - return builder.PrependUint8Slot(0, color, 2) + builder.PrependUint8Slot(0, color, 2) def TestSimpleTableWithEnumEnd(builder): return builder.EndObject() @@ -708,16 +708,16 @@ class Stat(object): return 0 def StatStart(builder): - return builder.StartObject(3) + builder.StartObject(3) def StatAddId(builder, id): - return builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0) + builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(id), 0) def StatAddVal(builder, val): - return builder.PrependInt64Slot(1, val, 0) + builder.PrependInt64Slot(1, val, 0) def StatAddCount(builder, count): - return builder.PrependUint16Slot(2, count, 0) + builder.PrependUint16Slot(2, count, 0) def StatEnd(builder): return builder.EndObject() @@ -800,10 +800,10 @@ class Referrable(object): return 0 def ReferrableStart(builder): - return builder.StartObject(1) + builder.StartObject(1) def ReferrableAddId(builder, id): - return builder.PrependUint64Slot(0, id, 0) + builder.PrependUint64Slot(0, id, 0) def ReferrableEnd(builder): return builder.EndObject() @@ -1050,7 +1050,7 @@ class Monster(object): def TestnestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(30)) if o != 0: - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -1581,7 +1581,7 @@ class Monster(object): def TestrequirednestedflatbufferNestedRoot(self): o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(102)) if o != 0: - from MyGame.Example.Monster import Monster + from .MyGame.Example.Monster import Monster return Monster.GetRootAs(self._tab.Bytes, self._tab.Vector(o)) return 0 @@ -1702,58 +1702,58 @@ class Monster(object): return float('inf') def MonsterStart(builder): - return builder.StartObject(62) + builder.StartObject(62) def MonsterAddPos(builder, pos): - return builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) + builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0) def MonsterAddMana(builder, mana): - return builder.PrependInt16Slot(1, mana, 150) + builder.PrependInt16Slot(1, mana, 150) def MonsterAddHp(builder, hp): - return builder.PrependInt16Slot(2, hp, 100) + builder.PrependInt16Slot(2, hp, 100) def MonsterAddName(builder, name): - return builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) + builder.PrependUOffsetTRelativeSlot(3, flatbuffers.number_types.UOffsetTFlags.py_type(name), 0) def MonsterAddInventory(builder, inventory): - return builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0) + builder.PrependUOffsetTRelativeSlot(5, flatbuffers.number_types.UOffsetTFlags.py_type(inventory), 0) def MonsterStartInventoryVector(builder, numElems): return builder.StartVector(1, numElems, 1) def MonsterAddColor(builder, color): - return builder.PrependUint8Slot(6, color, 8) + builder.PrependUint8Slot(6, color, 8) def MonsterAddTestType(builder, testType): - return builder.PrependUint8Slot(7, testType, 0) + builder.PrependUint8Slot(7, testType, 0) def MonsterAddTest(builder, test): - return builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0) + builder.PrependUOffsetTRelativeSlot(8, flatbuffers.number_types.UOffsetTFlags.py_type(test), 0) def MonsterAddTest4(builder, test4): - return builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0) + builder.PrependUOffsetTRelativeSlot(9, flatbuffers.number_types.UOffsetTFlags.py_type(test4), 0) def MonsterStartTest4Vector(builder, numElems): return builder.StartVector(4, numElems, 2) def MonsterAddTestarrayofstring(builder, testarrayofstring): - return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0) + builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring), 0) def MonsterStartTestarrayofstringVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddTestarrayoftables(builder, testarrayoftables): - return builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0) + builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayoftables), 0) def MonsterStartTestarrayoftablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddEnemy(builder, enemy): - return builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0) + builder.PrependUOffsetTRelativeSlot(12, flatbuffers.number_types.UOffsetTFlags.py_type(enemy), 0) def MonsterAddTestnestedflatbuffer(builder, testnestedflatbuffer): - return builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0) + builder.PrependUOffsetTRelativeSlot(13, flatbuffers.number_types.UOffsetTFlags.py_type(testnestedflatbuffer), 0) def MonsterStartTestnestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1) @@ -1764,151 +1764,151 @@ def MonsterMakeTestnestedflatbufferVectorFromBytes(builder, bytes): builder.Bytes[builder.head : builder.head + len(bytes)] = bytes return builder.EndVector() def MonsterAddTestempty(builder, testempty): - return builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0) + builder.PrependUOffsetTRelativeSlot(14, flatbuffers.number_types.UOffsetTFlags.py_type(testempty), 0) def MonsterAddTestbool(builder, testbool): - return builder.PrependBoolSlot(15, testbool, 0) + builder.PrependBoolSlot(15, testbool, 0) def MonsterAddTesthashs32Fnv1(builder, testhashs32Fnv1): - return builder.PrependInt32Slot(16, testhashs32Fnv1, 0) + builder.PrependInt32Slot(16, testhashs32Fnv1, 0) def MonsterAddTesthashu32Fnv1(builder, testhashu32Fnv1): - return builder.PrependUint32Slot(17, testhashu32Fnv1, 0) + builder.PrependUint32Slot(17, testhashu32Fnv1, 0) def MonsterAddTesthashs64Fnv1(builder, testhashs64Fnv1): - return builder.PrependInt64Slot(18, testhashs64Fnv1, 0) + builder.PrependInt64Slot(18, testhashs64Fnv1, 0) def MonsterAddTesthashu64Fnv1(builder, testhashu64Fnv1): - return builder.PrependUint64Slot(19, testhashu64Fnv1, 0) + builder.PrependUint64Slot(19, testhashu64Fnv1, 0) def MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a): - return builder.PrependInt32Slot(20, testhashs32Fnv1a, 0) + builder.PrependInt32Slot(20, testhashs32Fnv1a, 0) def MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a): - return builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) + builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) def MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a): - return builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) + builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) def MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a): - return builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) + builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) def MonsterAddTestarrayofbools(builder, testarrayofbools): - return builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0) + builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0) def MonsterStartTestarrayofboolsVector(builder, numElems): return builder.StartVector(1, numElems, 1) def MonsterAddTestf(builder, testf): - return builder.PrependFloat32Slot(25, testf, 3.14159) + builder.PrependFloat32Slot(25, testf, 3.14159) def MonsterAddTestf2(builder, testf2): - return builder.PrependFloat32Slot(26, testf2, 3.0) + builder.PrependFloat32Slot(26, testf2, 3.0) def MonsterAddTestf3(builder, testf3): - return builder.PrependFloat32Slot(27, testf3, 0.0) + builder.PrependFloat32Slot(27, testf3, 0.0) def MonsterAddTestarrayofstring2(builder, testarrayofstring2): - return builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0) + builder.PrependUOffsetTRelativeSlot(28, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofstring2), 0) def MonsterStartTestarrayofstring2Vector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddTestarrayofsortedstruct(builder, testarrayofsortedstruct): - return builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0) + builder.PrependUOffsetTRelativeSlot(29, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofsortedstruct), 0) def MonsterStartTestarrayofsortedstructVector(builder, numElems): return builder.StartVector(8, numElems, 4) def MonsterAddFlex(builder, flex): - return builder.PrependUOffsetTRelativeSlot(30, flatbuffers.number_types.UOffsetTFlags.py_type(flex), 0) + builder.PrependUOffsetTRelativeSlot(30, flatbuffers.number_types.UOffsetTFlags.py_type(flex), 0) def MonsterStartFlexVector(builder, numElems): return builder.StartVector(1, numElems, 1) def MonsterAddTest5(builder, test5): - return builder.PrependUOffsetTRelativeSlot(31, flatbuffers.number_types.UOffsetTFlags.py_type(test5), 0) + builder.PrependUOffsetTRelativeSlot(31, flatbuffers.number_types.UOffsetTFlags.py_type(test5), 0) def MonsterStartTest5Vector(builder, numElems): return builder.StartVector(4, numElems, 2) def MonsterAddVectorOfLongs(builder, vectorOfLongs): - return builder.PrependUOffsetTRelativeSlot(32, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfLongs), 0) + builder.PrependUOffsetTRelativeSlot(32, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfLongs), 0) def MonsterStartVectorOfLongsVector(builder, numElems): return builder.StartVector(8, numElems, 8) def MonsterAddVectorOfDoubles(builder, vectorOfDoubles): - return builder.PrependUOffsetTRelativeSlot(33, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfDoubles), 0) + builder.PrependUOffsetTRelativeSlot(33, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfDoubles), 0) def MonsterStartVectorOfDoublesVector(builder, numElems): return builder.StartVector(8, numElems, 8) def MonsterAddParentNamespaceTest(builder, parentNamespaceTest): - return builder.PrependUOffsetTRelativeSlot(34, flatbuffers.number_types.UOffsetTFlags.py_type(parentNamespaceTest), 0) + builder.PrependUOffsetTRelativeSlot(34, flatbuffers.number_types.UOffsetTFlags.py_type(parentNamespaceTest), 0) def MonsterAddVectorOfReferrables(builder, vectorOfReferrables): - return builder.PrependUOffsetTRelativeSlot(35, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfReferrables), 0) + builder.PrependUOffsetTRelativeSlot(35, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfReferrables), 0) def MonsterStartVectorOfReferrablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddSingleWeakReference(builder, singleWeakReference): - return builder.PrependUint64Slot(36, singleWeakReference, 0) + builder.PrependUint64Slot(36, singleWeakReference, 0) def MonsterAddVectorOfWeakReferences(builder, vectorOfWeakReferences): - return builder.PrependUOffsetTRelativeSlot(37, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfWeakReferences), 0) + builder.PrependUOffsetTRelativeSlot(37, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfWeakReferences), 0) def MonsterStartVectorOfWeakReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) def MonsterAddVectorOfStrongReferrables(builder, vectorOfStrongReferrables): - return builder.PrependUOffsetTRelativeSlot(38, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfStrongReferrables), 0) + builder.PrependUOffsetTRelativeSlot(38, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfStrongReferrables), 0) def MonsterStartVectorOfStrongReferrablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddCoOwningReference(builder, coOwningReference): - return builder.PrependUint64Slot(39, coOwningReference, 0) + builder.PrependUint64Slot(39, coOwningReference, 0) def MonsterAddVectorOfCoOwningReferences(builder, vectorOfCoOwningReferences): - return builder.PrependUOffsetTRelativeSlot(40, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfCoOwningReferences), 0) + builder.PrependUOffsetTRelativeSlot(40, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfCoOwningReferences), 0) def MonsterStartVectorOfCoOwningReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) def MonsterAddNonOwningReference(builder, nonOwningReference): - return builder.PrependUint64Slot(41, nonOwningReference, 0) + builder.PrependUint64Slot(41, nonOwningReference, 0) def MonsterAddVectorOfNonOwningReferences(builder, vectorOfNonOwningReferences): - return builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0) + builder.PrependUOffsetTRelativeSlot(42, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfNonOwningReferences), 0) def MonsterStartVectorOfNonOwningReferencesVector(builder, numElems): return builder.StartVector(8, numElems, 8) def MonsterAddAnyUniqueType(builder, anyUniqueType): - return builder.PrependUint8Slot(43, anyUniqueType, 0) + builder.PrependUint8Slot(43, anyUniqueType, 0) def MonsterAddAnyUnique(builder, anyUnique): - return builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0) + builder.PrependUOffsetTRelativeSlot(44, flatbuffers.number_types.UOffsetTFlags.py_type(anyUnique), 0) def MonsterAddAnyAmbiguousType(builder, anyAmbiguousType): - return builder.PrependUint8Slot(45, anyAmbiguousType, 0) + builder.PrependUint8Slot(45, anyAmbiguousType, 0) def MonsterAddAnyAmbiguous(builder, anyAmbiguous): - return builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0) + builder.PrependUOffsetTRelativeSlot(46, flatbuffers.number_types.UOffsetTFlags.py_type(anyAmbiguous), 0) def MonsterAddVectorOfEnums(builder, vectorOfEnums): - return builder.PrependUOffsetTRelativeSlot(47, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfEnums), 0) + builder.PrependUOffsetTRelativeSlot(47, flatbuffers.number_types.UOffsetTFlags.py_type(vectorOfEnums), 0) def MonsterStartVectorOfEnumsVector(builder, numElems): return builder.StartVector(1, numElems, 1) def MonsterAddSignedEnum(builder, signedEnum): - return builder.PrependInt8Slot(48, signedEnum, -1) + builder.PrependInt8Slot(48, signedEnum, -1) def MonsterAddTestrequirednestedflatbuffer(builder, testrequirednestedflatbuffer): - return builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0) + builder.PrependUOffsetTRelativeSlot(49, flatbuffers.number_types.UOffsetTFlags.py_type(testrequirednestedflatbuffer), 0) def MonsterStartTestrequirednestedflatbufferVector(builder, numElems): return builder.StartVector(1, numElems, 1) @@ -1919,43 +1919,43 @@ def MonsterMakeTestrequirednestedflatbufferVectorFromBytes(builder, bytes): builder.Bytes[builder.head : builder.head + len(bytes)] = bytes return builder.EndVector() def MonsterAddScalarKeySortedTables(builder, scalarKeySortedTables): - return builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) + builder.PrependUOffsetTRelativeSlot(50, flatbuffers.number_types.UOffsetTFlags.py_type(scalarKeySortedTables), 0) def MonsterStartScalarKeySortedTablesVector(builder, numElems): return builder.StartVector(4, numElems, 4) def MonsterAddNativeInline(builder, nativeInline): - return builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) + builder.PrependStructSlot(51, flatbuffers.number_types.UOffsetTFlags.py_type(nativeInline), 0) def MonsterAddLongEnumNonEnumDefault(builder, longEnumNonEnumDefault): - return builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) + builder.PrependUint64Slot(52, longEnumNonEnumDefault, 0) def MonsterAddLongEnumNormalDefault(builder, longEnumNormalDefault): - return builder.PrependUint64Slot(53, longEnumNormalDefault, 2) + builder.PrependUint64Slot(53, longEnumNormalDefault, 2) def MonsterAddNanDefault(builder, nanDefault): - return builder.PrependFloat32Slot(54, nanDefault, float('nan')) + builder.PrependFloat32Slot(54, nanDefault, float('nan')) def MonsterAddInfDefault(builder, infDefault): - return builder.PrependFloat32Slot(55, infDefault, float('inf')) + builder.PrependFloat32Slot(55, infDefault, float('inf')) def MonsterAddPositiveInfDefault(builder, positiveInfDefault): - return builder.PrependFloat32Slot(56, positiveInfDefault, float('inf')) + builder.PrependFloat32Slot(56, positiveInfDefault, float('inf')) def MonsterAddInfinityDefault(builder, infinityDefault): - return builder.PrependFloat32Slot(57, infinityDefault, float('inf')) + builder.PrependFloat32Slot(57, infinityDefault, float('inf')) def MonsterAddPositiveInfinityDefault(builder, positiveInfinityDefault): - return builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf')) + builder.PrependFloat32Slot(58, positiveInfinityDefault, float('inf')) def MonsterAddNegativeInfDefault(builder, negativeInfDefault): - return builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf')) + builder.PrependFloat32Slot(59, negativeInfDefault, float('-inf')) def MonsterAddNegativeInfinityDefault(builder, negativeInfinityDefault): - return builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf')) + builder.PrependFloat32Slot(60, negativeInfinityDefault, float('-inf')) def MonsterAddDoubleInfDefault(builder, doubleInfDefault): - return builder.PrependFloat64Slot(61, doubleInfDefault, float('inf')) + builder.PrependFloat64Slot(61, doubleInfDefault, float('inf')) def MonsterEnd(builder): return builder.EndObject() @@ -2652,46 +2652,46 @@ class TypeAliases(object): return o == 0 def TypeAliasesStart(builder): - return builder.StartObject(12) + builder.StartObject(12) def TypeAliasesAddI8(builder, i8): - return builder.PrependInt8Slot(0, i8, 0) + builder.PrependInt8Slot(0, i8, 0) def TypeAliasesAddU8(builder, u8): - return builder.PrependUint8Slot(1, u8, 0) + builder.PrependUint8Slot(1, u8, 0) def TypeAliasesAddI16(builder, i16): - return builder.PrependInt16Slot(2, i16, 0) + builder.PrependInt16Slot(2, i16, 0) def TypeAliasesAddU16(builder, u16): - return builder.PrependUint16Slot(3, u16, 0) + builder.PrependUint16Slot(3, u16, 0) def TypeAliasesAddI32(builder, i32): - return builder.PrependInt32Slot(4, i32, 0) + builder.PrependInt32Slot(4, i32, 0) def TypeAliasesAddU32(builder, u32): - return builder.PrependUint32Slot(5, u32, 0) + builder.PrependUint32Slot(5, u32, 0) def TypeAliasesAddI64(builder, i64): - return builder.PrependInt64Slot(6, i64, 0) + builder.PrependInt64Slot(6, i64, 0) def TypeAliasesAddU64(builder, u64): - return builder.PrependUint64Slot(7, u64, 0) + builder.PrependUint64Slot(7, u64, 0) def TypeAliasesAddF32(builder, f32): - return builder.PrependFloat32Slot(8, f32, 0.0) + builder.PrependFloat32Slot(8, f32, 0.0) def TypeAliasesAddF64(builder, f64): - return builder.PrependFloat64Slot(9, f64, 0.0) + builder.PrependFloat64Slot(9, f64, 0.0) def TypeAliasesAddV8(builder, v8): - return builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(v8), 0) + builder.PrependUOffsetTRelativeSlot(10, flatbuffers.number_types.UOffsetTFlags.py_type(v8), 0) def TypeAliasesStartV8Vector(builder, numElems): return builder.StartVector(1, numElems, 1) def TypeAliasesAddVf64(builder, vf64): - return builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(vf64), 0) + builder.PrependUOffsetTRelativeSlot(11, flatbuffers.number_types.UOffsetTFlags.py_type(vf64), 0) def TypeAliasesStartVf64Vector(builder, numElems): return builder.StartVector(8, numElems, 8) diff --git a/tests/optional_scalars/ScalarStuff.py b/tests/optional_scalars/ScalarStuff.py index b75ba22df..07737d298 100644 --- a/tests/optional_scalars/ScalarStuff.py +++ b/tests/optional_scalars/ScalarStuff.py @@ -281,226 +281,226 @@ class ScalarStuff(object): return 1 def ScalarStuffStart(builder): - return builder.StartObject(36) + builder.StartObject(36) def Start(builder): - return ScalarStuffStart(builder) + ScalarStuffStart(builder) def ScalarStuffAddJustI8(builder, justI8): - return builder.PrependInt8Slot(0, justI8, 0) + builder.PrependInt8Slot(0, justI8, 0) -def AddJustI8(builder, justI8): - return ScalarStuffAddJustI8(builder, justI8) +def AddJustI8(builder: flatbuffers.Builder, justI8: int): + ScalarStuffAddJustI8(builder, justI8) def ScalarStuffAddMaybeI8(builder, maybeI8): - return builder.PrependInt8Slot(1, maybeI8, None) + builder.PrependInt8Slot(1, maybeI8, None) -def AddMaybeI8(builder, maybeI8): - return ScalarStuffAddMaybeI8(builder, maybeI8) +def AddMaybeI8(builder: flatbuffers.Builder, maybeI8: int): + ScalarStuffAddMaybeI8(builder, maybeI8) def ScalarStuffAddDefaultI8(builder, defaultI8): - return builder.PrependInt8Slot(2, defaultI8, 42) + builder.PrependInt8Slot(2, defaultI8, 42) -def AddDefaultI8(builder, defaultI8): - return ScalarStuffAddDefaultI8(builder, defaultI8) +def AddDefaultI8(builder: flatbuffers.Builder, defaultI8: int): + ScalarStuffAddDefaultI8(builder, defaultI8) def ScalarStuffAddJustU8(builder, justU8): - return builder.PrependUint8Slot(3, justU8, 0) + builder.PrependUint8Slot(3, justU8, 0) -def AddJustU8(builder, justU8): - return ScalarStuffAddJustU8(builder, justU8) +def AddJustU8(builder: flatbuffers.Builder, justU8: int): + ScalarStuffAddJustU8(builder, justU8) def ScalarStuffAddMaybeU8(builder, maybeU8): - return builder.PrependUint8Slot(4, maybeU8, None) + builder.PrependUint8Slot(4, maybeU8, None) -def AddMaybeU8(builder, maybeU8): - return ScalarStuffAddMaybeU8(builder, maybeU8) +def AddMaybeU8(builder: flatbuffers.Builder, maybeU8: int): + ScalarStuffAddMaybeU8(builder, maybeU8) def ScalarStuffAddDefaultU8(builder, defaultU8): - return builder.PrependUint8Slot(5, defaultU8, 42) + builder.PrependUint8Slot(5, defaultU8, 42) -def AddDefaultU8(builder, defaultU8): - return ScalarStuffAddDefaultU8(builder, defaultU8) +def AddDefaultU8(builder: flatbuffers.Builder, defaultU8: int): + ScalarStuffAddDefaultU8(builder, defaultU8) def ScalarStuffAddJustI16(builder, justI16): - return builder.PrependInt16Slot(6, justI16, 0) + builder.PrependInt16Slot(6, justI16, 0) -def AddJustI16(builder, justI16): - return ScalarStuffAddJustI16(builder, justI16) +def AddJustI16(builder: flatbuffers.Builder, justI16: int): + ScalarStuffAddJustI16(builder, justI16) def ScalarStuffAddMaybeI16(builder, maybeI16): - return builder.PrependInt16Slot(7, maybeI16, None) + builder.PrependInt16Slot(7, maybeI16, None) -def AddMaybeI16(builder, maybeI16): - return ScalarStuffAddMaybeI16(builder, maybeI16) +def AddMaybeI16(builder: flatbuffers.Builder, maybeI16: int): + ScalarStuffAddMaybeI16(builder, maybeI16) def ScalarStuffAddDefaultI16(builder, defaultI16): - return builder.PrependInt16Slot(8, defaultI16, 42) + builder.PrependInt16Slot(8, defaultI16, 42) -def AddDefaultI16(builder, defaultI16): - return ScalarStuffAddDefaultI16(builder, defaultI16) +def AddDefaultI16(builder: flatbuffers.Builder, defaultI16: int): + ScalarStuffAddDefaultI16(builder, defaultI16) def ScalarStuffAddJustU16(builder, justU16): - return builder.PrependUint16Slot(9, justU16, 0) + builder.PrependUint16Slot(9, justU16, 0) -def AddJustU16(builder, justU16): - return ScalarStuffAddJustU16(builder, justU16) +def AddJustU16(builder: flatbuffers.Builder, justU16: int): + ScalarStuffAddJustU16(builder, justU16) def ScalarStuffAddMaybeU16(builder, maybeU16): - return builder.PrependUint16Slot(10, maybeU16, None) + builder.PrependUint16Slot(10, maybeU16, None) -def AddMaybeU16(builder, maybeU16): - return ScalarStuffAddMaybeU16(builder, maybeU16) +def AddMaybeU16(builder: flatbuffers.Builder, maybeU16: int): + ScalarStuffAddMaybeU16(builder, maybeU16) def ScalarStuffAddDefaultU16(builder, defaultU16): - return builder.PrependUint16Slot(11, defaultU16, 42) + builder.PrependUint16Slot(11, defaultU16, 42) -def AddDefaultU16(builder, defaultU16): - return ScalarStuffAddDefaultU16(builder, defaultU16) +def AddDefaultU16(builder: flatbuffers.Builder, defaultU16: int): + ScalarStuffAddDefaultU16(builder, defaultU16) def ScalarStuffAddJustI32(builder, justI32): - return builder.PrependInt32Slot(12, justI32, 0) + builder.PrependInt32Slot(12, justI32, 0) -def AddJustI32(builder, justI32): - return ScalarStuffAddJustI32(builder, justI32) +def AddJustI32(builder: flatbuffers.Builder, justI32: int): + ScalarStuffAddJustI32(builder, justI32) def ScalarStuffAddMaybeI32(builder, maybeI32): - return builder.PrependInt32Slot(13, maybeI32, None) + builder.PrependInt32Slot(13, maybeI32, None) -def AddMaybeI32(builder, maybeI32): - return ScalarStuffAddMaybeI32(builder, maybeI32) +def AddMaybeI32(builder: flatbuffers.Builder, maybeI32: int): + ScalarStuffAddMaybeI32(builder, maybeI32) def ScalarStuffAddDefaultI32(builder, defaultI32): - return builder.PrependInt32Slot(14, defaultI32, 42) + builder.PrependInt32Slot(14, defaultI32, 42) -def AddDefaultI32(builder, defaultI32): - return ScalarStuffAddDefaultI32(builder, defaultI32) +def AddDefaultI32(builder: flatbuffers.Builder, defaultI32: int): + ScalarStuffAddDefaultI32(builder, defaultI32) def ScalarStuffAddJustU32(builder, justU32): - return builder.PrependUint32Slot(15, justU32, 0) + builder.PrependUint32Slot(15, justU32, 0) -def AddJustU32(builder, justU32): - return ScalarStuffAddJustU32(builder, justU32) +def AddJustU32(builder: flatbuffers.Builder, justU32: int): + ScalarStuffAddJustU32(builder, justU32) def ScalarStuffAddMaybeU32(builder, maybeU32): - return builder.PrependUint32Slot(16, maybeU32, None) + builder.PrependUint32Slot(16, maybeU32, None) -def AddMaybeU32(builder, maybeU32): - return ScalarStuffAddMaybeU32(builder, maybeU32) +def AddMaybeU32(builder: flatbuffers.Builder, maybeU32: int): + ScalarStuffAddMaybeU32(builder, maybeU32) def ScalarStuffAddDefaultU32(builder, defaultU32): - return builder.PrependUint32Slot(17, defaultU32, 42) + builder.PrependUint32Slot(17, defaultU32, 42) -def AddDefaultU32(builder, defaultU32): - return ScalarStuffAddDefaultU32(builder, defaultU32) +def AddDefaultU32(builder: flatbuffers.Builder, defaultU32: int): + ScalarStuffAddDefaultU32(builder, defaultU32) def ScalarStuffAddJustI64(builder, justI64): - return builder.PrependInt64Slot(18, justI64, 0) + builder.PrependInt64Slot(18, justI64, 0) -def AddJustI64(builder, justI64): - return ScalarStuffAddJustI64(builder, justI64) +def AddJustI64(builder: flatbuffers.Builder, justI64: int): + ScalarStuffAddJustI64(builder, justI64) def ScalarStuffAddMaybeI64(builder, maybeI64): - return builder.PrependInt64Slot(19, maybeI64, None) + builder.PrependInt64Slot(19, maybeI64, None) -def AddMaybeI64(builder, maybeI64): - return ScalarStuffAddMaybeI64(builder, maybeI64) +def AddMaybeI64(builder: flatbuffers.Builder, maybeI64: int): + ScalarStuffAddMaybeI64(builder, maybeI64) def ScalarStuffAddDefaultI64(builder, defaultI64): - return builder.PrependInt64Slot(20, defaultI64, 42) + builder.PrependInt64Slot(20, defaultI64, 42) -def AddDefaultI64(builder, defaultI64): - return ScalarStuffAddDefaultI64(builder, defaultI64) +def AddDefaultI64(builder: flatbuffers.Builder, defaultI64: int): + ScalarStuffAddDefaultI64(builder, defaultI64) def ScalarStuffAddJustU64(builder, justU64): - return builder.PrependUint64Slot(21, justU64, 0) + builder.PrependUint64Slot(21, justU64, 0) -def AddJustU64(builder, justU64): - return ScalarStuffAddJustU64(builder, justU64) +def AddJustU64(builder: flatbuffers.Builder, justU64: int): + ScalarStuffAddJustU64(builder, justU64) def ScalarStuffAddMaybeU64(builder, maybeU64): - return builder.PrependUint64Slot(22, maybeU64, None) + builder.PrependUint64Slot(22, maybeU64, None) -def AddMaybeU64(builder, maybeU64): - return ScalarStuffAddMaybeU64(builder, maybeU64) +def AddMaybeU64(builder: flatbuffers.Builder, maybeU64: int): + ScalarStuffAddMaybeU64(builder, maybeU64) def ScalarStuffAddDefaultU64(builder, defaultU64): - return builder.PrependUint64Slot(23, defaultU64, 42) + builder.PrependUint64Slot(23, defaultU64, 42) -def AddDefaultU64(builder, defaultU64): - return ScalarStuffAddDefaultU64(builder, defaultU64) +def AddDefaultU64(builder: flatbuffers.Builder, defaultU64: int): + ScalarStuffAddDefaultU64(builder, defaultU64) def ScalarStuffAddJustF32(builder, justF32): - return builder.PrependFloat32Slot(24, justF32, 0.0) + builder.PrependFloat32Slot(24, justF32, 0.0) -def AddJustF32(builder, justF32): - return ScalarStuffAddJustF32(builder, justF32) +def AddJustF32(builder: flatbuffers.Builder, justF32: float): + ScalarStuffAddJustF32(builder, justF32) def ScalarStuffAddMaybeF32(builder, maybeF32): - return builder.PrependFloat32Slot(25, maybeF32, None) + builder.PrependFloat32Slot(25, maybeF32, None) -def AddMaybeF32(builder, maybeF32): - return ScalarStuffAddMaybeF32(builder, maybeF32) +def AddMaybeF32(builder: flatbuffers.Builder, maybeF32: float): + ScalarStuffAddMaybeF32(builder, maybeF32) def ScalarStuffAddDefaultF32(builder, defaultF32): - return builder.PrependFloat32Slot(26, defaultF32, 42.0) + builder.PrependFloat32Slot(26, defaultF32, 42.0) -def AddDefaultF32(builder, defaultF32): - return ScalarStuffAddDefaultF32(builder, defaultF32) +def AddDefaultF32(builder: flatbuffers.Builder, defaultF32: float): + ScalarStuffAddDefaultF32(builder, defaultF32) def ScalarStuffAddJustF64(builder, justF64): - return builder.PrependFloat64Slot(27, justF64, 0.0) + builder.PrependFloat64Slot(27, justF64, 0.0) -def AddJustF64(builder, justF64): - return ScalarStuffAddJustF64(builder, justF64) +def AddJustF64(builder: flatbuffers.Builder, justF64: float): + ScalarStuffAddJustF64(builder, justF64) def ScalarStuffAddMaybeF64(builder, maybeF64): - return builder.PrependFloat64Slot(28, maybeF64, None) + builder.PrependFloat64Slot(28, maybeF64, None) -def AddMaybeF64(builder, maybeF64): - return ScalarStuffAddMaybeF64(builder, maybeF64) +def AddMaybeF64(builder: flatbuffers.Builder, maybeF64: float): + ScalarStuffAddMaybeF64(builder, maybeF64) def ScalarStuffAddDefaultF64(builder, defaultF64): - return builder.PrependFloat64Slot(29, defaultF64, 42.0) + builder.PrependFloat64Slot(29, defaultF64, 42.0) -def AddDefaultF64(builder, defaultF64): - return ScalarStuffAddDefaultF64(builder, defaultF64) +def AddDefaultF64(builder: flatbuffers.Builder, defaultF64: float): + ScalarStuffAddDefaultF64(builder, defaultF64) def ScalarStuffAddJustBool(builder, justBool): - return builder.PrependBoolSlot(30, justBool, 0) + builder.PrependBoolSlot(30, justBool, 0) -def AddJustBool(builder, justBool): - return ScalarStuffAddJustBool(builder, justBool) +def AddJustBool(builder: flatbuffers.Builder, justBool: bool): + ScalarStuffAddJustBool(builder, justBool) def ScalarStuffAddMaybeBool(builder, maybeBool): - return builder.PrependBoolSlot(31, maybeBool, None) + builder.PrependBoolSlot(31, maybeBool, None) -def AddMaybeBool(builder, maybeBool): - return ScalarStuffAddMaybeBool(builder, maybeBool) +def AddMaybeBool(builder: flatbuffers.Builder, maybeBool: bool): + ScalarStuffAddMaybeBool(builder, maybeBool) def ScalarStuffAddDefaultBool(builder, defaultBool): - return builder.PrependBoolSlot(32, defaultBool, 1) + builder.PrependBoolSlot(32, defaultBool, 1) -def AddDefaultBool(builder, defaultBool): - return ScalarStuffAddDefaultBool(builder, defaultBool) +def AddDefaultBool(builder: flatbuffers.Builder, defaultBool: bool): + ScalarStuffAddDefaultBool(builder, defaultBool) def ScalarStuffAddJustEnum(builder, justEnum): - return builder.PrependInt8Slot(33, justEnum, 0) + builder.PrependInt8Slot(33, justEnum, 0) -def AddJustEnum(builder, justEnum): - return ScalarStuffAddJustEnum(builder, justEnum) +def AddJustEnum(builder: flatbuffers.Builder, justEnum: int): + ScalarStuffAddJustEnum(builder, justEnum) def ScalarStuffAddMaybeEnum(builder, maybeEnum): - return builder.PrependInt8Slot(34, maybeEnum, None) + builder.PrependInt8Slot(34, maybeEnum, None) -def AddMaybeEnum(builder, maybeEnum): - return ScalarStuffAddMaybeEnum(builder, maybeEnum) +def AddMaybeEnum(builder: flatbuffers.Builder, maybeEnum: int): + ScalarStuffAddMaybeEnum(builder, maybeEnum) def ScalarStuffAddDefaultEnum(builder, defaultEnum): - return builder.PrependInt8Slot(35, defaultEnum, 1) + builder.PrependInt8Slot(35, defaultEnum, 1) -def AddDefaultEnum(builder, defaultEnum): - return ScalarStuffAddDefaultEnum(builder, defaultEnum) +def AddDefaultEnum(builder: flatbuffers.Builder, defaultEnum: int): + ScalarStuffAddDefaultEnum(builder, defaultEnum) def ScalarStuffEnd(builder): return builder.EndObject() diff --git a/tests/test.fbs b/tests/test.fbs new file mode 100644 index 000000000..791f7f7b5 --- /dev/null +++ b/tests/test.fbs @@ -0,0 +1,85 @@ +// Generated from test.proto + +include "imported.fbs"; + +namespace proto.test; + +/// Enum doc comment. +enum ProtoEnum : int { + NUL = 0, + FOO = 1, + /// Enum 2nd value doc comment misaligned. + BAR = 5, +} + +namespace proto.test.ProtoMessage_.OtherMessage_; + +enum ProtoEnum : int { + NUL = 0, + FOO = 1, + BAR = 2, + BAZ = 3, +} + +namespace proto.test; + +/// 2nd table doc comment with +/// many lines. +table ProtoMessage { + c:int = 16; + d:long; + p:uint; + e:ulong; + /// doc comment for f. + f:int = -1; + g:long; + h:uint; + q:ulong; + i:int; + j:long; + /// doc comment for k. + k:bool; + /// doc comment for l on 2 + /// lines + l:string (required); + m:[ubyte]; + n:proto.test.ProtoMessage_.OtherMessage; + o:[string]; + z:proto.test.ImportedMessage; + /// doc comment for r. + r:proto.test.ProtoMessage_.Anonymous0; + outer_enum:proto.test.ProtoEnum; + u:float = +inf; + v:float = +inf; + w:float = -inf; + grades:[proto.test.ProtoMessage_.GradesEntry]; + other_message_map:[proto.test.ProtoMessage_.OtherMessageMapEntry]; +} + +namespace proto.test.ProtoMessage_; + +table OtherMessage { + a:double; + /// doc comment for b. + b:float = 3.14149; + foo_bar_baz:proto.test.ProtoMessage_.OtherMessage_.ProtoEnum; +} + +table Anonymous0 { + /// doc comment for s. + s:proto.test.ImportedMessage; + /// doc comment for t on 2 + /// lines. + t:proto.test.ProtoMessage_.OtherMessage; +} + +table GradesEntry { + key:string (key); + value:float; +} + +table OtherMessageMapEntry { + key:string (key); + value:proto.test.ProtoMessage_.OtherMessage; +} + From c192ab423b5dc63f467a2ad32bab6bc883d44dbe Mon Sep 17 00:00:00 2001 From: Berke Date: Fri, 28 Apr 2023 19:51:11 +0300 Subject: [PATCH 5/7] additional check for absl::string_view availability (#7897) absl::string_view is uses std::string_view when available. It already checks if std::string_view is available in the earlier code. It should only use absl::string_view implementation. Co-authored-by: Derek Bailey --- include/flatbuffers/base.h | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/include/flatbuffers/base.h b/include/flatbuffers/base.h index bc64f18ad..98a02262c 100644 --- a/include/flatbuffers/base.h +++ b/include/flatbuffers/base.h @@ -233,12 +233,17 @@ namespace flatbuffers { } #define FLATBUFFERS_HAS_STRING_VIEW 1 // Check for absl::string_view - #elif __has_include("absl/strings/string_view.h") && (__cplusplus >= 201411) - #include "absl/strings/string_view.h" - namespace flatbuffers { - typedef absl::string_view string_view; - } - #define FLATBUFFERS_HAS_STRING_VIEW 1 + #elif __has_include("absl/strings/string_view.h") && \ + __has_include("absl/base/config.h") && \ + (__cplusplus >= 201411) + #include "absl/base/config.h" + #if !defined(ABSL_USES_STD_STRING_VIEW) + #include "absl/strings/string_view.h" + namespace flatbuffers { + typedef absl::string_view string_view; + } + #define FLATBUFFERS_HAS_STRING_VIEW 1 + #endif #endif #endif // __has_include #endif // !FLATBUFFERS_HAS_STRING_VIEW From 417821fdd7eb82d0ebbd9ea1e920d4b27fb5c1b7 Mon Sep 17 00:00:00 2001 From: Aaron Riekenberg Date: Fri, 28 Apr 2023 12:10:01 -0500 Subject: [PATCH 6/7] Only generate @kotlin.ExperimentalUnsigned annotation on create*Vector methods having an unsigned array type parameter. (#7881) Co-authored-by: Derek Bailey --- src/idl_gen_kotlin.cpp | 5 +++-- tests/DictionaryLookup/LongFloatEntry.kt | 1 - tests/DictionaryLookup/LongFloatMap.kt | 1 - tests/MyGame/Example/Ability.kt | 1 - tests/MyGame/Example/Any.kt | 1 - tests/MyGame/Example/AnyAmbiguousAliases.kt | 1 - tests/MyGame/Example/AnyUniqueAliases.kt | 1 - tests/MyGame/Example/Color.kt | 1 - tests/MyGame/Example/LongEnum.kt | 1 - tests/MyGame/Example/Monster.kt | 9 ++++++++- tests/MyGame/Example/Race.kt | 1 - tests/MyGame/Example/Referrable.kt | 1 - tests/MyGame/Example/Stat.kt | 1 - tests/MyGame/Example/StructOfStructs.kt | 1 - tests/MyGame/Example/StructOfStructsOfStructs.kt | 1 - tests/MyGame/Example/Test.kt | 1 - tests/MyGame/Example/TestSimpleTableWithEnum.kt | 1 - tests/MyGame/Example/TypeAliases.kt | 1 - tests/MyGame/Example/Vec3.kt | 1 - tests/MyGame/Example2/Monster.kt | 1 - tests/MyGame/InParentNamespace.kt | 1 - tests/MyGame/MonsterExtra.kt | 1 - tests/optional_scalars/OptionalByte.kt | 1 - tests/optional_scalars/ScalarStuff.kt | 1 - tests/union_vector/Attacker.kt | 1 - tests/union_vector/BookReader.kt | 1 - tests/union_vector/Character.kt | 1 - tests/union_vector/FallingTub.kt | 1 - tests/union_vector/Gadget.kt | 1 - tests/union_vector/HandFan.kt | 1 - tests/union_vector/Movie.kt | 2 +- tests/union_vector/Rapunzel.kt | 1 - 32 files changed, 12 insertions(+), 33 deletions(-) diff --git a/src/idl_gen_kotlin.cpp b/src/idl_gen_kotlin.cpp index 4ca75e3d0..71b9db5c6 100644 --- a/src/idl_gen_kotlin.cpp +++ b/src/idl_gen_kotlin.cpp @@ -289,7 +289,6 @@ class KotlinGenerator : public BaseGenerator { GenerateComment(enum_def.doc_comment, writer, &comment_config); writer += "@Suppress(\"unused\")"; - writer += "@kotlin.ExperimentalUnsignedTypes"; writer += "class " + namer_.Type(enum_def) + " private constructor() {"; writer.IncrementIdentLevel(); @@ -495,7 +494,6 @@ class KotlinGenerator : public BaseGenerator { writer.SetValue("superclass", fixed ? "Struct" : "Table"); writer += "@Suppress(\"unused\")"; - writer += "@kotlin.ExperimentalUnsignedTypes"; writer += "class {{struct_name}} : {{superclass}}() {\n"; writer.IncrementIdentLevel(); @@ -703,6 +701,9 @@ class KotlinGenerator : public BaseGenerator { writer.SetValue("root", GenMethod(vector_type)); writer.SetValue("cast", CastToSigned(vector_type)); + if (IsUnsigned(vector_type.base_type)) { + writer += "@kotlin.ExperimentalUnsignedTypes"; + } GenerateFun( writer, method_name, params, "Int", [&]() { diff --git a/tests/DictionaryLookup/LongFloatEntry.kt b/tests/DictionaryLookup/LongFloatEntry.kt index c9be31d8b..bf1a0f4b4 100644 --- a/tests/DictionaryLookup/LongFloatEntry.kt +++ b/tests/DictionaryLookup/LongFloatEntry.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class LongFloatEntry : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/DictionaryLookup/LongFloatMap.kt b/tests/DictionaryLookup/LongFloatMap.kt index 32467ddb2..816382a40 100644 --- a/tests/DictionaryLookup/LongFloatMap.kt +++ b/tests/DictionaryLookup/LongFloatMap.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class LongFloatMap : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/Ability.kt b/tests/MyGame/Example/Ability.kt index a3e17bef1..dc2b0b864 100644 --- a/tests/MyGame/Example/Ability.kt +++ b/tests/MyGame/Example/Ability.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Ability : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/Any.kt b/tests/MyGame/Example/Any.kt index 8b900723a..d7dd7bbe1 100644 --- a/tests/MyGame/Example/Any.kt +++ b/tests/MyGame/Example/Any.kt @@ -3,7 +3,6 @@ package MyGame.Example @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Any_ private constructor() { companion object { const val NONE: UByte = 0u diff --git a/tests/MyGame/Example/AnyAmbiguousAliases.kt b/tests/MyGame/Example/AnyAmbiguousAliases.kt index 404309654..c38923b9e 100644 --- a/tests/MyGame/Example/AnyAmbiguousAliases.kt +++ b/tests/MyGame/Example/AnyAmbiguousAliases.kt @@ -3,7 +3,6 @@ package MyGame.Example @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class AnyAmbiguousAliases private constructor() { companion object { const val NONE: UByte = 0u diff --git a/tests/MyGame/Example/AnyUniqueAliases.kt b/tests/MyGame/Example/AnyUniqueAliases.kt index 8be0cc826..2db45a6c2 100644 --- a/tests/MyGame/Example/AnyUniqueAliases.kt +++ b/tests/MyGame/Example/AnyUniqueAliases.kt @@ -3,7 +3,6 @@ package MyGame.Example @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class AnyUniqueAliases private constructor() { companion object { const val NONE: UByte = 0u diff --git a/tests/MyGame/Example/Color.kt b/tests/MyGame/Example/Color.kt index 61a313e63..0af56e1ee 100644 --- a/tests/MyGame/Example/Color.kt +++ b/tests/MyGame/Example/Color.kt @@ -6,7 +6,6 @@ package MyGame.Example * Composite components of Monster color. */ @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Color private constructor() { companion object { const val Red: UByte = 1u diff --git a/tests/MyGame/Example/LongEnum.kt b/tests/MyGame/Example/LongEnum.kt index 328c9c4f2..ecb5aabf9 100644 --- a/tests/MyGame/Example/LongEnum.kt +++ b/tests/MyGame/Example/LongEnum.kt @@ -3,7 +3,6 @@ package MyGame.Example @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class LongEnum private constructor() { companion object { const val LongOne: ULong = 2UL diff --git a/tests/MyGame/Example/Monster.kt b/tests/MyGame/Example/Monster.kt index eae51e0fd..4631ae0f9 100644 --- a/tests/MyGame/Example/Monster.kt +++ b/tests/MyGame/Example/Monster.kt @@ -22,7 +22,6 @@ import kotlin.math.sign * an example documentation comment: "monster object" */ @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Monster : Table() { fun __init(_i: Int, _bb: ByteBuffer) { @@ -1019,6 +1018,7 @@ class Monster : Table() { builder.slot(3) } fun addInventory(builder: FlatBufferBuilder, inventory: Int) = builder.addOffset(5, inventory, 0) + @kotlin.ExperimentalUnsignedTypes fun createInventoryVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { @@ -1052,6 +1052,7 @@ class Monster : Table() { fun startTestarrayoftablesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(4, numElems, 4) fun addEnemy(builder: FlatBufferBuilder, enemy: Int) = builder.addOffset(12, enemy, 0) fun addTestnestedflatbuffer(builder: FlatBufferBuilder, testnestedflatbuffer: Int) = builder.addOffset(13, testnestedflatbuffer, 0) + @kotlin.ExperimentalUnsignedTypes fun createTestnestedflatbufferVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { @@ -1094,6 +1095,7 @@ class Monster : Table() { fun addTestarrayofsortedstruct(builder: FlatBufferBuilder, testarrayofsortedstruct: Int) = builder.addOffset(29, testarrayofsortedstruct, 0) fun startTestarrayofsortedstructVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(8, numElems, 4) fun addFlex(builder: FlatBufferBuilder, flex: Int) = builder.addOffset(30, flex, 0) + @kotlin.ExperimentalUnsignedTypes fun createFlexVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { @@ -1134,6 +1136,7 @@ class Monster : Table() { fun startVectorOfReferrablesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(4, numElems, 4) fun addSingleWeakReference(builder: FlatBufferBuilder, singleWeakReference: ULong) = builder.addLong(36, singleWeakReference.toLong(), 0) fun addVectorOfWeakReferences(builder: FlatBufferBuilder, vectorOfWeakReferences: Int) = builder.addOffset(37, vectorOfWeakReferences, 0) + @kotlin.ExperimentalUnsignedTypes fun createVectorOfWeakReferencesVector(builder: FlatBufferBuilder, data: ULongArray) : Int { builder.startVector(8, data.size, 8) for (i in data.size - 1 downTo 0) { @@ -1153,6 +1156,7 @@ class Monster : Table() { fun startVectorOfStrongReferrablesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(4, numElems, 4) fun addCoOwningReference(builder: FlatBufferBuilder, coOwningReference: ULong) = builder.addLong(39, coOwningReference.toLong(), 0) fun addVectorOfCoOwningReferences(builder: FlatBufferBuilder, vectorOfCoOwningReferences: Int) = builder.addOffset(40, vectorOfCoOwningReferences, 0) + @kotlin.ExperimentalUnsignedTypes fun createVectorOfCoOwningReferencesVector(builder: FlatBufferBuilder, data: ULongArray) : Int { builder.startVector(8, data.size, 8) for (i in data.size - 1 downTo 0) { @@ -1163,6 +1167,7 @@ class Monster : Table() { fun startVectorOfCoOwningReferencesVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(8, numElems, 8) fun addNonOwningReference(builder: FlatBufferBuilder, nonOwningReference: ULong) = builder.addLong(41, nonOwningReference.toLong(), 0) fun addVectorOfNonOwningReferences(builder: FlatBufferBuilder, vectorOfNonOwningReferences: Int) = builder.addOffset(42, vectorOfNonOwningReferences, 0) + @kotlin.ExperimentalUnsignedTypes fun createVectorOfNonOwningReferencesVector(builder: FlatBufferBuilder, data: ULongArray) : Int { builder.startVector(8, data.size, 8) for (i in data.size - 1 downTo 0) { @@ -1176,6 +1181,7 @@ class Monster : Table() { fun addAnyAmbiguousType(builder: FlatBufferBuilder, anyAmbiguousType: UByte) = builder.addByte(45, anyAmbiguousType.toByte(), 0) fun addAnyAmbiguous(builder: FlatBufferBuilder, anyAmbiguous: Int) = builder.addOffset(46, anyAmbiguous, 0) fun addVectorOfEnums(builder: FlatBufferBuilder, vectorOfEnums: Int) = builder.addOffset(47, vectorOfEnums, 0) + @kotlin.ExperimentalUnsignedTypes fun createVectorOfEnumsVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { @@ -1186,6 +1192,7 @@ class Monster : Table() { fun startVectorOfEnumsVector(builder: FlatBufferBuilder, numElems: Int) = builder.startVector(1, numElems, 1) fun addSignedEnum(builder: FlatBufferBuilder, signedEnum: Byte) = builder.addByte(48, signedEnum, -1) fun addTestrequirednestedflatbuffer(builder: FlatBufferBuilder, testrequirednestedflatbuffer: Int) = builder.addOffset(49, testrequirednestedflatbuffer, 0) + @kotlin.ExperimentalUnsignedTypes fun createTestrequirednestedflatbufferVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { diff --git a/tests/MyGame/Example/Race.kt b/tests/MyGame/Example/Race.kt index 9cf885723..6f770a3c9 100644 --- a/tests/MyGame/Example/Race.kt +++ b/tests/MyGame/Example/Race.kt @@ -3,7 +3,6 @@ package MyGame.Example @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Race private constructor() { companion object { const val None: Byte = -1 diff --git a/tests/MyGame/Example/Referrable.kt b/tests/MyGame/Example/Referrable.kt index 064d3e72d..55dc603de 100644 --- a/tests/MyGame/Example/Referrable.kt +++ b/tests/MyGame/Example/Referrable.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Referrable : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/Stat.kt b/tests/MyGame/Example/Stat.kt index 44a6fbc91..d5f09baed 100644 --- a/tests/MyGame/Example/Stat.kt +++ b/tests/MyGame/Example/Stat.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Stat : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/StructOfStructs.kt b/tests/MyGame/Example/StructOfStructs.kt index 89fd831f6..e7a27a231 100644 --- a/tests/MyGame/Example/StructOfStructs.kt +++ b/tests/MyGame/Example/StructOfStructs.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class StructOfStructs : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/StructOfStructsOfStructs.kt b/tests/MyGame/Example/StructOfStructsOfStructs.kt index 24bd1cfad..5fb1a1ef5 100644 --- a/tests/MyGame/Example/StructOfStructsOfStructs.kt +++ b/tests/MyGame/Example/StructOfStructsOfStructs.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class StructOfStructsOfStructs : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/Test.kt b/tests/MyGame/Example/Test.kt index c910b3e04..c2ce96e9b 100644 --- a/tests/MyGame/Example/Test.kt +++ b/tests/MyGame/Example/Test.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Test : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.kt b/tests/MyGame/Example/TestSimpleTableWithEnum.kt index 17d90c631..2b6edbb27 100644 --- a/tests/MyGame/Example/TestSimpleTableWithEnum.kt +++ b/tests/MyGame/Example/TestSimpleTableWithEnum.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class TestSimpleTableWithEnum : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/TypeAliases.kt b/tests/MyGame/Example/TypeAliases.kt index 4bd596417..bf6914a95 100644 --- a/tests/MyGame/Example/TypeAliases.kt +++ b/tests/MyGame/Example/TypeAliases.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class TypeAliases : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example/Vec3.kt b/tests/MyGame/Example/Vec3.kt index 59a431d7a..9e1f89ed8 100644 --- a/tests/MyGame/Example/Vec3.kt +++ b/tests/MyGame/Example/Vec3.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Vec3 : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/Example2/Monster.kt b/tests/MyGame/Example2/Monster.kt index dad657fec..9822b081b 100644 --- a/tests/MyGame/Example2/Monster.kt +++ b/tests/MyGame/Example2/Monster.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Monster : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/InParentNamespace.kt b/tests/MyGame/InParentNamespace.kt index 2116626c9..445057e98 100644 --- a/tests/MyGame/InParentNamespace.kt +++ b/tests/MyGame/InParentNamespace.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class InParentNamespace : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/MyGame/MonsterExtra.kt b/tests/MyGame/MonsterExtra.kt index cdc889110..cb0274daa 100644 --- a/tests/MyGame/MonsterExtra.kt +++ b/tests/MyGame/MonsterExtra.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class MonsterExtra : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/optional_scalars/OptionalByte.kt b/tests/optional_scalars/OptionalByte.kt index 1379cd105..7a8788631 100644 --- a/tests/optional_scalars/OptionalByte.kt +++ b/tests/optional_scalars/OptionalByte.kt @@ -3,7 +3,6 @@ package optional_scalars @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class OptionalByte private constructor() { companion object { const val None: Byte = 0 diff --git a/tests/optional_scalars/ScalarStuff.kt b/tests/optional_scalars/ScalarStuff.kt index bcc99d9bd..76bbb7275 100644 --- a/tests/optional_scalars/ScalarStuff.kt +++ b/tests/optional_scalars/ScalarStuff.kt @@ -19,7 +19,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class ScalarStuff : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/union_vector/Attacker.kt b/tests/union_vector/Attacker.kt index 60a2fa1a5..bd51612ae 100644 --- a/tests/union_vector/Attacker.kt +++ b/tests/union_vector/Attacker.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Attacker : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/union_vector/BookReader.kt b/tests/union_vector/BookReader.kt index ddeb09dda..87dff7328 100644 --- a/tests/union_vector/BookReader.kt +++ b/tests/union_vector/BookReader.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class BookReader : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/union_vector/Character.kt b/tests/union_vector/Character.kt index 302b7e50f..2e80a35f1 100644 --- a/tests/union_vector/Character.kt +++ b/tests/union_vector/Character.kt @@ -1,7 +1,6 @@ // automatically generated by the FlatBuffers compiler, do not modify @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Character_ private constructor() { companion object { const val NONE: UByte = 0u diff --git a/tests/union_vector/FallingTub.kt b/tests/union_vector/FallingTub.kt index 0f167250a..43e477a39 100644 --- a/tests/union_vector/FallingTub.kt +++ b/tests/union_vector/FallingTub.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class FallingTub : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/union_vector/Gadget.kt b/tests/union_vector/Gadget.kt index c537a4f30..4fb3b1007 100644 --- a/tests/union_vector/Gadget.kt +++ b/tests/union_vector/Gadget.kt @@ -1,7 +1,6 @@ // automatically generated by the FlatBuffers compiler, do not modify @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Gadget private constructor() { companion object { const val NONE: UByte = 0u diff --git a/tests/union_vector/HandFan.kt b/tests/union_vector/HandFan.kt index c432d22de..afae3142c 100644 --- a/tests/union_vector/HandFan.kt +++ b/tests/union_vector/HandFan.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class HandFan : Table() { fun __init(_i: Int, _bb: ByteBuffer) { diff --git a/tests/union_vector/Movie.kt b/tests/union_vector/Movie.kt index 87488dade..d346dfcb9 100644 --- a/tests/union_vector/Movie.kt +++ b/tests/union_vector/Movie.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Movie : Table() { fun __init(_i: Int, _bb: ByteBuffer) { @@ -99,6 +98,7 @@ class Movie : Table() { fun addMainCharacterType(builder: FlatBufferBuilder, mainCharacterType: UByte) = builder.addByte(0, mainCharacterType.toByte(), 0) fun addMainCharacter(builder: FlatBufferBuilder, mainCharacter: Int) = builder.addOffset(1, mainCharacter, 0) fun addCharactersType(builder: FlatBufferBuilder, charactersType: Int) = builder.addOffset(2, charactersType, 0) + @kotlin.ExperimentalUnsignedTypes fun createCharactersTypeVector(builder: FlatBufferBuilder, data: UByteArray) : Int { builder.startVector(1, data.size, 1) for (i in data.size - 1 downTo 0) { diff --git a/tests/union_vector/Rapunzel.kt b/tests/union_vector/Rapunzel.kt index d51402a25..e3296e193 100644 --- a/tests/union_vector/Rapunzel.kt +++ b/tests/union_vector/Rapunzel.kt @@ -17,7 +17,6 @@ import java.nio.ByteOrder import kotlin.math.sign @Suppress("unused") -@kotlin.ExperimentalUnsignedTypes class Rapunzel : Struct() { fun __init(_i: Int, _bb: ByteBuffer) { From 4172c3f0bd6a62cd29ef160f9236352466b634ca Mon Sep 17 00:00:00 2001 From: Philipp Schrader Date: Fri, 28 Apr 2023 11:17:45 -0700 Subject: [PATCH 7/7] Migrate from rules_nodejs to rules_js/rules_ts (#7923) * Start using pnpm * Add @npm * get more stuff set up * Get the analysis phase passing. * Get esbuild working? * Get it compiling? $ bazel build //tests/ts/... * Try to get the test working * test is passing * Get the other tests working * clarify comment * clean up a bit * Try to add another test * Add another test * clean up more * remove unused reference * Add e2e test * Get more of the test working * add lock file * Get test working on its own * Get e2e test passing * fix infinite recursion * Add comments * clean up some more * clean up more again * Source typescript version from package.json * run buildifier * lint * Fix unset `extra_env` * Incorporate feedback * run buildifier --------- Co-authored-by: Derek Bailey --- .bazelignore | 1 + .bazelrc | 1 + .npmrc | 1 + BUILD.bazel | 26 + WORKSPACE | 84 +- build_defs.bzl | 17 +- grpc/src/compiler/BUILD.bazel | 10 + package.json | 3 +- pnpm-lock.yaml | 1184 +++++++++++++++++ reflection/BUILD.bazel | 9 + reflection/ts/BUILD.bazel | 1 - src/BUILD.bazel | 11 + tests/BUILD.bazel | 12 + tests/ts/BUILD.bazel | 66 + tests/ts/bazel_repository_test.sh | 29 + .../ts/bazel_repository_test_dir/.bazelignore | 1 + tests/ts/bazel_repository_test_dir/.bazelrc | 1 + tests/ts/bazel_repository_test_dir/.gitignore | 1 + tests/ts/bazel_repository_test_dir/.npmrc | 1 + tests/ts/bazel_repository_test_dir/BUILD | 32 + tests/ts/bazel_repository_test_dir/WORKSPACE | 71 + .../bazel_repository_test_dir/import_test.js | 28 + tests/ts/bazel_repository_test_dir/one.fbs | 7 + .../ts/bazel_repository_test_dir/package.json | 8 + .../bazel_repository_test_dir/pnpm-lock.yaml | 12 + tests/ts/bazel_repository_test_dir/two.fbs | 9 + tests/ts/package.json | 1 - tests/ts/test_dir/BUILD.bazel | 12 + tests/ts/test_dir/import_test.js | 31 + tests/ts/test_dir/package.json | 6 + tests/ts/test_dir/typescript_include.fbs | 7 + ts/BUILD.bazel | 37 +- ts/compile_flat_file.sh | 7 +- typescript.bzl | 10 +- yarn.lock | 1174 ---------------- 35 files changed, 1697 insertions(+), 1214 deletions(-) create mode 100644 .bazelignore create mode 100644 .bazelrc create mode 100644 .npmrc create mode 100644 pnpm-lock.yaml create mode 100755 tests/ts/bazel_repository_test.sh create mode 100644 tests/ts/bazel_repository_test_dir/.bazelignore create mode 100644 tests/ts/bazel_repository_test_dir/.bazelrc create mode 100644 tests/ts/bazel_repository_test_dir/.gitignore create mode 120000 tests/ts/bazel_repository_test_dir/.npmrc create mode 100644 tests/ts/bazel_repository_test_dir/BUILD create mode 100644 tests/ts/bazel_repository_test_dir/WORKSPACE create mode 100644 tests/ts/bazel_repository_test_dir/import_test.js create mode 100644 tests/ts/bazel_repository_test_dir/one.fbs create mode 100644 tests/ts/bazel_repository_test_dir/package.json create mode 100644 tests/ts/bazel_repository_test_dir/pnpm-lock.yaml create mode 100644 tests/ts/bazel_repository_test_dir/two.fbs create mode 100644 tests/ts/test_dir/import_test.js create mode 100644 tests/ts/test_dir/package.json delete mode 100644 yarn.lock diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/.bazelignore @@ -0,0 +1 @@ +node_modules diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 000000000..a8f33c98a --- /dev/null +++ b/.bazelrc @@ -0,0 +1 @@ +build --deleted_packages=tests/ts/bazel_repository_test_dir diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..84ff0791f --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +hoist=false diff --git a/BUILD.bazel b/BUILD.bazel index 0ff3b234e..b4f015a0e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,3 +1,5 @@ +load("@aspect_rules_js//npm:defs.bzl", "npm_link_package") +load("@npm//:defs.bzl", "npm_link_all_packages") load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") licenses(["notice"]) @@ -6,6 +8,13 @@ package( default_visibility = ["//visibility:public"], ) +npm_link_all_packages(name = "node_modules") + +npm_link_package( + name = "node_modules/flatbuffers", + src = "//ts:flatbuffers", +) + exports_files([ "LICENSE", "tsconfig.json", @@ -25,6 +34,23 @@ config_setting( ], ) +filegroup( + name = "distribution", + srcs = [ + "BUILD.bazel", + "WORKSPACE", + "build_defs.bzl", + "typescript.bzl", + "//grpc/src/compiler:distribution", + "//reflection:distribution", + "//src:distribution", + "//ts:distribution", + ] + glob([ + "include/flatbuffers/*.h", + ]), + visibility = ["//visibility:public"], +) + # Public flatc library to compile flatbuffer files at runtime. cc_library( name = "flatbuffers", diff --git a/WORKSPACE b/WORKSPACE index e8474e0b7..9f70edd44 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,6 +1,6 @@ workspace(name = "com_github_google_flatbuffers") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") http_archive( name = "platforms", @@ -76,30 +76,80 @@ load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps") grpc_extra_deps() # rules_go from https://github.com/bazelbuild/rules_go/releases/tag/v0.34.0 + http_archive( - name = "build_bazel_rules_nodejs", - sha256 = "965ee2492a2b087cf9e0f2ca472aeaf1be2eb650e0cfbddf514b9a7d3ea4b02a", - urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.2.0/rules_nodejs-5.2.0.tar.gz"], + 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("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies") +load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") -build_bazel_rules_nodejs_dependencies() +rules_js_dependencies() -load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") +load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock", "pnpm_repository") -node_repositories() +pnpm_repository(name = "pnpm") -yarn_install( +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( + # Since rules_ts doesn't always have the newest integrity hashes, we + # compute it manually here. + # $ curl --silent https://registry.npmjs.org/typescript/5.0.4 | jq ._integrity + ts_integrity = "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + ts_version_from = "//:package.json", +) + +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", - exports_directories_only = False, - # Unfreeze to add/remove packages. - frozen_lockfile = False, - package_json = "//:package.json", - symlink_node_modules = False, - yarn_lock = "//:yarn.lock", + npmrc = "//:.npmrc", + pnpm_lock = "//:pnpm-lock.yaml", + # Set this to True when the lock file needs to be updated, commit the + # changes, then set to False again. + update_pnpm_lock = False, + verify_node_modules_ignored = "//:.bazelignore", ) -load("@build_bazel_rules_nodejs//toolchains/esbuild:esbuild_repositories.bzl", "esbuild_repositories") +load("@npm//:repositories.bzl", "npm_repositories") -esbuild_repositories(npm_repository = "npm") +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, +) + +http_file( + name = "bazel_linux_x86_64", + downloaded_file_path = "bazel", + sha256 = "e89747d63443e225b140d7d37ded952dacea73aaed896bca01ccd745827c6289", + urls = [ + "https://github.com/bazelbuild/bazel/releases/download/6.1.2/bazel-6.1.2-linux-x86_64", + ], +) diff --git a/build_defs.bzl b/build_defs.bzl index 66b22d2ea..5437d7ae0 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -48,7 +48,10 @@ def flatbuffer_library_public( restricted_to = None, target_compatible_with = None, flatc_path = "@com_github_google_flatbuffers//:flatc", - output_to_bindir = False): + output_to_bindir = False, + tools = None, + extra_env = None, + **kwargs): """Generates code files for reading/writing the given flatbuffers in the requested language using the public compiler. Args: @@ -73,6 +76,11 @@ def flatbuffer_library_public( to use. flatc_path: Bazel target corresponding to the flatc compiler to use. output_to_bindir: Passed to genrule for output to bin directory. + tools: Optional, passed to genrule for list of tools to make available + during the action. + extra_env: Optional, must be a string of "VAR1=VAL1 VAR2=VAL2". These get + set as environment variables that "flatc_path" sees. + **kwargs: Passed to the underlying genrule. This rule creates a filegroup(name) with all generated source files, and @@ -83,6 +91,8 @@ def flatbuffer_library_public( include_paths = default_include_paths(flatc_path) include_paths_cmd = ["-I %s" % (s) for s in include_paths] + extra_env = extra_env or "" + # '$(@D)' when given a single source target will give the appropriate # directory. Appending 'out_prefix' is only necessary when given a build # target with multiple sources. @@ -92,7 +102,7 @@ def flatbuffer_library_public( genrule_cmd = " ".join([ "SRCS=($(SRCS));", "for f in $${SRCS[@]:0:%s}; do" % len(srcs), - "OUTPUT_FILE=\"$(OUTS)\" $(location %s)" % (flatc_path), + "OUTPUT_FILE=\"$(OUTS)\" %s $(location %s)" % (extra_env, flatc_path), " ".join(include_paths_cmd), " ".join(flatc_args), language_flag, @@ -105,12 +115,13 @@ def flatbuffer_library_public( srcs = srcs + includes, outs = outs, output_to_bindir = output_to_bindir, - tools = [flatc_path], + tools = (tools or []) + [flatc_path], cmd = genrule_cmd, compatible_with = compatible_with, target_compatible_with = target_compatible_with, restricted_to = restricted_to, message = "Generating flatbuffer files for %s:" % (name), + **kwargs ) if reflection_name: reflection_genrule_cmd = " ".join([ diff --git a/grpc/src/compiler/BUILD.bazel b/grpc/src/compiler/BUILD.bazel index 544885e0f..0efa9560c 100644 --- a/grpc/src/compiler/BUILD.bazel +++ b/grpc/src/compiler/BUILD.bazel @@ -4,6 +4,16 @@ package( default_visibility = ["//visibility:public"], ) +filegroup( + name = "distribution", + srcs = [ + "BUILD.bazel", + ] + glob([ + "*.cc", + "*.h", + ]), +) + filegroup( name = "common_headers", srcs = [ diff --git a/package.json b/package.json index 505648fc8..5a2aecaf7 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,11 @@ "homepage": "https://google.github.io/flatbuffers/", "dependencies": {}, "devDependencies": { - "@bazel/typescript": "5.2.0", "@types/node": "18.15.11", "@typescript-eslint/eslint-plugin": "^5.57.0", "@typescript-eslint/parser": "^5.57.0", "esbuild": "^0.17.14", "eslint": "^8.37.0", - "typescript": "^5.0.3" + "typescript": "5.0.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..45c645b44 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1184 @@ +lockfileVersion: '6.0' + +devDependencies: + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@typescript-eslint/eslint-plugin': + specifier: ^5.57.0 + version: 5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/parser': + specifier: ^5.57.0 + version: 5.57.0(eslint@8.37.0)(typescript@5.0.3) + esbuild: + specifier: ^0.17.14 + version: 0.17.14 + eslint: + specifier: ^8.37.0 + version: 8.37.0 + typescript: + specifier: 5.0.3 + version: 5.0.3 + +packages: + + /@esbuild/android-arm64@0.17.14: + resolution: {integrity: sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.14: + resolution: {integrity: sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.17.14: + resolution: {integrity: sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.17.14: + resolution: {integrity: sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.17.14: + resolution: {integrity: sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.17.14: + resolution: {integrity: sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.17.14: + resolution: {integrity: sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.17.14: + resolution: {integrity: sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.17.14: + resolution: {integrity: sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.17.14: + resolution: {integrity: sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.17.14: + resolution: {integrity: sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.17.14: + resolution: {integrity: sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.17.14: + resolution: {integrity: sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.17.14: + resolution: {integrity: sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.17.14: + resolution: {integrity: sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.17.14: + resolution: {integrity: sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.17.14: + resolution: {integrity: sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.17.14: + resolution: {integrity: sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.17.14: + resolution: {integrity: sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.14: + resolution: {integrity: sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.14: + resolution: {integrity: sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.17.14: + resolution: {integrity: sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.37.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.37.0 + eslint-visitor-keys: 3.4.0 + dev: true + + /@eslint-community/regexpp@4.5.0: + resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.37.0: + resolution: {integrity: sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + dev: true + + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: true + + /@typescript-eslint/eslint-plugin@5.57.0(@typescript-eslint/parser@5.57.0)(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.0 + '@typescript-eslint/parser': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/type-utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + debug: 4.3.4 + eslint: 8.37.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.57.0(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + debug: 4.3.4 + eslint: 8.37.0 + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.57.0: + resolution: {integrity: sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + dev: true + + /@typescript-eslint/type-utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + '@typescript-eslint/utils': 5.57.0(eslint@8.37.0)(typescript@5.0.3) + debug: 4.3.4 + eslint: 8.37.0 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.57.0: + resolution: {integrity: sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.57.0(typescript@5.0.3): + resolution: {integrity: sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/visitor-keys': 5.57.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@5.0.3) + typescript: 5.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.57.0(eslint@8.37.0)(typescript@5.0.3): + resolution: {integrity: sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.57.0 + '@typescript-eslint/types': 5.57.0 + '@typescript-eslint/typescript-estree': 5.57.0(typescript@5.0.3) + eslint: 8.37.0 + eslint-scope: 5.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.57.0: + resolution: {integrity: sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.57.0 + eslint-visitor-keys: 3.4.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: true + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /esbuild@0.17.14: + resolution: {integrity: sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.14 + '@esbuild/android-arm64': 0.17.14 + '@esbuild/android-x64': 0.17.14 + '@esbuild/darwin-arm64': 0.17.14 + '@esbuild/darwin-x64': 0.17.14 + '@esbuild/freebsd-arm64': 0.17.14 + '@esbuild/freebsd-x64': 0.17.14 + '@esbuild/linux-arm': 0.17.14 + '@esbuild/linux-arm64': 0.17.14 + '@esbuild/linux-ia32': 0.17.14 + '@esbuild/linux-loong64': 0.17.14 + '@esbuild/linux-mips64el': 0.17.14 + '@esbuild/linux-ppc64': 0.17.14 + '@esbuild/linux-riscv64': 0.17.14 + '@esbuild/linux-s390x': 0.17.14 + '@esbuild/linux-x64': 0.17.14 + '@esbuild/netbsd-x64': 0.17.14 + '@esbuild/openbsd-x64': 0.17.14 + '@esbuild/sunos-x64': 0.17.14 + '@esbuild/win32-arm64': 0.17.14 + '@esbuild/win32-ia32': 0.17.14 + '@esbuild/win32-x64': 0.17.14 + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.37.0: + resolution: {integrity: sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.37.0) + '@eslint-community/regexpp': 4.5.0 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.37.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.0 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /semver@7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tsutils@3.21.0(typescript@5.0.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.3 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript@5.0.3: + resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/reflection/BUILD.bazel b/reflection/BUILD.bazel index f2760933c..4bdada5b8 100644 --- a/reflection/BUILD.bazel +++ b/reflection/BUILD.bazel @@ -1,3 +1,12 @@ +filegroup( + name = "distribution", + srcs = [ + "BUILD.bazel", + "reflection.fbs", + ], + visibility = ["//visibility:public"], +) + filegroup( name = "reflection_fbs_schema", srcs = ["reflection.fbs"], diff --git a/reflection/ts/BUILD.bazel b/reflection/ts/BUILD.bazel index b9bd70848..18ffd983b 100644 --- a/reflection/ts/BUILD.bazel +++ b/reflection/ts/BUILD.bazel @@ -9,7 +9,6 @@ genrule( flatbuffer_ts_library( name = "reflection_ts_fbs", - package_name = "flatbuffers_reflection", srcs = [":reflection.fbs"], visibility = ["//visibility:public"], ) diff --git a/src/BUILD.bazel b/src/BUILD.bazel index 28d0868ce..b4d2a9128 100644 --- a/src/BUILD.bazel +++ b/src/BUILD.bazel @@ -5,6 +5,17 @@ package( default_visibility = ["//visibility:private"], ) +filegroup( + name = "distribution", + srcs = [ + "BUILD.bazel", + ] + glob([ + "*.cpp", + "*.h", + ]), + visibility = ["//visibility:public"], +) + # Public flatc library to compile flatbuffer files at runtime. cc_library( name = "flatbuffers", diff --git a/tests/BUILD.bazel b/tests/BUILD.bazel index ee1427249..3a3cbc506 100644 --- a/tests/BUILD.bazel +++ b/tests/BUILD.bazel @@ -1,8 +1,20 @@ +load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") load("@rules_cc//cc:defs.bzl", "cc_test") load("//:build_defs.bzl", "flatbuffer_cc_library") package(default_visibility = ["//visibility:private"]) +# rules_js works around various JS tooling limitations by copying everything +# into the output directory. Make the test data available to the tests this way. +copy_to_bin( + name = "test_data_copied_to_bin", + srcs = glob([ + "*.mon", + "*.json", + ]), + visibility = ["//tests/ts:__subpackages__"], +) + # Test binary. cc_test( name = "flatbuffers_test", diff --git a/tests/ts/BUILD.bazel b/tests/ts/BUILD.bazel index 054011a57..82635450b 100644 --- a/tests/ts/BUILD.bazel +++ b/tests/ts/BUILD.bazel @@ -1,3 +1,4 @@ +load("@aspect_rules_js//js:defs.bzl", "js_test") load("//:typescript.bzl", "flatbuffer_ts_library") package(default_visibility = ["//visibility:private"]) @@ -10,3 +11,68 @@ flatbuffer_ts_library( "//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"], +) diff --git a/tests/ts/bazel_repository_test.sh b/tests/ts/bazel_repository_test.sh new file mode 100755 index 000000000..503080932 --- /dev/null +++ b/tests/ts/bazel_repository_test.sh @@ -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 [[ ! -e "${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 //... diff --git a/tests/ts/bazel_repository_test_dir/.bazelignore b/tests/ts/bazel_repository_test_dir/.bazelignore new file mode 100644 index 000000000..3c3629e64 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/.bazelignore @@ -0,0 +1 @@ +node_modules diff --git a/tests/ts/bazel_repository_test_dir/.bazelrc b/tests/ts/bazel_repository_test_dir/.bazelrc new file mode 100644 index 000000000..78003332b --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/.bazelrc @@ -0,0 +1 @@ +build --symlink_prefix=/ diff --git a/tests/ts/bazel_repository_test_dir/.gitignore b/tests/ts/bazel_repository_test_dir/.gitignore new file mode 100644 index 000000000..ac51a054d --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/.gitignore @@ -0,0 +1 @@ +bazel-* diff --git a/tests/ts/bazel_repository_test_dir/.npmrc b/tests/ts/bazel_repository_test_dir/.npmrc new file mode 120000 index 000000000..6b271c2f9 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/.npmrc @@ -0,0 +1 @@ +../../../.npmrc \ No newline at end of file diff --git a/tests/ts/bazel_repository_test_dir/BUILD b/tests/ts/bazel_repository_test_dir/BUILD new file mode 100644 index 000000000..f4e89a602 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/BUILD @@ -0,0 +1,32 @@ +load("@aspect_rules_js//js:defs.bzl", "js_test") +load("@com_github_google_flatbuffers//:typescript.bzl", "flatbuffer_ts_library") +load("@aspect_rules_js//npm:defs.bzl", "npm_link_package") +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", +) diff --git a/tests/ts/bazel_repository_test_dir/WORKSPACE b/tests/ts/bazel_repository_test_dir/WORKSPACE new file mode 100644 index 000000000..f7ef4541f --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/WORKSPACE @@ -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, +) diff --git a/tests/ts/bazel_repository_test_dir/import_test.js b/tests/ts/bazel_repository_test_dir/import_test.js new file mode 100644 index 000000000..05e7929ff --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/import_test.js @@ -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(); diff --git a/tests/ts/bazel_repository_test_dir/one.fbs b/tests/ts/bazel_repository_test_dir/one.fbs new file mode 100644 index 000000000..318170913 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/one.fbs @@ -0,0 +1,7 @@ +namespace bazel_repository_test; + +table One { + information:int; +} + +root_type One; diff --git a/tests/ts/bazel_repository_test_dir/package.json b/tests/ts/bazel_repository_test_dir/package.json new file mode 100644 index 000000000..7bab70109 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/package.json @@ -0,0 +1,8 @@ +{ + "name": "bazel_repository_test", + "type": "module", + "private": true, + "devDependencies": { + "@types/node": "18.15.11" + } +} diff --git a/tests/ts/bazel_repository_test_dir/pnpm-lock.yaml b/tests/ts/bazel_repository_test_dir/pnpm-lock.yaml new file mode 100644 index 000000000..331070a31 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/pnpm-lock.yaml @@ -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 diff --git a/tests/ts/bazel_repository_test_dir/two.fbs b/tests/ts/bazel_repository_test_dir/two.fbs new file mode 100644 index 000000000..8e0cdd879 --- /dev/null +++ b/tests/ts/bazel_repository_test_dir/two.fbs @@ -0,0 +1,9 @@ +include 'one.fbs'; + +namespace bazel_repository_test; + +table Two { + one:One; +} + +root_type Two; diff --git a/tests/ts/package.json b/tests/ts/package.json index ac2639e3c..1639cf831 100644 --- a/tests/ts/package.json +++ b/tests/ts/package.json @@ -1,7 +1,6 @@ { "type": "module", "dependencies": { - "@grpc/grpc-js": "^1.7.0", "flatbuffers": "../../" } } diff --git a/tests/ts/test_dir/BUILD.bazel b/tests/ts/test_dir/BUILD.bazel index 8b0accaa7..6026d9ff5 100644 --- a/tests/ts/test_dir/BUILD.bazel +++ b/tests/ts/test_dir/BUILD.bazel @@ -1,3 +1,4 @@ +load("@aspect_rules_js//js:defs.bzl", "js_test") load("//:typescript.bzl", "flatbuffer_ts_library") flatbuffer_ts_library( @@ -12,3 +13,14 @@ flatbuffer_ts_library( visibility = ["//visibility:public"], deps = [":typescript_transitive_ts_fbs"], ) + +js_test( + name = "import_test", + chdir = package_name(), + data = [ + "package.json", + ":include_ts_fbs", + "//:node_modules/flatbuffers", + ], + entry_point = "import_test.js", +) diff --git a/tests/ts/test_dir/import_test.js b/tests/ts/test_dir/import_test.js new file mode 100644 index 000000000..594b11e0e --- /dev/null +++ b/tests/ts/test_dir/import_test.js @@ -0,0 +1,31 @@ +import assert from 'assert' +import * as flatbuffers from 'flatbuffers' + +import typescript_include from './typescript_include_generated.cjs' + +const foobar = typescript_include.foobar; + +function main() { + // Validate the enums. + assert.strictEqual(foobar.Abc.a, 0); + assert.strictEqual(foobar.class_.arguments_, 0); + + // Validate building a table. + var fbb = new flatbuffers.Builder(1); + var name = fbb.createString("Foo Bar"); + + foobar.Tab.startTab(fbb); + foobar.Tab.addAbc(fbb, foobar.Abc.a); + foobar.Tab.addArg(fbb, foobar.class_.arguments_); + foobar.Tab.addName(fbb, name); + var tab = foobar.Tab.endTab(fbb); + + fbb.finish(tab); + + // Call as a sanity check. Would be better to validate actual output here. + fbb.asUint8Array(); + + console.log('FlatBuffers Bazel Import test: completed successfully'); +} + +main(); diff --git a/tests/ts/test_dir/package.json b/tests/ts/test_dir/package.json new file mode 100644 index 000000000..af3f206b3 --- /dev/null +++ b/tests/ts/test_dir/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "dependencies": { + "flatbuffers": "../../../" + } +} diff --git a/tests/ts/test_dir/typescript_include.fbs b/tests/ts/test_dir/typescript_include.fbs index c805693b2..aa43fe38a 100644 --- a/tests/ts/test_dir/typescript_include.fbs +++ b/tests/ts/test_dir/typescript_include.fbs @@ -1,6 +1,13 @@ include 'typescript_transitive_include.fbs'; + namespace foobar; enum class: int { arguments, } + +table Tab { + abc:Abc; + arg:class; + name:string; +} diff --git a/ts/BUILD.bazel b/ts/BUILD.bazel index 34fa6746a..4b86fe3d3 100644 --- a/ts/BUILD.bazel +++ b/ts/BUILD.bazel @@ -1,5 +1,23 @@ -load("@npm//@bazel/typescript:index.bzl", "ts_project") -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("@aspect_rules_ts//ts:defs.bzl", "ts_project") +load("@aspect_rules_js//npm:defs.bzl", "npm_package") + +filegroup( + name = "distribution", + srcs = [ + "BUILD.bazel", + "compile_flat_file.sh", + ] + glob([ + "*.ts", + ]), + visibility = ["//visibility:public"], +) + +# Add an index to emulate the top-level package.json's "main" entry. +genrule( + name = "generate_index.ts", + outs = ["index.ts"], + cmd = """echo "export * from './flatbuffers.js'" > $(OUTS)""", +) ts_project( name = "flatbuffers_ts", @@ -11,6 +29,7 @@ ts_project( "flatbuffers.ts", "types.ts", "utils.ts", + ":index.ts", ], declaration = True, tsconfig = { @@ -28,14 +47,19 @@ ts_project( }, }, visibility = ["//visibility:public"], - deps = ["@npm//@types/node"], + deps = [ + # Because the main repository instantiates the @npm repository, we need + # to depend on the main repository's node import. + "@//:node_modules/@types/node", + ], ) -js_library( +npm_package( name = "flatbuffers", - package_name = "flatbuffers", + srcs = [":flatbuffers_ts"], + include_external_repositories = ["*"], + package = "flatbuffers", visibility = ["//visibility:public"], - deps = [":flatbuffers_ts"], ) sh_binary( @@ -44,7 +68,6 @@ sh_binary( data = [ "@com_github_google_flatbuffers//:flatc", "@nodejs_linux_amd64//:node_bin", - "@npm//esbuild/bin:esbuild", ], # We just depend directly on the linux amd64 nodejs binary, so only support # running this script on amd64 for now. diff --git a/ts/compile_flat_file.sh b/ts/compile_flat_file.sh index 0aeaebeae..43e0c391a 100755 --- a/ts/compile_flat_file.sh +++ b/ts/compile_flat_file.sh @@ -14,10 +14,9 @@ source "${RUNFILES_DIR:-/dev/null}/$f" 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 v2 --- -set -e +set -eu runfiles_export_envvars FLATC=$(rlocation com_github_google_flatbuffers/flatc) -ESBUILD=$(rlocation npm/node_modules/esbuild/bin/esbuild) TS_FILE=$(${FLATC} $@ | grep "Entry point.*generated" | grep -o "bazel-out.*ts") -export PATH=$(rlocation nodejs_linux_amd64/bin/nodejs/bin) -${ESBUILD} ${TS_FILE} --format=cjs --bundle --outfile="${OUTPUT_FILE}" --external:flatbuffers --log-level=warning +export PATH="$(rlocation nodejs_linux_amd64/bin/nodejs/bin):${PATH}" +${ESBUILD_BIN} ${TS_FILE} --format=cjs --bundle --outfile="${OUTPUT_FILE}" --external:flatbuffers --log-level=warning diff --git a/typescript.bzl b/typescript.bzl index 41eb335cc..63c1218c6 100644 --- a/typescript.bzl +++ b/typescript.bzl @@ -2,7 +2,7 @@ Rules for building typescript flatbuffers with Bazel. """ -load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("@aspect_rules_js//js:defs.bzl", "js_library") load(":build_defs.bzl", "flatbuffer_library_public") DEFAULT_FLATC_TS_ARGS = [ @@ -24,8 +24,7 @@ def flatbuffer_ts_library( flatc_args = DEFAULT_FLATC_TS_ARGS, visibility = None, restricted_to = None, - gen_reflections = False, - package_name = None): + gen_reflections = False): """Generates a ts_library rule for a given flatbuffer definition. Args: @@ -46,7 +45,6 @@ def flatbuffer_ts_library( to use. gen_reflections: Optional, if true this will generate the flatbuffer reflection binaries for the schemas. - package_name: Optional, Package name to use for the generated code. """ srcs_lib = "%s_srcs" % (name) out_base = [s.replace(".fbs", "").split("/")[-1].split(":")[-1] for s in srcs] @@ -64,6 +62,7 @@ def flatbuffer_ts_library( language_flag = "--ts", includes = includes, include_paths = include_paths, + extra_env = "ESBUILD_BIN=$(ESBUILD_BIN)", flatc_args = flatc_args + ["--filename-suffix _generated"], compatible_with = compatible_with, restricted_to = restricted_to, @@ -71,6 +70,8 @@ def flatbuffer_ts_library( reflection_visibility = visibility, target_compatible_with = target_compatible_with, flatc_path = "@com_github_google_flatbuffers//ts:compile_flat_file", + toolchains = ["@aspect_rules_esbuild//esbuild:resolved_toolchain"], + tools = ["@aspect_rules_esbuild//esbuild:resolved_toolchain"], ) js_library( name = name, @@ -79,7 +80,6 @@ def flatbuffer_ts_library( restricted_to = restricted_to, target_compatible_with = target_compatible_with, srcs = outs, - package_name = package_name, ) native.filegroup( name = "%s_includes" % (name), diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index e65a4e918..000000000 --- a/yarn.lock +++ /dev/null @@ -1,1174 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@bazel/typescript@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-5.2.0.tgz#131127c8016c712ef1b291f2b52108e5326f0447" - integrity sha512-hNpSCQj5dOX95iC4Yf/fuyxfMU5uTAe84thqPcTCvOJFmpypN6qzxH24S5UiXkwbsL8sQM9DP0+qFyT/TRKdNw== - dependencies: - "@bazel/worker" "5.2.0" - protobufjs "6.8.8" - semver "5.6.0" - source-map-support "0.5.9" - tsutils "3.21.0" - -"@bazel/worker@5.2.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-5.2.0.tgz#464726821f9d98b11c6536e2547d44459a321a61" - integrity sha512-C9ozvgRP2iug4e9XaVjfXSKmrUMyzsYhDN2/A+MqKl8qlAf5AlveNofCUBASHxJsYiBn3ATbPNUznGsjeMpVWg== - dependencies: - google-protobuf "^3.6.1" - -"@esbuild/android-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.14.tgz#4624cea3c8941c91f9e9c1228f550d23f1cef037" - integrity sha512-eLOpPO1RvtsP71afiFTvS7tVFShJBCT0txiv/xjFBo5a7R7Gjw7X0IgIaFoLKhqXYAXhahoXm7qAmRXhY4guJg== - -"@esbuild/android-arm@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.14.tgz#74fae60fcab34c3f0e15cb56473a6091ba2b53a6" - integrity sha512-0CnlwnjDU8cks0yJLXfkaU/uoLyRf9VZJs4p1PskBr2AlAHeEsFEwJEo0of/Z3g+ilw5mpyDwThlxzNEIxOE4g== - -"@esbuild/android-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.14.tgz#f002fbc08d5e939d8314bd23bcfb1e95d029491f" - integrity sha512-nrfQYWBfLGfSGLvRVlt6xi63B5IbfHm3tZCdu/82zuFPQ7zez4XjmRtF/wIRYbJQ/DsZrxJdEvYFE67avYXyng== - -"@esbuild/darwin-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.14.tgz#b8dcd79a1dd19564950b4ca51d62999011e2e168" - integrity sha512-eoSjEuDsU1ROwgBH/c+fZzuSyJUVXQTOIN9xuLs9dE/9HbV/A5IqdXHU1p2OfIMwBwOYJ9SFVGGldxeRCUJFyw== - -"@esbuild/darwin-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.14.tgz#4b49f195d9473625efc3c773fc757018f2c0d979" - integrity sha512-zN0U8RWfrDttdFNkHqFYZtOH8hdi22z0pFm0aIJPsNC4QQZv7je8DWCX5iA4Zx6tRhS0CCc0XC2m7wKsbWEo5g== - -"@esbuild/freebsd-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.14.tgz#480923fd38f644c6342c55e916cc7c231a85eeb7" - integrity sha512-z0VcD4ibeZWVQCW1O7szaLxGsx54gcCnajEJMdYoYjLiq4g1jrP2lMq6pk71dbS5+7op/L2Aod+erw+EUr28/A== - -"@esbuild/freebsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.14.tgz#a6b6b01954ad8562461cb8a5e40e8a860af69cbe" - integrity sha512-hd9mPcxfTgJlolrPlcXkQk9BMwNBvNBsVaUe5eNUqXut6weDQH8whcNaKNF2RO8NbpT6GY8rHOK2A9y++s+ehw== - -"@esbuild/linux-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.14.tgz#1fe2f39f78183b59f75a4ad9c48d079916d92418" - integrity sha512-FhAMNYOq3Iblcj9i+K0l1Fp/MHt+zBeRu/Qkf0LtrcFu3T45jcwB6A1iMsemQ42vR3GBhjNZJZTaCe3VFPbn9g== - -"@esbuild/linux-arm@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.14.tgz#18d594a49b64e4a3a05022c005cb384a58056a2a" - integrity sha512-BNTl+wSJ1omsH8s3TkQmIIIQHwvwJrU9u1ggb9XU2KTVM4TmthRIVyxSp2qxROJHhZuW/r8fht46/QE8hU8Qvg== - -"@esbuild/linux-ia32@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.14.tgz#f7f0182a9cfc0159e0922ed66c805c9c6ef1b654" - integrity sha512-91OK/lQ5y2v7AsmnFT+0EyxdPTNhov3y2CWMdizyMfxSxRqHazXdzgBKtlmkU2KYIc+9ZK3Vwp2KyXogEATYxQ== - -"@esbuild/linux-loong64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.14.tgz#5f5305fdffe2d71dd9a97aa77d0c99c99409066f" - integrity sha512-vp15H+5NR6hubNgMluqqKza85HcGJgq7t6rMH7O3Y6ApiOWPkvW2AJfNojUQimfTp6OUrACUXfR4hmpcENXoMQ== - -"@esbuild/linux-mips64el@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.14.tgz#a602e85c51b2f71d2aedfe7f4143b2f92f97f3f5" - integrity sha512-90TOdFV7N+fgi6c2+GO9ochEkmm9kBAKnuD5e08GQMgMINOdOFHuYLPQ91RYVrnWwQ5683sJKuLi9l4SsbJ7Hg== - -"@esbuild/linux-ppc64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.14.tgz#32d918d782105cbd9345dbfba14ee018b9c7afdf" - integrity sha512-NnBGeoqKkTugpBOBZZoktQQ1Yqb7aHKmHxsw43NddPB2YWLAlpb7THZIzsRsTr0Xw3nqiPxbA1H31ZMOG+VVPQ== - -"@esbuild/linux-riscv64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.14.tgz#38612e7b6c037dff7022c33f49ca17f85c5dec58" - integrity sha512-0qdlKScLXA8MGVy21JUKvMzCYWovctuP8KKqhtE5A6IVPq4onxXhSuhwDd2g5sRCzNDlDjitc5sX31BzDoL5Fw== - -"@esbuild/linux-s390x@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.14.tgz#4397dff354f899e72fd035d72af59a700c465ccb" - integrity sha512-Hdm2Jo1yaaOro4v3+6/zJk6ygCqIZuSDJHdHaf8nVH/tfOuoEX5Riv03Ka15LmQBYJObUTNS1UdyoMk0WUn9Ww== - -"@esbuild/linux-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.14.tgz#6c5cb99891b6c3e0c08369da3ef465e8038ad9c2" - integrity sha512-8KHF17OstlK4DuzeF/KmSgzrTWQrkWj5boluiiq7kvJCiQVzUrmSkaBvcLB2UgHpKENO2i6BthPkmUhNDaJsVw== - -"@esbuild/netbsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.14.tgz#5fa5255a64e9bf3947c1b3bef5e458b50b211994" - integrity sha512-nVwpqvb3yyXztxIT2+VsxJhB5GCgzPdk1n0HHSnchRAcxqKO6ghXwHhJnr0j/B+5FSyEqSxF4q03rbA2fKXtUQ== - -"@esbuild/openbsd-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.14.tgz#74d14c79dcb6faf446878cc64284aa4e02f5ca6f" - integrity sha512-1RZ7uQQ9zcy/GSAJL1xPdN7NDdOOtNEGiJalg/MOzeakZeTrgH/DoCkbq7TaPDiPhWqnDF+4bnydxRqQD7il6g== - -"@esbuild/sunos-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.14.tgz#5c7d1c7203781d86c2a9b2ff77bd2f8036d24cfa" - integrity sha512-nqMjDsFwv7vp7msrwWRysnM38Sd44PKmW8EzV01YzDBTcTWUpczQg6mGao9VLicXSgW/iookNK6AxeogNVNDZA== - -"@esbuild/win32-arm64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.14.tgz#dc36ed84f1390e73b6019ccf0566c80045e5ca3d" - integrity sha512-xrD0mccTKRBBIotrITV7WVQAwNJ5+1va6L0H9zN92v2yEdjfAN7864cUaZwJS7JPEs53bDTzKFbfqVlG2HhyKQ== - -"@esbuild/win32-ia32@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.14.tgz#0802a107afa9193c13e35de15a94fe347c588767" - integrity sha512-nXpkz9bbJrLLyUTYtRotSS3t5b+FOuljg8LgLdINWFs3FfqZMtbnBCZFUmBzQPyxqU87F8Av+3Nco/M3hEcu1w== - -"@esbuild/win32-x64@0.17.14": - version "0.17.14" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.14.tgz#e81fb49de05fed91bf74251c9ca0343f4fc77d31" - integrity sha512-gPQmsi2DKTaEgG14hc3CHXHp62k8g6qr0Pas+I4lUxRMugGSATh/Bi8Dgusoz9IQ0IfdrvLpco6kujEIBoaogA== - -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" - integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== - -"@eslint/eslintrc@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" - integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.5.1" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.37.0": - version "8.37.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" - integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== - -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/long@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/node@18.15.11": - version "18.15.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" - integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== - -"@types/node@^10.1.0": - version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - -"@typescript-eslint/eslint-plugin@^5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz#52c8a7a4512f10e7249ca1e2e61f81c62c34365c" - integrity sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA== - dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.57.0" - "@typescript-eslint/type-utils" "5.57.0" - "@typescript-eslint/utils" "5.57.0" - debug "^4.3.4" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.0.tgz#f675bf2cd1a838949fd0de5683834417b757e4fa" - integrity sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ== - dependencies: - "@typescript-eslint/scope-manager" "5.57.0" - "@typescript-eslint/types" "5.57.0" - "@typescript-eslint/typescript-estree" "5.57.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz#79ccd3fa7bde0758059172d44239e871e087ea36" - integrity sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw== - dependencies: - "@typescript-eslint/types" "5.57.0" - "@typescript-eslint/visitor-keys" "5.57.0" - -"@typescript-eslint/type-utils@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz#98e7531c4e927855d45bd362de922a619b4319f2" - integrity sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ== - dependencies: - "@typescript-eslint/typescript-estree" "5.57.0" - "@typescript-eslint/utils" "5.57.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.0.tgz#727bfa2b64c73a4376264379cf1f447998eaa132" - integrity sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ== - -"@typescript-eslint/typescript-estree@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz#ebcd0ee3e1d6230e888d88cddf654252d41e2e40" - integrity sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw== - dependencies: - "@typescript-eslint/types" "5.57.0" - "@typescript-eslint/visitor-keys" "5.57.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.0.tgz#eab8f6563a2ac31f60f3e7024b91bf75f43ecef6" - integrity sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.57.0" - "@typescript-eslint/types" "5.57.0" - "@typescript-eslint/typescript-estree" "5.57.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.57.0": - version "5.57.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz#e2b2f4174aff1d15eef887ce3d019ecc2d7a8ac1" - integrity sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g== - dependencies: - "@typescript-eslint/types" "5.57.0" - eslint-visitor-keys "^3.3.0" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -esbuild@^0.17.14: - version "0.17.14" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.14.tgz#d61a22de751a3133f3c6c7f9c1c3e231e91a3245" - integrity sha512-vOO5XhmVj/1XQR9NQ1UPq6qvMYL7QFJU57J5fKBKBKxp17uDt5PgxFDb4A2nEiXhr1qQs4x0F5+66hVVw4ruNw== - optionalDependencies: - "@esbuild/android-arm" "0.17.14" - "@esbuild/android-arm64" "0.17.14" - "@esbuild/android-x64" "0.17.14" - "@esbuild/darwin-arm64" "0.17.14" - "@esbuild/darwin-x64" "0.17.14" - "@esbuild/freebsd-arm64" "0.17.14" - "@esbuild/freebsd-x64" "0.17.14" - "@esbuild/linux-arm" "0.17.14" - "@esbuild/linux-arm64" "0.17.14" - "@esbuild/linux-ia32" "0.17.14" - "@esbuild/linux-loong64" "0.17.14" - "@esbuild/linux-mips64el" "0.17.14" - "@esbuild/linux-ppc64" "0.17.14" - "@esbuild/linux-riscv64" "0.17.14" - "@esbuild/linux-s390x" "0.17.14" - "@esbuild/linux-x64" "0.17.14" - "@esbuild/netbsd-x64" "0.17.14" - "@esbuild/openbsd-x64" "0.17.14" - "@esbuild/sunos-x64" "0.17.14" - "@esbuild/win32-arm64" "0.17.14" - "@esbuild/win32-ia32" "0.17.14" - "@esbuild/win32-x64" "0.17.14" - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" - integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== - -eslint@^8.37.0: - version "8.37.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" - integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.2" - "@eslint/js" "8.37.0" - "@humanwhocodes/config-array" "^0.11.8" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.4.0" - espree "^9.5.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" - integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.0" - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -google-protobuf@^3.6.1: - version "3.21.2" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4" - integrity sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -protobufjs@6.8.8: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -semver@5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^7.3.7: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" - integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@3.21.0, tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf" - integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==