Full Code of clockworklabs/SpacetimeDB for AI

master 31b9af3da35f cached
5165 files
32.0 MB
4.4M tokens
17415 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (17,334K chars total). Download the full file to get everything.
Repository: clockworklabs/SpacetimeDB
Branch: master
Commit: 31b9af3da35f
Files: 5165
Total size: 32.0 MB

Directory structure:
gitextract_6scv2pvq/

├── .cargo/
│   └── config.toml
├── .dockerignore
├── .envrc
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── Dockerfile
│   ├── GREMLINS.md
│   ├── docker-compose.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── attach-artifacts.yml
│       ├── benchmarks.yml
│       ├── check-merge-labels.yml
│       ├── check-pr-base.yml
│       ├── ci.yml
│       ├── discord-posts.yml
│       ├── docker.yml
│       ├── docs-publish.yaml
│       ├── docs-test.yaml
│       ├── llm-benchmark-update.yml
│       ├── package.yml
│       ├── pr_approval_check.yml
│       ├── rust_matcher.json
│       ├── tag-release.yml
│       ├── typescript-lint.yml
│       ├── typescript-test.yml
│       └── upgrade-version-check.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .rustfmt.toml
├── Cargo.toml
├── Dockerfile
├── LICENSE.txt
├── README.md
├── clippy.toml
├── crates/
│   ├── auth/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── identity.rs
│   │       └── lib.rs
│   ├── bench/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── benches/
│   │   │   ├── callgrind.rs
│   │   │   ├── delete_table.rs
│   │   │   ├── generic.rs
│   │   │   ├── index.rs
│   │   │   ├── special.rs
│   │   │   └── subscription.rs
│   │   ├── callgrind-docker.sh
│   │   ├── clippy.toml
│   │   ├── flamegraph.sh
│   │   ├── hyper_cmp.py
│   │   ├── instruments.sh
│   │   └── src/
│   │       ├── database.rs
│   │       ├── lib.rs
│   │       ├── schemas.rs
│   │       ├── spacetime_module.rs
│   │       ├── spacetime_raw.rs
│   │       └── sqlite.rs
│   ├── bindings/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── bindings-doctests.sh
│   │   ├── src/
│   │   │   ├── client_visibility_filter.rs
│   │   │   ├── http.rs
│   │   │   ├── lib.rs
│   │   │   ├── log_stopwatch.rs
│   │   │   ├── logger.rs
│   │   │   ├── rng.rs
│   │   │   ├── rt.rs
│   │   │   └── table.rs
│   │   └── tests/
│   │       ├── deps.rs
│   │       ├── snapshots/
│   │       │   ├── deps__duplicate_deps.snap
│   │       │   └── deps__spacetimedb_bindings_dependencies.snap
│   │       ├── ui/
│   │       │   ├── reducers.rs
│   │       │   ├── reducers.stderr
│   │       │   ├── tables.rs
│   │       │   ├── tables.stderr
│   │       │   ├── views-more.rs
│   │       │   ├── views-more.stderr
│   │       │   ├── views.rs
│   │       │   └── views.stderr
│   │       └── ui.rs
│   ├── bindings-cpp/
│   │   ├── .gitignore
│   │   ├── ARCHITECTURE.md
│   │   ├── CMakeLists.txt
│   │   ├── DEVELOP.md
│   │   ├── QUICKSTART.md
│   │   ├── README.md
│   │   ├── REFERENCE.md
│   │   ├── include/
│   │   │   ├── spacetimedb/
│   │   │   │   ├── abi/
│   │   │   │   │   ├── FFI.h
│   │   │   │   │   ├── abi.h
│   │   │   │   │   └── opaque_types.h
│   │   │   │   ├── auth_ctx.h
│   │   │   │   ├── bsatn/
│   │   │   │   │   ├── DEVELOP.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── algebraic_type.h
│   │   │   │   │   ├── bsatn.h
│   │   │   │   │   ├── primitive_traits.h
│   │   │   │   │   ├── reader.h
│   │   │   │   │   ├── result.h
│   │   │   │   │   ├── schedule_at.h
│   │   │   │   │   ├── schedule_at_impl.h
│   │   │   │   │   ├── serialization.h
│   │   │   │   │   ├── size_calculator.h
│   │   │   │   │   ├── sum_type.h
│   │   │   │   │   ├── time_duration.h
│   │   │   │   │   ├── timestamp.h
│   │   │   │   │   ├── traits.h
│   │   │   │   │   ├── type_extensions.h
│   │   │   │   │   ├── types.h
│   │   │   │   │   ├── types_impl.h
│   │   │   │   │   ├── uuid.h
│   │   │   │   │   └── writer.h
│   │   │   │   ├── client_visibility_filter.h
│   │   │   │   ├── database.h
│   │   │   │   ├── enum_macro.h
│   │   │   │   ├── error_handling.h
│   │   │   │   ├── http.h
│   │   │   │   ├── http_client_impl.h
│   │   │   │   ├── http_convert.h
│   │   │   │   ├── http_wire.h
│   │   │   │   ├── index_iterator.h
│   │   │   │   ├── internal/
│   │   │   │   │   ├── Module.h
│   │   │   │   │   ├── Module_impl.h
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── autogen/
│   │   │   │   │   │   ├── AlgebraicType.g.h
│   │   │   │   │   │   ├── CaseConversionPolicy.g.h
│   │   │   │   │   │   ├── ExplicitNameEntry.g.h
│   │   │   │   │   │   ├── ExplicitNames.g.h
│   │   │   │   │   │   ├── FunctionVisibility.g.h
│   │   │   │   │   │   ├── IndexType.g.h
│   │   │   │   │   │   ├── Lifecycle.g.h
│   │   │   │   │   │   ├── MiscModuleExport.g.h
│   │   │   │   │   │   ├── NameMapping.g.h
│   │   │   │   │   │   ├── ProductType.g.h
│   │   │   │   │   │   ├── ProductTypeElement.g.h
│   │   │   │   │   │   ├── RawColumnDefV8.g.h
│   │   │   │   │   │   ├── RawColumnDefaultValueV10.g.h
│   │   │   │   │   │   ├── RawColumnDefaultValueV9.g.h
│   │   │   │   │   │   ├── RawConstraintDataV9.g.h
│   │   │   │   │   │   ├── RawConstraintDefV10.g.h
│   │   │   │   │   │   ├── RawConstraintDefV8.g.h
│   │   │   │   │   │   ├── RawConstraintDefV9.g.h
│   │   │   │   │   │   ├── RawIndexAlgorithm.g.h
│   │   │   │   │   │   ├── RawIndexDefV10.g.h
│   │   │   │   │   │   ├── RawIndexDefV8.g.h
│   │   │   │   │   │   ├── RawIndexDefV9.g.h
│   │   │   │   │   │   ├── RawLifeCycleReducerDefV10.g.h
│   │   │   │   │   │   ├── RawMiscModuleExportV9.g.h
│   │   │   │   │   │   ├── RawModuleDef.g.h
│   │   │   │   │   │   ├── RawModuleDefV10.g.h
│   │   │   │   │   │   ├── RawModuleDefV10Section.g.h
│   │   │   │   │   │   ├── RawModuleDefV8.g.h
│   │   │   │   │   │   ├── RawModuleDefV9.g.h
│   │   │   │   │   │   ├── RawProcedureDefV10.g.h
│   │   │   │   │   │   ├── RawProcedureDefV9.g.h
│   │   │   │   │   │   ├── RawReducerDefV10.g.h
│   │   │   │   │   │   ├── RawReducerDefV9.g.h
│   │   │   │   │   │   ├── RawRowLevelSecurityDefV9.g.h
│   │   │   │   │   │   ├── RawScheduleDefV10.g.h
│   │   │   │   │   │   ├── RawScheduleDefV9.g.h
│   │   │   │   │   │   ├── RawScopedTypeNameV10.g.h
│   │   │   │   │   │   ├── RawScopedTypeNameV9.g.h
│   │   │   │   │   │   ├── RawSequenceDefV10.g.h
│   │   │   │   │   │   ├── RawSequenceDefV8.g.h
│   │   │   │   │   │   ├── RawSequenceDefV9.g.h
│   │   │   │   │   │   ├── RawTableDefV10.g.h
│   │   │   │   │   │   ├── RawTableDefV8.g.h
│   │   │   │   │   │   ├── RawTableDefV9.g.h
│   │   │   │   │   │   ├── RawTypeDefV10.g.h
│   │   │   │   │   │   ├── RawTypeDefV9.g.h
│   │   │   │   │   │   ├── RawUniqueConstraintDataV9.g.h
│   │   │   │   │   │   ├── RawViewDefV10.g.h
│   │   │   │   │   │   ├── RawViewDefV9.g.h
│   │   │   │   │   │   ├── ReducerDef.g.h
│   │   │   │   │   │   ├── SumType.g.h
│   │   │   │   │   │   ├── SumTypeVariant.g.h
│   │   │   │   │   │   ├── TableAccess.g.h
│   │   │   │   │   │   ├── TableDesc.g.h
│   │   │   │   │   │   ├── TableType.g.h
│   │   │   │   │   │   ├── TypeAlias.g.h
│   │   │   │   │   │   └── Typespace.g.h
│   │   │   │   │   ├── autogen_base.h
│   │   │   │   │   ├── bsatn_adapters.h
│   │   │   │   │   ├── buffer_pool.h
│   │   │   │   │   ├── debug.h
│   │   │   │   │   ├── field_registration.h
│   │   │   │   │   ├── forward_declarations.h
│   │   │   │   │   ├── module_type_registration.h
│   │   │   │   │   ├── runtime_registration.h
│   │   │   │   │   ├── template_utils.h
│   │   │   │   │   ├── v10_builder.h
│   │   │   │   │   └── v9_builder.h
│   │   │   │   ├── jwt_claims.h
│   │   │   │   ├── logger.h
│   │   │   │   ├── macros.h
│   │   │   │   ├── outcome.h
│   │   │   │   ├── procedure_context.h
│   │   │   │   ├── procedure_macros.h
│   │   │   │   ├── random.h
│   │   │   │   ├── range_queries.h
│   │   │   │   ├── readonly_database_context.h
│   │   │   │   ├── readonly_field_accessors.h
│   │   │   │   ├── readonly_table_accessor.h
│   │   │   │   ├── reducer_context.h
│   │   │   │   ├── reducer_error.h
│   │   │   │   ├── reducer_macros.h
│   │   │   │   ├── schedule_reducer.h
│   │   │   │   ├── table.h
│   │   │   │   ├── table_with_constraints.h
│   │   │   │   ├── tx_context.h
│   │   │   │   ├── version.h.in
│   │   │   │   ├── view_context.h
│   │   │   │   └── view_macros.h
│   │   │   └── spacetimedb.h
│   │   ├── src/
│   │   │   ├── abi/
│   │   │   │   ├── module_exports.cpp
│   │   │   │   └── wasi_shims.cpp
│   │   │   └── internal/
│   │   │       ├── AlgebraicType.cpp
│   │   │       ├── Module.cpp
│   │   │       ├── module_type_registration.cpp
│   │   │       ├── v10_builder.cpp
│   │   │       └── v9_builder.cpp
│   │   └── tests/
│   │       ├── client-comparison/
│   │       │   ├── README.md
│   │       │   ├── check_tables.py
│   │       │   ├── run_client_comparison.sh
│   │       │   └── scripts/
│   │       │       ├── compare_clients.sh
│   │       │       ├── compare_modules.sh
│   │       │       ├── regenerate_cpp_client.sh
│   │       │       └── regenerate_rust_client.sh
│   │       └── type-isolation-test/
│   │           ├── .gitignore
│   │           ├── CMakeLists.module.txt
│   │           ├── CMakeLists.txt
│   │           ├── CMakeLists_module.txt
│   │           ├── README.md
│   │           ├── run_type_isolation_test.sh
│   │           ├── test_modules/
│   │           │   ├── debug_constraint_simple.cpp
│   │           │   ├── debug_large_struct.cpp
│   │           │   ├── debug_minimal_fail.cpp
│   │           │   ├── debug_optional_large_struct.cpp
│   │           │   ├── debug_simple_enum.cpp
│   │           │   ├── debug_special.cpp
│   │           │   ├── debug_special_constraints.cpp
│   │           │   ├── debug_special_reducers.cpp
│   │           │   ├── debug_trace.cpp
│   │           │   ├── debug_vector_only.cpp
│   │           │   ├── debug_vector_only_simple.cpp
│   │           │   ├── error_autoinc_non_integer.cpp
│   │           │   ├── error_circular_ref.cpp
│   │           │   ├── error_default_missing_field.cpp
│   │           │   ├── error_invalid_index.cpp
│   │           │   ├── error_multicolumn_missing_field.cpp
│   │           │   ├── error_multiple_pk.cpp
│   │           │   ├── error_non_spacetimedb_type.cpp
│   │           │   ├── error_scheduled_id_pk.cpp
│   │           │   ├── module01_basic_unsigned.cpp
│   │           │   ├── module02_large_unsigned.cpp
│   │           │   ├── module03_basic_signed.cpp
│   │           │   ├── module04_large_signed.cpp
│   │           │   ├── module05_float_bool.cpp
│   │           │   ├── module06_string.cpp
│   │           │   ├── module07_special_types.cpp
│   │           │   ├── module08_enums.cpp
│   │           │   ├── module09_structs.cpp
│   │           │   ├── module10_vectors.cpp
│   │           │   ├── module11_optional.cpp
│   │           │   ├── module12_constraints.cpp
│   │           │   ├── test_complex_reducer_only.cpp
│   │           │   ├── test_complex_table_only.cpp
│   │           │   ├── test_connectionid_only.cpp
│   │           │   ├── test_debug_optional.cpp
│   │           │   ├── test_enum_table_only.cpp
│   │           │   ├── test_enum_vector_payloads.cpp
│   │           │   ├── test_identity_only.cpp
│   │           │   ├── test_massive_reducer.cpp
│   │           │   ├── test_minimal_special.cpp
│   │           │   ├── test_mixed_types.cpp
│   │           │   ├── test_multicolumn_index_valid.cpp
│   │           │   ├── test_nested_optionals.cpp
│   │           │   ├── test_optional_debug.cpp
│   │           │   ├── test_optional_reducer_only.cpp
│   │           │   ├── test_optional_simple.cpp
│   │           │   ├── test_optional_table_only.cpp
│   │           │   ├── test_simple_table.cpp
│   │           │   ├── test_single_special_vector.cpp
│   │           │   ├── test_special_minimal.cpp
│   │           │   ├── test_special_vectors.cpp
│   │           │   ├── test_timeduration_only.cpp
│   │           │   ├── test_timestamp_only.cpp
│   │           │   ├── test_u128_only.cpp
│   │           │   ├── test_unified_enum.cpp
│   │           │   ├── test_unit_isolation.cpp
│   │           │   ├── test_unit_progression.cpp
│   │           │   ├── test_unit_simple.cpp
│   │           │   ├── test_unit_struct.cpp
│   │           │   └── test_wrapped_special.cpp
│   │           └── update_table_from_log.sh
│   ├── bindings-csharp/
│   │   ├── .config/
│   │   │   └── dotnet-tools.json
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── BSATN.Codegen/
│   │   │   ├── BSATN.Codegen.csproj
│   │   │   ├── Diag.cs
│   │   │   ├── Type.cs
│   │   │   └── Utils.cs
│   │   ├── BSATN.Runtime/
│   │   │   ├── .gitignore
│   │   │   ├── Attrs.cs
│   │   │   ├── BSATN/
│   │   │   │   ├── AlgebraicType.cs
│   │   │   │   ├── I128.cs
│   │   │   │   ├── I256.cs
│   │   │   │   ├── Runtime.cs
│   │   │   │   ├── U128.cs
│   │   │   │   ├── U256.cs
│   │   │   │   └── Uuid.cs
│   │   │   ├── BSATN.Runtime.csproj
│   │   │   ├── Builtins.cs
│   │   │   ├── Db.cs
│   │   │   ├── HttpWireTypes.cs
│   │   │   ├── Internal/
│   │   │   │   └── ByteArrayComparer.cs
│   │   │   ├── QueryBuilder.cs
│   │   │   └── package.json
│   │   ├── BSATN.Runtime.Tests/
│   │   │   ├── BSATN.Runtime.Tests.csproj
│   │   │   └── Tests.cs
│   │   ├── Codegen/
│   │   │   ├── Codegen.csproj
│   │   │   ├── Diag.cs
│   │   │   ├── Module.cs
│   │   │   └── README.md
│   │   ├── Codegen.Tests/
│   │   │   ├── Codegen.Tests.csproj
│   │   │   ├── TestInit.cs
│   │   │   ├── Tests.cs
│   │   │   └── fixtures/
│   │   │       ├── Directory.Build.props
│   │   │       ├── client/
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── client.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── Type#CustomClass.verified.cs
│   │   │       │       ├── Type#CustomStruct.verified.cs
│   │   │       │       ├── Type#CustomTaggedEnum.verified.cs
│   │   │       │       └── Type#PublicTable.verified.cs
│   │   │       ├── diag/
│   │   │       │   ├── .gitattributes
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── diag.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── ExtraCompilationErrors.verified.txt
│   │   │       │       ├── Module#FFI.verified.cs
│   │   │       │       ├── Module#InAnotherNamespace.TestDuplicateTableName.verified.cs
│   │   │       │       ├── Module#Player.verified.cs
│   │   │       │       ├── Module#Reducers.InAnotherNamespace.TestDuplicateReducerName.verified.cs
│   │   │       │       ├── Module#Reducers.OnReducerWithReservedPrefix.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerKind1.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerKind2.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerName.verified.cs
│   │   │       │       ├── Module#Reducers.TestReducerReturnType.verified.cs
│   │   │       │       ├── Module#Reducers.TestReducerWithoutContext.verified.cs
│   │   │       │       ├── Module#Reducers.__ReducerWithReservedPrefix.verified.cs
│   │   │       │       ├── Module#TestAutoIncNotInteger.verified.cs
│   │   │       │       ├── Module#TestDefaultFieldValues.verified.cs
│   │   │       │       ├── Module#TestDuplicateTableName.verified.cs
│   │   │       │       ├── Module#TestIndexIssues.verified.cs
│   │   │       │       ├── Module#TestScheduleIssues.DummyScheduledReducer.verified.cs
│   │   │       │       ├── Module#TestScheduleIssues.verified.cs
│   │   │       │       ├── Module#TestTableTaggedEnum.verified.cs
│   │   │       │       ├── Module#TestUniqueNotEquatable.verified.cs
│   │   │       │       ├── Module.verified.txt
│   │   │       │       ├── Type#MyStruct.verified.cs
│   │   │       │       ├── Type#TestTaggedEnumField.verified.cs
│   │   │       │       ├── Type#TestTaggedEnumInlineTuple.verified.cs
│   │   │       │       ├── Type#TestTypeParams_T_.verified.cs
│   │   │       │       ├── Type#TestUnsupportedType.verified.cs
│   │   │       │       └── Type.verified.txt
│   │   │       ├── explicitnames/
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── explicitnames.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── Module#DemoTable.verified.cs
│   │   │       │       ├── Module#FFI.verified.cs
│   │   │       │       ├── Module#Reducers.DemoProcedure.verified.cs
│   │   │       │       ├── Module#Reducers.DemoReducer.verified.cs
│   │   │       │       └── Type#DemoType.verified.cs
│   │   │       └── server/
│   │   │           ├── Lib.cs
│   │   │           ├── server.csproj
│   │   │           └── snapshots/
│   │   │               ├── Module#BTreeMultiColumn.verified.cs
│   │   │               ├── Module#BTreeViews.verified.cs
│   │   │               ├── Module#FFI.verified.cs
│   │   │               ├── Module#MultiTableRow.InsertMultiData.verified.cs
│   │   │               ├── Module#MultiTableRow.verified.cs
│   │   │               ├── Module#PrivateTable.verified.cs
│   │   │               ├── Module#PublicTable.verified.cs
│   │   │               ├── Module#Reducers.InsertData.verified.cs
│   │   │               ├── Module#Reducers.ScheduleImmediate.verified.cs
│   │   │               ├── Module#RegressionMultipleUniqueIndexesHadSameName.verified.cs
│   │   │               ├── Module#Test.NestingNamespaces.AndClasses.InsertData2.verified.cs
│   │   │               ├── Module#Timers.Init.verified.cs
│   │   │               ├── Module#Timers.SendMessageTimer.verified.cs
│   │   │               ├── Module#Timers.SendScheduledMessage.verified.cs
│   │   │               ├── Type#ContainsNestedLists.verified.cs
│   │   │               ├── Type#CustomClass.verified.cs
│   │   │               ├── Type#CustomNestedClass.verified.cs
│   │   │               ├── Type#CustomRecord.verified.cs
│   │   │               ├── Type#CustomStruct.verified.cs
│   │   │               ├── Type#CustomTaggedEnum.verified.cs
│   │   │               ├── Type#EmptyClass.verified.cs
│   │   │               ├── Type#EmptyRecord.verified.cs
│   │   │               ├── Type#EmptyStruct.verified.cs
│   │   │               └── Type#FormerlyForbiddenFieldNames.verified.cs
│   │   ├── Directory.Build.props
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── Attrs.cs
│   │   │   ├── AuthCtx.cs
│   │   │   ├── Exceptions.cs
│   │   │   ├── Filter.cs
│   │   │   ├── Http.cs
│   │   │   ├── Internal/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── Autogen/
│   │   │   │   │   ├── CaseConversionPolicy.g.cs
│   │   │   │   │   ├── ExplicitNameEntry.g.cs
│   │   │   │   │   ├── ExplicitNames.g.cs
│   │   │   │   │   ├── FunctionVisibility.g.cs
│   │   │   │   │   ├── IndexType.g.cs
│   │   │   │   │   ├── Lifecycle.g.cs
│   │   │   │   │   ├── MiscModuleExport.g.cs
│   │   │   │   │   ├── NameMapping.g.cs
│   │   │   │   │   ├── RawColumnDefV8.g.cs
│   │   │   │   │   ├── RawColumnDefaultValueV10.g.cs
│   │   │   │   │   ├── RawColumnDefaultValueV9.g.cs
│   │   │   │   │   ├── RawConstraintDataV9.g.cs
│   │   │   │   │   ├── RawConstraintDefV10.g.cs
│   │   │   │   │   ├── RawConstraintDefV8.g.cs
│   │   │   │   │   ├── RawConstraintDefV9.g.cs
│   │   │   │   │   ├── RawIndexAlgorithm.g.cs
│   │   │   │   │   ├── RawIndexDefV10.g.cs
│   │   │   │   │   ├── RawIndexDefV8.g.cs
│   │   │   │   │   ├── RawIndexDefV9.g.cs
│   │   │   │   │   ├── RawLifeCycleReducerDefV10.g.cs
│   │   │   │   │   ├── RawMiscModuleExportV9.g.cs
│   │   │   │   │   ├── RawModuleDef.g.cs
│   │   │   │   │   ├── RawModuleDefV10.g.cs
│   │   │   │   │   ├── RawModuleDefV10Section.g.cs
│   │   │   │   │   ├── RawModuleDefV8.g.cs
│   │   │   │   │   ├── RawModuleDefV9.g.cs
│   │   │   │   │   ├── RawProcedureDefV10.g.cs
│   │   │   │   │   ├── RawProcedureDefV9.g.cs
│   │   │   │   │   ├── RawReducerDefV10.g.cs
│   │   │   │   │   ├── RawReducerDefV9.g.cs
│   │   │   │   │   ├── RawRowLevelSecurityDefV9.g.cs
│   │   │   │   │   ├── RawScheduleDefV10.g.cs
│   │   │   │   │   ├── RawScheduleDefV9.g.cs
│   │   │   │   │   ├── RawScopedTypeNameV10.g.cs
│   │   │   │   │   ├── RawScopedTypeNameV9.g.cs
│   │   │   │   │   ├── RawSequenceDefV10.g.cs
│   │   │   │   │   ├── RawSequenceDefV8.g.cs
│   │   │   │   │   ├── RawSequenceDefV9.g.cs
│   │   │   │   │   ├── RawTableDefV10.g.cs
│   │   │   │   │   ├── RawTableDefV8.g.cs
│   │   │   │   │   ├── RawTableDefV9.g.cs
│   │   │   │   │   ├── RawTypeDefV10.g.cs
│   │   │   │   │   ├── RawTypeDefV9.g.cs
│   │   │   │   │   ├── RawUniqueConstraintDataV9.g.cs
│   │   │   │   │   ├── RawViewDefV10.g.cs
│   │   │   │   │   ├── RawViewDefV9.g.cs
│   │   │   │   │   ├── ReducerDef.g.cs
│   │   │   │   │   ├── TableAccess.g.cs
│   │   │   │   │   ├── TableDesc.g.cs
│   │   │   │   │   ├── TableType.g.cs
│   │   │   │   │   ├── TypeAlias.g.cs
│   │   │   │   │   └── Typespace.g.cs
│   │   │   │   ├── Bounds.cs
│   │   │   │   ├── FFI.cs
│   │   │   │   ├── IIndex.cs
│   │   │   │   ├── IReducer.cs
│   │   │   │   ├── ITable.cs
│   │   │   │   ├── IView.cs
│   │   │   │   ├── Module.cs
│   │   │   │   ├── Procedure.cs
│   │   │   │   ├── TxContext.cs
│   │   │   │   └── ViewResultHeader.cs
│   │   │   ├── JwtClaims.cs
│   │   │   ├── Log.cs
│   │   │   ├── LogStopwatch.cs
│   │   │   ├── ProcedureContext.cs
│   │   │   ├── README.md
│   │   │   ├── Runtime.csproj
│   │   │   ├── bindings.c
│   │   │   ├── build/
│   │   │   │   ├── SpacetimeDB.Runtime.props
│   │   │   │   └── SpacetimeDB.Runtime.targets
│   │   │   └── driver.h
│   │   ├── Runtime.Tests/
│   │   │   ├── JwtClaimsTest.cs
│   │   │   └── Runtime.Tests.csproj
│   │   └── SpacetimeSharpSATS.sln
│   ├── bindings-macro/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       ├── procedure.rs
│   │       ├── reducer.rs
│   │       ├── sats.rs
│   │       ├── table.rs
│   │       ├── util.rs
│   │       └── view.rs
│   ├── bindings-sys/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── bindings-typescript/
│   │   ├── .editorconfig
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── .npmignore
│   │   ├── DEVELOP.md
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── angular/
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── injectors/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── inject-reducer.ts
│   │   │   │   │   ├── inject-spacetimedb-connected.ts
│   │   │   │   │   ├── inject-spacetimedb.ts
│   │   │   │   │   └── inject-table.ts
│   │   │   │   └── providers/
│   │   │   │       ├── index.ts
│   │   │   │       └── provide-spacetimedb.ts
│   │   │   ├── index.ts
│   │   │   ├── lib/
│   │   │   │   ├── algebraic_type.ts
│   │   │   │   ├── algebraic_type_variants.ts
│   │   │   │   ├── algebraic_value.ts
│   │   │   │   ├── autogen/
│   │   │   │   │   └── types.ts
│   │   │   │   ├── binary_reader.ts
│   │   │   │   ├── binary_writer.ts
│   │   │   │   ├── connection_id.ts
│   │   │   │   ├── constraints.ts
│   │   │   │   ├── errors.ts
│   │   │   │   ├── filter.ts
│   │   │   │   ├── http_types.ts
│   │   │   │   ├── identity.ts
│   │   │   │   ├── indexes.ts
│   │   │   │   ├── option.ts
│   │   │   │   ├── query.ts
│   │   │   │   ├── reducer_schema.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── result.ts
│   │   │   │   ├── schedule_at.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── table.ts
│   │   │   │   ├── table_schema.ts
│   │   │   │   ├── time_duration.ts
│   │   │   │   ├── timestamp.ts
│   │   │   │   ├── type_builders.test-d.ts
│   │   │   │   ├── type_builders.ts
│   │   │   │   ├── type_util.ts
│   │   │   │   ├── util.ts
│   │   │   │   └── uuid.ts
│   │   │   ├── react/
│   │   │   │   ├── SpacetimeDBProvider.ts
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── useReducer.ts
│   │   │   │   ├── useSpacetimeDB.ts
│   │   │   │   └── useTable.ts
│   │   │   ├── sdk/
│   │   │   │   ├── client_api/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── procedures.ts
│   │   │   │   │   │   └── reducers.ts
│   │   │   │   │   └── types.ts
│   │   │   │   ├── client_cache.ts
│   │   │   │   ├── client_table.ts
│   │   │   │   ├── connection_manager.ts
│   │   │   │   ├── db_connection_builder.ts
│   │   │   │   ├── db_connection_impl.ts
│   │   │   │   ├── db_context.ts
│   │   │   │   ├── db_view.ts
│   │   │   │   ├── decompress.ts
│   │   │   │   ├── event.ts
│   │   │   │   ├── event_context.ts
│   │   │   │   ├── event_emitter.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── internal.ts
│   │   │   │   ├── json_api.ts
│   │   │   │   ├── logger.ts
│   │   │   │   ├── message_types.ts
│   │   │   │   ├── procedures.ts
│   │   │   │   ├── reducer_event.ts
│   │   │   │   ├── reducer_handle.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── spacetime_module.ts
│   │   │   │   ├── subscription_builder_impl.ts
│   │   │   │   ├── table_cache.ts
│   │   │   │   ├── type_utils.ts
│   │   │   │   ├── version.ts
│   │   │   │   ├── websocket_decompress_adapter.ts
│   │   │   │   ├── websocket_test_adapter.ts
│   │   │   │   └── ws.ts
│   │   │   ├── server/
│   │   │   │   ├── console.ts
│   │   │   │   ├── db_view.ts
│   │   │   │   ├── errors.ts
│   │   │   │   ├── http.ts
│   │   │   │   ├── http_internal.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── polyfills.ts
│   │   │   │   ├── procedures.ts
│   │   │   │   ├── query.ts
│   │   │   │   ├── range.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── rng.ts
│   │   │   │   ├── runtime.ts
│   │   │   │   ├── schema.test-d.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── sys.d.ts
│   │   │   │   ├── view.test-d.ts
│   │   │   │   └── views.ts
│   │   │   ├── svelte/
│   │   │   │   ├── SpacetimeDBProvider.ts
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── useReducer.ts
│   │   │   │   ├── useSpacetimeDB.ts
│   │   │   │   └── useTable.ts
│   │   │   ├── tanstack/
│   │   │   │   ├── SpacetimeDBQueryClient.ts
│   │   │   │   ├── hooks.ts
│   │   │   │   └── index.ts
│   │   │   ├── util-stub.ts
│   │   │   └── vue/
│   │   │       ├── SpacetimeDBProvider.ts
│   │   │       ├── connection_state.ts
│   │   │       ├── index.ts
│   │   │       ├── useReducer.ts
│   │   │       ├── useSpacetimeDB.ts
│   │   │       └── useTable.ts
│   │   ├── test-app/
│   │   │   ├── .gitignore
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── server/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── src/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   ├── main.tsx
│   │   │   │   └── module_bindings/
│   │   │   │       ├── create_player_reducer.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── player_table.ts
│   │   │   │       ├── types/
│   │   │   │       │   ├── procedures.ts
│   │   │   │       │   └── reducers.ts
│   │   │   │       ├── types.ts
│   │   │   │       ├── unindexed_player_table.ts
│   │   │   │       └── user_table.ts
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── test-react-router-app/
│   │   │   ├── .gitignore
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── server/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── src/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   ├── main.tsx
│   │   │   │   ├── module_bindings/
│   │   │   │   │   ├── clear_counter_reducer.ts
│   │   │   │   │   ├── client_connected_reducer.ts
│   │   │   │   │   ├── client_disconnected_reducer.ts
│   │   │   │   │   ├── counter_table.ts
│   │   │   │   │   ├── counter_type.ts
│   │   │   │   │   ├── increment_counter_reducer.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── offline_user_table.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── procedures.ts
│   │   │   │   │   │   └── reducers.ts
│   │   │   │   │   ├── user_table.ts
│   │   │   │   │   └── user_type.ts
│   │   │   │   └── pages/
│   │   │   │       ├── CounterPage.tsx
│   │   │   │       └── UserPage.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── tests/
│   │   │   ├── algebraic_type.test.ts
│   │   │   ├── binary_read_write.test.ts
│   │   │   ├── client_query.test.ts
│   │   │   ├── column_metadata_validation.test.ts
│   │   │   ├── connection_manager.test.ts
│   │   │   ├── db_connection.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── logger.test.ts
│   │   │   ├── query.test.ts
│   │   │   ├── query_error_message.test.ts
│   │   │   ├── schema_index_resolution.test.ts
│   │   │   ├── serde.test.ts
│   │   │   ├── table_cache.test.ts
│   │   │   ├── table_cache_resolved_indexes.test.ts
│   │   │   ├── table_index_accessor.test.ts
│   │   │   ├── utils.ts
│   │   │   ├── uuid.test.ts
│   │   │   └── version.test.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.json
│   │   ├── tsconfig.typecheck.json
│   │   ├── tsup.config.ts
│   │   └── vitest.config.ts
│   ├── cli/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── clippy.toml
│   │   ├── src/
│   │   │   ├── api.rs
│   │   │   ├── common_args.rs
│   │   │   ├── config.rs
│   │   │   ├── detect.rs
│   │   │   ├── edit_distance.rs
│   │   │   ├── errors.rs
│   │   │   ├── lib.rs
│   │   │   ├── main.rs
│   │   │   ├── spacetime_config.rs
│   │   │   ├── subcommands/
│   │   │   │   ├── build.rs
│   │   │   │   ├── call.rs
│   │   │   │   ├── db_arg_resolution.rs
│   │   │   │   ├── delete.rs
│   │   │   │   ├── describe.rs
│   │   │   │   ├── dev.rs
│   │   │   │   ├── dns.rs
│   │   │   │   ├── generate.rs
│   │   │   │   ├── init.rs
│   │   │   │   ├── list.rs
│   │   │   │   ├── login.rs
│   │   │   │   ├── logout.rs
│   │   │   │   ├── logs.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── project/
│   │   │   │   │   └── typescript/
│   │   │   │   │       ├── _gitignore
│   │   │   │   │       ├── index._ts
│   │   │   │   │       ├── package._json
│   │   │   │   │       └── tsconfig._json
│   │   │   │   ├── publish.rs
│   │   │   │   ├── repl.rs
│   │   │   │   ├── server.rs
│   │   │   │   ├── sql.rs
│   │   │   │   ├── start.rs
│   │   │   │   ├── subscribe.rs
│   │   │   │   └── version.rs
│   │   │   ├── tasks/
│   │   │   │   ├── cpp.rs
│   │   │   │   ├── csharp.rs
│   │   │   │   ├── javascript.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── rust.rs
│   │   │   ├── util.rs
│   │   │   └── version.rs
│   │   └── tools/
│   │       └── sublime/
│   │           └── SpacetimeDBSQL.sublime-syntax
│   ├── client-api/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── auth.rs
│   │       ├── lib.rs
│   │       ├── routes/
│   │       │   ├── database.rs
│   │       │   ├── energy.rs
│   │       │   ├── health.rs
│   │       │   ├── identity.rs
│   │       │   ├── internal.rs
│   │       │   ├── metrics.rs
│   │       │   ├── mod.rs
│   │       │   ├── prometheus.rs
│   │       │   └── subscribe.rs
│   │       ├── util/
│   │       │   ├── flat_csv.rs
│   │       │   ├── serde.rs
│   │       │   └── websocket.rs
│   │       └── util.rs
│   ├── client-api-messages/
│   │   ├── Cargo.toml
│   │   ├── DEVELOP.md
│   │   ├── README.md
│   │   ├── examples/
│   │   │   ├── get_ws_schema.rs
│   │   │   └── get_ws_schema_v2.rs
│   │   ├── src/
│   │   │   ├── energy.rs
│   │   │   ├── http.rs
│   │   │   ├── lib.rs
│   │   │   ├── name/
│   │   │   │   └── tests.rs
│   │   │   ├── name.rs
│   │   │   ├── websocket/
│   │   │   │   ├── common.rs
│   │   │   │   ├── v1.rs
│   │   │   │   └── v2.rs
│   │   │   └── websocket.rs
│   │   └── ws_schema-2.json
│   ├── codegen/
│   │   ├── Cargo.toml
│   │   ├── examples/
│   │   │   ├── regen-cpp-moduledef.rs
│   │   │   ├── regen-csharp-moduledef.rs
│   │   │   └── regen-typescript-moduledef.rs
│   │   ├── src/
│   │   │   ├── UnrealCPP-README.md
│   │   │   ├── code_indenter.rs
│   │   │   ├── cpp.rs
│   │   │   ├── csharp.rs
│   │   │   ├── lib.rs
│   │   │   ├── rust.rs
│   │   │   ├── typescript.rs
│   │   │   ├── unrealcpp.rs
│   │   │   └── util.rs
│   │   └── tests/
│   │       ├── codegen.rs
│   │       └── snapshots/
│   │           ├── codegen__codegen_csharp.snap
│   │           ├── codegen__codegen_rust.snap
│   │           └── codegen__codegen_typescript.snap
│   ├── commitlog/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── commit.txt
│   │   │   └── tests/
│   │   │       └── bitflip.txt
│   │   ├── src/
│   │   │   ├── commit.rs
│   │   │   ├── commitlog.rs
│   │   │   ├── error.rs
│   │   │   ├── index/
│   │   │   │   ├── indexfile.rs
│   │   │   │   └── mod.rs
│   │   │   ├── lib.rs
│   │   │   ├── payload/
│   │   │   │   └── txdata.rs
│   │   │   ├── payload.rs
│   │   │   ├── repo/
│   │   │   │   ├── fs.rs
│   │   │   │   ├── mem/
│   │   │   │   │   └── segment.rs
│   │   │   │   ├── mem.rs
│   │   │   │   └── mod.rs
│   │   │   ├── segment.rs
│   │   │   ├── stream/
│   │   │   │   ├── common.rs
│   │   │   │   ├── reader.rs
│   │   │   │   └── writer.rs
│   │   │   ├── stream.rs
│   │   │   ├── tests/
│   │   │   │   ├── bitflip.rs
│   │   │   │   ├── helpers.rs
│   │   │   │   └── partial.rs
│   │   │   ├── tests.rs
│   │   │   ├── varchar.rs
│   │   │   └── varint.rs
│   │   └── tests/
│   │       ├── io.rs
│   │       ├── random_payload/
│   │       │   └── mod.rs
│   │       └── streaming/
│   │           └── mod.rs
│   ├── core/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── db/
│   │   │   │   └── datastore/
│   │   │   │       └── locking_tx_datastore/
│   │   │   │           └── delete_table.txt
│   │   │   └── host/
│   │   │       └── v8/
│   │   │           ├── ser.txt
│   │   │           └── to_value.txt
│   │   ├── src/
│   │   │   ├── auth/
│   │   │   │   ├── mod.rs
│   │   │   │   └── token_validation.rs
│   │   │   ├── callgrind_flag.rs
│   │   │   ├── client/
│   │   │   │   ├── client_connection.rs
│   │   │   │   ├── client_connection_index.rs
│   │   │   │   ├── consume_each_list.rs
│   │   │   │   ├── message_handlers.rs
│   │   │   │   ├── message_handlers_v1.rs
│   │   │   │   ├── message_handlers_v2.rs
│   │   │   │   └── messages.rs
│   │   │   ├── client.rs
│   │   │   ├── config.rs
│   │   │   ├── database_logger.rs
│   │   │   ├── db/
│   │   │   │   ├── durability.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── persistence.rs
│   │   │   │   ├── relational_db.rs
│   │   │   │   ├── snapshot.rs
│   │   │   │   └── update.rs
│   │   │   ├── energy.rs
│   │   │   ├── error.rs
│   │   │   ├── estimation.rs
│   │   │   ├── host/
│   │   │   │   ├── disk_storage.rs
│   │   │   │   ├── host_controller.rs
│   │   │   │   ├── instance_env.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module_common.rs
│   │   │   │   ├── module_host.rs
│   │   │   │   ├── scheduler.rs
│   │   │   │   ├── v8/
│   │   │   │   │   ├── budget.rs
│   │   │   │   │   ├── builtins/
│   │   │   │   │   │   ├── delete_math_random.js
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── text_encoding.js
│   │   │   │   │   │   └── types.d.ts
│   │   │   │   │   ├── de.rs
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── from_value.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ser.rs
│   │   │   │   │   ├── string.rs
│   │   │   │   │   ├── syscall/
│   │   │   │   │   │   ├── common.rs
│   │   │   │   │   │   ├── hooks.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── v1.rs
│   │   │   │   │   │   └── v2.rs
│   │   │   │   │   ├── to_value.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── wasm_common/
│   │   │   │   │   ├── abi.rs
│   │   │   │   │   ├── instrumentation.rs
│   │   │   │   │   └── module_host_actor.rs
│   │   │   │   ├── wasm_common.rs
│   │   │   │   └── wasmtime/
│   │   │   │       ├── mod.rs
│   │   │   │       ├── pooling_stack_creator.rs
│   │   │   │       ├── wasm_instance_env.rs
│   │   │   │       └── wasmtime_module.rs
│   │   │   ├── lib.rs
│   │   │   ├── messages/
│   │   │   │   ├── control_db.rs
│   │   │   │   ├── control_worker_api.rs
│   │   │   │   ├── instance_db_trace_log.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── worker_db.rs
│   │   │   ├── module_host_context.rs
│   │   │   ├── replica_context.rs
│   │   │   ├── sql/
│   │   │   │   ├── ast.rs
│   │   │   │   ├── execute.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── parser.rs
│   │   │   ├── startup.rs
│   │   │   ├── subscription/
│   │   │   │   ├── delta.rs
│   │   │   │   ├── execution_unit.rs
│   │   │   │   ├── metrics.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module_subscription_actor.rs
│   │   │   │   ├── module_subscription_manager.rs
│   │   │   │   ├── query.rs
│   │   │   │   ├── row_list_builder_pool.rs
│   │   │   │   ├── subscription.rs
│   │   │   │   ├── tx.rs
│   │   │   │   └── websocket_building.rs
│   │   │   ├── util/
│   │   │   │   ├── jobs.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── notify_once.rs
│   │   │   │   └── prometheus_handle.rs
│   │   │   └── worker_metrics/
│   │   │       └── mod.rs
│   │   └── testdata/
│   │       ├── README.md
│   │       └── v1.2/
│   │           └── replicas/
│   │               └── 22000001/
│   │                   ├── clog/
│   │                   │   ├── 00000000000000000000.stdb.log
│   │                   │   └── 00000000000000000000.stdb.ofs
│   │                   ├── db.lock
│   │                   ├── module_logs/
│   │                   │   └── 2025-08-18.log
│   │                   └── snapshots/
│   │                       └── 00000000000000000000.snapshot_dir/
│   │                           ├── 00000000000000000000.snapshot_bsatn
│   │                           └── objects/
│   │                               ├── 19/
│   │                               │   └── 30ce81246a4cdc25e9024ae0065d053adb2efbe1b5b7af457331d330e481e8
│   │                               ├── 41/
│   │                               │   └── bb11b6d2cdc488192ee70d8175307d6f205756ed163f4237c6cba2936798dc
│   │                               ├── 45/
│   │                               │   └── 4d2e2c62ff5d46c5b3e6de72d6277eb285fc2d6b0a5ac6f92498e08a9e5ecc
│   │                               ├── 62/
│   │                               │   └── 22df0e5ca93d3fb22762e12161246a1d5917c61ada5d81b8dcce12fd5780b3
│   │                               ├── 79/
│   │                               │   └── 4dced5633eca2ffee784d471f5203209169321083ef99de254ad24af0f6d5a
│   │                               ├── 95/
│   │                               │   └── 74dd6d2857fa771a1cd16be31fdef38f83c2fd3bcc05f4934e53bdbfa21f10
│   │                               └── 9a/
│   │                                   └── b95f5aaed7541289faa8bc4de886ce0281f11037c3424494e58fee92411241
│   ├── data-structures/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── error_stream.rs
│   │       ├── lib.rs
│   │       ├── map.rs
│   │       ├── nstr.rs
│   │       ├── object_pool.rs
│   │       ├── slim_slice.rs
│   │       └── small_map.rs
│   ├── datastore/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── db_metrics/
│   │       │   ├── data_size.rs
│   │       │   └── mod.rs
│   │       ├── error.rs
│   │       ├── execution_context.rs
│   │       ├── lib.rs
│   │       ├── locking_tx_datastore/
│   │       │   ├── committed_state.rs
│   │       │   ├── datastore.rs
│   │       │   ├── delete_table.rs
│   │       │   ├── mod.rs
│   │       │   ├── mut_tx.rs
│   │       │   ├── sequence.rs
│   │       │   ├── state_view.rs
│   │       │   ├── tx.rs
│   │       │   └── tx_state.rs
│   │       ├── system_tables.rs
│   │       └── traits.rs
│   ├── durability/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── imp/
│   │   │   │   ├── local.rs
│   │   │   │   ├── local.rs.orig
│   │   │   │   └── mod.rs
│   │   │   └── lib.rs
│   │   └── tests/
│   │       ├── io/
│   │       │   ├── fallocate.rs
│   │       │   └── mod.rs
│   │       └── main.rs
│   ├── execution/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── dml.rs
│   │       ├── lib.rs
│   │       └── pipelined.rs
│   ├── expr/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── check.rs
│   │       ├── errors.rs
│   │       ├── expr.rs
│   │       ├── lib.rs
│   │       ├── rls.rs
│   │       └── statement.rs
│   ├── fs-utils/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── compression.rs
│   │       ├── dir_trie.rs
│   │       ├── lib.rs
│   │       └── lockfile.rs
│   ├── guard/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build.rs
│   │   ├── proptest-regressions/
│   │   │   ├── address.txt
│   │   │   ├── db/
│   │   │   │   └── column_ordering.txt
│   │   │   └── identity.txt
│   │   ├── src/
│   │   │   ├── connection_id.rs
│   │   │   ├── db/
│   │   │   │   ├── attr.rs
│   │   │   │   ├── auth.rs
│   │   │   │   ├── default_element_ordering.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── raw_def/
│   │   │   │   │   ├── v10.rs
│   │   │   │   │   ├── v8.rs
│   │   │   │   │   └── v9.rs
│   │   │   │   ├── raw_def.rs
│   │   │   │   └── view.rs
│   │   │   ├── direct_index_key.rs
│   │   │   ├── error.rs
│   │   │   ├── filterable_value.rs
│   │   │   ├── http.rs
│   │   │   ├── identity.rs
│   │   │   ├── lib.rs
│   │   │   ├── metrics.rs
│   │   │   ├── operator.rs
│   │   │   ├── query.rs
│   │   │   ├── scheduler.rs
│   │   │   ├── st_var.rs
│   │   │   └── version.rs
│   │   └── tests/
│   │       ├── serde.rs
│   │       └── snapshots/
│   │           ├── serde__json_mappings-2.snap
│   │           └── serde__json_mappings.snap
│   ├── memory-usage/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── metrics/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── lib.rs
│   │       └── typed_prometheus.rs
│   ├── paths/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── cli.rs
│   │       ├── lib.rs
│   │       ├── server.rs
│   │       ├── standalone.rs
│   │       └── utils.rs
│   ├── pg/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── encoder.rs
│   │       ├── lib.rs
│   │       └── pg_server.rs
│   ├── physical-plan/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── compile.rs
│   │       ├── dml.rs
│   │       ├── lib.rs
│   │       ├── plan.rs
│   │       └── rules.rs
│   ├── primitives/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   └── col_list.txt
│   │   └── src/
│   │       ├── attr.rs
│   │       ├── col_list.rs
│   │       ├── errno.rs
│   │       ├── ids.rs
│   │       └── lib.rs
│   ├── query/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── query-builder/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── expr.rs
│   │       ├── join.rs
│   │       ├── lib.rs
│   │       └── table.rs
│   ├── sats/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── algebraic_value_hash.txt
│   │   │   ├── timestamp.txt
│   │   │   └── typespace.txt
│   │   ├── src/
│   │   │   ├── algebraic_type/
│   │   │   │   ├── fmt.rs
│   │   │   │   └── map_notation.rs
│   │   │   ├── algebraic_type.rs
│   │   │   ├── algebraic_type_ref.rs
│   │   │   ├── algebraic_value/
│   │   │   │   ├── de.rs
│   │   │   │   └── ser.rs
│   │   │   ├── algebraic_value.rs
│   │   │   ├── algebraic_value_hash.rs
│   │   │   ├── array_type.rs
│   │   │   ├── array_value.rs
│   │   │   ├── bsatn/
│   │   │   │   ├── de.rs
│   │   │   │   ├── eq.rs
│   │   │   │   └── ser.rs
│   │   │   ├── bsatn.rs
│   │   │   ├── buffer.rs
│   │   │   ├── convert.rs
│   │   │   ├── de/
│   │   │   │   ├── impls.rs
│   │   │   │   └── serde.rs
│   │   │   ├── de.rs
│   │   │   ├── hash.rs
│   │   │   ├── hex.rs
│   │   │   ├── layout.rs
│   │   │   ├── lib.rs
│   │   │   ├── memory_usage_impls.rs
│   │   │   ├── meta_type.rs
│   │   │   ├── primitives.rs
│   │   │   ├── product_type.rs
│   │   │   ├── product_type_element.rs
│   │   │   ├── product_value.rs
│   │   │   ├── proptest.rs
│   │   │   ├── raw_identifier.rs
│   │   │   ├── resolve_refs.rs
│   │   │   ├── satn.rs
│   │   │   ├── ser/
│   │   │   │   ├── impls.rs
│   │   │   │   └── serde.rs
│   │   │   ├── ser.rs
│   │   │   ├── size_of.rs
│   │   │   ├── sum_type.rs
│   │   │   ├── sum_type_variant.rs
│   │   │   ├── sum_value.rs
│   │   │   ├── time_duration.rs
│   │   │   ├── timestamp.rs
│   │   │   ├── typespace.rs
│   │   │   └── uuid.rs
│   │   └── tests/
│   │       └── encoding_roundtrip.proptest-regressions
│   ├── schema/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   └── type_for_generate.txt
│   │   ├── src/
│   │   │   ├── auto_migrate/
│   │   │   │   ├── formatter.rs
│   │   │   │   └── termcolor_formatter.rs
│   │   │   ├── auto_migrate.rs
│   │   │   ├── def/
│   │   │   │   ├── deserialize.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── validate/
│   │   │   │   │   ├── v10.rs
│   │   │   │   │   ├── v8.rs
│   │   │   │   │   └── v9.rs
│   │   │   │   └── validate.rs
│   │   │   ├── def.rs
│   │   │   ├── error.rs
│   │   │   ├── identifier.rs
│   │   │   ├── lib.rs
│   │   │   ├── reducer_name.rs
│   │   │   ├── relation.rs
│   │   │   ├── reserved_identifiers.txt
│   │   │   ├── schema.rs
│   │   │   ├── snapshots/
│   │   │   │   ├── spacetimedb_schema__auto_migrate__tests__empty_to_populated_migration.snap
│   │   │   │   ├── spacetimedb_schema__auto_migrate__tests__updated pretty print no color.snap
│   │   │   │   └── spacetimedb_schema__auto_migrate__tests__updated pretty print.snap
│   │   │   ├── table_name.rs
│   │   │   └── type_for_generate.rs
│   │   └── tests/
│   │       └── ensure_same_schema.rs
│   ├── smoketests/
│   │   ├── Cargo.toml
│   │   ├── DEVELOP.md
│   │   ├── fixtures/
│   │   │   ├── README.md
│   │   │   └── upgrade_old_module_v1.wasm
│   │   ├── modules/
│   │   │   ├── Cargo.toml
│   │   │   ├── add-remove-index/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── add-remove-index-indexed/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── autoinc-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── autoinc-unique/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── call-empty/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── call-reducer-procedure/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── client-connection-disconnect-panic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── client-connection-reject/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── confirmed-reads/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── connect-disconnect/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── delete-database/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── describe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── dml/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── fail-initial-publish-broken/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── fail-initial-publish-fixed/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── filtering/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── hotswap-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── hotswap-updated/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── logs-level-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── module-nested-op/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-add-table/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-breaking/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── namespaces/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── new-user-flow/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── panic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── panic-error/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── permissions-lifecycle/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── permissions-private/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── pg-wire/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── restart-connected-client/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── restart-person/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls-no-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls-with-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-cancel/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-procedure/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-subscribe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-volatile/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── sql-format/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── upload-module-2/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-auto-migrate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-auto-migrate-updated/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-broken-namespace/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-broken-return-type/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-callable/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-count/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-drop-view/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-query/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-recovered/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-sql/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-subscribe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── views-trapped/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── lib.rs
│   │   ├── src/
│   │   │   ├── csharp.rs
│   │   │   ├── lib.rs
│   │   │   └── modules.rs
│   │   └── tests/
│   │       ├── integration.rs
│   │       └── smoketests/
│   │           ├── add_remove_index.rs
│   │           ├── auto_inc.rs
│   │           ├── auto_migration.rs
│   │           ├── call.rs
│   │           ├── change_host_type.rs
│   │           ├── cli/
│   │           │   ├── auth.rs
│   │           │   ├── dev.rs
│   │           │   ├── generate.rs
│   │           │   ├── mod.rs
│   │           │   ├── publish.rs
│   │           │   └── server.rs
│   │           ├── client_connection_errors.rs
│   │           ├── confirmed_reads.rs
│   │           ├── connect_disconnect_from_cli.rs
│   │           ├── create_project.rs
│   │           ├── csharp_module.rs
│   │           ├── default_module_clippy.rs
│   │           ├── delete_database.rs
│   │           ├── describe.rs
│   │           ├── detect_wasm_bindgen.rs
│   │           ├── dml.rs
│   │           ├── domains.rs
│   │           ├── fail_initial_publish.rs
│   │           ├── filtering.rs
│   │           ├── http_egress.rs
│   │           ├── logs_level_filter.rs
│   │           ├── mod.rs
│   │           ├── module_nested_op.rs
│   │           ├── modules.rs
│   │           ├── namespaces.rs
│   │           ├── new_user_flow.rs
│   │           ├── panic.rs
│   │           ├── permissions.rs
│   │           ├── pg_wire.rs
│   │           ├── publish_upgrade_prompt.rs
│   │           ├── quickstart.rs
│   │           ├── restart.rs
│   │           ├── rls.rs
│   │           ├── schedule_reducer.rs
│   │           ├── servers.rs
│   │           ├── sql.rs
│   │           ├── templates.rs
│   │           ├── timestamp_route.rs
│   │           └── views.rs
│   ├── snapshot/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── remote.rs
│   │   └── tests/
│   │       └── remote.rs
│   ├── sql-parser/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── ast/
│   │       │   ├── mod.rs
│   │       │   ├── sql.rs
│   │       │   └── sub.rs
│   │       ├── lib.rs
│   │       └── parser/
│   │           ├── errors.rs
│   │           ├── mod.rs
│   │           ├── recursion.rs
│   │           ├── sql.rs
│   │           └── sub.rs
│   ├── sqltest/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build_standard.py
│   │   ├── clippy.toml
│   │   ├── override_with_output.sh
│   │   ├── reformat.sh
│   │   ├── run_all_sequential.sh
│   │   ├── src/
│   │   │   ├── db.rs
│   │   │   ├── main.rs
│   │   │   ├── pg.rs
│   │   │   ├── space.rs
│   │   │   └── sqlite.rs
│   │   ├── standards/
│   │   │   ├── 2016/
│   │   │   │   ├── E/
│   │   │   │   │   ├── E011-01.tests.yml
│   │   │   │   │   ├── E011-02.tests.yml
│   │   │   │   │   ├── E011-03.tests.yml
│   │   │   │   │   ├── E011-04.tests.yml
│   │   │   │   │   ├── E011-05.tests.yml
│   │   │   │   │   ├── E011-06.tests.yml
│   │   │   │   │   ├── E021-01.tests.yml
│   │   │   │   │   ├── E021-02.tests.yml
│   │   │   │   │   ├── E021-03.tests.yml
│   │   │   │   │   ├── E021-04.tests.yml
│   │   │   │   │   ├── E021-05.tests.yml
│   │   │   │   │   ├── E021-06.tests.yml
│   │   │   │   │   ├── E021-07.tests.yml
│   │   │   │   │   ├── E021-08.tests.yml
│   │   │   │   │   ├── E021-09.tests.yml
│   │   │   │   │   ├── E021-10.tests.yml
│   │   │   │   │   ├── E021-11.tests.yml
│   │   │   │   │   ├── E021-12.tests.yml
│   │   │   │   │   ├── E031-01.tests.yml
│   │   │   │   │   ├── E031-02.tests.yml
│   │   │   │   │   ├── E031-03.tests.yml
│   │   │   │   │   ├── E051-01.tests.yml
│   │   │   │   │   ├── E051-02.tests.yml
│   │   │   │   │   ├── E051-04.tests.yml
│   │   │   │   │   ├── E051-05.tests.yml
│   │   │   │   │   ├── E051-06.tests.yml
│   │   │   │   │   ├── E051-07.tests.yml
│   │   │   │   │   ├── E051-08.tests.yml
│   │   │   │   │   ├── E051-09.tests.yml
│   │   │   │   │   ├── E051.tests.yml
│   │   │   │   │   ├── E061-01.tests.yml
│   │   │   │   │   ├── E061-02.tests.yml
│   │   │   │   │   ├── E061-03.tests.yml
│   │   │   │   │   ├── E061-04.tests.yml
│   │   │   │   │   ├── E061-05.tests.yml
│   │   │   │   │   ├── E061-06.tests.yml
│   │   │   │   │   ├── E061-07.tests.yml
│   │   │   │   │   ├── E061-08.tests.yml
│   │   │   │   │   ├── E061-09.tests.yml
│   │   │   │   │   ├── E061-11.tests.yml
│   │   │   │   │   ├── E061-12.tests.yml
│   │   │   │   │   ├── E061-13.tests.yml
│   │   │   │   │   ├── E061-14.tests.yml
│   │   │   │   │   ├── E071-01.tests.yml
│   │   │   │   │   ├── E071-02.tests.yml
│   │   │   │   │   ├── E071-03.tests.yml
│   │   │   │   │   ├── E071-05.tests.yml
│   │   │   │   │   ├── E071-06.tests.yml
│   │   │   │   │   ├── E081-01.tests.yml
│   │   │   │   │   ├── E081-02.tests.yml
│   │   │   │   │   ├── E081-03.tests.yml
│   │   │   │   │   ├── E081-04.tests.yml
│   │   │   │   │   ├── E081-05.tests.yml
│   │   │   │   │   ├── E081-06.tests.yml
│   │   │   │   │   ├── E081-07.tests.yml
│   │   │   │   │   ├── E081-08.tests.yml
│   │   │   │   │   ├── E081-09.tests.yml
│   │   │   │   │   ├── E081-10.tests.yml
│   │   │   │   │   ├── E091-01.tests.yml
│   │   │   │   │   ├── E091-02.tests.yml
│   │   │   │   │   ├── E091-03.tests.yml
│   │   │   │   │   ├── E091-04.tests.yml
│   │   │   │   │   ├── E091-05.tests.yml
│   │   │   │   │   ├── E091-06.tests.yml
│   │   │   │   │   ├── E091-07.tests.yml
│   │   │   │   │   ├── E101-01.tests.yml
│   │   │   │   │   ├── E101-03.tests.yml
│   │   │   │   │   ├── E101-04.tests.yml
│   │   │   │   │   ├── E111.tests.yml
│   │   │   │   │   ├── E121-01.tests.yml
│   │   │   │   │   ├── E121-02.tests.yml
│   │   │   │   │   ├── E121-03.tests.yml
│   │   │   │   │   ├── E121-04.tests.yml
│   │   │   │   │   ├── E121-06.tests.yml
│   │   │   │   │   ├── E121-07.tests.yml
│   │   │   │   │   ├── E121-08.tests.yml
│   │   │   │   │   ├── E121-10.tests.yml
│   │   │   │   │   ├── E121-17.tests.yml
│   │   │   │   │   ├── E131.tests.yml
│   │   │   │   │   ├── E141-01.tests.yml
│   │   │   │   │   ├── E141-02.tests.yml
│   │   │   │   │   ├── E141-03.tests.yml
│   │   │   │   │   ├── E141-04.tests.yml
│   │   │   │   │   ├── E141-06.tests.yml
│   │   │   │   │   ├── E141-07.tests.yml
│   │   │   │   │   ├── E141-08.tests.yml
│   │   │   │   │   ├── E141-10.tests.yml
│   │   │   │   │   ├── E151-01.tests.yml
│   │   │   │   │   ├── E151-02.tests.yml
│   │   │   │   │   ├── E152-01.tests.yml
│   │   │   │   │   ├── E152-02.tests.yml
│   │   │   │   │   ├── E153.tests.yml
│   │   │   │   │   └── E161.tests.yml
│   │   │   │   ├── F/
│   │   │   │   │   ├── F031-01.tests.yml
│   │   │   │   │   ├── F031-02.tests.yml
│   │   │   │   │   ├── F031-03.tests.yml
│   │   │   │   │   ├── F031-04.tests.yml
│   │   │   │   │   ├── F031-13.tests.yml
│   │   │   │   │   ├── F031-16.tests.yml
│   │   │   │   │   ├── F031-19.tests.yml
│   │   │   │   │   ├── F041-01.tests.yml
│   │   │   │   │   ├── F041-02.tests.yml
│   │   │   │   │   ├── F041-03.tests.yml
│   │   │   │   │   ├── F041-04.tests.yml
│   │   │   │   │   ├── F041-05.tests.yml
│   │   │   │   │   ├── F041-07.tests.yml
│   │   │   │   │   ├── F041-08.tests.yml
│   │   │   │   │   ├── F051-01.tests.yml
│   │   │   │   │   ├── F051-02.tests.yml
│   │   │   │   │   ├── F051-03.tests.yml
│   │   │   │   │   ├── F051-04.tests.yml
│   │   │   │   │   ├── F051-05.tests.yml
│   │   │   │   │   ├── F051-06.tests.yml
│   │   │   │   │   ├── F051-07.tests.yml
│   │   │   │   │   ├── F051-08.tests.yml
│   │   │   │   │   ├── F081.tests.yml
│   │   │   │   │   ├── F131-01.tests.yml
│   │   │   │   │   ├── F131-02.tests.yml
│   │   │   │   │   ├── F131-03.tests.yml
│   │   │   │   │   ├── F131-04.tests.yml
│   │   │   │   │   ├── F221.tests.yml
│   │   │   │   │   ├── F261-01.tests.yml
│   │   │   │   │   ├── F261-02.tests.yml
│   │   │   │   │   ├── F261-03.tests.yml
│   │   │   │   │   ├── F261-04.tests.yml
│   │   │   │   │   ├── F311-01.tests.yml
│   │   │   │   │   ├── F311-02.tests.yml
│   │   │   │   │   ├── F311-03.tests.yml
│   │   │   │   │   ├── F311-04.tests.yml
│   │   │   │   │   ├── F311-05.tests.yml
│   │   │   │   │   ├── F471.tests.yml
│   │   │   │   │   └── F481.tests.yml
│   │   │   │   ├── S/
│   │   │   │   │   └── S011.tests.yml
│   │   │   │   ├── T/
│   │   │   │   │   ├── T321.tests.yml
│   │   │   │   │   └── T631.tests.yml
│   │   │   │   └── features.yml
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── test/
│   │       ├── basic/
│   │       │   ├── delete.slt
│   │       │   ├── insert.slt
│   │       │   ├── joins.slt
│   │       │   ├── select.slt
│   │       │   ├── test_data.slt
│   │       │   ├── test_data_join.slt
│   │       │   └── where.slt
│   │       ├── sql_2016/
│   │       │   ├── E011_01.slt
│   │       │   ├── E011_02.slt
│   │       │   ├── E011_03.slt
│   │       │   ├── E011_04.slt
│   │       │   ├── E011_05.slt
│   │       │   ├── E011_06.slt
│   │       │   ├── E021_01.slt
│   │       │   ├── E021_02.slt
│   │       │   ├── E021_03.slt
│   │       │   ├── E021_04.slt
│   │       │   ├── E021_05.slt
│   │       │   ├── E021_06.slt
│   │       │   ├── E021_07.slt
│   │       │   ├── E021_08.slt
│   │       │   ├── E021_09.slt
│   │       │   ├── E021_10.slt
│   │       │   ├── E021_11.slt
│   │       │   ├── E021_12.slt
│   │       │   ├── E031_01.slt
│   │       │   ├── E031_02.slt
│   │       │   ├── E031_03.slt
│   │       │   ├── E051.slt
│   │       │   ├── E051_01.slt
│   │       │   ├── E051_02.slt
│   │       │   ├── E051_04.slt
│   │       │   ├── E051_05.slt
│   │       │   ├── E051_06.slt
│   │       │   ├── E051_07.slt
│   │       │   ├── E051_08.slt
│   │       │   ├── E051_09.slt
│   │       │   ├── E061_01.slt
│   │       │   ├── E061_02.slt
│   │       │   ├── E061_03.slt
│   │       │   ├── E061_04.slt
│   │       │   ├── E061_05.slt
│   │       │   ├── E061_06.slt
│   │       │   ├── E061_07.slt
│   │       │   ├── E061_08.slt
│   │       │   ├── E061_09.slt
│   │       │   ├── E061_11.slt
│   │       │   ├── E061_12.slt
│   │       │   ├── E061_13.slt
│   │       │   ├── E061_14.slt
│   │       │   ├── E071_01.slt
│   │       │   ├── E071_02.slt
│   │       │   ├── E071_03.slt
│   │       │   ├── E071_05.slt
│   │       │   ├── E071_06.slt
│   │       │   ├── E081_01.slt
│   │       │   ├── E081_02.slt
│   │       │   ├── E081_03.slt
│   │       │   ├── E081_04.slt
│   │       │   ├── E081_05.slt
│   │       │   ├── E081_06.slt
│   │       │   ├── E081_07.slt
│   │       │   ├── E081_08.slt
│   │       │   ├── E081_09.slt
│   │       │   ├── E081_10.slt
│   │       │   ├── E091_01.slt
│   │       │   ├── E091_02.slt
│   │       │   ├── E091_03.slt
│   │       │   ├── E091_04.slt
│   │       │   ├── E091_05.slt
│   │       │   ├── E091_06.slt
│   │       │   ├── E091_07.slt
│   │       │   ├── E101_01.slt
│   │       │   ├── E101_03.slt
│   │       │   ├── E101_04.slt
│   │       │   ├── E111.slt
│   │       │   ├── E121_01.slt
│   │       │   ├── E121_02.slt
│   │       │   ├── E121_03.slt
│   │       │   ├── E121_04.slt
│   │       │   ├── E121_06.slt
│   │       │   ├── E121_07.slt
│   │       │   ├── E121_08.slt
│   │       │   ├── E121_10.slt
│   │       │   ├── E121_17.slt
│   │       │   ├── E131.slt
│   │       │   ├── E141_01.slt
│   │       │   ├── E141_02.slt
│   │       │   ├── E141_03.slt
│   │       │   ├── E141_04.slt
│   │       │   ├── E141_06.slt
│   │       │   ├── E141_07.slt
│   │       │   ├── E141_08.slt
│   │       │   ├── E141_10.slt
│   │       │   ├── E151_01.slt
│   │       │   ├── E151_02.slt
│   │       │   ├── E152_01.slt
│   │       │   ├── E152_02.slt
│   │       │   ├── E153.slt
│   │       │   ├── E161.slt
│   │       │   ├── F031_01.slt
│   │       │   ├── F031_02.slt
│   │       │   ├── F031_03.slt
│   │       │   ├── F031_04.slt
│   │       │   ├── F031_13.slt
│   │       │   ├── F031_16.slt
│   │       │   ├── F031_19.slt
│   │       │   ├── F041_01.slt
│   │       │   ├── F041_02.slt
│   │       │   ├── F041_03.slt
│   │       │   ├── F041_04.slt
│   │       │   ├── F041_05.slt
│   │       │   ├── F041_07.slt
│   │       │   ├── F041_08.slt
│   │       │   ├── F051_01.slt
│   │       │   ├── F051_02.slt
│   │       │   ├── F051_03.slt
│   │       │   ├── F051_04.slt
│   │       │   ├── F051_05.slt
│   │       │   ├── F051_06.slt
│   │       │   ├── F051_07.slt
│   │       │   ├── F051_08.slt
│   │       │   ├── F081.slt
│   │       │   ├── F131_01.slt
│   │       │   ├── F131_02.slt
│   │       │   ├── F131_03.slt
│   │       │   ├── F131_04.slt
│   │       │   ├── F221.slt
│   │       │   ├── F261_01.slt
│   │       │   ├── F261_02.slt
│   │       │   ├── F261_03.slt
│   │       │   ├── F261_04.slt
│   │       │   ├── F311_01.slt
│   │       │   ├── F311_02.slt
│   │       │   ├── F311_03.slt
│   │       │   ├── F311_04.slt
│   │       │   ├── F311_05.slt
│   │       │   ├── F471.slt
│   │       │   ├── F481.slt
│   │       │   ├── S011.slt
│   │       │   └── T631.slt
│   │       └── tutorial.slt
│   ├── standalone/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── config.toml
│   │   └── src/
│   │       ├── control_db/
│   │       │   └── tests.rs
│   │       ├── control_db.rs
│   │       ├── lib.rs
│   │       ├── main.rs
│   │       ├── subcommands/
│   │       │   ├── extract_schema.rs
│   │       │   ├── mod.rs
│   │       │   └── start.rs
│   │       ├── util.rs
│   │       └── version.rs
│   ├── subscription/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── table/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── benches/
│   │   │   ├── page.rs
│   │   │   ├── page_manager.rs
│   │   │   ├── pointer_map.rs
│   │   │   └── var_len_visitor.rs
│   │   ├── proptest-regressions/
│   │   │   ├── bflatn_to.txt
│   │   │   ├── btree_index.txt
│   │   │   ├── pointer_map.txt
│   │   │   ├── read_column.txt
│   │   │   ├── row_hash.txt
│   │   │   ├── ser.txt
│   │   │   ├── static_bsatn_validator.txt
│   │   │   ├── table.txt
│   │   │   └── table_index/
│   │   │       ├── mod.txt
│   │   │       └── unique_directer_index.txt
│   │   └── src/
│   │       ├── bflatn_from.rs
│   │       ├── bflatn_to.rs
│   │       ├── blob_store.rs
│   │       ├── eq.rs
│   │       ├── eq_to_pv.rs
│   │       ├── fixed_bit_set.rs
│   │       ├── indexes.rs
│   │       ├── lib.rs
│   │       ├── page.rs
│   │       ├── page_pool.rs
│   │       ├── pages.rs
│   │       ├── pointer_map.rs
│   │       ├── read_column.rs
│   │       ├── row_hash.rs
│   │       ├── row_type_visitor.rs
│   │       ├── static_bsatn_validator.rs
│   │       ├── static_layout.rs
│   │       ├── table.rs
│   │       ├── table_index/
│   │       │   ├── hash_index.rs
│   │       │   ├── index.rs
│   │       │   ├── key_size.rs
│   │       │   ├── mod.rs
│   │       │   ├── multimap.rs
│   │       │   ├── same_key_entry.rs
│   │       │   ├── unique_direct_fixed_cap_index.rs
│   │       │   ├── unique_direct_index.rs
│   │       │   ├── unique_hash_index.rs
│   │       │   └── uniquemap.rs
│   │       ├── util.rs
│   │       └── var_len.rs
│   ├── testing/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   ├── modules.rs
│   │   │   └── sdk.rs
│   │   └── tests/
│   │       └── standalone_integration_test.rs
│   └── update/
│       ├── Cargo.toml
│       ├── README.md
│       ├── build.rs
│       ├── spacetime-install.ps1
│       ├── spacetime-install.sh
│       └── src/
│           ├── cli/
│           │   ├── install.rs
│           │   ├── link.rs
│           │   ├── list.rs
│           │   ├── self_install.rs
│           │   ├── uninstall.rs
│           │   ├── upgrade.rs
│           │   └── use.rs
│           ├── cli.rs
│           ├── main.rs
│           ├── proxy.rs
│           └── update_notice.rs
├── d3-flamegraph-base.html
├── demo/
│   └── Blackholio/
│       ├── .github/
│       │   └── workflows/
│       │       └── repo-migration-notice.yml
│       ├── .gitignore
│       ├── DEVELOP.md
│       ├── README.md
│       ├── client-unity/
│       │   ├── .gitattributes
│       │   ├── .gitignore
│       │   ├── Assets/
│       │   │   ├── ArenaBorderMaterial.mat
│       │   │   ├── ArenaBorderMaterial.mat.meta
│       │   │   ├── CircleMaterial.mat
│       │   │   ├── CircleMaterial.mat.meta
│       │   │   ├── CirclePrefab.prefab
│       │   │   ├── CirclePrefab.prefab.meta
│       │   │   ├── CircleShader.shadergraph
│       │   │   ├── CircleShader.shadergraph.meta
│       │   │   ├── ColorConvert.cginc
│       │   │   ├── ColorConvert.cginc.meta
│       │   │   ├── FoodMaterial.mat
│       │   │   ├── FoodMaterial.mat.meta
│       │   │   ├── FoodPrefab.prefab
│       │   │   ├── FoodPrefab.prefab.meta
│       │   │   ├── LeaderboardRow.prefab
│       │   │   ├── LeaderboardRow.prefab.meta
│       │   │   ├── PlayModeTests/
│       │   │   │   ├── PlayModeExampleTest.cs
│       │   │   │   ├── PlayModeExampleTest.cs.meta
│       │   │   │   ├── PlayModeTests.asmdef
│       │   │   │   └── PlayModeTests.asmdef.meta
│       │   │   ├── PlayModeTests.meta
│       │   │   ├── PlayerPrefab.prefab
│       │   │   ├── PlayerPrefab.prefab.meta
│       │   │   ├── RepeatingBackground.png.meta
│       │   │   ├── RepeatingBackground.prefab
│       │   │   ├── RepeatingBackground.prefab.meta
│       │   │   ├── Scenes/
│       │   │   │   ├── Main.unity
│       │   │   │   └── Main.unity.meta
│       │   │   ├── Scenes.meta
│       │   │   ├── Scripts/
│       │   │   │   ├── BugFixKludge.cs
│       │   │   │   ├── BugFixKludge.cs.meta
│       │   │   │   ├── CameraController.cs
│       │   │   │   ├── CameraController.cs.meta
│       │   │   │   ├── CircleController.cs
│       │   │   │   ├── CircleController.cs.meta
│       │   │   │   ├── DeathScreen.cs
│       │   │   │   ├── DeathScreen.cs.meta
│       │   │   │   ├── EntityController.cs
│       │   │   │   ├── EntityController.cs.meta
│       │   │   │   ├── Extensions.cs
│       │   │   │   ├── Extensions.cs.meta
│       │   │   │   ├── FoodController.cs
│       │   │   │   ├── FoodController.cs.meta
│       │   │   │   ├── GameManager.cs
│       │   │   │   ├── GameManager.cs.meta
│       │   │   │   ├── LeaderboardController.cs
│       │   │   │   ├── LeaderboardController.cs.meta
│       │   │   │   ├── LeaderboardRow.cs
│       │   │   │   ├── LeaderboardRow.cs.meta
│       │   │   │   ├── ParallaxBackground.cs
│       │   │   │   ├── ParallaxBackground.cs.meta
│       │   │   │   ├── PlayerController.cs
│       │   │   │   ├── PlayerController.cs.meta
│       │   │   │   ├── PrefabManager.cs
│       │   │   │   ├── PrefabManager.cs.meta
│       │   │   │   ├── SpacetimeDBCircleGame.asmdef
│       │   │   │   ├── SpacetimeDBCircleGame.asmdef.meta
│       │   │   │   ├── UIUsernameChooser.cs
│       │   │   │   ├── UIUsernameChooser.cs.meta
│       │   │   │   ├── autogen/
│       │   │   │   │   ├── Reducers/
│       │   │   │   │   │   ├── EnterGame.g.cs
│       │   │   │   │   │   ├── EnterGame.g.cs.meta
│       │   │   │   │   │   ├── PlayerSplit.g.cs
│       │   │   │   │   │   ├── PlayerSplit.g.cs.meta
│       │   │   │   │   │   ├── Respawn.g.cs
│       │   │   │   │   │   ├── Respawn.g.cs.meta
│       │   │   │   │   │   ├── Suicide.g.cs
│       │   │   │   │   │   ├── Suicide.g.cs.meta
│       │   │   │   │   │   ├── UpdatePlayerInput.g.cs
│       │   │   │   │   │   └── UpdatePlayerInput.g.cs.meta
│       │   │   │   │   ├── Reducers.meta
│       │   │   │   │   ├── SpacetimeDBClient.g.cs
│       │   │   │   │   ├── SpacetimeDBClient.g.cs.meta
│       │   │   │   │   ├── Tables/
│       │   │   │   │   │   ├── Circle.g.cs
│       │   │   │   │   │   ├── Circle.g.cs.meta
│       │   │   │   │   │   ├── Config.g.cs
│       │   │   │   │   │   ├── Config.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs.meta
│       │   │   │   │   │   ├── Entity.g.cs
│       │   │   │   │   │   ├── Entity.g.cs.meta
│       │   │   │   │   │   ├── Food.g.cs
│       │   │   │   │   │   ├── Food.g.cs.meta
│       │   │   │   │   │   ├── Player.g.cs
│       │   │   │   │   │   └── Player.g.cs.meta
│       │   │   │   │   ├── Tables.meta
│       │   │   │   │   ├── Types/
│       │   │   │   │   │   ├── Circle.g.cs
│       │   │   │   │   │   ├── Circle.g.cs.meta
│       │   │   │   │   │   ├── CircleDecayTimer.g.cs
│       │   │   │   │   │   ├── CircleDecayTimer.g.cs.meta
│       │   │   │   │   │   ├── CircleRecombineTimer.g.cs
│       │   │   │   │   │   ├── CircleRecombineTimer.g.cs.meta
│       │   │   │   │   │   ├── Config.g.cs
│       │   │   │   │   │   ├── Config.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityTimer.g.cs
│       │   │   │   │   │   ├── ConsumeEntityTimer.g.cs.meta
│       │   │   │   │   │   ├── DbVector2.g.cs
│       │   │   │   │   │   ├── DbVector2.g.cs.meta
│       │   │   │   │   │   ├── Entity.g.cs
│       │   │   │   │   │   ├── Entity.g.cs.meta
│       │   │   │   │   │   ├── Food.g.cs
│       │   │   │   │   │   ├── Food.g.cs.meta
│       │   │   │   │   │   ├── MoveAllPlayersTimer.g.cs
│       │   │   │   │   │   ├── MoveAllPlayersTimer.g.cs.meta
│       │   │   │   │   │   ├── Player.g.cs
│       │   │   │   │   │   ├── Player.g.cs.meta
│       │   │   │   │   │   ├── SpawnFoodTimer.g.cs
│       │   │   │   │   │   └── SpawnFoodTimer.g.cs.meta
│       │   │   │   │   └── Types.meta
│       │   │   │   └── autogen.meta
│       │   │   ├── Scripts.meta
│       │   │   ├── Settings/
│       │   │   │   ├── Lit2DSceneTemplate.scenetemplate
│       │   │   │   ├── Lit2DSceneTemplate.scenetemplate.meta
│       │   │   │   ├── Renderer2D.asset
│       │   │   │   ├── Renderer2D.asset.meta
│       │   │   │   ├── Scenes/
│       │   │   │   │   ├── URP2DSceneTemplate.unity
│       │   │   │   │   └── URP2DSceneTemplate.unity.meta
│       │   │   │   ├── Scenes.meta
│       │   │   │   ├── UniversalRP.asset
│       │   │   │   └── UniversalRP.asset.meta
│       │   │   ├── Settings.meta
│       │   │   ├── StarBackground.png.meta
│       │   │   ├── StarBackground.prefab
│       │   │   ├── StarBackground.prefab.meta
│       │   │   ├── TextMesh Pro/
│       │   │   │   ├── Documentation/
│       │   │   │   │   └── TextMesh Pro User Guide 2016.pdf.meta
│       │   │   │   ├── Documentation.meta
│       │   │   │   ├── Fonts/
│       │   │   │   │   ├── LiberationSans - OFL.txt
│       │   │   │   │   ├── LiberationSans - OFL.txt.meta
│       │   │   │   │   └── LiberationSans.ttf.meta
│       │   │   │   ├── Fonts.meta
│       │   │   │   ├── Resources/
│       │   │   │   │   ├── Fonts & Materials/
│       │   │   │   │   │   ├── LiberationSans SDF - Drop Shadow.mat
│       │   │   │   │   │   ├── LiberationSans SDF - Drop Shadow.mat.meta
│       │   │   │   │   │   ├── LiberationSans SDF - Fallback.asset
│       │   │   │   │   │   ├── LiberationSans SDF - Fallback.asset.meta
│       │   │   │   │   │   ├── LiberationSans SDF - Outline.mat
│       │   │   │   │   │   ├── LiberationSans SDF - Outline.mat.meta
│       │   │   │   │   │   ├── LiberationSans SDF.asset
│       │   │   │   │   │   └── LiberationSans SDF.asset.meta
│       │   │   │   │   ├── Fonts & Materials.meta
│       │   │   │   │   ├── LineBreaking Following Characters.txt
│       │   │   │   │   ├── LineBreaking Following Characters.txt.meta
│       │   │   │   │   ├── LineBreaking Leading Characters.txt
│       │   │   │   │   ├── LineBreaking Leading Characters.txt.meta
│       │   │   │   │   ├── Sprite Assets/
│       │   │   │   │   │   ├── EmojiOne.asset
│       │   │   │   │   │   └── EmojiOne.asset.meta
│       │   │   │   │   ├── Sprite Assets.meta
│       │   │   │   │   ├── Style Sheets/
│       │   │   │   │   │   ├── Default Style Sheet.asset
│       │   │   │   │   │   └── Default Style Sheet.asset.meta
│       │   │   │   │   ├── Style Sheets.meta
│       │   │   │   │   ├── TMP Settings.asset
│       │   │   │   │   └── TMP Settings.asset.meta
│       │   │   │   ├── Resources.meta
│       │   │   │   ├── Shaders/
│       │   │   │   │   ├── TMP_Bitmap-Custom-Atlas.shader
│       │   │   │   │   ├── TMP_Bitmap-Custom-Atlas.shader.meta
│       │   │   │   │   ├── TMP_Bitmap-Mobile.shader
│       │   │   │   │   ├── TMP_Bitmap-Mobile.shader.meta
│       │   │   │   │   ├── TMP_Bitmap.shader
│       │   │   │   │   ├── TMP_Bitmap.shader.meta
│       │   │   │   │   ├── TMP_SDF Overlay.shader
│       │   │   │   │   ├── TMP_SDF Overlay.shader.meta
│       │   │   │   │   ├── TMP_SDF SSD.shader
│       │   │   │   │   ├── TMP_SDF SSD.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile Masking.shader
│       │   │   │   │   ├── TMP_SDF-Mobile Masking.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile Overlay.shader
│       │   │   │   │   ├── TMP_SDF-Mobile Overlay.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile SSD.shader
│       │   │   │   │   ├── TMP_SDF-Mobile SSD.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile.shader
│       │   │   │   │   ├── TMP_SDF-Mobile.shader.meta
│       │   │   │   │   ├── TMP_SDF-Surface-Mobile.shader
│       │   │   │   │   ├── TMP_SDF-Surface-Mobile.shader.meta
│       │   │   │   │   ├── TMP_SDF-Surface.shader
│       │   │   │   │   ├── TMP_SDF-Surface.shader.meta
│       │   │   │   │   ├── TMP_SDF.shader
│       │   │   │   │   ├── TMP_SDF.shader.meta
│       │   │   │   │   ├── TMP_Sprite.shader
│       │   │   │   │   ├── TMP_Sprite.shader.meta
│       │   │   │   │   ├── TMPro.cginc
│       │   │   │   │   ├── TMPro.cginc.meta
│       │   │   │   │   ├── TMPro_Mobile.cginc
│       │   │   │   │   ├── TMPro_Mobile.cginc.meta
│       │   │   │   │   ├── TMPro_Properties.cginc
│       │   │   │   │   ├── TMPro_Properties.cginc.meta
│       │   │   │   │   ├── TMPro_Surface.cginc
│       │   │   │   │   └── TMPro_Surface.cginc.meta
│       │   │   │   ├── Shaders.meta
│       │   │   │   ├── Sprites/
│       │   │   │   │   ├── EmojiOne Attribution.txt
│       │   │   │   │   ├── EmojiOne Attribution.txt.meta
│       │   │   │   │   ├── EmojiOne.json
│       │   │   │   │   ├── EmojiOne.json.meta
│       │   │   │   │   └── EmojiOne.png.meta
│       │   │   │   └── Sprites.meta
│       │   │   ├── TextMesh Pro.meta
│       │   │   ├── UIUsernamePanel.png.meta
│       │   │   ├── UniversalRenderPipelineGlobalSettings.asset
│       │   │   ├── UniversalRenderPipelineGlobalSettings.asset.meta
│       │   │   ├── WavyOutline.shadersubgraph
│       │   │   └── WavyOutline.shadersubgraph.meta
│       │   ├── Packages/
│       │   │   ├── manifest.json
│       │   │   └── packages-lock.json
│       │   └── ProjectSettings/
│       │       ├── AudioManager.asset
│       │       ├── BurstAotSettings_StandaloneWindows.json
│       │       ├── ClusterInputManager.asset
│       │       ├── CommonBurstAotSettings.json
│       │       ├── DynamicsManager.asset
│       │       ├── EditorBuildSettings.asset
│       │       ├── EditorSettings.asset
│       │       ├── GraphicsSettings.asset
│       │       ├── InputManager.asset
│       │       ├── MemorySettings.asset
│       │       ├── NavMeshAreas.asset
│       │       ├── NetworkManager.asset
│       │       ├── PackageManagerSettings.asset
│       │       ├── Packages/
│       │       │   └── com.unity.testtools.codecoverage/
│       │       │       └── Settings.json
│       │       ├── Physics2DSettings.asset
│       │       ├── PresetManager.asset
│       │       ├── ProjectSettings.asset
│       │       ├── ProjectVersion.txt
│       │       ├── QualitySettings.asset
│       │       ├── SceneTemplateSettings.json
│       │       ├── ShaderGraphSettings.asset
│       │       ├── TagManager.asset
│       │       ├── TimeManager.asset
│       │       ├── URPProjectSettings.asset
│       │       ├── UnityConnectSettings.asset
│       │       ├── VFXManager.asset
│       │       ├── VersionControlSettings.asset
│       │       └── XRSettings.asset
│       ├── client-unreal/
│       │   ├── Config/
│       │   │   ├── DefaultEditor.ini
│       │   │   ├── DefaultEngine.ini
│       │   │   ├── DefaultGame.ini
│       │   │   └── DefaultInput.ini
│       │   ├── Content/
│       │   │   ├── BP_BlackholioGameMode.uasset
│       │   │   ├── BP_Circle.uasset
│       │   │   ├── BP_Food.uasset
│       │   │   ├── BP_GameManager.uasset
│       │   │   ├── BP_PlayerController.uasset
│       │   │   ├── BP_PlayerPawn.uasset
│       │   │   ├── Blackholio.umap
│       │   │   ├── Circle.uasset
│       │   │   ├── Circle_Sprite.uasset
│       │   │   ├── Gameplay/
│       │   │   │   ├── BP_ParallaxBackground.uasset
│       │   │   │   ├── StarBackground.uasset
│       │   │   │   ├── StarBackground_Sprite.uasset
│       │   │   │   ├── WBP_Leaderboard.uasset
│       │   │   │   ├── WBP_LeaderboardRow.uasset
│       │   │   │   ├── WBP_Respawn.uasset
│       │   │   │   └── WBP_UsernameChooser.uasset
│       │   │   ├── Input/
│       │   │   │   ├── IA_InputLock.uasset
│       │   │   │   ├── IA_Split.uasset
│       │   │   │   ├── IA_Suicide.uasset
│       │   │   │   └── IMC_Main.uasset
│       │   │   ├── MFI_WavyOutline_Inst.uasset
│       │   │   ├── MF_WavyOutline.uasset
│       │   │   ├── MI_Circle.uasset
│       │   │   ├── MI_Food.uasset
│       │   │   ├── M_Circle.uasset
│       │   │   └── WBP_Nameplate.uasset
│       │   ├── Source/
│       │   │   ├── client_unreal/
│       │   │   │   ├── Private/
│       │   │   │   │   ├── BlackholioGameMode.cpp
│       │   │   │   │   ├── BlackholioPlayerController.cpp
│       │   │   │   │   ├── Circle.cpp
│       │   │   │   │   ├── Entity.cpp
│       │   │   │   │   ├── Food.cpp
│       │   │   │   │   ├── GameManager.cpp
│       │   │   │   │   ├── Gameplay/
│       │   │   │   │   │   ├── LeaderboardRowWidget.cpp
│       │   │   │   │   │   ├── LeaderboardWidget.cpp
│       │   │   │   │   │   ├── ParallaxBackground.cpp
│       │   │   │   │   │   ├── RespawnWidget.cpp
│       │   │   │   │   │   └── UsernameChooserWidget.cpp
│       │   │   │   │   ├── ModuleBindings/
│       │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│       │   │   │   │   │   └── Tables/
│       │   │   │   │   │       ├── CircleTable.g.cpp
│       │   │   │   │   │       ├── ConfigTable.g.cpp
│       │   │   │   │   │       ├── ConsumeEntityEventTable.g.cpp
│       │   │   │   │   │       ├── EntityTable.g.cpp
│       │   │   │   │   │       ├── FoodTable.g.cpp
│       │   │   │   │   │       └── PlayerTable.g.cpp
│       │   │   │   │   └── PlayerPawn.cpp
│       │   │   │   ├── Public/
│       │   │   │   │   ├── BlackholioGameMode.h
│       │   │   │   │   ├── BlackholioPlayerController.h
│       │   │   │   │   ├── Circle.h
│       │   │   │   │   ├── DbVector2.h
│       │   │   │   │   ├── Entity.h
│       │   │   │   │   ├── Food.h
│       │   │   │   │   ├── GameManager.h
│       │   │   │   │   ├── Gameplay/
│       │   │   │   │   │   ├── LeaderboardRowWidget.h
│       │   │   │   │   │   ├── LeaderboardWidget.h
│       │   │   │   │   │   ├── ParallaxBackground.h
│       │   │   │   │   │   ├── RespawnWidget.h
│       │   │   │   │   │   └── UsernameChooserWidget.h
│       │   │   │   │   ├── ModuleBindings/
│       │   │   │   │   │   ├── ReducerBase.g.h
│       │   │   │   │   │   ├── Reducers/
│       │   │   │   │   │   │   ├── EnterGame.g.h
│       │   │   │   │   │   │   ├── PlayerSplit.g.h
│       │   │   │   │   │   │   ├── Respawn.g.h
│       │   │   │   │   │   │   ├── Suicide.g.h
│       │   │   │   │   │   │   └── UpdatePlayerInput.g.h
│       │   │   │   │   │   ├── SpacetimeDBClient.g.h
│       │   │   │   │   │   ├── Tables/
│       │   │   │   │   │   │   ├── CircleTable.g.h
│       │   │   │   │   │   │   ├── ConfigTable.g.h
│       │   │   │   │   │   │   ├── ConsumeEntityEventTable.g.h
│       │   │   │   │   │   │   ├── EntityTable.g.h
│       │   │   │   │   │   │   ├── FoodTable.g.h
│       │   │   │   │   │   │   └── PlayerTable.g.h
│       │   │   │   │   │   └── Types/
│       │   │   │   │   │       ├── CircleDecayTimerType.g.h
│       │   │   │   │   │       ├── CircleRecombineTimerType.g.h
│       │   │   │   │   │       ├── CircleType.g.h
│       │   │   │   │   │       ├── ConfigType.g.h
│       │   │   │   │   │       ├── ConsumeEntityEventType.g.h
│       │   │   │   │   │       ├── ConsumeEntityTimerType.g.h
│       │   │   │   │   │       ├── DbVector2Type.g.h
│       │   │   │   │   │       ├── EntityType.g.h
│       │   │   │   │   │       ├── FoodType.g.h
│       │   │   │   │   │       ├── MoveAllPlayersTimerType.g.h
│       │   │   │   │   │       ├── PlayerType.g.h
│       │   │   │   │   │       └── SpawnFoodTimerType.g.h
│       │   │   │   │   └── PlayerPawn.h
│       │   │   │   ├── client_unreal.Build.cs
│       │   │   │   ├── client_unreal.cpp
│       │   │   │   └── client_unreal.h
│       │   │   ├── client_unreal.Target.cs
│       │   │   └── client_unrealEditor.Target.cs
│       │   └── client_unreal.uproject
│       ├── server-cpp/
│       │   └── spacetimedb/
│       │       ├── .gitignore
│       │       ├── CMakeLists.txt
│       │       └── src/
│       │           └── lib.cpp
│       ├── server-csharp/
│       │   ├── .gitignore
│       │   ├── DbVector2.cs
│       │   ├── Lib.cs
│       │   ├── StdbModule.csproj
│       │   ├── generate.bat
│       │   ├── generate.sh
│       │   ├── logs.sh
│       │   ├── publish.bat
│       │   ├── publish.sh
│       │   └── write-nuget-config.sh
│       └── server-rust/
│           ├── .gitignore
│           ├── Cargo.toml
│           ├── generate.bat
│           ├── generate.sh
│           ├── logs.bat
│           ├── logs.sh
│           ├── publish.bat
│           ├── publish.sh
│           └── src/
│               ├── lib.rs
│               └── math.rs
├── docker-compose.yml
├── docs/
│   ├── .editorconfig
│   ├── .gitignore
│   ├── DEVELOP.md
│   ├── LICENSE.txt
│   ├── README.md
│   ├── STYLE.md
│   ├── docs/
│   │   ├── 00000-ask-ai/
│   │   │   ├── 00100-ask-ai.mdx
│   │   │   └── _category_.json
│   │   ├── 00100-intro/
│   │   │   ├── 00100-getting-started/
│   │   │   │   ├── 00100-getting-started.md
│   │   │   │   ├── 00200-what-is-spacetimedb.md
│   │   │   │   ├── 00250-zen-of-spacetimedb.md
│   │   │   │   ├── 00300-language-support.md
│   │   │   │   ├── 00400-key-architecture.md
│   │   │   │   ├── 00500-faq.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00200-quickstarts/
│   │   │   │   ├── 00100-react.md
│   │   │   │   ├── 00150-nextjs.md
│   │   │   │   ├── 00150-vue.md
│   │   │   │   ├── 00155-nuxt.md
│   │   │   │   ├── 00160-svelte.md
│   │   │   │   ├── 00165-angular.md
│   │   │   │   ├── 00170-tanstack.md
│   │   │   │   ├── 00175-remix.md
│   │   │   │   ├── 00180-browser.md
│   │   │   │   ├── 00250-bun.md
│   │   │   │   ├── 00275-deno.md
│   │   │   │   ├── 00300-nodejs.md
│   │   │   │   ├── 00400-typescript.md
│   │   │   │   ├── 00500-rust.md
│   │   │   │   ├── 00600-c-sharp.md
│   │   │   │   ├── 00700-cpp.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00300-tutorials/
│   │   │   │   ├── 00100-chat-app.md
│   │   │   │   ├── 00300-unity-tutorial/
│   │   │   │   │   ├── 00200-part-1.md
│   │   │   │   │   ├── 00300-part-2.md
│   │   │   │   │   ├── 00400-part-3.md
│   │   │   │   │   ├── 00500-part-4.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   ├── 00400-unreal-tutorial/
│   │   │   │   │   ├── 00200-part-1.md
│   │   │   │   │   ├── 00300-part-2.md
│   │   │   │   │   ├── 00400-part-3.md
│   │   │   │   │   ├── 00500-part-4.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   └── _category_.json
│   │   │   └── _category_.json
│   │   ├── 00200-core-concepts/
│   │   │   ├── 00000-index.md
│   │   │   ├── 00100-databases/
│   │   │   │   ├── 00100-transactions-atomicity.md
│   │   │   │   ├── 00200-spacetime-dev.md
│   │   │   │   ├── 00300-spacetime-publish.md
│   │   │   │   ├── 00500-cheat-sheet.md
│   │   │   │   ├── 00500-migrations/
│   │   │   │   │   ├── 00200-automatic-migrations.md
│   │   │   │   │   ├── 00300-incremental-migrations.md
│   │   │   │   │   └── _category_.json
│   │   │   │   └── _category_.json
│   │   │   ├── 00100-databases.md
│   │   │   ├── 00200-functions/
│   │   │   │   ├── 00300-reducers/
│   │   │   │   │   ├── 00300-reducers.md
│   │   │   │   │   ├── 00400-reducer-context.md
│   │   │   │   │   ├── 00500-lifecycle.md
│   │   │   │   │   ├── 00600-error-handling.md
│   │   │   │   │   └── _category_.json
│   │   │   │   ├── 00400-procedures.md
│   │   │   │   ├── 00500-views.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00200-functions.md
│   │   │   ├── 00300-tables/
│   │   │   │   ├── 00200-column-types.md
│   │   │   │   ├── 00210-file-storage.md
│   │   │   │   ├── 00230-auto-increment.md
│   │   │   │   ├── 00240-constraints.md
│   │   │   │   ├── 00250-default-values.md
│   │   │   │   ├── 00300-indexes.md
│   │   │   │   ├── 00400-access-permissions.md
│   │   │   │   ├── 00500-schedule-tables.md
│   │   │   │   ├── 00550-event-tables.md
│   │   │   │   ├── 00600-performance.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00300-tables.md
│   │   │   ├── 00400-subscriptions/
│   │   │   │   ├── 00200-subscription-semantics.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00400-subscriptions.md
│   │   │   ├── 00500-authentication/
│   │   │   │   ├── 00100-spacetimeauth/
│   │   │   │   │   ├── 00200-creating-a-project.md
│   │   │   │   │   ├── 00300-configuring-a-project.md
│   │   │   │   │   ├── 00400-testing.md
│   │   │   │   │   ├── 00500-react-integration.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   ├── 00200-Auth0.md
│   │   │   │   ├── 00300-Clerk.md
│   │   │   │   └── 00500-usage.md
│   │   │   ├── 00500-authentication.md
│   │   │   ├── 00600-clients/
│   │   │   │   ├── 00200-codegen.md
│   │   │   │   ├── 00300-connection.md
│   │   │   │   ├── 00400-sdk-api.md
│   │   │   │   ├── 00500-rust-reference.md
│   │   │   │   ├── 00600-csharp-reference.md
│   │   │   │   ├── 00700-typescript-reference.md
│   │   │   │   ├── 00800-unreal-reference.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00600-clients.md
│   │   │   └── _category_.json
│   │   └── 00300-resources/
│   │       ├── 00000-index.md
│   │       ├── 00100-how-to/
│   │       │   ├── 00100-deploy/
│   │       │   │   ├── 00100-maincloud.md
│   │       │   │   ├── 00200-self-hosting.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-pg-wire.md
│   │       │   ├── 00300-logging.md
│   │       │   ├── 00400-row-level-security.md
│   │       │   ├── 00500-reject-client-connections.md
│   │       │   ├── 00600-migrating-to-2.0.md
│   │       │   ├── 00700-self-hosted-key-rotation.md
│   │       │   └── _category_.json
│   │       ├── 00200-reference/
│   │       │   ├── 00100-cli-reference/
│   │       │   │   ├── 00100-cli-reference.md
│   │       │   │   ├── 00200-standalone-config.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-http-api/
│   │       │   │   ├── 00100-authorization.md
│   │       │   │   ├── 00200-identity.md
│   │       │   │   ├── 00300-database.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-internals/
│   │       │   │   ├── 00100-module-abi-reference.md
│   │       │   │   ├── 00200-sats-json.md
│   │       │   │   ├── 00300-bsatn.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00400-sql-reference.md
│   │       │   └── _category_.json
│   │       ├── 01000-reference/
│   │       │   └── 00100-cli-reference/
│   │       │       └── 00300-spacetime-json.md
│   │       └── _category_.json
│   ├── docusaurus.config.ts
│   ├── llms/
│   │   ├── docs-benchmark-analysis.md
│   │   ├── docs-benchmark-comment.md
│   │   ├── docs-benchmark-details.json
│   │   ├── docs-benchmark-summary.json
│   │   ├── llm-comparison-details.json
│   │   ├── llm-comparison-summary.json
│   │   ├── oneshot-grades.json
│   │   └── oneshot-summary.md
│   ├── package.json
│   ├── scripts/
│   │   ├── generate-cli-docs.mjs
│   │   ├── get-old-docs.sh
│   │   └── rewrite-doc-links.mjs
│   ├── sidebars.ts
│   ├── src/
│   │   ├── client-modules/
│   │   │   ├── fonts.ts
│   │   │   └── inkeep-font-override.ts
│   │   ├── components/
│   │   │   ├── CardLink.tsx
│   │   │   ├── CardLinkGrid.tsx
│   │   │   ├── Check.tsx
│   │   │   ├── CppModuleVersionNotice.tsx
│   │   │   ├── DocsList.tsx
│   │   │   ├── InstallCardLink.tsx
│   │   │   ├── QuickstartLinks.tsx
│   │   │   └── Steps.tsx
│   │   ├── css/
│   │   │   ├── custom.css
│   │   │   └── typography.css
│   │   └── theme/
│   │       ├── DocVersionBanner/
│   │       │   └── index.tsx
│   │       └── NavbarItem/
│   │           └── NavbarNavLink.tsx
│   ├── static/
│   │   ├── .nojekyll
│   │   ├── ai-rules/
│   │   │   ├── spacetimedb-csharp.mdc
│   │   │   ├── spacetimedb-migration-2.0.mdc
│   │   │   ├── spacetimedb-rust.mdc
│   │   │   ├── spacetimedb-typescript.mdc
│   │   │   └── spacetimedb.mdc
│   │   └── llms.md
│   ├── test-csharp-snippets/
│   │   ├── Module.cs
│   │   └── TestProcedures.csproj
│   ├── tsconfig.json
│   ├── versioned_docs/
│   │   └── version-1.12.0/
│   │       ├── 00000-ask-ai/
│   │       │   ├── 00100-ask-ai.mdx
│   │       │   └── _category_.json
│   │       ├── 00100-intro/
│   │       │   ├── 00100-getting-started/
│   │       │   │   ├── 00100-getting-started.md
│   │       │   │   ├── 00200-what-is-spacetimedb.md
│   │       │   │   ├── 00250-zen-of-spacetimedb.md
│   │       │   │   ├── 00300-language-support.md
│   │       │   │   ├── 00400-key-architecture.md
│   │       │   │   ├── 00500-faq.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-quickstarts/
│   │       │   │   ├── 00100-react.md
│   │       │   │   ├── 00150-vue.md
│   │       │   │   ├── 00160-svelte.md
│   │       │   │   ├── 00400-typescript.md
│   │       │   │   ├── 00500-rust.md
│   │       │   │   ├── 00600-c-sharp.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-tutorials/
│   │       │   │   ├── 00100-chat-app.md
│   │       │   │   ├── 00300-unity-tutorial/
│   │       │   │   │   ├── 00200-part-1.md
│   │       │   │   │   ├── 00300-part-2.md
│   │       │   │   │   ├── 00400-part-3.md
│   │       │   │   │   ├── 00500-part-4.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   ├── 00400-unreal-tutorial/
│   │       │   │   │   ├── 00200-part-1.md
│   │       │   │   │   ├── 00300-part-2.md
│   │       │   │   │   ├── 00400-part-3.md
│   │       │   │   │   ├── 00500-part-4.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   └── _category_.json
│   │       │   └── _category_.json
│   │       ├── 00200-core-concepts/
│   │       │   ├── 00000-index.md
│   │       │   ├── 00100-databases/
│   │       │   │   ├── 00100-transactions-atomicity.md
│   │       │   │   ├── 00200-spacetime-dev.md
│   │       │   │   ├── 00300-spacetime-publish.md
│   │       │   │   ├── 00500-cheat-sheet.md
│   │       │   │   ├── 00500-migrations/
│   │       │   │   │   ├── 00200-automatic-migrations.md
│   │       │   │   │   ├── 00300-incremental-migrations.md
│   │       │   │   │   └── _category_.json
│   │       │   │   └── _category_.json
│   │       │   ├── 00100-databases.md
│   │       │   ├── 00200-functions/
│   │       │   │   ├── 00300-reducers/
│   │       │   │   │   ├── 00300-reducers.md
│   │       │   │   │   ├── 00400-reducer-context.md
│   │       │   │   │   ├── 00500-lifecycle.md
│   │       │   │   │   ├── 00600-error-handling.md
│   │       │   │   │   └── _category_.json
│   │       │   │   ├── 00400-procedures.md
│   │       │   │   ├── 00500-views.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-functions.md
│   │       │   ├── 00300-tables/
│   │       │   │   ├── 00200-column-types.md
│   │       │   │   ├── 00210-file-storage.md
│   │       │   │   ├── 00230-auto-increment.md
│   │       │   │   ├── 00240-constraints.md
│   │       │   │   ├── 00250-default-values.md
│   │       │   │   ├── 00300-indexes.md
│   │       │   │   ├── 00400-access-permissions.md
│   │       │   │   ├── 00500-schedule-tables.md
│   │       │   │   ├── 00600-performance.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-tables.md
│   │       │   ├── 00400-subscriptions/
│   │       │   │   ├── 00200-subscription-semantics.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00400-subscriptions.md
│   │       │   ├── 00500-authentication/
│   │       │   │   ├── 00100-spacetimeauth/
│   │       │   │   │   ├── 00200-creating-a-project.md
│   │       │   │   │   ├── 00300-configuring-a-project.md
│   │       │   │   │   ├── 00400-testing.md
│   │       │   │   │   ├── 00500-react-integration.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   ├── 00200-Auth0.md
│   │       │   │   ├── 00300-Clerk.md
│   │       │   │   └── 00500-usage.md
│   │       │   ├── 00500-authentication.md
│   │       │   ├── 00600-client-sdk-languages/
│   │       │   │   ├── 00200-codegen.md
│   │       │   │   ├── 00300-connection.md
│   │       │   │   ├── 00400-sdk-api.md
│   │       │   │   ├── 00500-rust-reference.md
│   │       │   │   ├── 00600-csharp-reference.md
│   │       │   │   ├── 00700-typescript-reference.md
│   │       │   │   ├── 00800-unreal-reference.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00600-client-sdk-languages.md
│   │       │   └── _category_.json
│   │       └── 00300-resources/
│   │           ├── 00000-index.md
│   │           ├── 00100-how-to/
│   │           │   ├── 00100-deploy/
│   │           │   │   ├── 00100-maincloud.md
│   │           │   │   ├── 00200-self-hosting.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00200-pg-wire.md
│   │           │   ├── 00300-logging.md
│   │           │   ├── 00400-row-level-security.md
│   │           │   ├── 00500-reject-client-connections.md
│   │           │   └── _category_.json
│   │           ├── 00200-reference/
│   │           │   ├── 00100-cli-reference/
│   │           │   │   ├── 00100-cli-reference.md
│   │           │   │   ├── 00200-standalone-config.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00200-http-api/
│   │           │   │   ├── 00100-authorization.md
│   │           │   │   ├── 00200-identity.md
│   │           │   │   ├── 00300-database.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00300-internals/
│   │           │   │   ├── 00100-module-abi-reference.md
│   │           │   │   ├── 00200-sats-json.md
│   │           │   │   ├── 00300-bsatn.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00400-sql-reference.md
│   │           │   └── _category_.json
│   │           └── _category_.json
│   ├── versioned_sidebars/
│   │   └── version-1.12.0-sidebars.json
│   └── versions.json
├── eslint.config.js
├── flake.nix
├── git-hooks/
│   ├── hooks/
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   ├── push-to-checkout.sample
│   │   └── update.sample
│   └── install-hooks.sh
├── global.json
├── librusty_v8.nix
├── licenses/
│   ├── BSL.txt
│   └── apache2.txt
├── modules/
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── benchmarks/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── config.toml
│   │   └── src/
│   │       ├── circles.rs
│   │       ├── ia_loop.rs
│   │       ├── lib.rs
│   │       └── synthetic.rs
│   ├── benchmarks-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── build.bat
│   │   └── src/
│   │       ├── circles.cpp
│   │       ├── common.h
│   │       ├── ia_loop.cpp
│   │       ├── lib.cpp
│   │       └── synthetic.cpp
│   ├── benchmarks-cs/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── benchmarks-cs.csproj
│   │   ├── circles.cs
│   │   ├── ia_loop.cs
│   │   ├── lib.cs
│   │   └── synthetic.cs
│   ├── benchmarks-ts/
│   │   ├── .gitignore
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── circles.ts
│   │   │   ├── ia_loop.ts
│   │   │   ├── index.ts
│   │   │   ├── load.ts
│   │   │   ├── schema.ts
│   │   │   └── synthetic.ts
│   │   └── tsconfig.json
│   ├── keynote-benchmarks/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── module-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── index.html
│   │   ├── protobuf/
│   │   │   └── Test.proto
│   │   └── src/
│   │       └── lib.rs
│   ├── module-test-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── compare_module_schemas.py
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── module-test-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   ├── module-test-cs.csproj
│   │   └── module-test-cs.sln
│   ├── module-test-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── perf-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-connect-disconnect/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── .gitignore
│   │       └── lib.rs
│   ├── sdk-test-connect-disconnect-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-connect-disconnect-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   └── sdk-test-connect-disconnect-cs.csproj
│   ├── sdk-test-connect-disconnect-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-cpp/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   ├── sdk-test-cs.csproj
│   │   └── sdk-test-cs.sln
│   ├── sdk-test-event-table/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-procedure/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-procedure-cpp/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── client/
│   │   │   ├── .gitignore
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── main.rs
│   │   │       └── module_bindings/
│   │   │           ├── insert_with_tx_commit_procedure.rs
│   │   │           ├── insert_with_tx_rollback_procedure.rs
│   │   │           ├── invalid_request_procedure.rs
│   │   │           ├── mod.rs
│   │   │           ├── my_table_table.rs
│   │   │           ├── my_table_type.rs
│   │   │           ├── pk_uuid_table.rs
│   │   │           ├── pk_uuid_type.rs
│   │   │           ├── proc_inserts_into_table.rs
│   │   │           ├── proc_inserts_into_type.rs
│   │   │           ├── read_my_schema_procedure.rs
│   │   │           ├── return_enum_a_procedure.rs
│   │   │           ├── return_enum_b_procedure.rs
│   │   │           ├── return_enum_type.rs
│   │   │           ├── return_primitive_procedure.rs
│   │   │           ├── return_struct_procedure.rs
│   │   │           ├── return_struct_type.rs
│   │   │           ├── schedule_proc_reducer.rs
│   │   │           ├── scheduled_proc_procedure.rs
│   │   │           ├── scheduled_proc_table_table.rs
│   │   │           ├── scheduled_proc_table_type.rs
│   │   │           ├── sorted_uuids_insert_procedure.rs
│   │   │           ├── test_uuid_counter_procedure.rs
│   │   │           ├── test_uuid_ordering_procedure.rs
│   │   │           ├── test_uuid_round_trip_procedure.rs
│   │   │           ├── test_uuid_v_4_procedure.rs
│   │   │           ├── test_uuid_v_7_procedure.rs
│   │   │           ├── test_uuid_versions_procedure.rs
│   │   │           └── will_panic_procedure.rs
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-procedure-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-view/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-view-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-view-pk/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   └── sdk-test-view-pk-cs/
│       ├── .gitignore
│       ├── Lib.cs
│       ├── README.md
│       └── sdk-test-view-pk-cs.csproj
├── package.json
├── pnpm-workspace.yaml
├── query-builder-syntax-analysis.md
├── run_standalone_temp.sh
├── rust-toolchain.toml
├── sdks/
│   ├── csharp/
│   │   ├── .github/
│   │   │   └── workflows/
│   │   │       ├── publish-nuget.yml
│   │   │       └── repo-migration-notice.yml
│   │   ├── .gitignore
│   │   ├── .meta-check-ignore
│   │   ├── DEVELOP.md
│   │   ├── DEVELOP.md.meta
│   │   ├── Directory.Build.props
│   │   ├── Directory.Build.props.meta
│   │   ├── LICENSE.txt.meta
│   │   ├── README.dotnet.md
│   │   ├── README.dotnet.md.meta
│   │   ├── README.md
│   │   ├── README.md.meta
│   │   ├── SpacetimeDB.ClientSDK.csproj
│   │   ├── SpacetimeDB.ClientSDK.csproj.meta
│   │   ├── SpacetimeDB.ClientSDK.sln
│   │   ├── SpacetimeDB.ClientSDK.sln.meta
│   │   ├── after.SpacetimeDB.ClientSDK.sln.targets
│   │   ├── after.SpacetimeDB.ClientSDK.sln.targets.meta
│   │   ├── examples~/
│   │   │   └── regression-tests/
│   │   │       ├── client/
│   │   │       │   ├── EqualityOperations.cs
│   │   │       │   ├── Program.cs
│   │   │       │   ├── client.csproj
│   │   │       │   └── module_bindings/
│   │   │       │       ├── Procedures/
│   │   │       │       │   ├── AuthenticationCapabilities.g.cs
│   │   │       │       │   ├── DanglingTxWarning.g.cs
│   │   │       │       │   ├── DocumentationGapChecks.g.cs
│   │   │       │       │   ├── InsertWithTxCommit.g.cs
│   │   │       │       │   ├── InsertWithTxPanic.g.cs
│   │   │       │       │   ├── InsertWithTxRetry.g.cs
│   │   │       │       │   ├── InsertWithTxRollback.g.cs
│   │   │       │       │   ├── InsertWithTxRollbackResult.g.cs
│   │   │       │       │   ├── InvalidHttpRequest.g.cs
│   │   │       │       │   ├── ReadMySchemaViaHttp.g.cs
│   │   │       │       │   ├── ReturnEnumA.g.cs
│   │   │       │       │   ├── ReturnEnumB.g.cs
│   │   │       │       │   ├── ReturnPrimitive.g.cs
│   │   │       │       │   ├── ReturnStructProcedure.g.cs
│   │   │       │       │   ├── ReturnUuid.g.cs
│   │   │       │       │   ├── SubscriptionEventOffset.g.cs
│   │   │       │       │   ├── TxContextCapabilities.g.cs
│   │   │       │       │   └── WillPanic.g.cs
│   │   │       │       ├── Reducers/
│   │   │       │       │   ├── Add.g.cs
│   │   │       │       │   ├── Delete.g.cs
│   │   │       │       │   ├── EmitTestEvent.g.cs
│   │   │       │       │   ├── InsertEmptyStringIntoNonNullable.g.cs
│   │   │       │       │   ├── InsertNullStringIntoNonNullable.g.cs
│   │   │       │       │   ├── InsertNullStringIntoNullable.g.cs
│   │   │       │       │   ├── InsertResult.g.cs
│   │   │       │       │   ├── InsertViewPkMembership.g.cs
│   │   │       │       │   ├── InsertViewPkMembershipSecondary.g.cs
│   │   │       │       │   ├── InsertViewPkPlayer.g.cs
│   │   │       │       │   ├── InsertWhereTest.g.cs
│   │   │       │       │   ├── Noop.g.cs
│   │   │       │       │   ├── SetNullableVec.g.cs
│   │   │       │       │   ├── ThrowError.g.cs
│   │   │       │       │   ├── UpdateViewPkPlayer.g.cs
│   │   │       │       │   └── UpdateWhereTest.g.cs
│   │   │       │       ├── SpacetimeDBClient.g.cs
│   │   │       │       ├── Tables/
│   │   │       │       │   ├── Account.g.cs
│   │   │       │       │   ├── Admins.g.cs
│   │   │       │       │   ├── AllViewPkPlayers.g.cs
│   │   │       │       │   ├── ExampleData.g.cs
│   │   │       │       │   ├── FindWhereTest.g.cs
│   │   │       │       │   ├── MyAccount.g.cs
│   │   │       │       │   ├── MyAccountMissing.g.cs
│   │   │       │       │   ├── MyLog.g.cs
│   │   │       │       │   ├── MyPlayer.g.cs
│   │   │       │       │   ├── MyTable.g.cs
│   │   │       │       │   ├── NullStringNonnullable.g.cs
│   │   │       │       │   ├── NullStringNullable.g.cs
│   │   │       │       │   ├── NullableVec.g.cs
│   │   │       │       │   ├── NullableVecView.g.cs
│   │   │       │       │   ├── Player.g.cs
│   │   │       │       │   ├── PlayerLevel.g.cs
│   │   │       │       │   ├── PlayersAtLevelOne.g.cs
│   │   │       │       │   ├── RetryLog.g.cs
│   │   │       │       │   ├── Score.g.cs
│   │   │       │       │   ├── ScoresPlayer123.g.cs
│   │   │       │       │   ├── ScoresPlayer123Level5.g.cs
│   │   │       │       │   ├── ScoresPlayer123Range.g.cs
│   │   │       │       │   ├── SenderViewPkPlayersA.g.cs
│   │   │       │       │   ├── SenderViewPkPlayersB.g.cs
│   │   │       │       │   ├── TestEvent.g.cs
│   │   │       │       │   ├── User.g.cs
│   │   │       │       │   ├── UsersAge1865.g.cs
│   │   │       │       │   ├── UsersAge18Plus.g.cs
│   │   │       │       │   ├── UsersAgeUnder18.g.cs
│   │   │       │       │   ├── UsersNamedAlice.g.cs
│   │   │       │       │   ├── ViewPkMembership.g.cs
│   │   │       │       │   ├── ViewPkMembershipSecondary.g.cs
│   │   │       │       │   ├── ViewPkPlayer.g.cs
│   │   │       │       │   ├── WhereTest.g.cs
│   │   │       │       │   ├── WhereTestQuery.g.cs
│   │   │       │       │   └── WhereTestView.g.cs
│   │   │       │       └── Types/
│   │   │       │           ├── Account.g.cs
│   │   │       │           ├── DbVector2.g.cs
│   │   │       │           ├── ExampleData.g.cs
│   │   │       │           ├── MyLog.g.cs
│   │   │       │           ├── MyTable.g.cs
│   │   │       │           ├── NullStringNonNullable.g.cs
│   │   │       │           ├── NullStringNullable.g.cs
│   │   │       │           ├── NullableVec.g.cs
│   │   │       │           ├── Player.g.cs
│   │   │       │           ├── PlayerAndLevel.g.cs
│   │   │       │           ├── PlayerLevel.g.cs
│   │   │       │           ├── RetryLog.g.cs
│   │   │       │           ├── ReturnEnum.g.cs
│   │   │       │           ├── ReturnStruct.g.cs
│   │   │       │           ├── Score.g.cs
│   │   │       │           ├── TestEvent.g.cs
│   │   │       │           ├── User.g.cs
│   │   │       │           ├── ViewPkMembership.g.cs
│   │   │       │           ├── ViewPkMembershipSecondary.g.cs
│   │   │       │           ├── ViewPkPlayer.g.cs
│   │   │       │           └── WhereTest.g.cs
│   │   │       ├── procedure-client/
│   │   │       │   ├── EqualityOperations.cs
│   │   │       │   ├── Program.cs
│   │   │       │   ├── README.md
│   │   │       │   ├── client.csproj
│   │   │       │   └── module_bindings/
│   │   │       │       ├── Procedures/
│   │   │       │       │   ├── InsertWithTxCommit.g.cs
│   │   │       │       │   ├── InsertWithTxRollback.g.cs
│   │   │       │       │   ├── InvalidRequest.g.cs
│   │   │       │       │   ├── ReadMySchema.g.cs
│   │   │       │       │   ├── ReturnEnumA.g.cs
│   │   │       │       │   ├── ReturnEnumB.g.cs
│   │   │       │       │   ├── ReturnPrimitive.g.cs
│   │   │       │       │   ├── ReturnStruct.g.cs
│   │   │       │       │   ├── SortedUuidsInsert.g.cs
│   │   │       │       │   └── WillPanic.g.cs
│   │   │       │       ├── Reducers/
│   │   │       │       │   └── ScheduleProc.g.cs
│   │   │       │       ├── SpacetimeDBClient.g.cs
│   │   │       │       ├── Tables/
│   │   │       │       │   ├── MyTable.g.cs
│   │   │       │       │   ├── PkUuid.g.cs
│   │   │       │       │   └── ProcInsertsInto.g.cs
│   │   │       │       └── Types/
│   │   │       │           ├── MyTable.g.cs
│   │   │       │           ├── PkUuid.g.cs
│   │   │       │           ├── ProcInsertsInto.g.cs
│   │   │       │           ├── ReturnEnum.g.cs
│   │   │       │           ├── ReturnStruct.g.cs
│   │   │       │           └── ScheduledProcTable.g.cs
│   │   │       ├── republishing/
│   │   │       │   ├── client/
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── client.csproj
│   │   │       │   │   └── module_bindings/
│   │   │       │   │       ├── Reducers/
│   │   │       │   │       │   └── Insert.g.cs
│   │   │       │   │       ├── SpacetimeDBClient.g.cs
│   │   │       │   │       ├── Tables/
│   │   │       │   │       │   └── ExampleData.g.cs
│   │   │       │   │       └── Types/
│   │   │       │   │           ├── ExampleData.g.cs
│   │   │       │   │           ├── MyEnum.g.cs
│   │   │       │   │           └── MyStruct.g.cs
│   │   │       │   ├── server-initial/
│   │   │       │   │   ├── .gitignore
│   │   │       │   │   ├── Lib.cs
│   │   │       │   │   └── StdbModule.csproj
│   │   │       │   └── server-republish/
│   │   │       │       ├── .gitignore
│   │   │       │       ├── Lib.cs
│   │   │       │       └── StdbModule.csproj
│   │   │       ├── server/
│   │   │       │   ├── .gitignore
│   │   │       │   ├── Lib.cs
│   │   │       │   └── StdbModule.csproj
│   │   │       └── shared/
│   │   │           └── RegressionTestHarness.cs
│   │   ├── logo.png.meta
│   │   ├── package.json
│   │   ├── package.json.meta
│   │   ├── packages/
│   │   │   └── .gitignore
│   │   ├── src/
│   │   │   ├── AuthToken.cs
│   │   │   ├── AuthToken.cs.meta
│   │   │   ├── BSATNHelpers.cs
│   │   │   ├── BSATNHelpers.cs.meta
│   │   │   ├── Compression.cs
│   │   │   ├── Compression.cs.meta
│   │   │   ├── CompressionHelpers.cs
│   │   │   ├── CompressionHelpers.cs.meta
│   │   │   ├── ConsoleLogger.cs
│   │   │   ├── ConsoleLogger.cs.meta
│   │   │   ├── Event.cs
│   │   │   ├── Event.cs.meta
│   │   │   ├── EventHandling/
│   │   │   │   ├── AbstractEventHandler.cs
│   │   │   │   ├── AbstractEventHandler.cs.meta
│   │   │   │   ├── EventListeners.cs
│   │   │   │   ├── EventListeners.cs.meta
│   │   │   │   ├── ListExtensions.cs
│   │   │   │   └── ListExtensions.cs.meta
│   │   │   ├── EventHandling.meta
│   │   │   ├── Exceptions.cs
│   │   │   ├── Exceptions.cs.meta
│   │   │   ├── ISpacetimeDBLogger.cs
│   │   │   ├── ISpacetimeDBLogger.cs.meta
│   │   │   ├── ListStream.cs
│   │   │   ├── ListStream.cs.meta
│   │   │   ├── MultiDictionary.cs
│   │   │   ├── MultiDictionary.cs.meta
│   │   │   ├── Plugins/
│   │   │   │   ├── WebSocket.jslib
│   │   │   │   └── WebSocket.jslib.meta
│   │   │   ├── Plugins.meta
│   │   │   ├── ProcedureCallbacks.cs
│   │   │   ├── ProcedureCallbacks.cs.meta
│   │   │   ├── RemoteTablesBase.cs
│   │   │   ├── RemoteTablesBase.cs.meta
│   │   │   ├── SpacetimeDB/
│   │   │   │   ├── ClientApi/
│   │   │   │   │   ├── BsatnRowList.g.cs
│   │   │   │   │   ├── BsatnRowList.g.cs.meta
│   │   │   │   │   ├── CallProcedure.g.cs
│   │   │   │   │   ├── CallProcedure.g.cs.meta
│   │   │   │   │   ├── CallReducer.g.cs
│   │   │   │   │   ├── CallReducer.g.cs.meta
│   │   │   │   │   ├── ClientMessage.g.cs
│   │   │   │   │   ├── ClientMessage.g.cs.meta
│   │   │   │   │   ├── EnergyQuanta.g.cs
│   │   │   │   │   ├── EnergyQuanta.g.cs.meta
│   │   │   │   │   ├── EventTableRows.g.cs
│   │   │   │   │   ├── EventTableRows.g.cs.meta
│   │   │   │   │   ├── InitialConnection.g.cs
│   │   │   │   │   ├── InitialConnection.g.cs.meta
│   │   │   │   │   ├── OneOffQuery.g.cs
│   │   │   │   │   ├── OneOffQuery.g.cs.meta
│   │   │   │   │   ├── OneOffQueryResult.g.cs
│   │   │   │   │   ├── OneOffQueryResult.g.cs.meta
│   │   │   │   │   ├── PersistentTableRows.g.cs
│   │   │   │   │   ├── PersistentTableRows.g.cs.meta
│   │   │   │   │   ├── ProcedureResult.g.cs
│   │   │   │   │   ├── ProcedureResult.g.cs.meta
│   │   │   │   │   ├── ProcedureStatus.g.cs
│   │   │   │   │   ├── ProcedureStatus.g.cs.meta
│   │   │   │   │   ├── QueryRows.g.cs
│   │   │   │   │   ├── QueryRows.g.cs.meta
│   │   │   │   │   ├── QuerySetId.g.cs
│   │   │   │   │   ├── QuerySetId.g.cs.meta
│   │   │   │   │   ├── QuerySetUpdate.g.cs
│   │   │   │   │   ├── QuerySetUpdate.g.cs.meta
│   │   │   │   │   ├── ReducerCallInfo.g.cs
│   │   │   │   │   ├── ReducerCallInfo.g.cs.meta
│   │   │   │   │   ├── ReducerOk.g.cs
│   │   │   │   │   ├── ReducerOk.g.cs.meta
│   │   │   │   │   ├── ReducerOutcome.g.cs
│   │   │   │   │   ├── ReducerOutcome.g.cs.meta
│   │   │   │   │   ├── ReducerResult.g.cs
│   │   │   │   │   ├── ReducerResult.g.cs.meta
│   │   │   │   │   ├── RowSizeHint.g.cs
│   │   │   │   │   ├── RowSizeHint.g.cs.meta
│   │   │   │   │   ├── ServerMessage.g.cs
│   │   │   │   │   ├── ServerMessage.g.cs.meta
│   │   │   │   │   ├── SingleTableRows.g.cs
│   │   │   │   │   ├── SingleTableRows.g.cs.meta
│   │   │   │   │   ├── Subscribe.g.cs
│   │   │   │   │   ├── Subscribe.g.cs.meta
│   │   │   │   │   ├── SubscribeApplied.g.cs
│   │   │   │   │   ├── SubscribeApplied.g.cs.meta
│   │   │   │   │   ├── SubscriptionError.g.cs
│   │   │   │   │   ├── SubscriptionError.g.cs.meta
│   │   │   │   │   ├── TableUpdate.g.cs
│   │   │   │   │   ├── TableUpdate.g.cs.meta
│   │   │   │   │   ├── TableUpdateRows.g.cs
│   │   │   │   │   ├── TableUpdateRows.g.cs.meta
│   │   │   │   │   ├── TransactionUpdate.g.cs
│   │   │   │   │   ├── TransactionUpdate.g.cs.meta
│   │   │   │   │   ├── Unsubscribe.g.cs
│   │   │   │   │   ├── Unsubscribe.g.cs.meta
│   │   │   │   │   ├── UnsubscribeApplied.g.cs
│   │   │   │   │   ├── UnsubscribeApplied.g.cs.meta
│   │   │   │   │   ├── UnsubscribeFlags.g.cs
│   │   │   │   │   └── UnsubscribeFlags.g.cs.meta
│   │   │   │   └── ClientApi.meta
│   │   │   ├── SpacetimeDB.meta
│   │   │   ├── SpacetimeDBClient.cs
│   │   │   ├── SpacetimeDBClient.cs.meta
│   │   │   ├── SpacetimeDBNetworkManager.cs
│   │   │   ├── SpacetimeDBNetworkManager.cs.meta
│   │   │   ├── Stats.cs
│   │   │   ├── Stats.cs.meta
│   │   │   ├── Table.cs
│   │   │   ├── Table.cs.meta
│   │   │   ├── UnityDebugLogger.cs
│   │   │   ├── UnityDebugLogger.cs.meta
│   │   │   ├── Utils.cs
│   │   │   ├── Utils.cs.meta
│   │   │   ├── WebSocket.cs
│   │   │   ├── WebSocket.cs.meta
│   │   │   ├── com.clockworklabs.spacetimedbsdk.asmdef
│   │   │   ├── com.clockworklabs.spacetimedbsdk.asmdef.meta
│   │   │   ├── csc.rsp
│   │   │   └── csc.rsp.meta
│   │   ├── src.meta
│   │   ├── tests~/
│   │   │   ├── MultiDictionaryTests.cs
│   │   │   ├── QueryBuilderTests.cs
│   │   │   ├── README.md
│   │   │   ├── SnapshotTests.VerifySampleDump_dumpName=LegacySubscribeAll.verified.txt
│   │   │   ├── SnapshotTests.VerifySampleDump_dumpName=SubscribeApplied.verified.txt
│   │   │   ├── SnapshotTests.cs
│   │   │   ├── Tests.cs
│   │   │   ├── VerifyInit.cs
│   │   │   └── tests.csproj
│   │   ├── tools~/
│   │   │   ├── gen-client-api.bat
│   │   │   ├── gen-client-api.sh
│   │   │   ├── gen-quickstart.sh
│   │   │   ├── gen-regression-tests.sh
│   │   │   ├── run-regression-tests.sh
│   │   │   ├── update-against-stdb.sh
│   │   │   ├── upgrade-version.py
│   │   │   └── write-nuget-config.sh
│   │   └── unity-meta-skeleton~/
│   │       ├── spacetimedb.bsatn.runtime/
│   │       │   ├── analyzers/
│   │       │   │   ├── dotnet/
│   │       │   │   │   ├── cs/
│   │       │   │   │   │   └── SpacetimeDB.BSATN.Codegen.dll.meta
│   │       │   │   │   └── cs.meta
│   │       │   │   └── dotnet.meta
│   │       │   ├── analyzers.meta
│   │       │   ├── lib/
│   │       │   │   ├── net8.0/
│   │       │   │   │   └── SpacetimeDB.BSATN.Runtime.dll.meta
│   │       │   │   ├── net8.0.meta
│   │       │   │   ├── netstandard2.1/
│   │       │   │   │   └── SpacetimeDB.BSATN.Runtime.dll.meta
│   │       │   │   └── netstandard2.1.meta
│   │       │   ├── lib.meta
│   │       │   └── version.meta
│   │       ├── spacetimedb.bsatn.runtime.meta
│   │       ├── spacetimedb.runtime/
│   │       │   ├── analyzers/
│   │       │   │   ├── dotnet/
│   │       │   │   │   ├── cs/
│   │       │   │   │   │   └── SpacetimeDB.Codegen.dll.meta
│   │       │   │   │   └── cs.meta
│   │       │   │   └── dotnet.meta
│   │       │   ├── analyzers.meta
│   │       │   ├── lib/
│   │       │   │   └── net8.0.meta
│   │       │   ├── lib.meta
│   │       │   └── version.meta
│   │       └── spacetimedb.runtime.meta
│   ├── rust/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── callbacks.rs
│   │   │   ├── client_cache.rs
│   │   │   ├── compression.rs
│   │   │   ├── credentials.rs
│   │   │   ├── db_connection.rs
│   │   │   ├── db_context.rs
│   │   │   ├── error.rs
│   │   │   ├── event.rs
│   │   │   ├── lib.rs
│   │   │   ├── metrics.rs
│   │   │   ├── spacetime_module.rs
│   │   │   ├── subscription.rs
│   │   │   ├── table.rs
│   │   │   └── websocket.rs
│   │   └── tests/
│   │       ├── connect_disconnect_client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── connected_table.rs
│   │       │           ├── connected_type.rs
│   │       │           ├── disconnected_table.rs
│   │       │           ├── disconnected_type.rs
│   │       │           ├── identity_connected_reducer.rs
│   │       │           ├── identity_disconnected_reducer.rs
│   │       │           └── mod.rs
│   │       ├── event-table-client/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── emit_multiple_test_events_reducer.rs
│   │       │           ├── emit_test_event_reducer.rs
│   │       │           ├── mod.rs
│   │       │           ├── noop_reducer.rs
│   │       │           ├── test_event_table.rs
│   │       │           └── test_event_type.rs
│   │       ├── procedure-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── insert_with_tx_commit_procedure.rs
│   │       │           ├── insert_with_tx_rollback_procedure.rs
│   │       │           ├── invalid_request_procedure.rs
│   │       │           ├── mod.rs
│   │       │           ├── my_table_table.rs
│   │       │           ├── my_table_type.rs
│   │       │           ├── pk_uuid_table.rs
│   │       │           ├── pk_uuid_type.rs
│   │       │           ├── proc_inserts_into_table.rs
│   │       │           ├── proc_inserts_into_type.rs
│   │       │           ├── read_my_schema_procedure.rs
│   │       │           ├── return_enum_a_procedure.rs
│   │       │           ├── return_enum_b_procedure.rs
│   │       │           ├── return_enum_type.rs
│   │       │           ├── return_primitive_procedure.rs
│   │       │           ├── return_struct_procedure.rs
│   │       │           ├── return_struct_type.rs
│   │       │           ├── schedule_proc_reducer.rs
│   │       │           ├── scheduled_proc_procedure.rs
│   │       │           ├── scheduled_proc_table_table.rs
│   │       │           ├── scheduled_proc_table_type.rs
│   │       │           ├── sorted_uuids_insert_procedure.rs
│   │       │           └── will_panic_procedure.rs
│   │       ├── test-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       ├── module_bindings/
│   │       │       │   ├── b_tree_u_32_type.rs
│   │       │       │   ├── btree_u_32_table.rs
│   │       │       │   ├── byte_struct_type.rs
│   │       │       │   ├── delete_from_btree_u_32_reducer.rs
│   │       │       │   ├── delete_large_table_reducer.rs
│   │       │       │   ├── delete_pk_bool_reducer.rs
│   │       │       │   ├── delete_pk_connection_id_reducer.rs
│   │       │       │   ├── delete_pk_i_128_reducer.rs
│   │       │       │   ├── delete_pk_i_16_reducer.rs
│   │       │       │   ├── delete_pk_i_256_reducer.rs
│   │       │       │   ├── delete_pk_i_32_reducer.rs
│   │       │       │   ├── delete_pk_i_64_reducer.rs
│   │       │       │   ├── delete_pk_i_8_reducer.rs
│   │       │       │   ├── delete_pk_identity_reducer.rs
│   │       │       │   ├── delete_pk_string_reducer.rs
│   │       │       │   ├── delete_pk_u_128_reducer.rs
│   │       │       │   ├── delete_pk_u_16_reducer.rs
│   │       │       │   ├── delete_pk_u_256_reducer.rs
│   │       │       │   ├── delete_pk_u_32_insert_pk_u_32_two_reducer.rs
│   │       │       │   ├── delete_pk_u_32_reducer.rs
│   │       │       │   ├── delete_pk_u_32_two_reducer.rs
│   │       │       │   ├── delete_pk_u_64_reducer.rs
│   │       │       │   ├── delete_pk_u_8_reducer.rs
│   │       │       │   ├── delete_pk_uuid_reducer.rs
│   │       │       │   ├── delete_unique_bool_reducer.rs
│   │       │       │   ├── delete_unique_connection_id_reducer.rs
│   │       │       │   ├── delete_unique_i_128_reducer.rs
│   │       │       │   ├── delete_unique_i_16_reducer.rs
│   │       │       │   ├── delete_unique_i_256_reducer.rs
│   │       │       │   ├── delete_unique_i_32_reducer.rs
│   │       │       │   ├── delete_unique_i_64_reducer.rs
│   │       │       │   ├── delete_unique_i_8_reducer.rs
│   │       │       │   ├── delete_unique_identity_reducer.rs
│   │       │       │   ├── delete_unique_string_reducer.rs
│   │       │       │   ├── delete_unique_u_128_reducer.rs
│   │       │       │   ├── delete_unique_u_16_reducer.rs
│   │       │       │   ├── delete_unique_u_256_reducer.rs
│   │       │       │   ├── delete_unique_u_32_reducer.rs
│   │       │       │   ├── delete_unique_u_64_reducer.rs
│   │       │       │   ├── delete_unique_u_8_reducer.rs
│   │       │       │   ├── delete_unique_uuid_reducer.rs
│   │       │       │   ├── enum_with_payload_type.rs
│   │       │       │   ├── every_primitive_struct_type.rs
│   │       │       │   ├── every_vec_struct_type.rs
│   │       │       │   ├── indexed_simple_enum_table.rs
│   │       │       │   ├── indexed_simple_enum_type.rs
│   │       │       │   ├── indexed_table_2_table.rs
│   │       │       │   ├── indexed_table_2_type.rs
│   │       │       │   ├── indexed_table_table.rs
│   │       │       │   ├── indexed_table_type.rs
│   │       │       │   ├── insert_call_timestamp_reducer.rs
│   │       │       │   ├── insert_call_uuid_v_4_reducer.rs
│   │       │       │   ├── insert_call_uuid_v_7_reducer.rs
│   │       │       │   ├── insert_caller_one_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_one_identity_reducer.rs
│   │       │       │   ├── insert_caller_pk_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_pk_identity_reducer.rs
│   │       │       │   ├── insert_caller_unique_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_unique_identity_reducer.rs
│   │       │       │   ├── insert_caller_vec_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_vec_identity_reducer.rs
│   │       │       │   ├── insert_into_btree_u_32_reducer.rs
│   │       │       │   ├── insert_into_indexed_simple_enum_reducer.rs
│   │       │       │   ├── insert_into_pk_btree_u_32_reducer.rs
│   │       │       │   ├── insert_large_table_reducer.rs
│   │       │       │   ├── insert_one_bool_reducer.rs
│   │       │       │   ├── insert_one_byte_struct_reducer.rs
│   │       │       │   ├── insert_one_connection_id_reducer.rs
│   │       │       │   ├── insert_one_enum_with_payload_reducer.rs
│   │       │       │   ├── insert_one_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_one_every_vec_struct_reducer.rs
│   │       │       │   ├── insert_one_f_32_reducer.rs
│   │       │       │   ├── insert_one_f_64_reducer.rs
│   │       │       │   ├── insert_one_i_128_reducer.rs
│   │       │       │   ├── insert_one_i_16_reducer.rs
│   │       │       │   ├── insert_one_i_256_reducer.rs
│   │       │       │   ├── insert_one_i_32_reducer.rs
│   │       │       │   ├── insert_one_i_64_reducer.rs
│   │       │       │   ├── insert_one_i_8_reducer.rs
│   │       │       │   ├── insert_one_identity_reducer.rs
│   │       │       │   ├── insert_one_simple_enum_reducer.rs
│   │       │       │   ├── insert_one_string_reducer.rs
│   │       │       │   ├── insert_one_timestamp_reducer.rs
│   │       │       │   ├── insert_one_u_128_reducer.rs
│   │       │       │   ├── insert_one_u_16_reducer.rs
│   │       │       │   ├── insert_one_u_256_reducer.rs
│   │       │       │   ├── insert_one_u_32_reducer.rs
│   │       │       │   ├── insert_one_u_64_reducer.rs
│   │       │       │   ├── insert_one_u_8_reducer.rs
│   │       │       │   ├── insert_one_unit_struct_reducer.rs
│   │       │       │   ├── insert_one_uuid_reducer.rs
│   │       │       │   ├── insert_option_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_option_i_32_reducer.rs
│   │       │       │   ├── insert_option_identity_reducer.rs
│   │       │       │   ├── insert_option_simple_enum_reducer.rs
│   │       │       │   ├── insert_option_string_reducer.rs
│   │       │       │   ├── insert_option_uuid_reducer.rs
│   │       │       │   ├── insert_option_vec_option_i_32_reducer.rs
│   │       │       │   ├── insert_pk_bool_reducer.rs
│   │       │       │   ├── insert_pk_connection_id_reducer.rs
│   │       │       │   ├── insert_pk_i_128_reducer.rs
│   │       │       │   ├── insert_pk_i_16_reducer.rs
│   │       │       │   ├── insert_pk_i_256_reducer.rs
│   │       │       │   ├── insert_pk_i_32_reducer.rs
│   │       │       │   ├── insert_pk_i_64_reducer.rs
│   │       │       │   ├── insert_pk_i_8_reducer.rs
│   │       │       │   ├── insert_pk_identity_reducer.rs
│   │       │       │   ├── insert_pk_simple_enum_reducer.rs
│   │       │       │   ├── insert_pk_string_reducer.rs
│   │       │       │   ├── insert_pk_u_128_reducer.rs
│   │       │       │   ├── insert_pk_u_16_reducer.rs
│   │       │       │   ├── insert_pk_u_256_reducer.rs
│   │       │       │   ├── insert_pk_u_32_reducer.rs
│   │       │       │   ├── insert_pk_u_32_two_reducer.rs
│   │       │       │   ├── insert_pk_u_64_reducer.rs
│   │       │       │   ├── insert_pk_u_8_reducer.rs
│   │       │       │   ├── insert_pk_uuid_reducer.rs
│   │       │       │   ├── insert_primitives_as_strings_reducer.rs
│   │       │       │   ├── insert_result_every_primitive_struct_string_reducer.rs
│   │       │       │   ├── insert_result_i_32_string_reducer.rs
│   │       │       │   ├── insert_result_identity_string_reducer.rs
│   │       │       │   ├── insert_result_simple_enum_i_32_reducer.rs
│   │       │       │   ├── insert_result_string_i_32_reducer.rs
│   │       │       │   ├── insert_result_vec_i_32_string_reducer.rs
│   │       │       │   ├── insert_table_holds_table_reducer.rs
│   │       │       │   ├── insert_unique_bool_reducer.rs
│   │       │       │   ├── insert_unique_connection_id_reducer.rs
│   │       │       │   ├── insert_unique_i_128_reducer.rs
│   │       │       │   ├── insert_unique_i_16_reducer.rs
│   │       │       │   ├── insert_unique_i_256_reducer.rs
│   │       │       │   ├── insert_unique_i_32_reducer.rs
│   │       │       │   ├── insert_unique_i_64_reducer.rs
│   │       │       │   ├── insert_unique_i_8_reducer.rs
│   │       │       │   ├── insert_unique_identity_reducer.rs
│   │       │       │   ├── insert_unique_string_reducer.rs
│   │       │       │   ├── insert_unique_u_128_reducer.rs
│   │       │       │   ├── insert_unique_u_16_reducer.rs
│   │       │       │   ├── insert_unique_u_256_reducer.rs
│   │       │       │   ├── insert_unique_u_32_reducer.rs
│   │       │       │   ├── insert_unique_u_32_update_pk_u_32_reducer.rs
│   │       │       │   ├── insert_unique_u_64_reducer.rs
│   │       │       │   ├── insert_unique_u_8_reducer.rs
│   │       │       │   ├── insert_unique_uuid_reducer.rs
│   │       │       │   ├── insert_user_reducer.rs
│   │       │       │   ├── insert_vec_bool_reducer.rs
│   │       │       │   ├── insert_vec_byte_struct_reducer.rs
│   │       │       │   ├── insert_vec_connection_id_reducer.rs
│   │       │       │   ├── insert_vec_enum_with_payload_reducer.rs
│   │       │       │   ├── insert_vec_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_vec_every_vec_struct_reducer.rs
│   │       │       │   ├── insert_vec_f_32_reducer.rs
│   │       │       │   ├── insert_vec_f_64_reducer.rs
│   │       │       │   ├── insert_vec_i_128_reducer.rs
│   │       │       │   ├── insert_vec_i_16_reducer.rs
│   │       │       │   ├── insert_vec_i_256_reducer.rs
│   │       │       │   ├── insert_vec_i_32_reducer.rs
│   │       │       │   ├── insert_vec_i_64_reducer.rs
│   │       │       │   ├── insert_vec_i_8_reducer.rs
│   │       │       │   ├── insert_vec_identity_reducer.rs
│   │       │       │   ├── insert_vec_simple_enum_reducer.rs
│   │       │       │   ├── insert_vec_string_reducer.rs
│   │       │       │   ├── insert_vec_timestamp_reducer.rs
│   │       │       │   ├── insert_vec_u_128_reducer.rs
│   │       │       │   ├── insert_vec_u_16_reducer.rs
│   │       │       │   ├── insert_vec_u_256_reducer.rs
│   │       │       │   ├── insert_vec_u_32_reducer.rs
│   │       │       │   ├── insert_vec_u_64_reducer.rs
│   │       │       │   ├── insert_vec_u_8_reducer.rs
│   │       │       │   ├── insert_vec_unit_struct_reducer.rs
│   │       │       │   ├── insert_vec_uuid_reducer.rs
│   │       │       │   ├── large_table_table.rs
│   │       │       │   ├── large_table_type.rs
│   │       │       │   ├── mod.rs
│   │       │       │   ├── no_op_succeeds_reducer.rs
│   │       │       │   ├── one_bool_table.rs
│   │       │       │   ├── one_bool_type.rs
│   │       │       │   ├── one_byte_struct_table.rs
│   │       │       │   ├── one_byte_struct_type.rs
│   │       │       │   ├── one_connection_id_table.rs
│   │       │       │   ├── one_connection_id_type.rs
│   │       │       │   ├── one_enum_with_payload_table.rs
│   │       │       │   ├── one_enum_with_payload_type.rs
│   │       │       │   ├── one_every_primitive_struct_table.rs
│   │       │       │   ├── one_every_primitive_struct_type.rs
│   │       │       │   ├── one_every_vec_struct_table.rs
│   │       │       │   ├── one_every_vec_struct_type.rs
│   │       │       │   ├── one_f_32_table.rs
│   │       │       │   ├── one_f_32_type.rs
│   │       │       │   ├── one_f_64_table.rs
│   │       │       │   ├── one_f_64_type.rs
│   │       │       │   ├── one_i_128_table.rs
│   │       │       │   ├── one_i_128_type.rs
│   │       │       │   ├── one_i_16_table.rs
│   │       │       │   ├── one_i_16_type.rs
│   │       │       │   ├── one_i_256_table.rs
│   │       │       │   ├── one_i_256_type.rs
│   │       │       │   ├── one_i_32_table.rs
│   │       │       │   ├── one_i_32_type.rs
│   │       │       │   ├── one_i_64_table.rs
│   │       │       │   ├── one_i_64_type.rs
│   │       │       │   ├── one_i_8_table.rs
│   │       │       │   ├── one_i_8_type.rs
│   │       │       │   ├── one_identity_table.rs
│   │       │       │   ├── one_identity_type.rs
│   │       │       │   ├── one_simple_enum_table.rs
│   │       │       │   ├── one_simple_enum_type.rs
│   │       │       │   ├── one_string_table.rs
│   │       │       │   ├── one_string_type.rs
│   │       │       │   ├── one_timestamp_table.rs
│   │       │       │   ├── one_timestamp_type.rs
│   │       │       │   ├── one_u_128_table.rs
│   │       │       │   ├── one_u_128_type.rs
│   │       │       │   ├── one_u_16_table.rs
│   │       │       │   ├── one_u_16_type.rs
│   │       │       │   ├── one_u_256_table.rs
│   │       │       │   ├── one_u_256_type.rs
│   │       │       │   ├── one_u_32_table.rs
│   │       │       │   ├── one_u_32_type.rs
│   │       │       │   ├── one_u_64_table.rs
│   │       │       │   ├── one_u_64_type.rs
│   │       │       │   ├── one_u_8_table.rs
│   │       │       │   ├── one_u_8_type.rs
│   │       │       │   ├── one_unit_struct_table.rs
│   │       │       │   ├── one_unit_struct_type.rs
│   │       │       │   ├── one_uuid_table.rs
│   │       │       │   ├── one_uuid_type.rs
│   │       │       │   ├── option_every_primitive_struct_table.rs
│   │       │       │   ├── option_every_primitive_struct_type.rs
│   │       │       │   ├── option_i_32_table.rs
│   │       │       │   ├── option_i_32_type.rs
│   │       │       │   ├── option_identity_table.rs
│   │       │       │   ├── option_identity_type.rs
│   │       │       │   ├── option_simple_enum_table.rs
│   │       │       │   ├── option_simple_enum_type.rs
│   │       │       │   ├── option_string_table.rs
│   │       │       │   ├── option_string_type.rs
│   │       │       │   ├── option_uuid_table.rs
│   │       │       │   ├── option_uuid_type.rs
│   │       │       │   ├── option_vec_option_i_32_table.rs
│   │       │       │   ├── option_vec_option_i_32_type.rs
│   │       │       │   ├── pk_bool_table.rs
│   │       │       │   ├── pk_bool_type.rs
│   │       │       │   ├── pk_connection_id_table.rs
│   │       │       │   ├── pk_connection_id_type.rs
│   │       │       │   ├── pk_i_128_table.rs
│   │       │       │   ├── pk_i_128_type.rs
│   │       │       │   ├── pk_i_16_table.rs
│   │       │       │   ├── pk_i_16_type.rs
│   │       │       │   ├── pk_i_256_table.rs
│   │       │       │   ├── pk_i_256_type.rs
│   │       │       │   ├── pk_i_32_table.rs
│   │       │       │   ├── pk_i_32_type.rs
│   │       │       │   ├── pk_i_64_table.rs
│   │       │       │   ├── pk_i_64_type.rs
│   │       │       │   ├── pk_i_8_table.rs
│   │       │       │   ├── pk_i_8_type.rs
│   │       │       │   ├── pk_identity_table.rs
│   │       │       │   ├── pk_identity_type.rs
│   │       │       │   ├── pk_simple_enum_table.rs
│   │       │       │   ├── pk_simple_enum_type.rs
│   │       │       │   ├── pk_string_table.rs
│   │       │       │   ├── pk_string_type.rs
│   │       │       │   ├── pk_u_128_table.rs
│   │       │       │   ├── pk_u_128_type.rs
│   │       │       │   ├── pk_u_16_table.rs
│   │       │       │   ├── pk_u_16_type.rs
│   │       │       │   ├── pk_u_256_table.rs
│   │       │       │   ├── pk_u_256_type.rs
│   │       │       │   ├── pk_u_32_table.rs
│   │       │       │   ├── pk_u_32_two_table.rs
│   │       │       │   ├── pk_u_32_two_type.rs
│   │       │       │   ├── pk_u_32_type.rs
│   │       │       │   ├── pk_u_64_table.rs
│   │       │       │   ├── pk_u_64_type.rs
│   │       │       │   ├── pk_u_8_table.rs
│   │       │       │   ├── pk_u_8_type.rs
│   │       │       │   ├── pk_uuid_table.rs
│   │       │       │   ├── pk_uuid_type.rs
│   │       │       │   ├── result_every_primitive_struct_string_table.rs
│   │       │       │   ├── result_every_primitive_struct_string_type.rs
│   │       │       │   ├── result_i_32_string_table.rs
│   │       │       │   ├── result_i_32_string_type.rs
│   │       │       │   ├── result_identity_string_table.rs
│   │       │       │   ├── result_identity_string_type.rs
│   │       │       │   ├── result_simple_enum_i_32_table.rs
│   │       │       │   ├── result_simple_enum_i_32_type.rs
│   │       │       │   ├── result_string_i_32_table.rs
│   │       │       │   ├── result_string_i_32_type.rs
│   │       │       │   ├── result_vec_i_32_string_table.rs
│   │       │       │   ├── result_vec_i_32_string_type.rs
│   │       │       │   ├── scheduled_table_table.rs
│   │       │       │   ├── scheduled_table_type.rs
│   │       │       │   ├── send_scheduled_message_reducer.rs
│   │       │       │   ├── simple_enum_type.rs
│   │       │       │   ├── sorted_uuids_insert_reducer.rs
│   │       │       │   ├── table_holds_table_table.rs
│   │       │       │   ├── table_holds_table_type.rs
│   │       │       │   ├── unique_bool_table.rs
│   │       │       │   ├── unique_bool_type.rs
│   │       │       │   ├── unique_connection_id_table.rs
│   │       │       │   ├── unique_connection_id_type.rs
│   │       │       │   ├── unique_i_128_table.rs
│   │       │       │   ├── unique_i_128_type.rs
│   │       │       │   ├── unique_i_16_table.rs
│   │       │       │   ├── unique_i_16_type.rs
│   │       │       │   ├── unique_i_256_table.rs
│   │       │       │   ├── unique_i_256_type.rs
│   │       │       │   ├── unique_i_32_table.rs
│   │       │       │   ├── unique_i_32_type.rs
│   │       │       │   ├── unique_i_64_table.rs
│   │       │       │   ├── unique_i_64_type.rs
│   │       │       │   ├── unique_i_8_table.rs
│   │       │       │   ├── unique_i_8_type.rs
│   │       │       │   ├── unique_identity_table.rs
│   │       │       │   ├── unique_identity_type.rs
│   │       │       │   ├── unique_string_table.rs
│   │       │       │   ├── unique_string_type.rs
│   │       │       │   ├── unique_u_128_table.rs
│   │       │       │   ├── unique_u_128_type.rs
│   │       │       │   ├── unique_u_16_table.rs
│   │       │       │   ├── unique_u_16_type.rs
│   │       │       │   ├── unique_u_256_table.rs
│   │       │       │   ├── unique_u_256_type.rs
│   │       │       │   ├── unique_u_32_table.rs
│   │       │       │   ├── unique_u_32_type.rs
│   │       │       │   ├── unique_u_64_table.rs
│   │       │       │   ├── unique_u_64_type.rs
│   │       │       │   ├── unique_u_8_table.rs
│   │       │       │   ├── unique_u_8_type.rs
│   │       │       │   ├── unique_uuid_table.rs
│   │       │       │   ├── unique_uuid_type.rs
│   │       │       │   ├── unit_struct_type.rs
│   │       │       │   ├── update_indexed_simple_enum_reducer.rs
│   │       │       │   ├── update_pk_bool_reducer.rs
│   │       │       │   ├── update_pk_connection_id_reducer.rs
│   │       │       │   ├── update_pk_i_128_reducer.rs
│   │       │       │   ├── update_pk_i_16_reducer.rs
│   │       │       │   ├── update_pk_i_256_reducer.rs
│   │       │       │   ├── update_pk_i_32_reducer.rs
│   │       │       │   ├── update_pk_i_64_reducer.rs
│   │       │       │   ├── update_pk_i_8_reducer.rs
│   │       │       │   ├── update_pk_identity_reducer.rs
│   │       │       │   ├── update_pk_simple_enum_reducer.rs
│   │       │       │   ├── update_pk_string_reducer.rs
│   │       │       │   ├── update_pk_u_128_reducer.rs
│   │       │       │   ├── update_pk_u_16_reducer.rs
│   │       │       │   ├── update_pk_u_256_reducer.rs
│   │       │       │   ├── update_pk_u_32_reducer.rs
│   │       │       │   ├── update_pk_u_32_two_reducer.rs
│   │       │       │   ├── update_pk_u_64_reducer.rs
│   │       │       │   ├── update_pk_u_8_reducer.rs
│   │       │       │   ├── update_pk_uuid_reducer.rs
│   │       │       │   ├── update_unique_bool_reducer.rs
│   │       │       │   ├── update_unique_connection_id_reducer.rs
│   │       │       │   ├── update_unique_i_128_reducer.rs
│   │       │       │   ├── update_unique_i_16_reducer.rs
│   │       │       │   ├── update_unique_i_256_reducer.rs
│   │       │       │   ├── update_unique_i_32_reducer.rs
│   │       │       │   ├── update_unique_i_64_reducer.rs
│   │       │       │   ├── update_unique_i_8_reducer.rs
│   │       │       │   ├── update_unique_identity_reducer.rs
│   │       │       │   ├── update_unique_string_reducer.rs
│   │       │       │   ├── update_unique_u_128_reducer.rs
│   │       │       │   ├── update_unique_u_16_reducer.rs
│   │       │       │   ├── update_unique_u_256_reducer.rs
│   │       │       │   ├── update_unique_u_32_reducer.rs
│   │       │       │   ├── update_unique_u_64_reducer.rs
│   │       │       │   ├── update_unique_u_8_reducer.rs
│   │       │       │   ├── update_unique_uuid_reducer.rs
│   │       │       │   ├── users_table.rs
│   │       │       │   ├── users_type.rs
│   │       │       │   ├── vec_bool_table.rs
│   │       │       │   ├── vec_bool_type.rs
│   │       │       │   ├── vec_byte_struct_table.rs
│   │       │       │   ├── vec_byte_struct_type.rs
│   │       │       │   ├── vec_connection_id_table.rs
│   │       │       │   ├── vec_connection_id_type.rs
│   │       │       │   ├── vec_enum_with_payload_table.rs
│   │       │       │   ├── vec_enum_with_payload_type.rs
│   │       │       │   ├── vec_every_primitive_struct_table.rs
│   │       │       │   ├── vec_every_primitive_struct_type.rs
│   │       │       │   ├── vec_every_vec_struct_table.rs
│   │       │       │   ├── vec_every_vec_struct_type.rs
│   │       │       │   ├── vec_f_32_table.rs
│   │       │       │   ├── vec_f_32_type.rs
│   │       │       │   ├── vec_f_64_table.rs
│   │       │       │   ├── vec_f_64_type.rs
│   │       │       │   ├── vec_i_128_table.rs
│   │       │       │   ├── vec_i_128_type.rs
│   │       │       │   ├── vec_i_16_table.rs
│   │       │       │   ├── vec_i_16_type.rs
│   │       │       │   ├── vec_i_256_table.rs
│   │       │       │   ├── vec_i_256_type.rs
│   │       │       │   ├── vec_i_32_table.rs
│   │       │       │   ├── vec_i_32_type.rs
│   │       │       │   ├── vec_i_64_table.rs
│   │       │       │   ├── vec_i_64_type.rs
│   │       │       │   ├── vec_i_8_table.rs
│   │       │       │   ├── vec_i_8_type.rs
│   │       │       │   ├── vec_identity_table.rs
│   │       │       │   ├── vec_identity_type.rs
│   │       │       │   ├── vec_simple_enum_table.rs
│   │       │       │   ├── vec_simple_enum_type.rs
│   │       │       │   ├── vec_string_table.rs
│   │       │       │   ├── vec_string_type.rs
│   │       │       │   ├── vec_timestamp_table.rs
│   │       │       │   ├── vec_timestamp_type.rs
│   │       │       │   ├── vec_u_128_table.rs
│   │       │       │   ├── vec_u_128_type.rs
│   │       │       │   ├── vec_u_16_table.rs
│   │       │       │   ├── vec_u_16_type.rs
│   │       │       │   ├── vec_u_256_table.rs
│   │       │       │   ├── vec_u_256_type.rs
│   │       │       │   ├── vec_u_32_table.rs
│   │       │       │   ├── vec_u_32_type.rs
│   │       │       │   ├── vec_u_64_table.rs
│   │       │       │   ├── vec_u_64_type.rs
│   │       │       │   ├── vec_u_8_table.rs
│   │       │       │   ├── vec_u_8_type.rs
│   │       │       │   ├── vec_unit_struct_table.rs
│   │       │       │   ├── vec_unit_struct_type.rs
│   │       │       │   ├── vec_uuid_table.rs
│   │       │       │   └── vec_uuid_type.rs
│   │       │       ├── pk_test_table.rs
│   │       │       ├── simple_test_table.rs
│   │       │       └── unique_test_table.rs
│   │       ├── test-counter/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── test.rs
│   │       ├── view-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── delete_player_reducer.rs
│   │       │           ├── insert_player_reducer.rs
│   │       │           ├── mod.rs
│   │       │           ├── move_player_reducer.rs
│   │       │           ├── my_player_and_level_table.rs
│   │       │           ├── my_player_table.rs
│   │       │           ├── nearby_players_table.rs
│   │       │           ├── player_and_level_type.rs
│   │       │           ├── player_level_table.rs
│   │       │           ├── player_level_type.rs
│   │       │           ├── player_location_table.rs
│   │       │           ├── player_location_type.rs
│   │       │           ├── player_table.rs
│   │       │           ├── player_type.rs
│   │       │           └── players_at_level_0_table.rs
│   │       └── view-pk-client/
│   │           ├── Cargo.toml
│   │           ├── README.md
│   │           └── src/
│   │               ├── main.rs
│   │               └── module_bindings/
│   │                   ├── all_view_pk_players_table.rs
│   │                   ├── insert_view_pk_membership_reducer.rs
│   │                   ├── insert_view_pk_membership_secondary_reducer.rs
│   │                   ├── insert_view_pk_player_reducer.rs
│   │                   ├── mod.rs
│   │                   ├── sender_view_pk_players_a_table.rs
│   │                   ├── sender_view_pk_players_b_table.rs
│   │                   ├── update_view_pk_player_reducer.rs
│   │                   ├── view_pk_membership_secondary_table.rs
│   │                   ├── view_pk_membership_secondary_type.rs
│   │                   ├── view_pk_membership_table.rs
│   │                   ├── view_pk_membership_type.rs
│   │                   ├── view_pk_player_table.rs
│   │                   └── view_pk_player_type.rs
│   └── unreal/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── DEVELOP.md
│       ├── README.md
│       ├── examples/
│       │   ├── QuickstartChat/
│       │   │   ├── .vsconfig
│       │   │   ├── Config/
│       │   │   │   ├── DefaultEditor.ini
│       │   │   │   ├── DefaultEngine.ini
│       │   │   │   ├── DefaultGame.ini
│       │   │   │   └── DefaultInput.ini
│       │   │   ├── Content/
│       │   │   │   └── BP/
│       │   │   │       ├── BP_ChatClientActor.uasset
│       │   │   │       └── BP_ConnectionTestBP.uasset
│       │   │   ├── QuickstartChat.uproject
│       │   │   └── Source/
│       │   │       ├── QuickstartChat/
│       │   │       │   ├── Private/
│       │   │       │   │   ├── ChatClientActor.cpp
│       │   │       │   │   ├── ModuleBindings/
│       │   │       │   │   │   ├── SpacetimeDBClient.g.cpp
│       │   │       │   │   │   └── Tables/
│       │   │       │   │   │       ├── MessageTable.g.cpp
│       │   │       │   │   │       └── UserTable.g.cpp
│       │   │       │   │   └── QuickstartChat.cpp
│       │   │       │   ├── Public/
│       │   │       │   │   ├── ChatClientActor.h
│       │   │       │   │   ├── ModuleBindings/
│       │   │       │   │   │   ├── Optionals/
│       │   │       │   │   │   │   └── QuickstartChatOptionalString.g.h
│       │   │       │   │   │   ├── ReducerBase.g.h
│       │   │       │   │   │   ├── Reducers/
│       │   │       │   │   │   │   ├── SendMessage.g.h
│       │   │       │   │   │   │   └── SetName.g.h
│       │   │       │   │   │   ├── SpacetimeDBClient.g.h
│       │   │       │   │   │   ├── Tables/
│       │   │       │   │   │   │   ├── MessageTable.g.h
│       │   │       │   │   │   │   └── UserTable.g.h
│       │   │       │   │   │   └── Types/
│       │   │       │   │   │       ├── MessageType.g.h
│       │   │       │   │   │       └── UserType.g.h
│       │   │       │   │   └── QuickstartChat.h
│       │   │       │   └── QuickstartChat.Build.cs
│       │   │       ├── QuickstartChat.Target.cs
│       │   │       └── QuickstartChatEditor.Target.cs
│       │   └── README.md
│       ├── src/
│       │   ├── SpacetimeDbSdk/
│       │   │   ├── Source/
│       │   │   │   └── SpacetimeDbSdk/
│       │   │   │       ├── Private/
│       │   │   │       │   ├── Connection/
│       │   │   │       │   │   ├── Callback.cpp
│       │   │   │       │   │   ├── Credentials.cpp
│       │   │   │       │   │   ├── DbConnectionBase.cpp
│       │   │   │       │   │   ├── DbConnectionBuilder.cpp
│       │   │   │       │   │   ├── LogCategory.cpp
│       │   │   │       │   │   ├── Subscription.cpp
│       │   │   │       │   │   └── Websocket.cpp
│       │   │   │       │   ├── SpacetimeDbSdk.cpp
│       │   │   │       │   └── Tests/
│       │   │   │       │       └── SpacetimeDBBSATNTestOrg.cpp
│       │   │   │       ├── Public/
│       │   │   │       │   ├── BSATN/
│       │   │   │       │   │   ├── Core/
│       │   │   │       │   │   │   ├── DEVELOP.md
│       │   │   │       │   │   │   ├── README.md
│       │   │   │       │   │   │   ├── algebraic_type.h
│       │   │   │       │   │   │   ├── bsatn.h
│       │   │   │       │   │   │   ├── monostate_traits.h
│       │   │   │       │   │   │   ├── primitive_traits.h
│       │   │   │       │   │   │   ├── reader.h
│       │   │   │       │   │   │   ├── schedule_at.h
│       │   │   │       │   │   │   ├── schedule_at_impl.h
│       │   │   │       │   │   │   ├── serialization.h
│       │   │   │       │   │   │   ├── size_calculator.h
│       │   │   │       │   │   │   ├── sum_type.h
│       │   │   │       │   │   │   ├── time_duration.h
│       │   │   │       │   │   │   ├── timestamp.h
│       │   │   │       │   │   │   ├── traits.h
│       │   │   │       │   │   │   ├── type_extensions.h
│       │   │   │       │   │   │   ├── types.h
│       │   │   │       │   │   │   ├── types_impl.h
│       │   │   │       │   │   │   └── writer.h
│       │   │   │       │   │   ├── FEATURES.md
│       │   │   │       │   │   ├── MockCoreMinimal.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── UEBSATNHelpers.h
│       │   │   │       │   │   ├── UESpacetimeDB.h
│       │   │   │       │   │   └── UNREAL_BSATN_ADDITIONS.md
│       │   │   │       │   ├── Connection/
│       │   │   │       │   │   ├── Callback.h
│       │   │   │       │   │   ├── Credentials.h
│       │   │   │       │   │   ├── DbConnectionBase.h
│       │   │   │       │   │   ├── DbConnectionBuilder.h
│       │   │   │       │   │   ├── LogCategory.h
│       │   │   │       │   │   ├── ProcedureFlags.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── Subscription.h
│       │   │   │       │   │   └── Websocket.h
│       │   │   │       │   ├── DBCache/
│       │   │   │       │   │   ├── BTreeUniqueIndex.h
│       │   │   │       │   │   ├── ClientCache.h
│       │   │   │       │   │   ├── IUniqueIndex.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── RowEntry.h
│       │   │   │       │   │   ├── TableAppliedDiff.h
│       │   │   │       │   │   ├── TableCache.h
│       │   │   │       │   │   ├── TableHandle.h
│       │   │   │       │   │   ├── UniqueConstraintHandle.h
│       │   │   │       │   │   ├── UniqueIndex.h
│       │   │   │       │   │   └── WithBsatn.h
│       │   │   │       │   ├── ModuleBindings/
│       │   │   │       │   │   ├── Optionals/
│       │   │   │       │   │   │   ├── SpacetimeDbSdkOptionalQueryRows.g.h
│       │   │   │       │   │   │   └── SpacetimeDbSdkOptionalUInt32.g.h
│       │   │   │       │   │   ├── Results/
│       │   │   │       │   │   │   └── SpacetimeDbSdkResultQueryRowsString.g.h
│       │   │   │       │   │   └── Types/
│       │   │   │       │   │       ├── BsatnRowListType.g.h
│       │   │   │       │   │       ├── CallProcedureType.g.h
│       │   │   │       │   │       ├── CallReducerType.g.h
│       │   │   │       │   │       ├── ClientMessageType.g.h
│       │   │   │       │   │       ├── EventTableRowsType.g.h
│       │   │   │       │   │       ├── InitialConnectionType.g.h
│       │   │   │       │   │       ├── OneOffQueryResultType.g.h
│       │   │   │       │   │       ├── OneOffQueryType.g.h
│       │   │   │       │   │       ├── PersistentTableRowsType.g.h
│       │   │   │       │   │       ├── ProcedureResultType.g.h
│       │   │   │       │   │       ├── ProcedureStatusType.g.h
│       │   │   │       │   │       ├── QueryRowsType.g.h
│       │   │   │       │   │       ├── QuerySetIdType.g.h
│       │   │   │       │   │       ├── QuerySetUpdateType.g.h
│       │   │   │       │   │       ├── ReducerOkType.g.h
│       │   │   │       │   │       ├── ReducerOutcomeType.g.h
│       │   │   │       │   │       ├── ReducerResultType.g.h
│       │   │   │       │   │       ├── RowSizeHintType.g.h
│       │   │   │       │   │       ├── ServerMessageType.g.h
│       │   │   │       │   │       ├── SingleTableRowsType.g.h
│       │   │   │       │   │       ├── SubscribeAppliedType.g.h
│       │   │   │       │   │       ├── SubscribeType.g.h
│       │   │   │       │   │       ├── SubscriptionErrorType.g.h
│       │   │   │       │   │       ├── TableUpdateRowsType.g.h
│       │   │   │       │   │       ├── TableUpdateType.g.h
│       │   │   │       │   │       ├── TransactionUpdateType.g.h
│       │   │   │       │   │       ├── UnsubscribeAppliedType.g.h
│       │   │   │       │   │       ├── UnsubscribeFlagsType.g.h
│       │   │   │       │   │       └── UnsubscribeType.g.h
│       │   │   │       │   ├── SpacetimeDbSdk.h
│       │   │   │       │   ├── Tables/
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   └── RemoteTable.h
│       │   │   │       │   ├── Tests/
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   └── SpacetimeDBBSATNTestOrg.h
│       │   │   │       │   └── Types/
│       │   │   │       │       ├── Builtins.h
│       │   │   │       │       ├── LargeIntegers.h
│       │   │   │       │       ├── README.md
│       │   │   │       │       └── UnitType.h
│       │   │   │       └── SpacetimeDbSdk.Build.cs
│       │   │   └── SpacetimeDbSdk.uplugin
│       │   └── lib.rs
│       └── tests/
│           ├── README.md
│           ├── TestClient/
│           │   ├── .vsconfig
│           │   ├── Config/
│           │   │   ├── DefaultEditor.ini
│           │   │   ├── DefaultEditorPerProjectUserSettings.ini
│           │   │   ├── DefaultEngine.ini
│           │   │   ├── DefaultGame.ini
│           │   │   └── DefaultInput.ini
│           │   ├── Source/
│           │   │   ├── TestClient/
│           │   │   │   ├── Private/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│           │   │   │   │   │   └── Tables/
│           │   │   │   │   │       ├── BtreeU32Table.g.cpp
│           │   │   │   │   │       ├── IndexedSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── LargeTableTable.g.cpp
│           │   │   │   │   │       ├── OneBoolTable.g.cpp
│           │   │   │   │   │       ├── OneByteStructTable.g.cpp
│           │   │   │   │   │       ├── OneConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── OneEnumWithPayloadTable.g.cpp
│           │   │   │   │   │       ├── OneEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── OneEveryVecStructTable.g.cpp
│           │   │   │   │   │       ├── OneF32Table.g.cpp
│           │   │   │   │   │       ├── OneF64Table.g.cpp
│           │   │   │   │   │       ├── OneI128Table.g.cpp
│           │   │   │   │   │       ├── OneI16Table.g.cpp
│           │   │   │   │   │       ├── OneI256Table.g.cpp
│           │   │   │   │   │       ├── OneI32Table.g.cpp
│           │   │   │   │   │       ├── OneI64Table.g.cpp
│           │   │   │   │   │       ├── OneI8Table.g.cpp
│           │   │   │   │   │       ├── OneIdentityTable.g.cpp
│           │   │   │   │   │       ├── OneSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── OneStringTable.g.cpp
│           │   │   │   │   │       ├── OneTimestampTable.g.cpp
│           │   │   │   │   │       ├── OneU128Table.g.cpp
│           │   │   │   │   │       ├── OneU16Table.g.cpp
│           │   │   │   │   │       ├── OneU256Table.g.cpp
│           │   │   │   │   │       ├── OneU32Table.g.cpp
│           │   │   │   │   │       ├── OneU64Table.g.cpp
│           │   │   │   │   │       ├── OneU8Table.g.cpp
│           │   │   │   │   │       ├── OneUnitStructTable.g.cpp
│           │   │   │   │   │       ├── OneUuidTable.g.cpp
│           │   │   │   │   │       ├── OptionEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── OptionI32Table.g.cpp
│           │   │   │   │   │       ├── OptionIdentityTable.g.cpp
│           │   │   │   │   │       ├── OptionSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── OptionStringTable.g.cpp
│           │   │   │   │   │       ├── OptionUuidTable.g.cpp
│           │   │   │   │   │       ├── OptionVecOptionI32Table.g.cpp
│           │   │   │   │   │       ├── PkBoolTable.g.cpp
│           │   │   │   │   │       ├── PkConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── PkI128Table.g.cpp
│           │   │   │   │   │       ├── PkI16Table.g.cpp
│           │   │   │   │   │       ├── PkI256Table.g.cpp
│           │   │   │   │   │       ├── PkI32Table.g.cpp
│           │   │   │   │   │       ├── PkI64Table.g.cpp
│           │   │   │   │   │       ├── PkI8Table.g.cpp
│           │   │   │   │   │       ├── PkIdentityTable.g.cpp
│           │   │   │   │   │       ├── PkSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── PkStringTable.g.cpp
│           │   │   │   │   │       ├── PkU128Table.g.cpp
│           │   │   │   │   │       ├── PkU16Table.g.cpp
│           │   │   │   │   │       ├── PkU256Table.g.cpp
│           │   │   │   │   │       ├── PkU32Table.g.cpp
│           │   │   │   │   │       ├── PkU32TwoTable.g.cpp
│           │   │   │   │   │       ├── PkU64Table.g.cpp
│           │   │   │   │   │       ├── PkU8Table.g.cpp
│           │   │   │   │   │       ├── PkUuidTable.g.cpp
│           │   │   │   │   │       ├── ResultEveryPrimitiveStructStringTable.g.cpp
│           │   │   │   │   │       ├── ResultI32StringTable.g.cpp
│           │   │   │   │   │       ├── ResultIdentityStringTable.g.cpp
│           │   │   │   │   │       ├── ResultSimpleEnumI32Table.g.cpp
│           │   │   │   │   │       ├── ResultStringI32Table.g.cpp
│           │   │   │   │   │       ├── ResultVecI32StringTable.g.cpp
│           │   │   │   │   │       ├── ScheduledTableTable.g.cpp
│           │   │   │   │   │       ├── TableHoldsTableTable.g.cpp
│           │   │   │   │   │       ├── UniqueBoolTable.g.cpp
│           │   │   │   │   │       ├── UniqueConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── UniqueI128Table.g.cpp
│           │   │   │   │   │       ├── UniqueI16Table.g.cpp
│           │   │   │   │   │       ├── UniqueI256Table.g.cpp
│           │   │   │   │   │       ├── UniqueI32Table.g.cpp
│           │   │   │   │   │       ├── UniqueI64Table.g.cpp
│           │   │   │   │   │       ├── UniqueI8Table.g.cpp
│           │   │   │   │   │       ├── UniqueIdentityTable.g.cpp
│           │   │   │   │   │       ├── UniqueStringTable.g.cpp
│           │   │   │   │   │       ├── UniqueU128Table.g.cpp
│           │   │   │   │   │       ├── UniqueU16Table.g.cpp
│           │   │   │   │   │       ├── UniqueU256Table.g.cpp
│           │   │   │   │   │       ├── UniqueU32Table.g.cpp
│           │   │   │   │   │       ├── UniqueU64Table.g.cpp
│           │   │   │   │   │       ├── UniqueU8Table.g.cpp
│           │   │   │   │   │       ├── UniqueUuidTable.g.cpp
│           │   │   │   │   │       ├── UsersTable.g.cpp
│           │   │   │   │   │       ├── VecBoolTable.g.cpp
│           │   │   │   │   │       ├── VecByteStructTable.g.cpp
│           │   │   │   │   │       ├── VecConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── VecEnumWithPayloadTable.g.cpp
│           │   │   │   │   │       ├── VecEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── VecEveryVecStructTable.g.cpp
│           │   │   │   │   │       ├── VecF32Table.g.cpp
│           │   │   │   │   │       ├── VecF64Table.g.cpp
│           │   │   │   │   │       ├── VecI128Table.g.cpp
│           │   │   │   │   │       ├── VecI16Table.g.cpp
│           │   │   │   │   │       ├── VecI256Table.g.cpp
│           │   │   │   │   │       ├── VecI32Table.g.cpp
│           │   │   │   │   │       ├── VecI64Table.g.cpp
│           │   │   │   │   │       ├── VecI8Table.g.cpp
│           │   │   │   │   │       ├── VecIdentityTable.g.cpp
│           │   │   │   │   │       ├── VecSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── VecStringTable.g.cpp
│           │   │   │   │   │       ├── VecTimestampTable.g.cpp
│           │   │   │   │   │       ├── VecU128Table.g.cpp
│           │   │   │   │   │       ├── VecU16Table.g.cpp
│           │   │   │   │   │       ├── VecU256Table.g.cpp
│           │   │   │   │   │       ├── VecU32Table.g.cpp
│           │   │   │   │   │       ├── VecU64Table.g.cpp
│           │   │   │   │   │       ├── VecU8Table.g.cpp
│           │   │   │   │   │       ├── VecUnitStructTable.g.cpp
│           │   │   │   │   │       └── VecUuidTable.g.cpp
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.cpp
│           │   │   │   │       ├── SpacetimeFullClientTests.cpp
│           │   │   │   │       ├── TestCounter.cpp
│           │   │   │   │       └── TestHandler.cpp
│           │   │   │   ├── Public/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── Optionals/
│           │   │   │   │   │   │   ├── TestClientOptionalEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalIdentity.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalInt32.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalSimpleEnum.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalString.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalUuid.g.h
│           │   │   │   │   │   │   └── TestClientOptionalVecOptionalInt32.g.h
│           │   │   │   │   │   ├── ReducerBase.g.h
│           │   │   │   │   │   ├── Reducers/
│           │   │   │   │   │   │   ├── DeleteFromBtreeU32.g.h
│           │   │   │   │   │   │   ├── DeleteLargeTable.g.h
│           │   │   │   │   │   │   ├── DeletePkBool.g.h
│           │   │   │   │   │   │   ├── DeletePkConnectionId.g.h
│           │   │   │   │   │   │   ├── DeletePkI128.g.h
│           │   │   │   │   │   │   ├── DeletePkI16.g.h
│           │   │   │   │   │   │   ├── DeletePkI256.g.h
│           │   │   │   │   │   │   ├── DeletePkI32.g.h
│           │   │   │   │   │   │   ├── DeletePkI64.g.h
│           │   │   │   │   │   │   ├── DeletePkI8.g.h
│           │   │   │   │   │   │   ├── DeletePkIdentity.g.h
│           │   │   │   │   │   │   ├── DeletePkString.g.h
│           │   │   │   │   │   │   ├── DeletePkU128.g.h
│           │   │   │   │   │   │   ├── DeletePkU16.g.h
│           │   │   │   │   │   │   ├── DeletePkU256.g.h
│           │   │   │   │   │   │   ├── DeletePkU32.g.h
│           │   │   │   │   │   │   ├── DeletePkU32InsertPkU32Two.g.h
│           │   │   │   │   │   │   ├── DeletePkU32Two.g.h
│           │   │   │   │   │   │   ├── DeletePkU64.g.h
│           │   │   │   │   │   │   ├── DeletePkU8.g.h
│           │   │   │   │   │   │   ├── DeletePkUuid.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueBool.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI128.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI16.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI256.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI32.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI64.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI8.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueString.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU128.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU16.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU256.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU32.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU64.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU8.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueUuid.g.h
│           │   │   │   │   │   │   ├── InsertCallTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertCallUuidV4.g.h
│           │   │   │   │   │   │   ├── InsertCallUuidV7.g.h
│           │   │   │   │   │   │   ├── InsertCallerOneConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerOneIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerPkConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerPkIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerVecConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerVecIdentity.g.h
│           │   │   │   │   │   │   ├── InsertIntoBtreeU32.g.h
│           │   │   │   │   │   │   ├── InsertIntoIndexedSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertIntoPkBtreeU32.g.h
│           │   │   │   │   │   │   ├── InsertLargeTable.g.h
│           │   │   │   │   │   │   ├── InsertOneBool.g.h
│           │   │   │   │   │   │   ├── InsertOneByteStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertOneEnumWithPayload.g.h
│           │   │   │   │   │   │   ├── InsertOneEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneEveryVecStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneF32.g.h
│           │   │   │   │   │   │   ├── InsertOneF64.g.h
│           │   │   │   │   │   │   ├── InsertOneI128.g.h
│           │   │   │   │   │   │   ├── InsertOneI16.g.h
│           │   │   │   │   │   │   ├── InsertOneI256.g.h
│           │   │   │   │   │   │   ├── InsertOneI32.g.h
│           │   │   │   │   │   │   ├── InsertOneI64.g.h
│           │   │   │   │   │   │   ├── InsertOneI8.g.h
│           │   │   │   │   │   │   ├── InsertOneIdentity.g.h
│           │   │   │   │   │   │   ├── InsertOneSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertOneString.g.h
│           │   │   │   │   │   │   ├── InsertOneTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertOneU128.g.h
│           │   │   │   │   │   │   ├── InsertOneU16.g.h
│           │   │   │   │   │   │   ├── InsertOneU256.g.h
│           │   │   │   │   │   │   ├── InsertOneU32.g.h
│           │   │   │   │   │   │   ├── InsertOneU64.g.h
│           │   │   │   │   │   │   ├── InsertOneU8.g.h
│           │   │   │   │   │   │   ├── InsertOneUnitStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneUuid.g.h
│           │   │   │   │   │   │   ├── InsertOptionEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertOptionI32.g.h
│           │   │   │   │   │   │   ├── InsertOptionIdentity.g.h
│           │   │   │   │   │   │   ├── InsertOptionSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertOptionString.g.h
│           │   │   │   │   │   │   ├── InsertOptionUuid.g.h
│           │   │   │   │   │   │   ├── InsertOptionVecOptionI32.g.h
│           │   │   │   │   │   │   ├── InsertPkBool.g.h
│           │   │   │   │   │   │   ├── InsertPkConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertPkI128.g.h
│           │   │   │   │   │   │   ├── InsertPkI16.g.h
│           │   │   │   │   │   │   ├── InsertPkI256.g.h
│           │   │   │   │   │   │   ├── InsertPkI32.g.h
│           │   │   │   │   │   │   ├── InsertPkI64.g.h
│           │   │   │   │   │   │   ├── InsertPkI8.g.h
│           │   │   │   │   │   │   ├── InsertPkIdentity.g.h
│           │   │   │   │   │   │   ├── InsertPkSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertPkString.g.h
│           │   │   │   │   │   │   ├── InsertPkU128.g.h
│           │   │   │   │   │   │   ├── InsertPkU16.g.h
│           │   │   │   │   │   │   ├── InsertPkU256.g.h
│           │   │   │   │   │   │   ├── InsertPkU32.g.h
│           │   │   │   │   │   │   ├── InsertPkU32Two.g.h
│           │   │   │   │   │   │   ├── InsertPkU64.g.h
│           │   │   │   │   │   │   ├── InsertPkU8.g.h
│           │   │   │   │   │   │   ├── InsertPkUuid.g.h
│           │   │   │   │   │   │   ├── InsertPrimitivesAsStrings.g.h
│           │   │   │   │   │   │   ├── InsertResultEveryPrimitiveStructString.g.h
│           │   │   │   │   │   │   ├── InsertResultI32String.g.h
│           │   │   │   │   │   │   ├── InsertResultIdentityString.g.h
│           │   │   │   │   │   │   ├── InsertResultSimpleEnumI32.g.h
│           │   │   │   │   │   │   ├── InsertResultStringI32.g.h
│           │   │   │   │   │   │   ├── InsertResultVecI32String.g.h
│           │   │   │   │   │   │   ├── InsertTableHoldsTable.g.h
│           │   │   │   │   │   │   ├── InsertUniqueBool.g.h
│           │   │   │   │   │   │   ├── InsertUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI128.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI16.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI256.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI64.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI8.g.h
│           │   │   │   │   │   │   ├── InsertUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── InsertUniqueString.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU128.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU16.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU256.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU32UpdatePkU32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU64.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU8.g.h
│           │   │   │   │   │   │   ├── InsertUniqueUuid.g.h
│           │   │   │   │   │   │   ├── InsertUser.g.h
│           │   │   │   │   │   │   ├── InsertVecBool.g.h
│           │   │   │   │   │   │   ├── InsertVecByteStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertVecEnumWithPayload.g.h
│           │   │   │   │   │   │   ├── InsertVecEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecEveryVecStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecF32.g.h
│           │   │   │   │   │   │   ├── InsertVecF64.g.h
│           │   │   │   │   │   │   ├── InsertVecI128.g.h
│           │   │   │   │   │   │   ├── InsertVecI16.g.h
│           │   │   │   │   │   │   ├── InsertVecI256.g.h
│           │   │   │   │   │   │   ├── InsertVecI32.g.h
│           │   │   │   │   │   │   ├── InsertVecI64.g.h
│           │   │   │   │   │   │   ├── InsertVecI8.g.h
│           │   │   │   │   │   │   ├── InsertVecIdentity.g.h
│           │   │   │   │   │   │   ├── InsertVecSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertVecString.g.h
│           │   │   │   │   │   │   ├── InsertVecTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertVecU128.g.h
│           │   │   │   │   │   │   ├── InsertVecU16.g.h
│           │   │   │   │   │   │   ├── InsertVecU256.g.h
│           │   │   │   │   │   │   ├── InsertVecU32.g.h
│           │   │   │   │   │   │   ├── InsertVecU64.g.h
│           │   │   │   │   │   │   ├── InsertVecU8.g.h
│           │   │   │   │   │   │   ├── InsertVecUnitStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecUuid.g.h
│           │   │   │   │   │   │   ├── NoOpSucceeds.g.h
│           │   │   │   │   │   │   ├── SortedUuidsInsert.g.h
│           │   │   │   │   │   │   ├── UpdateIndexedSimpleEnum.g.h
│           │   │   │   │   │   │   ├── UpdatePkBool.g.h
│           │   │   │   │   │   │   ├── UpdatePkConnectionId.g.h
│           │   │   │   │   │   │   ├── UpdatePkI128.g.h
│           │   │   │   │   │   │   ├── UpdatePkI16.g.h
│           │   │   │   │   │   │   ├── UpdatePkI256.g.h
│           │   │   │   │   │   │   ├── UpdatePkI32.g.h
│           │   │   │   │   │   │   ├── UpdatePkI64.g.h
│           │   │   │   │   │   │   ├── UpdatePkI8.g.h
│           │   │   │   │   │   │   ├── UpdatePkIdentity.g.h
│           │   │   │   │   │   │   ├── UpdatePkSimpleEnum.g.h
│           │   │   │   │   │   │   ├── UpdatePkString.g.h
│           │   │   │   │   │   │   ├── UpdatePkU128.g.h
│           │   │   │   │   │   │   ├── UpdatePkU16.g.h
│           │   │   │   │   │   │   ├── UpdatePkU256.g.h
│           │   │   │   │   │   │   ├── UpdatePkU32.g.h
│           │   │   │   │   │   │   ├── UpdatePkU32Two.g.h
│           │   │   │   │   │   │   ├── UpdatePkU64.g.h
│           │   │   │   │   │   │   ├── UpdatePkU8.g.h
│           │   │   │   │   │   │   ├── UpdatePkUuid.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueBool.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI128.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI16.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI256.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI32.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI64.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI8.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueString.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU128.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU16.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU256.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU32.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU64.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU8.g.h
│           │   │   │   │   │   │   └── UpdateUniqueUuid.g.h
│           │   │   │   │   │   ├── Results/
│           │   │   │   │   │   │   ├── TestClientResultEveryPrimitiveStructString.g.h
│           │   │   │   │   │   │   ├── TestClientResultIdentityString.g.h
│           │   │   │   │   │   │   ├── TestClientResultInt32String.g.h
│           │   │   │   │   │   │   ├── TestClientResultSimpleEnumInt32.g.h
│           │   │   │   │   │   │   ├── TestClientResultStringInt32.g.h
│           │   │   │   │   │   │   └── TestClientResultVecInt32String.g.h
│           │   │   │   │   │   ├── SpacetimeDBClient.g.h
│           │   │   │   │   │   ├── Tables/
│           │   │   │   │   │   │   ├── BtreeU32Table.g.h
│           │   │   │   │   │   │   ├── IndexedSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── LargeTableTable.g.h
│           │   │   │   │   │   │   ├── OneBoolTable.g.h
│           │   │   │   │   │   │   ├── OneByteStructTable.g.h
│           │   │   │   │   │   │   ├── OneConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── OneEnumWithPayloadTable.g.h
│           │   │   │   │   │   │   ├── OneEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── OneEveryVecStructTable.g.h
│           │   │   │   │   │   │   ├── OneF32Table.g.h
│           │   │   │   │   │   │   ├── OneF64Table.g.h
│           │   │   │   │   │   │   ├── OneI128Table.g.h
│           │   │   │   │   │   │   ├── OneI16Table.g.h
│           │   │   │   │   │   │   ├── OneI256Table.g.h
│           │   │   │   │   │   │   ├── OneI32Table.g.h
│           │   │   │   │   │   │   ├── OneI64Table.g.h
│           │   │   │   │   │   │   ├── OneI8Table.g.h
│           │   │   │   │   │   │   ├── OneIdentityTable.g.h
│           │   │   │   │   │   │   ├── OneSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── OneStringTable.g.h
│           │   │   │   │   │   │   ├── OneTimestampTable.g.h
│           │   │   │   │   │   │   ├── OneU128Table.g.h
│           │   │   │   │   │   │   ├── OneU16Table.g.h
│           │   │   │   │   │   │   ├── OneU256Table.g.h
│           │   │   │   │   │   │   ├── OneU32Table.g.h
│           │   │   │   │   │   │   ├── OneU64Table.g.h
│           │   │   │   │   │   │   ├── OneU8Table.g.h
│           │   │   │   │   │   │   ├── OneUnitStructTable.g.h
│           │   │   │   │   │   │   ├── OneUuidTable.g.h
│           │   │   │   │   │   │   ├── OptionEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── OptionI32Table.g.h
│           │   │   │   │   │   │   ├── OptionIdentityTable.g.h
│           │   │   │   │   │   │   ├── OptionSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── OptionStringTable.g.h
│           │   │   │   │   │   │   ├── OptionUuidTable.g.h
│           │   │   │   │   │   │   ├── OptionVecOptionI32Table.g.h
│           │   │   │   │   │   │   ├── PkBoolTable.g.h
│           │   │   │   │   │   │   ├── PkConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── PkI128Table.g.h
│           │   │   │   │   │   │   ├── PkI16Table.g.h
│           │   │   │   │   │   │   ├── PkI256Table.g.h
│           │   │   │   │   │   │   ├── PkI32Table.g.h
│           │   │   │   │   │   │   ├── PkI64Table.g.h
│           │   │   │   │   │   │   ├── PkI8Table.g.h
│           │   │   │   │   │   │   ├── PkIdentityTable.g.h
│           │   │   │   │   │   │   ├── PkSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── PkStringTable.g.h
│           │   │   │   │   │   │   ├── PkU128Table.g.h
│           │   │   │   │   │   │   ├── PkU16Table.g.h
│           │   │   │   │   │   │   ├── PkU256Table.g.h
│           │   │   │   │   │   │   ├── PkU32Table.g.h
│           │   │   │   │   │   │   ├── PkU32TwoTable.g.h
│           │   │   │   │   │   │   ├── PkU64Table.g.h
│           │   │   │   │   │   │   ├── PkU8Table.g.h
│           │   │   │   │   │   │   ├── PkUuidTable.g.h
│           │   │   │   │   │   │   ├── ResultEveryPrimitiveStructStringTable.g.h
│           │   │   │   │   │   │   ├── ResultI32StringTable.g.h
│           │   │   │   │   │   │   ├── ResultIdentityStringTable.g.h
│           │   │   │   │   │   │   ├── ResultSimpleEnumI32Table.g.h
│           │   │   │   │   │   │   ├── ResultStringI32Table.g.h
│           │   │   │   │   │   │   ├── ResultVecI32StringTable.g.h
│           │   │   │   │   │   │   ├── ScheduledTableTable.g.h
│           │   │   │   │   │   │   ├── TableHoldsTableTable.g.h
│           │   │   │   │   │   │   ├── UniqueBoolTable.g.h
│           │   │   │   │   │   │   ├── UniqueConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── UniqueI128Table.g.h
│           │   │   │   │   │   │   ├── UniqueI16Table.g.h
│           │   │   │   │   │   │   ├── UniqueI256Table.g.h
│           │   │   │   │   │   │   ├── UniqueI32Table.g.h
│           │   │   │   │   │   │   ├── UniqueI64Table.g.h
│           │   │   │   │   │   │   ├── UniqueI8Table.g.h
│           │   │   │   │   │   │   ├── UniqueIdentityTable.g.h
│           │   │   │   │   │   │   ├── UniqueStringTable.g.h
│           │   │   │   │   │   │   ├── UniqueU128Table.g.h
│           │   │   │   │   │   │   ├── UniqueU16Table.g.h
│           │   │   │   │   │   │   ├── UniqueU256Table.g.h
│           │   │   │   │   │   │   ├── UniqueU32Table.g.h
│           │   │   │   │   │   │   ├── UniqueU64Table.g.h
│           │   │   │   │   │   │   ├── UniqueU8Table.g.h
│           │   │   │   │   │   │   ├── UniqueUuidTable.g.h
│           │   │   │   │   │   │   ├── UsersTable.g.h
│           │   │   │   │   │   │   ├── VecBoolTable.g.h
│           │   │   │   │   │   │   ├── VecByteStructTable.g.h
│           │   │   │   │   │   │   ├── VecConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── VecEnumWithPayloadTable.g.h
│           │   │   │   │   │   │   ├── VecEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── VecEveryVecStructTable.g.h
│           │   │   │   │   │   │   ├── VecF32Table.g.h
│           │   │   │   │   │   │   ├── VecF64Table.g.h
│           │   │   │   │   │   │   ├── VecI128Table.g.h
│           │   │   │   │   │   │   ├── VecI16Table.g.h
│           │   │   │   │   │   │   ├── VecI256Table.g.h
│           │   │   │   │   │   │   ├── VecI32Table.g.h
│           │   │   │   │   │   │   ├── VecI64Table.g.h
│           │   │   │   │   │   │   ├── VecI8Table.g.h
│           │   │   │   │   │   │   ├── VecIdentityTable.g.h
│           │   │   │   │   │   │   ├── VecSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── VecStringTable.g.h
│           │   │   │   │   │   │   ├── VecTimestampTable.g.h
│           │   │   │   │   │   │   ├── VecU128Table.g.h
│           │   │   │   │   │   │   ├── VecU16Table.g.h
│           │   │   │   │   │   │   ├── VecU256Table.g.h
│           │   │   │   │   │   │   ├── VecU32Table.g.h
│           │   │   │   │   │   │   ├── VecU64Table.g.h
│           │   │   │   │   │   │   ├── VecU8Table.g.h
│           │   │   │   │   │   │   ├── VecUnitStructTable.g.h
│           │   │   │   │   │   │   └── VecUuidTable.g.h
│           │   │   │   │   │   └── Types/
│           │   │   │   │   │       ├── BTreeU32Type.g.h
│           │   │   │   │   │       ├── ByteStructType.g.h
│           │   │   │   │   │       ├── EnumWithPayloadType.g.h
│           │   │   │   │   │       ├── EveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── EveryVecStructType.g.h
│           │   │   │   │   │       ├── IndexedSimpleEnumType.g.h
│           │   │   │   │   │       ├── IndexedTable2Type.g.h
│           │   │   │   │   │       ├── IndexedTableType.g.h
│           │   │   │   │   │       ├── LargeTableType.g.h
│           │   │   │   │   │       ├── OneBoolType.g.h
│           │   │   │   │   │       ├── OneByteStructType.g.h
│           │   │   │   │   │       ├── OneConnectionIdType.g.h
│           │   │   │   │   │       ├── OneEnumWithPayloadType.g.h
│           │   │   │   │   │       ├── OneEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── OneEveryVecStructType.g.h
│           │   │   │   │   │       ├── OneF32Type.g.h
│           │   │   │   │   │       ├── OneF64Type.g.h
│           │   │   │   │   │       ├── OneI128Type.g.h
│           │   │   │   │   │       ├── OneI16Type.g.h
│           │   │   │   │   │       ├── OneI256Type.g.h
│           │   │   │   │   │       ├── OneI32Type.g.h
│           │   │   │   │   │       ├── OneI64Type.g.h
│           │   │   │   │   │       ├── OneI8Type.g.h
│           │   │   │   │   │       ├── OneIdentityType.g.h
│           │   │   │   │   │       ├── OneSimpleEnumType.g.h
│           │   │   │   │   │       ├── OneStringType.g.h
│           │   │   │   │   │       ├── OneTimestampType.g.h
│           │   │   │   │   │       ├── OneU128Type.g.h
│           │   │   │   │   │       ├── OneU16Type.g.h
│           │   │   │   │   │       ├── OneU256Type.g.h
│           │   │   │   │   │       ├── OneU32Type.g.h
│           │   │   │   │   │       ├── OneU64Type.g.h
│           │   │   │   │   │       ├── OneU8Type.g.h
│           │   │   │   │   │       ├── OneUnitStructType.g.h
│           │   │   │   │   │       ├── OneUuidType.g.h
│           │   │   │   │   │       ├── OptionEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── OptionI32Type.g.h
│           │   │   │   │   │       ├── OptionIdentityType.g.h
│           │   │   │   │   │       ├── OptionSimpleEnumType.g.h
│           │   │   │   │   │       ├── OptionStringType.g.h
│           │   │   │   │   │       ├── OptionUuidType.g.h
│           │   │   │   │   │       ├── OptionVecOptionI32Type.g.h
│           │   │   │   │   │       ├── PkBoolType.g.h
│           │   │   │   │   │       ├── PkConnectionIdType.g.h
│           │   │   │   │   │       ├── PkI128Type.g.h
│           │   │   │   │   │       ├── PkI16Type.g.h
│           │   │   │   │   │       ├── PkI256Type.g.h
│           │   │   │   │   │       ├── PkI32Type.g.h
│           │   │   │   │   │       ├── PkI64Type.g.h
│           │   │   │   │   │       ├── PkI8Type.g.h
│           │   │   │   │   │       ├── PkIdentityType.g.h
│           │   │   │   │   │       ├── PkSimpleEnumType.g.h
│           │   │   │   │   │       ├── PkStringType.g.h
│           │   │   │   │   │       ├── PkU128Type.g.h
│           │   │   │   │   │       ├── PkU16Type.g.h
│           │   │   │   │   │       ├── PkU256Type.g.h
│           │   │   │   │   │       ├── PkU32TwoType.g.h
│           │   │   │   │   │       ├── PkU32Type.g.h
│           │   │   │   │   │       ├── PkU64Type.g.h
│           │   │   │   │   │       ├── PkU8Type.g.h
│           │   │   │   │   │       ├── PkUuidType.g.h
│           │   │   │   │   │       ├── ResultEveryPrimitiveStructStringType.g.h
│           │   │   │   │   │       ├── ResultI32StringType.g.h
│           │   │   │   │   │       ├── ResultIdentityStringType.g.h
│           │   │   │   │   │       ├── ResultSimpleEnumI32Type.g.h
│           │   │   │   │   │       ├── ResultStringI32Type.g.h
│           │   │   │   │   │       ├── ResultVecI32StringType.g.h
│           │   │   │   │   │       ├── ScheduledTableType.g.h
│           │   │   │   │   │       ├── SimpleEnumType.g.h
│           │   │   │   │   │       ├── TableHoldsTableType.g.h
│           │   │   │   │   │       ├── UniqueBoolType.g.h
│           │   │   │   │   │       ├── UniqueConnectionIdType.g.h
│           │   │   │   │   │       ├── UniqueI128Type.g.h
│           │   │   │   │   │       ├── UniqueI16Type.g.h
│           │   │   │   │   │       ├── UniqueI256Type.g.h
│           │   │   │   │   │       ├── UniqueI32Type.g.h
│           │   │   │   │   │       ├── UniqueI64Type.g.h
│           │   │   │   │   │       ├── UniqueI8Type.g.h
│           │   │   │   │   │       ├── UniqueIdentityType.g.h
│           │   │   │   │   │       ├── UniqueStringType.g.h
│           │   │   │   │   │       ├── UniqueU128Type.g.h
│           │   │   │   │   │       ├── UniqueU16Type.g.h
│           │   │   │   │   │       ├── UniqueU256Type.g.h
│           │   │   │   │   │       ├── UniqueU32Type.g.h
│           │   │   │   │   │       ├── UniqueU64Type.g.h
│           │   │   │   │   │       ├── UniqueU8Type.g.h
│           │   │   │   │   │       ├── UniqueUuidType.g.h
│           │   │   │   │   │       ├── UnitStructType.g.h
│           │   │   │   │   │       ├── UsersType.g.h
│           │   │   │   │   │       ├── VecBoolType.g.h
│           │   │   │   │   │       ├── VecByteStructType.g.h
│           │   │   │   │   │       ├── VecConnectionIdType.g.h
│           │   │   │   │   │       ├── VecEnumWithPayloadType.g.h
│           │   │   │   │   │       ├── VecEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── VecEveryVecStructType.g.h
│           │   │   │   │   │       ├── VecF32Type.g.h
│           │   │   │   │   │       ├── VecF64Type.g.h
│           │   │   │   │   │       ├── VecI128Type.g.h
│           │   │   │   │   │       ├── VecI16Type.g.h
│           │   │   │   │   │       ├── VecI256Type.g.h
│           │   │   │   │   │       ├── VecI32Type.g.h
│           │   │   │   │   │       ├── VecI64Type.g.h
│           │   │   │   │   │       ├── VecI8Type.g.h
│           │   │   │   │   │       ├── VecIdentityType.g.h
│           │   │   │   │   │       ├── VecSimpleEnumType.g.h
│           │   │   │   │   │       ├── VecStringType.g.h
│           │   │   │   │   │       ├── VecTimestampType.g.h
│           │   │   │   │   │       ├── VecU128Type.g.h
│           │   │   │   │   │       ├── VecU16Type.g.h
│           │   │   │   │   │       ├── VecU256Type.g.h
│           │   │   │   │   │       ├── VecU32Type.g.h
│           │   │   │   │   │       ├── VecU64Type.g.h
│           │   │   │   │   │       ├── VecU8Type.g.h
│           │   │   │   │   │       ├── VecUnitStructType.g.h
│           │   │   │   │   │       └── VecUuidType.g.h
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.h
│           │   │   │   │       ├── PrimitiveHandlerList.def
│           │   │   │   │       ├── SpacetimeFullClientTests.h
│           │   │   │   │       ├── TestCounter.h
│           │   │   │   │       ├── TestHandler.h
│           │   │   │   │       ├── UmbreallaHeaderReducers.h
│           │   │   │   │       ├── UmbreallaHeaderTypes.h
│           │   │   │   │       └── UmbreallaHeaderaTables.h
│           │   │   │   ├── TestClient.Build.cs
│           │   │   │   ├── TestClient.cpp
│           │   │   │   ├── TestClient.h
│           │   │   │   ├── TestClientGameModeBase.cpp
│           │   │   │   └── TestClientGameModeBase.h
│           │   │   ├── TestClient.Target.cs
│           │   │   └── TestClientEditor.Target.cs
│           │   └── TestClient.uproject
│           ├── TestProcClient/
│           │   ├── .vsconfig
│           │   ├── Config/
│           │   │   ├── DefaultEditor.ini
│           │   │   ├── DefaultEditorPerProjectUserSettings.ini
│           │   │   ├── DefaultEngine.ini
│           │   │   ├── DefaultGame.ini
│           │   │   └── DefaultInput.ini
│           │   ├── Source/
│           │   │   ├── TestProcClient/
│           │   │   │   ├── Private/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│           │   │   │   │   │   └── Tables/
│           │   │   │   │   │       ├── MyTableTable.g.cpp
│           │   │   │   │   │       ├── PkUuidTable.g.cpp
│           │   │   │   │   │       └── ProcInsertsIntoTable.g.cpp
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.cpp
│           │   │   │   │       ├── SpacetimeFullClientTests.cpp
│           │   │   │   │       ├── TestCounter.cpp
│           │   │   │   │       └── TestHandler.cpp
│           │   │   │   ├── Public/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── Procedures/
│           │   │   │   │   │   │   ├── InsertWithTxCommit.g.h
│           │   │   │   │   │   │   ├── InsertWithTxRollback.g.h
│           │   │   │   │   │   │   ├── InvalidRequest.g.h
│           │   │   │   │   │   │   ├── ReadMySchema.g.h
│           │   │   │   │   │   │   ├── ReturnEnumA.g.h
│           │   │   │   │   │   │   ├── ReturnEnumB.g.h
│           │   │   │   │   │   │   ├── ReturnPrimitive.g.h
│           │   │   │   │   │   │   ├── ReturnStruct.g.h
│           │   │   │   │   │   │   ├── SortedUuidsInsert.g.h
│           │   │   │   │   │   │   └── WillPanic.g.h
│           │   │   │   │   │   ├── ReducerBase.g.h
│           │   │   │   │   │   ├── Reducers/
│           │   │   │   │   │   │   └── ScheduleProc.g.h
│           │   │   │   │   │   ├── SpacetimeDBClient.g.h
│           │   │   │   │   │   ├── Tables/
│           │   │   │   │   │   │   ├── MyTableTable.g.h
│           │   │   │   │   │   │   ├── PkUuidTable.g.h
│           │   │   │   │   │   │   └── ProcInsertsIntoTable.g.h
│           │   │   │   │   │   └── Types/
│           │   │   │   │   │       ├── MyTableType.g.h
│           │   │   │   │   │       ├── PkUuidType.g.h
│           │   │   │   │   │       ├── ProcInsertsIntoType.g.h
│           │   │   │   │   │       ├── ReturnEnumType.g.h
│           │   │   │   │   │       ├── ReturnStructType.g.h
│           │   │   │   │   │       └── ScheduledProcTableType.g.h
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.h
│           │   │   │   │       ├── SpacetimeFullClientTests.h
│           │   │   │   │       ├── TestCounter.h
│           │   │   │   │       ├── TestHandler.h
│           │   │   │   │       ├── UmbreallaHeaderProcedures.h
│           │   │   │   │       └── UmbreallaHeaderTypes.h
│           │   │   │   ├── TestProcClient.Build.cs
│           │   │   │   ├── TestProcClient.cpp
│           │   │   │   ├── TestProcClient.h
│           │   │   │   ├── TestProcClientGameModeBase.cpp
│           │   │   │   └── TestProcClientGameModeBase.h
│           │   │   ├── TestProcClient.Target.cs
│           │   │   └── TestProcClientEditor.Target.cs
│           │   └── TestProcClient.uproject
│           ├── sdk_unreal_harness.rs
│           ├── test.rs
│           └── test_procedure.rs
├── skills/
│   ├── spacetimedb-cli/
│   │   └── SKILL.md
│   ├── spacetimedb-concepts/
│   │   └── SKILL.md
│   ├── spacetimedb-csharp/
│   │   └── SKILL.md
│   ├── spacetimedb-rust/
│   │   └── SKILL.md
│   ├── spacetimedb-typescript/
│   │   └── SKILL.md
│   └── spacetimedb-unity/
│       └── SKILL.md
├── smoketests/
│   ├── README.md
│   ├── __init__.py
│   ├── __main__.py
│   ├── config.toml
│   ├── docker.py
│   ├── requirements.txt
│   ├── tests/
│   │   ├── __init__.py
│   │   ├── add_remove_index.py
│   │   ├── auto_inc.py
│   │   ├── auto_migration.py
│   │   ├── call.py
│   │   ├── clear_database.py
│   │   ├── client_connected_error_rejects_connection.py
│   │   ├── confirmed_reads.py
│   │   ├── connect_disconnect_from_cli.py
│   │   ├── create_project.py
│   │   ├── csharp_module.py
│   │   ├── default_module_clippy.py
│   │   ├── delete_database.py
│   │   ├── describe.py
│   │   ├── detect_wasm_bindgen.py
│   │   ├── dml.py
│   │   ├── domains.py
│   │   ├── fail_initial_publish.py
│   │   ├── filtering.py
│   │   ├── module_nested_op.py
│   │   ├── modules.py
│   │   ├── namespaces.py
│   │   ├── new_user_flow.py
│   │   ├── panic.py
│   │   ├── permissions.py
│   │   ├── quickstart.py
│   │   ├── replication.py
│   │   ├── rls.py
│   │   ├── schedule_reducer.py
│   │   ├── servers.py
│   │   ├── sql.py
│   │   ├── teams.py
│   │   ├── timestamp_route.py
│   │   ├── views.py
│   │   └── zz_docker.py
│   └── unittest_parallel.py
├── templates/
│   ├── angular-ts/
│   │   ├── .gitignore
│   │   ├── .template.json
│   │   ├── angular.json
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   └── dev.mjs
│   │   ├── spacetimedb/
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   └── index.ts
│   │   │   └── tsconfig.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app.c

================================================
FILE CONTENTS
================================================

================================================
FILE: .cargo/config.toml
================================================
[build]
rustflags = ["--cfg", "tokio_unstable"]

[alias]
bump-versions = "run -p upgrade-version --"
llm = "run --package xtask-llm-benchmark --bin llm_benchmark --"
ci = "run -p ci --"
smoketest = "ci smoketests --"
smoketests = "smoketest"

[target.x86_64-pc-windows-msvc]
# Use a different linker. Otherwise, the build fails with some obscure linker error that
# seems to be a result of us producing a massive PDB file.
# I (@bfops) tried a variety of other link options besides switching linkers, but this
# seems to be the only thing that worked.
linker = "lld-link"
# Without this, the linker complains that libc functions are undefined -
# it probably signals to rustc and lld-link that libucrt should be included.
rustflags = ["-Ctarget-feature=+crt-static"]


================================================
FILE: .dockerignore
================================================
**/target
# we do our own version pinning in the Dockerfile
rust-toolchain.toml


================================================
FILE: .envrc
================================================
# Directory environment using https://direnv.net/ and https://github.com/nix-community/nix-direnv.
use flake


================================================
FILE: .gitattributes
================================================
**/module_bindings/** linguist-generated=true eol=lf
/docs/llms/** linguist-generated=true
/docs/llms/*-details.json linguist-generated=false


================================================
FILE: .github/CODEOWNERS
================================================
/crates/core/src/db/datastore/traits.rs @cloutiertyler
/rust-toolchain.toml @cloutiertyler
/.github/CODEOWNERS @cloutiertyler
LICENSE @cloutiertyler
LICENSE.txt @cloutiertyler
/licenses/ @cloutiertyler
/crates/client-api-messages/src/websocket.rs @centril @gefjon

/crates/cli/src/ @bfops @cloutiertyler @jdetter
/tools/ci/ @bfops @cloutiertyler @jdetter
/tools/upgrade-version/ @bfops @jdetter
/tools/license-check/ @bfops @jdetter
/.github/ @bfops @jdetter

/crates/sdk/examples/quickstart-chat/ @gefjon
/modules/quickstart-chat/ @gefjon


================================================
FILE: .github/Dockerfile
================================================
# Minimal Dockerfile that just wraps pre-built binaries, so we can test the server inside docker
FROM rust:1.93.0
RUN mkdir -p /stdb/data
COPY ./target/debug/spacetimedb-standalone ./target/debug/spacetimedb-cli /usr/local/bin/
COPY ./crates/standalone/config.toml /stdb/data/config.toml
RUN ln -s /usr/local/bin/spacetimedb-cli /usr/local/bin/spacetime


================================================
FILE: .github/GREMLINS.md
================================================
# GREMLINS.md — Who Lives in the Pipes

This file documents the automated agents and bots that operate on this repository.

## Clawd 🔧

- **What:** Anti-entropy gremlin / CI watchdog
- **GitHub account:** `clockwork-labs-bot`
- **Discord channel:** #gremlins (CL - SpacetimeDB)
- **Powered by:** [OpenClaw](https://github.com/openclaw/openclaw) + Claude

### What Clawd does

- **Monitors CI** — watches for failures, flaky tests, and regressions
- **Reviews PRs** — comments on obvious bugs (never approves)
- **Surfaces stale PRs** — finds approved PRs that just need a rebase
- **Documents testing** — creates and maintains `DEVELOP.md` files explaining CI and test infrastructure
- **Alerts the team** — posts findings in #gremlins, pings DevOps when something needs attention

### What Clawd does NOT do

- Approve or merge PRs
- Take any destructive action (delete branches, close PRs, force push)
- Modify production infrastructure

### Contacting Clawd

- Mention `@Openclaw` in #gremlins on Discord
- Tag `@clockwork-labs-bot` on GitHub PRs/issues

---

*To add a new gremlin, document it here.*


================================================
FILE: .github/docker-compose.yml
================================================
services:
  node:
    labels:
      app: spacetimedb
    build:
      context: ../
      dockerfile: .github/Dockerfile
    ports:
      - "3000:3000"
      # Postgres
      - "5432:5432"
    entrypoint: spacetime start --pg-port 5432
    privileged: true
    environment:
      RUST_BACKTRACE: 1


================================================
FILE: .github/pull_request_template.md
================================================
# Description of Changes

<!-- Please describe your change, mention any related tickets, and so on here. -->

# API and ABI breaking changes

<!-- If this is an API or ABI breaking change, please apply the
corresponding GitHub label. -->

# Expected complexity level and risk

<!--
How complicated do you think these changes are? Grade on a scale from 1 to 5,
where 1 is a trivial change, and 5 is a deep-reaching and complex change.

This complexity rating applies not only to the complexity apparent in the diff,
but also to its interactions with existing and future code.

If you answered more than a 2, explain what is complex about the PR,
and what other components it interacts with in potentially concerning ways.  -->

# Testing

<!-- Describe any testing you've done, and any testing you'd like your reviewers to do,
so that you're confident that all the changes work as expected! -->

- [ ] <!-- maybe a test you want to do -->
- [ ] <!-- maybe a test you want a reviewer to do, so they can check it off when they're satisfied. -->


================================================
FILE: .github/workflows/attach-artifacts.yml
================================================
name: Attach client binaries to release

on:
  workflow_dispatch:
    inputs:
      release_tag:
        description: "Release tag (e.g. v1.9.0)"
        required: true

jobs:
  upload-assets:
    runs-on: spacetimedb-new-runner-2
    permissions:
      contents: write  # needed to modify releases

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Download artifacts from private base URL
        env:
          RELEASE_TAG: ${{ github.event.inputs.release_tag }}
          BASE_URL: ${{ secrets.ARTIFACT_BASE_URL }}
        run: |
          set -euo pipefail

          FULL_URL="$BASE_URL/$RELEASE_TAG"

          mkdir -p artifacts
          cd artifacts

          download() {
            local filename="$1"
            if ! wget -q "${FULL_URL}/${filename}" -O "${filename}"; then
              echo "Failed to download ${filename}"
              exit 1
            fi
          }

          download "spacetime-aarch64-apple-darwin.tar.gz"
          download "spacetime-aarch64-unknown-linux-gnu.tar.gz"
          download "spacetime-x86_64-apple-darwin.tar.gz"
          download "spacetime-x86_64-pc-windows-msvc.zip"
          download "spacetime-x86_64-unknown-linux-gnu.tar.gz"
          download "spacetimedb-update-aarch64-apple-darwin"
          download "spacetimedb-update-aarch64-unknown-linux-gnu"
          download "spacetimedb-update-x86_64-apple-darwin"
          download "spacetimedb-update-x86_64-pc-windows-msvc.exe"
          download "spacetimedb-update-x86_64-unknown-linux-gnu"

      - name: Upload artifacts to GitHub Release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RELEASE_TAG: ${{ github.event.inputs.release_tag }}
        run: |
          set -euo pipefail

          cd artifacts

          gh release upload "$RELEASE_TAG" ./* \
            --repo "$GITHUB_REPOSITORY" \
            --clobber



================================================
FILE: .github/workflows/benchmarks.yml
================================================
on:
  push:
    branches:
      - master
      - jgilles/fix-callgrind-again

  workflow_dispatch:
    inputs:
      pr_number:
        description: 'Pull Request Number'
        required: false
        default: ''

  issue_comment:
    types: [created]

name: Benchmarks

env:
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  GH_REPO: ${{ github.repository }}

jobs:
  benchmark:
    name: run criterion benchmarks
    runs-on: benchmarks-runner
    # filter for a comment containing 'benchmarks please'
    if: ${{ github.event_name != 'issue_comment' || (github.event.issue.pull_request && contains(github.event.comment.body, 'benchmarks please')) }}
    env:
      PR_NUMBER: ${{ github.event.inputs.pr_number || github.event.issue.number || null }}
    steps:
      - name: Clear stdb dir
        if: always()
        run: |
          rm -fr /stdb/*

      - name: Enable CPU boost
        run: echo "1" | sudo tee /sys/devices/system/cpu/cpufreq/boost

      - name: Check membership
        if: ${{ github.event_name == 'issue_comment' }}
        env:
          CONTRIB_ORG: clockworklabs
          COMMENT_AUTHOR: ${{ github.event.comment.user.login }}
          ORG_READ_TOKEN: ${{ secrets.ORG_READ_TOKEN }}
        run: |
          curl -OL https://github.com/cli/cli/releases/download/v2.37.0/gh_2.37.0_linux_amd64.deb && sudo dpkg -i gh_2.37.0_linux_amd64.deb
          if [[ $(GH_TOKEN=$ORG_READ_TOKEN gh api --paginate /orgs/{owner}/members --jq 'any(.login == env.COMMENT_AUTHOR)') != true ]]; then
            gh pr comment $PR_NUMBER -b "Sorry, you don't have permission to run benchmarks."
            exit 1
          fi

      - name: Post initial comment
        run: |
          if [[ $PR_NUMBER ]]; then
            comment_parent=issues/$PR_NUMBER
            comment_update=issues/comments
          else
            comment_parent=commits/$GITHUB_SHA
            comment_update=comments
          fi
          comment_body="Benchmark in progress..."
          comment_id=$(gh api "/repos/{owner}/{repo}/$comment_parent/comments" -f body="$comment_body" --jq .id)
          echo "COMMENT_UPDATE_URL=/repos/{owner}/{repo}/$comment_update/$comment_id" >>$GITHUB_ENV

      - name: find PR branch
        if: ${{ env.PR_NUMBER }}
        run: echo "PR_REF=$(gh pr view $PR_NUMBER --json headRefName --jq .headRefName)" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.PR_REF || github.ref }}
          # if we're on master we want to know what the sha of HEAD~1 is so
          # that we can compare results from it to HEAD (in the "Fetch markdown
          # summary PR" step). otherwise, we can use a fully shallow checkout
          fetch-depth: ${{ env.PR_NUMBER && 1 || 2 }}

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          components: clippy
          toolchain: stable
          target: wasm32-unknown-unknown
          override: true

      - name: Install .NET toolchain
        uses: actions/setup-dotnet@v3
        with:
          global-json-file: global.json
        env:
          DOTNET_INSTALL_DIR: ~/.dotnet

      - name: Build
        working-directory: crates/bench/
        run: |
          cargo build --release

      - name: Install latest wasm-opt for module optimisations
        run: |
          curl https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-linux.tar.gz -L | sudo tar xz -C /usr/local --strip-components=1

      - name: Disable CPU boost
        run: echo "0" | sudo tee /sys/devices/system/cpu/cpufreq/boost

      - name: Branch; run bench
        run: |
          if [[ $PR_NUMBER ]]; then
            BASELINE_NAME=branch
            RESULTS_NAME=pr-$PR_NUMBER
            BENCH_FILTER='stdb_raw'
            echo "Running benchmarks without sqlite"
          else
            BASELINE_NAME=master
            RESULTS_NAME=$GITHUB_SHA
            BENCH_FILTER='(stdb_raw|sqlite)'
            echo "Running benchmarks with sqlite"
          fi
          pushd crates/bench
          rm -rf .spacetime
          cargo bench --bench generic -- --save-baseline "$BASELINE_NAME" "$BENCH_FILTER"
          # sticker price benchmark
          cargo bench --bench generic -- --save-baseline "$BASELINE_NAME" 'stdb_module/.*/disk/update_bulk'
          cargo bench --bench special -- --save-baseline "$BASELINE_NAME"
          cargo run --bin summarize pack "$BASELINE_NAME"
          popd
          mkdir criterion-results
          [[ ! $PR_NUMBER ]] && cp target/criterion/$BASELINE_NAME.json criterion-results/
          cp target/criterion/$BASELINE_NAME.json criterion-results/$RESULTS_NAME.json

      # this will work for both PR and master
      - name: Upload criterion results to DO spaces
        uses: shallwefootball/s3-upload-action@master
        with:
          aws_key_id: ${{ secrets.AWS_KEY_ID }}
          aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
          aws_bucket: "spacetimedb-ci-benchmarks"
          source_dir: criterion-results
          endpoint: https://nyc3.digitaloceanspaces.com
          destination_dir: benchmarks

      - name: Fetch markdown summary PR
        run: |
          if [[ $PR_NUMBER ]]; then
            OLD=master
            NEW=pr-$PR_NUMBER
          else
            OLD=$(git rev-parse HEAD~1)
            NEW=$GITHUB_SHA
          fi
          echo "fetching https://benchmarks.spacetimedb.com/compare/$OLD/$NEW"
          curl -sS https://benchmarks.spacetimedb.com/compare/$OLD/$NEW > report.md

      - name: Post comment
        run: |
          BODY="<details><summary>Criterion benchmark results</summary>

          $(cat report.md)

          </details>"

          gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY"

      - name: Post failure comment
        if: ${{ failure() && env.COMMENT_UPDATE_URL }}
        run: |
          BODY="Benchmarking failed. Please check [the workflow run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details."
          gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY"

      - name: Clean up
        if: always()
        run: |
          rm -fr /stdb/*

  callgrind_benchmark:
    name: run callgrind benchmarks
    # DON'T run on benchmarks-runner, using docker on a self-hosted runner has
    # been broken for 4 years: https://github.com/actions/runner/issues/434 .
    # Fortunately, we can run on standard GitHub Actions infra because we don't care
    # about other stuff running on the machine!
    # runs-on: benchmarks-runner
    runs-on: ubuntu-latest
    timeout-minutes: 20 # on a successful run, runs in 8 minutes
    container:
      image: rust:1.93.0
      options: --privileged
    # filter for a comment containing 'benchmarks please'
    if: ${{ github.event_name != 'issue_comment' || (github.event.issue.pull_request && contains(github.event.comment.body, 'benchmarks please')) }}
    env:
      PR_NUMBER: ${{ github.event.inputs.pr_number || github.event.issue.number || null }}
    steps:
      - name: Clear stdb dir
        if: always()
        shell: bash
        run: |
          rm -fr /stdb/*

      - name: Install valgrind & iai-callgrind-runner
        run: |
          apt-get update
          apt-get install -y valgrind protobuf-compiler bash sudo curl gh
          cargo install --git https://github.com/clockworklabs/iai-callgrind.git --branch main iai-callgrind-runner
          git config --global --add safe.directory /__w/SpacetimeDB/SpacetimeDB

      # can't do this off self hosted:
      # - name: Enable CPU boost
      #   shell: bash
      #   run: echo "1" | sudo tee /sys/devices/system/cpu/cpufreq/boost

      - name: Check membership
        if: ${{ github.event_name == 'issue_comment' }}
        env:
          CONTRIB_ORG: clockworklabs
          COMMENT_AUTHOR: ${{ github.event.comment.user.login }}
          ORG_READ_TOKEN: ${{ secrets.ORG_READ_TOKEN }}
        shell: bash
        run: |
          curl -OL https://github.com/cli/cli/releases/download/v2.37.0/gh_2.37.0_linux_amd64.deb && sudo dpkg -i gh_2.37.0_linux_amd64.deb
          if [[ $(GH_TOKEN=$ORG_READ_TOKEN gh api --paginate /orgs/{owner}/members --jq 'any(.login == env.COMMENT_AUTHOR)') != true ]]; then
            gh pr comment $PR_NUMBER -b "Sorry, you don't have permission to run benchmarks."
            exit 1
          fi

      - name: find PR branch
        if: ${{ env.PR_NUMBER }}
        shell: bash
        run: echo "PR_REF=$(gh pr view $PR_NUMBER --json headRefName --jq .headRefName)" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v3
        with:
          ref: ${{ env.PR_REF || github.ref }}
          # if we're on master we want to know what the sha of HEAD~1 is so
          # that we can compare results from it to HEAD (in the "Fetch markdown
          # summary PR" step). otherwise, we can use a fully shallow checkout
          fetch-depth: ${{ env.PR_NUMBER && 1 || 2 }}

      - name: Unbork GitHub Actions state
        shell: bash
        run: |
          echo "Letting anybody touch our git repo, in order to avoid breaking other jobs"
          echo "This is necessary because we are running as root inside a docker image"
          chmod -R a+rw .

      - name: Post initial comment
        shell: bash
        run: |
          set -exo pipefail
          if [[ $PR_NUMBER ]]; then
            comment_parent=issues/$PR_NUMBER
            comment_update=issues/comments
          else
            comment_parent=commits/$GITHUB_SHA
            comment_update=comments
          fi
          comment_body="Callgrind benchmark in progress..."
          comment_id=$(gh api "/repos/{owner}/{repo}/$comment_parent/comments" -f body="$comment_body" --jq .id)
          echo "COMMENT_UPDATE_URL=/repos/{owner}/{repo}/$comment_update/$comment_id" >>$GITHUB_ENV

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          components: clippy
          toolchain: stable
          target: wasm32-unknown-unknown
          override: true

      - name: Build
        working-directory: crates/bench/
        shell: bash
        run: |
          cargo build --release

      - name: Install latest wasm-opt for module optimisations
        shell: bash
        run: |
          curl https://github.com/WebAssembly/binaryen/releases/download/version_116/binaryen-version_116-x86_64-linux.tar.gz -L | sudo tar xz -C /usr/local --strip-components=1

      # leave CPU boost on, doesn't affect callgrind!

      - name: Branch; run bench
        shell: bash
        run: |
          if [[ $PR_NUMBER ]]; then
            BASELINE_NAME=branch
            RESULTS_NAME=pr-$PR_NUMBER
            BENCH_FILTER='(special|stdb_module|stdb_raw)'
            echo "Running branch callgrind benchmarks"
          else
            BASELINE_NAME=master
            RESULTS_NAME=$GITHUB_SHA
            BENCH_FILTER='.*'
            echo "Running master callgrind benchmarks"
          fi
          pushd crates/bench
          rm -rf .spacetime
          cargo bench --bench callgrind -- --save-summary pretty-json
          cargo run --bin summarize pack-callgrind "$BASELINE_NAME"
          popd
          mkdir callgrind-results
          [[ ! $PR_NUMBER ]] && cp target/iai/$BASELINE_NAME.json callgrind-results/
          cp target/iai/$BASELINE_NAME.json callgrind-results/$RESULTS_NAME.json

      # this will work for both PR and master
      - name: Upload callgrind results to DO spaces
        uses: shallwefootball/s3-upload-action@master
        with:
          aws_key_id: ${{ secrets.AWS_KEY_ID }}
          aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
          aws_bucket: "spacetimedb-ci-benchmarks"
          source_dir: callgrind-results
          endpoint: https://nyc3.digitaloceanspaces.com
          destination_dir: callgrind-benchmarks

      - name: Fetch markdown summary PR
        shell: bash
        run: |
          if [[ $PR_NUMBER ]]; then
            OLD=master
            NEW=pr-$PR_NUMBER
          else
            OLD=$(git rev-parse HEAD~1)
            NEW=$GITHUB_SHA
          fi
          echo "fetching https://benchmarks.spacetimedb.com/compare_callgrind/$OLD/$NEW"
          curl -sS https://benchmarks.spacetimedb.com/compare_callgrind/$OLD/$NEW > report.md

      - name: Post comment
        shell: bash
        run: |
          BODY="<details><summary>Callgrind benchmark results</summary>
          $(cat report.md)
          </details>"
          gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY"

      - name: Post failure comment
        if: ${{ failure() && env.COMMENT_UPDATE_URL }}
        shell: bash
        run: |
          BODY="Benchmarking failed. Please check [the workflow run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details."
          gh api "$COMMENT_UPDATE_URL" -X PATCH -f body="$BODY"

      - name: Clean up
        if: always()
        shell: bash
        run: |
          rm -fr /stdb/*
          echo "Letting anybody touch our git repo, in order to avoid breaking other jobs"
          echo "This is necessary because we are running as root inside a docker image"
          chmod -R a+rw .


================================================
FILE: .github/workflows/check-merge-labels.yml
================================================
name: Check merge labels

on:
  pull_request:
    types: [opened, reopened, synchronize, labeled, unlabeled]
  merge_group:

permissions: read-all

jobs:
  label_checks:
    name: Check merge labels
    runs-on: ubuntu-latest
    steps:
      - if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'do not merge')
        run: |
          echo "This is labeled \"Do not merge\"."
          exit 1

      # If we're in a merge queue, the PR has already passed checks these checks before being added to the queue.
      - if: github.event_name == 'merge_group'
        run: echo "Merge group run; skipping merge-label checks."


================================================
FILE: .github/workflows/check-pr-base.yml
================================================
name: Git tree checks

on:
  pull_request:
    types: [opened, edited]
  merge_group:
permissions: read-all

jobs:
  check_base_ref:
    name: Based on `master`
    runs-on: ubuntu-latest
    steps:
      - id: not_based_on_master
        if: |
          github.event_name == 'pull_request' &&
          github.event.pull_request.base.ref != 'master'
        run: |
          echo "This PR is not based on master. Please wait until the base PR merges."
          exit 1


================================================
FILE: .github/workflows/ci.yml
================================================
on:
  pull_request:
  push:
    branches:
      - master
  merge_group:
  workflow_dispatch:
    inputs:
      pr_number:
        description: "Pull Request Number"
        required: false
        default: ""

name: CI

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.inputs.pr_number || format('sha-{0}', github.sha) }}
  cancel-in-progress: true

jobs:
  smoketests:
    needs: [lints]
    name: Smoketests (${{ matrix.name }})
    strategy:
      matrix:
        include:
          - name: Linux
            runner: spacetimedb-new-runner-2
          - name: Windows
            runner: windows-latest
    runs-on: ${{ matrix.runner }}
    timeout-minutes: 120
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
      SPACETIMEDB_CPP_DIR: ${{ github.workspace }}/crates/bindings-cpp
    steps:
      - name: Find Git ref
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        shell: bash
        run: |
          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
          if test -n "${PR_NUMBER}"; then
            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          cache-on-failure: false
          cache-all-crates: true
          cache-workspace-crates: true
          prefix-key: v1

      - uses: actions/setup-dotnet@v4
        with:
          global-json-file: global.json

      # nodejs and pnpm are required for the typescript quickstart smoketest
      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18

      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      # Install emscripten for C++ module compilation tests.
      - name: Install emscripten (Linux)
        if: runner.os == 'Linux'
        shell: bash
        run: |
          git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
          cd ~/emsdk
          ./emsdk install 4.0.21
          ./emsdk activate 4.0.21

      - name: Install emscripten (Windows)
        if: runner.os == 'Windows'
        shell: pwsh
        run: |
          git clone https://github.com/emscripten-core/emsdk.git $env:USERPROFILE\emsdk
          cd $env:USERPROFILE\emsdk
          .\emsdk install 4.0.21
          .\emsdk activate 4.0.21

      - name: Install psql (Windows)
        if: runner.os == 'Windows'
        shell: pwsh
        run: |
          # Fail properly if any individual command fails
          $ErrorActionPreference = 'Stop'
          $PSNativeCommandUseErrorActionPreference = $true
          choco install psql -y --no-progress
          # Check for existence, since `choco` doesn't seem to fail the step if it fails to install..
          # See https://github.com/clockworklabs/SpacetimeDB/pull/4399 for more background.
          Get-Command psql

      - name: Update dotnet workloads
        if: runner.os == 'Windows'
        run: |
          # Fail properly if any individual command fails
          $ErrorActionPreference = 'Stop'
          $PSNativeCommandUseErrorActionPreference = $true

          cd modules
          # the sdk-manifests on windows-latest are messed up, so we need to update them
          dotnet workload config --update-mode manifests
          dotnet workload update

      - name: Override NuGet packages
        shell: bash
        run: |
          dotnet pack -c Release crates/bindings-csharp/BSATN.Runtime
          dotnet pack -c Release crates/bindings-csharp/Runtime
          cd sdks/csharp
          ./tools~/write-nuget-config.sh ../..

      # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a.
      # ChatGPT suspects that this could be due to different build invocations using the same target dir,
      # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with
      # `cargo build --manifest-path` (which apparently build different dependency trees).
      # However, we've been unable to fix it so... /shrug
      - name: Check v8 outputs
        shell: bash
        run: |
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/debug/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean -p v8 || true
            cargo build -p v8
          fi

      - name: Install cargo-nextest
        uses: taiki-e/install-action@nextest

      # --test-threads=1 eliminates contention in the C# tests where they fight over bindings
      # build artifacts.
      # It also seemed to improve performance a fair amount (11m -> 6m)
      - name: Run smoketests (Linux)
        if: runner.os == 'Linux'
        shell: bash
        run: |
          if [ -f ~/emsdk/emsdk_env.sh ]; then
            source ~/emsdk/emsdk_env.sh
          fi
          cargo ci smoketests -- --test-threads=1

      # Due to Emscripten PATH issues this was separated to make sure OpenSSL still builds correctly
      - name: Run smoketests (Windows)
        if: runner.os == 'Windows'
        shell: pwsh
        run: |
          if (Test-Path "$env:USERPROFILE\emsdk\emsdk_env.ps1") {
            & "$env:USERPROFILE\emsdk\emsdk_env.ps1" | Out-Null
          }
          cargo ci smoketests -- --test-threads=1          

      - name: Check for changes
        run: |
          tools/check-diff.sh crates/smoketests || {
              echo 'Error: There is a diff in the smoketests directory.'
              exit 1
          }

  test:
    needs: [lints]
    name: Test Suite
    runs-on: spacetimedb-new-runner-2

    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Find Git ref
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
          if test -n "${PR_NUMBER}"; then
            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the smoketests job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      - uses: actions/setup-dotnet@v3
        with:
          global-json-file: global.json

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      # Install cmake and emscripten for C++ module compilation tests.
      - name: Install cmake and emscripten
        run: |
          sudo apt-get update
          sudo apt-get install -y cmake
          git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
          cd ~/emsdk
          ./emsdk install 4.0.21
          ./emsdk activate 4.0.21

      - name: Build typescript module sdk
        working-directory: crates/bindings-typescript
        run: pnpm build

        # Source emsdk environment to make emcc (Emscripten compiler) available in PATH.
      - name: Run tests
        run: |
          source ~/emsdk/emsdk_env.sh
          cargo ci test

  lints:
    name: Lints
    runs-on: spacetimedb-new-runner-2
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - run: echo ::add-matcher::.github/workflows/rust_matcher.json

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the smoketests job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      - uses: actions/setup-dotnet@v3
        with:
          global-json-file: global.json

      - name: Run ci lint
        run: cargo ci lint

  wasm_bindings:
    name: Build and test wasm bindings
    runs-on: spacetimedb-new-runner-2
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - uses: actions/checkout@v3

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - run: echo ::add-matcher::.github/workflows/rust_matcher.json

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the smoketests job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      - name: Run bindgen tests
        run: cargo ci wasm-bindings

  publish_checks:
    name: Check that packages are publishable
    runs-on: spacetimedb-new-runner-2
    permissions: read-all
    steps:
      - uses: actions/checkout@v3
      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - name: Set up Python env
        run: |
          test -d venv || python3 -m venv venv
          venv/bin/pip3 install argparse toml
      - name: Run checks
        run: |
          set -ueo pipefail
          FAILED=0
          ROOTS=(spacetimedb spacetimedb-sdk)
          CRATES=$(venv/bin/python3 tools/find-publish-list.py --recursive --directories --quiet "${ROOTS[@]}")
          for crate_dir in $CRATES; do
            if ! venv/bin/python3 tools/crate-publish-checks.py "${crate_dir}"; then
              FAILED=$(( $FAILED + 1 ))
            fi
          done
          if [ $FAILED -gt 0 ]; then
            exit 1
          fi

  update:
    name: Test spacetimedb-update flow (${{ matrix.target }})
    permissions: read-all
    strategy:
      matrix:
        include:
          - { target: x86_64-unknown-linux-gnu, runner: spacetimedb-new-runner-2 }
          - { target: aarch64-unknown-linux-gnu, runner: arm-runner }
          - { target: aarch64-apple-darwin, runner: macos-latest }
          - { target: x86_64-pc-windows-msvc, runner: windows-latest }
    runs-on: ${{ matrix.runner }}
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Install Rust
        uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Install rust target
        run: rustup target add ${{ matrix.target }}

      - name: Install packages
        if: ${{ matrix.runner == 'arm-runner' }}
        shell: bash
        run: sudo apt install -y libssl-dev

      - name: Build spacetimedb-update
        run: cargo build --features github-token-auth --target ${{ matrix.target }} -p spacetimedb-update
        if: runner.os == 'Windows'

      - name: Run self-install
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        shell: bash
        run: |
          ROOT_DIR="$(mktemp -d)"
          # NOTE(bfops): We need the `github-token-auth` feature because we otherwise tend to get ratelimited when we try to fetch `/releases/latest`.
          # My best guess is that, on the GitHub runners, the "anonymous" ratelimit is shared by *all* users of that runner (I think this because it
          # happens very frequently on the `macos-runner`, but we haven't seen it on any others).
          cargo run --features github-token-auth --target ${{ matrix.target }} -p spacetimedb-update -- self-install --root-dir="${ROOT_DIR}" --yes
          "${ROOT_DIR}"/spacetime --root-dir="${ROOT_DIR}" help
        if: runner.os == 'Windows'

      - name: Test spacetimedb-update
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: cargo ci update-flow --target=${{ matrix.target }} --github-token-auth
        if: runner.os != 'Windows'

  unreal_engine_tests:
    name: Unreal Engine Tests
    # This can't go on e.g. ubuntu-latest because that runner runs out of disk space. ChatGPT suggested that the general solution tends to be to use
    # a custom runner.
    runs-on: spacetimedb-new-runner-2
    # Disable the tests because they are very flaky at the moment.
    # TODO: Remove this line and re-enable the `if` line just below here.
    if: false
    # Skip if this is an external contribution. GitHub secrets will be empty, so the step would fail anyway.
    # if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork }}
    container:
      image: ghcr.io/epicgames/unreal-engine:dev-5.6
      credentials:
        # Note(bfops): I don't think that `github.actor` needs to match the user that the token is for, because I'm using a token for my account and
        # it seems to be totally happy.
        # However, the token needs to be for a user that has access to the EpicGames org (see
        # https://dev.epicgames.com/documentation/en-us/unreal-engine/downloading-source-code-in-unreal-engine?application_version=5.6)
        username: ${{ github.actor }}
        password: ${{ secrets.GHCR_TOKEN }}
      # Run as root because otherwise we get permission denied for various directories inside the container. I tried doing dances to allow it to run
      # without this (reassigning env vars and stuff), but was unable to get it to work and it felt like an uphill battle.
      options: --user 0:0
    steps:
      # Uncomment this before merging so that it will run properly if run manually through the GH actions flow. It was playing weird with rolled back
      # commits though.
      #      - name: Find Git ref
      #        env:
      #          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      #        shell: bash
      #        run: |
      #          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
      #          if test -n "${PR_NUMBER}"; then
      #            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
      #          else
      #            GIT_REF="${{ github.ref }}"
      #          fi
      #          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"
      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}
      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - name: Run Unreal Engine tests
        working-directory: sdks/unreal
        env:
          UE_ROOT_PATH: /home/ue4/UnrealEngine
        run: |

          apt-get update
          apt-get install -y acl curl ca-certificates

          REPO="$GITHUB_WORKSPACE"
          # Let ue4 read/write the workspace & tool caches without changing ownership
          for p in "$REPO" "${RUNNER_TEMP:-/__t}" "${RUNNER_TOOL_CACHE:-/__t}"; do
            [ -d "$p" ] && setfacl -R -m u:ue4:rwX -m d:u:ue4:rwX "$p" || true
          done

          # Rust tool caches live under the runner tool cache so they persist
          export CARGO_HOME="${RUNNER_TOOL_CACHE:-/__t}/cargo"
          export RUSTUP_HOME="${RUNNER_TOOL_CACHE:-/__t}/rustup"
          mkdir -p "$CARGO_HOME" "$RUSTUP_HOME"
          chown -R ue4:ue4 "$CARGO_HOME" "$RUSTUP_HOME"

          # Make sure the UE build script is executable (and parents traversable)
          UE_DIR="${UE_ROOT_PATH:-/home/ue4/UnrealEngine}"
          chmod a+rx "$UE_DIR" "$UE_DIR/Engine" "$UE_DIR/Engine/Build" "$UE_DIR/Engine/Build/BatchFiles/Linux" || true
          chmod a+rx "$UE_DIR/Engine/Build/BatchFiles/Linux/Build.sh" || true

          # Run the build & tests as ue4 (who owns the UE tree)
          sudo -E -H -u ue4 env \
            HOME=/home/ue4 \
            XDG_CONFIG_HOME=/home/ue4/.config \
            CARGO_HOME="$CARGO_HOME" \
            RUSTUP_HOME="$RUSTUP_HOME" \
            PATH="$CARGO_HOME/bin:$PATH" \
            bash -lc '
              set -euxo pipefail
              # Install rustup for ue4 if needed (uses the shared caches)
              if ! command -v cargo >/dev/null 2>&1; then
                curl -sSf https://sh.rustup.rs | sh -s -- -y
              fi
              rustup show >/dev/null
              git config --global --add safe.directory "$GITHUB_WORKSPACE" || true

              cd "$GITHUB_WORKSPACE/sdks/unreal"
              cargo --version
              cargo test -- --test-threads=1
            '

  ci_command_docs:
    name: Check CI command docs
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Find Git ref
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        shell: bash
        run: |
          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
          if test -n "${PR_NUMBER}"; then
            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Check for docs change
        run: cargo ci self-docs --check

  cli_docs:
    name: Check CLI docs
    permissions: read-all
    runs-on: spacetimedb-new-runner-2
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Find Git ref
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        shell: bash
        run: |
          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
          if test -n "${PR_NUMBER}"; then
            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the smoketests job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      - name: Check for docs change
        run: |
          cargo ci cli-docs

  llm_ci_check:
    name: Verify LLM benchmark is up to date
    permissions:
      contents: read
    runs-on: ubuntu-latest
    # Disable the tests because they are causing us headaches with merge conflicts and re-runs etc.
    if: false
    steps:
      # Build the tool from master to ensure consistent hash computation
      # with the llm-benchmark-update workflow (which also uses master's tool).
      - name: Checkout master (build tool from trusted code)
        uses: actions/checkout@v4
        with:
          ref: master
          fetch-depth: 1

      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Install llm-benchmark tool from master
        run: |
          cargo install --path tools/xtask-llm-benchmark --locked
          command -v llm_benchmark

      # Now checkout the PR branch to verify its benchmark files
      - name: Checkout PR branch
        uses: actions/checkout@v4
        with:
          clean: false

      - name: Run hash check (both langs)
        run: llm_benchmark ci-check

  unity-testsuite:
    needs: [lints]
    # Skip if this is an external contribution.
    # The license secrets will be empty, so the step would fail anyway.
    if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork }}
    permissions:
      contents: read
      checks: write
    runs-on: spacetimedb-unity-runner
    timeout-minutes: 30
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Checkout repository
        id: checkout-stdb
        uses: actions/checkout@v4

      # Run cheap .NET tests first. If those fail, no need to run expensive Unity tests.

      - name: Setup dotnet
        uses: actions/setup-dotnet@v3
        with:
          global-json-file: global.json

      - name: Override NuGet packages
        run: |
          dotnet pack crates/bindings-csharp/BSATN.Runtime
          dotnet pack crates/bindings-csharp/Runtime

          # Write out the nuget config file to `nuget.config`. This causes the spacetimedb-csharp-sdk repository
          # to be aware of the local versions of the `bindings-csharp` packages in SpacetimeDB, and use them if
          # available. Otherwise, `spacetimedb-csharp-sdk` will use the NuGet versions of the packages.
          # This means that (if version numbers match) we will test the local versions of the C# packages, even
          # if they're not pushed to NuGet.
          # See https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file for more info on the config file.
          cd sdks/csharp
          ./tools~/write-nuget-config.sh ../..

      - name: Restore .NET solution
        working-directory: sdks/csharp
        run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.sln

      # Now, setup the Unity tests.
      - name: Patch spacetimedb dependency in Cargo.toml
        working-directory: demo/Blackholio/server-rust
        run: |
          sed -i "s|spacetimedb *=.*|spacetimedb = \{ path = \"../../../crates/bindings\" \}|" Cargo.toml
          cat Cargo.toml

      - name: Install Rust toolchain
        uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the main CI job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a.
      # ChatGPT suspects that this could be due to different build invocations using the same target dir,
      # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with
      # `cargo build --manifest-path` (which apparently build different dependency trees).
      # However, we've been unable to fix it so... /shrug
      - name: Check v8 outputs
        run: |
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/release/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean --release -p v8 || true
            cargo build --release -p v8
          fi

      - name: Install SpacetimeDB CLI from the local checkout
        run: |
          export CARGO_HOME="$HOME/.cargo"
          echo "$CARGO_HOME/bin" >> "$GITHUB_PATH"
          cargo install --force --path crates/cli --locked --message-format=short
          cargo install --force --path crates/standalone --locked --message-format=short
          # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules).
          ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime

      - name: Generate client bindings
        working-directory: demo/Blackholio/server-rust
        run: bash ./generate.sh -y

      - name: Check for changes
        run: |
          tools/check-diff.sh demo/Blackholio/client-unity/Assets/Scripts/autogen || {
              echo 'Error: Bindings are dirty. Please run `demo/Blackholio/server-rust/generate.sh`.'
              exit 1
          }

      - name: Hydrate Unity SDK DLLs
        run: cargo ci dlls

      - name: Check Unity meta files
        uses: DeNA/unity-meta-check@v3
        with:
          enable_pr_comment: ${{ github.event_name == 'pull_request' }}
          target_path: sdks/csharp
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

      - name: Start SpacetimeDB
        run: |
          spacetime start &
          disown

      - name: Publish unity-tests module to SpacetimeDB
        working-directory: demo/Blackholio/server-rust
        run: |
          spacetime logout && spacetime login --server-issued-login local
          bash ./publish.sh

      - name: Patch com.clockworklabs.spacetimedbsdk dependency in manifest.json
        working-directory: demo/Blackholio/client-unity/Packages
        run: |
          yq e -i '.dependencies["com.clockworklabs.spacetimedbsdk"] = "file:../../../../sdks/csharp"' manifest.json
          cat manifest.json

      - uses: actions/cache@v3
        with:
          path: demo/Blackholio/client-unity/Library
          key: Unity-${{ github.head_ref }}
          restore-keys: Unity-

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}

      - name: Run Unity tests
        uses: game-ci/unity-test-runner@v4
        with:
          unityVersion: 2022.3.32f1 # Adjust Unity version to a valid tag
          projectPath: demo/Blackholio/client-unity # Path to the Unity project subdirectory
          githubToken: ${{ secrets.GITHUB_TOKEN }}
          testMode: playmode
          useHostNetwork: true
          artifactsPath: ""
        env:
          UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
          UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
          UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}

  csharp-testsuite:
    needs: [lints]
    runs-on: spacetimedb-new-runner-2
    timeout-minutes: 30
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Checkout repository
        id: checkout-stdb
        uses: actions/checkout@v4

      # Run cheap .NET tests first. If those fail, no need to run expensive Unity tests.

      - name: Setup dotnet
        uses: actions/setup-dotnet@v3
        with:
          global-json-file: global.json

      - name: Override NuGet packages
        run: |
          dotnet pack crates/bindings-csharp/BSATN.Runtime
          dotnet pack crates/bindings-csharp/Runtime

          # Write out the nuget config file to `nuget.config`. This causes the spacetimedb-csharp-sdk repository
          # to be aware of the local versions of the `bindings-csharp` packages in SpacetimeDB, and use them if
          # available. Otherwise, `spacetimedb-csharp-sdk` will use the NuGet versions of the packages.
          # This means that (if version numbers match) we will test the local versions of the C# packages, even
          # if they're not pushed to NuGet.
          # See https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file for more info on the config file.
          cd sdks/csharp
          ./tools~/write-nuget-config.sh ../..

      - name: Restore .NET solution
        working-directory: sdks/csharp
        run: dotnet restore --configfile NuGet.Config SpacetimeDB.ClientSDK.sln

      - name: Run .NET tests
        working-directory: sdks/csharp
        run: dotnet test -warnaserror --no-restore

      - name: Verify C# formatting
        working-directory: sdks/csharp
        run: dotnet format --no-restore --verify-no-changes SpacetimeDB.ClientSDK.sln

      - name: Install Rust toolchain
        uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the main CI job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a.
      # ChatGPT suspects that this could be due to different build invocations using the same target dir,
      # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with
      # `cargo build --manifest-path` (which apparently build different dependency trees).
      # However, we've been unable to fix it so... /shrug
      - name: Check v8 outputs
        run: |
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/debug/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean -p v8 || true
            cargo build -p v8
          fi
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/release/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean --release -p v8 || true
            cargo build --release -p v8
          fi

      - name: Install SpacetimeDB CLI from the local checkout
        run: |
          export CARGO_HOME="$HOME/.cargo"
          echo "$CARGO_HOME/bin" >> "$GITHUB_PATH"
          cargo install --force --path crates/cli --locked --message-format=short
          cargo install --force --path crates/standalone --features allow_loopback_http_for_tests --locked --message-format=short
          # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules).
          ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime

      - name: Check quickstart-chat bindings are up to date
        working-directory: sdks/csharp
        run: |
          bash tools~/gen-quickstart.sh
          "${GITHUB_WORKSPACE}"/tools/check-diff.sh examples~/quickstart-chat || {
              echo 'Error: quickstart-chat bindings have changed. Please run `sdks/csharp/tools~/gen-quickstart.sh`.'
              exit 1
          }

      # TODO: Re-enable this once csharp is using the v2 ws api.
      # - name: Check client-api bindings are up to date
      #   working-directory: sdks/csharp
      #   run: |
      #     bash tools~/gen-client-api.sh
      #     "${GITHUB_WORKSPACE}"/tools/check-diff.sh src/SpacetimeDB/ClientApi || {
      #         echo 'Error: Client API bindings are dirty. Please run `sdks/csharp/tools~/gen-client-api.sh`.'
      #         exit 1
      #     }

      - name: Start SpacetimeDB
        run: |
          spacetime start &
          disown

      - name: Run regression tests
        run: |
          bash sdks/csharp/tools~/run-regression-tests.sh
          tools/check-diff.sh sdks/csharp/examples~/regression-tests || {
              echo 'Error: Bindings are dirty. Please run `sdks/csharp/tools~/gen-regression-tests.sh`.'
              exit 1
          }

  internal-tests:
    name: Internal Tests
    needs: [lints]
    # Skip if not a PR or a push to master
    # Skip if this is an external contribution. GitHub secrets will be empty, so the step would fail anyway.
    if: ${{ (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/master'))
      && (github.event_name != 'pull_request' || !github.event.pull_request.head.repo.fork) }}
    permissions:
      contents: read
    runs-on: ubuntu-latest
    env:
      TARGET_OWNER: clockworklabs
      TARGET_REPO: SpacetimeDBPrivate
    steps:
      - id: dispatch
        name: Trigger tests
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.SPACETIMEDB_PRIVATE_TOKEN }}
          script: |
            const workflowId = 'ci.yml';
            const targetRef = 'master';
            const targetOwner = process.env.TARGET_OWNER;
            const targetRepo = process.env.TARGET_REPO;
            // Use the ref for pull requests because the head sha is brittle (github does some extra dance where it merges in master).
            const publicRef = (context.eventName === 'pull_request') ? context.payload.pull_request.head.ref : context.sha;
            const preDispatch = new Date().toISOString();
  
            // Dispatch the workflow in the target repository
            await github.rest.actions.createWorkflowDispatch({
              owner: targetOwner,
              repo: targetRepo,
              workflow_id: workflowId,
              ref: targetRef,
              inputs: { public_ref: publicRef }
            });
  
            const sleep = (ms) => new Promise(r => setTimeout(r, ms));
  
            // Find the dispatched run by name
            let runId = null;
            for (let attempt = 0; attempt < 20 && !runId; attempt++) { // up to ~10 minutes to locate the run
              await sleep(5000);
              const runsResp = await github.rest.actions.listWorkflowRuns({
                owner: targetOwner,
                repo: targetRepo,
                workflow_id: workflowId,
                event: 'workflow_dispatch',
                branch: targetRef,
                per_page: 50,
              });
  
              const expectedName = `CI [public_ref=${publicRef}]`;
              const candidates = runsResp.data.workflow_runs
                .filter(r => r.name === expectedName && new Date(r.created_at) >= new Date(preDispatch))
                .sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
  
              if (candidates.length > 0) {
                runId = candidates[0].id;
                break;
              }
            }
  
            if (!runId) {
              core.setFailed('Failed to locate dispatched run in the private repository.');
              return;
            }
  
            const runUrl = `https://github.com/${targetOwner}/${targetRepo}/actions/runs/${runId}`;
            core.info(`View run: ${runUrl}`);
            core.setOutput('run_id', String(runId));
            core.setOutput('run_url', runUrl);
  
      - name: Wait for Internal Tests to complete
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.SPACETIMEDB_PRIVATE_TOKEN }}
          script: |
            const targetOwner = process.env.TARGET_OWNER;
            const targetRepo = process.env.TARGET_REPO;
            const runId = Number(`${{ steps.dispatch.outputs.run_id }}`);
            const runUrl = `${{ steps.dispatch.outputs.run_url }}`;
            const sleep = (ms) => new Promise(r => setTimeout(r, ms));
  
            core.info(`Waiting for workflow result... ${runUrl}`);
  
            let conclusion = null;
            for (let attempt = 0; attempt < 240; attempt++) { // up to ~2 hours
              const runResp = await github.rest.actions.getWorkflowRun({
                owner: targetOwner,
                repo: targetRepo,
                run_id: runId
              });
              const { status, conclusion: c } = runResp.data;
              if (status === 'completed') {
                conclusion = c || 'success';
                break;
              }
              await sleep(30000);
            }
  
            if (!conclusion) {
              core.setFailed('Timed out waiting for private workflow to complete.');
              return;
            }
  
            if (conclusion !== 'success') {
              core.setFailed(`Private workflow failed with conclusion: ${conclusion}`);
            }
  
      - name: Cancel invoked run if workflow cancelled
        if: ${{ cancelled() }}
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.SPACETIMEDB_PRIVATE_TOKEN }}
          script: |
            const targetOwner = process.env.TARGET_OWNER;
            const targetRepo = process.env.TARGET_REPO;
            const runId = Number(`${{ steps.dispatch.outputs.run_id }}`);
            if (!runId) return;
            await github.rest.actions.cancelWorkflowRun({
              owner: targetOwner,
              repo: targetRepo,
              run_id: runId,
            });

  global_json_policy:
    name: Verify global.json files are symlinks
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - name: Find Git ref
        env:
          PR_NUMBER: ${{ github.event.inputs.pr_number }}
        run: |
          if [ -n "$PR_NUMBER" ]; then
            GIT_REF="refs/pull/$PR_NUMBER/merge"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"

      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}

      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          save-if: false
          prefix-key: v1

      - name: Check global.json policy
        run: cargo ci global-json-policy

  warn-python-smoketests:
    name: Check for Python smoketest edits
    runs-on: ubuntu-latest
    if: github.event_name == 'pull_request'
    permissions:
      contents: read
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Fail if Python smoketests were modified
        run: |
          MERGE_BASE="$(git merge-base origin/${{ github.base_ref }} HEAD)"
          PYTHON_SMOKETEST_CHANGES="$(git diff --name-only "$MERGE_BASE" HEAD -- 'smoketests/**.py')"

          if [ -n "$PYTHON_SMOKETEST_CHANGES" ]; then
            echo "::error::This PR modifies legacy Python smoketests. Please add new tests to the Rust smoketests in crates/smoketests/ instead."
            echo ""
            echo "Changed files:"
            echo "$PYTHON_SMOKETEST_CHANGES"
            echo ""
            echo "The Python smoketests are being replaced by Rust smoketests."
            echo "See crates/smoketests/DEVELOP.md for instructions on adding Rust smoketests."
            exit 1
          fi

          echo "No Python smoketest changes detected."

  smoketests_mod_rs_complete:
    name: Check smoketests/mod.rs is complete
    runs-on: ubuntu-latest
    permissions:
      contents: read
    env:
      CARGO_TARGET_DIR: ${{ github.workspace }}/target
    steps:
      - name: Find Git ref
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        shell: bash
        run: |
          PR_NUMBER="${{ github.event.inputs.pr_number || null }}"
          if test -n "${PR_NUMBER}"; then
            GIT_REF="$( gh pr view --repo clockworklabs/SpacetimeDB $PR_NUMBER --json headRefName --jq .headRefName )"
          else
            GIT_REF="${{ github.ref }}"
          fi
          echo "GIT_REF=${GIT_REF}" >>"$GITHUB_ENV"
      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          ref: ${{ env.GIT_REF }}
      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          cache-on-failure: false
          cache-all-crates: true
          cache-workspace-crates: true
          prefix-key: v1

      # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a.
      # ChatGPT suspects that this could be due to different build invocations using the same target dir,
      # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with
      # `cargo build --manifest-path` (which apparently build different dependency trees).
      # However, we've been unable to fix it so... /shrug
      - name: Check v8 outputs
        shell: bash
        run: |
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/debug/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean -p v8 || true
            cargo build -p v8
          fi

      - name: Verify crates/smoketests/tests/smoketests/mod.rs lists all entries
        run: |
          cargo ci smoketests check-mod-list


================================================
FILE: .github/workflows/discord-posts.yml
================================================
name: Discord notifications

on:
  pull_request:
    types: [closed]

jobs:
  discordNotification:
    runs-on: ubuntu-latest
    if: github.event.pull_request.merged == true &&
      github.event.pull_request.base.ref == 'master'
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - name: Set up GitHub CLI
        run: |
          curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /usr/share/keyrings/githubcli-archive-keyring.gpg > /dev/null
          sudo apt-get install -y apt-transport-https
          echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list
          sudo apt-get update
          sudo apt-get install -y gh

      - name: Send Discord notification
        env:
          DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
          PR_TITLE: ${{ github.event.pull_request.title }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
          PR_URL: ${{ github.event.pull_request.html_url }}
          MENTION_ON_FAILURE: ${{ secrets.DEV_OPS_ROLE_ID }}
          DISCORD_USER_MAP: ${{ secrets.DISCORD_USER_MAP }}
        run: |
          message="PR merged: [(#${PR_NUMBER}) ${PR_TITLE}](<${PR_URL}>)"
          # Note that anything besides success is treated as a failure (e.g. if the check did not run at all, or if it is still pending).
          FAILED_CHECKS="$(
            gh pr checks "${{github.event.pull_request.html_url}}" \
              --json 'workflow,state,name' |
              jq '.[]
                | select(.workflow != "Discord notifications")
                | select(.state != "SUCCESS" and .state != "NEUTRAL" and .state != "SKIPPED")
              ' |
              jq -r '"\(.workflow) / \(.name): \(.state)"'
          )"

          # Lookup PR author's Discord ID from the provided JSON map (if any)
          author_discord_id="$(
            jq -r \
              --arg u "${{ github.event.pull_request.user.login }}" \
              '.[$u] // empty' \
              <<<"${DISCORD_USER_MAP}"
          )"
          if [ -z "${author_discord_id}" ]; then
            echo "Warning: PR author not found not found in USER_LOOKUP_JSON"
          fi

          message+=$'\n'
          if [[ -z "${FAILED_CHECKS}" ]]; then
            message+='All checks passed.'
          else
            message+="${FAILED_CHECKS}"
            message+=$'\n'
            # This uses special Discord syntax for pinging a particular role.
            # Note the '&' - this is the difference between pinging a *role* and pinging a *person*.
            if [[ -n "${author_discord_id}" ]]; then
              message+="<@${author_discord_id}> please investigate these failures."
            fi
            message+=$'\n'
            message+="(cc <@&${MENTION_ON_FAILURE}> - Releases may be affected)"
          fi
          # Use `jq` to construct the json data blob in the format required by the webhook.
          data="$(jq --null-input --arg msg "$message" '.content=$msg')"
          curl -X POST -H 'Content-Type: application/json' -d "$data" "${DISCORD_WEBHOOK_URL}"


================================================
FILE: .github/workflows/docker.yml
================================================
name: Docker Image

on:
  push:
    branches:
      - master
      - staging
      - dev
    tags:
      - 'v*'

jobs:
  docker-amd64:
    runs-on: ubuntu-latest
    name: Build DockerHub AMD64 Container
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: |
            clockworklabs/spacetimedb
          tags: |
            type=ref,event=tag
            type=sha,prefix=commit-,suffix=-amd64
          flavor: |
            latest=false
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache Docker layers
        uses: actions/cache@v4
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}
      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          file: crates/standalone/Dockerfile
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new
          platforms: linux/amd64

      - name: Merge images
        run: |
          ./tools/merge-docker-images.sh clockworklabs/spacetimedb "commit-${GITHUB_SHA:0:7}" "${GITHUB_SHA:0:7}-full"

        # This ugly bit is necessary if you don't want your cache to grow forever
        # until it hits GitHub's limit of 5GB.
        # Temp fix
        # https://github.com/docker/build-push-action/issues/252
        # https://github.com/moby/buildkit/issues/1896
      - name: Move cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache

  docker-arm64:
    runs-on: arm-runner
    name: Build DockerHub ARM64 Container
    steps:
      - name: Install jq
        run: sudo apt-get install jq -y
      - name: Prune stale references
        run: git remote prune origin
      - name: Checkout
        uses: actions/checkout@v3
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: |
            clockworklabs/spacetimedb
          tags: |
            type=ref,event=tag
            type=sha,prefix=commit-,suffix=-arm64
          flavor: |
            latest=false
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache Docker layers
        uses: actions/cache@v4
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}
      - name: Build and push
        uses: docker/build-push-action@v4
        with:
          context: .
          file: crates/standalone/Dockerfile
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
          cache-from: type=local,src=/tmp/.buildx-cache
          cache-to: type=local,dest=/tmp/.buildx-cache-new
          platforms: linux/arm64/v8

      - name: Merge images
        run: |
          ./tools/merge-docker-images.sh clockworklabs/spacetimedb "commit-${GITHUB_SHA:0:7}" "${GITHUB_SHA:0:7}-full"

        # This ugly bit is necessary if you don't want your cache to grow forever
        # until it hits GitHub's limit of 5GB.
        # Temp fix
        # https://github.com/docker/build-push-action/issues/252
        # https://github.com/moby/buildkit/issues/1896
      - name: Move cache
        run: |
          rm -rf /tmp/.buildx-cache
          mv /tmp/.buildx-cache-new /tmp/.buildx-cache


================================================
FILE: .github/workflows/docs-publish.yaml
================================================
name: Docs / Publish

permissions:
  contents: read

on:
  push:
    branches:
      - docs/release

jobs:
  build:
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '22'
      
      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: Get pnpm store directory
        working-directory: sdks/typescript
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install dependencies
        working-directory: docs
        run: pnpm install

      - name: Docusaurus build
        working-directory: docs
        run: pnpm build

      - name: Publish docs to S3
        uses: shallwefootball/s3-upload-action@master
        with:
          aws_key_id: ${{ secrets.DOCS_AWS_KEY_ID }}
          aws_secret_access_key: ${{ secrets.DOCS_AWS_SECRET_ACCESS_KEY}}
          aws_bucket: spacetimedb-docs
          source_dir: docs/build
          destination_dir: 'docs'


================================================
FILE: .github/workflows/docs-test.yaml
================================================
name: Docs / Test
permissions:
  contents: read

on:
  pull_request:

jobs:
  build:
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '22'
      
      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: Get pnpm store directory
        working-directory: sdks/typescript
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install dependencies
        working-directory: docs
        run: pnpm install

      - name: Docusaurus build
        working-directory: docs
        run: pnpm build


================================================
FILE: .github/workflows/llm-benchmark-update.yml
================================================
name: Update LLM benchmarks

on:
  workflow_dispatch:
    inputs:
      pr_number:
        description: "Pull Request Number"
        required: true
  issue_comment:
    types: [created] # only run when the comment is first created

permissions:
  contents: read
  pull-requests: write
  issues: write

concurrency:
  group: >-
    llm-benchmark
    -${{ github.event_name == 'issue_comment' && github.event.issue.number || inputs.pr_number }}
    ${{ github.event_name == 'issue_comment' && !startsWith(github.event.comment.body, '/update-llm-benchmark') && '-unrelated-comment' }}
  cancel-in-progress: true

jobs:
  update-llm-benchmark:
    # Runnable either with a comment that starts with /update-llm-benchmark
    # or by manually dispatching
    if: |
      (github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '/update-llm-benchmark')) ||
      (github.event_name == 'workflow_dispatch')
    runs-on: spacetimedb-new-runner
    container:
      image: localhost:5000/spacetimedb-ci:latest
      options: >-
        --privileged
    steps:
      # Here we install the spacetime CLI for faster execution of the tests
      # SpacetimeDB itself is not under test here, rather it's the docs.
      # If we want to change that it is possible to have the benchmark compile
      # SpacetimeDB from source.
      - name: Install spacetime CLI
        run: |
          curl -sSf https://install.spacetimedb.com | sh -s -- -y
          echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Load PR info
        id: pr
        uses: actions/github-script@v7
        with:
          script: |
            let prNumber;
            if (context.eventName === 'issue_comment') {
              prNumber = context.payload.issue.number;
            } else if (context.eventName === 'workflow_dispatch') {
              const raw = context.payload.inputs?.pr_number;
              if (!raw || !/^\d+$/.test(raw)) {
                core.setFailed(`Invalid pr_number input: '${raw}'.`);
                return;
              }
              prNumber = Number(raw);
            } else {
              core.setFailed(`Unsupported event: ${context.eventName}`);
              return;
            }

            const { data: pr } = await github.rest.pulls.get({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: prNumber,
            });

            core.setOutput('number', String(prNumber));
            core.setOutput('head_ref', pr.head.ref);
            core.setOutput('head_sha', pr.head.sha);
            core.setOutput('head_repo_full_name', pr.head.repo.full_name);
            core.setOutput('head_owner_type', pr.head.repo.owner.type); // "User"|"Organization"
            core.setOutput('maintainer_can_modify', String(pr.maintainer_can_modify));

      # If this was kicked off by a comment, ensure that the commenter is
      # a collaborator on the repo. We don't want unprivileged users to run benchmarks.
      # Note that the workflow that will be run will be the one that is on the `master`
      # branch, NOT the one from the PR. This is important so that the PR author can't
      # sneak in an exfiltration exploit.
      - name: Check commenter permission
        if: github.event_name == 'issue_comment'
        uses: actions/github-script@v7
        with:
          script: |
            const user = context.payload.comment.user.login;
            const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
              owner: context.repo.owner,
              repo: context.repo.repo,
              username: user,
            });

            const allowed = new Set(['admin', 'maintain', 'write', 'triage']);
            if (!allowed.has(data.permission)) {
              core.setFailed(`User ${user} has permission '${data.permission}', not allowed to run benchmarks.`);
            }

      # If the PR is from a fork, we need to be able to have GitHub actions commit back
      # to the forked repo, so that we can update the benchmark results.
      # In order to do this we need to ensure that the PR is configured to allow the maintainers
      # of the SpacetimeDB repo to commit back ot the fork.
      - name: Check fork pushability (and comment if not)
        if: steps.pr.outputs.head_repo_full_name != github.repository
        uses: actions/github-script@v7
        env:
          PR_NUMBER: ${{ steps.pr.outputs.number }}
          HEAD_OWNER_TYPE: ${{ steps.pr.outputs.head_owner_type }}
          MAINTAINER_CAN_MODIFY: ${{ steps.pr.outputs.maintainer_can_modify }}
        with:
          script: |
            const issue_number = Number(process.env.PR_NUMBER);
            const headOwnerType = process.env.HEAD_OWNER_TYPE;
            const canModify = process.env.MAINTAINER_CAN_MODIFY === 'true';

            if (headOwnerType === 'Organization') {
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number,
                body: [
                  "I can’t push benchmark updates to this PR because it comes from an **organization-owned fork**.",
                  "GitHub doesn’t allow granting upstream maintainers push permissions to org-owned forks.",
                  "",
                  "Options:",
                  "- Reopen the PR from a **personal fork** with **Allow edits from maintainers** enabled, or",
                  "- A maintainer can apply the benchmark update on an internal branch."
                ].join("\n"),
              });
              core.setFailed("Org-owned fork PR is not pushable by maintainers.");
              return;
            }

            if (!canModify) {
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number,
                body: [
                  "I can’t push benchmark updates to this PR branch until you enable **Allow edits from maintainers**.",
                  "Please check the box on the PR page, then re-comment `/update-llm-benchmark`.",
                  "See https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork"
                ].join("\n"),
              });
              core.setFailed("maintainer_can_modify is false; author must enable 'Allow edits from maintainers'.");
            }

      # Run the benchmark that is already checked into master to prevent
      # an exfiltration attack whereby the PR author tries to sneak in an exploit
      # and get a maintainer to run the modified benchmark without looking at the
      # PR first. This ensure that we only ever execute code that is checked into
      # master.
      - name: Checkout master (build/install tool from trusted code)
        uses: actions/checkout@v4
        with:
          ref: master
          fetch-depth: 0
          persist-credentials: false

      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      # Ensure we use a user-writable .NET install (not /usr/share/dotnet),
      # so workload installs don't require sudo.
      - name: Setup .NET SDK
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: "8.0.x"

      - name: Install WASI workload (wasi-experimental)
        env:
          DOTNET_MULTILEVEL_LOOKUP: "0"
          DOTNET_CLI_HOME: ${{ runner.temp }}/dotnet-home
          DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1"
        run: |
          dotnet --info
          dotnet workload install wasi-experimental --skip-manifest-update --disable-parallel

      - name: Install llm-benchmark tool from master
        run: |
          cargo install --path tools/xtask-llm-benchmark --locked
          command -v llm_benchmark

      # Check out the repo on the branch, but ONLY use this code as data!
      # Never execute code that is on the PR branch.
      - name: Checkout PR head (branch)
        uses: actions/checkout@v4
        with:
          repository: ${{ steps.pr.outputs.head_repo_full_name }}
          ref: ${{ steps.pr.outputs.head_sha }}
          fetch-depth: 0
          persist-credentials: false

      # Run the benchmark against the PR using the installed tool from the
      # master branch.
      - name: Run benchmark (with provider keys)
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          # Prevent MSBuild node reuse issues that cause "Pipe is broken" errors
          # when running multiple dotnet publish commands in parallel.
          # See: https://github.com/dotnet/msbuild/issues/6657
          MSBUILDDISABLENODEREUSE: "1"
          DOTNET_CLI_USE_MSBUILD_SERVER: "0"
        run: |
          llm_benchmark ci-quickfix
          llm_benchmark ci-check

      # Generate failure analysis if there are any failures
      - name: Generate failure analysis
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          llm_benchmark analyze -o docs/llms/docs-benchmark-analysis.md || true

      # Generate PR comment markdown (compares against master baseline)
      - name: Generate PR comment markdown
        run: |
          llm_benchmark ci-comment

      - name: Ensure only docs/llms changed
        run: |
          set -euo pipefail
          CHANGED="$(git diff --name-only)"

          if [ -z "$CHANGED" ]; then
            echo "No changes."
            exit 0
          fi

          if echo "$CHANGED" | grep -qvE '^docs/llms/'; then
            echo "Benchmark produced changes outside docs/llms:"
            echo "$CHANGED" | grep -vE '^docs/llms/'
            exit 1
          fi

      # Comment the benchmark results on the PR
      - name: Comment benchmark results on PR
        uses: actions/github-script@v7
        env:
          PR_NUMBER: ${{ steps.pr.outputs.number }}
        with:
          github-token: ${{ secrets.CLOCKWORK_LABS_BOT_PAT }}
          script: |
            const fs = require('fs');

            // Read the pre-generated comment markdown
            const commentPath = 'docs/llms/docs-benchmark-comment.md';
            if (!fs.existsSync(commentPath)) {
              core.setFailed(`Comment file not found: ${commentPath}`);
              return;
            }
            let body = fs.readFileSync(commentPath, 'utf8');

            // Check if failure analysis exists and append it
            const analysisPath = 'docs/llms/docs-benchmark-analysis.md';
            if (fs.existsSync(analysisPath)) {
              const analysis = fs.readFileSync(analysisPath, 'utf8');
              // Only include if there's meaningful content (not just "no failures")
              if (!analysis.includes('No failures found')) {
                body += `\n<details>\n<summary>Failure Analysis (click to expand)</summary>\n\n${analysis}\n</details>`;
              }
            }

            const issue_number = Number(process.env.PR_NUMBER);

            // Always post a new comment
            console.log(`Posting new comment on PR #${issue_number}...`);
            try {
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number,
                body,
              });
              console.log('Comment created successfully');
            } catch (err) {
              console.error('Failed to post comment:', err.message);
              console.error('Full error:', JSON.stringify(err, null, 2));
              throw err;
            }

      # The benchmarks only modify the docs/llms directory.
      # Commit the changes.
      - name: Commit changes
        run: |
          git config user.name "clockwork-labs-bot"
          git config user.email "clockwork-labs-bot@users.noreply.github.com"

          # Prefer staging only the benchmark output area (adjust as needed)
          git add docs/llms

          git diff --cached --quiet && exit 0
          git commit -m "Update LLM benchmark results"

      # Here we use the https://github.com/clockwork-labs-bot user's
      # personal access token to commit back to the PR branch. This is necessary
      # if we want to be able to push back to external contributor forks.
      - name: Push back to PR branch (same repo or fork)
        env:
          GH_TOKEN: ${{ secrets.CLOCKWORK_LABS_BOT_PAT }}
        run: |
          git remote set-url origin "https://x-access-token:${GH_TOKEN}@github.com/${{ steps.pr.outputs.head_repo_full_name }}.git"
          # Fetch and rebase in case branch moved since workflow started (e.g., previous benchmark run)
          git fetch origin "${{ steps.pr.outputs.head_ref }}"
          if ! git rebase "origin/${{ steps.pr.outputs.head_ref }}"; then
            git rebase --abort
            echo "::error::Rebase failed due to conflicts. The PR branch may have been updated during the benchmark run. Please re-run /update-llm-benchmark."
            exit 1
          fi
          git push origin "HEAD:${{ steps.pr.outputs.head_ref }}"


================================================
FILE: .github/workflows/package.yml
================================================
name: Package SpacetimeDB CLI

on:
  push:
    tags:
      - '**'
  workflow_dispatch:

permissions:
  contents: read

jobs:
  build-cli:
    strategy:
      fail-fast: false
      matrix:
        include:
          # WARNING - do not upgrade this runner to 24.04 or the self hosted runners because it will break downloads for
          #   anyone who uses a linux distro that doesn't have glibc >= GLIBC_2.38
          - { name: x86_64 Linux, target: x86_64-unknown-linux-gnu, runner: ubuntu-22.04 }
          - { name: aarch64 Linux, target: aarch64-unknown-linux-gnu, runner: arm-runner }
          # Disabled because musl builds weren't working and we didn't want to investigate. See https://github.com/clockworklabs/SpacetimeDB/pull/2964.
          # - { name: x86_64 Linux musl, target: x86_64-unknown-linux-musl, runner: bare-metal, container: alpine }
          # FIXME: arm musl build. "JavaScript Actions in Alpine containers are only supported on x64 Linux runners"
          # - { name: aarch64 Linux musl, target: aarch64-unknown-linux-musl, runner: arm-runner }
          - { name: aarch64 macOS, target: aarch64-apple-darwin, runner: macos-latest }
          - { name: x86_64 macOS, target: x86_64-apple-darwin, runner: macos-latest }
          - { name: x86_64 Windows, target: x86_64-pc-windows-msvc, runner: windows-latest }

    name: Build CLI for ${{ matrix.name }}
    runs-on: ${{ matrix.runner }}

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Show arch
        run: uname -a

      - name: Install musl dependencies
        # TODO: Should we use `matrix.container == 'alpine'` instead of the `endsWith` check?
        if: endsWith(matrix.target, '-musl')
        run: apk add gcc g++ bash curl linux-headers perl git make

      - name: Install Rust
        uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Install rust target
        run: rustup target add ${{ matrix.target }}

      - name: Add signtool.exe to PATH
        if: ${{ runner.os == 'Windows' }}
        shell: pwsh
        run: |
          $root = "${env:ProgramFiles(x86)}\Windows Kits\10\bin"
          $signtool = Get-ChildItem $root -Recurse -Filter signtool.exe -ErrorAction SilentlyContinue |
            Where-Object { $_.FullName -match '\\x64\\signtool\.exe$' } |
            Sort-Object FullName -Descending |
            Select-Object -First 1

          if (-not $signtool) { throw "signtool.exe not found under $root" }

          "Found: $($signtool.FullName)"
          $dir = Split-Path $signtool.FullName
          Add-Content -Path $env:GITHUB_PATH -Value $dir

      - name: Write certificate file for signing
        if: ${{ runner.os == 'Windows' }}
        shell: powershell
        env:
          DIGICERT_CERT_B64: ${{ secrets.DIGICERT_CERT_B64 }}
        run: |
          [IO.File]::WriteAllBytes("digicert.pfx", [Convert]::FromBase64String($env:DIGICERT_CERT_B64))

      - name: Compile
        run: |
          cargo build --release --target ${{ matrix.target }} -p spacetimedb-cli -p spacetimedb-standalone -p spacetimedb-update

      - name: Sign binaries for Windows
        # Disabled for now since the current flow isn't working.
        if: false
        #if: ${{ runner.os == 'Windows' }}
        shell: powershell
        env:
          DIGICERT_KEYPAIR_ALIAS: ${{ secrets.DIGICERT_KEYPAIR_ALIAS }}
        run: |
          $ErrorActionPreference = 'Stop'
          $targetDir = Join-Path $env:GITHUB_WORKSPACE 'target\x86_64-pc-windows-msvc\release'
          $certFile = Join-Path $env:GITHUB_WORKSPACE 'digicert.pfx'

          $signtool = Get-Command signtool.exe -ErrorAction Stop

          $files = @(
            (Join-Path $targetDir 'spacetimedb-update.exe'),
            (Join-Path $targetDir 'spacetimedb-cli.exe'),
            (Join-Path $targetDir 'spacetimedb-standalone.exe')
          )

          foreach ($file in $files) {
            & $signtool.Path sign /f $certFile /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 $file
            & $signtool.Path verify /v /pa $file
          }

      - name: Package (unix)
        if: ${{ runner.os != 'Windows' }}
        shell: bash
        run: |
          mkdir build
          cd target/${{matrix.target}}/release
          cp spacetimedb-update ../../../build/spacetimedb-update-${{matrix.target}}
          tar -czf ../../../build/spacetime-${{matrix.target}}.tar.gz spacetimedb-{cli,standalone}

      - name: Package (windows)
        if: ${{ runner.os == 'Windows' }}
        shell: bash
        run: |
          mkdir build
          cd target/${{matrix.target}}/release
          cp spacetimedb-update.exe ../../../build/spacetimedb-update-${{matrix.target}}.exe
          7z a ../../../build/spacetime-${{matrix.target}}.zip spacetimedb-cli.exe spacetimedb-standalone.exe

      - name: Extract branch name
        shell: bash
        run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
        id: extract_branch

      - name: Upload to DO Spaces
        uses: shallwefootball/s3-upload-action@master
        with:
          aws_key_id: ${{ secrets.AWS_KEY_ID }}
          aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
          aws_bucket: ${{ vars.AWS_BUCKET }}
          source_dir: build
          endpoint: https://nyc3.digitaloceanspaces.com
          destination_dir: ${{ steps.extract_branch.outputs.branch }}


================================================
FILE: .github/workflows/pr_approval_check.yml
================================================
name: Review Checks

# SECURITY: This workflow uses pull_request_target so that it has write access to
# set commit statuses on external (fork) PRs. pull_request_target runs in the
# context of the base branch, which grants the GITHUB_TOKEN write permissions
# that a regular pull_request event on a fork would not have.
#
# IMPORTANT: This workflow must NEVER check out, build, or execute code from the
# PR branch. Doing so would allow a malicious fork to run arbitrary code with
# write access to the repository. This workflow only reads PR metadata via the
# GitHub API, which is safe.

on:
  pull_request_target:
    types: [opened, synchronize, reopened]
  pull_request_review:
    types: [submitted, dismissed]
  merge_group:

permissions:
  contents: read
  pull-requests: read
  statuses: write

concurrency:
  group: pr-approval-check-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

jobs:
  publish-approval-status:
    name: Set approval status
    runs-on: ubuntu-latest

    # SECURITY: Do not add a checkout step to this job. See comment at the top of this file.
    steps:
      - name: Evaluate and publish approval status
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const contextName = "PR approval check";

            let targetSha;
            let state;
            let description;

            if (context.eventName === "merge_group") {
              targetSha = process.env.GITHUB_SHA;
              state = "success";
              description = "Merge group entry; approvals already satisfied";
            } else {
              const pr = context.payload.pull_request;
              targetSha = pr.head.sha;

              if (pr.head.repo.fork) {
                state = "success";
                description = "Skipped for external PR";
              } else if (pr.user.login !== "clockwork-labs-bot") {
                state = "success";
                description = "PR author is not clockwork-labs-bot";
              } else {
                const result = await github.graphql(
                  `
                  query($owner: String!, $repo: String!, $number: Int!) {
                    repository(owner: $owner, name: $repo) {
                      pullRequest(number: $number) {
                        latestOpinionatedReviews(first: 100, writersOnly: true) {
                          nodes {
                            state
                            author {
                              login
                            }
                          }
                        }
                      }
                    }
                  }
                  `,
                  {
                    owner: context.repo.owner,
                    repo: context.repo.repo,
                    number: pr.number,
                  }
                );

                const effectiveApprovers =
                  result.repository.pullRequest.latestOpinionatedReviews.nodes
                    .filter((review) => review.state === "APPROVED")
                    .map((review) => review.author?.login)
                    .filter(Boolean);

                core.info(
                  `Latest effective approvers (${effectiveApprovers.length}): ${effectiveApprovers.join(", ")}`
                );

                if (effectiveApprovers.length < 2) {
                  state = "failure";
                  description = "PRs from clockwork-labs-bot require at least 2 approvals";
                } else {
                  state = "success";
                  description = "PR has the required number of approvals";
                }
              }
            }

            core.info(`Publishing status ${state} for ${targetSha}: ${description}`);

            // We need to set a separate commit status for this, because it runs on both
            // pull_request and pull_request_review events. If we don't set an explicit context,
            // what happens is that there are sometimes two separate statuses on the same commit -
            // one from each event type. This leads to weird cases where one copy of the check is failed,
            // and the other is successful, and the failed one blocks the PR from merging.
            await github.rest.repos.createCommitStatus({
              owner: context.repo.owner,
              repo: context.repo.repo,
              sha: targetSha,
              state,
              context: contextName,
              description,
            });


================================================
FILE: .github/workflows/rust_matcher.json
================================================
{
    "problemMatcher": [
        {
            "owner": "rust",
            "pattern": [
                {
                    "regexp": "^(warning|warn|error)(\\[(.*)\\])?: (.*)$",
                    "severity": 1,
                    "message": 4,
                    "code": 3
                },
                {
                    "regexp": "^([\\s->=]*(.*):(\\d*):(\\d*)|.*)$",
                    "file": 2,
                    "line": 3,
                    "column": 4
                }
            ]
        }
    ]
}


================================================
FILE: .github/workflows/tag-release.yml
================================================
on:
  release:
    types: [published]

jobs:
  on-release:
    name: Re-tag latest
    runs-on: ubuntu-latest
    steps:
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ vars.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}
 
      - name: Retag the image 
        run: |
          VERSION=${GITHUB_REF#refs/*/}
          docker buildx imagetools create clockworklabs/spacetimedb:$VERSION --tag clockworklabs/spacetimedb:latest


================================================
FILE: .github/workflows/typescript-lint.yml
================================================
name: TypeScript - Lint

on:
  pull_request:
  push:
    branches:
      - master
  merge_group:

jobs:
  build:
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: Get pnpm store directory
        shell: bash
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Lint
        run: pnpm lint


================================================
FILE: .github/workflows/typescript-test.yml
================================================
name: TypeScript - Tests

on:
  push:
    branches:
      - master
  pull_request:
  merge_group:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || format('sha-{0}', github.sha) }}
  cancel-in-progress: true

jobs:
  build-and-test:
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - uses: pnpm/action-setup@v4
        with:
          run_install: true

      - name: Get pnpm store directory
        shell: bash
        working-directory: crates/bindings-typescript
        run: |
          echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ env.STORE_PATH }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-
      
      - name: Build module library and SDK
        working-directory: crates/bindings-typescript
        run: pnpm build

      - name: Run module library and SDK tests
        working-directory: crates/bindings-typescript 
        run: pnpm test

      # - name: Extract SpacetimeDB branch name from file
      #   id: extract-branch
      #   run: |
      #     # Define the path to the branch file
      #     BRANCH_FILE=".github/spacetimedb-branch.txt"

      #     # Default to master if file doesn't exist
      #     if [ ! -f "$BRANCH_FILE" ]; then
      #       echo "::notice::No SpacetimeDB branch file found, using 'master'"
      #       echo "branch=master" >> $GITHUB_OUTPUT
      #       exit 0
      #     fi

      #     # Read and trim whitespace from the file
      #     branch=$(cat "$BRANCH_FILE" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

      #     # Fallback to master if empty
      #     if [ -z "$branch" ]; then
      #       echo "::warning::SpacetimeDB branch file is empty, using 'master'"
      #       branch="master"
      #     fi

      #     echo "branch=$branch" >> $GITHUB_OUTPUT
      #     echo "Using SpacetimeDB branch from file: $branch"

      - name: Install Rust toolchain
        uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ${{ github.workspace }}
          shared-key: spacetimedb
          # Let the main CI job save the cache since it builds the most things
          save-if: false
          prefix-key: v1

      # This step shouldn't be needed, but somehow we end up with caches that are missing librusty_v8.a.
      # ChatGPT suspects that this could be due to different build invocations using the same target dir,
      # and this makes sense to me because we only see it in this job where we mix `cargo build -p` with
      # `cargo build --manifest-path` (which apparently build different dependency trees).
      # However, we've been unable to fix it so... /shrug
      - name: Check v8 outputs
        run: |
          find "${CARGO_TARGET_DIR}"/ -type f | grep '[/_]v8' || true
          if ! [ -f "${CARGO_TARGET_DIR}"/debug/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean -p v8 || true
            cargo build -p v8
          fi
          if ! [ -f "${CARGO_TARGET_DIR}"/release/gn_out/obj/librusty_v8.a ]; then
            echo "Could not find v8 output file librusty_v8.a; rebuilding manually."
            cargo clean --release -p v8 || true
            cargo build --release -p v8
          fi

      - name: Install SpacetimeDB CLI from the local checkout
        run: |
          export CARGO_HOME="$HOME/.cargo"
          echo "$CARGO_HOME/bin" >> "$GITHUB_PATH"
          cargo install --force --path crates/cli --locked --message-format=short
          cargo install --force --path crates/standalone --locked --message-format=short
          # Add a handy alias using the old binary name, so that we don't have to rewrite all scripts (incl. in submodules).
          ln -sf $CARGO_HOME/bin/spacetimedb-cli $CARGO_HOME/bin/spacetime
          # Clear any existing information
          spacetime server clear -y

      - name: Generate client bindings
        working-directory: templates/chat-react-ts
        run: |
          pnpm generate

      - name: Check for changes
        working-directory: templates/chat-react-ts
        run: |
          "${GITHUB_WORKSPACE}"/tools/check-diff.sh src/module_bindings || {
            echo "Error: Bindings are dirty. Please generate bindings again and commit them to this branch."
            exit 1
          }

      # - name: Start SpacetimeDB
      #   run: |
      #     spacetime start &
      #     disown

      # - name: Publish module to SpacetimeDB
      #   working-directory: SpacetimeDB/templates/quickstart-chat-typescript/spacetimedb
      #   run: |
      #     spacetime logout && spacetime login --server-issued-login local
      #     spacetime publish -s local quickstart-chat -c -y

      # - name: Publish module to SpacetimeDB
      #   working-directory: SpacetimeDB/templates/quickstart-chat-typescript/spacetimedb
      #   run: |
      #     spacetime logs quickstart-chat

      - name: Check that quickstart-chat builds
        working-directory: templates/chat-react-ts
        run: pnpm build

      - name: Check that templates build
        working-directory: templates/
        run: pnpm -r --filter "./**" run build

      - name: Check that subdirectories build
        working-directory: crates/bindings-typescript
        run: pnpm -r --filter "./**" run build

      # - name: Run quickstart-chat tests
      #   working-directory: examples/quickstart-chat
      #   run: pnpm test
      #
      # # Run this step always, even if the previous steps fail
      # - name: Print rows in the user table
      #   if: always()
      #   run: spacetime sql quickstart-chat "SELECT * FROM user"


================================================
FILE: .github/workflows/upgrade-version-check.yml
================================================
name: Upgrade Version Check

on:
  pull_request:
    types: [opened, synchronize]
  merge_group:
permissions: read-all

jobs:
  version_upgrade_check:
    runs-on: spacetimedb-new-runner-2
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - uses: dsherret/rust-toolchain-file@v1
      - name: Set default rust toolchain
        run: rustup default $(rustup show active-toolchain | cut -d' ' -f1)
        # pnpm is required for regenerating the typescript bindings
      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
      - uses: pnpm/action-setup@v4
        with:
          run_install: true
      - name: Verify that upgrade-version still works
        run: cargo bump-versions 123.456.789 --rust-and-cli --csharp --typescript --cpp --accept-snapshots
      - name: Show diff
        run: git diff HEAD



================================================
FILE: .gitignore
================================================

# Created by https://www.toptal.com/developers/gitignore/api/rust,node,visualstudiocode
# Edit at https://www.toptal.com/developers/gitignore?templates=rust,node,visualstudiocode

perf.data
perf.data.old
flamegraph.html
flamegraphs/*.svg
flamegraphs/flamegraph.folded

### MacOS ###
.DS_Store

### Node ###
# Logs
packages/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Snowpack dependency directory (https://snowpack.dev/)
web_modules

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

### Node Patch ###
# Serverless Webpack directories
.webpack/

# Optional stylelint cache

# SvelteKit build / generate output
.svelte-kit

### Rust ###
# Generated by Cargo
# will have compiled files and executables
debug/
target/
# for docker images touching host fs
linux-cache/
linux-rustup/
linux-target/

# These are backup files generated by rustfmt
**/*.rs.bk

# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb

### VisualStudioCode ###
.vscode/*
.vscode
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

# Support for Project snippet scope

# End of https://www.toptal.com/developers/gitignore/api/rust,node,visualstudiocode


# Added by cargo
#
# already existing elements were commented out

/target
#Cargo.lock

__pycache__/
.test_out

## JetBrains
.idea/

/protobuf
cs-src/
crates/bench/spacetime.svg
crates/bench/sqlite.svg
.vs/

# .NET build artifacts
**/obj/
**/bin/

# benchmark files
out.json
old.json
new.json
.history.txt

# Keys
*.pem
.ok.sql

# Intermediate file generated when updating the external client SDKs' WS format bindings
crates/client-api-messages/ws_schema.json

# Test data
!crates/core/testdata/

# Temporary templates dir for CLI's init command
/crates/cli/.templates

# C++ build data
modules/benchmarks-cpp/build/
modules/module-test-cpp/build/
modules/sdk-test-cpp/build/
modules/sdk-test-connect-disconnect-cpp/build/
modules/sdk-test-procedure-cpp/build/
modules/sdk-test-view-cpp/build/

# Symlinked output from `nix build`
result

# Python venv directories
venv/

# Claude Code
.claude/

# Windows null device artifact
nul

[Nn][Uu][Gg][Ee][Tt].[Cc][Oo][Nn][Ff][Ii][Gg]
[Nn][Uu][Gg][Ee][Tt].[Cc][Oo][Nn][Ff][Ii][Gg].meta
 
# csharp SDK packages
/sdks/csharp/packages/
/sdks/csharp/packages.meta

# AI agent config
.codex
.claude

# Any local file
*.local


================================================
FILE: .prettierignore
================================================
node_modules
pnpm-lock.yaml
dist
target
.github
coverage


================================================
FILE: .prettierrc
================================================
{
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "arrowParens": "avoid",
  "jsxSingleQuote": false,
  "trailingComma": "es5",
  "endOfLine": "auto",
  "printWidth": 80
}


================================================
FILE: .rustfmt.toml
================================================
max_width = 120
style_edition = "2021"
edition = "2024"


================================================
FILE: Cargo.toml
================================================
[workspace]
exclude = ["crates/smoketests/modules"]
members = [
  "crates/auth",
  "crates/bench",
  "crates/bindings-sys",
  "crates/bindings",
  "crates/bindings-macro",
  "crates/cli",
  "crates/client-api",
  "crates/client-api-messages",
  "crates/commitlog",
  "crates/core",
  "crates/data-structures",
  "crates/datastore",
  "crates/durability",
  "crates/execution",
  "crates/expr",
  "crates/guard",
  "crates/fs-utils",
  "crates/lib",
  "crates/metrics",
  "crates/paths",
  "crates/pg",
  "crates/physical-plan",
  "crates/primitives",
  "crates/query",
  "crates/sats",
  "crates/schema",
  "crates/smoketests",
  "sdks/rust",
  "sdks/unreal",
  "crates/snapshot",
  "crates/sqltest",
  "crates/sql-parser",
  "crates/standalone",
  "crates/subscription",
  "crates/table",
  "crates/testing",
  "crates/update",
  "modules/benchmarks",
  "modules/keynote-benchmarks",
  "modules/perf-test",
  "modules/module-test",
  "templates/basic-rs/spacetimedb",
  "templates/chat-console-rs/spacetimedb",
  "templates/keynote-2/spacetimedb-rust-client",
  "modules/sdk-test",
  "modules/sdk-test-connect-disconnect",
  "modules/sdk-test-procedure",
  "modules/sdk-test-view",
  "modules/sdk-test-view-pk",
  "modules/sdk-test-event-table",
  "sdks/rust/tests/test-client",
  "sdks/rust/tests/test-counter",
  "sdks/rust/tests/connect_disconnect_client",
  "sdks/rust/tests/procedure-client",
  "sdks/rust/tests/view-client",
  "sdks/rust/tests/view-pk-client",
  "sdks/rust/tests/event-table-client",
  "tools/ci",
  "tools/upgrade-version",
  "tools/license-check",
  "tools/replace-spacetimedb",
  "tools/generate-client-api",
  "tools/gen-bindings",
  "tools/xtask-llm-benchmark",
  "crates/bindings-typescript/test-app/server",
  "crates/bindings-typescript/test-react-router-app/server",
  "crates/query-builder",
]
default-members = ["crates/cli", "crates/standalone", "crates/update"]
# cargo feature graph resolver. v3 is default in edition2024 but workspace
# manifests don't have editions.
resolver = "3"

[profile.release]
opt-level = 3
debug-assertions = false
overflow-checks = false
lto = "thin"
panic = 'unwind'
incremental = false
codegen-units = 16
rpath = false

[profile.dev]
opt-level = 0
debug = true
debug-assertions = true
overflow-checks = true
lto = false
panic = 'unwind'
incremental = true
codegen-units = 256
rpath = false

[profile.bench]
debug = true

[profile.test]
opt-level = 1
debug = true

[profile.profiling]
inherits = "release"
debug = true

[workspace.package]
version = "2.0.5"
edition = "2024"
# update rust-toolchain.toml too!
rust-version = "1.93.0"

[workspace.dependencies]
spacetimedb = { path = "crates/bindings", version = "=2.0.5" }
spacetimedb-auth = { path = "crates/auth", version = "=2.0.5" }
spacetimedb-bindings-macro = { path = "crates/bindings-macro", version = "=2.0.5" }
spacetimedb-bindings-sys = { path = "crates/bindings-sys", version = "=2.0.5" }
spacetimedb-cli = { path = "crates/cli", version = "=2.0.5" }
spacetimedb-client-api = { path = "crates/client-api", version = "=2.0.5" }
spacetimedb-client-api-messages = { path = "crates/client-api-messages", version = "=2.0.5" }
spacetimedb-codegen = { path = "crates/codegen", version = "=2.0.5" }
spacetimedb-commitlog = { path = "crates/commitlog", version = "=2.0.5" }
spacetimedb-core = { path = "crates/core", version = "=2.0.5" }
spacetimedb-data-structures = { path = "crates/data-structures", version = "=2.0.5" }
spacetimedb-datastore = { path = "crates/datastore", version = "=2.0.5" }
spacetimedb-durability = { path = "crates/durability", version = "=2.0.5" }
spacetimedb-execution = { path = "crates/execution", version = "=2.0.5" }
spacetimedb-expr = { path = "crates/expr", version = "=2.0.5" }
spacetimedb-guard = { path = "crates/guard", version = "=2.0.5" }
spacetimedb-lib = { path = "crates/lib", default-features = false, version = "=2.0.5" }
spacetimedb-memory-usage = { path = "crates/memory-usage", version = "=2.0.5", default-features = false }
spacetimedb-metrics = { path = "crates/metrics", version = "=2.0.5" }
spacetimedb-paths = { path = "crates/paths", version = "=2.0.5" }
spacetimedb-pg = { path = "crates/pg", version = "=2.0.5" }
spacetimedb-physical-plan = { path = "crates/physical-plan", version = "=2.0.5" }
spacetimedb-primitives = { path = "crates/primitives", version = "=2.0.5" }
spacetimedb-query = { path = "crates/query", version = "=2.0.5" }
spacetimedb-sats = { path = "crates/sats", version = "=2.0.5" }
spacetimedb-schema = { path = "crates/schema", version = "=2.0.5" }
spacetimedb-standalone = { path = "crates/standalone", version = "=2.0.5" }
spacetimedb-sql-parser = { path = "crates/sql-parser", version = "=2.0.5" }
spacetimedb-table = { path = "crates/table", version = "=2.0.5" }
spacetimedb-fs-utils = { path = "crates/fs-utils", version = "=2.0.5" }
spacetimedb-snapshot = { path = "crates/snapshot", version = "=2.0.5" }
spacetimedb-subscription = { path = "crates/subscription", version = "=2.0.5" }
spacetimedb-query-builder = { path = "crates/query-builder", version = "=2.0.5" }

# Prevent `ahash` from pulling in `getrandom` by disabling default features.
# Modules use `getrandom02` and we need to prevent an incompatible version
# from appearing in module dependency graphs.
ahash = { version = "0.8", default-features = false, features = ["std"] }
anyhow = "1.0.68"
anymap = "0.12"
arrayvec = "0.7.2"
async-stream = "0.3.6"
async-trait = "0.1.68"
axum = { version = "0.7", features = ["tracing"] }
axum-extra = { version = "0.9", features = ["typed-header"] }
backtrace = "0.3.66"
base64 = "0.21.2"
bigdecimal = "0.4.7"
bitflags = "2.3.3"
blake3 = "1.5.1"
brotli = "3.5"
byte-unit = "4.0.18"
bytemuck = { version = "1.16.2", features = ["must_cast"] }
bytes = "1.10.1"
bytestring = { version = "1.2.0", features = ["serde"] }
cargo_metadata = "0.17.0"
chrono = { version = "0.4.24", default-features = false }
clap = { version = "4.2.4", features = ["derive", "wrap_help"] }
clap-markdown = "0.1.4"
colored = "2.0.0"
console = { version = "0.15.6" }
convert_case = "0.6.0"
crc32c = "0.6.4"
criterion = { version = "0.5.1", features = ["async", "async_tokio", "html_reports"] }
crossbeam-channel = "0.5"
crossbeam-queue = "0.3.12"
cursive = { version = "0.20", default-features = false, features = ["crossterm-backend"] }
decorum = { version = "0.3.1", default-features = false, features = ["std"] }
derive_more = "0.99"
dialoguer = { version = "0.11", default-features = false }
dirs = "5.0.1"
duct = "0.13.5"
either = "1.9"
email_address = "0.2.4"
enum-as-inner = "0.6"
enum-map = "2.6.3"
env_logger = "0.10"
ethnum = { version = "1.5.0", features = ["serde"] }
flate2 = "1.0.24"
flume = { version = "0.11", default-features = false, features = ["async"] }
foldhash = "0.2.0"
fs-err = "2.9.0"
fs_extra = "1.3.0"
fs2 = "0.4.3"
futures = "0.3"
futures-channel = "0.3"
futures-util = "0.3"
getrandom02 = { package = "getrandom", version = "0.2" }
git2 = "0.19"
glob = "0.3.1"
hashbrown = { version = "0.16.1", default-features = false, features = ["equivalent", "inline-more", "rayon", "serde"] }
headers = "0.4"
heck = "0.4"
hex = "0.4.3"
home = "0.5"
hostname = "^0.3"
http = "1.0"
http-body-util= "0.1.3"
humantime = "2.3"
hyper = "1.0"
hyper-util = { version = "0.1", features = ["tokio"] }
ignore = "0.4"
imara-diff = "0.1.3"
indexmap = "2.0.0"
indicatif = "0.17"
insta = { version = "1.21.0", features = ["toml", "filters"] }
is-terminal = "0.4"
itertools = "0.12"
itoa = "1"
json5 = "0.4"
jsonwebtoken = { package = "spacetimedb-jsonwebtoken", version = "9.3.0" }
junction = "1"
jwks = { package = "spacetimedb-jwks", version = "0.1.3" }
lazy_static = "1.4.0"
lean_string = "0.5.1"
log = "0.4.17"
memchr = "2"
mimalloc = "0.1.39"
names = "0.14"
netstat2 = "0.11"
nohash-hasher = "0.2"
notify = "7.0"
nix = "0.30"
once_cell = "1.16"
parking_lot = { version = "0.12.1", features = ["send_guard", "arc_lock"] }
parse-size = "1.1.0"
paste = "1.0"
percent-encoding = "2.3"
petgraph = { version = "0.6.5", default-features = false }
pin-project-lite = "0.2.9"
pgwire = { version = "0.37", default-features = false, features = ["server-api", "pg-ext-types"] }
postgres-types = "0.2.5"
pretty_assertions = { version = "1.4", features = ["unstable"] }
proc-macro2 = "1.0"
prometheus = "0.14.0"
proptest = "1.4"
proptest-derive = "0.5"
quick-junit = { version = "0.3.2" }
quick-xml = "0.31"
quote = "1.0.8"
rand08 = { package = "rand", version = "0.8" }
rand = "0.9"
rand_distr = "0.5.1"
rayon = "1.8"
rayon-core = "1.11.0"
regex = "1"
reqwest = { version = "0.12", features = ["stream", "json"] }
rolldown = { git = "https://github.com/rolldown/rolldown.git", tag = "v1.0.0-rc.3" }
rolldown_common = { git = "https://github.com/rolldown/rolldown.git", tag = "v1.0.0-rc.3" }
rolldown_error = { git = "https://github.com/rolldown/rolldown.git", tag = "v1.0.0-rc.3" }
rolldown_utils = { git = "https://github.com/rolldown/rolldown.git", tag = "v1.0.0-rc.3" }
ron = "0.8"
rusqlite = { version = "0.29.0", features = ["bundled", "column_decltype"] }
rust_decimal = { version = "1.29.1", features = ["db-tokio-postgres"] }
rustc-demangle = "0.1.21"
rustc-hash = "2"
rustyline = { version = "12.0.0", features = [] }
scoped-tls = "1.0.1"
scopeguard = "1.1.0"
second-stack = "0.3"
self-replace = "1.5"
semver = "1"
serde = { version = "1.0.136", features = ["derive"] }
serde_json = { version = "1.0.128", features = ["raw_value", "arbitrary_precision"] }
serde_path_to_error = "0.1.9"
serde_with = { version = "3.3.0", features = ["base64", "hex"] }
serial_test = "2.0.0"
sha1 = "0.10.1"
sha3 = "0.10.0"
similar = "2.3"
slab = "0.4.7"
sled = "0.34.7"
smallvec = { version = "1.11", features = ["union", "const_generics"] }
socket2 = "0.5"
sourcemap = "9.3.1"
sqllogictest = "0.17"
sqllogictest-engines = "0.17"
sqlparser = "0.38.0"
strum = { version = "0.25.0", features = ["derive"] }
syn = { version = "2", features = ["full", "extra-traits"] }
syntect = { version = "5.0.0", default-features = false, features = ["default-fancy"] }
tabled = "0.14.0"
tar = "0.4"
tempdir = "0.3.7"
tempfile = "3.20"
termcolor = "1.2.0"
termtree = "0.5.1"
thin-vec = "0.2.13"
thiserror = "1.0.37"
tokio = { version = "1.37", features = ["full"] }
tokio_metrics = { version = "0.4.0" }
tokio-postgres = { version = "0.7.8", features = ["with-chrono-0_4"] }
tokio-stream = "0.1.17"
tokio-tungstenite = { version = "0.27.0", features = ["native-tls", "url"] }
tokio-util = { version = "0.7.4", features = ["time"] }
toml = "0.8"
toml_edit = "0.22.22"
tower-http = { version = "0.5", features = ["cors"] }
tower-layer = "0.3"
tower-service = "0.3"
tracing = "0.1.37"
tracing-appender = "0.2.2"
tracing-core = "0.1.31"
tracing-flame = "0.2.0"
tracing-log = "0.1.3"
tracing-subscriber = { version = "0.3.17", features = ["env-filter"] }
trybuild = "1"
typed-arena = "2.0"
unicode-ident = "1.0.12"
unicode-normalization = "0.1.23"
url = "2.3.1"
urlencoding = "2.1.2"
uuid = { version = "1.18.1", default-features = false }

# Pinned to a specific version rather than allowing SemVer fuzzy resolution
# because our flake references the specific version of this library.
# See librusty_v8.nix for more details.
# When updating the V8 crate, either update the version and hashes in that file,
# or ping phoebe @gefjon to do so.
v8 = "=145.0.0"
# This version is kept in sync with the version of ICU required by v8.
# When that changes, the `v8::icu::set_common_data_XX()` function is renamed.
deno_core_icudata = "0.77"

walkdir = "2.2.5"
wasmbin = "0.6"
webbrowser = "1.0.2"
windows-sys = "0.59"
xdg = "2.5"
xmltree = "0.11"
tikv-jemallocator = { version = "0.6.0", features = ["profiling", "stats"] }
tikv-jemalloc-ctl = { version = "0.6.0", features = ["stats"] }
jemalloc_pprof = { version = "0.8", features = ["symbolize", "flamegraph"] }
zstd-framed = { version = "0.1.1", features = ["tokio"] }

# Vendor the openssl we rely on, rather than depend on a
# potentially very old system version.
openssl = { version = "0.10", features = ["vendored"] }

[workspace.dependencies.wasmtime]
version = "39"
default-features = false
features = [
  "addr2line",
  "async",
  "cache",
  "cranelift",
  "demangle",
  "parallel-compilation",
  "runtime",
  "std",
]

[workspace.dependencies.wasmtime-internal-fiber]
version = "39"
default-features = false
features = ["std"]

[workspace.dependencies.tracing-tracy]
version = "0.10.4"
# We use the "ondemand" feature to allow connecting after the start,
# and reconnecting, from the tracy client to the database.
# TODO(George): Need to be able to remove "broadcast" in some build configurations.
features = [
  "enable",
  "system-tracing",
  "context-switch-tracing",
  "sampling",
  "code-transfer",
  "broadcast",
  "ondemand",
]

[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] }

[workspace.lints.clippy]
# FIXME: we should work on this lint incrementally
result_large_err = "allow"

[workspace.metadata]
# This silences a warning in our Nix flake, which otherwise would be upset that our call to `crateNameFromCargoToml`
# is running against a file that doesn't have a name in it.
crane.name = "spacetimedb"


================================================
FILE: Dockerfile
================================================
# Use a base image that supports multi-arch
FROM rust:bookworm AS builder

WORKDIR /usr/src/app
COPY . .

# If we're in a git submodule, we'll have a corrupted/nonfunctional .git file instead of a proper .git directory.
# To make the errors more sane, remove .git entirely.
RUN if [ -f .git ]; then \
      echo "❌ ERROR: .git is a file (likely a submodule pointer), not a directory." >&2; \
      echo "This will cause errors in the build process, because git operations will fail." >&2; \
      echo "To address this, replace the .git file with a proper .git directory." >&2; \
      exit 1; \
    fi

RUN cargo build -p spacetimedb-standalone -p spacetimedb-cli --release --locked

FROM rust:bookworm

# Install dependencies
RUN apt-get update && apt-get install -y \
      curl \
      ca-certificates \
      binaryen \
      build-essential \
      && rm -rf /var/lib/apt/lists/*

# Determine architecture for .NET installation
ARG TARGETARCH
ENV DOTNET_ARCH=${TARGETARCH}

RUN if [ "$DOTNET_ARCH" = "amd64" ]; then \
        DOTNET_ARCH="x64"; \
    elif [ "$DOTNET_ARCH" = "arm64" ]; then \
        DOTNET_ARCH="arm64"; \
    else \
        echo "Unsupported architecture: $DOTNET_ARCH" && exit 1; \
    fi && \
    curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 8.0 --install-dir /usr/share/dotnet --architecture $DOTNET_ARCH

ENV PATH="/usr/share/dotnet:${PATH}"

# Install the experimental WASI workload
RUN dotnet workload install wasi-experimental

# Install Rust WASM target
RUN rustup target add wasm32-unknown-unknown

# Copy over SpacetimeDB
COPY --from=builder --chmod=755 /usr/src/app/target/release/spacetimedb-standalone /usr/src/app/target/release/spacetimedb-cli /opt/spacetime/
RUN ln -s /opt/spacetime/spacetimedb-cli /usr/local/bin/spacetime

# Create and switch to a non-root user
RUN useradd -m spacetime
USER spacetime

# Set working directory
WORKDIR /app

# Expose the necessary port
EXPOSE 3000

# Define the entrypoint
ENTRYPOINT ["spacetime"]



================================================
FILE: LICENSE.txt
================================================
SPACETIMEDB BUSINESS SOURCE LICENSE AGREEMENT

Business Source License 1.1

Parameters

Licensor:             Clockwork Laboratories, Inc.
Licensed Work:        SpacetimeDB 2.0.5
                      The Licensed Work is
                      (c) 2023 Clockwork Laboratories, Inc.
                      
Additional Use Grant: You may make use of the Licensed Work provided your
                      application or service uses the Licensed Work with no
                      more than one SpacetimeDB instance in production and
                      provided that you do not use the Licensed Work for a
                      Database Service.

                      A “Database Service” is a commercial offering that
                      allows third parties (other than your employees and
                      contractors) to access the functionality of the
                      Licensed Work by creating tables whose schemas are
                      controlled by such third parties.

Change Date:          2031-03-12

Change License:       GNU Affero General Public License v3.0 with a linking
                      exception

For information about alternative licensing arrangements for the Software,
please visit: https://spacetimedb.com

Notice

The Business Source License (this document, or the “License”) is not an Open
Source license. However, the Licensed Work will eventually be made available
under an Open Source License, as stated in this License.

License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
“Business Source License” is a trademark of MariaDB Corporation Ab.

-----------------------------------------------------------------------------

Base License and Subdirectory Specific Licenses

1. Repository-Wide License
Except as provided in Section 2 below, the contents of this repository are licensed under the Business Source License (“BSL”), which includes a change date resulting in a licensing change to the GNU Affero General Public License v3.0 with Linking Exception on that date. See the full text of the BSL and AGPL with Linking Exception in this file below.

2. Subdirectory-Specific Licenses
Certain subdirectories within this repository are licensed under different terms.

If a subdirectory contains its own LICENSE or LICENSE.txt file, the terms in that file apply exclusively to all files and subfolders within that subdirectory.

In the event of any conflict between this base license and a subdirectory’s license, the base license will govern for that subdirectory’s contents.

3. Contributor Acknowledgement
By contributing to this repository, you agree that:

Your contributions will be licensed under the license applicable to the directory or subdirectory in which your contribution is made.

If you contribute to multiple subdirectories, the applicable license for each subdirectory will apply to your contributions in that subdirectory.

4. Reading the Applicable License
Before using, modifying, or distributing code from this repository, you must read:

This base LICENSE.txt file for the overall repository license.

Any LICENSE or LICENSE.txt file in a subdirectory that you intend to use or contribute to.

-----------------------------------------------------------------------------

Business Source License 1.1

Terms

The Licensor hereby grants you the right to copy, modify, create derivative
works, redistribute, and make non-production use of the Licensed Work. The
Licensor may make an Additional Use Grant, above, permitting limited
production use.

Effective on the Change Date, or the fourth anniversary of the first publicly
available distribution of a specific version of the Licensed Work under this
License, whichever comes first, the Licensor hereby grants you rights under
the terms of the Change License, and the rights granted in the paragraph
above terminate.

If your use of the Licensed Work does not comply with the requirements
currently in effect as described in this License, you must purchase a
commercial license from the Licensor, its affiliated entities, or authorized
resellers, or you must refrain from using the Licensed Work.

All copies of the original and modified Licensed Work, and derivative works
of the Licensed Work, are subject to this License. This License applies
separately for each version of the Licensed Work and the Change Date may vary
for each version of the Licensed Work released by Licensor.

You must conspicuously display this License on each original or modified copy
of the Licensed Work. If you receive the Licensed Work in original or
modified form from a third party, the terms and conditions set forth in this
License apply to your use of that work.

Any use of the Licensed Work in violation of this License will automatically
terminate your rights under this License for the current and all other
versions of the Licensed Work.

This License does not grant you any right in any trademark or logo of
Licensor or its affiliates (provided that you may use a trademark or logo of
Licensor as expressly required by this License).

TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
TITLE.

MariaDB hereby grants you permission to use this License’s text to license
your works, and to refer to it using the trademark “Business Source License”,
as long as you comply with the Covenants of Licensor below.

Covenants of Licensor

In consideration of the right to use this License’s text and the “Business
Source License” name and trademark, Licensor covenants to MariaDB, and to all
other recipients of the licensed work to be provided by Licensor:

1. To specify as the Change License the GPL Version 2.0 or any later version,
   or a license that is compatible with GPL Version 2.0 or a later version,
   where “compatible” means that software provided under the Change License can
   be included in a program with software provided under GPL Version 2.0 or a
   later version. Licensor may specify additional Change Licenses without
   limitation.

2. To either: (a) specify an additional grant of rights to use that does not
   impose any additional restriction on the right granted in this License, as
   the Additional Use Grant; or (b) insert the text “None”.

3. To specify a Change Date.

4. Not to modify this License in any other way.

-----------------------------------------------------------------------------

Copyright (C) 2023 Clockwork Laboratories, Inc.

This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License, version 3, as published 
by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT  
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more  
details.

You should have received a copy of the GNU Affero General Public License 
along with this program; if not, see <https://www.gnu.org/licenses>.

Additional permission under GNU GPL version 3 section 7

If you modify this Program, or any covered work, by linking or combining it 
with SpacetimeDB (or a modified version of that library), containing parts 
covered by the terms of the AGPL v3.0, the licensors of this Program grant 
you additional permission to convey the resulting work.

Additional permission under GNU AGPL version 3 section 13

If you modify this Program, or any covered work, by linking or combining it 
with SpacetimeDB (or a modified version of that library), containing parts 
covered by the terms of the AGPL v3.0, the licensors of this Program grant 
you additional permission that, notwithstanding any other provision of this 
License, you need not prominently offer all users interacting with your 
modified version remotely through a computer network an opportunity to 
receive the Corresponding Source of your version from a network server at no 
charge, if your version supports such interaction. This permission does not 
waive or modify any other obligations or terms of the AGPL v3.0, except for 
the specific requirement set forth in section 13.

A copy of the AGPL v3.0 license is reproduced below.

                      GNU AFFERO GENERAL PUBLIC LICENSE
                         Version 3, 19 November 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license 
document, but changing it is not allowed.

Preamble
The GNU Affero General Public License is a free, copyleft license for 
software and other kinds of works, specifically designed to ensure 
cooperation with the community in the case of network server software.

The licenses for most software and other practical works are designed to take
away your freedom to share and change the works. By contrast, our General 
Public Licenses are intended to guarantee your freedom to share and change 
all versions of a program--to make sure it remains free software for all its 
users.

When we speak of free software, we are referring to freedom, not price. Our 
General Public Licenses are designed to make sure that you have the freedom 
to distribute copies of free software (and charge for them if you wish), that
you receive source code or can get it if you want it, that you can change the
software or use pieces of it in new free programs, and that you know you can 
do these things.

Developers that use our General Public Licenses protect your rights with two 
steps: (1) assert copyright on the software, and (2) offer you this License 
which gives you legal permission to copy, distribute and/or modify the 
software.

A secondary benefit of defending all users' freedom is that improvements made
in alternate versions of the program, if they receive widespread use, become 
available for other developers to incorporate. Many developers of free 
software are heartened and encouraged by the resulting cooperation. However, 
in the case of software used on network servers, this result may fail to come
about. The GNU General Public License permits making a modified version and 
letting the public access it on a server without ever releasing its source 
code to the public.

The GNU Affero General Public License is designed specifically to ensure 
that, in such cases, the modified source code becomes available to the 
community. It requires the operator of a network server to provide the source
code of the modified version running there to the users of that server. 
Therefore, public use of a modified version, on a publicly accessible server,
gives the public access to the source code of the modified version.

An older license, called the Affero General Public License and published by 
Affero, was designed to accomplish similar goals. This is a different 
license, not a version of the Affero GPL, but Affero has released a new 
version of the Affero GPL which permits relicensing under this license.

The precise terms and conditions for copying, distribution and modification 
follow.

TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.

"Copyright" also means copyright-like laws that apply to other kinds of 
works, such as semiconductor masks.

"The Program" refers to any copyrightable work licensed under this License. 
Each licensee is addressed as "you". "Licensees" and "recipients" may be 
individuals or organizations.

To "modify" a work means to copy from or adapt all or part of the work in a 
fashion requiring copyright permission, other than the making of an exact 
copy. The resulting work is called a "modified version" of the earlier work 
or a work "based on" the earlier work.

A "covered work" means either the unmodified Program or a work based on the 
Program.

To "propagate" a work means to do anything with it that, without permission, 
would make you directly or secondarily liable for infringement under 
applicable copyright law, except executing it on a computer or modifying a 
private copy. Propagation includes copying, distribution (with or without 
modification), making available to the public, and in some countries other 
activities as well.

To "convey" a work means any kind of propagation that enables other parties 
to make or receive copies. Mere interaction with a user through a computer 
network, with no transfer of a copy, is not conveying.

An interactive user interface displays "Appropriate Legal Notices" to the 
extent that it includes a convenient and prominently visible feature that (1)
displays an appropriate copyright notice, and (2) tells the user that there 
is no warranty for the work (except to the extent that warranties are 
provided), that licensees may convey the work under this License, and how to 
view a copy of this License. If the interface presents a list of user 
commands or options, such as a menu, a prominent item in the list meets this 
criterion.

1. Source Code.
The "source code" for a work means the preferred form of the work for making 
modifications to it. "Object code" means any non-source form of a work.

A "Standard Interface" means an interface that either is an official standard
defined by a recognized standards body, or, in the case of interfaces 
specified for a particular programming language, one that is widely used 
among developers working in that language.

The "System Libraries" of an executable work include anything, other than the
work as a whole, that (a) is included in the normal form of packaging a Major
Component, but which is not part of that Major Component, and (b) serves only
to enable use of the work with that Major Component, or to implement a 
Standard Interface for which an implementation is available to the public in 
source code form. A "Major Component", in this context, means a major 
essential component (kernel, window system, and so on) of the specific 
operating system (if any) on which the executable work runs, or a compiler 
used to produce the work, or an object code interpreter used to run it.

The "Corresponding Source" for a work in object code form means all the 
source code needed to generate, install, and (for an executable work) run the
object code and to modify the work, including scripts to control those 
activities. However, it does not include the work's System Libraries, or 
general-purpose tools or generally available free programs which are used 
unmodified in performing those activities but which are not part of the work.
For example, Corresponding Source includes interface definition files 
associated with source files for the work, and the source code for shared 
libraries and dynamically linked subprograms that the work is specifically 
designed to require, such as by intimate data communication or control flow 
between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate 
automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.

2. Basic Permissions.
All rights granted under this License are granted for the term of copyright 
on the Program, and are irrevocable provided the stated conditions are met. 
This License explicitly affirms your unlimited permission to run the 
unmodified Program. The output from running a covered work is covered by this
License only if the output, given its content, constitutes a covered work. 
This License acknowledges your rights of fair use or other equivalent, as 
provided by copyright law.

You may make, run and propagate covered works that you do not convey, without
conditions so long as your license otherwise remains in force. You may convey
covered works to others for the sole purpose of having them make 
modifications exclusively for you, or provide you with facilities for running
those works, provided that you comply with the terms of this License in 
conveying all material for which you do not control copyright. Those thus 
making or running the covered works for you must do so exclusively on your 
behalf, under your direction and control, on terms that prohibit them from 
making any copies of your copyrighted material outside their relationship 
with you.

Conveying under any other circumstances is permitted solely under the 
conditions stated below. Sublicensing is not allowed; section 10 makes it 
unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure 
under any applicable law fulfilling obligations under article 11 of the WIPO 
copyright treaty adopted on 20 December 1996, or similar laws prohibiting or 
restricting circumvention of such measures.

When you convey a covered work, you waive any legal power to forbid 
circumvention of technological measures to the extent such circumvention is 
effected by exercising rights under this License with respect to the covered 
work, and you disclaim any intention to limit operation or modification of 
the work as a means of enforcing, against the work's users, your or third 
parties' legal rights to forbid circumvention of technological measures.

4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive 
it, in any medium, provided that you conspicuously and appropriately publish 
on each copy an appropriate copyright notice; keep intact all notices stating
that this License and any non-permissive terms added in accord with section 7
apply to the code; keep intact all notices of the absence of any warranty; 
and give all recipients a copy of this License along with the Program.

You may charge any price or no price for each copy that you convey, and you 
may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce 
it from the Program, in the form of source code under the terms of section 4,
provided that you also meet all of these conditions:

a) The work must carry prominent notices stating that you modified it, and 
giving a relevant date.
b) The work must carry prominent notices stating that it is released under 
this License and any conditions added under section 7. This requirement 
modifies the requirement in section 4 to "keep intact all notices".
c) You must license the entire work, as a whole, under this License to anyone
who comes into possession of a copy. This License will therefore apply, along
with any applicable section 7 additional terms, to the whole of the work, and
all its parts, regardless of how they are packaged. This License gives no 
permission to license the work in any other way, but it does not invalidate 
such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate
Legal Notices; however, if the Program has interactive interfaces that do not
display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, 
which are not by their nature extensions of the covered work, and which are 
not combined with it such as to form a larger program, in or on a volume of a
storage or distribution medium, is called an "aggregate" if the compilation 
and its resulting copyright are not used to limit the access or legal rights 
of the compilation's users beyond what the individual works permit. Inclusion
of a covered work in an aggregate does not cause this License to apply to the
other parts of the aggregate.

6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections
4 and 5, provided that you also convey the machine-readable Corresponding 
Source under the terms of this License, in one of these ways:

a) Convey the object code in, or embodied in, a physical product (including a
physical distribution medium), accompanied by the Corresponding Source fixed 
on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a
physical distribution medium), accompanied by a written offer, valid for at 
least three years and valid for as long as you offer spare parts or customer 
support for that product model, to give anyone who possesses the object code 
either (1) a copy of the Corresponding Source for all the software in the 
product that is covered by this License, on a durable physical medium 
customarily used for software interchange, for a price no more than your 
reasonable cost of physically performing this conveying of source, or (2) 
access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written 
offer to provide the Corresponding Source. This alternative is allowed only 
occasionally and noncommercially, and only if you received the object code 
with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis 
or for a charge), and offer equivalent access to the Corresponding Source in 
the same way through the same place at no further charge. You need not 
require recipients to copy the Corresponding Source along with the object 
code. If the place to copy the object code is a network server, the 
Corresponding Source may be on a different server (operated by you or a third
party) that supports equivalent copying facilities, provided you maintain 
clear directions next to the object code saying where to find the 
Corresponding Source. Regardless of what server hosts the Corresponding 
Source, you remain obligated to ensure that it is available for as long as 
needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you 
inform other peers where the object code and Corresponding Source of the work
are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from 
the Corresponding Source as a System Library, need not be included in 
conveying the object code work.

A "User Product" is either (1) a "consumer product", which means any tangible
personal property which is normally used for personal, family, or household 
purposes, or (2) anything designed or sold for incorporation into a dwelling.
In determining whether a product is a consumer product, doubtful cases shall 
be resolved in favor of coverage. For a particular product received by a 
particular user, "normally used" refers to a typical or common use of that 
class of product, regardless of the status of the particular user or of the 
way in which the particular user actually uses, or expects or is expected to 
use, the product. A product is a consumer product regardless of whether the 
product has substantial commercial, industrial or non-consumer uses, unless 
such uses represent the only significant mode of use of the product.

"Installation Information" for a User Product means any methods, procedures, 
authorization keys, or other information required to install and execute 
modified versions of a covered work in that User Product from a modified 
version of its Corresponding Source. The information must suffice to ensure 
that the continued functioning of the modified object code is in no case 
prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or 
specifically for use in, a User Product, and the conveying occurs as part of 
a transaction in which the right of possession and use of the User Product is
transferred to the recipient in perpetuity or for a fixed term (regardless of
how the transaction is characterized), the Corresponding Source conveyed 
under this section must be accompanied by the Installation Information. But 
this requirement does not apply if neither you nor any third party retains 
the ability to install modified object code on the User Product (for example,
the work has been installed in ROM).

The requirement to provide Installation Information does not include a 
requirement to continue to provide support service, warranty, or updates for 
a work that has been modified or installed by the recipient, or for the User 
Product in which it has been modified or installed. Access to a network may 
be denied when the modification itself materially and adversely affects the 
operation of the network or violates the rules and protocols for 
communication across the network.

Corresponding Source conveyed, and Installation Information provided, in 
accord with this section must be in a format that is publicly documented (and
with an implementation available to the public in source code form), and must
require no special password or key for unpacking, reading or copying.

7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License 
by making exceptions from one or more of its conditions. Additional 
permissions that are applicable to the entire Program shall be treated as 
though they were included in this License, to the extent that they are valid 
under applicable law. If additional permissions apply only to part of the 
Program, that part may be used separately under those permissions, but the 
entire Program remains governed by this License without regard to the 
additional permissions.

When you convey a copy of a covered work, you may at your option remove any 
additional permissions from that copy, or from any part of it. (Additional 
permissions may be written to require their own removal in certain cases when
you modify the work.) You may place additional permissions on material, added
by you to a covered work, for which you have or can give appropriate 
copyright permission.

Notwithstanding any other provision of this License, for material you add to 
a covered work, you may (if authorized by the copyright holders of that 
material) supplement the terms of this License with terms:

a) Disclaiming warranty or limiting liability differently from the terms of 
sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author 
attributions in that material or in the Appropriate Legal Notices displayed 
by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring
that modified versions of such material be marked in reasonable ways as 
different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors 
of the material; or
e) Declining to grant rights under trademark law for use of some trade names,
trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by 
anyone who conveys the material (or modified versions of it) with contractual
assumptions of liability to the recipient, for any liability that these 
contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered "further 
restrictions" within the meaning of section 10. If the Program as you 
received it, or any part of it, contains a notice stating that it is governed
by this License along with a term that is a further restriction, you may 
remove that term. If a license document contains a further restriction but 
permits relicensing or conveying under this License, you may add to a covered
work material governed by the terms of that license document, provided that 
the further restriction does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you must 
place, in the relevant source files, a statement of the additional terms that
apply to those files, or a notice indicating where to find the applicable 
terms.

Additional terms, permissive or non-permissive, may be stated in the form of 
a separately written license, or stated as exceptions; the above requirements
apply either way.

8. Termination.
You may not propagate or modify a covered work except as expressly provided 
under this License. Any attempt otherwise to propagate or modify it is void, 
and will automatically terminate your rights under this License (including 
any patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a
particular copyright holder is reinstated (a) provisionally, unless and until
the copyright holder explicitly and finally terminates your license, and (b) 
permanently, if the copyright holder fails to notify you of the violation by 
some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated 
permanently if the copyright holder notifies you of the violation by some 
reasonable means, this is the first time you have received notice of 
violation of this License (for any work) from that copyright holder, and you 
cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses
of parties who have received copies or rights from you under this License. If
your rights have been terminated and not permanently reinstated, you do not 
qualify to receive new licenses for the same material under section 10.

9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy
of the Program. Ancillary propagation of a covered work occurring solely as a
consequence of using peer-to-peer transmission to receive a copy likewise 
does not require acceptance. However, nothing other than this License grants 
you permission to propagate or modify any covered work. These actions 
infringe copyright if you do not accept this License. Therefore, by modifying
or propagating a covered work, you indicate your acceptance of this License 
to do so.

10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a 
license from the original licensors, to run, modify and propagate that work, 
subject to this License. You are not responsible for enforcing compliance by 
third parties with this License.

An "entity transaction" is a transaction transferring control of an 
organization, or substantially all assets of one, or subdividing an 
organization, or merging organizations. If propagation of a covered work 
results from an entity transaction, each party to that transaction who 
receives a copy of the work also receives whatever licenses to the work the 
party's predecessor in interest had or could give under the previous 
paragraph, plus a right to possession of the Corresponding Source of the work
from the predecessor in interest, if the predecessor has it or can get it 
with reasonable efforts.

You may not impose any further restrictions on the exercise of the rights 
granted or affirmed under this License. For example, you may not impose a 
license fee, royalty, or other charge for exercise of rights granted under 
this License, and you may not initiate litigation (including a cross-claim or
counterclaim in a lawsuit) alleging that any patent claim is infringed by 
making, using, selling, offering for sale, or importing the Program or any 
portion of it.

11. Patents.
A "contributor" is a copyright holder who authorizes use under this License 
of the Program or a work on which the Program is based. The work thus 
licensed is called the contributor's "contributor version".

A contributor's "essential patent claims" are all patent claims owned or 
controlled by the contributor, whether already acquired or hereafter 
acquired, that would be infringed by some manner, permitted by this License, 
of making, using, or selling its contributor version, but do not include 
claims that would be infringed only as a consequence of further modification 
of the contributor version. For purposes of this definition, "control" 
includes the right to grant patent sublicenses in a manner consistent with 
the requirements of this License.

Each contributor grants you a non-exclusive, worldwide, royalty-free patent 
license under the contributor's essential patent claims, to make, use, sell, 
offer for sale, import and otherwise run, modify and propagate the contents 
of its contributor version.

In the following three paragraphs, a "patent license" is any express 
agreement or commitment, however denominated, not to enforce a patent (such 
as an express permission to practice a patent or covenant not to sue for 
patent infringement). To "grant" such a patent license to a party means to 
make such an agreement or commitment not to enforce a patent against the 
party.

If you convey a covered work, knowingly relying on a patent license, and the 
Corresponding Source of the work is not available for anyone to copy, free of
charge and under the terms of this License, through a publicly available 
network server or other readily accessible means, then you must either (1) 
cause the Corresponding Source to be so available, or (2) arrange to deprive 
yourself of the benefit of the patent license for this particular work, or 
(3) arrange, in a manner consistent with the requirements of this License, to
extend the patent license to downstream recipients. "Knowingly relying" means
you have actual knowledge that, but for the patent license, your conveying 
the covered work in a country, or your recipient's use of the covered work in
a country, would infringe one or more identifiable patents in that country 
that you have reason to believe are valid.

If, pursuant to or in connection with a single transaction or arrangement, 
you convey, or propagate by procuring conveyance of, a covered work, and 
grant a patent license to some of the parties receiving the covered work 
authorizing them to use, propagate, modify or convey a specific copy of the 
covered work, then the patent license you grant is automatically extended to 
all recipients of the covered work and works based on it.

A patent license is "discriminatory" if it does not include within the scope 
of its coverage, prohibits the exercise of, or is conditioned on the 
non-exercise of one or more of the rights that are specifically granted under
this License. You may not convey a covered work if you are a party to an 
arrangement with a third party that is in the business of distributing 
software, under which you make payment to the third party based on the extent
of your activity of conveying the work, and under which the third party 
grants, to any of the parties who would receive the covered work from you, a 
discriminatory patent license (a) in connection with copies of the covered 
work conveyed by you (or copies made from those copies), or (b) primarily for
and in connection with specific products or compilations that contain the 
covered work, unless you entered into that arrangement, or that patent 
license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting any 
implied license or other defenses to infringement that may otherwise be 
available to you under applicable patent law.

12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or 
otherwise) that contradict the conditions of this License, they do not excuse
you from the conditions of this License. If you cannot convey a covered work 
so as to satisfy simultaneously your obligations under this License and any 
other pertinent obligations, then as a consequence you may not convey it at 
all. For example, if you agree to terms that obligate you to collect a 
royalty for further conveying from those to whom you convey the Program, the 
only way you could satisfy both those terms and this License would be to 
refrain entirely from conveying the Program.

13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the 
Program, your modified version must prominently offer all users interacting 
with it remotely through a computer network (if your version supports such 
interaction) an opportunity to receive the Corresponding Source of your 
version by providing access to the Corresponding Source from a network server
at no charge, through some standard or customary means of facilitating 
copying of software. This Corresponding Source shall include the 
Corresponding Source for any work covered by version 3 of the GNU General 
Public License that is incorporated pursuant to the following paragraph.

Notwithstanding any other provision of this License, you have permission to 
link or combine any covered work with a work licensed under version 3 of the 
GNU General Public License into a single combined work, and to convey the 
resulting work. The terms of this License will continue to apply to the part 
which is the covered work, but the work with which it is combined will remain
governed by version 3 of the GNU General Public License.

14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the 
GNU Affero General Public License from time to time. Such new versions will 
be similar in spirit to the present version, but may differ in detail to 
address new problems or concerns.

Each version is given a distinguishing version number. If the Program 
specifies that a certain numbered version of the GNU Affero General Public 
License "or any later version" applies to it, you have the option of 
following the terms and conditions either of that numbered version or of any 
later version published by the Free Software Foundation. If the Program does 
not specify a version number of the GNU Affero General Public License, you 
may choose any version ever published by the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the
GNU Affero General Public License can be used, that proxy's public statement 
of acceptance of a version permanently authorizes you to choose that version 
for the Program.

Later license versions may give you additional or different permissions. 
However, no additional obligations are imposed on any author or copyright 
holder as a result of your choosing to follow a later version.

15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE 
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 
OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, 
EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE 
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. 
SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY 
SERVICING, REPAIR OR CORRECTION.

16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL 
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE 
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE 
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR
A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH 
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above 
cannot be given local legal effect according to their terms, reviewing courts
shall apply local law that most closely approximates an absolute waiver of 
all civil liability in connection with the Program, unless a warranty or 
assumption of liability accompanies a copy of the Program in return for a 
fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible 
use to the public, the best way to achieve this is to make it free software 
which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach
them to the start of each source file to most effectively state the exclusion
of warranty; and each file should have at least the "copyright" line and a 
pointer to where the full notice is found.

SpacetimeDB: A database which replaces your server.
Copyright (C) 2023 Clockwork Laboratories, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.

If your software can interact with users remotely through a computer network,
you should also make sure that it provides a way for users to get its source.
For example, if your program is a web application, its interface could 
display a "Source" link that leads users to an archive of the code. There are
many ways you could offer source, and different solutions will be better for 
different programs; see section 13 for the specific requirements.

You should also get your employer (if you work as a programmer) or school, if
any, to sign a "copyright disclaimer" for the program, if necessary. For more
information on this, and how to apply and follow the GNU AGPL, see 
<https://www.gnu.org/licenses/>.


================================================
FILE: README.md
================================================
<p align="center">
    <a href="https://spacetimedb.com#gh-dark-mode-only" target="_blank">
	<img width="320" src="./images/dark/logo.svg" alt="SpacetimeDB Logo">
    </a>
    <a href="https://spacetimedb.com#gh-light-mode-only" target="_blank">
	<img width="320" src="./images/light/logo.svg" alt="SpacetimeDB Logo">
    </a>
</p>
<p align="center">
    <a href="https://spacetimedb.com#gh-dark-mode-only" target="_blank">
        <img width="250" src="./images/dark/logo-text.svg" alt="SpacetimeDB">
    </a>
    <a href="https://spacetimedb.com#gh-light-mode-only" target="_blank">
        <img width="250" src="./images/light/logo-text.svg" alt="SpacetimeDB">
    </a>
    <h3 align="center">
        Development at the speed of light.
    </h3>
</p>
<p align="center">
    <a href="https://github.com/clockworklabs/spacetimedb"><img src="https://img.shields.io/github/v/release/clockworklabs/spacetimedb?color=%23ff00a0&include_prereleases&label=version&sort=semver&style=flat-square"></a>
    &nbsp;
    <a href="https://github.com/clockworklabs/spacetimedb"><img src="https://img.shields.io/badge/built_with-Rust-dca282.svg?style=flat-square"></a>
    &nbsp;
	<a href="https://github.com/clockworklabs/spacetimedb/actions"><img src="https://img.shields.io/github/actions/workflow/status/clockworklabs/spacetimedb/ci.yml?style=flat-square&branch=master"></a>
    &nbsp;
    <a href="https://status.spacetimedb.com"><img src="https://img.shields.io/uptimerobot/ratio/7/m784409192-e472ca350bb615372ededed7?label=cloud%20uptime&style=flat-square"></a>
    &nbsp;
    <a href="https://hub.docker.com/r/clockworklabs/spacetimedb"><img src="https://img.shields.io/docker/pulls/clockworklabs/spacetimedb?style=flat-square"></a>
    &nbsp;
    <a href="https://github.com/clockworklabs/spacetimedb/blob/master/LICENSE.txt"><img src="https://img.shields.io/badge/license-BSL_1.1-00bfff.svg?style=flat-square"></a>
</p>
<p align="center">
    <a href="https://crates.io/crates/spacetimedb"><img src="https://img.shields.io/crates/d/spacetimedb?color=e45928&label=Rust%20Crate&style=flat-square"></a>
    &nbsp;
    <a href="https://www.nuget.org/packages/SpacetimeDB.Runtime"><img src="https://img.shields.io/nuget/dt/spacetimedb.runtime?color=0b6cff&label=NuGet%20Package&style=flat-square"></a>
    &nbsp;
    <a href="https://www.npmjs.com/package/spacetimedb"><img src="https://img.shields.io/npm/dm/spacetimedb?color=cb0000&label=npm&style=flat-square"></a>
</p>
<p align="center">
    <a href="https://discord.gg/spacetimedb"><img src="https://img.shields.io/discord/1037340874172014652?label=discord&style=flat-square&color=5a66f6"></a>
    &nbsp;
    <a href="https://twitter.com/spacetime_db"><img src="https://img.shields.io/badge/twitter-Follow_us-1d9bf0.svg?style=flat-square"></a>
    &nbsp;
    <a href="https://clockworklabs.io/join"><img src="https://img.shields.io/badge/careers-Join_us-86f7b7.svg?style=flat-square"></a>
    &nbsp;
    <a href="https://www.linkedin.com/company/clockworklabs/"><img src="https://img.shields.io/badge/linkedin-Connect_with_us-0a66c2.svg?style=flat-square"></a>
</p>

<p align="center">
    <a href="https://discord.gg/spacetimedb"><img height="25" src="./images/social/discord.svg" alt="Discord"></a>
    &nbsp;
    <a href="https://twitter.com/spacetime_db"><img height="25" src="./images/social/twitter.svg" alt="Twitter"></a>
    &nbsp;
    <a href="https://github.com/clockworklabs/spacetimedb"><img height="25" src="./images/social/github.svg" alt="GitHub"></a>
    &nbsp;
    <a href="https://twitch.tv/SpacetimeDB"><img height="25" src="./images/social/twitch.svg" alt="Twitch"></a>
    &nbsp;
    <a href="https://youtube.com/@SpacetimeDB"><img height="25" src="./images/social/youtube.svg" alt="YouTube"></a>
    &nbsp;
    <a href="https://www.linkedin.com/company/clockwork-labs/"><img height="25" src="./images/social/linkedin.svg" alt="LinkedIn"></a>
    &nbsp;
    <a href="https://stackoverflow.com/questions/tagged/spacetimedb"><img height="25" src="./images/social/stackoverflow.svg" alt="StackOverflow"></a>
</p>

<br>

## What is SpacetimeDB?

SpacetimeDB is a relational database that is also a server. You upload your application logic directly into the database, and clients connect to it without any server in between.

Write your schema and business logic as a **module** in [Rust](https://spacetimedb.com/docs/quickstarts/rust), [C#](https://spacetimedb.com/docs/quickstarts/c-sharp), [TypeScript](https://spacetimedb.com/docs/quickstarts/typescript), or [C++](https://spacetimedb.com/docs/quickstarts/c-plus-plus). SpacetimeDB compiles it, runs it inside the database, and automatically synchronizes state to connected clients in real-time.

Instead of deploying a web or game server that sits in between your clients and your database, your clients connect directly to the database and execute your application logic in your module. You can write all of your permission and authorization logic right inside your module just as you would in a normal server.

This means that you can write your entire application in a single language and deploy it as a single binary. No more separate webserver, no more containers, no more Kubernetes, no more VMs, no more DevOps, no more caching later. Zero infrastructure to manage.

<figure>
    <img src="./images/basic-architecture-diagram.png" alt="SpacetimeDB Architecture" style="width:100%">
    <figcaption align="center">
        <p align="center"><b>SpacetimeDB application architecture</b><br /><sup><sub>(elements in white are provided by SpacetimeDB)</sub></sup></p>
    </figcaption>
</figure>

SpacetimeDB is optimized for maximum speed and minimum latency. SpacetimeDB provides all the ACID guarantees of a traditional RDBMS, with all the speed of an optimized web server. All application state is held in memory for fast access, while a commit log on disk provides durability and crash recovery. The entire backend of our MMORPG [BitCraft Online](https://bitcraftonline.com) runs as a single SpacetimeDB module: chat, items, terrain, player positions, everything, synchronized to thousands of players in real-time.

## Quick Start

### 1. Install

```bash
# macOS / Linux
curl -sSf https://install.spacetimedb.com | sh

# Windows (PowerShell)
iwr https://windows.spacetimedb.com -useb | iex
```

### 2. Log in

```bash
spacetime login
```

This opens a browser to authenticate with GitHub. Your identity is linked to your account so you can publish databases.

### 3. Start developing

```bash
spacetime dev --template chat-react-ts
```

That is it. This creates a project from a template, publishes it to [Maincloud](https://spacetimedb.com/docs/how-to/deploy/maincloud), and watches for file changes, automatically rebuilding and republishing on save. See [pricing](https://spacetimedb.com/pricing) for details.

## How It Works

SpacetimeDB modules define **tables** (your data) and **reducers** (your logic). Clients connect, call reducers, and subscribe to tables. When data changes, SpacetimeDB pushes updates to subscribed clients automatically.

```rust
// Define a table
#[spacetimedb::table(accessor = messages, public)]
pub struct Message {
    #[primary_key]
    #[auto_inc]
    id: u64,
    sender: Identity,
    text: String,
}

// Define a reducer (your API endpoint)
#[spacetimedb::reducer]
pub fn send_message(ctx: &ReducerContext, text: String) {
    ctx.db.messages().insert(Message {
        id: 0,
        sender: ctx.sender,
        text,
    });
}
```

On the client side, subscribe and get live updates:

```typescript
const [messages] = useTable(tables.message);
// messages updates automatically when the server state changes.
// No polling. No refetching.
```

## Language Support

### Server Modules

Write your database logic in any of these languages:

| Language | Quickstart |
|----------|-----------|
| **Rust** | [Get started](https://spacetimedb.com/docs/quickstarts/rust) |
| **C#** | [Get started](https://spacetimedb.com/docs/quickstarts/c-sharp) |
| **TypeScript** | [Get started](https://spacetimedb.com/docs/quickstarts/typescript) |
| **C++** | [Get started](https://spacetimedb.com/docs/quickstarts/c-plus-plus) |

### Client SDKs

Connect from any of these platforms:

| SDK | Quickstart |
|-----|-----------|
| **TypeScript** (React, Next.js, Vue, Svelte, Angular, Node.js, Bun, Deno) | [Get started](https://spacetimedb.com/docs/quickstarts/react) |
| **Rust** | [Get started](https://spacetimedb.com/docs/quickstarts/rust) |
| **C#** (standalone and Unity) | [Get started](https://spacetimedb.com/docs/quickstarts/c-sharp) |
| **C++** (Unreal Engine) | [Get started](https://spacetimedb.com/docs/quickstarts/c-plus-plus) |

## Running with Docker

```bash
docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start
```

## Building from Source

If you need features from `master` that have not been released yet:

```bash
# Prerequisites: Rust toolchain with wasm32-unknown-unknown target
curl https://sh.rustup.rs -sSf | sh

git clone https://github.com/clockworklabs/SpacetimeDB
cd SpacetimeDB
cargo build --locked --release -p spacetimedb-standalone -p spacetimedb-update -p spacetimedb-cli
```

Then install the binaries:

<details>
<summary>macOS / Linux</summary>

```bash
mkdir -p ~/.local/bin
STDB_VERSION="$(./target/release/spacetimedb-cli --version | sed -n 's/.*spacetimedb tool version \([0-9.]*\);.*/\1/p')"
mkdir -p ~/.local/share/spacetime/bin/$STDB_VERSION

cp target/release/spacetimedb-update ~/.local/bin/spacetime
cp target/release/spacetimedb-cli ~/.local/share/spacetime/bin/$STDB_VERSION
cp target/release/spacetimedb-standalone ~/.local/share/spacetime/bin/$STDB_VERSION

# Add to your shell config if not already present:
export PATH="$HOME/.local/bin:$PATH"

# Set the active version:
spacetime version use $STDB_VERSION
```
</details>

<details>
<summary>Windows (PowerShell)</summary>

```powershell
$stdbDir = "$HOME\AppData\Local\SpacetimeDB"
$stdbVersion = & ".\target\release\spacetimedb-cli" --version |
    Select-String -Pattern 'spacetimedb tool version ([0-9.]+);' |
    ForEach-Object { $_.Matches.Groups[1].Value }
New-Item -ItemType Directory -Path "$stdbDir\bin\$stdbVersion" -Force | Out-Null

Copy-Item "target\release\spacetimedb-update.exe" "$stdbDir\spacetime.exe"
Copy-Item "target\release\spacetimedb-cli.exe" "$stdbDir\bin\$stdbVersion\"
Copy-Item "target\release\spacetimedb-standalone.exe" "$stdbDir\bin\$stdbVersion\"

# Add to your system PATH: %USERPROFILE%\AppData\Local\SpacetimeDB
# Then in a new shell:
spacetime version use $stdbVersion
```
</details>

Verify with `spacetime --version`.

## Documentation

Full documentation is available at **[spacetimedb.com/docs](https://spacetimedb.com/docs)**, including:

- [Quickstart guides](https://spacetimedb.com/docs) for every supported language and framework
- [Core concepts](https://spacetimedb.com/docs/core-concepts): tables, reducers, subscriptions, authentication
- [Tutorials](https://spacetimedb.com/docs/tutorials/chat-app): chat app, Unity multiplayer, Unreal Engine multiplayer
- [Deployment guide](https://spacetimedb.com/docs/how-to/deploy/maincloud): publishing to Maincloud
- [CLI reference](https://spacetimedb.com/docs/reference/cli-reference)
- [SQL reference](https://spacetimedb.com/docs/reference/sql-reference)

## License

SpacetimeDB is licensed under the [Business Source License 1.1 (BSL)](LICENSE.txt). It converts to the AGPL v3.0 with a linking exception after a few years. The linking exception means you are **not** required to open-source your own code if you use SpacetimeDB. You only need to contribute back changes to SpacetimeDB itself.

**Why did we choose this license?**
We chose to license SpacetimeDB under the MariaDB Business Source License for 4 years because we can't compete with AWS while also building our products for them.

We chose GPLv3 with linking exception as the open source license because we want contributions merged back into mainline (just like Linux), but we don't want to make anyone else open source their own code (i.e. linking exception). 


================================================
FILE: clippy.toml
================================================
disallowed-macros = [
    { path = "std::print",    reason = "print blocks on a global mutex for synchronization, and its output cannot be filtered. Use a log macro instead, or apply #[allow(disallowed-macros)] if this is test or CLI code." },
    { path = "std::println",  reason = "println blocks on a global mutex for synchronization, and its output cannot be filtered. Use a log macro instead, or apply #[allow(disallowed-macros)] if this is test or CLI code." },
    { path = "std::eprint",   reason = "eprint blocks on a global mutex for synchronization, and its output cannot be filtered. Use a log macro instead, or apply #[allow(disallowed-macros)] if this is test or CLI code." },
    { path = "std::eprintln", reason = "eprintln blocks on a global mutex for synchronization, and its output cannot be filtered. Use a log macro instead, or apply #[allow(disallowed-macros)] if this is test or CLI code." },
    { path = "std::dbg",      reason = "dbg is a debugging tool and should never be committed into the repository." },
]


================================================
FILE: crates/auth/Cargo.toml
================================================
[package]
name = "spacetimedb-auth"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license-file = "LICENSE"
description = "Auth helpers for SpacetimeDB"

[dependencies]
spacetimedb-data-structures.workspace = true
spacetimedb-lib = { workspace = true, features = ["serde"] }

anyhow.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_with.workspace = true
jsonwebtoken.workspace = true

[dev-dependencies]
serde_json.workspace = true

[lints]
workspace = true


================================================
FILE: crates/auth/src/identity.rs
================================================
pub use jsonwebtoken::errors::Error as JwtError;
pub use jsonwebtoken::errors::ErrorKind as JwtErrorKind;
pub use jsonwebtoken::{DecodingKey, EncodingKey};
use serde::Deserializer;
use serde::{Deserialize, Serialize};
use spacetimedb_data_structures::map::HashMap;
use spacetimedb_lib::Identity;
use std::time::SystemTime;

#[derive(Debug, Clone)]
pub struct ConnectionAuthCtx {
    pub claims: SpacetimeIdentityClaims,
    pub jwt_payload: Box<str>,
}

impl TryFrom<SpacetimeIdentityClaims> for ConnectionAuthCtx {
    type Error = anyhow::Error;
    fn try_from(claims: SpacetimeIdentityClaims) -> Result<Self, Self::Error> {
        let payload = serde_json::to_string(&claims).map_err(|e| anyhow::anyhow!("Failed to serialize claims: {e}"))?;
        Ok(ConnectionAuthCtx {
            claims,
            jwt_payload: payload.into(),
        })
    }
}

// These are the claims that can be attached to a request/connection.
#[serde_with::serde_as]
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SpacetimeIdentityClaims {
    #[serde(rename = "hex_identity")]
    pub identity: Identity,
    #[serde(rename = "sub")]
    pub subject: Box<str>,
    #[serde(rename = "iss")]
    pub issuer: Box<str>,
    #[serde(rename = "aud")]
    pub audience: Box<[Box<str>]>,

    /// The unix timestamp the token was issued at
    #[serde_as(as = "serde_with::TimestampSeconds")]
    pub iat: SystemTime,
    #[serde_as(as = "Option<serde_with::TimestampSeconds>")]
    pub exp: Option<SystemTime>,

    #[serde(flatten)]
    pub extra: Option<HashMap<Box<str>, serde_json::Value>>,
}

fn deserialize_audience<'de, D>(deserializer: D) -> Result<Box<[Box<str>]>, D::Error>
where
    D: Deserializer<'de>,
{
    // By using `untagged`, it will try the different options.
    #[derive(Deserialize)]
    #[serde(untagged)]
    enum Audience {
        Single(Box<str>),
        Multiple(Box<[Box<str>]>),
    }

    // Deserialize into the enum
    let audience = Audience::deserialize(deserializer)?;

    // Convert the enum into a list.
    Ok(match audience {
        Audience::Single(s) => [s].into(),
        Audience::Multiple(v) => v,
    })
}

// IncomingClaims are from the token we receive from the client.
// The signature should be verified already, but further validation is needed to have a SpacetimeIdentityClaims2.
#[serde_with::serde_as]
#[derive(Debug, Serialize, Deserialize)]
pub struct IncomingClaims {
    #[serde(rename = "hex_identity")]
    pub identity: Option<Identity>,
    #[serde(rename = "sub")]
    pub subject: Box<str>,
    #[serde(rename = "iss")]
    pub issuer: Box<str>,
    #[serde(rename = "aud", default, deserialize_with = "deserialize_audience")]
    pub audience: Box<[Box<str>]>,

    /// The unix timestamp the token was issued at
    #[serde_as(as = "serde_with::TimestampSeconds")]
    pub iat: SystemTime,
    #[serde_as(as = "Option<serde_with::TimestampSeconds>")]
    pub exp: Option<SystemTime>,

    /// All remaining claims from the JWT payload
    #[serde(flatten)]
    pub extra: Option<HashMap<Box<str>, serde_json::Value>>,
}

impl TryInto<SpacetimeIdentityClaims> for IncomingClaims {
    type Error = anyhow::Error;

    fn try_into(self) -> anyhow::Result<SpacetimeIdentityClaims> {
        // The issuer and subject must be less than 128 bytes.
        if self.issuer.len() > 128 {
            return Err(anyhow::anyhow!("Issuer too long: {:?}", self.issuer));
        }
        if self.subject.len() > 128 {
            return Err(anyhow::anyhow!("Subject too long: {:?}", self.subject));
        }
        // The issuer and subject must be non-empty.
        if self.issuer.is_empty() {
            return Err(anyhow::anyhow!("Issuer empty"));
        }
        if self.subject.is_empty() {
            return Err(anyhow::anyhow!("Subject empty"));
        }

        let computed_identity = Identity::from_claims(&self.issuer, &self.subject);
        // If an identity is provided, it must match the computed identity.
        if let Some(token_identity) = self.identity
            && token_identity != computed_identity
        {
            return Err(anyhow::anyhow!(
                    "Identity mismatch: token identity {token_identity:?} does not match computed identity {computed_identity:?}",
                ));
        }

        Ok(SpacetimeIdentityClaims {
            identity: computed_identity,
            subject: self.subject,
            issuer: self.issuer,
            audience: self.audience,
            iat: self.iat,
            exp: self.exp,
            extra: self.extra,
        })
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use serde_json::json;
    use std::time::UNIX_EPOCH;

    #[test]
    fn test_deserialize_audience_single_string() {
        let json_data = json!({
            "sub": "123",
            "iss": "example.com",
            "aud": "audience1",
            "iat": 1693425600,
            "exp": 1693512000
        });

        let claims: IncomingClaims = serde_json::from_value(json_data).unwrap();

        assert_eq!(claims.audience, ["audience1".into()].into());
        assert_eq!(&*claims.subject, "123");
        assert_eq!(&*claims.issuer, "example.com");
        assert_eq!(claims.iat, UNIX_EPOCH + std::time::Duration::from_secs(1693425600));
        assert_eq!(
            claims.exp,
            Some(UNIX_EPOCH + std::time::Duration::from_secs(1693512000))
        );
    }

    #[test]
    fn test_deserialize_audience_multiple_strings() {
        let json_data = json!({
            "sub": "123",
            "iss": "example.com",
            "aud": ["audience1", "audience2"],
            "iat": 1693425600,
            "exp": 1693512000
        });

        let claims: IncomingClaims = serde_json::from_value(json_data).unwrap();

        assert_eq!(claims.audience, ["audience1".into(), "audience2".into()].into());
        assert_eq!(&*claims.subject, "123");
        assert_eq!(&*claims.issuer, "example.com");
        assert_eq!(claims.iat, UNIX_EPOCH + std::time::Duration::from_secs(1693425600));
        assert_eq!(
            claims.exp,
            Some(UNIX_EPOCH + std::time::Duration::from_secs(1693512000))
        );
    }

    #[test]
    fn test_deserialize_audience_missing_field() {
        let json_data = json!({
            "sub": "123",
            "iss": "example.com",
            "iat": 1693425600,
            "exp": 1693512000
        });

        let claims: IncomingClaims = serde_json::from_value(json_data).unwrap();

        assert!(claims.audience.is_empty()); // Since `default` is used, it should be an empty vector
        assert_eq!(&*claims.subject, "123");
        assert_eq!(&*claims.issuer, "example.com");
        assert_eq!(claims.iat, UNIX_EPOCH + std::time::Duration::from_secs(1693425600));
        assert_eq!(
            claims.exp,
            Some(UNIX_EPOCH + std::time::Duration::from_secs(1693512000))
        );
    }
}


================================================
FILE: crates/auth/src/lib.rs
================================================
pub mod identity;


================================================
FILE: crates/bench/.gitignore
================================================
.spacetime/
target/


================================================
FILE: crates/bench/Cargo.toml
================================================
[package]
name = "spacetimedb-bench"
version.workspace = true
edition.workspace = true
license-file = "LICENSE"
description = "Bench library/utility for SpacetimeDB"
publish = false

[[bench]]
name = "special"
harness = false

[[bench]]
name = "generic"
harness = false

[[bench]]
name = "callgrind"
harness = false

[[bench]]
name = "subscription"
harness = false

[[bench]]
name = "delete_table"
harness = false

[[bench]]
name = "index"
harness = false

[[bin]]
name = "summarize"

[lib]
bench = false

[dependencies]
spacetimedb-client-api = { path = "../client-api" }
spacetimedb-client-api-messages = { path = "../client-api-messages" }
spacetimedb-core = { path = "../core", features = ["test"] }
spacetimedb-data-structures.workspace = true
spacetimedb-datastore.workspace = true
spacetimedb-execution = { path = "../execution" }
spacetimedb-lib = { path = "../lib" }
spacetimedb-paths.workspace = true
spacetimedb-primitives = { path = "../primitives" }
spacetimedb-query = { path = "../query" }
spacetimedb-sats = { path = "../sats" }
spacetimedb-schema = { workspace = true, features = ["test"] }
spacetimedb-standalone = { path = "../standalone" }
spacetimedb-table = { path = "../table" }
spacetimedb-testing = { path = "../testing" }

ahash.workspace = true
anyhow.workspace = true
convert_case.workspace = true
anymap.workspace = true
byte-unit.workspace = true
clap.workspace = true
criterion.workspace = true
futures.workspace = true
foldhash.workspace = true
hashbrown.workspace = true
lazy_static.workspace = true
log.workspace = true
mimalloc.workspace = true
rand.workspace = true
regex.workspace = true
rusqlite.workspace = true
serde.workspace = true
serde_json.workspace = true
serial_test.workspace = true
smallvec.workspace = true
tempdir.workspace = true
tokio.workspace = true
tracing-subscriber.workspace = true
walkdir.workspace = true
itertools.workspace = true

[target.'cfg(not(target_env = "msvc"))'.dependencies]
tikv-jemallocator = { workspace = true }
tikv-jemalloc-ctl = { workspace = true }

[target.'cfg(target_os = "linux")'.dependencies]
# only try to build these on linux

# also:
# we've forked iai-callgrind to add custom entrypoint support.
# FIXME(jgilles): revert to depending on the crates version if we ever get that upstreamed.

# iai-callgrind = "0.7.2"
iai-callgrind = { git = "https://github.com/clockworklabs/iai-callgrind.git", branch = "main" }
iai-callgrind-runner = { git = "https://github.com/clockworklabs/iai-callgrind.git", branch = "main" }
iai-callgrind-macros = { git = "https://github.com/clockworklabs/iai-callgrind.git", branch = "main" }

[lints]
workspace = true


================================================
FILE: crates/bench/Dockerfile
================================================
# Dockerfile for callgrind benchmarking environment.
# Set up to run from linux / WSL (running from a windows file system will be extremely slow).
# See the README for commands to run.

# sync with: ../../rust-toolchain.toml
FROM rust:1.93.0

RUN apt-get update && \
    apt-get install -y valgrind bash && \
    rm -rf /var/lib/apt/lists/*

ENV CARGO_TARGET_DIR=/projects/SpacetimeDB/linux-target
ENV CARGO_HOME=/projects/SpacetimeDB/linux-cache
ENV RUSTUP_HOME=/projects/SpacetimeDB/linux-rustup

RUN cargo install --git https://github.com/clockworklabs/iai-callgrind.git --branch main iai-callgrind-runner


================================================
FILE: crates/bench/README.md
================================================
# spacetimedb-bench

> ⚠️ **Internal Crate** ⚠️
>
> This crate is intended for internal use only. It is **not** stable and may change without notice.

Benchmarking suite for SpacetimeDB using [Criterion](https://github.com/bheisler/criterion.rs) and [Callgrind](https://valgrind.org/docs/manual/cl-manual.html) (via [iai-callgrind](https://github.com/clockworklabs/iai-callgrind)). Provides comparisons between the underlying spacetime datastore, spacetime modules, and sqlite.

To run the criterion benchmarks:

```bash
cargo bench --bench generic --bench special
```

To enable the criterion benchmarks that do one million inserts or updates, set the RUN_ONE_MILLION environment variable:

```bash
RUN_ONE_MILLION=true cargo bench --bench generic --bench special
```

To run the callgrind benchmarks, you need valgrind installed.
The easiest way to get it is to use the docker image in this folder. 
There's a handy bash script:
```bash
bash callgrind-docker.sh 
```
Which will build the docker image and run the callgrind benchmarks inside of it.

You can also comment "benchmarks please" or "callgrind please" on a pull request in the SpacetimeDB repository to run the criterion/callgrind benchmarks on that PR. The results will be posted in a comment on the PR.

This is coordinated using the benchmarks GitHub Actions: see [`../../.github/workflows/benchmarks.yml`](../../.github/workflows/benchmarks.yml), and
[`../../.github/workflows/callgrind_benchmarks.yml`](../../.github/workflows/callgrind_benchmarks.yml). 
These also rely on the benchmarks-viewer application (https://github.com/clockworklabs/benchmarks-viewer).


## Caveats

The criterion benchmarks take a long time to run -- there are a lot of them. See below for information on running select groups of them.

The callgrind benchmarks only measure a select portion of the codebase. In particular, they do not collect instruction counts in any async code, due to callgrind limitations; they only time the synchronous code that runs a reducer / the client code that calls a reducer. This is most of the code that it takes to run a reducer, including all database modifications. The async code between client and reducer is mostly just handing off data through a couple of channels. Still, if you're interested in measuring that code, you should rely on the criterion benchmarks & `perf`.



## Criterion benchmarks
Timings for spacetime modules should be
Download .txt
Showing preview only (254K chars total). Download the full file or copy to clipboard to get everything.
gitextract_6scv2pvq/

├── .cargo/
│   └── config.toml
├── .dockerignore
├── .envrc
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── Dockerfile
│   ├── GREMLINS.md
│   ├── docker-compose.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── attach-artifacts.yml
│       ├── benchmarks.yml
│       ├── check-merge-labels.yml
│       ├── check-pr-base.yml
│       ├── ci.yml
│       ├── discord-posts.yml
│       ├── docker.yml
│       ├── docs-publish.yaml
│       ├── docs-test.yaml
│       ├── llm-benchmark-update.yml
│       ├── package.yml
│       ├── pr_approval_check.yml
│       ├── rust_matcher.json
│       ├── tag-release.yml
│       ├── typescript-lint.yml
│       ├── typescript-test.yml
│       └── upgrade-version-check.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .rustfmt.toml
├── Cargo.toml
├── Dockerfile
├── LICENSE.txt
├── README.md
├── clippy.toml
├── crates/
│   ├── auth/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── identity.rs
│   │       └── lib.rs
│   ├── bench/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── benches/
│   │   │   ├── callgrind.rs
│   │   │   ├── delete_table.rs
│   │   │   ├── generic.rs
│   │   │   ├── index.rs
│   │   │   ├── special.rs
│   │   │   └── subscription.rs
│   │   ├── callgrind-docker.sh
│   │   ├── clippy.toml
│   │   ├── flamegraph.sh
│   │   ├── hyper_cmp.py
│   │   ├── instruments.sh
│   │   └── src/
│   │       ├── database.rs
│   │       ├── lib.rs
│   │       ├── schemas.rs
│   │       ├── spacetime_module.rs
│   │       ├── spacetime_raw.rs
│   │       └── sqlite.rs
│   ├── bindings/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── bindings-doctests.sh
│   │   ├── src/
│   │   │   ├── client_visibility_filter.rs
│   │   │   ├── http.rs
│   │   │   ├── lib.rs
│   │   │   ├── log_stopwatch.rs
│   │   │   ├── logger.rs
│   │   │   ├── rng.rs
│   │   │   ├── rt.rs
│   │   │   └── table.rs
│   │   └── tests/
│   │       ├── deps.rs
│   │       ├── snapshots/
│   │       │   ├── deps__duplicate_deps.snap
│   │       │   └── deps__spacetimedb_bindings_dependencies.snap
│   │       ├── ui/
│   │       │   ├── reducers.rs
│   │       │   ├── reducers.stderr
│   │       │   ├── tables.rs
│   │       │   ├── tables.stderr
│   │       │   ├── views-more.rs
│   │       │   ├── views-more.stderr
│   │       │   ├── views.rs
│   │       │   └── views.stderr
│   │       └── ui.rs
│   ├── bindings-cpp/
│   │   ├── .gitignore
│   │   ├── ARCHITECTURE.md
│   │   ├── CMakeLists.txt
│   │   ├── DEVELOP.md
│   │   ├── QUICKSTART.md
│   │   ├── README.md
│   │   ├── REFERENCE.md
│   │   ├── include/
│   │   │   ├── spacetimedb/
│   │   │   │   ├── abi/
│   │   │   │   │   ├── FFI.h
│   │   │   │   │   ├── abi.h
│   │   │   │   │   └── opaque_types.h
│   │   │   │   ├── auth_ctx.h
│   │   │   │   ├── bsatn/
│   │   │   │   │   ├── DEVELOP.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── algebraic_type.h
│   │   │   │   │   ├── bsatn.h
│   │   │   │   │   ├── primitive_traits.h
│   │   │   │   │   ├── reader.h
│   │   │   │   │   ├── result.h
│   │   │   │   │   ├── schedule_at.h
│   │   │   │   │   ├── schedule_at_impl.h
│   │   │   │   │   ├── serialization.h
│   │   │   │   │   ├── size_calculator.h
│   │   │   │   │   ├── sum_type.h
│   │   │   │   │   ├── time_duration.h
│   │   │   │   │   ├── timestamp.h
│   │   │   │   │   ├── traits.h
│   │   │   │   │   ├── type_extensions.h
│   │   │   │   │   ├── types.h
│   │   │   │   │   ├── types_impl.h
│   │   │   │   │   ├── uuid.h
│   │   │   │   │   └── writer.h
│   │   │   │   ├── client_visibility_filter.h
│   │   │   │   ├── database.h
│   │   │   │   ├── enum_macro.h
│   │   │   │   ├── error_handling.h
│   │   │   │   ├── http.h
│   │   │   │   ├── http_client_impl.h
│   │   │   │   ├── http_convert.h
│   │   │   │   ├── http_wire.h
│   │   │   │   ├── index_iterator.h
│   │   │   │   ├── internal/
│   │   │   │   │   ├── Module.h
│   │   │   │   │   ├── Module_impl.h
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── autogen/
│   │   │   │   │   │   ├── AlgebraicType.g.h
│   │   │   │   │   │   ├── CaseConversionPolicy.g.h
│   │   │   │   │   │   ├── ExplicitNameEntry.g.h
│   │   │   │   │   │   ├── ExplicitNames.g.h
│   │   │   │   │   │   ├── FunctionVisibility.g.h
│   │   │   │   │   │   ├── IndexType.g.h
│   │   │   │   │   │   ├── Lifecycle.g.h
│   │   │   │   │   │   ├── MiscModuleExport.g.h
│   │   │   │   │   │   ├── NameMapping.g.h
│   │   │   │   │   │   ├── ProductType.g.h
│   │   │   │   │   │   ├── ProductTypeElement.g.h
│   │   │   │   │   │   ├── RawColumnDefV8.g.h
│   │   │   │   │   │   ├── RawColumnDefaultValueV10.g.h
│   │   │   │   │   │   ├── RawColumnDefaultValueV9.g.h
│   │   │   │   │   │   ├── RawConstraintDataV9.g.h
│   │   │   │   │   │   ├── RawConstraintDefV10.g.h
│   │   │   │   │   │   ├── RawConstraintDefV8.g.h
│   │   │   │   │   │   ├── RawConstraintDefV9.g.h
│   │   │   │   │   │   ├── RawIndexAlgorithm.g.h
│   │   │   │   │   │   ├── RawIndexDefV10.g.h
│   │   │   │   │   │   ├── RawIndexDefV8.g.h
│   │   │   │   │   │   ├── RawIndexDefV9.g.h
│   │   │   │   │   │   ├── RawLifeCycleReducerDefV10.g.h
│   │   │   │   │   │   ├── RawMiscModuleExportV9.g.h
│   │   │   │   │   │   ├── RawModuleDef.g.h
│   │   │   │   │   │   ├── RawModuleDefV10.g.h
│   │   │   │   │   │   ├── RawModuleDefV10Section.g.h
│   │   │   │   │   │   ├── RawModuleDefV8.g.h
│   │   │   │   │   │   ├── RawModuleDefV9.g.h
│   │   │   │   │   │   ├── RawProcedureDefV10.g.h
│   │   │   │   │   │   ├── RawProcedureDefV9.g.h
│   │   │   │   │   │   ├── RawReducerDefV10.g.h
│   │   │   │   │   │   ├── RawReducerDefV9.g.h
│   │   │   │   │   │   ├── RawRowLevelSecurityDefV9.g.h
│   │   │   │   │   │   ├── RawScheduleDefV10.g.h
│   │   │   │   │   │   ├── RawScheduleDefV9.g.h
│   │   │   │   │   │   ├── RawScopedTypeNameV10.g.h
│   │   │   │   │   │   ├── RawScopedTypeNameV9.g.h
│   │   │   │   │   │   ├── RawSequenceDefV10.g.h
│   │   │   │   │   │   ├── RawSequenceDefV8.g.h
│   │   │   │   │   │   ├── RawSequenceDefV9.g.h
│   │   │   │   │   │   ├── RawTableDefV10.g.h
│   │   │   │   │   │   ├── RawTableDefV8.g.h
│   │   │   │   │   │   ├── RawTableDefV9.g.h
│   │   │   │   │   │   ├── RawTypeDefV10.g.h
│   │   │   │   │   │   ├── RawTypeDefV9.g.h
│   │   │   │   │   │   ├── RawUniqueConstraintDataV9.g.h
│   │   │   │   │   │   ├── RawViewDefV10.g.h
│   │   │   │   │   │   ├── RawViewDefV9.g.h
│   │   │   │   │   │   ├── ReducerDef.g.h
│   │   │   │   │   │   ├── SumType.g.h
│   │   │   │   │   │   ├── SumTypeVariant.g.h
│   │   │   │   │   │   ├── TableAccess.g.h
│   │   │   │   │   │   ├── TableDesc.g.h
│   │   │   │   │   │   ├── TableType.g.h
│   │   │   │   │   │   ├── TypeAlias.g.h
│   │   │   │   │   │   └── Typespace.g.h
│   │   │   │   │   ├── autogen_base.h
│   │   │   │   │   ├── bsatn_adapters.h
│   │   │   │   │   ├── buffer_pool.h
│   │   │   │   │   ├── debug.h
│   │   │   │   │   ├── field_registration.h
│   │   │   │   │   ├── forward_declarations.h
│   │   │   │   │   ├── module_type_registration.h
│   │   │   │   │   ├── runtime_registration.h
│   │   │   │   │   ├── template_utils.h
│   │   │   │   │   ├── v10_builder.h
│   │   │   │   │   └── v9_builder.h
│   │   │   │   ├── jwt_claims.h
│   │   │   │   ├── logger.h
│   │   │   │   ├── macros.h
│   │   │   │   ├── outcome.h
│   │   │   │   ├── procedure_context.h
│   │   │   │   ├── procedure_macros.h
│   │   │   │   ├── random.h
│   │   │   │   ├── range_queries.h
│   │   │   │   ├── readonly_database_context.h
│   │   │   │   ├── readonly_field_accessors.h
│   │   │   │   ├── readonly_table_accessor.h
│   │   │   │   ├── reducer_context.h
│   │   │   │   ├── reducer_error.h
│   │   │   │   ├── reducer_macros.h
│   │   │   │   ├── schedule_reducer.h
│   │   │   │   ├── table.h
│   │   │   │   ├── table_with_constraints.h
│   │   │   │   ├── tx_context.h
│   │   │   │   ├── version.h.in
│   │   │   │   ├── view_context.h
│   │   │   │   └── view_macros.h
│   │   │   └── spacetimedb.h
│   │   ├── src/
│   │   │   ├── abi/
│   │   │   │   ├── module_exports.cpp
│   │   │   │   └── wasi_shims.cpp
│   │   │   └── internal/
│   │   │       ├── AlgebraicType.cpp
│   │   │       ├── Module.cpp
│   │   │       ├── module_type_registration.cpp
│   │   │       ├── v10_builder.cpp
│   │   │       └── v9_builder.cpp
│   │   └── tests/
│   │       ├── client-comparison/
│   │       │   ├── README.md
│   │       │   ├── check_tables.py
│   │       │   ├── run_client_comparison.sh
│   │       │   └── scripts/
│   │       │       ├── compare_clients.sh
│   │       │       ├── compare_modules.sh
│   │       │       ├── regenerate_cpp_client.sh
│   │       │       └── regenerate_rust_client.sh
│   │       └── type-isolation-test/
│   │           ├── .gitignore
│   │           ├── CMakeLists.module.txt
│   │           ├── CMakeLists.txt
│   │           ├── CMakeLists_module.txt
│   │           ├── README.md
│   │           ├── run_type_isolation_test.sh
│   │           ├── test_modules/
│   │           │   ├── debug_constraint_simple.cpp
│   │           │   ├── debug_large_struct.cpp
│   │           │   ├── debug_minimal_fail.cpp
│   │           │   ├── debug_optional_large_struct.cpp
│   │           │   ├── debug_simple_enum.cpp
│   │           │   ├── debug_special.cpp
│   │           │   ├── debug_special_constraints.cpp
│   │           │   ├── debug_special_reducers.cpp
│   │           │   ├── debug_trace.cpp
│   │           │   ├── debug_vector_only.cpp
│   │           │   ├── debug_vector_only_simple.cpp
│   │           │   ├── error_autoinc_non_integer.cpp
│   │           │   ├── error_circular_ref.cpp
│   │           │   ├── error_default_missing_field.cpp
│   │           │   ├── error_invalid_index.cpp
│   │           │   ├── error_multicolumn_missing_field.cpp
│   │           │   ├── error_multiple_pk.cpp
│   │           │   ├── error_non_spacetimedb_type.cpp
│   │           │   ├── error_scheduled_id_pk.cpp
│   │           │   ├── module01_basic_unsigned.cpp
│   │           │   ├── module02_large_unsigned.cpp
│   │           │   ├── module03_basic_signed.cpp
│   │           │   ├── module04_large_signed.cpp
│   │           │   ├── module05_float_bool.cpp
│   │           │   ├── module06_string.cpp
│   │           │   ├── module07_special_types.cpp
│   │           │   ├── module08_enums.cpp
│   │           │   ├── module09_structs.cpp
│   │           │   ├── module10_vectors.cpp
│   │           │   ├── module11_optional.cpp
│   │           │   ├── module12_constraints.cpp
│   │           │   ├── test_complex_reducer_only.cpp
│   │           │   ├── test_complex_table_only.cpp
│   │           │   ├── test_connectionid_only.cpp
│   │           │   ├── test_debug_optional.cpp
│   │           │   ├── test_enum_table_only.cpp
│   │           │   ├── test_enum_vector_payloads.cpp
│   │           │   ├── test_identity_only.cpp
│   │           │   ├── test_massive_reducer.cpp
│   │           │   ├── test_minimal_special.cpp
│   │           │   ├── test_mixed_types.cpp
│   │           │   ├── test_multicolumn_index_valid.cpp
│   │           │   ├── test_nested_optionals.cpp
│   │           │   ├── test_optional_debug.cpp
│   │           │   ├── test_optional_reducer_only.cpp
│   │           │   ├── test_optional_simple.cpp
│   │           │   ├── test_optional_table_only.cpp
│   │           │   ├── test_simple_table.cpp
│   │           │   ├── test_single_special_vector.cpp
│   │           │   ├── test_special_minimal.cpp
│   │           │   ├── test_special_vectors.cpp
│   │           │   ├── test_timeduration_only.cpp
│   │           │   ├── test_timestamp_only.cpp
│   │           │   ├── test_u128_only.cpp
│   │           │   ├── test_unified_enum.cpp
│   │           │   ├── test_unit_isolation.cpp
│   │           │   ├── test_unit_progression.cpp
│   │           │   ├── test_unit_simple.cpp
│   │           │   ├── test_unit_struct.cpp
│   │           │   └── test_wrapped_special.cpp
│   │           └── update_table_from_log.sh
│   ├── bindings-csharp/
│   │   ├── .config/
│   │   │   └── dotnet-tools.json
│   │   ├── .editorconfig
│   │   ├── .gitignore
│   │   ├── BSATN.Codegen/
│   │   │   ├── BSATN.Codegen.csproj
│   │   │   ├── Diag.cs
│   │   │   ├── Type.cs
│   │   │   └── Utils.cs
│   │   ├── BSATN.Runtime/
│   │   │   ├── .gitignore
│   │   │   ├── Attrs.cs
│   │   │   ├── BSATN/
│   │   │   │   ├── AlgebraicType.cs
│   │   │   │   ├── I128.cs
│   │   │   │   ├── I256.cs
│   │   │   │   ├── Runtime.cs
│   │   │   │   ├── U128.cs
│   │   │   │   ├── U256.cs
│   │   │   │   └── Uuid.cs
│   │   │   ├── BSATN.Runtime.csproj
│   │   │   ├── Builtins.cs
│   │   │   ├── Db.cs
│   │   │   ├── HttpWireTypes.cs
│   │   │   ├── Internal/
│   │   │   │   └── ByteArrayComparer.cs
│   │   │   ├── QueryBuilder.cs
│   │   │   └── package.json
│   │   ├── BSATN.Runtime.Tests/
│   │   │   ├── BSATN.Runtime.Tests.csproj
│   │   │   └── Tests.cs
│   │   ├── Codegen/
│   │   │   ├── Codegen.csproj
│   │   │   ├── Diag.cs
│   │   │   ├── Module.cs
│   │   │   └── README.md
│   │   ├── Codegen.Tests/
│   │   │   ├── Codegen.Tests.csproj
│   │   │   ├── TestInit.cs
│   │   │   ├── Tests.cs
│   │   │   └── fixtures/
│   │   │       ├── Directory.Build.props
│   │   │       ├── client/
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── client.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── Type#CustomClass.verified.cs
│   │   │       │       ├── Type#CustomStruct.verified.cs
│   │   │       │       ├── Type#CustomTaggedEnum.verified.cs
│   │   │       │       └── Type#PublicTable.verified.cs
│   │   │       ├── diag/
│   │   │       │   ├── .gitattributes
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── diag.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── ExtraCompilationErrors.verified.txt
│   │   │       │       ├── Module#FFI.verified.cs
│   │   │       │       ├── Module#InAnotherNamespace.TestDuplicateTableName.verified.cs
│   │   │       │       ├── Module#Player.verified.cs
│   │   │       │       ├── Module#Reducers.InAnotherNamespace.TestDuplicateReducerName.verified.cs
│   │   │       │       ├── Module#Reducers.OnReducerWithReservedPrefix.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerKind1.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerKind2.verified.cs
│   │   │       │       ├── Module#Reducers.TestDuplicateReducerName.verified.cs
│   │   │       │       ├── Module#Reducers.TestReducerReturnType.verified.cs
│   │   │       │       ├── Module#Reducers.TestReducerWithoutContext.verified.cs
│   │   │       │       ├── Module#Reducers.__ReducerWithReservedPrefix.verified.cs
│   │   │       │       ├── Module#TestAutoIncNotInteger.verified.cs
│   │   │       │       ├── Module#TestDefaultFieldValues.verified.cs
│   │   │       │       ├── Module#TestDuplicateTableName.verified.cs
│   │   │       │       ├── Module#TestIndexIssues.verified.cs
│   │   │       │       ├── Module#TestScheduleIssues.DummyScheduledReducer.verified.cs
│   │   │       │       ├── Module#TestScheduleIssues.verified.cs
│   │   │       │       ├── Module#TestTableTaggedEnum.verified.cs
│   │   │       │       ├── Module#TestUniqueNotEquatable.verified.cs
│   │   │       │       ├── Module.verified.txt
│   │   │       │       ├── Type#MyStruct.verified.cs
│   │   │       │       ├── Type#TestTaggedEnumField.verified.cs
│   │   │       │       ├── Type#TestTaggedEnumInlineTuple.verified.cs
│   │   │       │       ├── Type#TestTypeParams_T_.verified.cs
│   │   │       │       ├── Type#TestUnsupportedType.verified.cs
│   │   │       │       └── Type.verified.txt
│   │   │       ├── explicitnames/
│   │   │       │   ├── Lib.cs
│   │   │       │   ├── explicitnames.csproj
│   │   │       │   └── snapshots/
│   │   │       │       ├── Module#DemoTable.verified.cs
│   │   │       │       ├── Module#FFI.verified.cs
│   │   │       │       ├── Module#Reducers.DemoProcedure.verified.cs
│   │   │       │       ├── Module#Reducers.DemoReducer.verified.cs
│   │   │       │       └── Type#DemoType.verified.cs
│   │   │       └── server/
│   │   │           ├── Lib.cs
│   │   │           ├── server.csproj
│   │   │           └── snapshots/
│   │   │               ├── Module#BTreeMultiColumn.verified.cs
│   │   │               ├── Module#BTreeViews.verified.cs
│   │   │               ├── Module#FFI.verified.cs
│   │   │               ├── Module#MultiTableRow.InsertMultiData.verified.cs
│   │   │               ├── Module#MultiTableRow.verified.cs
│   │   │               ├── Module#PrivateTable.verified.cs
│   │   │               ├── Module#PublicTable.verified.cs
│   │   │               ├── Module#Reducers.InsertData.verified.cs
│   │   │               ├── Module#Reducers.ScheduleImmediate.verified.cs
│   │   │               ├── Module#RegressionMultipleUniqueIndexesHadSameName.verified.cs
│   │   │               ├── Module#Test.NestingNamespaces.AndClasses.InsertData2.verified.cs
│   │   │               ├── Module#Timers.Init.verified.cs
│   │   │               ├── Module#Timers.SendMessageTimer.verified.cs
│   │   │               ├── Module#Timers.SendScheduledMessage.verified.cs
│   │   │               ├── Type#ContainsNestedLists.verified.cs
│   │   │               ├── Type#CustomClass.verified.cs
│   │   │               ├── Type#CustomNestedClass.verified.cs
│   │   │               ├── Type#CustomRecord.verified.cs
│   │   │               ├── Type#CustomStruct.verified.cs
│   │   │               ├── Type#CustomTaggedEnum.verified.cs
│   │   │               ├── Type#EmptyClass.verified.cs
│   │   │               ├── Type#EmptyRecord.verified.cs
│   │   │               ├── Type#EmptyStruct.verified.cs
│   │   │               └── Type#FormerlyForbiddenFieldNames.verified.cs
│   │   ├── Directory.Build.props
│   │   ├── README.md
│   │   ├── Runtime/
│   │   │   ├── Attrs.cs
│   │   │   ├── AuthCtx.cs
│   │   │   ├── Exceptions.cs
│   │   │   ├── Filter.cs
│   │   │   ├── Http.cs
│   │   │   ├── Internal/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── Autogen/
│   │   │   │   │   ├── CaseConversionPolicy.g.cs
│   │   │   │   │   ├── ExplicitNameEntry.g.cs
│   │   │   │   │   ├── ExplicitNames.g.cs
│   │   │   │   │   ├── FunctionVisibility.g.cs
│   │   │   │   │   ├── IndexType.g.cs
│   │   │   │   │   ├── Lifecycle.g.cs
│   │   │   │   │   ├── MiscModuleExport.g.cs
│   │   │   │   │   ├── NameMapping.g.cs
│   │   │   │   │   ├── RawColumnDefV8.g.cs
│   │   │   │   │   ├── RawColumnDefaultValueV10.g.cs
│   │   │   │   │   ├── RawColumnDefaultValueV9.g.cs
│   │   │   │   │   ├── RawConstraintDataV9.g.cs
│   │   │   │   │   ├── RawConstraintDefV10.g.cs
│   │   │   │   │   ├── RawConstraintDefV8.g.cs
│   │   │   │   │   ├── RawConstraintDefV9.g.cs
│   │   │   │   │   ├── RawIndexAlgorithm.g.cs
│   │   │   │   │   ├── RawIndexDefV10.g.cs
│   │   │   │   │   ├── RawIndexDefV8.g.cs
│   │   │   │   │   ├── RawIndexDefV9.g.cs
│   │   │   │   │   ├── RawLifeCycleReducerDefV10.g.cs
│   │   │   │   │   ├── RawMiscModuleExportV9.g.cs
│   │   │   │   │   ├── RawModuleDef.g.cs
│   │   │   │   │   ├── RawModuleDefV10.g.cs
│   │   │   │   │   ├── RawModuleDefV10Section.g.cs
│   │   │   │   │   ├── RawModuleDefV8.g.cs
│   │   │   │   │   ├── RawModuleDefV9.g.cs
│   │   │   │   │   ├── RawProcedureDefV10.g.cs
│   │   │   │   │   ├── RawProcedureDefV9.g.cs
│   │   │   │   │   ├── RawReducerDefV10.g.cs
│   │   │   │   │   ├── RawReducerDefV9.g.cs
│   │   │   │   │   ├── RawRowLevelSecurityDefV9.g.cs
│   │   │   │   │   ├── RawScheduleDefV10.g.cs
│   │   │   │   │   ├── RawScheduleDefV9.g.cs
│   │   │   │   │   ├── RawScopedTypeNameV10.g.cs
│   │   │   │   │   ├── RawScopedTypeNameV9.g.cs
│   │   │   │   │   ├── RawSequenceDefV10.g.cs
│   │   │   │   │   ├── RawSequenceDefV8.g.cs
│   │   │   │   │   ├── RawSequenceDefV9.g.cs
│   │   │   │   │   ├── RawTableDefV10.g.cs
│   │   │   │   │   ├── RawTableDefV8.g.cs
│   │   │   │   │   ├── RawTableDefV9.g.cs
│   │   │   │   │   ├── RawTypeDefV10.g.cs
│   │   │   │   │   ├── RawTypeDefV9.g.cs
│   │   │   │   │   ├── RawUniqueConstraintDataV9.g.cs
│   │   │   │   │   ├── RawViewDefV10.g.cs
│   │   │   │   │   ├── RawViewDefV9.g.cs
│   │   │   │   │   ├── ReducerDef.g.cs
│   │   │   │   │   ├── TableAccess.g.cs
│   │   │   │   │   ├── TableDesc.g.cs
│   │   │   │   │   ├── TableType.g.cs
│   │   │   │   │   ├── TypeAlias.g.cs
│   │   │   │   │   └── Typespace.g.cs
│   │   │   │   ├── Bounds.cs
│   │   │   │   ├── FFI.cs
│   │   │   │   ├── IIndex.cs
│   │   │   │   ├── IReducer.cs
│   │   │   │   ├── ITable.cs
│   │   │   │   ├── IView.cs
│   │   │   │   ├── Module.cs
│   │   │   │   ├── Procedure.cs
│   │   │   │   ├── TxContext.cs
│   │   │   │   └── ViewResultHeader.cs
│   │   │   ├── JwtClaims.cs
│   │   │   ├── Log.cs
│   │   │   ├── LogStopwatch.cs
│   │   │   ├── ProcedureContext.cs
│   │   │   ├── README.md
│   │   │   ├── Runtime.csproj
│   │   │   ├── bindings.c
│   │   │   ├── build/
│   │   │   │   ├── SpacetimeDB.Runtime.props
│   │   │   │   └── SpacetimeDB.Runtime.targets
│   │   │   └── driver.h
│   │   ├── Runtime.Tests/
│   │   │   ├── JwtClaimsTest.cs
│   │   │   └── Runtime.Tests.csproj
│   │   └── SpacetimeSharpSATS.sln
│   ├── bindings-macro/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       ├── procedure.rs
│   │       ├── reducer.rs
│   │       ├── sats.rs
│   │       ├── table.rs
│   │       ├── util.rs
│   │       └── view.rs
│   ├── bindings-sys/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── bindings-typescript/
│   │   ├── .editorconfig
│   │   ├── .gitattributes
│   │   ├── .gitignore
│   │   ├── .npmignore
│   │   ├── DEVELOP.md
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── angular/
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── injectors/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── inject-reducer.ts
│   │   │   │   │   ├── inject-spacetimedb-connected.ts
│   │   │   │   │   ├── inject-spacetimedb.ts
│   │   │   │   │   └── inject-table.ts
│   │   │   │   └── providers/
│   │   │   │       ├── index.ts
│   │   │   │       └── provide-spacetimedb.ts
│   │   │   ├── index.ts
│   │   │   ├── lib/
│   │   │   │   ├── algebraic_type.ts
│   │   │   │   ├── algebraic_type_variants.ts
│   │   │   │   ├── algebraic_value.ts
│   │   │   │   ├── autogen/
│   │   │   │   │   └── types.ts
│   │   │   │   ├── binary_reader.ts
│   │   │   │   ├── binary_writer.ts
│   │   │   │   ├── connection_id.ts
│   │   │   │   ├── constraints.ts
│   │   │   │   ├── errors.ts
│   │   │   │   ├── filter.ts
│   │   │   │   ├── http_types.ts
│   │   │   │   ├── identity.ts
│   │   │   │   ├── indexes.ts
│   │   │   │   ├── option.ts
│   │   │   │   ├── query.ts
│   │   │   │   ├── reducer_schema.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── result.ts
│   │   │   │   ├── schedule_at.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── table.ts
│   │   │   │   ├── table_schema.ts
│   │   │   │   ├── time_duration.ts
│   │   │   │   ├── timestamp.ts
│   │   │   │   ├── type_builders.test-d.ts
│   │   │   │   ├── type_builders.ts
│   │   │   │   ├── type_util.ts
│   │   │   │   ├── util.ts
│   │   │   │   └── uuid.ts
│   │   │   ├── react/
│   │   │   │   ├── SpacetimeDBProvider.ts
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── useReducer.ts
│   │   │   │   ├── useSpacetimeDB.ts
│   │   │   │   └── useTable.ts
│   │   │   ├── sdk/
│   │   │   │   ├── client_api/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── procedures.ts
│   │   │   │   │   │   └── reducers.ts
│   │   │   │   │   └── types.ts
│   │   │   │   ├── client_cache.ts
│   │   │   │   ├── client_table.ts
│   │   │   │   ├── connection_manager.ts
│   │   │   │   ├── db_connection_builder.ts
│   │   │   │   ├── db_connection_impl.ts
│   │   │   │   ├── db_context.ts
│   │   │   │   ├── db_view.ts
│   │   │   │   ├── decompress.ts
│   │   │   │   ├── event.ts
│   │   │   │   ├── event_context.ts
│   │   │   │   ├── event_emitter.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── internal.ts
│   │   │   │   ├── json_api.ts
│   │   │   │   ├── logger.ts
│   │   │   │   ├── message_types.ts
│   │   │   │   ├── procedures.ts
│   │   │   │   ├── reducer_event.ts
│   │   │   │   ├── reducer_handle.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── spacetime_module.ts
│   │   │   │   ├── subscription_builder_impl.ts
│   │   │   │   ├── table_cache.ts
│   │   │   │   ├── type_utils.ts
│   │   │   │   ├── version.ts
│   │   │   │   ├── websocket_decompress_adapter.ts
│   │   │   │   ├── websocket_test_adapter.ts
│   │   │   │   └── ws.ts
│   │   │   ├── server/
│   │   │   │   ├── console.ts
│   │   │   │   ├── db_view.ts
│   │   │   │   ├── errors.ts
│   │   │   │   ├── http.ts
│   │   │   │   ├── http_internal.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── polyfills.ts
│   │   │   │   ├── procedures.ts
│   │   │   │   ├── query.ts
│   │   │   │   ├── range.ts
│   │   │   │   ├── reducers.ts
│   │   │   │   ├── rng.ts
│   │   │   │   ├── runtime.ts
│   │   │   │   ├── schema.test-d.ts
│   │   │   │   ├── schema.ts
│   │   │   │   ├── sys.d.ts
│   │   │   │   ├── view.test-d.ts
│   │   │   │   └── views.ts
│   │   │   ├── svelte/
│   │   │   │   ├── SpacetimeDBProvider.ts
│   │   │   │   ├── connection_state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── useReducer.ts
│   │   │   │   ├── useSpacetimeDB.ts
│   │   │   │   └── useTable.ts
│   │   │   ├── tanstack/
│   │   │   │   ├── SpacetimeDBQueryClient.ts
│   │   │   │   ├── hooks.ts
│   │   │   │   └── index.ts
│   │   │   ├── util-stub.ts
│   │   │   └── vue/
│   │   │       ├── SpacetimeDBProvider.ts
│   │   │       ├── connection_state.ts
│   │   │       ├── index.ts
│   │   │       ├── useReducer.ts
│   │   │       ├── useSpacetimeDB.ts
│   │   │       └── useTable.ts
│   │   ├── test-app/
│   │   │   ├── .gitignore
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── server/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── src/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   ├── main.tsx
│   │   │   │   └── module_bindings/
│   │   │   │       ├── create_player_reducer.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── player_table.ts
│   │   │   │       ├── types/
│   │   │   │       │   ├── procedures.ts
│   │   │   │       │   └── reducers.ts
│   │   │   │       ├── types.ts
│   │   │   │       ├── unindexed_player_table.ts
│   │   │   │       └── user_table.ts
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── test-react-router-app/
│   │   │   ├── .gitignore
│   │   │   ├── CHANGELOG.md
│   │   │   ├── README.md
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── server/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── src/
│   │   │   │   ├── .gitattributes
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── index.css
│   │   │   │   ├── main.tsx
│   │   │   │   ├── module_bindings/
│   │   │   │   │   ├── clear_counter_reducer.ts
│   │   │   │   │   ├── client_connected_reducer.ts
│   │   │   │   │   ├── client_disconnected_reducer.ts
│   │   │   │   │   ├── counter_table.ts
│   │   │   │   │   ├── counter_type.ts
│   │   │   │   │   ├── increment_counter_reducer.ts
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── offline_user_table.ts
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── procedures.ts
│   │   │   │   │   │   └── reducers.ts
│   │   │   │   │   ├── user_table.ts
│   │   │   │   │   └── user_type.ts
│   │   │   │   └── pages/
│   │   │   │       ├── CounterPage.tsx
│   │   │   │       └── UserPage.tsx
│   │   │   ├── tsconfig.app.json
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── tests/
│   │   │   ├── algebraic_type.test.ts
│   │   │   ├── binary_read_write.test.ts
│   │   │   ├── client_query.test.ts
│   │   │   ├── column_metadata_validation.test.ts
│   │   │   ├── connection_manager.test.ts
│   │   │   ├── db_connection.test.ts
│   │   │   ├── index.test.ts
│   │   │   ├── logger.test.ts
│   │   │   ├── query.test.ts
│   │   │   ├── query_error_message.test.ts
│   │   │   ├── schema_index_resolution.test.ts
│   │   │   ├── serde.test.ts
│   │   │   ├── table_cache.test.ts
│   │   │   ├── table_cache_resolved_indexes.test.ts
│   │   │   ├── table_index_accessor.test.ts
│   │   │   ├── utils.ts
│   │   │   ├── uuid.test.ts
│   │   │   └── version.test.ts
│   │   ├── tsconfig.build.json
│   │   ├── tsconfig.json
│   │   ├── tsconfig.typecheck.json
│   │   ├── tsup.config.ts
│   │   └── vitest.config.ts
│   ├── cli/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── clippy.toml
│   │   ├── src/
│   │   │   ├── api.rs
│   │   │   ├── common_args.rs
│   │   │   ├── config.rs
│   │   │   ├── detect.rs
│   │   │   ├── edit_distance.rs
│   │   │   ├── errors.rs
│   │   │   ├── lib.rs
│   │   │   ├── main.rs
│   │   │   ├── spacetime_config.rs
│   │   │   ├── subcommands/
│   │   │   │   ├── build.rs
│   │   │   │   ├── call.rs
│   │   │   │   ├── db_arg_resolution.rs
│   │   │   │   ├── delete.rs
│   │   │   │   ├── describe.rs
│   │   │   │   ├── dev.rs
│   │   │   │   ├── dns.rs
│   │   │   │   ├── generate.rs
│   │   │   │   ├── init.rs
│   │   │   │   ├── list.rs
│   │   │   │   ├── login.rs
│   │   │   │   ├── logout.rs
│   │   │   │   ├── logs.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── project/
│   │   │   │   │   └── typescript/
│   │   │   │   │       ├── _gitignore
│   │   │   │   │       ├── index._ts
│   │   │   │   │       ├── package._json
│   │   │   │   │       └── tsconfig._json
│   │   │   │   ├── publish.rs
│   │   │   │   ├── repl.rs
│   │   │   │   ├── server.rs
│   │   │   │   ├── sql.rs
│   │   │   │   ├── start.rs
│   │   │   │   ├── subscribe.rs
│   │   │   │   └── version.rs
│   │   │   ├── tasks/
│   │   │   │   ├── cpp.rs
│   │   │   │   ├── csharp.rs
│   │   │   │   ├── javascript.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── rust.rs
│   │   │   ├── util.rs
│   │   │   └── version.rs
│   │   └── tools/
│   │       └── sublime/
│   │           └── SpacetimeDBSQL.sublime-syntax
│   ├── client-api/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── auth.rs
│   │       ├── lib.rs
│   │       ├── routes/
│   │       │   ├── database.rs
│   │       │   ├── energy.rs
│   │       │   ├── health.rs
│   │       │   ├── identity.rs
│   │       │   ├── internal.rs
│   │       │   ├── metrics.rs
│   │       │   ├── mod.rs
│   │       │   ├── prometheus.rs
│   │       │   └── subscribe.rs
│   │       ├── util/
│   │       │   ├── flat_csv.rs
│   │       │   ├── serde.rs
│   │       │   └── websocket.rs
│   │       └── util.rs
│   ├── client-api-messages/
│   │   ├── Cargo.toml
│   │   ├── DEVELOP.md
│   │   ├── README.md
│   │   ├── examples/
│   │   │   ├── get_ws_schema.rs
│   │   │   └── get_ws_schema_v2.rs
│   │   ├── src/
│   │   │   ├── energy.rs
│   │   │   ├── http.rs
│   │   │   ├── lib.rs
│   │   │   ├── name/
│   │   │   │   └── tests.rs
│   │   │   ├── name.rs
│   │   │   ├── websocket/
│   │   │   │   ├── common.rs
│   │   │   │   ├── v1.rs
│   │   │   │   └── v2.rs
│   │   │   └── websocket.rs
│   │   └── ws_schema-2.json
│   ├── codegen/
│   │   ├── Cargo.toml
│   │   ├── examples/
│   │   │   ├── regen-cpp-moduledef.rs
│   │   │   ├── regen-csharp-moduledef.rs
│   │   │   └── regen-typescript-moduledef.rs
│   │   ├── src/
│   │   │   ├── UnrealCPP-README.md
│   │   │   ├── code_indenter.rs
│   │   │   ├── cpp.rs
│   │   │   ├── csharp.rs
│   │   │   ├── lib.rs
│   │   │   ├── rust.rs
│   │   │   ├── typescript.rs
│   │   │   ├── unrealcpp.rs
│   │   │   └── util.rs
│   │   └── tests/
│   │       ├── codegen.rs
│   │       └── snapshots/
│   │           ├── codegen__codegen_csharp.snap
│   │           ├── codegen__codegen_rust.snap
│   │           └── codegen__codegen_typescript.snap
│   ├── commitlog/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── commit.txt
│   │   │   └── tests/
│   │   │       └── bitflip.txt
│   │   ├── src/
│   │   │   ├── commit.rs
│   │   │   ├── commitlog.rs
│   │   │   ├── error.rs
│   │   │   ├── index/
│   │   │   │   ├── indexfile.rs
│   │   │   │   └── mod.rs
│   │   │   ├── lib.rs
│   │   │   ├── payload/
│   │   │   │   └── txdata.rs
│   │   │   ├── payload.rs
│   │   │   ├── repo/
│   │   │   │   ├── fs.rs
│   │   │   │   ├── mem/
│   │   │   │   │   └── segment.rs
│   │   │   │   ├── mem.rs
│   │   │   │   └── mod.rs
│   │   │   ├── segment.rs
│   │   │   ├── stream/
│   │   │   │   ├── common.rs
│   │   │   │   ├── reader.rs
│   │   │   │   └── writer.rs
│   │   │   ├── stream.rs
│   │   │   ├── tests/
│   │   │   │   ├── bitflip.rs
│   │   │   │   ├── helpers.rs
│   │   │   │   └── partial.rs
│   │   │   ├── tests.rs
│   │   │   ├── varchar.rs
│   │   │   └── varint.rs
│   │   └── tests/
│   │       ├── io.rs
│   │       ├── random_payload/
│   │       │   └── mod.rs
│   │       └── streaming/
│   │           └── mod.rs
│   ├── core/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── db/
│   │   │   │   └── datastore/
│   │   │   │       └── locking_tx_datastore/
│   │   │   │           └── delete_table.txt
│   │   │   └── host/
│   │   │       └── v8/
│   │   │           ├── ser.txt
│   │   │           └── to_value.txt
│   │   ├── src/
│   │   │   ├── auth/
│   │   │   │   ├── mod.rs
│   │   │   │   └── token_validation.rs
│   │   │   ├── callgrind_flag.rs
│   │   │   ├── client/
│   │   │   │   ├── client_connection.rs
│   │   │   │   ├── client_connection_index.rs
│   │   │   │   ├── consume_each_list.rs
│   │   │   │   ├── message_handlers.rs
│   │   │   │   ├── message_handlers_v1.rs
│   │   │   │   ├── message_handlers_v2.rs
│   │   │   │   └── messages.rs
│   │   │   ├── client.rs
│   │   │   ├── config.rs
│   │   │   ├── database_logger.rs
│   │   │   ├── db/
│   │   │   │   ├── durability.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── persistence.rs
│   │   │   │   ├── relational_db.rs
│   │   │   │   ├── snapshot.rs
│   │   │   │   └── update.rs
│   │   │   ├── energy.rs
│   │   │   ├── error.rs
│   │   │   ├── estimation.rs
│   │   │   ├── host/
│   │   │   │   ├── disk_storage.rs
│   │   │   │   ├── host_controller.rs
│   │   │   │   ├── instance_env.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module_common.rs
│   │   │   │   ├── module_host.rs
│   │   │   │   ├── scheduler.rs
│   │   │   │   ├── v8/
│   │   │   │   │   ├── budget.rs
│   │   │   │   │   ├── builtins/
│   │   │   │   │   │   ├── delete_math_random.js
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── text_encoding.js
│   │   │   │   │   │   └── types.d.ts
│   │   │   │   │   ├── de.rs
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── from_value.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── ser.rs
│   │   │   │   │   ├── string.rs
│   │   │   │   │   ├── syscall/
│   │   │   │   │   │   ├── common.rs
│   │   │   │   │   │   ├── hooks.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── v1.rs
│   │   │   │   │   │   └── v2.rs
│   │   │   │   │   ├── to_value.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── wasm_common/
│   │   │   │   │   ├── abi.rs
│   │   │   │   │   ├── instrumentation.rs
│   │   │   │   │   └── module_host_actor.rs
│   │   │   │   ├── wasm_common.rs
│   │   │   │   └── wasmtime/
│   │   │   │       ├── mod.rs
│   │   │   │       ├── pooling_stack_creator.rs
│   │   │   │       ├── wasm_instance_env.rs
│   │   │   │       └── wasmtime_module.rs
│   │   │   ├── lib.rs
│   │   │   ├── messages/
│   │   │   │   ├── control_db.rs
│   │   │   │   ├── control_worker_api.rs
│   │   │   │   ├── instance_db_trace_log.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── worker_db.rs
│   │   │   ├── module_host_context.rs
│   │   │   ├── replica_context.rs
│   │   │   ├── sql/
│   │   │   │   ├── ast.rs
│   │   │   │   ├── execute.rs
│   │   │   │   ├── mod.rs
│   │   │   │   └── parser.rs
│   │   │   ├── startup.rs
│   │   │   ├── subscription/
│   │   │   │   ├── delta.rs
│   │   │   │   ├── execution_unit.rs
│   │   │   │   ├── metrics.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── module_subscription_actor.rs
│   │   │   │   ├── module_subscription_manager.rs
│   │   │   │   ├── query.rs
│   │   │   │   ├── row_list_builder_pool.rs
│   │   │   │   ├── subscription.rs
│   │   │   │   ├── tx.rs
│   │   │   │   └── websocket_building.rs
│   │   │   ├── util/
│   │   │   │   ├── jobs.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── notify_once.rs
│   │   │   │   └── prometheus_handle.rs
│   │   │   └── worker_metrics/
│   │   │       └── mod.rs
│   │   └── testdata/
│   │       ├── README.md
│   │       └── v1.2/
│   │           └── replicas/
│   │               └── 22000001/
│   │                   ├── clog/
│   │                   │   ├── 00000000000000000000.stdb.log
│   │                   │   └── 00000000000000000000.stdb.ofs
│   │                   ├── db.lock
│   │                   ├── module_logs/
│   │                   │   └── 2025-08-18.log
│   │                   └── snapshots/
│   │                       └── 00000000000000000000.snapshot_dir/
│   │                           ├── 00000000000000000000.snapshot_bsatn
│   │                           └── objects/
│   │                               ├── 19/
│   │                               │   └── 30ce81246a4cdc25e9024ae0065d053adb2efbe1b5b7af457331d330e481e8
│   │                               ├── 41/
│   │                               │   └── bb11b6d2cdc488192ee70d8175307d6f205756ed163f4237c6cba2936798dc
│   │                               ├── 45/
│   │                               │   └── 4d2e2c62ff5d46c5b3e6de72d6277eb285fc2d6b0a5ac6f92498e08a9e5ecc
│   │                               ├── 62/
│   │                               │   └── 22df0e5ca93d3fb22762e12161246a1d5917c61ada5d81b8dcce12fd5780b3
│   │                               ├── 79/
│   │                               │   └── 4dced5633eca2ffee784d471f5203209169321083ef99de254ad24af0f6d5a
│   │                               ├── 95/
│   │                               │   └── 74dd6d2857fa771a1cd16be31fdef38f83c2fd3bcc05f4934e53bdbfa21f10
│   │                               └── 9a/
│   │                                   └── b95f5aaed7541289faa8bc4de886ce0281f11037c3424494e58fee92411241
│   ├── data-structures/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── error_stream.rs
│   │       ├── lib.rs
│   │       ├── map.rs
│   │       ├── nstr.rs
│   │       ├── object_pool.rs
│   │       ├── slim_slice.rs
│   │       └── small_map.rs
│   ├── datastore/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── db_metrics/
│   │       │   ├── data_size.rs
│   │       │   └── mod.rs
│   │       ├── error.rs
│   │       ├── execution_context.rs
│   │       ├── lib.rs
│   │       ├── locking_tx_datastore/
│   │       │   ├── committed_state.rs
│   │       │   ├── datastore.rs
│   │       │   ├── delete_table.rs
│   │       │   ├── mod.rs
│   │       │   ├── mut_tx.rs
│   │       │   ├── sequence.rs
│   │       │   ├── state_view.rs
│   │       │   ├── tx.rs
│   │       │   └── tx_state.rs
│   │       ├── system_tables.rs
│   │       └── traits.rs
│   ├── durability/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── imp/
│   │   │   │   ├── local.rs
│   │   │   │   ├── local.rs.orig
│   │   │   │   └── mod.rs
│   │   │   └── lib.rs
│   │   └── tests/
│   │       ├── io/
│   │       │   ├── fallocate.rs
│   │       │   └── mod.rs
│   │       └── main.rs
│   ├── execution/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── dml.rs
│   │       ├── lib.rs
│   │       └── pipelined.rs
│   ├── expr/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── check.rs
│   │       ├── errors.rs
│   │       ├── expr.rs
│   │       ├── lib.rs
│   │       ├── rls.rs
│   │       └── statement.rs
│   ├── fs-utils/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── compression.rs
│   │       ├── dir_trie.rs
│   │       ├── lib.rs
│   │       └── lockfile.rs
│   ├── guard/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build.rs
│   │   ├── proptest-regressions/
│   │   │   ├── address.txt
│   │   │   ├── db/
│   │   │   │   └── column_ordering.txt
│   │   │   └── identity.txt
│   │   ├── src/
│   │   │   ├── connection_id.rs
│   │   │   ├── db/
│   │   │   │   ├── attr.rs
│   │   │   │   ├── auth.rs
│   │   │   │   ├── default_element_ordering.rs
│   │   │   │   ├── mod.rs
│   │   │   │   ├── raw_def/
│   │   │   │   │   ├── v10.rs
│   │   │   │   │   ├── v8.rs
│   │   │   │   │   └── v9.rs
│   │   │   │   ├── raw_def.rs
│   │   │   │   └── view.rs
│   │   │   ├── direct_index_key.rs
│   │   │   ├── error.rs
│   │   │   ├── filterable_value.rs
│   │   │   ├── http.rs
│   │   │   ├── identity.rs
│   │   │   ├── lib.rs
│   │   │   ├── metrics.rs
│   │   │   ├── operator.rs
│   │   │   ├── query.rs
│   │   │   ├── scheduler.rs
│   │   │   ├── st_var.rs
│   │   │   └── version.rs
│   │   └── tests/
│   │       ├── serde.rs
│   │       └── snapshots/
│   │           ├── serde__json_mappings-2.snap
│   │           └── serde__json_mappings.snap
│   ├── memory-usage/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── metrics/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── lib.rs
│   │       └── typed_prometheus.rs
│   ├── paths/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── cli.rs
│   │       ├── lib.rs
│   │       ├── server.rs
│   │       ├── standalone.rs
│   │       └── utils.rs
│   ├── pg/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── encoder.rs
│   │       ├── lib.rs
│   │       └── pg_server.rs
│   ├── physical-plan/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── compile.rs
│   │       ├── dml.rs
│   │       ├── lib.rs
│   │       ├── plan.rs
│   │       └── rules.rs
│   ├── primitives/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   └── col_list.txt
│   │   └── src/
│   │       ├── attr.rs
│   │       ├── col_list.rs
│   │       ├── errno.rs
│   │       ├── ids.rs
│   │       └── lib.rs
│   ├── query/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── query-builder/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── expr.rs
│   │       ├── join.rs
│   │       ├── lib.rs
│   │       └── table.rs
│   ├── sats/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   ├── algebraic_value_hash.txt
│   │   │   ├── timestamp.txt
│   │   │   └── typespace.txt
│   │   ├── src/
│   │   │   ├── algebraic_type/
│   │   │   │   ├── fmt.rs
│   │   │   │   └── map_notation.rs
│   │   │   ├── algebraic_type.rs
│   │   │   ├── algebraic_type_ref.rs
│   │   │   ├── algebraic_value/
│   │   │   │   ├── de.rs
│   │   │   │   └── ser.rs
│   │   │   ├── algebraic_value.rs
│   │   │   ├── algebraic_value_hash.rs
│   │   │   ├── array_type.rs
│   │   │   ├── array_value.rs
│   │   │   ├── bsatn/
│   │   │   │   ├── de.rs
│   │   │   │   ├── eq.rs
│   │   │   │   └── ser.rs
│   │   │   ├── bsatn.rs
│   │   │   ├── buffer.rs
│   │   │   ├── convert.rs
│   │   │   ├── de/
│   │   │   │   ├── impls.rs
│   │   │   │   └── serde.rs
│   │   │   ├── de.rs
│   │   │   ├── hash.rs
│   │   │   ├── hex.rs
│   │   │   ├── layout.rs
│   │   │   ├── lib.rs
│   │   │   ├── memory_usage_impls.rs
│   │   │   ├── meta_type.rs
│   │   │   ├── primitives.rs
│   │   │   ├── product_type.rs
│   │   │   ├── product_type_element.rs
│   │   │   ├── product_value.rs
│   │   │   ├── proptest.rs
│   │   │   ├── raw_identifier.rs
│   │   │   ├── resolve_refs.rs
│   │   │   ├── satn.rs
│   │   │   ├── ser/
│   │   │   │   ├── impls.rs
│   │   │   │   └── serde.rs
│   │   │   ├── ser.rs
│   │   │   ├── size_of.rs
│   │   │   ├── sum_type.rs
│   │   │   ├── sum_type_variant.rs
│   │   │   ├── sum_value.rs
│   │   │   ├── time_duration.rs
│   │   │   ├── timestamp.rs
│   │   │   ├── typespace.rs
│   │   │   └── uuid.rs
│   │   └── tests/
│   │       └── encoding_roundtrip.proptest-regressions
│   ├── schema/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── proptest-regressions/
│   │   │   └── type_for_generate.txt
│   │   ├── src/
│   │   │   ├── auto_migrate/
│   │   │   │   ├── formatter.rs
│   │   │   │   └── termcolor_formatter.rs
│   │   │   ├── auto_migrate.rs
│   │   │   ├── def/
│   │   │   │   ├── deserialize.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── validate/
│   │   │   │   │   ├── v10.rs
│   │   │   │   │   ├── v8.rs
│   │   │   │   │   └── v9.rs
│   │   │   │   └── validate.rs
│   │   │   ├── def.rs
│   │   │   ├── error.rs
│   │   │   ├── identifier.rs
│   │   │   ├── lib.rs
│   │   │   ├── reducer_name.rs
│   │   │   ├── relation.rs
│   │   │   ├── reserved_identifiers.txt
│   │   │   ├── schema.rs
│   │   │   ├── snapshots/
│   │   │   │   ├── spacetimedb_schema__auto_migrate__tests__empty_to_populated_migration.snap
│   │   │   │   ├── spacetimedb_schema__auto_migrate__tests__updated pretty print no color.snap
│   │   │   │   └── spacetimedb_schema__auto_migrate__tests__updated pretty print.snap
│   │   │   ├── table_name.rs
│   │   │   └── type_for_generate.rs
│   │   └── tests/
│   │       └── ensure_same_schema.rs
│   ├── smoketests/
│   │   ├── Cargo.toml
│   │   ├── DEVELOP.md
│   │   ├── fixtures/
│   │   │   ├── README.md
│   │   │   └── upgrade_old_module_v1.wasm
│   │   ├── modules/
│   │   │   ├── Cargo.toml
│   │   │   ├── add-remove-index/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── add-remove-index-indexed/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── autoinc-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── autoinc-unique/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── call-empty/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── call-reducer-procedure/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── client-connection-disconnect-panic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── client-connection-reject/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── confirmed-reads/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── connect-disconnect/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── delete-database/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── describe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── dml/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── fail-initial-publish-broken/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── fail-initial-publish-fixed/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── filtering/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── hotswap-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── hotswap-updated/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── logs-level-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── module-nested-op/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-add-table/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── modules-breaking/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── namespaces/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── new-user-flow/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── panic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── panic-error/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── permissions-lifecycle/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── permissions-private/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── pg-wire/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── restart-connected-client/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── restart-person/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls-no-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── rls-with-filter/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-cancel/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-procedure/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-subscribe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── schedule-volatile/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── sql-format/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── upload-module-2/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-auto-migrate/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-auto-migrate-updated/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-basic/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-broken-namespace/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-broken-return-type/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-callable/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-count/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-drop-view/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-query/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-recovered/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-sql/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   ├── views-subscribe/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── views-trapped/
│   │   │       ├── Cargo.toml
│   │   │       └── src/
│   │   │           └── lib.rs
│   │   ├── src/
│   │   │   ├── csharp.rs
│   │   │   ├── lib.rs
│   │   │   └── modules.rs
│   │   └── tests/
│   │       ├── integration.rs
│   │       └── smoketests/
│   │           ├── add_remove_index.rs
│   │           ├── auto_inc.rs
│   │           ├── auto_migration.rs
│   │           ├── call.rs
│   │           ├── change_host_type.rs
│   │           ├── cli/
│   │           │   ├── auth.rs
│   │           │   ├── dev.rs
│   │           │   ├── generate.rs
│   │           │   ├── mod.rs
│   │           │   ├── publish.rs
│   │           │   └── server.rs
│   │           ├── client_connection_errors.rs
│   │           ├── confirmed_reads.rs
│   │           ├── connect_disconnect_from_cli.rs
│   │           ├── create_project.rs
│   │           ├── csharp_module.rs
│   │           ├── default_module_clippy.rs
│   │           ├── delete_database.rs
│   │           ├── describe.rs
│   │           ├── detect_wasm_bindgen.rs
│   │           ├── dml.rs
│   │           ├── domains.rs
│   │           ├── fail_initial_publish.rs
│   │           ├── filtering.rs
│   │           ├── http_egress.rs
│   │           ├── logs_level_filter.rs
│   │           ├── mod.rs
│   │           ├── module_nested_op.rs
│   │           ├── modules.rs
│   │           ├── namespaces.rs
│   │           ├── new_user_flow.rs
│   │           ├── panic.rs
│   │           ├── permissions.rs
│   │           ├── pg_wire.rs
│   │           ├── publish_upgrade_prompt.rs
│   │           ├── quickstart.rs
│   │           ├── restart.rs
│   │           ├── rls.rs
│   │           ├── schedule_reducer.rs
│   │           ├── servers.rs
│   │           ├── sql.rs
│   │           ├── templates.rs
│   │           ├── timestamp_route.rs
│   │           └── views.rs
│   ├── snapshot/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── remote.rs
│   │   └── tests/
│   │       └── remote.rs
│   ├── sql-parser/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── ast/
│   │       │   ├── mod.rs
│   │       │   ├── sql.rs
│   │       │   └── sub.rs
│   │       ├── lib.rs
│   │       └── parser/
│   │           ├── errors.rs
│   │           ├── mod.rs
│   │           ├── recursion.rs
│   │           ├── sql.rs
│   │           └── sub.rs
│   ├── sqltest/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── build_standard.py
│   │   ├── clippy.toml
│   │   ├── override_with_output.sh
│   │   ├── reformat.sh
│   │   ├── run_all_sequential.sh
│   │   ├── src/
│   │   │   ├── db.rs
│   │   │   ├── main.rs
│   │   │   ├── pg.rs
│   │   │   ├── space.rs
│   │   │   └── sqlite.rs
│   │   ├── standards/
│   │   │   ├── 2016/
│   │   │   │   ├── E/
│   │   │   │   │   ├── E011-01.tests.yml
│   │   │   │   │   ├── E011-02.tests.yml
│   │   │   │   │   ├── E011-03.tests.yml
│   │   │   │   │   ├── E011-04.tests.yml
│   │   │   │   │   ├── E011-05.tests.yml
│   │   │   │   │   ├── E011-06.tests.yml
│   │   │   │   │   ├── E021-01.tests.yml
│   │   │   │   │   ├── E021-02.tests.yml
│   │   │   │   │   ├── E021-03.tests.yml
│   │   │   │   │   ├── E021-04.tests.yml
│   │   │   │   │   ├── E021-05.tests.yml
│   │   │   │   │   ├── E021-06.tests.yml
│   │   │   │   │   ├── E021-07.tests.yml
│   │   │   │   │   ├── E021-08.tests.yml
│   │   │   │   │   ├── E021-09.tests.yml
│   │   │   │   │   ├── E021-10.tests.yml
│   │   │   │   │   ├── E021-11.tests.yml
│   │   │   │   │   ├── E021-12.tests.yml
│   │   │   │   │   ├── E031-01.tests.yml
│   │   │   │   │   ├── E031-02.tests.yml
│   │   │   │   │   ├── E031-03.tests.yml
│   │   │   │   │   ├── E051-01.tests.yml
│   │   │   │   │   ├── E051-02.tests.yml
│   │   │   │   │   ├── E051-04.tests.yml
│   │   │   │   │   ├── E051-05.tests.yml
│   │   │   │   │   ├── E051-06.tests.yml
│   │   │   │   │   ├── E051-07.tests.yml
│   │   │   │   │   ├── E051-08.tests.yml
│   │   │   │   │   ├── E051-09.tests.yml
│   │   │   │   │   ├── E051.tests.yml
│   │   │   │   │   ├── E061-01.tests.yml
│   │   │   │   │   ├── E061-02.tests.yml
│   │   │   │   │   ├── E061-03.tests.yml
│   │   │   │   │   ├── E061-04.tests.yml
│   │   │   │   │   ├── E061-05.tests.yml
│   │   │   │   │   ├── E061-06.tests.yml
│   │   │   │   │   ├── E061-07.tests.yml
│   │   │   │   │   ├── E061-08.tests.yml
│   │   │   │   │   ├── E061-09.tests.yml
│   │   │   │   │   ├── E061-11.tests.yml
│   │   │   │   │   ├── E061-12.tests.yml
│   │   │   │   │   ├── E061-13.tests.yml
│   │   │   │   │   ├── E061-14.tests.yml
│   │   │   │   │   ├── E071-01.tests.yml
│   │   │   │   │   ├── E071-02.tests.yml
│   │   │   │   │   ├── E071-03.tests.yml
│   │   │   │   │   ├── E071-05.tests.yml
│   │   │   │   │   ├── E071-06.tests.yml
│   │   │   │   │   ├── E081-01.tests.yml
│   │   │   │   │   ├── E081-02.tests.yml
│   │   │   │   │   ├── E081-03.tests.yml
│   │   │   │   │   ├── E081-04.tests.yml
│   │   │   │   │   ├── E081-05.tests.yml
│   │   │   │   │   ├── E081-06.tests.yml
│   │   │   │   │   ├── E081-07.tests.yml
│   │   │   │   │   ├── E081-08.tests.yml
│   │   │   │   │   ├── E081-09.tests.yml
│   │   │   │   │   ├── E081-10.tests.yml
│   │   │   │   │   ├── E091-01.tests.yml
│   │   │   │   │   ├── E091-02.tests.yml
│   │   │   │   │   ├── E091-03.tests.yml
│   │   │   │   │   ├── E091-04.tests.yml
│   │   │   │   │   ├── E091-05.tests.yml
│   │   │   │   │   ├── E091-06.tests.yml
│   │   │   │   │   ├── E091-07.tests.yml
│   │   │   │   │   ├── E101-01.tests.yml
│   │   │   │   │   ├── E101-03.tests.yml
│   │   │   │   │   ├── E101-04.tests.yml
│   │   │   │   │   ├── E111.tests.yml
│   │   │   │   │   ├── E121-01.tests.yml
│   │   │   │   │   ├── E121-02.tests.yml
│   │   │   │   │   ├── E121-03.tests.yml
│   │   │   │   │   ├── E121-04.tests.yml
│   │   │   │   │   ├── E121-06.tests.yml
│   │   │   │   │   ├── E121-07.tests.yml
│   │   │   │   │   ├── E121-08.tests.yml
│   │   │   │   │   ├── E121-10.tests.yml
│   │   │   │   │   ├── E121-17.tests.yml
│   │   │   │   │   ├── E131.tests.yml
│   │   │   │   │   ├── E141-01.tests.yml
│   │   │   │   │   ├── E141-02.tests.yml
│   │   │   │   │   ├── E141-03.tests.yml
│   │   │   │   │   ├── E141-04.tests.yml
│   │   │   │   │   ├── E141-06.tests.yml
│   │   │   │   │   ├── E141-07.tests.yml
│   │   │   │   │   ├── E141-08.tests.yml
│   │   │   │   │   ├── E141-10.tests.yml
│   │   │   │   │   ├── E151-01.tests.yml
│   │   │   │   │   ├── E151-02.tests.yml
│   │   │   │   │   ├── E152-01.tests.yml
│   │   │   │   │   ├── E152-02.tests.yml
│   │   │   │   │   ├── E153.tests.yml
│   │   │   │   │   └── E161.tests.yml
│   │   │   │   ├── F/
│   │   │   │   │   ├── F031-01.tests.yml
│   │   │   │   │   ├── F031-02.tests.yml
│   │   │   │   │   ├── F031-03.tests.yml
│   │   │   │   │   ├── F031-04.tests.yml
│   │   │   │   │   ├── F031-13.tests.yml
│   │   │   │   │   ├── F031-16.tests.yml
│   │   │   │   │   ├── F031-19.tests.yml
│   │   │   │   │   ├── F041-01.tests.yml
│   │   │   │   │   ├── F041-02.tests.yml
│   │   │   │   │   ├── F041-03.tests.yml
│   │   │   │   │   ├── F041-04.tests.yml
│   │   │   │   │   ├── F041-05.tests.yml
│   │   │   │   │   ├── F041-07.tests.yml
│   │   │   │   │   ├── F041-08.tests.yml
│   │   │   │   │   ├── F051-01.tests.yml
│   │   │   │   │   ├── F051-02.tests.yml
│   │   │   │   │   ├── F051-03.tests.yml
│   │   │   │   │   ├── F051-04.tests.yml
│   │   │   │   │   ├── F051-05.tests.yml
│   │   │   │   │   ├── F051-06.tests.yml
│   │   │   │   │   ├── F051-07.tests.yml
│   │   │   │   │   ├── F051-08.tests.yml
│   │   │   │   │   ├── F081.tests.yml
│   │   │   │   │   ├── F131-01.tests.yml
│   │   │   │   │   ├── F131-02.tests.yml
│   │   │   │   │   ├── F131-03.tests.yml
│   │   │   │   │   ├── F131-04.tests.yml
│   │   │   │   │   ├── F221.tests.yml
│   │   │   │   │   ├── F261-01.tests.yml
│   │   │   │   │   ├── F261-02.tests.yml
│   │   │   │   │   ├── F261-03.tests.yml
│   │   │   │   │   ├── F261-04.tests.yml
│   │   │   │   │   ├── F311-01.tests.yml
│   │   │   │   │   ├── F311-02.tests.yml
│   │   │   │   │   ├── F311-03.tests.yml
│   │   │   │   │   ├── F311-04.tests.yml
│   │   │   │   │   ├── F311-05.tests.yml
│   │   │   │   │   ├── F471.tests.yml
│   │   │   │   │   └── F481.tests.yml
│   │   │   │   ├── S/
│   │   │   │   │   └── S011.tests.yml
│   │   │   │   ├── T/
│   │   │   │   │   ├── T321.tests.yml
│   │   │   │   │   └── T631.tests.yml
│   │   │   │   └── features.yml
│   │   │   ├── LICENSE
│   │   │   └── README.md
│   │   └── test/
│   │       ├── basic/
│   │       │   ├── delete.slt
│   │       │   ├── insert.slt
│   │       │   ├── joins.slt
│   │       │   ├── select.slt
│   │       │   ├── test_data.slt
│   │       │   ├── test_data_join.slt
│   │       │   └── where.slt
│   │       ├── sql_2016/
│   │       │   ├── E011_01.slt
│   │       │   ├── E011_02.slt
│   │       │   ├── E011_03.slt
│   │       │   ├── E011_04.slt
│   │       │   ├── E011_05.slt
│   │       │   ├── E011_06.slt
│   │       │   ├── E021_01.slt
│   │       │   ├── E021_02.slt
│   │       │   ├── E021_03.slt
│   │       │   ├── E021_04.slt
│   │       │   ├── E021_05.slt
│   │       │   ├── E021_06.slt
│   │       │   ├── E021_07.slt
│   │       │   ├── E021_08.slt
│   │       │   ├── E021_09.slt
│   │       │   ├── E021_10.slt
│   │       │   ├── E021_11.slt
│   │       │   ├── E021_12.slt
│   │       │   ├── E031_01.slt
│   │       │   ├── E031_02.slt
│   │       │   ├── E031_03.slt
│   │       │   ├── E051.slt
│   │       │   ├── E051_01.slt
│   │       │   ├── E051_02.slt
│   │       │   ├── E051_04.slt
│   │       │   ├── E051_05.slt
│   │       │   ├── E051_06.slt
│   │       │   ├── E051_07.slt
│   │       │   ├── E051_08.slt
│   │       │   ├── E051_09.slt
│   │       │   ├── E061_01.slt
│   │       │   ├── E061_02.slt
│   │       │   ├── E061_03.slt
│   │       │   ├── E061_04.slt
│   │       │   ├── E061_05.slt
│   │       │   ├── E061_06.slt
│   │       │   ├── E061_07.slt
│   │       │   ├── E061_08.slt
│   │       │   ├── E061_09.slt
│   │       │   ├── E061_11.slt
│   │       │   ├── E061_12.slt
│   │       │   ├── E061_13.slt
│   │       │   ├── E061_14.slt
│   │       │   ├── E071_01.slt
│   │       │   ├── E071_02.slt
│   │       │   ├── E071_03.slt
│   │       │   ├── E071_05.slt
│   │       │   ├── E071_06.slt
│   │       │   ├── E081_01.slt
│   │       │   ├── E081_02.slt
│   │       │   ├── E081_03.slt
│   │       │   ├── E081_04.slt
│   │       │   ├── E081_05.slt
│   │       │   ├── E081_06.slt
│   │       │   ├── E081_07.slt
│   │       │   ├── E081_08.slt
│   │       │   ├── E081_09.slt
│   │       │   ├── E081_10.slt
│   │       │   ├── E091_01.slt
│   │       │   ├── E091_02.slt
│   │       │   ├── E091_03.slt
│   │       │   ├── E091_04.slt
│   │       │   ├── E091_05.slt
│   │       │   ├── E091_06.slt
│   │       │   ├── E091_07.slt
│   │       │   ├── E101_01.slt
│   │       │   ├── E101_03.slt
│   │       │   ├── E101_04.slt
│   │       │   ├── E111.slt
│   │       │   ├── E121_01.slt
│   │       │   ├── E121_02.slt
│   │       │   ├── E121_03.slt
│   │       │   ├── E121_04.slt
│   │       │   ├── E121_06.slt
│   │       │   ├── E121_07.slt
│   │       │   ├── E121_08.slt
│   │       │   ├── E121_10.slt
│   │       │   ├── E121_17.slt
│   │       │   ├── E131.slt
│   │       │   ├── E141_01.slt
│   │       │   ├── E141_02.slt
│   │       │   ├── E141_03.slt
│   │       │   ├── E141_04.slt
│   │       │   ├── E141_06.slt
│   │       │   ├── E141_07.slt
│   │       │   ├── E141_08.slt
│   │       │   ├── E141_10.slt
│   │       │   ├── E151_01.slt
│   │       │   ├── E151_02.slt
│   │       │   ├── E152_01.slt
│   │       │   ├── E152_02.slt
│   │       │   ├── E153.slt
│   │       │   ├── E161.slt
│   │       │   ├── F031_01.slt
│   │       │   ├── F031_02.slt
│   │       │   ├── F031_03.slt
│   │       │   ├── F031_04.slt
│   │       │   ├── F031_13.slt
│   │       │   ├── F031_16.slt
│   │       │   ├── F031_19.slt
│   │       │   ├── F041_01.slt
│   │       │   ├── F041_02.slt
│   │       │   ├── F041_03.slt
│   │       │   ├── F041_04.slt
│   │       │   ├── F041_05.slt
│   │       │   ├── F041_07.slt
│   │       │   ├── F041_08.slt
│   │       │   ├── F051_01.slt
│   │       │   ├── F051_02.slt
│   │       │   ├── F051_03.slt
│   │       │   ├── F051_04.slt
│   │       │   ├── F051_05.slt
│   │       │   ├── F051_06.slt
│   │       │   ├── F051_07.slt
│   │       │   ├── F051_08.slt
│   │       │   ├── F081.slt
│   │       │   ├── F131_01.slt
│   │       │   ├── F131_02.slt
│   │       │   ├── F131_03.slt
│   │       │   ├── F131_04.slt
│   │       │   ├── F221.slt
│   │       │   ├── F261_01.slt
│   │       │   ├── F261_02.slt
│   │       │   ├── F261_03.slt
│   │       │   ├── F261_04.slt
│   │       │   ├── F311_01.slt
│   │       │   ├── F311_02.slt
│   │       │   ├── F311_03.slt
│   │       │   ├── F311_04.slt
│   │       │   ├── F311_05.slt
│   │       │   ├── F471.slt
│   │       │   ├── F481.slt
│   │       │   ├── S011.slt
│   │       │   └── T631.slt
│   │       └── tutorial.slt
│   ├── standalone/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── config.toml
│   │   └── src/
│   │       ├── control_db/
│   │       │   └── tests.rs
│   │       ├── control_db.rs
│   │       ├── lib.rs
│   │       ├── main.rs
│   │       ├── subcommands/
│   │       │   ├── extract_schema.rs
│   │       │   ├── mod.rs
│   │       │   └── start.rs
│   │       ├── util.rs
│   │       └── version.rs
│   ├── subscription/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── table/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── benches/
│   │   │   ├── page.rs
│   │   │   ├── page_manager.rs
│   │   │   ├── pointer_map.rs
│   │   │   └── var_len_visitor.rs
│   │   ├── proptest-regressions/
│   │   │   ├── bflatn_to.txt
│   │   │   ├── btree_index.txt
│   │   │   ├── pointer_map.txt
│   │   │   ├── read_column.txt
│   │   │   ├── row_hash.txt
│   │   │   ├── ser.txt
│   │   │   ├── static_bsatn_validator.txt
│   │   │   ├── table.txt
│   │   │   └── table_index/
│   │   │       ├── mod.txt
│   │   │       └── unique_directer_index.txt
│   │   └── src/
│   │       ├── bflatn_from.rs
│   │       ├── bflatn_to.rs
│   │       ├── blob_store.rs
│   │       ├── eq.rs
│   │       ├── eq_to_pv.rs
│   │       ├── fixed_bit_set.rs
│   │       ├── indexes.rs
│   │       ├── lib.rs
│   │       ├── page.rs
│   │       ├── page_pool.rs
│   │       ├── pages.rs
│   │       ├── pointer_map.rs
│   │       ├── read_column.rs
│   │       ├── row_hash.rs
│   │       ├── row_type_visitor.rs
│   │       ├── static_bsatn_validator.rs
│   │       ├── static_layout.rs
│   │       ├── table.rs
│   │       ├── table_index/
│   │       │   ├── hash_index.rs
│   │       │   ├── index.rs
│   │       │   ├── key_size.rs
│   │       │   ├── mod.rs
│   │       │   ├── multimap.rs
│   │       │   ├── same_key_entry.rs
│   │       │   ├── unique_direct_fixed_cap_index.rs
│   │       │   ├── unique_direct_index.rs
│   │       │   ├── unique_hash_index.rs
│   │       │   └── uniquemap.rs
│   │       ├── util.rs
│   │       └── var_len.rs
│   ├── testing/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   ├── modules.rs
│   │   │   └── sdk.rs
│   │   └── tests/
│   │       └── standalone_integration_test.rs
│   └── update/
│       ├── Cargo.toml
│       ├── README.md
│       ├── build.rs
│       ├── spacetime-install.ps1
│       ├── spacetime-install.sh
│       └── src/
│           ├── cli/
│           │   ├── install.rs
│           │   ├── link.rs
│           │   ├── list.rs
│           │   ├── self_install.rs
│           │   ├── uninstall.rs
│           │   ├── upgrade.rs
│           │   └── use.rs
│           ├── cli.rs
│           ├── main.rs
│           ├── proxy.rs
│           └── update_notice.rs
├── d3-flamegraph-base.html
├── demo/
│   └── Blackholio/
│       ├── .github/
│       │   └── workflows/
│       │       └── repo-migration-notice.yml
│       ├── .gitignore
│       ├── DEVELOP.md
│       ├── README.md
│       ├── client-unity/
│       │   ├── .gitattributes
│       │   ├── .gitignore
│       │   ├── Assets/
│       │   │   ├── ArenaBorderMaterial.mat
│       │   │   ├── ArenaBorderMaterial.mat.meta
│       │   │   ├── CircleMaterial.mat
│       │   │   ├── CircleMaterial.mat.meta
│       │   │   ├── CirclePrefab.prefab
│       │   │   ├── CirclePrefab.prefab.meta
│       │   │   ├── CircleShader.shadergraph
│       │   │   ├── CircleShader.shadergraph.meta
│       │   │   ├── ColorConvert.cginc
│       │   │   ├── ColorConvert.cginc.meta
│       │   │   ├── FoodMaterial.mat
│       │   │   ├── FoodMaterial.mat.meta
│       │   │   ├── FoodPrefab.prefab
│       │   │   ├── FoodPrefab.prefab.meta
│       │   │   ├── LeaderboardRow.prefab
│       │   │   ├── LeaderboardRow.prefab.meta
│       │   │   ├── PlayModeTests/
│       │   │   │   ├── PlayModeExampleTest.cs
│       │   │   │   ├── PlayModeExampleTest.cs.meta
│       │   │   │   ├── PlayModeTests.asmdef
│       │   │   │   └── PlayModeTests.asmdef.meta
│       │   │   ├── PlayModeTests.meta
│       │   │   ├── PlayerPrefab.prefab
│       │   │   ├── PlayerPrefab.prefab.meta
│       │   │   ├── RepeatingBackground.png.meta
│       │   │   ├── RepeatingBackground.prefab
│       │   │   ├── RepeatingBackground.prefab.meta
│       │   │   ├── Scenes/
│       │   │   │   ├── Main.unity
│       │   │   │   └── Main.unity.meta
│       │   │   ├── Scenes.meta
│       │   │   ├── Scripts/
│       │   │   │   ├── BugFixKludge.cs
│       │   │   │   ├── BugFixKludge.cs.meta
│       │   │   │   ├── CameraController.cs
│       │   │   │   ├── CameraController.cs.meta
│       │   │   │   ├── CircleController.cs
│       │   │   │   ├── CircleController.cs.meta
│       │   │   │   ├── DeathScreen.cs
│       │   │   │   ├── DeathScreen.cs.meta
│       │   │   │   ├── EntityController.cs
│       │   │   │   ├── EntityController.cs.meta
│       │   │   │   ├── Extensions.cs
│       │   │   │   ├── Extensions.cs.meta
│       │   │   │   ├── FoodController.cs
│       │   │   │   ├── FoodController.cs.meta
│       │   │   │   ├── GameManager.cs
│       │   │   │   ├── GameManager.cs.meta
│       │   │   │   ├── LeaderboardController.cs
│       │   │   │   ├── LeaderboardController.cs.meta
│       │   │   │   ├── LeaderboardRow.cs
│       │   │   │   ├── LeaderboardRow.cs.meta
│       │   │   │   ├── ParallaxBackground.cs
│       │   │   │   ├── ParallaxBackground.cs.meta
│       │   │   │   ├── PlayerController.cs
│       │   │   │   ├── PlayerController.cs.meta
│       │   │   │   ├── PrefabManager.cs
│       │   │   │   ├── PrefabManager.cs.meta
│       │   │   │   ├── SpacetimeDBCircleGame.asmdef
│       │   │   │   ├── SpacetimeDBCircleGame.asmdef.meta
│       │   │   │   ├── UIUsernameChooser.cs
│       │   │   │   ├── UIUsernameChooser.cs.meta
│       │   │   │   ├── autogen/
│       │   │   │   │   ├── Reducers/
│       │   │   │   │   │   ├── EnterGame.g.cs
│       │   │   │   │   │   ├── EnterGame.g.cs.meta
│       │   │   │   │   │   ├── PlayerSplit.g.cs
│       │   │   │   │   │   ├── PlayerSplit.g.cs.meta
│       │   │   │   │   │   ├── Respawn.g.cs
│       │   │   │   │   │   ├── Respawn.g.cs.meta
│       │   │   │   │   │   ├── Suicide.g.cs
│       │   │   │   │   │   ├── Suicide.g.cs.meta
│       │   │   │   │   │   ├── UpdatePlayerInput.g.cs
│       │   │   │   │   │   └── UpdatePlayerInput.g.cs.meta
│       │   │   │   │   ├── Reducers.meta
│       │   │   │   │   ├── SpacetimeDBClient.g.cs
│       │   │   │   │   ├── SpacetimeDBClient.g.cs.meta
│       │   │   │   │   ├── Tables/
│       │   │   │   │   │   ├── Circle.g.cs
│       │   │   │   │   │   ├── Circle.g.cs.meta
│       │   │   │   │   │   ├── Config.g.cs
│       │   │   │   │   │   ├── Config.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs.meta
│       │   │   │   │   │   ├── Entity.g.cs
│       │   │   │   │   │   ├── Entity.g.cs.meta
│       │   │   │   │   │   ├── Food.g.cs
│       │   │   │   │   │   ├── Food.g.cs.meta
│       │   │   │   │   │   ├── Player.g.cs
│       │   │   │   │   │   └── Player.g.cs.meta
│       │   │   │   │   ├── Tables.meta
│       │   │   │   │   ├── Types/
│       │   │   │   │   │   ├── Circle.g.cs
│       │   │   │   │   │   ├── Circle.g.cs.meta
│       │   │   │   │   │   ├── CircleDecayTimer.g.cs
│       │   │   │   │   │   ├── CircleDecayTimer.g.cs.meta
│       │   │   │   │   │   ├── CircleRecombineTimer.g.cs
│       │   │   │   │   │   ├── CircleRecombineTimer.g.cs.meta
│       │   │   │   │   │   ├── Config.g.cs
│       │   │   │   │   │   ├── Config.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs
│       │   │   │   │   │   ├── ConsumeEntityEvent.g.cs.meta
│       │   │   │   │   │   ├── ConsumeEntityTimer.g.cs
│       │   │   │   │   │   ├── ConsumeEntityTimer.g.cs.meta
│       │   │   │   │   │   ├── DbVector2.g.cs
│       │   │   │   │   │   ├── DbVector2.g.cs.meta
│       │   │   │   │   │   ├── Entity.g.cs
│       │   │   │   │   │   ├── Entity.g.cs.meta
│       │   │   │   │   │   ├── Food.g.cs
│       │   │   │   │   │   ├── Food.g.cs.meta
│       │   │   │   │   │   ├── MoveAllPlayersTimer.g.cs
│       │   │   │   │   │   ├── MoveAllPlayersTimer.g.cs.meta
│       │   │   │   │   │   ├── Player.g.cs
│       │   │   │   │   │   ├── Player.g.cs.meta
│       │   │   │   │   │   ├── SpawnFoodTimer.g.cs
│       │   │   │   │   │   └── SpawnFoodTimer.g.cs.meta
│       │   │   │   │   └── Types.meta
│       │   │   │   └── autogen.meta
│       │   │   ├── Scripts.meta
│       │   │   ├── Settings/
│       │   │   │   ├── Lit2DSceneTemplate.scenetemplate
│       │   │   │   ├── Lit2DSceneTemplate.scenetemplate.meta
│       │   │   │   ├── Renderer2D.asset
│       │   │   │   ├── Renderer2D.asset.meta
│       │   │   │   ├── Scenes/
│       │   │   │   │   ├── URP2DSceneTemplate.unity
│       │   │   │   │   └── URP2DSceneTemplate.unity.meta
│       │   │   │   ├── Scenes.meta
│       │   │   │   ├── UniversalRP.asset
│       │   │   │   └── UniversalRP.asset.meta
│       │   │   ├── Settings.meta
│       │   │   ├── StarBackground.png.meta
│       │   │   ├── StarBackground.prefab
│       │   │   ├── StarBackground.prefab.meta
│       │   │   ├── TextMesh Pro/
│       │   │   │   ├── Documentation/
│       │   │   │   │   └── TextMesh Pro User Guide 2016.pdf.meta
│       │   │   │   ├── Documentation.meta
│       │   │   │   ├── Fonts/
│       │   │   │   │   ├── LiberationSans - OFL.txt
│       │   │   │   │   ├── LiberationSans - OFL.txt.meta
│       │   │   │   │   └── LiberationSans.ttf.meta
│       │   │   │   ├── Fonts.meta
│       │   │   │   ├── Resources/
│       │   │   │   │   ├── Fonts & Materials/
│       │   │   │   │   │   ├── LiberationSans SDF - Drop Shadow.mat
│       │   │   │   │   │   ├── LiberationSans SDF - Drop Shadow.mat.meta
│       │   │   │   │   │   ├── LiberationSans SDF - Fallback.asset
│       │   │   │   │   │   ├── LiberationSans SDF - Fallback.asset.meta
│       │   │   │   │   │   ├── LiberationSans SDF - Outline.mat
│       │   │   │   │   │   ├── LiberationSans SDF - Outline.mat.meta
│       │   │   │   │   │   ├── LiberationSans SDF.asset
│       │   │   │   │   │   └── LiberationSans SDF.asset.meta
│       │   │   │   │   ├── Fonts & Materials.meta
│       │   │   │   │   ├── LineBreaking Following Characters.txt
│       │   │   │   │   ├── LineBreaking Following Characters.txt.meta
│       │   │   │   │   ├── LineBreaking Leading Characters.txt
│       │   │   │   │   ├── LineBreaking Leading Characters.txt.meta
│       │   │   │   │   ├── Sprite Assets/
│       │   │   │   │   │   ├── EmojiOne.asset
│       │   │   │   │   │   └── EmojiOne.asset.meta
│       │   │   │   │   ├── Sprite Assets.meta
│       │   │   │   │   ├── Style Sheets/
│       │   │   │   │   │   ├── Default Style Sheet.asset
│       │   │   │   │   │   └── Default Style Sheet.asset.meta
│       │   │   │   │   ├── Style Sheets.meta
│       │   │   │   │   ├── TMP Settings.asset
│       │   │   │   │   └── TMP Settings.asset.meta
│       │   │   │   ├── Resources.meta
│       │   │   │   ├── Shaders/
│       │   │   │   │   ├── TMP_Bitmap-Custom-Atlas.shader
│       │   │   │   │   ├── TMP_Bitmap-Custom-Atlas.shader.meta
│       │   │   │   │   ├── TMP_Bitmap-Mobile.shader
│       │   │   │   │   ├── TMP_Bitmap-Mobile.shader.meta
│       │   │   │   │   ├── TMP_Bitmap.shader
│       │   │   │   │   ├── TMP_Bitmap.shader.meta
│       │   │   │   │   ├── TMP_SDF Overlay.shader
│       │   │   │   │   ├── TMP_SDF Overlay.shader.meta
│       │   │   │   │   ├── TMP_SDF SSD.shader
│       │   │   │   │   ├── TMP_SDF SSD.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile Masking.shader
│       │   │   │   │   ├── TMP_SDF-Mobile Masking.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile Overlay.shader
│       │   │   │   │   ├── TMP_SDF-Mobile Overlay.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile SSD.shader
│       │   │   │   │   ├── TMP_SDF-Mobile SSD.shader.meta
│       │   │   │   │   ├── TMP_SDF-Mobile.shader
│       │   │   │   │   ├── TMP_SDF-Mobile.shader.meta
│       │   │   │   │   ├── TMP_SDF-Surface-Mobile.shader
│       │   │   │   │   ├── TMP_SDF-Surface-Mobile.shader.meta
│       │   │   │   │   ├── TMP_SDF-Surface.shader
│       │   │   │   │   ├── TMP_SDF-Surface.shader.meta
│       │   │   │   │   ├── TMP_SDF.shader
│       │   │   │   │   ├── TMP_SDF.shader.meta
│       │   │   │   │   ├── TMP_Sprite.shader
│       │   │   │   │   ├── TMP_Sprite.shader.meta
│       │   │   │   │   ├── TMPro.cginc
│       │   │   │   │   ├── TMPro.cginc.meta
│       │   │   │   │   ├── TMPro_Mobile.cginc
│       │   │   │   │   ├── TMPro_Mobile.cginc.meta
│       │   │   │   │   ├── TMPro_Properties.cginc
│       │   │   │   │   ├── TMPro_Properties.cginc.meta
│       │   │   │   │   ├── TMPro_Surface.cginc
│       │   │   │   │   └── TMPro_Surface.cginc.meta
│       │   │   │   ├── Shaders.meta
│       │   │   │   ├── Sprites/
│       │   │   │   │   ├── EmojiOne Attribution.txt
│       │   │   │   │   ├── EmojiOne Attribution.txt.meta
│       │   │   │   │   ├── EmojiOne.json
│       │   │   │   │   ├── EmojiOne.json.meta
│       │   │   │   │   └── EmojiOne.png.meta
│       │   │   │   └── Sprites.meta
│       │   │   ├── TextMesh Pro.meta
│       │   │   ├── UIUsernamePanel.png.meta
│       │   │   ├── UniversalRenderPipelineGlobalSettings.asset
│       │   │   ├── UniversalRenderPipelineGlobalSettings.asset.meta
│       │   │   ├── WavyOutline.shadersubgraph
│       │   │   └── WavyOutline.shadersubgraph.meta
│       │   ├── Packages/
│       │   │   ├── manifest.json
│       │   │   └── packages-lock.json
│       │   └── ProjectSettings/
│       │       ├── AudioManager.asset
│       │       ├── BurstAotSettings_StandaloneWindows.json
│       │       ├── ClusterInputManager.asset
│       │       ├── CommonBurstAotSettings.json
│       │       ├── DynamicsManager.asset
│       │       ├── EditorBuildSettings.asset
│       │       ├── EditorSettings.asset
│       │       ├── GraphicsSettings.asset
│       │       ├── InputManager.asset
│       │       ├── MemorySettings.asset
│       │       ├── NavMeshAreas.asset
│       │       ├── NetworkManager.asset
│       │       ├── PackageManagerSettings.asset
│       │       ├── Packages/
│       │       │   └── com.unity.testtools.codecoverage/
│       │       │       └── Settings.json
│       │       ├── Physics2DSettings.asset
│       │       ├── PresetManager.asset
│       │       ├── ProjectSettings.asset
│       │       ├── ProjectVersion.txt
│       │       ├── QualitySettings.asset
│       │       ├── SceneTemplateSettings.json
│       │       ├── ShaderGraphSettings.asset
│       │       ├── TagManager.asset
│       │       ├── TimeManager.asset
│       │       ├── URPProjectSettings.asset
│       │       ├── UnityConnectSettings.asset
│       │       ├── VFXManager.asset
│       │       ├── VersionControlSettings.asset
│       │       └── XRSettings.asset
│       ├── client-unreal/
│       │   ├── Config/
│       │   │   ├── DefaultEditor.ini
│       │   │   ├── DefaultEngine.ini
│       │   │   ├── DefaultGame.ini
│       │   │   └── DefaultInput.ini
│       │   ├── Content/
│       │   │   ├── BP_BlackholioGameMode.uasset
│       │   │   ├── BP_Circle.uasset
│       │   │   ├── BP_Food.uasset
│       │   │   ├── BP_GameManager.uasset
│       │   │   ├── BP_PlayerController.uasset
│       │   │   ├── BP_PlayerPawn.uasset
│       │   │   ├── Blackholio.umap
│       │   │   ├── Circle.uasset
│       │   │   ├── Circle_Sprite.uasset
│       │   │   ├── Gameplay/
│       │   │   │   ├── BP_ParallaxBackground.uasset
│       │   │   │   ├── StarBackground.uasset
│       │   │   │   ├── StarBackground_Sprite.uasset
│       │   │   │   ├── WBP_Leaderboard.uasset
│       │   │   │   ├── WBP_LeaderboardRow.uasset
│       │   │   │   ├── WBP_Respawn.uasset
│       │   │   │   └── WBP_UsernameChooser.uasset
│       │   │   ├── Input/
│       │   │   │   ├── IA_InputLock.uasset
│       │   │   │   ├── IA_Split.uasset
│       │   │   │   ├── IA_Suicide.uasset
│       │   │   │   └── IMC_Main.uasset
│       │   │   ├── MFI_WavyOutline_Inst.uasset
│       │   │   ├── MF_WavyOutline.uasset
│       │   │   ├── MI_Circle.uasset
│       │   │   ├── MI_Food.uasset
│       │   │   ├── M_Circle.uasset
│       │   │   └── WBP_Nameplate.uasset
│       │   ├── Source/
│       │   │   ├── client_unreal/
│       │   │   │   ├── Private/
│       │   │   │   │   ├── BlackholioGameMode.cpp
│       │   │   │   │   ├── BlackholioPlayerController.cpp
│       │   │   │   │   ├── Circle.cpp
│       │   │   │   │   ├── Entity.cpp
│       │   │   │   │   ├── Food.cpp
│       │   │   │   │   ├── GameManager.cpp
│       │   │   │   │   ├── Gameplay/
│       │   │   │   │   │   ├── LeaderboardRowWidget.cpp
│       │   │   │   │   │   ├── LeaderboardWidget.cpp
│       │   │   │   │   │   ├── ParallaxBackground.cpp
│       │   │   │   │   │   ├── RespawnWidget.cpp
│       │   │   │   │   │   └── UsernameChooserWidget.cpp
│       │   │   │   │   ├── ModuleBindings/
│       │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│       │   │   │   │   │   └── Tables/
│       │   │   │   │   │       ├── CircleTable.g.cpp
│       │   │   │   │   │       ├── ConfigTable.g.cpp
│       │   │   │   │   │       ├── ConsumeEntityEventTable.g.cpp
│       │   │   │   │   │       ├── EntityTable.g.cpp
│       │   │   │   │   │       ├── FoodTable.g.cpp
│       │   │   │   │   │       └── PlayerTable.g.cpp
│       │   │   │   │   └── PlayerPawn.cpp
│       │   │   │   ├── Public/
│       │   │   │   │   ├── BlackholioGameMode.h
│       │   │   │   │   ├── BlackholioPlayerController.h
│       │   │   │   │   ├── Circle.h
│       │   │   │   │   ├── DbVector2.h
│       │   │   │   │   ├── Entity.h
│       │   │   │   │   ├── Food.h
│       │   │   │   │   ├── GameManager.h
│       │   │   │   │   ├── Gameplay/
│       │   │   │   │   │   ├── LeaderboardRowWidget.h
│       │   │   │   │   │   ├── LeaderboardWidget.h
│       │   │   │   │   │   ├── ParallaxBackground.h
│       │   │   │   │   │   ├── RespawnWidget.h
│       │   │   │   │   │   └── UsernameChooserWidget.h
│       │   │   │   │   ├── ModuleBindings/
│       │   │   │   │   │   ├── ReducerBase.g.h
│       │   │   │   │   │   ├── Reducers/
│       │   │   │   │   │   │   ├── EnterGame.g.h
│       │   │   │   │   │   │   ├── PlayerSplit.g.h
│       │   │   │   │   │   │   ├── Respawn.g.h
│       │   │   │   │   │   │   ├── Suicide.g.h
│       │   │   │   │   │   │   └── UpdatePlayerInput.g.h
│       │   │   │   │   │   ├── SpacetimeDBClient.g.h
│       │   │   │   │   │   ├── Tables/
│       │   │   │   │   │   │   ├── CircleTable.g.h
│       │   │   │   │   │   │   ├── ConfigTable.g.h
│       │   │   │   │   │   │   ├── ConsumeEntityEventTable.g.h
│       │   │   │   │   │   │   ├── EntityTable.g.h
│       │   │   │   │   │   │   ├── FoodTable.g.h
│       │   │   │   │   │   │   └── PlayerTable.g.h
│       │   │   │   │   │   └── Types/
│       │   │   │   │   │       ├── CircleDecayTimerType.g.h
│       │   │   │   │   │       ├── CircleRecombineTimerType.g.h
│       │   │   │   │   │       ├── CircleType.g.h
│       │   │   │   │   │       ├── ConfigType.g.h
│       │   │   │   │   │       ├── ConsumeEntityEventType.g.h
│       │   │   │   │   │       ├── ConsumeEntityTimerType.g.h
│       │   │   │   │   │       ├── DbVector2Type.g.h
│       │   │   │   │   │       ├── EntityType.g.h
│       │   │   │   │   │       ├── FoodType.g.h
│       │   │   │   │   │       ├── MoveAllPlayersTimerType.g.h
│       │   │   │   │   │       ├── PlayerType.g.h
│       │   │   │   │   │       └── SpawnFoodTimerType.g.h
│       │   │   │   │   └── PlayerPawn.h
│       │   │   │   ├── client_unreal.Build.cs
│       │   │   │   ├── client_unreal.cpp
│       │   │   │   └── client_unreal.h
│       │   │   ├── client_unreal.Target.cs
│       │   │   └── client_unrealEditor.Target.cs
│       │   └── client_unreal.uproject
│       ├── server-cpp/
│       │   └── spacetimedb/
│       │       ├── .gitignore
│       │       ├── CMakeLists.txt
│       │       └── src/
│       │           └── lib.cpp
│       ├── server-csharp/
│       │   ├── .gitignore
│       │   ├── DbVector2.cs
│       │   ├── Lib.cs
│       │   ├── StdbModule.csproj
│       │   ├── generate.bat
│       │   ├── generate.sh
│       │   ├── logs.sh
│       │   ├── publish.bat
│       │   ├── publish.sh
│       │   └── write-nuget-config.sh
│       └── server-rust/
│           ├── .gitignore
│           ├── Cargo.toml
│           ├── generate.bat
│           ├── generate.sh
│           ├── logs.bat
│           ├── logs.sh
│           ├── publish.bat
│           ├── publish.sh
│           └── src/
│               ├── lib.rs
│               └── math.rs
├── docker-compose.yml
├── docs/
│   ├── .editorconfig
│   ├── .gitignore
│   ├── DEVELOP.md
│   ├── LICENSE.txt
│   ├── README.md
│   ├── STYLE.md
│   ├── docs/
│   │   ├── 00000-ask-ai/
│   │   │   ├── 00100-ask-ai.mdx
│   │   │   └── _category_.json
│   │   ├── 00100-intro/
│   │   │   ├── 00100-getting-started/
│   │   │   │   ├── 00100-getting-started.md
│   │   │   │   ├── 00200-what-is-spacetimedb.md
│   │   │   │   ├── 00250-zen-of-spacetimedb.md
│   │   │   │   ├── 00300-language-support.md
│   │   │   │   ├── 00400-key-architecture.md
│   │   │   │   ├── 00500-faq.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00200-quickstarts/
│   │   │   │   ├── 00100-react.md
│   │   │   │   ├── 00150-nextjs.md
│   │   │   │   ├── 00150-vue.md
│   │   │   │   ├── 00155-nuxt.md
│   │   │   │   ├── 00160-svelte.md
│   │   │   │   ├── 00165-angular.md
│   │   │   │   ├── 00170-tanstack.md
│   │   │   │   ├── 00175-remix.md
│   │   │   │   ├── 00180-browser.md
│   │   │   │   ├── 00250-bun.md
│   │   │   │   ├── 00275-deno.md
│   │   │   │   ├── 00300-nodejs.md
│   │   │   │   ├── 00400-typescript.md
│   │   │   │   ├── 00500-rust.md
│   │   │   │   ├── 00600-c-sharp.md
│   │   │   │   ├── 00700-cpp.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00300-tutorials/
│   │   │   │   ├── 00100-chat-app.md
│   │   │   │   ├── 00300-unity-tutorial/
│   │   │   │   │   ├── 00200-part-1.md
│   │   │   │   │   ├── 00300-part-2.md
│   │   │   │   │   ├── 00400-part-3.md
│   │   │   │   │   ├── 00500-part-4.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   ├── 00400-unreal-tutorial/
│   │   │   │   │   ├── 00200-part-1.md
│   │   │   │   │   ├── 00300-part-2.md
│   │   │   │   │   ├── 00400-part-3.md
│   │   │   │   │   ├── 00500-part-4.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   └── _category_.json
│   │   │   └── _category_.json
│   │   ├── 00200-core-concepts/
│   │   │   ├── 00000-index.md
│   │   │   ├── 00100-databases/
│   │   │   │   ├── 00100-transactions-atomicity.md
│   │   │   │   ├── 00200-spacetime-dev.md
│   │   │   │   ├── 00300-spacetime-publish.md
│   │   │   │   ├── 00500-cheat-sheet.md
│   │   │   │   ├── 00500-migrations/
│   │   │   │   │   ├── 00200-automatic-migrations.md
│   │   │   │   │   ├── 00300-incremental-migrations.md
│   │   │   │   │   └── _category_.json
│   │   │   │   └── _category_.json
│   │   │   ├── 00100-databases.md
│   │   │   ├── 00200-functions/
│   │   │   │   ├── 00300-reducers/
│   │   │   │   │   ├── 00300-reducers.md
│   │   │   │   │   ├── 00400-reducer-context.md
│   │   │   │   │   ├── 00500-lifecycle.md
│   │   │   │   │   ├── 00600-error-handling.md
│   │   │   │   │   └── _category_.json
│   │   │   │   ├── 00400-procedures.md
│   │   │   │   ├── 00500-views.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00200-functions.md
│   │   │   ├── 00300-tables/
│   │   │   │   ├── 00200-column-types.md
│   │   │   │   ├── 00210-file-storage.md
│   │   │   │   ├── 00230-auto-increment.md
│   │   │   │   ├── 00240-constraints.md
│   │   │   │   ├── 00250-default-values.md
│   │   │   │   ├── 00300-indexes.md
│   │   │   │   ├── 00400-access-permissions.md
│   │   │   │   ├── 00500-schedule-tables.md
│   │   │   │   ├── 00550-event-tables.md
│   │   │   │   ├── 00600-performance.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00300-tables.md
│   │   │   ├── 00400-subscriptions/
│   │   │   │   ├── 00200-subscription-semantics.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00400-subscriptions.md
│   │   │   ├── 00500-authentication/
│   │   │   │   ├── 00100-spacetimeauth/
│   │   │   │   │   ├── 00200-creating-a-project.md
│   │   │   │   │   ├── 00300-configuring-a-project.md
│   │   │   │   │   ├── 00400-testing.md
│   │   │   │   │   ├── 00500-react-integration.md
│   │   │   │   │   ├── _category_.json
│   │   │   │   │   └── index.md
│   │   │   │   ├── 00200-Auth0.md
│   │   │   │   ├── 00300-Clerk.md
│   │   │   │   └── 00500-usage.md
│   │   │   ├── 00500-authentication.md
│   │   │   ├── 00600-clients/
│   │   │   │   ├── 00200-codegen.md
│   │   │   │   ├── 00300-connection.md
│   │   │   │   ├── 00400-sdk-api.md
│   │   │   │   ├── 00500-rust-reference.md
│   │   │   │   ├── 00600-csharp-reference.md
│   │   │   │   ├── 00700-typescript-reference.md
│   │   │   │   ├── 00800-unreal-reference.md
│   │   │   │   └── _category_.json
│   │   │   ├── 00600-clients.md
│   │   │   └── _category_.json
│   │   └── 00300-resources/
│   │       ├── 00000-index.md
│   │       ├── 00100-how-to/
│   │       │   ├── 00100-deploy/
│   │       │   │   ├── 00100-maincloud.md
│   │       │   │   ├── 00200-self-hosting.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-pg-wire.md
│   │       │   ├── 00300-logging.md
│   │       │   ├── 00400-row-level-security.md
│   │       │   ├── 00500-reject-client-connections.md
│   │       │   ├── 00600-migrating-to-2.0.md
│   │       │   ├── 00700-self-hosted-key-rotation.md
│   │       │   └── _category_.json
│   │       ├── 00200-reference/
│   │       │   ├── 00100-cli-reference/
│   │       │   │   ├── 00100-cli-reference.md
│   │       │   │   ├── 00200-standalone-config.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-http-api/
│   │       │   │   ├── 00100-authorization.md
│   │       │   │   ├── 00200-identity.md
│   │       │   │   ├── 00300-database.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-internals/
│   │       │   │   ├── 00100-module-abi-reference.md
│   │       │   │   ├── 00200-sats-json.md
│   │       │   │   ├── 00300-bsatn.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00400-sql-reference.md
│   │       │   └── _category_.json
│   │       ├── 01000-reference/
│   │       │   └── 00100-cli-reference/
│   │       │       └── 00300-spacetime-json.md
│   │       └── _category_.json
│   ├── docusaurus.config.ts
│   ├── llms/
│   │   ├── docs-benchmark-analysis.md
│   │   ├── docs-benchmark-comment.md
│   │   ├── docs-benchmark-details.json
│   │   ├── docs-benchmark-summary.json
│   │   ├── llm-comparison-details.json
│   │   ├── llm-comparison-summary.json
│   │   ├── oneshot-grades.json
│   │   └── oneshot-summary.md
│   ├── package.json
│   ├── scripts/
│   │   ├── generate-cli-docs.mjs
│   │   ├── get-old-docs.sh
│   │   └── rewrite-doc-links.mjs
│   ├── sidebars.ts
│   ├── src/
│   │   ├── client-modules/
│   │   │   ├── fonts.ts
│   │   │   └── inkeep-font-override.ts
│   │   ├── components/
│   │   │   ├── CardLink.tsx
│   │   │   ├── CardLinkGrid.tsx
│   │   │   ├── Check.tsx
│   │   │   ├── CppModuleVersionNotice.tsx
│   │   │   ├── DocsList.tsx
│   │   │   ├── InstallCardLink.tsx
│   │   │   ├── QuickstartLinks.tsx
│   │   │   └── Steps.tsx
│   │   ├── css/
│   │   │   ├── custom.css
│   │   │   └── typography.css
│   │   └── theme/
│   │       ├── DocVersionBanner/
│   │       │   └── index.tsx
│   │       └── NavbarItem/
│   │           └── NavbarNavLink.tsx
│   ├── static/
│   │   ├── .nojekyll
│   │   ├── ai-rules/
│   │   │   ├── spacetimedb-csharp.mdc
│   │   │   ├── spacetimedb-migration-2.0.mdc
│   │   │   ├── spacetimedb-rust.mdc
│   │   │   ├── spacetimedb-typescript.mdc
│   │   │   └── spacetimedb.mdc
│   │   └── llms.md
│   ├── test-csharp-snippets/
│   │   ├── Module.cs
│   │   └── TestProcedures.csproj
│   ├── tsconfig.json
│   ├── versioned_docs/
│   │   └── version-1.12.0/
│   │       ├── 00000-ask-ai/
│   │       │   ├── 00100-ask-ai.mdx
│   │       │   └── _category_.json
│   │       ├── 00100-intro/
│   │       │   ├── 00100-getting-started/
│   │       │   │   ├── 00100-getting-started.md
│   │       │   │   ├── 00200-what-is-spacetimedb.md
│   │       │   │   ├── 00250-zen-of-spacetimedb.md
│   │       │   │   ├── 00300-language-support.md
│   │       │   │   ├── 00400-key-architecture.md
│   │       │   │   ├── 00500-faq.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-quickstarts/
│   │       │   │   ├── 00100-react.md
│   │       │   │   ├── 00150-vue.md
│   │       │   │   ├── 00160-svelte.md
│   │       │   │   ├── 00400-typescript.md
│   │       │   │   ├── 00500-rust.md
│   │       │   │   ├── 00600-c-sharp.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-tutorials/
│   │       │   │   ├── 00100-chat-app.md
│   │       │   │   ├── 00300-unity-tutorial/
│   │       │   │   │   ├── 00200-part-1.md
│   │       │   │   │   ├── 00300-part-2.md
│   │       │   │   │   ├── 00400-part-3.md
│   │       │   │   │   ├── 00500-part-4.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   ├── 00400-unreal-tutorial/
│   │       │   │   │   ├── 00200-part-1.md
│   │       │   │   │   ├── 00300-part-2.md
│   │       │   │   │   ├── 00400-part-3.md
│   │       │   │   │   ├── 00500-part-4.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   └── _category_.json
│   │       │   └── _category_.json
│   │       ├── 00200-core-concepts/
│   │       │   ├── 00000-index.md
│   │       │   ├── 00100-databases/
│   │       │   │   ├── 00100-transactions-atomicity.md
│   │       │   │   ├── 00200-spacetime-dev.md
│   │       │   │   ├── 00300-spacetime-publish.md
│   │       │   │   ├── 00500-cheat-sheet.md
│   │       │   │   ├── 00500-migrations/
│   │       │   │   │   ├── 00200-automatic-migrations.md
│   │       │   │   │   ├── 00300-incremental-migrations.md
│   │       │   │   │   └── _category_.json
│   │       │   │   └── _category_.json
│   │       │   ├── 00100-databases.md
│   │       │   ├── 00200-functions/
│   │       │   │   ├── 00300-reducers/
│   │       │   │   │   ├── 00300-reducers.md
│   │       │   │   │   ├── 00400-reducer-context.md
│   │       │   │   │   ├── 00500-lifecycle.md
│   │       │   │   │   ├── 00600-error-handling.md
│   │       │   │   │   └── _category_.json
│   │       │   │   ├── 00400-procedures.md
│   │       │   │   ├── 00500-views.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00200-functions.md
│   │       │   ├── 00300-tables/
│   │       │   │   ├── 00200-column-types.md
│   │       │   │   ├── 00210-file-storage.md
│   │       │   │   ├── 00230-auto-increment.md
│   │       │   │   ├── 00240-constraints.md
│   │       │   │   ├── 00250-default-values.md
│   │       │   │   ├── 00300-indexes.md
│   │       │   │   ├── 00400-access-permissions.md
│   │       │   │   ├── 00500-schedule-tables.md
│   │       │   │   ├── 00600-performance.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00300-tables.md
│   │       │   ├── 00400-subscriptions/
│   │       │   │   ├── 00200-subscription-semantics.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00400-subscriptions.md
│   │       │   ├── 00500-authentication/
│   │       │   │   ├── 00100-spacetimeauth/
│   │       │   │   │   ├── 00200-creating-a-project.md
│   │       │   │   │   ├── 00300-configuring-a-project.md
│   │       │   │   │   ├── 00400-testing.md
│   │       │   │   │   ├── 00500-react-integration.md
│   │       │   │   │   ├── _category_.json
│   │       │   │   │   └── index.md
│   │       │   │   ├── 00200-Auth0.md
│   │       │   │   ├── 00300-Clerk.md
│   │       │   │   └── 00500-usage.md
│   │       │   ├── 00500-authentication.md
│   │       │   ├── 00600-client-sdk-languages/
│   │       │   │   ├── 00200-codegen.md
│   │       │   │   ├── 00300-connection.md
│   │       │   │   ├── 00400-sdk-api.md
│   │       │   │   ├── 00500-rust-reference.md
│   │       │   │   ├── 00600-csharp-reference.md
│   │       │   │   ├── 00700-typescript-reference.md
│   │       │   │   ├── 00800-unreal-reference.md
│   │       │   │   └── _category_.json
│   │       │   ├── 00600-client-sdk-languages.md
│   │       │   └── _category_.json
│   │       └── 00300-resources/
│   │           ├── 00000-index.md
│   │           ├── 00100-how-to/
│   │           │   ├── 00100-deploy/
│   │           │   │   ├── 00100-maincloud.md
│   │           │   │   ├── 00200-self-hosting.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00200-pg-wire.md
│   │           │   ├── 00300-logging.md
│   │           │   ├── 00400-row-level-security.md
│   │           │   ├── 00500-reject-client-connections.md
│   │           │   └── _category_.json
│   │           ├── 00200-reference/
│   │           │   ├── 00100-cli-reference/
│   │           │   │   ├── 00100-cli-reference.md
│   │           │   │   ├── 00200-standalone-config.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00200-http-api/
│   │           │   │   ├── 00100-authorization.md
│   │           │   │   ├── 00200-identity.md
│   │           │   │   ├── 00300-database.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00300-internals/
│   │           │   │   ├── 00100-module-abi-reference.md
│   │           │   │   ├── 00200-sats-json.md
│   │           │   │   ├── 00300-bsatn.md
│   │           │   │   └── _category_.json
│   │           │   ├── 00400-sql-reference.md
│   │           │   └── _category_.json
│   │           └── _category_.json
│   ├── versioned_sidebars/
│   │   └── version-1.12.0-sidebars.json
│   └── versions.json
├── eslint.config.js
├── flake.nix
├── git-hooks/
│   ├── hooks/
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   ├── push-to-checkout.sample
│   │   └── update.sample
│   └── install-hooks.sh
├── global.json
├── librusty_v8.nix
├── licenses/
│   ├── BSL.txt
│   └── apache2.txt
├── modules/
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   ├── benchmarks/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── config.toml
│   │   └── src/
│   │       ├── circles.rs
│   │       ├── ia_loop.rs
│   │       ├── lib.rs
│   │       └── synthetic.rs
│   ├── benchmarks-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── build.bat
│   │   └── src/
│   │       ├── circles.cpp
│   │       ├── common.h
│   │       ├── ia_loop.cpp
│   │       ├── lib.cpp
│   │       └── synthetic.cpp
│   ├── benchmarks-cs/
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── benchmarks-cs.csproj
│   │   ├── circles.cs
│   │   ├── ia_loop.cs
│   │   ├── lib.cs
│   │   └── synthetic.cs
│   ├── benchmarks-ts/
│   │   ├── .gitignore
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── circles.ts
│   │   │   ├── ia_loop.ts
│   │   │   ├── index.ts
│   │   │   ├── load.ts
│   │   │   ├── schema.ts
│   │   │   └── synthetic.ts
│   │   └── tsconfig.json
│   ├── keynote-benchmarks/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── module-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   ├── index.html
│   │   ├── protobuf/
│   │   │   └── Test.proto
│   │   └── src/
│   │       └── lib.rs
│   ├── module-test-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── compare_module_schemas.py
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── module-test-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   ├── module-test-cs.csproj
│   │   └── module-test-cs.sln
│   ├── module-test-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── perf-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-connect-disconnect/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       ├── .gitignore
│   │       └── lib.rs
│   ├── sdk-test-connect-disconnect-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-connect-disconnect-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   └── sdk-test-connect-disconnect-cs.csproj
│   ├── sdk-test-connect-disconnect-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-cpp/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-cs/
│   │   ├── .gitignore
│   │   ├── Lib.cs
│   │   ├── README.md
│   │   ├── sdk-test-cs.csproj
│   │   └── sdk-test-cs.sln
│   ├── sdk-test-event-table/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-procedure/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-procedure-cpp/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── client/
│   │   │   ├── .gitignore
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── main.rs
│   │   │       └── module_bindings/
│   │   │           ├── insert_with_tx_commit_procedure.rs
│   │   │           ├── insert_with_tx_rollback_procedure.rs
│   │   │           ├── invalid_request_procedure.rs
│   │   │           ├── mod.rs
│   │   │           ├── my_table_table.rs
│   │   │           ├── my_table_type.rs
│   │   │           ├── pk_uuid_table.rs
│   │   │           ├── pk_uuid_type.rs
│   │   │           ├── proc_inserts_into_table.rs
│   │   │           ├── proc_inserts_into_type.rs
│   │   │           ├── read_my_schema_procedure.rs
│   │   │           ├── return_enum_a_procedure.rs
│   │   │           ├── return_enum_b_procedure.rs
│   │   │           ├── return_enum_type.rs
│   │   │           ├── return_primitive_procedure.rs
│   │   │           ├── return_struct_procedure.rs
│   │   │           ├── return_struct_type.rs
│   │   │           ├── schedule_proc_reducer.rs
│   │   │           ├── scheduled_proc_procedure.rs
│   │   │           ├── scheduled_proc_table_table.rs
│   │   │           ├── scheduled_proc_table_type.rs
│   │   │           ├── sorted_uuids_insert_procedure.rs
│   │   │           ├── test_uuid_counter_procedure.rs
│   │   │           ├── test_uuid_ordering_procedure.rs
│   │   │           ├── test_uuid_round_trip_procedure.rs
│   │   │           ├── test_uuid_v_4_procedure.rs
│   │   │           ├── test_uuid_v_7_procedure.rs
│   │   │           ├── test_uuid_versions_procedure.rs
│   │   │           └── will_panic_procedure.rs
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-procedure-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-ts/
│   │   ├── package.json
│   │   ├── src/
│   │   │   └── index.ts
│   │   └── tsconfig.json
│   ├── sdk-test-view/
│   │   ├── .cargo/
│   │   │   └── config.toml
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── lib.rs
│   ├── sdk-test-view-cpp/
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── compile.bat
│   │   └── src/
│   │       └── lib.cpp
│   ├── sdk-test-view-pk/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   └── sdk-test-view-pk-cs/
│       ├── .gitignore
│       ├── Lib.cs
│       ├── README.md
│       └── sdk-test-view-pk-cs.csproj
├── package.json
├── pnpm-workspace.yaml
├── query-builder-syntax-analysis.md
├── run_standalone_temp.sh
├── rust-toolchain.toml
├── sdks/
│   ├── csharp/
│   │   ├── .github/
│   │   │   └── workflows/
│   │   │       ├── publish-nuget.yml
│   │   │       └── repo-migration-notice.yml
│   │   ├── .gitignore
│   │   ├── .meta-check-ignore
│   │   ├── DEVELOP.md
│   │   ├── DEVELOP.md.meta
│   │   ├── Directory.Build.props
│   │   ├── Directory.Build.props.meta
│   │   ├── LICENSE.txt.meta
│   │   ├── README.dotnet.md
│   │   ├── README.dotnet.md.meta
│   │   ├── README.md
│   │   ├── README.md.meta
│   │   ├── SpacetimeDB.ClientSDK.csproj
│   │   ├── SpacetimeDB.ClientSDK.csproj.meta
│   │   ├── SpacetimeDB.ClientSDK.sln
│   │   ├── SpacetimeDB.ClientSDK.sln.meta
│   │   ├── after.SpacetimeDB.ClientSDK.sln.targets
│   │   ├── after.SpacetimeDB.ClientSDK.sln.targets.meta
│   │   ├── examples~/
│   │   │   └── regression-tests/
│   │   │       ├── client/
│   │   │       │   ├── EqualityOperations.cs
│   │   │       │   ├── Program.cs
│   │   │       │   ├── client.csproj
│   │   │       │   └── module_bindings/
│   │   │       │       ├── Procedures/
│   │   │       │       │   ├── AuthenticationCapabilities.g.cs
│   │   │       │       │   ├── DanglingTxWarning.g.cs
│   │   │       │       │   ├── DocumentationGapChecks.g.cs
│   │   │       │       │   ├── InsertWithTxCommit.g.cs
│   │   │       │       │   ├── InsertWithTxPanic.g.cs
│   │   │       │       │   ├── InsertWithTxRetry.g.cs
│   │   │       │       │   ├── InsertWithTxRollback.g.cs
│   │   │       │       │   ├── InsertWithTxRollbackResult.g.cs
│   │   │       │       │   ├── InvalidHttpRequest.g.cs
│   │   │       │       │   ├── ReadMySchemaViaHttp.g.cs
│   │   │       │       │   ├── ReturnEnumA.g.cs
│   │   │       │       │   ├── ReturnEnumB.g.cs
│   │   │       │       │   ├── ReturnPrimitive.g.cs
│   │   │       │       │   ├── ReturnStructProcedure.g.cs
│   │   │       │       │   ├── ReturnUuid.g.cs
│   │   │       │       │   ├── SubscriptionEventOffset.g.cs
│   │   │       │       │   ├── TxContextCapabilities.g.cs
│   │   │       │       │   └── WillPanic.g.cs
│   │   │       │       ├── Reducers/
│   │   │       │       │   ├── Add.g.cs
│   │   │       │       │   ├── Delete.g.cs
│   │   │       │       │   ├── EmitTestEvent.g.cs
│   │   │       │       │   ├── InsertEmptyStringIntoNonNullable.g.cs
│   │   │       │       │   ├── InsertNullStringIntoNonNullable.g.cs
│   │   │       │       │   ├── InsertNullStringIntoNullable.g.cs
│   │   │       │       │   ├── InsertResult.g.cs
│   │   │       │       │   ├── InsertViewPkMembership.g.cs
│   │   │       │       │   ├── InsertViewPkMembershipSecondary.g.cs
│   │   │       │       │   ├── InsertViewPkPlayer.g.cs
│   │   │       │       │   ├── InsertWhereTest.g.cs
│   │   │       │       │   ├── Noop.g.cs
│   │   │       │       │   ├── SetNullableVec.g.cs
│   │   │       │       │   ├── ThrowError.g.cs
│   │   │       │       │   ├── UpdateViewPkPlayer.g.cs
│   │   │       │       │   └── UpdateWhereTest.g.cs
│   │   │       │       ├── SpacetimeDBClient.g.cs
│   │   │       │       ├── Tables/
│   │   │       │       │   ├── Account.g.cs
│   │   │       │       │   ├── Admins.g.cs
│   │   │       │       │   ├── AllViewPkPlayers.g.cs
│   │   │       │       │   ├── ExampleData.g.cs
│   │   │       │       │   ├── FindWhereTest.g.cs
│   │   │       │       │   ├── MyAccount.g.cs
│   │   │       │       │   ├── MyAccountMissing.g.cs
│   │   │       │       │   ├── MyLog.g.cs
│   │   │       │       │   ├── MyPlayer.g.cs
│   │   │       │       │   ├── MyTable.g.cs
│   │   │       │       │   ├── NullStringNonnullable.g.cs
│   │   │       │       │   ├── NullStringNullable.g.cs
│   │   │       │       │   ├── NullableVec.g.cs
│   │   │       │       │   ├── NullableVecView.g.cs
│   │   │       │       │   ├── Player.g.cs
│   │   │       │       │   ├── PlayerLevel.g.cs
│   │   │       │       │   ├── PlayersAtLevelOne.g.cs
│   │   │       │       │   ├── RetryLog.g.cs
│   │   │       │       │   ├── Score.g.cs
│   │   │       │       │   ├── ScoresPlayer123.g.cs
│   │   │       │       │   ├── ScoresPlayer123Level5.g.cs
│   │   │       │       │   ├── ScoresPlayer123Range.g.cs
│   │   │       │       │   ├── SenderViewPkPlayersA.g.cs
│   │   │       │       │   ├── SenderViewPkPlayersB.g.cs
│   │   │       │       │   ├── TestEvent.g.cs
│   │   │       │       │   ├── User.g.cs
│   │   │       │       │   ├── UsersAge1865.g.cs
│   │   │       │       │   ├── UsersAge18Plus.g.cs
│   │   │       │       │   ├── UsersAgeUnder18.g.cs
│   │   │       │       │   ├── UsersNamedAlice.g.cs
│   │   │       │       │   ├── ViewPkMembership.g.cs
│   │   │       │       │   ├── ViewPkMembershipSecondary.g.cs
│   │   │       │       │   ├── ViewPkPlayer.g.cs
│   │   │       │       │   ├── WhereTest.g.cs
│   │   │       │       │   ├── WhereTestQuery.g.cs
│   │   │       │       │   └── WhereTestView.g.cs
│   │   │       │       └── Types/
│   │   │       │           ├── Account.g.cs
│   │   │       │           ├── DbVector2.g.cs
│   │   │       │           ├── ExampleData.g.cs
│   │   │       │           ├── MyLog.g.cs
│   │   │       │           ├── MyTable.g.cs
│   │   │       │           ├── NullStringNonNullable.g.cs
│   │   │       │           ├── NullStringNullable.g.cs
│   │   │       │           ├── NullableVec.g.cs
│   │   │       │           ├── Player.g.cs
│   │   │       │           ├── PlayerAndLevel.g.cs
│   │   │       │           ├── PlayerLevel.g.cs
│   │   │       │           ├── RetryLog.g.cs
│   │   │       │           ├── ReturnEnum.g.cs
│   │   │       │           ├── ReturnStruct.g.cs
│   │   │       │           ├── Score.g.cs
│   │   │       │           ├── TestEvent.g.cs
│   │   │       │           ├── User.g.cs
│   │   │       │           ├── ViewPkMembership.g.cs
│   │   │       │           ├── ViewPkMembershipSecondary.g.cs
│   │   │       │           ├── ViewPkPlayer.g.cs
│   │   │       │           └── WhereTest.g.cs
│   │   │       ├── procedure-client/
│   │   │       │   ├── EqualityOperations.cs
│   │   │       │   ├── Program.cs
│   │   │       │   ├── README.md
│   │   │       │   ├── client.csproj
│   │   │       │   └── module_bindings/
│   │   │       │       ├── Procedures/
│   │   │       │       │   ├── InsertWithTxCommit.g.cs
│   │   │       │       │   ├── InsertWithTxRollback.g.cs
│   │   │       │       │   ├── InvalidRequest.g.cs
│   │   │       │       │   ├── ReadMySchema.g.cs
│   │   │       │       │   ├── ReturnEnumA.g.cs
│   │   │       │       │   ├── ReturnEnumB.g.cs
│   │   │       │       │   ├── ReturnPrimitive.g.cs
│   │   │       │       │   ├── ReturnStruct.g.cs
│   │   │       │       │   ├── SortedUuidsInsert.g.cs
│   │   │       │       │   └── WillPanic.g.cs
│   │   │       │       ├── Reducers/
│   │   │       │       │   └── ScheduleProc.g.cs
│   │   │       │       ├── SpacetimeDBClient.g.cs
│   │   │       │       ├── Tables/
│   │   │       │       │   ├── MyTable.g.cs
│   │   │       │       │   ├── PkUuid.g.cs
│   │   │       │       │   └── ProcInsertsInto.g.cs
│   │   │       │       └── Types/
│   │   │       │           ├── MyTable.g.cs
│   │   │       │           ├── PkUuid.g.cs
│   │   │       │           ├── ProcInsertsInto.g.cs
│   │   │       │           ├── ReturnEnum.g.cs
│   │   │       │           ├── ReturnStruct.g.cs
│   │   │       │           └── ScheduledProcTable.g.cs
│   │   │       ├── republishing/
│   │   │       │   ├── client/
│   │   │       │   │   ├── Program.cs
│   │   │       │   │   ├── client.csproj
│   │   │       │   │   └── module_bindings/
│   │   │       │   │       ├── Reducers/
│   │   │       │   │       │   └── Insert.g.cs
│   │   │       │   │       ├── SpacetimeDBClient.g.cs
│   │   │       │   │       ├── Tables/
│   │   │       │   │       │   └── ExampleData.g.cs
│   │   │       │   │       └── Types/
│   │   │       │   │           ├── ExampleData.g.cs
│   │   │       │   │           ├── MyEnum.g.cs
│   │   │       │   │           └── MyStruct.g.cs
│   │   │       │   ├── server-initial/
│   │   │       │   │   ├── .gitignore
│   │   │       │   │   ├── Lib.cs
│   │   │       │   │   └── StdbModule.csproj
│   │   │       │   └── server-republish/
│   │   │       │       ├── .gitignore
│   │   │       │       ├── Lib.cs
│   │   │       │       └── StdbModule.csproj
│   │   │       ├── server/
│   │   │       │   ├── .gitignore
│   │   │       │   ├── Lib.cs
│   │   │       │   └── StdbModule.csproj
│   │   │       └── shared/
│   │   │           └── RegressionTestHarness.cs
│   │   ├── logo.png.meta
│   │   ├── package.json
│   │   ├── package.json.meta
│   │   ├── packages/
│   │   │   └── .gitignore
│   │   ├── src/
│   │   │   ├── AuthToken.cs
│   │   │   ├── AuthToken.cs.meta
│   │   │   ├── BSATNHelpers.cs
│   │   │   ├── BSATNHelpers.cs.meta
│   │   │   ├── Compression.cs
│   │   │   ├── Compression.cs.meta
│   │   │   ├── CompressionHelpers.cs
│   │   │   ├── CompressionHelpers.cs.meta
│   │   │   ├── ConsoleLogger.cs
│   │   │   ├── ConsoleLogger.cs.meta
│   │   │   ├── Event.cs
│   │   │   ├── Event.cs.meta
│   │   │   ├── EventHandling/
│   │   │   │   ├── AbstractEventHandler.cs
│   │   │   │   ├── AbstractEventHandler.cs.meta
│   │   │   │   ├── EventListeners.cs
│   │   │   │   ├── EventListeners.cs.meta
│   │   │   │   ├── ListExtensions.cs
│   │   │   │   └── ListExtensions.cs.meta
│   │   │   ├── EventHandling.meta
│   │   │   ├── Exceptions.cs
│   │   │   ├── Exceptions.cs.meta
│   │   │   ├── ISpacetimeDBLogger.cs
│   │   │   ├── ISpacetimeDBLogger.cs.meta
│   │   │   ├── ListStream.cs
│   │   │   ├── ListStream.cs.meta
│   │   │   ├── MultiDictionary.cs
│   │   │   ├── MultiDictionary.cs.meta
│   │   │   ├── Plugins/
│   │   │   │   ├── WebSocket.jslib
│   │   │   │   └── WebSocket.jslib.meta
│   │   │   ├── Plugins.meta
│   │   │   ├── ProcedureCallbacks.cs
│   │   │   ├── ProcedureCallbacks.cs.meta
│   │   │   ├── RemoteTablesBase.cs
│   │   │   ├── RemoteTablesBase.cs.meta
│   │   │   ├── SpacetimeDB/
│   │   │   │   ├── ClientApi/
│   │   │   │   │   ├── BsatnRowList.g.cs
│   │   │   │   │   ├── BsatnRowList.g.cs.meta
│   │   │   │   │   ├── CallProcedure.g.cs
│   │   │   │   │   ├── CallProcedure.g.cs.meta
│   │   │   │   │   ├── CallReducer.g.cs
│   │   │   │   │   ├── CallReducer.g.cs.meta
│   │   │   │   │   ├── ClientMessage.g.cs
│   │   │   │   │   ├── ClientMessage.g.cs.meta
│   │   │   │   │   ├── EnergyQuanta.g.cs
│   │   │   │   │   ├── EnergyQuanta.g.cs.meta
│   │   │   │   │   ├── EventTableRows.g.cs
│   │   │   │   │   ├── EventTableRows.g.cs.meta
│   │   │   │   │   ├── InitialConnection.g.cs
│   │   │   │   │   ├── InitialConnection.g.cs.meta
│   │   │   │   │   ├── OneOffQuery.g.cs
│   │   │   │   │   ├── OneOffQuery.g.cs.meta
│   │   │   │   │   ├── OneOffQueryResult.g.cs
│   │   │   │   │   ├── OneOffQueryResult.g.cs.meta
│   │   │   │   │   ├── PersistentTableRows.g.cs
│   │   │   │   │   ├── PersistentTableRows.g.cs.meta
│   │   │   │   │   ├── ProcedureResult.g.cs
│   │   │   │   │   ├── ProcedureResult.g.cs.meta
│   │   │   │   │   ├── ProcedureStatus.g.cs
│   │   │   │   │   ├── ProcedureStatus.g.cs.meta
│   │   │   │   │   ├── QueryRows.g.cs
│   │   │   │   │   ├── QueryRows.g.cs.meta
│   │   │   │   │   ├── QuerySetId.g.cs
│   │   │   │   │   ├── QuerySetId.g.cs.meta
│   │   │   │   │   ├── QuerySetUpdate.g.cs
│   │   │   │   │   ├── QuerySetUpdate.g.cs.meta
│   │   │   │   │   ├── ReducerCallInfo.g.cs
│   │   │   │   │   ├── ReducerCallInfo.g.cs.meta
│   │   │   │   │   ├── ReducerOk.g.cs
│   │   │   │   │   ├── ReducerOk.g.cs.meta
│   │   │   │   │   ├── ReducerOutcome.g.cs
│   │   │   │   │   ├── ReducerOutcome.g.cs.meta
│   │   │   │   │   ├── ReducerResult.g.cs
│   │   │   │   │   ├── ReducerResult.g.cs.meta
│   │   │   │   │   ├── RowSizeHint.g.cs
│   │   │   │   │   ├── RowSizeHint.g.cs.meta
│   │   │   │   │   ├── ServerMessage.g.cs
│   │   │   │   │   ├── ServerMessage.g.cs.meta
│   │   │   │   │   ├── SingleTableRows.g.cs
│   │   │   │   │   ├── SingleTableRows.g.cs.meta
│   │   │   │   │   ├── Subscribe.g.cs
│   │   │   │   │   ├── Subscribe.g.cs.meta
│   │   │   │   │   ├── SubscribeApplied.g.cs
│   │   │   │   │   ├── SubscribeApplied.g.cs.meta
│   │   │   │   │   ├── SubscriptionError.g.cs
│   │   │   │   │   ├── SubscriptionError.g.cs.meta
│   │   │   │   │   ├── TableUpdate.g.cs
│   │   │   │   │   ├── TableUpdate.g.cs.meta
│   │   │   │   │   ├── TableUpdateRows.g.cs
│   │   │   │   │   ├── TableUpdateRows.g.cs.meta
│   │   │   │   │   ├── TransactionUpdate.g.cs
│   │   │   │   │   ├── TransactionUpdate.g.cs.meta
│   │   │   │   │   ├── Unsubscribe.g.cs
│   │   │   │   │   ├── Unsubscribe.g.cs.meta
│   │   │   │   │   ├── UnsubscribeApplied.g.cs
│   │   │   │   │   ├── UnsubscribeApplied.g.cs.meta
│   │   │   │   │   ├── UnsubscribeFlags.g.cs
│   │   │   │   │   └── UnsubscribeFlags.g.cs.meta
│   │   │   │   └── ClientApi.meta
│   │   │   ├── SpacetimeDB.meta
│   │   │   ├── SpacetimeDBClient.cs
│   │   │   ├── SpacetimeDBClient.cs.meta
│   │   │   ├── SpacetimeDBNetworkManager.cs
│   │   │   ├── SpacetimeDBNetworkManager.cs.meta
│   │   │   ├── Stats.cs
│   │   │   ├── Stats.cs.meta
│   │   │   ├── Table.cs
│   │   │   ├── Table.cs.meta
│   │   │   ├── UnityDebugLogger.cs
│   │   │   ├── UnityDebugLogger.cs.meta
│   │   │   ├── Utils.cs
│   │   │   ├── Utils.cs.meta
│   │   │   ├── WebSocket.cs
│   │   │   ├── WebSocket.cs.meta
│   │   │   ├── com.clockworklabs.spacetimedbsdk.asmdef
│   │   │   ├── com.clockworklabs.spacetimedbsdk.asmdef.meta
│   │   │   ├── csc.rsp
│   │   │   └── csc.rsp.meta
│   │   ├── src.meta
│   │   ├── tests~/
│   │   │   ├── MultiDictionaryTests.cs
│   │   │   ├── QueryBuilderTests.cs
│   │   │   ├── README.md
│   │   │   ├── SnapshotTests.VerifySampleDump_dumpName=LegacySubscribeAll.verified.txt
│   │   │   ├── SnapshotTests.VerifySampleDump_dumpName=SubscribeApplied.verified.txt
│   │   │   ├── SnapshotTests.cs
│   │   │   ├── Tests.cs
│   │   │   ├── VerifyInit.cs
│   │   │   └── tests.csproj
│   │   ├── tools~/
│   │   │   ├── gen-client-api.bat
│   │   │   ├── gen-client-api.sh
│   │   │   ├── gen-quickstart.sh
│   │   │   ├── gen-regression-tests.sh
│   │   │   ├── run-regression-tests.sh
│   │   │   ├── update-against-stdb.sh
│   │   │   ├── upgrade-version.py
│   │   │   └── write-nuget-config.sh
│   │   └── unity-meta-skeleton~/
│   │       ├── spacetimedb.bsatn.runtime/
│   │       │   ├── analyzers/
│   │       │   │   ├── dotnet/
│   │       │   │   │   ├── cs/
│   │       │   │   │   │   └── SpacetimeDB.BSATN.Codegen.dll.meta
│   │       │   │   │   └── cs.meta
│   │       │   │   └── dotnet.meta
│   │       │   ├── analyzers.meta
│   │       │   ├── lib/
│   │       │   │   ├── net8.0/
│   │       │   │   │   └── SpacetimeDB.BSATN.Runtime.dll.meta
│   │       │   │   ├── net8.0.meta
│   │       │   │   ├── netstandard2.1/
│   │       │   │   │   └── SpacetimeDB.BSATN.Runtime.dll.meta
│   │       │   │   └── netstandard2.1.meta
│   │       │   ├── lib.meta
│   │       │   └── version.meta
│   │       ├── spacetimedb.bsatn.runtime.meta
│   │       ├── spacetimedb.runtime/
│   │       │   ├── analyzers/
│   │       │   │   ├── dotnet/
│   │       │   │   │   ├── cs/
│   │       │   │   │   │   └── SpacetimeDB.Codegen.dll.meta
│   │       │   │   │   └── cs.meta
│   │       │   │   └── dotnet.meta
│   │       │   ├── analyzers.meta
│   │       │   ├── lib/
│   │       │   │   └── net8.0.meta
│   │       │   ├── lib.meta
│   │       │   └── version.meta
│   │       └── spacetimedb.runtime.meta
│   ├── rust/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── callbacks.rs
│   │   │   ├── client_cache.rs
│   │   │   ├── compression.rs
│   │   │   ├── credentials.rs
│   │   │   ├── db_connection.rs
│   │   │   ├── db_context.rs
│   │   │   ├── error.rs
│   │   │   ├── event.rs
│   │   │   ├── lib.rs
│   │   │   ├── metrics.rs
│   │   │   ├── spacetime_module.rs
│   │   │   ├── subscription.rs
│   │   │   ├── table.rs
│   │   │   └── websocket.rs
│   │   └── tests/
│   │       ├── connect_disconnect_client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── connected_table.rs
│   │       │           ├── connected_type.rs
│   │       │           ├── disconnected_table.rs
│   │       │           ├── disconnected_type.rs
│   │       │           ├── identity_connected_reducer.rs
│   │       │           ├── identity_disconnected_reducer.rs
│   │       │           └── mod.rs
│   │       ├── event-table-client/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── emit_multiple_test_events_reducer.rs
│   │       │           ├── emit_test_event_reducer.rs
│   │       │           ├── mod.rs
│   │       │           ├── noop_reducer.rs
│   │       │           ├── test_event_table.rs
│   │       │           └── test_event_type.rs
│   │       ├── procedure-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── insert_with_tx_commit_procedure.rs
│   │       │           ├── insert_with_tx_rollback_procedure.rs
│   │       │           ├── invalid_request_procedure.rs
│   │       │           ├── mod.rs
│   │       │           ├── my_table_table.rs
│   │       │           ├── my_table_type.rs
│   │       │           ├── pk_uuid_table.rs
│   │       │           ├── pk_uuid_type.rs
│   │       │           ├── proc_inserts_into_table.rs
│   │       │           ├── proc_inserts_into_type.rs
│   │       │           ├── read_my_schema_procedure.rs
│   │       │           ├── return_enum_a_procedure.rs
│   │       │           ├── return_enum_b_procedure.rs
│   │       │           ├── return_enum_type.rs
│   │       │           ├── return_primitive_procedure.rs
│   │       │           ├── return_struct_procedure.rs
│   │       │           ├── return_struct_type.rs
│   │       │           ├── schedule_proc_reducer.rs
│   │       │           ├── scheduled_proc_procedure.rs
│   │       │           ├── scheduled_proc_table_table.rs
│   │       │           ├── scheduled_proc_table_type.rs
│   │       │           ├── sorted_uuids_insert_procedure.rs
│   │       │           └── will_panic_procedure.rs
│   │       ├── test-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       ├── module_bindings/
│   │       │       │   ├── b_tree_u_32_type.rs
│   │       │       │   ├── btree_u_32_table.rs
│   │       │       │   ├── byte_struct_type.rs
│   │       │       │   ├── delete_from_btree_u_32_reducer.rs
│   │       │       │   ├── delete_large_table_reducer.rs
│   │       │       │   ├── delete_pk_bool_reducer.rs
│   │       │       │   ├── delete_pk_connection_id_reducer.rs
│   │       │       │   ├── delete_pk_i_128_reducer.rs
│   │       │       │   ├── delete_pk_i_16_reducer.rs
│   │       │       │   ├── delete_pk_i_256_reducer.rs
│   │       │       │   ├── delete_pk_i_32_reducer.rs
│   │       │       │   ├── delete_pk_i_64_reducer.rs
│   │       │       │   ├── delete_pk_i_8_reducer.rs
│   │       │       │   ├── delete_pk_identity_reducer.rs
│   │       │       │   ├── delete_pk_string_reducer.rs
│   │       │       │   ├── delete_pk_u_128_reducer.rs
│   │       │       │   ├── delete_pk_u_16_reducer.rs
│   │       │       │   ├── delete_pk_u_256_reducer.rs
│   │       │       │   ├── delete_pk_u_32_insert_pk_u_32_two_reducer.rs
│   │       │       │   ├── delete_pk_u_32_reducer.rs
│   │       │       │   ├── delete_pk_u_32_two_reducer.rs
│   │       │       │   ├── delete_pk_u_64_reducer.rs
│   │       │       │   ├── delete_pk_u_8_reducer.rs
│   │       │       │   ├── delete_pk_uuid_reducer.rs
│   │       │       │   ├── delete_unique_bool_reducer.rs
│   │       │       │   ├── delete_unique_connection_id_reducer.rs
│   │       │       │   ├── delete_unique_i_128_reducer.rs
│   │       │       │   ├── delete_unique_i_16_reducer.rs
│   │       │       │   ├── delete_unique_i_256_reducer.rs
│   │       │       │   ├── delete_unique_i_32_reducer.rs
│   │       │       │   ├── delete_unique_i_64_reducer.rs
│   │       │       │   ├── delete_unique_i_8_reducer.rs
│   │       │       │   ├── delete_unique_identity_reducer.rs
│   │       │       │   ├── delete_unique_string_reducer.rs
│   │       │       │   ├── delete_unique_u_128_reducer.rs
│   │       │       │   ├── delete_unique_u_16_reducer.rs
│   │       │       │   ├── delete_unique_u_256_reducer.rs
│   │       │       │   ├── delete_unique_u_32_reducer.rs
│   │       │       │   ├── delete_unique_u_64_reducer.rs
│   │       │       │   ├── delete_unique_u_8_reducer.rs
│   │       │       │   ├── delete_unique_uuid_reducer.rs
│   │       │       │   ├── enum_with_payload_type.rs
│   │       │       │   ├── every_primitive_struct_type.rs
│   │       │       │   ├── every_vec_struct_type.rs
│   │       │       │   ├── indexed_simple_enum_table.rs
│   │       │       │   ├── indexed_simple_enum_type.rs
│   │       │       │   ├── indexed_table_2_table.rs
│   │       │       │   ├── indexed_table_2_type.rs
│   │       │       │   ├── indexed_table_table.rs
│   │       │       │   ├── indexed_table_type.rs
│   │       │       │   ├── insert_call_timestamp_reducer.rs
│   │       │       │   ├── insert_call_uuid_v_4_reducer.rs
│   │       │       │   ├── insert_call_uuid_v_7_reducer.rs
│   │       │       │   ├── insert_caller_one_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_one_identity_reducer.rs
│   │       │       │   ├── insert_caller_pk_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_pk_identity_reducer.rs
│   │       │       │   ├── insert_caller_unique_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_unique_identity_reducer.rs
│   │       │       │   ├── insert_caller_vec_connection_id_reducer.rs
│   │       │       │   ├── insert_caller_vec_identity_reducer.rs
│   │       │       │   ├── insert_into_btree_u_32_reducer.rs
│   │       │       │   ├── insert_into_indexed_simple_enum_reducer.rs
│   │       │       │   ├── insert_into_pk_btree_u_32_reducer.rs
│   │       │       │   ├── insert_large_table_reducer.rs
│   │       │       │   ├── insert_one_bool_reducer.rs
│   │       │       │   ├── insert_one_byte_struct_reducer.rs
│   │       │       │   ├── insert_one_connection_id_reducer.rs
│   │       │       │   ├── insert_one_enum_with_payload_reducer.rs
│   │       │       │   ├── insert_one_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_one_every_vec_struct_reducer.rs
│   │       │       │   ├── insert_one_f_32_reducer.rs
│   │       │       │   ├── insert_one_f_64_reducer.rs
│   │       │       │   ├── insert_one_i_128_reducer.rs
│   │       │       │   ├── insert_one_i_16_reducer.rs
│   │       │       │   ├── insert_one_i_256_reducer.rs
│   │       │       │   ├── insert_one_i_32_reducer.rs
│   │       │       │   ├── insert_one_i_64_reducer.rs
│   │       │       │   ├── insert_one_i_8_reducer.rs
│   │       │       │   ├── insert_one_identity_reducer.rs
│   │       │       │   ├── insert_one_simple_enum_reducer.rs
│   │       │       │   ├── insert_one_string_reducer.rs
│   │       │       │   ├── insert_one_timestamp_reducer.rs
│   │       │       │   ├── insert_one_u_128_reducer.rs
│   │       │       │   ├── insert_one_u_16_reducer.rs
│   │       │       │   ├── insert_one_u_256_reducer.rs
│   │       │       │   ├── insert_one_u_32_reducer.rs
│   │       │       │   ├── insert_one_u_64_reducer.rs
│   │       │       │   ├── insert_one_u_8_reducer.rs
│   │       │       │   ├── insert_one_unit_struct_reducer.rs
│   │       │       │   ├── insert_one_uuid_reducer.rs
│   │       │       │   ├── insert_option_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_option_i_32_reducer.rs
│   │       │       │   ├── insert_option_identity_reducer.rs
│   │       │       │   ├── insert_option_simple_enum_reducer.rs
│   │       │       │   ├── insert_option_string_reducer.rs
│   │       │       │   ├── insert_option_uuid_reducer.rs
│   │       │       │   ├── insert_option_vec_option_i_32_reducer.rs
│   │       │       │   ├── insert_pk_bool_reducer.rs
│   │       │       │   ├── insert_pk_connection_id_reducer.rs
│   │       │       │   ├── insert_pk_i_128_reducer.rs
│   │       │       │   ├── insert_pk_i_16_reducer.rs
│   │       │       │   ├── insert_pk_i_256_reducer.rs
│   │       │       │   ├── insert_pk_i_32_reducer.rs
│   │       │       │   ├── insert_pk_i_64_reducer.rs
│   │       │       │   ├── insert_pk_i_8_reducer.rs
│   │       │       │   ├── insert_pk_identity_reducer.rs
│   │       │       │   ├── insert_pk_simple_enum_reducer.rs
│   │       │       │   ├── insert_pk_string_reducer.rs
│   │       │       │   ├── insert_pk_u_128_reducer.rs
│   │       │       │   ├── insert_pk_u_16_reducer.rs
│   │       │       │   ├── insert_pk_u_256_reducer.rs
│   │       │       │   ├── insert_pk_u_32_reducer.rs
│   │       │       │   ├── insert_pk_u_32_two_reducer.rs
│   │       │       │   ├── insert_pk_u_64_reducer.rs
│   │       │       │   ├── insert_pk_u_8_reducer.rs
│   │       │       │   ├── insert_pk_uuid_reducer.rs
│   │       │       │   ├── insert_primitives_as_strings_reducer.rs
│   │       │       │   ├── insert_result_every_primitive_struct_string_reducer.rs
│   │       │       │   ├── insert_result_i_32_string_reducer.rs
│   │       │       │   ├── insert_result_identity_string_reducer.rs
│   │       │       │   ├── insert_result_simple_enum_i_32_reducer.rs
│   │       │       │   ├── insert_result_string_i_32_reducer.rs
│   │       │       │   ├── insert_result_vec_i_32_string_reducer.rs
│   │       │       │   ├── insert_table_holds_table_reducer.rs
│   │       │       │   ├── insert_unique_bool_reducer.rs
│   │       │       │   ├── insert_unique_connection_id_reducer.rs
│   │       │       │   ├── insert_unique_i_128_reducer.rs
│   │       │       │   ├── insert_unique_i_16_reducer.rs
│   │       │       │   ├── insert_unique_i_256_reducer.rs
│   │       │       │   ├── insert_unique_i_32_reducer.rs
│   │       │       │   ├── insert_unique_i_64_reducer.rs
│   │       │       │   ├── insert_unique_i_8_reducer.rs
│   │       │       │   ├── insert_unique_identity_reducer.rs
│   │       │       │   ├── insert_unique_string_reducer.rs
│   │       │       │   ├── insert_unique_u_128_reducer.rs
│   │       │       │   ├── insert_unique_u_16_reducer.rs
│   │       │       │   ├── insert_unique_u_256_reducer.rs
│   │       │       │   ├── insert_unique_u_32_reducer.rs
│   │       │       │   ├── insert_unique_u_32_update_pk_u_32_reducer.rs
│   │       │       │   ├── insert_unique_u_64_reducer.rs
│   │       │       │   ├── insert_unique_u_8_reducer.rs
│   │       │       │   ├── insert_unique_uuid_reducer.rs
│   │       │       │   ├── insert_user_reducer.rs
│   │       │       │   ├── insert_vec_bool_reducer.rs
│   │       │       │   ├── insert_vec_byte_struct_reducer.rs
│   │       │       │   ├── insert_vec_connection_id_reducer.rs
│   │       │       │   ├── insert_vec_enum_with_payload_reducer.rs
│   │       │       │   ├── insert_vec_every_primitive_struct_reducer.rs
│   │       │       │   ├── insert_vec_every_vec_struct_reducer.rs
│   │       │       │   ├── insert_vec_f_32_reducer.rs
│   │       │       │   ├── insert_vec_f_64_reducer.rs
│   │       │       │   ├── insert_vec_i_128_reducer.rs
│   │       │       │   ├── insert_vec_i_16_reducer.rs
│   │       │       │   ├── insert_vec_i_256_reducer.rs
│   │       │       │   ├── insert_vec_i_32_reducer.rs
│   │       │       │   ├── insert_vec_i_64_reducer.rs
│   │       │       │   ├── insert_vec_i_8_reducer.rs
│   │       │       │   ├── insert_vec_identity_reducer.rs
│   │       │       │   ├── insert_vec_simple_enum_reducer.rs
│   │       │       │   ├── insert_vec_string_reducer.rs
│   │       │       │   ├── insert_vec_timestamp_reducer.rs
│   │       │       │   ├── insert_vec_u_128_reducer.rs
│   │       │       │   ├── insert_vec_u_16_reducer.rs
│   │       │       │   ├── insert_vec_u_256_reducer.rs
│   │       │       │   ├── insert_vec_u_32_reducer.rs
│   │       │       │   ├── insert_vec_u_64_reducer.rs
│   │       │       │   ├── insert_vec_u_8_reducer.rs
│   │       │       │   ├── insert_vec_unit_struct_reducer.rs
│   │       │       │   ├── insert_vec_uuid_reducer.rs
│   │       │       │   ├── large_table_table.rs
│   │       │       │   ├── large_table_type.rs
│   │       │       │   ├── mod.rs
│   │       │       │   ├── no_op_succeeds_reducer.rs
│   │       │       │   ├── one_bool_table.rs
│   │       │       │   ├── one_bool_type.rs
│   │       │       │   ├── one_byte_struct_table.rs
│   │       │       │   ├── one_byte_struct_type.rs
│   │       │       │   ├── one_connection_id_table.rs
│   │       │       │   ├── one_connection_id_type.rs
│   │       │       │   ├── one_enum_with_payload_table.rs
│   │       │       │   ├── one_enum_with_payload_type.rs
│   │       │       │   ├── one_every_primitive_struct_table.rs
│   │       │       │   ├── one_every_primitive_struct_type.rs
│   │       │       │   ├── one_every_vec_struct_table.rs
│   │       │       │   ├── one_every_vec_struct_type.rs
│   │       │       │   ├── one_f_32_table.rs
│   │       │       │   ├── one_f_32_type.rs
│   │       │       │   ├── one_f_64_table.rs
│   │       │       │   ├── one_f_64_type.rs
│   │       │       │   ├── one_i_128_table.rs
│   │       │       │   ├── one_i_128_type.rs
│   │       │       │   ├── one_i_16_table.rs
│   │       │       │   ├── one_i_16_type.rs
│   │       │       │   ├── one_i_256_table.rs
│   │       │       │   ├── one_i_256_type.rs
│   │       │       │   ├── one_i_32_table.rs
│   │       │       │   ├── one_i_32_type.rs
│   │       │       │   ├── one_i_64_table.rs
│   │       │       │   ├── one_i_64_type.rs
│   │       │       │   ├── one_i_8_table.rs
│   │       │       │   ├── one_i_8_type.rs
│   │       │       │   ├── one_identity_table.rs
│   │       │       │   ├── one_identity_type.rs
│   │       │       │   ├── one_simple_enum_table.rs
│   │       │       │   ├── one_simple_enum_type.rs
│   │       │       │   ├── one_string_table.rs
│   │       │       │   ├── one_string_type.rs
│   │       │       │   ├── one_timestamp_table.rs
│   │       │       │   ├── one_timestamp_type.rs
│   │       │       │   ├── one_u_128_table.rs
│   │       │       │   ├── one_u_128_type.rs
│   │       │       │   ├── one_u_16_table.rs
│   │       │       │   ├── one_u_16_type.rs
│   │       │       │   ├── one_u_256_table.rs
│   │       │       │   ├── one_u_256_type.rs
│   │       │       │   ├── one_u_32_table.rs
│   │       │       │   ├── one_u_32_type.rs
│   │       │       │   ├── one_u_64_table.rs
│   │       │       │   ├── one_u_64_type.rs
│   │       │       │   ├── one_u_8_table.rs
│   │       │       │   ├── one_u_8_type.rs
│   │       │       │   ├── one_unit_struct_table.rs
│   │       │       │   ├── one_unit_struct_type.rs
│   │       │       │   ├── one_uuid_table.rs
│   │       │       │   ├── one_uuid_type.rs
│   │       │       │   ├── option_every_primitive_struct_table.rs
│   │       │       │   ├── option_every_primitive_struct_type.rs
│   │       │       │   ├── option_i_32_table.rs
│   │       │       │   ├── option_i_32_type.rs
│   │       │       │   ├── option_identity_table.rs
│   │       │       │   ├── option_identity_type.rs
│   │       │       │   ├── option_simple_enum_table.rs
│   │       │       │   ├── option_simple_enum_type.rs
│   │       │       │   ├── option_string_table.rs
│   │       │       │   ├── option_string_type.rs
│   │       │       │   ├── option_uuid_table.rs
│   │       │       │   ├── option_uuid_type.rs
│   │       │       │   ├── option_vec_option_i_32_table.rs
│   │       │       │   ├── option_vec_option_i_32_type.rs
│   │       │       │   ├── pk_bool_table.rs
│   │       │       │   ├── pk_bool_type.rs
│   │       │       │   ├── pk_connection_id_table.rs
│   │       │       │   ├── pk_connection_id_type.rs
│   │       │       │   ├── pk_i_128_table.rs
│   │       │       │   ├── pk_i_128_type.rs
│   │       │       │   ├── pk_i_16_table.rs
│   │       │       │   ├── pk_i_16_type.rs
│   │       │       │   ├── pk_i_256_table.rs
│   │       │       │   ├── pk_i_256_type.rs
│   │       │       │   ├── pk_i_32_table.rs
│   │       │       │   ├── pk_i_32_type.rs
│   │       │       │   ├── pk_i_64_table.rs
│   │       │       │   ├── pk_i_64_type.rs
│   │       │       │   ├── pk_i_8_table.rs
│   │       │       │   ├── pk_i_8_type.rs
│   │       │       │   ├── pk_identity_table.rs
│   │       │       │   ├── pk_identity_type.rs
│   │       │       │   ├── pk_simple_enum_table.rs
│   │       │       │   ├── pk_simple_enum_type.rs
│   │       │       │   ├── pk_string_table.rs
│   │       │       │   ├── pk_string_type.rs
│   │       │       │   ├── pk_u_128_table.rs
│   │       │       │   ├── pk_u_128_type.rs
│   │       │       │   ├── pk_u_16_table.rs
│   │       │       │   ├── pk_u_16_type.rs
│   │       │       │   ├── pk_u_256_table.rs
│   │       │       │   ├── pk_u_256_type.rs
│   │       │       │   ├── pk_u_32_table.rs
│   │       │       │   ├── pk_u_32_two_table.rs
│   │       │       │   ├── pk_u_32_two_type.rs
│   │       │       │   ├── pk_u_32_type.rs
│   │       │       │   ├── pk_u_64_table.rs
│   │       │       │   ├── pk_u_64_type.rs
│   │       │       │   ├── pk_u_8_table.rs
│   │       │       │   ├── pk_u_8_type.rs
│   │       │       │   ├── pk_uuid_table.rs
│   │       │       │   ├── pk_uuid_type.rs
│   │       │       │   ├── result_every_primitive_struct_string_table.rs
│   │       │       │   ├── result_every_primitive_struct_string_type.rs
│   │       │       │   ├── result_i_32_string_table.rs
│   │       │       │   ├── result_i_32_string_type.rs
│   │       │       │   ├── result_identity_string_table.rs
│   │       │       │   ├── result_identity_string_type.rs
│   │       │       │   ├── result_simple_enum_i_32_table.rs
│   │       │       │   ├── result_simple_enum_i_32_type.rs
│   │       │       │   ├── result_string_i_32_table.rs
│   │       │       │   ├── result_string_i_32_type.rs
│   │       │       │   ├── result_vec_i_32_string_table.rs
│   │       │       │   ├── result_vec_i_32_string_type.rs
│   │       │       │   ├── scheduled_table_table.rs
│   │       │       │   ├── scheduled_table_type.rs
│   │       │       │   ├── send_scheduled_message_reducer.rs
│   │       │       │   ├── simple_enum_type.rs
│   │       │       │   ├── sorted_uuids_insert_reducer.rs
│   │       │       │   ├── table_holds_table_table.rs
│   │       │       │   ├── table_holds_table_type.rs
│   │       │       │   ├── unique_bool_table.rs
│   │       │       │   ├── unique_bool_type.rs
│   │       │       │   ├── unique_connection_id_table.rs
│   │       │       │   ├── unique_connection_id_type.rs
│   │       │       │   ├── unique_i_128_table.rs
│   │       │       │   ├── unique_i_128_type.rs
│   │       │       │   ├── unique_i_16_table.rs
│   │       │       │   ├── unique_i_16_type.rs
│   │       │       │   ├── unique_i_256_table.rs
│   │       │       │   ├── unique_i_256_type.rs
│   │       │       │   ├── unique_i_32_table.rs
│   │       │       │   ├── unique_i_32_type.rs
│   │       │       │   ├── unique_i_64_table.rs
│   │       │       │   ├── unique_i_64_type.rs
│   │       │       │   ├── unique_i_8_table.rs
│   │       │       │   ├── unique_i_8_type.rs
│   │       │       │   ├── unique_identity_table.rs
│   │       │       │   ├── unique_identity_type.rs
│   │       │       │   ├── unique_string_table.rs
│   │       │       │   ├── unique_string_type.rs
│   │       │       │   ├── unique_u_128_table.rs
│   │       │       │   ├── unique_u_128_type.rs
│   │       │       │   ├── unique_u_16_table.rs
│   │       │       │   ├── unique_u_16_type.rs
│   │       │       │   ├── unique_u_256_table.rs
│   │       │       │   ├── unique_u_256_type.rs
│   │       │       │   ├── unique_u_32_table.rs
│   │       │       │   ├── unique_u_32_type.rs
│   │       │       │   ├── unique_u_64_table.rs
│   │       │       │   ├── unique_u_64_type.rs
│   │       │       │   ├── unique_u_8_table.rs
│   │       │       │   ├── unique_u_8_type.rs
│   │       │       │   ├── unique_uuid_table.rs
│   │       │       │   ├── unique_uuid_type.rs
│   │       │       │   ├── unit_struct_type.rs
│   │       │       │   ├── update_indexed_simple_enum_reducer.rs
│   │       │       │   ├── update_pk_bool_reducer.rs
│   │       │       │   ├── update_pk_connection_id_reducer.rs
│   │       │       │   ├── update_pk_i_128_reducer.rs
│   │       │       │   ├── update_pk_i_16_reducer.rs
│   │       │       │   ├── update_pk_i_256_reducer.rs
│   │       │       │   ├── update_pk_i_32_reducer.rs
│   │       │       │   ├── update_pk_i_64_reducer.rs
│   │       │       │   ├── update_pk_i_8_reducer.rs
│   │       │       │   ├── update_pk_identity_reducer.rs
│   │       │       │   ├── update_pk_simple_enum_reducer.rs
│   │       │       │   ├── update_pk_string_reducer.rs
│   │       │       │   ├── update_pk_u_128_reducer.rs
│   │       │       │   ├── update_pk_u_16_reducer.rs
│   │       │       │   ├── update_pk_u_256_reducer.rs
│   │       │       │   ├── update_pk_u_32_reducer.rs
│   │       │       │   ├── update_pk_u_32_two_reducer.rs
│   │       │       │   ├── update_pk_u_64_reducer.rs
│   │       │       │   ├── update_pk_u_8_reducer.rs
│   │       │       │   ├── update_pk_uuid_reducer.rs
│   │       │       │   ├── update_unique_bool_reducer.rs
│   │       │       │   ├── update_unique_connection_id_reducer.rs
│   │       │       │   ├── update_unique_i_128_reducer.rs
│   │       │       │   ├── update_unique_i_16_reducer.rs
│   │       │       │   ├── update_unique_i_256_reducer.rs
│   │       │       │   ├── update_unique_i_32_reducer.rs
│   │       │       │   ├── update_unique_i_64_reducer.rs
│   │       │       │   ├── update_unique_i_8_reducer.rs
│   │       │       │   ├── update_unique_identity_reducer.rs
│   │       │       │   ├── update_unique_string_reducer.rs
│   │       │       │   ├── update_unique_u_128_reducer.rs
│   │       │       │   ├── update_unique_u_16_reducer.rs
│   │       │       │   ├── update_unique_u_256_reducer.rs
│   │       │       │   ├── update_unique_u_32_reducer.rs
│   │       │       │   ├── update_unique_u_64_reducer.rs
│   │       │       │   ├── update_unique_u_8_reducer.rs
│   │       │       │   ├── update_unique_uuid_reducer.rs
│   │       │       │   ├── users_table.rs
│   │       │       │   ├── users_type.rs
│   │       │       │   ├── vec_bool_table.rs
│   │       │       │   ├── vec_bool_type.rs
│   │       │       │   ├── vec_byte_struct_table.rs
│   │       │       │   ├── vec_byte_struct_type.rs
│   │       │       │   ├── vec_connection_id_table.rs
│   │       │       │   ├── vec_connection_id_type.rs
│   │       │       │   ├── vec_enum_with_payload_table.rs
│   │       │       │   ├── vec_enum_with_payload_type.rs
│   │       │       │   ├── vec_every_primitive_struct_table.rs
│   │       │       │   ├── vec_every_primitive_struct_type.rs
│   │       │       │   ├── vec_every_vec_struct_table.rs
│   │       │       │   ├── vec_every_vec_struct_type.rs
│   │       │       │   ├── vec_f_32_table.rs
│   │       │       │   ├── vec_f_32_type.rs
│   │       │       │   ├── vec_f_64_table.rs
│   │       │       │   ├── vec_f_64_type.rs
│   │       │       │   ├── vec_i_128_table.rs
│   │       │       │   ├── vec_i_128_type.rs
│   │       │       │   ├── vec_i_16_table.rs
│   │       │       │   ├── vec_i_16_type.rs
│   │       │       │   ├── vec_i_256_table.rs
│   │       │       │   ├── vec_i_256_type.rs
│   │       │       │   ├── vec_i_32_table.rs
│   │       │       │   ├── vec_i_32_type.rs
│   │       │       │   ├── vec_i_64_table.rs
│   │       │       │   ├── vec_i_64_type.rs
│   │       │       │   ├── vec_i_8_table.rs
│   │       │       │   ├── vec_i_8_type.rs
│   │       │       │   ├── vec_identity_table.rs
│   │       │       │   ├── vec_identity_type.rs
│   │       │       │   ├── vec_simple_enum_table.rs
│   │       │       │   ├── vec_simple_enum_type.rs
│   │       │       │   ├── vec_string_table.rs
│   │       │       │   ├── vec_string_type.rs
│   │       │       │   ├── vec_timestamp_table.rs
│   │       │       │   ├── vec_timestamp_type.rs
│   │       │       │   ├── vec_u_128_table.rs
│   │       │       │   ├── vec_u_128_type.rs
│   │       │       │   ├── vec_u_16_table.rs
│   │       │       │   ├── vec_u_16_type.rs
│   │       │       │   ├── vec_u_256_table.rs
│   │       │       │   ├── vec_u_256_type.rs
│   │       │       │   ├── vec_u_32_table.rs
│   │       │       │   ├── vec_u_32_type.rs
│   │       │       │   ├── vec_u_64_table.rs
│   │       │       │   ├── vec_u_64_type.rs
│   │       │       │   ├── vec_u_8_table.rs
│   │       │       │   ├── vec_u_8_type.rs
│   │       │       │   ├── vec_unit_struct_table.rs
│   │       │       │   ├── vec_unit_struct_type.rs
│   │       │       │   ├── vec_uuid_table.rs
│   │       │       │   └── vec_uuid_type.rs
│   │       │       ├── pk_test_table.rs
│   │       │       ├── simple_test_table.rs
│   │       │       └── unique_test_table.rs
│   │       ├── test-counter/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       └── lib.rs
│   │       ├── test.rs
│   │       ├── view-client/
│   │       │   ├── Cargo.toml
│   │       │   ├── README.md
│   │       │   └── src/
│   │       │       ├── main.rs
│   │       │       └── module_bindings/
│   │       │           ├── delete_player_reducer.rs
│   │       │           ├── insert_player_reducer.rs
│   │       │           ├── mod.rs
│   │       │           ├── move_player_reducer.rs
│   │       │           ├── my_player_and_level_table.rs
│   │       │           ├── my_player_table.rs
│   │       │           ├── nearby_players_table.rs
│   │       │           ├── player_and_level_type.rs
│   │       │           ├── player_level_table.rs
│   │       │           ├── player_level_type.rs
│   │       │           ├── player_location_table.rs
│   │       │           ├── player_location_type.rs
│   │       │           ├── player_table.rs
│   │       │           ├── player_type.rs
│   │       │           └── players_at_level_0_table.rs
│   │       └── view-pk-client/
│   │           ├── Cargo.toml
│   │           ├── README.md
│   │           └── src/
│   │               ├── main.rs
│   │               └── module_bindings/
│   │                   ├── all_view_pk_players_table.rs
│   │                   ├── insert_view_pk_membership_reducer.rs
│   │                   ├── insert_view_pk_membership_secondary_reducer.rs
│   │                   ├── insert_view_pk_player_reducer.rs
│   │                   ├── mod.rs
│   │                   ├── sender_view_pk_players_a_table.rs
│   │                   ├── sender_view_pk_players_b_table.rs
│   │                   ├── update_view_pk_player_reducer.rs
│   │                   ├── view_pk_membership_secondary_table.rs
│   │                   ├── view_pk_membership_secondary_type.rs
│   │                   ├── view_pk_membership_table.rs
│   │                   ├── view_pk_membership_type.rs
│   │                   ├── view_pk_player_table.rs
│   │                   └── view_pk_player_type.rs
│   └── unreal/
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── DEVELOP.md
│       ├── README.md
│       ├── examples/
│       │   ├── QuickstartChat/
│       │   │   ├── .vsconfig
│       │   │   ├── Config/
│       │   │   │   ├── DefaultEditor.ini
│       │   │   │   ├── DefaultEngine.ini
│       │   │   │   ├── DefaultGame.ini
│       │   │   │   └── DefaultInput.ini
│       │   │   ├── Content/
│       │   │   │   └── BP/
│       │   │   │       ├── BP_ChatClientActor.uasset
│       │   │   │       └── BP_ConnectionTestBP.uasset
│       │   │   ├── QuickstartChat.uproject
│       │   │   └── Source/
│       │   │       ├── QuickstartChat/
│       │   │       │   ├── Private/
│       │   │       │   │   ├── ChatClientActor.cpp
│       │   │       │   │   ├── ModuleBindings/
│       │   │       │   │   │   ├── SpacetimeDBClient.g.cpp
│       │   │       │   │   │   └── Tables/
│       │   │       │   │   │       ├── MessageTable.g.cpp
│       │   │       │   │   │       └── UserTable.g.cpp
│       │   │       │   │   └── QuickstartChat.cpp
│       │   │       │   ├── Public/
│       │   │       │   │   ├── ChatClientActor.h
│       │   │       │   │   ├── ModuleBindings/
│       │   │       │   │   │   ├── Optionals/
│       │   │       │   │   │   │   └── QuickstartChatOptionalString.g.h
│       │   │       │   │   │   ├── ReducerBase.g.h
│       │   │       │   │   │   ├── Reducers/
│       │   │       │   │   │   │   ├── SendMessage.g.h
│       │   │       │   │   │   │   └── SetName.g.h
│       │   │       │   │   │   ├── SpacetimeDBClient.g.h
│       │   │       │   │   │   ├── Tables/
│       │   │       │   │   │   │   ├── MessageTable.g.h
│       │   │       │   │   │   │   └── UserTable.g.h
│       │   │       │   │   │   └── Types/
│       │   │       │   │   │       ├── MessageType.g.h
│       │   │       │   │   │       └── UserType.g.h
│       │   │       │   │   └── QuickstartChat.h
│       │   │       │   └── QuickstartChat.Build.cs
│       │   │       ├── QuickstartChat.Target.cs
│       │   │       └── QuickstartChatEditor.Target.cs
│       │   └── README.md
│       ├── src/
│       │   ├── SpacetimeDbSdk/
│       │   │   ├── Source/
│       │   │   │   └── SpacetimeDbSdk/
│       │   │   │       ├── Private/
│       │   │   │       │   ├── Connection/
│       │   │   │       │   │   ├── Callback.cpp
│       │   │   │       │   │   ├── Credentials.cpp
│       │   │   │       │   │   ├── DbConnectionBase.cpp
│       │   │   │       │   │   ├── DbConnectionBuilder.cpp
│       │   │   │       │   │   ├── LogCategory.cpp
│       │   │   │       │   │   ├── Subscription.cpp
│       │   │   │       │   │   └── Websocket.cpp
│       │   │   │       │   ├── SpacetimeDbSdk.cpp
│       │   │   │       │   └── Tests/
│       │   │   │       │       └── SpacetimeDBBSATNTestOrg.cpp
│       │   │   │       ├── Public/
│       │   │   │       │   ├── BSATN/
│       │   │   │       │   │   ├── Core/
│       │   │   │       │   │   │   ├── DEVELOP.md
│       │   │   │       │   │   │   ├── README.md
│       │   │   │       │   │   │   ├── algebraic_type.h
│       │   │   │       │   │   │   ├── bsatn.h
│       │   │   │       │   │   │   ├── monostate_traits.h
│       │   │   │       │   │   │   ├── primitive_traits.h
│       │   │   │       │   │   │   ├── reader.h
│       │   │   │       │   │   │   ├── schedule_at.h
│       │   │   │       │   │   │   ├── schedule_at_impl.h
│       │   │   │       │   │   │   ├── serialization.h
│       │   │   │       │   │   │   ├── size_calculator.h
│       │   │   │       │   │   │   ├── sum_type.h
│       │   │   │       │   │   │   ├── time_duration.h
│       │   │   │       │   │   │   ├── timestamp.h
│       │   │   │       │   │   │   ├── traits.h
│       │   │   │       │   │   │   ├── type_extensions.h
│       │   │   │       │   │   │   ├── types.h
│       │   │   │       │   │   │   ├── types_impl.h
│       │   │   │       │   │   │   └── writer.h
│       │   │   │       │   │   ├── FEATURES.md
│       │   │   │       │   │   ├── MockCoreMinimal.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── UEBSATNHelpers.h
│       │   │   │       │   │   ├── UESpacetimeDB.h
│       │   │   │       │   │   └── UNREAL_BSATN_ADDITIONS.md
│       │   │   │       │   ├── Connection/
│       │   │   │       │   │   ├── Callback.h
│       │   │   │       │   │   ├── Credentials.h
│       │   │   │       │   │   ├── DbConnectionBase.h
│       │   │   │       │   │   ├── DbConnectionBuilder.h
│       │   │   │       │   │   ├── LogCategory.h
│       │   │   │       │   │   ├── ProcedureFlags.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── Subscription.h
│       │   │   │       │   │   └── Websocket.h
│       │   │   │       │   ├── DBCache/
│       │   │   │       │   │   ├── BTreeUniqueIndex.h
│       │   │   │       │   │   ├── ClientCache.h
│       │   │   │       │   │   ├── IUniqueIndex.h
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   ├── RowEntry.h
│       │   │   │       │   │   ├── TableAppliedDiff.h
│       │   │   │       │   │   ├── TableCache.h
│       │   │   │       │   │   ├── TableHandle.h
│       │   │   │       │   │   ├── UniqueConstraintHandle.h
│       │   │   │       │   │   ├── UniqueIndex.h
│       │   │   │       │   │   └── WithBsatn.h
│       │   │   │       │   ├── ModuleBindings/
│       │   │   │       │   │   ├── Optionals/
│       │   │   │       │   │   │   ├── SpacetimeDbSdkOptionalQueryRows.g.h
│       │   │   │       │   │   │   └── SpacetimeDbSdkOptionalUInt32.g.h
│       │   │   │       │   │   ├── Results/
│       │   │   │       │   │   │   └── SpacetimeDbSdkResultQueryRowsString.g.h
│       │   │   │       │   │   └── Types/
│       │   │   │       │   │       ├── BsatnRowListType.g.h
│       │   │   │       │   │       ├── CallProcedureType.g.h
│       │   │   │       │   │       ├── CallReducerType.g.h
│       │   │   │       │   │       ├── ClientMessageType.g.h
│       │   │   │       │   │       ├── EventTableRowsType.g.h
│       │   │   │       │   │       ├── InitialConnectionType.g.h
│       │   │   │       │   │       ├── OneOffQueryResultType.g.h
│       │   │   │       │   │       ├── OneOffQueryType.g.h
│       │   │   │       │   │       ├── PersistentTableRowsType.g.h
│       │   │   │       │   │       ├── ProcedureResultType.g.h
│       │   │   │       │   │       ├── ProcedureStatusType.g.h
│       │   │   │       │   │       ├── QueryRowsType.g.h
│       │   │   │       │   │       ├── QuerySetIdType.g.h
│       │   │   │       │   │       ├── QuerySetUpdateType.g.h
│       │   │   │       │   │       ├── ReducerOkType.g.h
│       │   │   │       │   │       ├── ReducerOutcomeType.g.h
│       │   │   │       │   │       ├── ReducerResultType.g.h
│       │   │   │       │   │       ├── RowSizeHintType.g.h
│       │   │   │       │   │       ├── ServerMessageType.g.h
│       │   │   │       │   │       ├── SingleTableRowsType.g.h
│       │   │   │       │   │       ├── SubscribeAppliedType.g.h
│       │   │   │       │   │       ├── SubscribeType.g.h
│       │   │   │       │   │       ├── SubscriptionErrorType.g.h
│       │   │   │       │   │       ├── TableUpdateRowsType.g.h
│       │   │   │       │   │       ├── TableUpdateType.g.h
│       │   │   │       │   │       ├── TransactionUpdateType.g.h
│       │   │   │       │   │       ├── UnsubscribeAppliedType.g.h
│       │   │   │       │   │       ├── UnsubscribeFlagsType.g.h
│       │   │   │       │   │       └── UnsubscribeType.g.h
│       │   │   │       │   ├── SpacetimeDbSdk.h
│       │   │   │       │   ├── Tables/
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   └── RemoteTable.h
│       │   │   │       │   ├── Tests/
│       │   │   │       │   │   ├── README.md
│       │   │   │       │   │   └── SpacetimeDBBSATNTestOrg.h
│       │   │   │       │   └── Types/
│       │   │   │       │       ├── Builtins.h
│       │   │   │       │       ├── LargeIntegers.h
│       │   │   │       │       ├── README.md
│       │   │   │       │       └── UnitType.h
│       │   │   │       └── SpacetimeDbSdk.Build.cs
│       │   │   └── SpacetimeDbSdk.uplugin
│       │   └── lib.rs
│       └── tests/
│           ├── README.md
│           ├── TestClient/
│           │   ├── .vsconfig
│           │   ├── Config/
│           │   │   ├── DefaultEditor.ini
│           │   │   ├── DefaultEditorPerProjectUserSettings.ini
│           │   │   ├── DefaultEngine.ini
│           │   │   ├── DefaultGame.ini
│           │   │   └── DefaultInput.ini
│           │   ├── Source/
│           │   │   ├── TestClient/
│           │   │   │   ├── Private/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│           │   │   │   │   │   └── Tables/
│           │   │   │   │   │       ├── BtreeU32Table.g.cpp
│           │   │   │   │   │       ├── IndexedSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── LargeTableTable.g.cpp
│           │   │   │   │   │       ├── OneBoolTable.g.cpp
│           │   │   │   │   │       ├── OneByteStructTable.g.cpp
│           │   │   │   │   │       ├── OneConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── OneEnumWithPayloadTable.g.cpp
│           │   │   │   │   │       ├── OneEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── OneEveryVecStructTable.g.cpp
│           │   │   │   │   │       ├── OneF32Table.g.cpp
│           │   │   │   │   │       ├── OneF64Table.g.cpp
│           │   │   │   │   │       ├── OneI128Table.g.cpp
│           │   │   │   │   │       ├── OneI16Table.g.cpp
│           │   │   │   │   │       ├── OneI256Table.g.cpp
│           │   │   │   │   │       ├── OneI32Table.g.cpp
│           │   │   │   │   │       ├── OneI64Table.g.cpp
│           │   │   │   │   │       ├── OneI8Table.g.cpp
│           │   │   │   │   │       ├── OneIdentityTable.g.cpp
│           │   │   │   │   │       ├── OneSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── OneStringTable.g.cpp
│           │   │   │   │   │       ├── OneTimestampTable.g.cpp
│           │   │   │   │   │       ├── OneU128Table.g.cpp
│           │   │   │   │   │       ├── OneU16Table.g.cpp
│           │   │   │   │   │       ├── OneU256Table.g.cpp
│           │   │   │   │   │       ├── OneU32Table.g.cpp
│           │   │   │   │   │       ├── OneU64Table.g.cpp
│           │   │   │   │   │       ├── OneU8Table.g.cpp
│           │   │   │   │   │       ├── OneUnitStructTable.g.cpp
│           │   │   │   │   │       ├── OneUuidTable.g.cpp
│           │   │   │   │   │       ├── OptionEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── OptionI32Table.g.cpp
│           │   │   │   │   │       ├── OptionIdentityTable.g.cpp
│           │   │   │   │   │       ├── OptionSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── OptionStringTable.g.cpp
│           │   │   │   │   │       ├── OptionUuidTable.g.cpp
│           │   │   │   │   │       ├── OptionVecOptionI32Table.g.cpp
│           │   │   │   │   │       ├── PkBoolTable.g.cpp
│           │   │   │   │   │       ├── PkConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── PkI128Table.g.cpp
│           │   │   │   │   │       ├── PkI16Table.g.cpp
│           │   │   │   │   │       ├── PkI256Table.g.cpp
│           │   │   │   │   │       ├── PkI32Table.g.cpp
│           │   │   │   │   │       ├── PkI64Table.g.cpp
│           │   │   │   │   │       ├── PkI8Table.g.cpp
│           │   │   │   │   │       ├── PkIdentityTable.g.cpp
│           │   │   │   │   │       ├── PkSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── PkStringTable.g.cpp
│           │   │   │   │   │       ├── PkU128Table.g.cpp
│           │   │   │   │   │       ├── PkU16Table.g.cpp
│           │   │   │   │   │       ├── PkU256Table.g.cpp
│           │   │   │   │   │       ├── PkU32Table.g.cpp
│           │   │   │   │   │       ├── PkU32TwoTable.g.cpp
│           │   │   │   │   │       ├── PkU64Table.g.cpp
│           │   │   │   │   │       ├── PkU8Table.g.cpp
│           │   │   │   │   │       ├── PkUuidTable.g.cpp
│           │   │   │   │   │       ├── ResultEveryPrimitiveStructStringTable.g.cpp
│           │   │   │   │   │       ├── ResultI32StringTable.g.cpp
│           │   │   │   │   │       ├── ResultIdentityStringTable.g.cpp
│           │   │   │   │   │       ├── ResultSimpleEnumI32Table.g.cpp
│           │   │   │   │   │       ├── ResultStringI32Table.g.cpp
│           │   │   │   │   │       ├── ResultVecI32StringTable.g.cpp
│           │   │   │   │   │       ├── ScheduledTableTable.g.cpp
│           │   │   │   │   │       ├── TableHoldsTableTable.g.cpp
│           │   │   │   │   │       ├── UniqueBoolTable.g.cpp
│           │   │   │   │   │       ├── UniqueConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── UniqueI128Table.g.cpp
│           │   │   │   │   │       ├── UniqueI16Table.g.cpp
│           │   │   │   │   │       ├── UniqueI256Table.g.cpp
│           │   │   │   │   │       ├── UniqueI32Table.g.cpp
│           │   │   │   │   │       ├── UniqueI64Table.g.cpp
│           │   │   │   │   │       ├── UniqueI8Table.g.cpp
│           │   │   │   │   │       ├── UniqueIdentityTable.g.cpp
│           │   │   │   │   │       ├── UniqueStringTable.g.cpp
│           │   │   │   │   │       ├── UniqueU128Table.g.cpp
│           │   │   │   │   │       ├── UniqueU16Table.g.cpp
│           │   │   │   │   │       ├── UniqueU256Table.g.cpp
│           │   │   │   │   │       ├── UniqueU32Table.g.cpp
│           │   │   │   │   │       ├── UniqueU64Table.g.cpp
│           │   │   │   │   │       ├── UniqueU8Table.g.cpp
│           │   │   │   │   │       ├── UniqueUuidTable.g.cpp
│           │   │   │   │   │       ├── UsersTable.g.cpp
│           │   │   │   │   │       ├── VecBoolTable.g.cpp
│           │   │   │   │   │       ├── VecByteStructTable.g.cpp
│           │   │   │   │   │       ├── VecConnectionIdTable.g.cpp
│           │   │   │   │   │       ├── VecEnumWithPayloadTable.g.cpp
│           │   │   │   │   │       ├── VecEveryPrimitiveStructTable.g.cpp
│           │   │   │   │   │       ├── VecEveryVecStructTable.g.cpp
│           │   │   │   │   │       ├── VecF32Table.g.cpp
│           │   │   │   │   │       ├── VecF64Table.g.cpp
│           │   │   │   │   │       ├── VecI128Table.g.cpp
│           │   │   │   │   │       ├── VecI16Table.g.cpp
│           │   │   │   │   │       ├── VecI256Table.g.cpp
│           │   │   │   │   │       ├── VecI32Table.g.cpp
│           │   │   │   │   │       ├── VecI64Table.g.cpp
│           │   │   │   │   │       ├── VecI8Table.g.cpp
│           │   │   │   │   │       ├── VecIdentityTable.g.cpp
│           │   │   │   │   │       ├── VecSimpleEnumTable.g.cpp
│           │   │   │   │   │       ├── VecStringTable.g.cpp
│           │   │   │   │   │       ├── VecTimestampTable.g.cpp
│           │   │   │   │   │       ├── VecU128Table.g.cpp
│           │   │   │   │   │       ├── VecU16Table.g.cpp
│           │   │   │   │   │       ├── VecU256Table.g.cpp
│           │   │   │   │   │       ├── VecU32Table.g.cpp
│           │   │   │   │   │       ├── VecU64Table.g.cpp
│           │   │   │   │   │       ├── VecU8Table.g.cpp
│           │   │   │   │   │       ├── VecUnitStructTable.g.cpp
│           │   │   │   │   │       └── VecUuidTable.g.cpp
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.cpp
│           │   │   │   │       ├── SpacetimeFullClientTests.cpp
│           │   │   │   │       ├── TestCounter.cpp
│           │   │   │   │       └── TestHandler.cpp
│           │   │   │   ├── Public/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── Optionals/
│           │   │   │   │   │   │   ├── TestClientOptionalEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalIdentity.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalInt32.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalSimpleEnum.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalString.g.h
│           │   │   │   │   │   │   ├── TestClientOptionalUuid.g.h
│           │   │   │   │   │   │   └── TestClientOptionalVecOptionalInt32.g.h
│           │   │   │   │   │   ├── ReducerBase.g.h
│           │   │   │   │   │   ├── Reducers/
│           │   │   │   │   │   │   ├── DeleteFromBtreeU32.g.h
│           │   │   │   │   │   │   ├── DeleteLargeTable.g.h
│           │   │   │   │   │   │   ├── DeletePkBool.g.h
│           │   │   │   │   │   │   ├── DeletePkConnectionId.g.h
│           │   │   │   │   │   │   ├── DeletePkI128.g.h
│           │   │   │   │   │   │   ├── DeletePkI16.g.h
│           │   │   │   │   │   │   ├── DeletePkI256.g.h
│           │   │   │   │   │   │   ├── DeletePkI32.g.h
│           │   │   │   │   │   │   ├── DeletePkI64.g.h
│           │   │   │   │   │   │   ├── DeletePkI8.g.h
│           │   │   │   │   │   │   ├── DeletePkIdentity.g.h
│           │   │   │   │   │   │   ├── DeletePkString.g.h
│           │   │   │   │   │   │   ├── DeletePkU128.g.h
│           │   │   │   │   │   │   ├── DeletePkU16.g.h
│           │   │   │   │   │   │   ├── DeletePkU256.g.h
│           │   │   │   │   │   │   ├── DeletePkU32.g.h
│           │   │   │   │   │   │   ├── DeletePkU32InsertPkU32Two.g.h
│           │   │   │   │   │   │   ├── DeletePkU32Two.g.h
│           │   │   │   │   │   │   ├── DeletePkU64.g.h
│           │   │   │   │   │   │   ├── DeletePkU8.g.h
│           │   │   │   │   │   │   ├── DeletePkUuid.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueBool.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI128.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI16.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI256.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI32.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI64.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueI8.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueString.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU128.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU16.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU256.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU32.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU64.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueU8.g.h
│           │   │   │   │   │   │   ├── DeleteUniqueUuid.g.h
│           │   │   │   │   │   │   ├── InsertCallTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertCallUuidV4.g.h
│           │   │   │   │   │   │   ├── InsertCallUuidV7.g.h
│           │   │   │   │   │   │   ├── InsertCallerOneConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerOneIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerPkConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerPkIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── InsertCallerVecConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertCallerVecIdentity.g.h
│           │   │   │   │   │   │   ├── InsertIntoBtreeU32.g.h
│           │   │   │   │   │   │   ├── InsertIntoIndexedSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertIntoPkBtreeU32.g.h
│           │   │   │   │   │   │   ├── InsertLargeTable.g.h
│           │   │   │   │   │   │   ├── InsertOneBool.g.h
│           │   │   │   │   │   │   ├── InsertOneByteStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertOneEnumWithPayload.g.h
│           │   │   │   │   │   │   ├── InsertOneEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneEveryVecStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneF32.g.h
│           │   │   │   │   │   │   ├── InsertOneF64.g.h
│           │   │   │   │   │   │   ├── InsertOneI128.g.h
│           │   │   │   │   │   │   ├── InsertOneI16.g.h
│           │   │   │   │   │   │   ├── InsertOneI256.g.h
│           │   │   │   │   │   │   ├── InsertOneI32.g.h
│           │   │   │   │   │   │   ├── InsertOneI64.g.h
│           │   │   │   │   │   │   ├── InsertOneI8.g.h
│           │   │   │   │   │   │   ├── InsertOneIdentity.g.h
│           │   │   │   │   │   │   ├── InsertOneSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertOneString.g.h
│           │   │   │   │   │   │   ├── InsertOneTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertOneU128.g.h
│           │   │   │   │   │   │   ├── InsertOneU16.g.h
│           │   │   │   │   │   │   ├── InsertOneU256.g.h
│           │   │   │   │   │   │   ├── InsertOneU32.g.h
│           │   │   │   │   │   │   ├── InsertOneU64.g.h
│           │   │   │   │   │   │   ├── InsertOneU8.g.h
│           │   │   │   │   │   │   ├── InsertOneUnitStruct.g.h
│           │   │   │   │   │   │   ├── InsertOneUuid.g.h
│           │   │   │   │   │   │   ├── InsertOptionEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertOptionI32.g.h
│           │   │   │   │   │   │   ├── InsertOptionIdentity.g.h
│           │   │   │   │   │   │   ├── InsertOptionSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertOptionString.g.h
│           │   │   │   │   │   │   ├── InsertOptionUuid.g.h
│           │   │   │   │   │   │   ├── InsertOptionVecOptionI32.g.h
│           │   │   │   │   │   │   ├── InsertPkBool.g.h
│           │   │   │   │   │   │   ├── InsertPkConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertPkI128.g.h
│           │   │   │   │   │   │   ├── InsertPkI16.g.h
│           │   │   │   │   │   │   ├── InsertPkI256.g.h
│           │   │   │   │   │   │   ├── InsertPkI32.g.h
│           │   │   │   │   │   │   ├── InsertPkI64.g.h
│           │   │   │   │   │   │   ├── InsertPkI8.g.h
│           │   │   │   │   │   │   ├── InsertPkIdentity.g.h
│           │   │   │   │   │   │   ├── InsertPkSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertPkString.g.h
│           │   │   │   │   │   │   ├── InsertPkU128.g.h
│           │   │   │   │   │   │   ├── InsertPkU16.g.h
│           │   │   │   │   │   │   ├── InsertPkU256.g.h
│           │   │   │   │   │   │   ├── InsertPkU32.g.h
│           │   │   │   │   │   │   ├── InsertPkU32Two.g.h
│           │   │   │   │   │   │   ├── InsertPkU64.g.h
│           │   │   │   │   │   │   ├── InsertPkU8.g.h
│           │   │   │   │   │   │   ├── InsertPkUuid.g.h
│           │   │   │   │   │   │   ├── InsertPrimitivesAsStrings.g.h
│           │   │   │   │   │   │   ├── InsertResultEveryPrimitiveStructString.g.h
│           │   │   │   │   │   │   ├── InsertResultI32String.g.h
│           │   │   │   │   │   │   ├── InsertResultIdentityString.g.h
│           │   │   │   │   │   │   ├── InsertResultSimpleEnumI32.g.h
│           │   │   │   │   │   │   ├── InsertResultStringI32.g.h
│           │   │   │   │   │   │   ├── InsertResultVecI32String.g.h
│           │   │   │   │   │   │   ├── InsertTableHoldsTable.g.h
│           │   │   │   │   │   │   ├── InsertUniqueBool.g.h
│           │   │   │   │   │   │   ├── InsertUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI128.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI16.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI256.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI64.g.h
│           │   │   │   │   │   │   ├── InsertUniqueI8.g.h
│           │   │   │   │   │   │   ├── InsertUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── InsertUniqueString.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU128.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU16.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU256.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU32UpdatePkU32.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU64.g.h
│           │   │   │   │   │   │   ├── InsertUniqueU8.g.h
│           │   │   │   │   │   │   ├── InsertUniqueUuid.g.h
│           │   │   │   │   │   │   ├── InsertUser.g.h
│           │   │   │   │   │   │   ├── InsertVecBool.g.h
│           │   │   │   │   │   │   ├── InsertVecByteStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecConnectionId.g.h
│           │   │   │   │   │   │   ├── InsertVecEnumWithPayload.g.h
│           │   │   │   │   │   │   ├── InsertVecEveryPrimitiveStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecEveryVecStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecF32.g.h
│           │   │   │   │   │   │   ├── InsertVecF64.g.h
│           │   │   │   │   │   │   ├── InsertVecI128.g.h
│           │   │   │   │   │   │   ├── InsertVecI16.g.h
│           │   │   │   │   │   │   ├── InsertVecI256.g.h
│           │   │   │   │   │   │   ├── InsertVecI32.g.h
│           │   │   │   │   │   │   ├── InsertVecI64.g.h
│           │   │   │   │   │   │   ├── InsertVecI8.g.h
│           │   │   │   │   │   │   ├── InsertVecIdentity.g.h
│           │   │   │   │   │   │   ├── InsertVecSimpleEnum.g.h
│           │   │   │   │   │   │   ├── InsertVecString.g.h
│           │   │   │   │   │   │   ├── InsertVecTimestamp.g.h
│           │   │   │   │   │   │   ├── InsertVecU128.g.h
│           │   │   │   │   │   │   ├── InsertVecU16.g.h
│           │   │   │   │   │   │   ├── InsertVecU256.g.h
│           │   │   │   │   │   │   ├── InsertVecU32.g.h
│           │   │   │   │   │   │   ├── InsertVecU64.g.h
│           │   │   │   │   │   │   ├── InsertVecU8.g.h
│           │   │   │   │   │   │   ├── InsertVecUnitStruct.g.h
│           │   │   │   │   │   │   ├── InsertVecUuid.g.h
│           │   │   │   │   │   │   ├── NoOpSucceeds.g.h
│           │   │   │   │   │   │   ├── SortedUuidsInsert.g.h
│           │   │   │   │   │   │   ├── UpdateIndexedSimpleEnum.g.h
│           │   │   │   │   │   │   ├── UpdatePkBool.g.h
│           │   │   │   │   │   │   ├── UpdatePkConnectionId.g.h
│           │   │   │   │   │   │   ├── UpdatePkI128.g.h
│           │   │   │   │   │   │   ├── UpdatePkI16.g.h
│           │   │   │   │   │   │   ├── UpdatePkI256.g.h
│           │   │   │   │   │   │   ├── UpdatePkI32.g.h
│           │   │   │   │   │   │   ├── UpdatePkI64.g.h
│           │   │   │   │   │   │   ├── UpdatePkI8.g.h
│           │   │   │   │   │   │   ├── UpdatePkIdentity.g.h
│           │   │   │   │   │   │   ├── UpdatePkSimpleEnum.g.h
│           │   │   │   │   │   │   ├── UpdatePkString.g.h
│           │   │   │   │   │   │   ├── UpdatePkU128.g.h
│           │   │   │   │   │   │   ├── UpdatePkU16.g.h
│           │   │   │   │   │   │   ├── UpdatePkU256.g.h
│           │   │   │   │   │   │   ├── UpdatePkU32.g.h
│           │   │   │   │   │   │   ├── UpdatePkU32Two.g.h
│           │   │   │   │   │   │   ├── UpdatePkU64.g.h
│           │   │   │   │   │   │   ├── UpdatePkU8.g.h
│           │   │   │   │   │   │   ├── UpdatePkUuid.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueBool.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueConnectionId.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI128.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI16.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI256.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI32.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI64.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueI8.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueIdentity.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueString.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU128.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU16.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU256.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU32.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU64.g.h
│           │   │   │   │   │   │   ├── UpdateUniqueU8.g.h
│           │   │   │   │   │   │   └── UpdateUniqueUuid.g.h
│           │   │   │   │   │   ├── Results/
│           │   │   │   │   │   │   ├── TestClientResultEveryPrimitiveStructString.g.h
│           │   │   │   │   │   │   ├── TestClientResultIdentityString.g.h
│           │   │   │   │   │   │   ├── TestClientResultInt32String.g.h
│           │   │   │   │   │   │   ├── TestClientResultSimpleEnumInt32.g.h
│           │   │   │   │   │   │   ├── TestClientResultStringInt32.g.h
│           │   │   │   │   │   │   └── TestClientResultVecInt32String.g.h
│           │   │   │   │   │   ├── SpacetimeDBClient.g.h
│           │   │   │   │   │   ├── Tables/
│           │   │   │   │   │   │   ├── BtreeU32Table.g.h
│           │   │   │   │   │   │   ├── IndexedSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── LargeTableTable.g.h
│           │   │   │   │   │   │   ├── OneBoolTable.g.h
│           │   │   │   │   │   │   ├── OneByteStructTable.g.h
│           │   │   │   │   │   │   ├── OneConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── OneEnumWithPayloadTable.g.h
│           │   │   │   │   │   │   ├── OneEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── OneEveryVecStructTable.g.h
│           │   │   │   │   │   │   ├── OneF32Table.g.h
│           │   │   │   │   │   │   ├── OneF64Table.g.h
│           │   │   │   │   │   │   ├── OneI128Table.g.h
│           │   │   │   │   │   │   ├── OneI16Table.g.h
│           │   │   │   │   │   │   ├── OneI256Table.g.h
│           │   │   │   │   │   │   ├── OneI32Table.g.h
│           │   │   │   │   │   │   ├── OneI64Table.g.h
│           │   │   │   │   │   │   ├── OneI8Table.g.h
│           │   │   │   │   │   │   ├── OneIdentityTable.g.h
│           │   │   │   │   │   │   ├── OneSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── OneStringTable.g.h
│           │   │   │   │   │   │   ├── OneTimestampTable.g.h
│           │   │   │   │   │   │   ├── OneU128Table.g.h
│           │   │   │   │   │   │   ├── OneU16Table.g.h
│           │   │   │   │   │   │   ├── OneU256Table.g.h
│           │   │   │   │   │   │   ├── OneU32Table.g.h
│           │   │   │   │   │   │   ├── OneU64Table.g.h
│           │   │   │   │   │   │   ├── OneU8Table.g.h
│           │   │   │   │   │   │   ├── OneUnitStructTable.g.h
│           │   │   │   │   │   │   ├── OneUuidTable.g.h
│           │   │   │   │   │   │   ├── OptionEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── OptionI32Table.g.h
│           │   │   │   │   │   │   ├── OptionIdentityTable.g.h
│           │   │   │   │   │   │   ├── OptionSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── OptionStringTable.g.h
│           │   │   │   │   │   │   ├── OptionUuidTable.g.h
│           │   │   │   │   │   │   ├── OptionVecOptionI32Table.g.h
│           │   │   │   │   │   │   ├── PkBoolTable.g.h
│           │   │   │   │   │   │   ├── PkConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── PkI128Table.g.h
│           │   │   │   │   │   │   ├── PkI16Table.g.h
│           │   │   │   │   │   │   ├── PkI256Table.g.h
│           │   │   │   │   │   │   ├── PkI32Table.g.h
│           │   │   │   │   │   │   ├── PkI64Table.g.h
│           │   │   │   │   │   │   ├── PkI8Table.g.h
│           │   │   │   │   │   │   ├── PkIdentityTable.g.h
│           │   │   │   │   │   │   ├── PkSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── PkStringTable.g.h
│           │   │   │   │   │   │   ├── PkU128Table.g.h
│           │   │   │   │   │   │   ├── PkU16Table.g.h
│           │   │   │   │   │   │   ├── PkU256Table.g.h
│           │   │   │   │   │   │   ├── PkU32Table.g.h
│           │   │   │   │   │   │   ├── PkU32TwoTable.g.h
│           │   │   │   │   │   │   ├── PkU64Table.g.h
│           │   │   │   │   │   │   ├── PkU8Table.g.h
│           │   │   │   │   │   │   ├── PkUuidTable.g.h
│           │   │   │   │   │   │   ├── ResultEveryPrimitiveStructStringTable.g.h
│           │   │   │   │   │   │   ├── ResultI32StringTable.g.h
│           │   │   │   │   │   │   ├── ResultIdentityStringTable.g.h
│           │   │   │   │   │   │   ├── ResultSimpleEnumI32Table.g.h
│           │   │   │   │   │   │   ├── ResultStringI32Table.g.h
│           │   │   │   │   │   │   ├── ResultVecI32StringTable.g.h
│           │   │   │   │   │   │   ├── ScheduledTableTable.g.h
│           │   │   │   │   │   │   ├── TableHoldsTableTable.g.h
│           │   │   │   │   │   │   ├── UniqueBoolTable.g.h
│           │   │   │   │   │   │   ├── UniqueConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── UniqueI128Table.g.h
│           │   │   │   │   │   │   ├── UniqueI16Table.g.h
│           │   │   │   │   │   │   ├── UniqueI256Table.g.h
│           │   │   │   │   │   │   ├── UniqueI32Table.g.h
│           │   │   │   │   │   │   ├── UniqueI64Table.g.h
│           │   │   │   │   │   │   ├── UniqueI8Table.g.h
│           │   │   │   │   │   │   ├── UniqueIdentityTable.g.h
│           │   │   │   │   │   │   ├── UniqueStringTable.g.h
│           │   │   │   │   │   │   ├── UniqueU128Table.g.h
│           │   │   │   │   │   │   ├── UniqueU16Table.g.h
│           │   │   │   │   │   │   ├── UniqueU256Table.g.h
│           │   │   │   │   │   │   ├── UniqueU32Table.g.h
│           │   │   │   │   │   │   ├── UniqueU64Table.g.h
│           │   │   │   │   │   │   ├── UniqueU8Table.g.h
│           │   │   │   │   │   │   ├── UniqueUuidTable.g.h
│           │   │   │   │   │   │   ├── UsersTable.g.h
│           │   │   │   │   │   │   ├── VecBoolTable.g.h
│           │   │   │   │   │   │   ├── VecByteStructTable.g.h
│           │   │   │   │   │   │   ├── VecConnectionIdTable.g.h
│           │   │   │   │   │   │   ├── VecEnumWithPayloadTable.g.h
│           │   │   │   │   │   │   ├── VecEveryPrimitiveStructTable.g.h
│           │   │   │   │   │   │   ├── VecEveryVecStructTable.g.h
│           │   │   │   │   │   │   ├── VecF32Table.g.h
│           │   │   │   │   │   │   ├── VecF64Table.g.h
│           │   │   │   │   │   │   ├── VecI128Table.g.h
│           │   │   │   │   │   │   ├── VecI16Table.g.h
│           │   │   │   │   │   │   ├── VecI256Table.g.h
│           │   │   │   │   │   │   ├── VecI32Table.g.h
│           │   │   │   │   │   │   ├── VecI64Table.g.h
│           │   │   │   │   │   │   ├── VecI8Table.g.h
│           │   │   │   │   │   │   ├── VecIdentityTable.g.h
│           │   │   │   │   │   │   ├── VecSimpleEnumTable.g.h
│           │   │   │   │   │   │   ├── VecStringTable.g.h
│           │   │   │   │   │   │   ├── VecTimestampTable.g.h
│           │   │   │   │   │   │   ├── VecU128Table.g.h
│           │   │   │   │   │   │   ├── VecU16Table.g.h
│           │   │   │   │   │   │   ├── VecU256Table.g.h
│           │   │   │   │   │   │   ├── VecU32Table.g.h
│           │   │   │   │   │   │   ├── VecU64Table.g.h
│           │   │   │   │   │   │   ├── VecU8Table.g.h
│           │   │   │   │   │   │   ├── VecUnitStructTable.g.h
│           │   │   │   │   │   │   └── VecUuidTable.g.h
│           │   │   │   │   │   └── Types/
│           │   │   │   │   │       ├── BTreeU32Type.g.h
│           │   │   │   │   │       ├── ByteStructType.g.h
│           │   │   │   │   │       ├── EnumWithPayloadType.g.h
│           │   │   │   │   │       ├── EveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── EveryVecStructType.g.h
│           │   │   │   │   │       ├── IndexedSimpleEnumType.g.h
│           │   │   │   │   │       ├── IndexedTable2Type.g.h
│           │   │   │   │   │       ├── IndexedTableType.g.h
│           │   │   │   │   │       ├── LargeTableType.g.h
│           │   │   │   │   │       ├── OneBoolType.g.h
│           │   │   │   │   │       ├── OneByteStructType.g.h
│           │   │   │   │   │       ├── OneConnectionIdType.g.h
│           │   │   │   │   │       ├── OneEnumWithPayloadType.g.h
│           │   │   │   │   │       ├── OneEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── OneEveryVecStructType.g.h
│           │   │   │   │   │       ├── OneF32Type.g.h
│           │   │   │   │   │       ├── OneF64Type.g.h
│           │   │   │   │   │       ├── OneI128Type.g.h
│           │   │   │   │   │       ├── OneI16Type.g.h
│           │   │   │   │   │       ├── OneI256Type.g.h
│           │   │   │   │   │       ├── OneI32Type.g.h
│           │   │   │   │   │       ├── OneI64Type.g.h
│           │   │   │   │   │       ├── OneI8Type.g.h
│           │   │   │   │   │       ├── OneIdentityType.g.h
│           │   │   │   │   │       ├── OneSimpleEnumType.g.h
│           │   │   │   │   │       ├── OneStringType.g.h
│           │   │   │   │   │       ├── OneTimestampType.g.h
│           │   │   │   │   │       ├── OneU128Type.g.h
│           │   │   │   │   │       ├── OneU16Type.g.h
│           │   │   │   │   │       ├── OneU256Type.g.h
│           │   │   │   │   │       ├── OneU32Type.g.h
│           │   │   │   │   │       ├── OneU64Type.g.h
│           │   │   │   │   │       ├── OneU8Type.g.h
│           │   │   │   │   │       ├── OneUnitStructType.g.h
│           │   │   │   │   │       ├── OneUuidType.g.h
│           │   │   │   │   │       ├── OptionEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── OptionI32Type.g.h
│           │   │   │   │   │       ├── OptionIdentityType.g.h
│           │   │   │   │   │       ├── OptionSimpleEnumType.g.h
│           │   │   │   │   │       ├── OptionStringType.g.h
│           │   │   │   │   │       ├── OptionUuidType.g.h
│           │   │   │   │   │       ├── OptionVecOptionI32Type.g.h
│           │   │   │   │   │       ├── PkBoolType.g.h
│           │   │   │   │   │       ├── PkConnectionIdType.g.h
│           │   │   │   │   │       ├── PkI128Type.g.h
│           │   │   │   │   │       ├── PkI16Type.g.h
│           │   │   │   │   │       ├── PkI256Type.g.h
│           │   │   │   │   │       ├── PkI32Type.g.h
│           │   │   │   │   │       ├── PkI64Type.g.h
│           │   │   │   │   │       ├── PkI8Type.g.h
│           │   │   │   │   │       ├── PkIdentityType.g.h
│           │   │   │   │   │       ├── PkSimpleEnumType.g.h
│           │   │   │   │   │       ├── PkStringType.g.h
│           │   │   │   │   │       ├── PkU128Type.g.h
│           │   │   │   │   │       ├── PkU16Type.g.h
│           │   │   │   │   │       ├── PkU256Type.g.h
│           │   │   │   │   │       ├── PkU32TwoType.g.h
│           │   │   │   │   │       ├── PkU32Type.g.h
│           │   │   │   │   │       ├── PkU64Type.g.h
│           │   │   │   │   │       ├── PkU8Type.g.h
│           │   │   │   │   │       ├── PkUuidType.g.h
│           │   │   │   │   │       ├── ResultEveryPrimitiveStructStringType.g.h
│           │   │   │   │   │       ├── ResultI32StringType.g.h
│           │   │   │   │   │       ├── ResultIdentityStringType.g.h
│           │   │   │   │   │       ├── ResultSimpleEnumI32Type.g.h
│           │   │   │   │   │       ├── ResultStringI32Type.g.h
│           │   │   │   │   │       ├── ResultVecI32StringType.g.h
│           │   │   │   │   │       ├── ScheduledTableType.g.h
│           │   │   │   │   │       ├── SimpleEnumType.g.h
│           │   │   │   │   │       ├── TableHoldsTableType.g.h
│           │   │   │   │   │       ├── UniqueBoolType.g.h
│           │   │   │   │   │       ├── UniqueConnectionIdType.g.h
│           │   │   │   │   │       ├── UniqueI128Type.g.h
│           │   │   │   │   │       ├── UniqueI16Type.g.h
│           │   │   │   │   │       ├── UniqueI256Type.g.h
│           │   │   │   │   │       ├── UniqueI32Type.g.h
│           │   │   │   │   │       ├── UniqueI64Type.g.h
│           │   │   │   │   │       ├── UniqueI8Type.g.h
│           │   │   │   │   │       ├── UniqueIdentityType.g.h
│           │   │   │   │   │       ├── UniqueStringType.g.h
│           │   │   │   │   │       ├── UniqueU128Type.g.h
│           │   │   │   │   │       ├── UniqueU16Type.g.h
│           │   │   │   │   │       ├── UniqueU256Type.g.h
│           │   │   │   │   │       ├── UniqueU32Type.g.h
│           │   │   │   │   │       ├── UniqueU64Type.g.h
│           │   │   │   │   │       ├── UniqueU8Type.g.h
│           │   │   │   │   │       ├── UniqueUuidType.g.h
│           │   │   │   │   │       ├── UnitStructType.g.h
│           │   │   │   │   │       ├── UsersType.g.h
│           │   │   │   │   │       ├── VecBoolType.g.h
│           │   │   │   │   │       ├── VecByteStructType.g.h
│           │   │   │   │   │       ├── VecConnectionIdType.g.h
│           │   │   │   │   │       ├── VecEnumWithPayloadType.g.h
│           │   │   │   │   │       ├── VecEveryPrimitiveStructType.g.h
│           │   │   │   │   │       ├── VecEveryVecStructType.g.h
│           │   │   │   │   │       ├── VecF32Type.g.h
│           │   │   │   │   │       ├── VecF64Type.g.h
│           │   │   │   │   │       ├── VecI128Type.g.h
│           │   │   │   │   │       ├── VecI16Type.g.h
│           │   │   │   │   │       ├── VecI256Type.g.h
│           │   │   │   │   │       ├── VecI32Type.g.h
│           │   │   │   │   │       ├── VecI64Type.g.h
│           │   │   │   │   │       ├── VecI8Type.g.h
│           │   │   │   │   │       ├── VecIdentityType.g.h
│           │   │   │   │   │       ├── VecSimpleEnumType.g.h
│           │   │   │   │   │       ├── VecStringType.g.h
│           │   │   │   │   │       ├── VecTimestampType.g.h
│           │   │   │   │   │       ├── VecU128Type.g.h
│           │   │   │   │   │       ├── VecU16Type.g.h
│           │   │   │   │   │       ├── VecU256Type.g.h
│           │   │   │   │   │       ├── VecU32Type.g.h
│           │   │   │   │   │       ├── VecU64Type.g.h
│           │   │   │   │   │       ├── VecU8Type.g.h
│           │   │   │   │   │       ├── VecUnitStructType.g.h
│           │   │   │   │   │       └── VecUuidType.g.h
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.h
│           │   │   │   │       ├── PrimitiveHandlerList.def
│           │   │   │   │       ├── SpacetimeFullClientTests.h
│           │   │   │   │       ├── TestCounter.h
│           │   │   │   │       ├── TestHandler.h
│           │   │   │   │       ├── UmbreallaHeaderReducers.h
│           │   │   │   │       ├── UmbreallaHeaderTypes.h
│           │   │   │   │       └── UmbreallaHeaderaTables.h
│           │   │   │   ├── TestClient.Build.cs
│           │   │   │   ├── TestClient.cpp
│           │   │   │   ├── TestClient.h
│           │   │   │   ├── TestClientGameModeBase.cpp
│           │   │   │   └── TestClientGameModeBase.h
│           │   │   ├── TestClient.Target.cs
│           │   │   └── TestClientEditor.Target.cs
│           │   └── TestClient.uproject
│           ├── TestProcClient/
│           │   ├── .vsconfig
│           │   ├── Config/
│           │   │   ├── DefaultEditor.ini
│           │   │   ├── DefaultEditorPerProjectUserSettings.ini
│           │   │   ├── DefaultEngine.ini
│           │   │   ├── DefaultGame.ini
│           │   │   └── DefaultInput.ini
│           │   ├── Source/
│           │   │   ├── TestProcClient/
│           │   │   │   ├── Private/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── SpacetimeDBClient.g.cpp
│           │   │   │   │   │   └── Tables/
│           │   │   │   │   │       ├── MyTableTable.g.cpp
│           │   │   │   │   │       ├── PkUuidTable.g.cpp
│           │   │   │   │   │       └── ProcInsertsIntoTable.g.cpp
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.cpp
│           │   │   │   │       ├── SpacetimeFullClientTests.cpp
│           │   │   │   │       ├── TestCounter.cpp
│           │   │   │   │       └── TestHandler.cpp
│           │   │   │   ├── Public/
│           │   │   │   │   ├── ModuleBindings/
│           │   │   │   │   │   ├── Procedures/
│           │   │   │   │   │   │   ├── InsertWithTxCommit.g.h
│           │   │   │   │   │   │   ├── InsertWithTxRollback.g.h
│           │   │   │   │   │   │   ├── InvalidRequest.g.h
│           │   │   │   │   │   │   ├── ReadMySchema.g.h
│           │   │   │   │   │   │   ├── ReturnEnumA.g.h
│           │   │   │   │   │   │   ├── ReturnEnumB.g.h
│           │   │   │   │   │   │   ├── ReturnPrimitive.g.h
│           │   │   │   │   │   │   ├── ReturnStruct.g.h
│           │   │   │   │   │   │   ├── SortedUuidsInsert.g.h
│           │   │   │   │   │   │   └── WillPanic.g.h
│           │   │   │   │   │   ├── ReducerBase.g.h
│           │   │   │   │   │   ├── Reducers/
│           │   │   │   │   │   │   └── ScheduleProc.g.h
│           │   │   │   │   │   ├── SpacetimeDBClient.g.h
│           │   │   │   │   │   ├── Tables/
│           │   │   │   │   │   │   ├── MyTableTable.g.h
│           │   │   │   │   │   │   ├── PkUuidTable.g.h
│           │   │   │   │   │   │   └── ProcInsertsIntoTable.g.h
│           │   │   │   │   │   └── Types/
│           │   │   │   │   │       ├── MyTableType.g.h
│           │   │   │   │   │       ├── PkUuidType.g.h
│           │   │   │   │   │       ├── ProcInsertsIntoType.g.h
│           │   │   │   │   │       ├── ReturnEnumType.g.h
│           │   │   │   │   │       ├── ReturnStructType.g.h
│           │   │   │   │   │       └── ScheduledProcTableType.g.h
│           │   │   │   │   └── Tests/
│           │   │   │   │       ├── CommonTestFunctions.h
│           │   │   │   │       ├── SpacetimeFullClientTests.h
│           │   │   │   │       ├── TestCounter.h
│           │   │   │   │       ├── TestHandler.h
│           │   │   │   │       ├── UmbreallaHeaderProcedures.h
│           │   │   │   │       └── UmbreallaHeaderTypes.h
│           │   │   │   ├── TestProcClient.Build.cs
│           │   │   │   ├── TestProcClient.cpp
│           │   │   │   ├── TestProcClient.h
│           │   │   │   ├── TestProcClientGameModeBase.cpp
│           │   │   │   └── TestProcClientGameModeBase.h
│           │   │   ├── TestProcClient.Target.cs
│           │   │   └── TestProcClientEditor.Target.cs
│           │   └── TestProcClient.uproject
│           ├── sdk_unreal_harness.rs
│           ├── test.rs
│           └── test_procedure.rs
├── skills/
│   ├── spacetimedb-cli/
│   │   └── SKILL.md
│   ├── spacetimedb-concepts/
│   │   └── SKILL.md
│   ├── spacetimedb-csharp/
│   │   └── SKILL.md
│   ├── spacetimedb-rust/
│   │   └── SKILL.md
│   ├── spacetimedb-typescript/
│   │   └── SKILL.md
│   └── spacetimedb-unity/
│       └── SKILL.md
├── smoketests/
│   ├── README.md
│   ├── __init__.py
│   ├── __main__.py
│   ├── config.toml
│   ├── docker.py
│   ├── requirements.txt
│   ├── tests/
│   │   ├── __init__.py
│   │   ├── add_remove_index.py
│   │   ├── auto_inc.py
│   │   ├── auto_migration.py
│   │   ├── call.py
│   │   ├── clear_database.py
│   │   ├── client_connected_error_rejects_connection.py
│   │   ├── confirmed_reads.py
│   │   ├── connect_disconnect_from_cli.py
│   │   ├── create_project.py
│   │   ├── csharp_module.py
│   │   ├── default_module_clippy.py
│   │   ├── delete_database.py
│   │   ├── describe.py
│   │   ├── detect_wasm_bindgen.py
│   │   ├── dml.py
│   │   ├── domains.py
│   │   ├── fail_initial_publish.py
│   │   ├── filtering.py
│   │   ├── module_nested_op.py
│   │   ├── modules.py
│   │   ├── namespaces.py
│   │   ├── new_user_flow.py
│   │   ├── panic.py
│   │   ├── permissions.py
│   │   ├── quickstart.py
│   │   ├── replication.py
│   │   ├── rls.py
│   │   ├── schedule_reducer.py
│   │   ├── servers.py
│   │   ├── sql.py
│   │   ├── teams.py
│   │   ├── timestamp_route.py
│   │   ├── views.py
│   │   └── zz_docker.py
│   └── unittest_parallel.py
├── templates/
│   ├── angular-ts/
│   │   ├── .gitignore
│   │   ├── .template.json
│   │   ├── angular.json
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   └── dev.mjs
│   │   ├── spacetimedb/
│   │   │   ├── package.json
│   │   │   ├── src/
│   │   │   │   └── index.ts
│   │   │   └── tsconfig.json
│   │   ├── src/
│   │   │   ├── app/
│   │   │   │   ├── app.component.ts
│   │   │   │   └── app.config.ts
│   │   │   ├── environments/
│   │   │   │   └── environment.ts
│   │   │   ├── i
Download .txt
Showing preview only (1,570K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17415 symbols across 1019 files)

FILE: crates/auth/src/identity.rs
  type ConnectionAuthCtx (line 11) | pub struct ConnectionAuthCtx {
    type Error (line 17) | type Error = anyhow::Error;
    method try_from (line 18) | fn try_from(claims: SpacetimeIdentityClaims) -> Result<Self, Self::Err...
  type SpacetimeIdentityClaims (line 30) | pub struct SpacetimeIdentityClaims {
  function deserialize_audience (line 50) | fn deserialize_audience<'de, D>(deserializer: D) -> Result<Box<[Box<str>...
  type IncomingClaims (line 76) | pub struct IncomingClaims {
    type Error (line 98) | type Error = anyhow::Error;
    method try_into (line 100) | fn try_into(self) -> anyhow::Result<SpacetimeIdentityClaims> {
  function test_deserialize_audience_single_string (line 145) | fn test_deserialize_audience_single_string() {
  function test_deserialize_audience_multiple_strings (line 167) | fn test_deserialize_audience_multiple_strings() {
  function test_deserialize_audience_missing_field (line 189) | fn test_deserialize_audience_missing_field() {

FILE: crates/bench/benches/callgrind.rs
  type Benchmark (line 38) | trait Benchmark: Deserialize<'static> {
    method run_benchmark (line 39) | fn run_benchmark(self);
    method run_benchmark (line 58) | fn run_benchmark(self) {
    method run_benchmark (line 127) | fn run_benchmark(self) {
    method run_benchmark (line 196) | fn run_benchmark(self) {
    method run_benchmark (line 281) | fn run_benchmark(self) {
    method run_benchmark (line 423) | fn run_benchmark(self) {
    method run_benchmark (line 467) | fn run_benchmark(self) {
    method run_benchmark (line 524) | fn run_benchmark(self) {
    method run_benchmark (line 560) | fn run_benchmark(self) {
  type InsertBulkBenchmark (line 45) | struct InsertBulkBenchmark<DB: BenchDatabase, T: BenchTable + RandomTabl...
  function insert_bulk_raw_u32_u64_str (line 91) | fn insert_bulk_raw_u32_u64_str(metadata: &str) {
  function insert_bulk_sqlite_u32_u64_str (line 101) | fn insert_bulk_sqlite_u32_u64_str(metadata: &str) {
  type UpdateBulkBenchmark (line 114) | struct UpdateBulkBenchmark<DB: BenchDatabase, T: BenchTable + RandomTabl...
  function update_bulk_raw_u32_u64_str (line 161) | fn update_bulk_raw_u32_u64_str(metadata: &str) {
  function update_bulk_sqlite_u32_u64_str (line 171) | fn update_bulk_sqlite_u32_u64_str(metadata: &str) {
  type IterateBenchmark (line 184) | struct IterateBenchmark<DB: BenchDatabase, T: BenchTable + RandomTable> {
  function iterate_raw_u32_u64_str (line 233) | fn iterate_raw_u32_u64_str(metadata: &str) {
  function iterate_sqlite_u32_u64_str (line 251) | fn iterate_sqlite_u32_u64_str(metadata: &str) {
  type FilterBenchmark (line 264) | struct FilterBenchmark<DB: BenchDatabase, T: BenchTable + RandomTable> {
  function filter_raw_u32_u64_str (line 352) | fn filter_raw_u32_u64_str(metadata: &str) {
  function filter_sqlite_u32_u64_str (line 398) | fn filter_sqlite_u32_u64_str(metadata: &str) {
  type FindBenchmark (line 412) | struct FindBenchmark<DB: BenchDatabase, T: BenchTable + RandomTable> {
  type EmptyTransactionBenchmark (line 458) | struct EmptyTransactionBenchmark<DB: BenchDatabase> {
  function empty_transaction_raw (line 487) | fn empty_transaction_raw(metadata: &str) {
  function empty_transaction_sqlite (line 504) | fn empty_transaction_sqlite(metadata: &str) {
  type BSatnSerializationBenchmark (line 517) | struct BSatnSerializationBenchmark {
  function bsatn_serialization (line 547) | fn bsatn_serialization(metadata: &str) {
  type JSONSerializationBenchmark (line 553) | struct JSONSerializationBenchmark {
  function json_serialization (line 583) | fn json_serialization(metadata: &str) {
  function run_benches (line 606) | pub fn run_benches() {
  function main (line 611) | fn main() {

FILE: crates/bench/benches/delete_table.rs
  function time (line 16) | fn time<R>(body: impl FnOnce() -> R) -> Duration {
  constant FIXED_ROW_SIZE (line 24) | const FIXED_ROW_SIZE: Size = Size(4 * 4);
  function gen_row_pointers (line 26) | fn gen_row_pointers(iters: u64) -> impl Iterator<Item = RowPointer> {
  function bench_custom (line 47) | fn bench_custom(g: &mut BenchmarkGroup<'_, WallTime>, name: &str, run: i...
  function bench_delete_table (line 51) | fn bench_delete_table<DT: DeleteTable>(c: &mut Criterion) {
  type DeleteTable (line 113) | trait DeleteTable {
    constant NAME (line 114) | const NAME: &'static str;
    method new (line 115) | fn new(fixed_row_size: Size) -> Self;
    method contains (line 116) | fn contains(&self, ptr: RowPointer) -> bool;
    method insert (line 117) | fn insert(&mut self, ptr: RowPointer) -> bool;
    method remove (line 118) | fn remove(&mut self, ptr: RowPointer) -> bool;
    method iter (line 119) | fn iter(&self) -> impl Iterator<Item = RowPointer>;
    method len (line 121) | fn len(&self) -> usize;
    constant NAME (line 127) | const NAME: &'static str = "DTBTree";
    method new (line 128) | fn new(_: Size) -> Self {
    method contains (line 131) | fn contains(&self, ptr: RowPointer) -> bool {
    method insert (line 134) | fn insert(&mut self, ptr: RowPointer) -> bool {
    method remove (line 137) | fn remove(&mut self, ptr: RowPointer) -> bool {
    method iter (line 140) | fn iter(&self) -> impl Iterator<Item = RowPointer> {
    method len (line 143) | fn len(&self) -> usize {
    constant NAME (line 151) | const NAME: &'static str = "DTHashSet";
    method new (line 152) | fn new(_: Size) -> Self {
    method contains (line 155) | fn contains(&self, ptr: RowPointer) -> bool {
    method insert (line 158) | fn insert(&mut self, ptr: RowPointer) -> bool {
    method remove (line 161) | fn remove(&mut self, ptr: RowPointer) -> bool {
    method iter (line 164) | fn iter(&self) -> impl Iterator<Item = RowPointer> {
    method len (line 167) | fn len(&self) -> usize {
    constant NAME (line 175) | const NAME: &'static str = "DTHashSetFH";
    method new (line 176) | fn new(_: Size) -> Self {
    method contains (line 179) | fn contains(&self, ptr: RowPointer) -> bool {
    method insert (line 182) | fn insert(&mut self, ptr: RowPointer) -> bool {
    method remove (line 185) | fn remove(&mut self, ptr: RowPointer) -> bool {
    method iter (line 188) | fn iter(&self) -> impl Iterator<Item = RowPointer> {
    method len (line 191) | fn len(&self) -> usize {
    constant NAME (line 199) | const NAME: &'static str = "DTPageAndBitSet";
    method new (line 200) | fn new(fixed_row_size: Size) -> Self {
    method contains (line 203) | fn contains(&self, ptr: RowPointer) -> bool {
    method insert (line 206) | fn insert(&mut self, ptr: RowPointer) -> bool {
    method remove (line 209) | fn remove(&mut self, ptr: RowPointer) -> bool {
    method iter (line 212) | fn iter(&self) -> impl Iterator<Item = RowPointer> {
    method len (line 215) | fn len(&self) -> usize {
    constant NAME (line 295) | const NAME: &'static str = "DTPageAndOffsetRanges";
    method new (line 296) | fn new(fixed_row_size: Size) -> Self {
    method contains (line 303) | fn contains(&self, ptr: RowPointer) -> bool {
    method insert (line 313) | fn insert(&mut self, ptr: RowPointer) -> bool {
    method remove (line 373) | fn remove(&mut self, ptr: RowPointer) -> bool {
    method iter (line 411) | fn iter(&self) -> impl Iterator<Item = RowPointer> {
    method len (line 423) | fn len(&self) -> usize {
  type DTBTree (line 124) | struct DTBTree(BTreeSet<RowPointer>);
  type DTHashSet (line 148) | struct DTHashSet(HashSet<RowPointer>);
  type DTHashSetFH (line 172) | struct DTHashSetFH(foldhash::HashSet<RowPointer>);
  type DTPageAndBitSet (line 196) | type DTPageAndBitSet = delete_table::DeleteTable;
  type OffsetRange (line 221) | struct OffsetRange {
    method point (line 226) | fn point(offset: PageOffset) -> Self {
  type OffsetRanges (line 233) | type OffsetRanges = SmallVec<[OffsetRange; 4]>;
  type DTPageAndOffsetRanges (line 234) | struct DTPageAndOffsetRanges {
  function cmp_start_end (line 240) | fn cmp_start_end<T: Ord>(start: &T, end: &T, needle: &T) -> Ordering {
  function find_range_to_insert_offset (line 252) | fn find_range_to_insert_offset(

FILE: crates/bench/benches/generic.rs
  function criterion_benchmark (line 31) | fn criterion_benchmark(c: &mut Criterion) {
  function bench_suite (line 44) | fn bench_suite<DB: BenchDatabase>(c: &mut Criterion, in_memory: bool) ->...
  type Group (line 60) | type Group<'a> = BenchmarkGroup<'a, WallTime>;
  function table_suite (line 63) | fn table_suite<DB: BenchDatabase, T: BenchTable + RandomTable>(g: &mut G...
  function bench_harness (line 114) | fn bench_harness<
  function empty (line 144) | fn empty<DB: BenchDatabase>(g: &mut Group, db: &mut DB) -> ResultBench<(...
  function insert_bulk (line 161) | fn insert_bulk<DB: BenchDatabase, T: BenchTable + RandomTable>(
  function update_bulk (line 201) | fn update_bulk<DB: BenchDatabase, T: BenchTable + RandomTable>(
  function iterate (line 239) | fn iterate<DB: BenchDatabase, T: BenchTable + RandomTable>(
  function filter (line 271) | fn filter<DB: BenchDatabase, T: BenchTable + RandomTable>(

FILE: crates/bench/benches/index.rs
  function time (line 25) | fn time<R>(body: impl FnOnce() -> R) -> Duration {
  constant FIXED_ROW_SIZE (line 33) | const FIXED_ROW_SIZE: Size = Size(4 * 4);
  function gen_row_pointers (line 35) | fn gen_row_pointers() -> impl Iterator<Item = RowPointer> {
  function bench_custom (line 56) | fn bench_custom(g: &mut BenchmarkGroup<'_, WallTime>, name: &str, run: i...
  function monotonic_keys (line 61) | fn monotonic_keys(n: u64) -> impl Clone + Iterator<Item = MonoKey> {
  function random_keys (line 66) | fn random_keys<K: Eq + Hash>(n: u64) -> HashSet<K>
  function time_insertions (line 80) | fn time_insertions<I: Index>(keys: impl Iterator<Item = I::K>) -> Durati...
  function bench_insert_monotonic (line 91) | fn bench_insert_monotonic<I: Index<K = MonoKey>>(g: &mut BenchmarkGroup<...
  function bench_insert_random (line 98) | fn bench_insert_random<I: Index>(g: &mut BenchmarkGroup<'_, WallTime>)
  function time_seeks (line 106) | fn time_seeks<I: Index>(keys: impl Clone + Iterator<Item = I::K>) -> Dur...
  function bench_seek_monotonic (line 120) | fn bench_seek_monotonic<I: Index<K = MonoKey>>(g: &mut BenchmarkGroup<'_...
  function bench_seek_random (line 125) | fn bench_seek_random<I: Index>(g: &mut BenchmarkGroup<'_, WallTime>)
  function time_deletes (line 149) | fn time_deletes<I: Index>(keys: impl Clone + IntoIterator<Item = I::K>) ...
  function bench_delete_monotonic (line 161) | fn bench_delete_monotonic<I: Index<K = MonoKey>>(g: &mut BenchmarkGroup<...
  function bench_delete_random (line 166) | fn bench_delete_random<I: Index>(g: &mut BenchmarkGroup<'_, WallTime>)
  function bench_index_mono (line 173) | fn bench_index_mono<I: Index<K = MonoKey>>(c: &mut Criterion) {
  function bench_index_random (line 183) | fn bench_index_random<I: Index>(c: &mut Criterion)
  type MonoKey (line 193) | type MonoKey = u32;
  type Index (line 195) | trait Index: Clone {
    method new (line 197) | fn new() -> Self;
    method insert (line 198) | fn insert(&mut self, key: Self::K, val: RowPointer) -> Result<(), RowP...
    method seek (line 199) | fn seek(&self, key: Self::K) -> impl Iterator<Item = RowPointer>;
    method delete (line 200) | fn delete(&mut self, key: Self::K) -> bool;
    type K (line 206) | type K = K;
    method new (line 207) | fn new() -> Self {
    method insert (line 210) | fn insert(&mut self, key: Self::K, val: RowPointer) -> Result<(), RowP...
    method seek (line 213) | fn seek(&self, key: Self::K) -> impl Iterator<Item = RowPointer> {
    method delete (line 216) | fn delete(&mut self, key: Self::K) -> bool {
    type K (line 224) | type K = K;
    method new (line 225) | fn new() -> Self {
    method insert (line 228) | fn insert(&mut self, key: Self::K, val: RowPointer) -> Result<(), RowP...
    method seek (line 237) | fn seek(&self, key: Self::K) -> impl Iterator<Item = RowPointer> {
    method delete (line 240) | fn delete(&mut self, key: Self::K) -> bool {
    type K (line 248) | type K = K;
    method new (line 249) | fn new() -> Self {
    method insert (line 252) | fn insert(&mut self, key: Self::K, val: RowPointer) -> Result<(), RowP...
    method seek (line 261) | fn seek(&self, key: Self::K) -> impl Iterator<Item = RowPointer> {
    method delete (line 264) | fn delete(&mut self, key: Self::K) -> bool {
    type K (line 272) | type K = K;
    method new (line 273) | fn new() -> Self {
    method insert (line 276) | fn insert(&mut self, key: Self::K, val: RowPointer) -> Result<(), RowP...
    method seek (line 279) | fn seek(&self, key: Self::K) -> impl Iterator<Item = RowPointer> {
    method delete (line 282) | fn delete(&mut self, key: Self::K) -> bool {
  type IBTree (line 204) | struct IBTree<K: KeySize<MemoStorage: Clone + Default>>(UniqueMap<K>);
  type IAHash (line 222) | struct IAHash<K>(HashMap<K, RowPointer, BuildHasherDefault<ahash::AHashe...
  type IFoldHash (line 246) | struct IFoldHash<K>(HashMap<K, RowPointer, foldhash::fast::RandomState>);
  type IDirectIndex (line 270) | struct IDirectIndex<K>(UniqueDirectIndex<K>);
  type U256 (line 290) | struct U256(u256);
    method to_le_bytes (line 306) | fn to_le_bytes(self) -> [u8; 32] {
  method sample (line 293) | fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> U256 {
  method from (line 300) | fn from(value: U256) -> AlgebraicValue {

FILE: crates/bench/benches/special.rs
  function criterion_benchmark (line 28) | fn criterion_benchmark(c: &mut Criterion) {
  function custom_benchmarks (line 37) | fn custom_benchmarks<L: ModuleLanguage>(c: &mut Criterion) {
  function custom_module_benchmarks (line 44) | fn custom_module_benchmarks<L: ModuleLanguage>(m: &SpacetimeModule<L>, c...
  function custom_db_benchmarks (line 62) | fn custom_db_benchmarks<L: ModuleLanguage>(m: &SpacetimeModule<L>, c: &m...
  function serialize_benchmarks (line 107) | fn serialize_benchmarks<

FILE: crates/bench/benches/subscription.rs
  function create_table_location (line 25) | fn create_table_location(db: &RelationalDB) -> Result<TableId, DBError> {
  function create_table_footprint (line 39) | fn create_table_footprint(db: &RelationalDB) -> Result<TableId, DBError> {
  function eval (line 50) | fn eval(c: &mut Criterion) {

FILE: crates/bench/hyper_cmp.py
  function statDecoder (line 9) | def statDecoder(statDict):
  function clean (line 13) | def clean(stat):
  function larger (line 26) | def larger(row: list):
  function bar_chart (line 30) | def bar_chart(data: list):
  class Report (line 58) | class Report:
    method __init__ (line 59) | def __init__(self, title: str, header: list, bar: dict, rows: dict):
  class Stat (line 70) | class Stat:
    method __init__ (line 71) | def __init__(self, results):
  function load_file (line 76) | def load_file(named: str):
  function print_cell (line 81) | def print_cell(cell: str, size: int, is_last: bool):
  function print_row (line 89) | def print_row(row: list, size: int):
  function print_mkdown (line 96) | def print_mkdown(report: Report):
  function pick_winner (line 109) | def pick_winner(a: dict, b: dict, label_a: str, label_b: str):
  function cmp_bench (line 124) | def cmp_bench(stat: Stat):
  function improvement_bench (line 138) | def improvement_bench(old: Stat, new: Stat):

FILE: crates/bench/src/database.rs
  type BenchDatabase (line 12) | pub trait BenchDatabase: Sized {
    method name (line 13) | fn name() -> String;
    method build (line 17) | fn build(in_memory: bool) -> ResultBench<Self>
    method create_table (line 21) | fn create_table<T: BenchTable>(&mut self, table_style: IndexStrategy) ...
    method clear_table (line 24) | fn clear_table(&mut self, table_id: &Self::TableId) -> ResultBench<()>;
    method count_table (line 27) | fn count_table(&mut self, table_id: &Self::TableId) -> ResultBench<u32>;
    method empty_transaction (line 30) | fn empty_transaction(&mut self) -> ResultBench<()>;
    method insert_bulk (line 33) | fn insert_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, row...
    method update_bulk (line 40) | fn update_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, row...
    method iterate (line 44) | fn iterate(&mut self, table_id: &Self::TableId) -> ResultBench<()>;
    method filter (line 47) | fn filter<T: BenchTable>(

FILE: crates/bench/src/lib.rs
  type ResultBench (line 7) | pub type ResultBench<T> = Result<T, anyhow::Error>;
  function prepare_tests (line 26) | fn prepare_tests() {
  function basic_invariants (line 56) | fn basic_invariants<DB: BenchDatabase, T: BenchTable + RandomTable>(
  function test_basic_invariants (line 106) | fn test_basic_invariants<DB: BenchDatabase>() -> ResultBench<()> {
  function test_basic_invariants_sqlite (line 115) | fn test_basic_invariants_sqlite() -> ResultBench<()> {
  function test_basic_invariants_spacetime_raw (line 120) | fn test_basic_invariants_spacetime_raw() -> ResultBench<()> {
  function test_basic_invariants_spacetime_module_rust (line 130) | fn test_basic_invariants_spacetime_module_rust() -> ResultBench<()> {
  function test_basic_invariants_spacetime_module_csharp (line 136) | fn test_basic_invariants_spacetime_module_csharp() -> ResultBench<()> {

FILE: crates/bench/src/schemas.rs
  constant BENCH_PKEY_INDEX (line 10) | pub const BENCH_PKEY_INDEX: u32 = 0;
  type u32_u64_str (line 18) | pub struct u32_u64_str {
  type u32_u64_u64 (line 28) | pub struct u32_u64_u64 {
  type u64_u64_u32 (line 44) | pub struct u64_u64_u32 {
  type BenchTable (line 55) | pub trait BenchTable: Debug + Clone + PartialEq + Eq + Hash {
    method name (line 57) | fn name() -> &'static str;
    method product_type (line 59) | fn product_type() -> sats::ProductType;
    method into_product_value (line 61) | fn into_product_value(self) -> sats::ProductValue;
    method into_sqlite_params (line 67) | fn into_sqlite_params(self) -> Self::SqliteParams;
    method name (line 71) | fn name() -> &'static str {
    method product_type (line 75) | fn product_type() -> sats::ProductType {
    method into_product_value (line 83) | fn into_product_value(self) -> sats::ProductValue {
    type SqliteParams (line 87) | type SqliteParams = (u32, u64, Box<str>);
    method into_sqlite_params (line 88) | fn into_sqlite_params(self) -> Self::SqliteParams {
    method name (line 94) | fn name() -> &'static str {
    method product_type (line 98) | fn product_type() -> sats::ProductType {
    method into_product_value (line 106) | fn into_product_value(self) -> sats::ProductValue {
    type SqliteParams (line 110) | type SqliteParams = (u32, u64, u64);
    method into_sqlite_params (line 111) | fn into_sqlite_params(self) -> Self::SqliteParams {
    method name (line 117) | fn name() -> &'static str {
    method product_type (line 120) | fn product_type() -> sats::ProductType {
    method into_product_value (line 128) | fn into_product_value(self) -> sats::ProductValue {
    type SqliteParams (line 132) | type SqliteParams = ();
    method into_sqlite_params (line 133) | fn into_sqlite_params(self) -> Self::SqliteParams {
  type IndexStrategy (line 141) | pub enum IndexStrategy {
    method name (line 154) | pub fn name(&self) -> &'static str {
  function table_name (line 163) | pub fn table_name<T: BenchTable>(style: IndexStrategy) -> TableName {
  type XorShiftLite (line 172) | pub struct XorShiftLite(pub u64);
    method r#gen (line 174) | fn r#gen(&mut self) -> u64 {
  type RandomTable (line 183) | pub trait RandomTable {
    method r#gen (line 192) | fn r#gen(id: u32, rng: &mut XorShiftLite, buckets: u64) -> Self;
    method r#gen (line 196) | fn r#gen(id: u32, rng: &mut XorShiftLite, buckets: u64) -> Self {
    method r#gen (line 204) | fn r#gen(id: u32, rng: &mut XorShiftLite, buckets: u64) -> Self {
    method r#gen (line 212) | fn r#gen(id: u32, rng: &mut XorShiftLite, buckets: u64) -> Self {
  function create_sequential (line 219) | pub fn create_sequential<T: RandomTable>(seed: u64, count: u32, buckets:...
  function create_partly_identical (line 227) | pub fn create_partly_identical<T: RandomTable>(seed: u64, identical: u64...
  function create_random (line 253) | pub fn create_random<T: RandomTable>(seed: u64, count: u32, buckets: u64...
  constant FIRST_NAMES (line 263) | const FIRST_NAMES: [&str; 32] = [
  constant LAST_NAMES (line 298) | const LAST_NAMES: [&str; 32] = [
  function nth_name (line 335) | pub fn nth_name(n: u64) -> String {
  function test_nth_name (line 355) | fn test_nth_name() {
  function test_partly_identical (line 379) | fn test_partly_identical() {

FILE: crates/bench/src/spacetime_module.rs
  type SpacetimeModule (line 30) | pub struct SpacetimeModule<L> {
  method block_on (line 42) | fn block_on<T>(&self, future: impl std::future::Future<Output = T>) -> T {
  method name (line 49) | fn name() -> String {
  type TableId (line 53) | type TableId = TableId;
  method build (line 55) | fn build(in_memory: bool) -> ResultBench<Self>
  method create_table (line 88) | fn create_table<T: BenchTable>(
  method clear_table (line 104) | fn clear_table(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method count_table (line 121) | fn count_table(&mut self, table_id: &Self::TableId) -> ResultBench<u32> {
  method empty_transaction (line 139) | fn empty_transaction(&mut self) -> ResultBench<()> {
  method insert_bulk (line 148) | fn insert_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, rows:...
  method update_bulk (line 160) | fn update_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, row_c...
  method iterate (line 171) | fn iterate(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method filter (line 181) | fn filter<T: BenchTable>(
  type TableId (line 201) | pub struct TableId {

FILE: crates/bench/src/spacetime_raw.rs
  type DbResult (line 17) | pub type DbResult = (RelationalDB, TempDir, u32);
  type SpacetimeRaw (line 19) | pub struct SpacetimeRaw {
  method name (line 24) | fn name() -> String {
  type TableId (line 27) | type TableId = TableId;
  method build (line 29) | fn build(in_memory: bool) -> ResultBench<Self>
  method create_table (line 41) | fn create_table<T: BenchTable>(&mut self, index_strategy: IndexStrategy)...
  method clear_table (line 88) | fn clear_table(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method count_table (line 95) | fn count_table(&mut self, table_id: &Self::TableId) -> ResultBench<u32> {
  method empty_transaction (line 101) | fn empty_transaction(&mut self) -> ResultBench<()> {
  method insert_bulk (line 105) | fn insert_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, rows:...
  method update_bulk (line 117) | fn update_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, row_c...
  method iterate (line 160) | fn iterate(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method filter (line 169) | fn filter<T: BenchTable>(

FILE: crates/bench/src/sqlite.rs
  type SQLite (line 20) | pub struct SQLite {
  method name (line 27) | fn name() -> String {
  method build (line 31) | fn build(in_memory: bool) -> ResultBench<Self>
  type TableId (line 51) | type TableId = TableName;
  method create_table (line 54) | fn create_table<T: BenchTable>(
  method clear_table (line 95) | fn clear_table(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method count_table (line 100) | fn count_table(&mut self, table_id: &Self::TableId) -> ResultBench<u32> {
  method empty_transaction (line 107) | fn empty_transaction(&mut self) -> ResultBench<()> {
  method insert_bulk (line 116) | fn insert_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, rows:...
  method update_bulk (line 134) | fn update_bulk<T: BenchTable>(&mut self, table_id: &Self::TableId, row_c...
  method iterate (line 152) | fn iterate(&mut self, table_id: &Self::TableId) -> ResultBench<()> {
  method filter (line 169) | fn filter<T: BenchTable>(
  constant BEGIN_TRANSACTION (line 215) | const BEGIN_TRANSACTION: &str = "BEGIN DEFERRED";
  constant COMMIT_TRANSACTION (line 216) | const COMMIT_TRANSACTION: &str = "COMMIT";
  type BenchName (line 219) | enum BenchName {
  function memo_query (line 226) | fn memo_query<F: FnOnce() -> String>(bench_name: BenchName, table_id: &s...
  function insert_template (line 264) | fn insert_template(table_id: &str, product_type: ProductType) -> String {

FILE: crates/bindings-cpp/include/spacetimedb.h
  function namespace (line 142) | namespace SpacetimeDB {
  function namespace (line 161) | namespace spacetimedb {

FILE: crates/bindings-cpp/include/spacetimedb/abi/FFI.h
  function namespace (line 36) | namespace FFI {

FILE: crates/bindings-cpp/include/spacetimedb/abi/opaque_types.h
  function namespace (line 27) | namespace SpacetimeDB {
  function hash_value (line 71) | inline std::size_t hash_value(const Name& id) {                          \
  function TableId (line 89) | constexpr TableId TABLE_ID{0}
  function IndexId (line 90) | constexpr IndexId INDEX_ID{0}
  function BytesSink (line 93) | constexpr BytesSink BYTES_SINK{0xFFFFFFFF};
  function namespace (line 119) | namespace StatusCode {
  function namespace (line 137) | namespace LogLevelValue {
  function namespace (line 170) | namespace std {

FILE: crates/bindings-cpp/include/spacetimedb/auth_ctx.h
  function namespace (line 14) | namespace SpacetimeDB {
  function AuthCtx (line 142) | inline AuthCtx AuthCtx::internal() {
  function AuthCtx (line 146) | inline AuthCtx AuthCtx::from_jwt_payload(std::string jwt_payload, Identi...
  function AuthCtx (line 152) | inline AuthCtx AuthCtx::from_connection_id(ConnectionId connection_id, I...
  function std (line 206) | inline const std::optional<JwtClaims>& AuthCtx::get_jwt() const {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/algebraic_type.h
  function namespace (line 13) | namespace SpacetimeDB::bsatn {
  function AlgebraicType (line 388) | static AlgebraicType create_typed_option(uint32_t some_type_ref) {
  function monostate (line 438) | struct algebraic_type_of<std::monostate> {
  function AlgebraicType (line 447) | static AlgebraicType get() {
  function AlgebraicType (line 454) | static AlgebraicType get() {
  function ProductTypeElement (line 471) | inline ProductTypeElement::ProductTypeElement(std::optional<std::string>...
  function ProductTypeElement (line 474) | inline ProductTypeElement::ProductTypeElement(const ProductTypeElement& ...
  function SumTypeVariant (line 486) | inline SumTypeVariant::SumTypeVariant(std::string n, AlgebraicType type)
  function SumTypeVariant (line 489) | inline SumTypeVariant::SumTypeVariant(const SumTypeVariant& other)
  function ArrayType (line 501) | inline ArrayType::ArrayType(AlgebraicType elem_type)
  function ArrayType (line 504) | inline ArrayType::ArrayType(const ArrayType& other)

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/bsatn.h
  function namespace (line 19) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/primitive_traits.h
  function namespace (line 20) | namespace SpacetimeDB::bsatn {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/reader.h
  function namespace (line 17) | namespace SpacetimeDB::bsatn {
  function T (line 182) | static T deserialize(Reader& r) {
  function bool (line 189) | struct deserializer<bool> {
  function uint8_t (line 192) | struct deserializer<uint8_t> {
  function uint16_t (line 195) | struct deserializer<uint16_t> {
  function uint32_t (line 198) | struct deserializer<uint32_t> {
  function uint64_t (line 201) | struct deserializer<uint64_t> {
  function int8_t (line 204) | struct deserializer<int8_t> {
  function int16_t (line 207) | struct deserializer<int16_t> {
  function int32_t (line 210) | struct deserializer<int32_t> {
  function int64_t (line 213) | struct deserializer<int64_t> {
  function float (line 216) | struct deserializer<float> {
  function double (line 219) | struct deserializer<double> {
  function string (line 222) | struct deserializer<std::string> {
  type deserializer (line 225) | struct deserializer
  function std (line 226) | static std::vector<uint8_t> deserialize(Reader& r) { return r.read_bytes...
  function Identity (line 245) | struct deserializer<SpacetimeDB::Identity> {
  function ConnectionId (line 252) | struct deserializer<SpacetimeDB::ConnectionId> {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/result.h
  function namespace (line 18) | namespace SpacetimeDB {
  function T (line 170) | T unwrap_or(T default_value) const {
  function bsatn_serialize (line 178) | void bsatn_serialize(bsatn::Writer& writer) const {
  function Result (line 190) | static Result bsatn_deserialize(bsatn::Reader& reader) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/schedule_at.h
  function namespace (line 8) | namespace SpacetimeDB {
  function TimeDuration (line 118) | const TimeDuration& get_interval() const {
  function ScheduleAt (line 135) | static ScheduleAt interval(const TimeDuration& dur) {
  function ScheduleAt (line 139) | static ScheduleAt time(const Timestamp& ts) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/schedule_at_impl.h
  function namespace (line 10) | namespace SpacetimeDB {
  function namespace (line 56) | namespace SpacetimeDB::bsatn {
  function namespace (line 94) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/serialization.h
  function namespace (line 19) | namespace SpacetimeDB::bsatn {
  function static_bsatn_size (line 142) | size_t static_bsatn_size() {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/size_calculator.h
  function class (line 22) | class SizeWriter {
  function add_bool (line 77) | void add_bool() { size_ += 1; }
  function add_u8 (line 78) | void add_u8() { size_ += 1; }
  function add_u16 (line 79) | void add_u16() { size_ += 2; }
  function add_u32 (line 80) | void add_u32() { size_ += 4; }
  function add_u64 (line 81) | void add_u64() { size_ += 8; }
  function add_u128 (line 82) | void add_u128() { size_ += 16; }
  function add_u256 (line 83) | void add_u256() { size_ += 32; }
  function add_i8 (line 85) | void add_i8() { size_ += 1; }
  function add_i16 (line 86) | void add_i16() { size_ += 2; }
  function add_i32 (line 87) | void add_i32() { size_ += 4; }
  function add_i64 (line 88) | void add_i64() { size_ += 8; }
  function add_i128 (line 89) | void add_i128() { size_ += 16; }
  function add_i256 (line 90) | void add_i256() { size_ += 32; }
  function add_f32 (line 92) | void add_f32() { size_ += 4; }
  function add_f64 (line 93) | void add_f64() { size_ += 8; }
  function add_string (line 95) | void add_string(const std::string& s) {
  function add_bytes (line 99) | void add_bytes(size_t len) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/sum_type.h
  function T (line 75) | T* get_if() const {
  function AlgebraicType (line 127) | static AlgebraicType algebraic_type() {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/time_duration.h
  function namespace (line 7) | namespace SpacetimeDB {
  function namespace (line 14) | namespace SpacetimeDB {
  function namespace (line 120) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/timestamp.h
  function namespace (line 10) | namespace SpacetimeDB {
  function namespace (line 163) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/traits.h
  function serialize (line 197) | static void serialize(Writer& writer, const T& value) {
  function T (line 205) | static T deserialize(Reader& reader) {
  function AlgebraicType (line 213) | static AlgebraicType algebraic_type() {
  function class (line 233) | class ProductTypeBuilder {
  function class (line 253) | class SumTypeBuilder {
  function std (line 317) | static std::vector<T> deserialize(Reader& reader) {
  function AlgebraicType (line 327) | static AlgebraicType algebraic_type() {
  function std (line 402) | static std::optional<T> deserialize(Reader& reader) {
  function AlgebraicType (line 413) | static AlgebraicType algebraic_type() {
  function monostate (line 448) | struct bsatn_traits<std::monostate> {
  function Index (line 497) | size_t, Index> {}
  function serialize (line 557) | static void serialize(Writer& writer, const variant_t& value) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/type_extensions.h
  function namespace (line 15) | namespace SpacetimeDB::bsatn {
  type class (line 105) | enum class
  function is_special_product_type (line 123) | inline bool is_special_product_type(const ProductType& product) {
  function SpecialTypeKind (line 201) | inline SpecialTypeKind get_special_type_kind(const AlgebraicType& type) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/types.h
  function namespace (line 37) | namespace SpacetimeDB {
  function serialize (line 181) | static void serialize(std::vector<uint8_t>& buffer, const u128& value) {
  function u128 (line 191) | static u128 deserialize(const uint8_t* data) {
  function to_string (line 206) | struct i128 {
  function serialize (line 251) | static void serialize(std::vector<uint8_t>& buffer, const i128& value) {
  function i128 (line 261) | static i128 deserialize(const uint8_t* data) {
  function u256 (line 278) | struct u256 {
  function operator (line 302) | bool operator!=(const u256& other) const {
  function serialize (line 347) | static void serialize(std::vector<uint8_t>& buffer, const u256& value) {
  function u256 (line 351) | static u256 deserialize(const uint8_t* bytes) {
  function i256 (line 361) | struct i256 {
  function operator (line 385) | bool operator!=(const i256& other) const {
  function serialize (line 417) | static void serialize(std::vector<uint8_t>& buffer, const i256& value) {
  function i256 (line 421) | static i256 deserialize(const uint8_t* bytes) {
  type ConnectionId (line 451) | struct ConnectionId {
  function uint8_t (line 586) | struct BsatnSerializer<uint8_t> {
  function uint16_t (line 597) | struct BsatnSerializer<uint16_t> {
  function uint32_t (line 611) | struct BsatnSerializer<uint32_t> {
  function uint64_t (line 628) | struct BsatnSerializer<uint64_t> {
  function int8_t (line 646) | struct BsatnSerializer<int8_t> {
  function int16_t (line 657) | struct BsatnSerializer<int16_t> {
  function int32_t (line 668) | struct BsatnSerializer<int32_t> {
  function int64_t (line 679) | struct BsatnSerializer<int64_t> {
  function bool (line 691) | struct BsatnSerializer<bool> {
  function float (line 703) | struct BsatnSerializer<float> {
  function double (line 719) | struct BsatnSerializer<double> {
  function string (line 736) | struct BsatnSerializer<std::string> {
  function u128 (line 752) | struct BsatnSerializer<u128> {
  function i128 (line 765) | struct BsatnSerializer<i128> {
  function u256 (line 778) | struct BsatnSerializer<u256> {
  function i256 (line 791) | struct BsatnSerializer<i256> {
  function std (line 833) | static std::optional<T> deserialize(const uint8_t* data, size_t& offset) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/types_impl.h
  function namespace (line 14) | namespace SpacetimeDB {
  function other (line 42) | inline bool Identity::operator==(const Identity& other) const {
  function other (line 46) | inline bool Identity::operator!=(const Identity& other) const {
  function other (line 50) | inline bool Identity::operator<(const Identity& other) const {
  function bsatn_serialize (line 55) | inline void Identity::bsatn_serialize(::SpacetimeDB::bsatn::Writer& writ...
  function bsatn_deserialize (line 62) | inline void Identity::bsatn_deserialize(::SpacetimeDB::bsatn::Reader& re...
  function bsatn_serialize (line 72) | inline void ConnectionId::bsatn_serialize(::SpacetimeDB::bsatn::Writer& ...
  function bsatn_deserialize (line 76) | inline void ConnectionId::bsatn_deserialize(::SpacetimeDB::bsatn::Reader...
  function bsatn_serialize (line 81) | inline void u256::bsatn_serialize(::SpacetimeDB::bsatn::Writer& writer) ...
  function bsatn_deserialize (line 85) | inline void u256::bsatn_deserialize(::SpacetimeDB::bsatn::Reader& reader) {
  function bsatn_serialize (line 95) | inline void i256::bsatn_serialize(::SpacetimeDB::bsatn::Writer& writer) ...
  function bsatn_deserialize (line 99) | inline void i256::bsatn_deserialize(::SpacetimeDB::bsatn::Reader& reader) {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/uuid.h
  function namespace (line 14) | namespace SpacetimeDB {
  function namespace (line 398) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/bsatn/writer.h
  function namespace (line 17) | namespace SpacetimeDB::bsatn {
  function serialize (line 167) | inline void serialize(Writer& w, bool value) {
  function serialize (line 171) | inline void serialize(Writer& w, uint8_t value) {
  function serialize (line 175) | inline void serialize(Writer& w, uint16_t value) {
  function serialize (line 179) | inline void serialize(Writer& w, uint32_t value) {
  function serialize (line 183) | inline void serialize(Writer& w, uint64_t value) {
  function serialize (line 187) | inline void serialize(Writer& w, const SpacetimeDB::u128& value) {
  function serialize (line 191) | inline void serialize(Writer& w, const SpacetimeDB::u256_placeholder& va...
  function serialize (line 195) | inline void serialize(Writer& w, int8_t value) {
  function serialize (line 199) | inline void serialize(Writer& w, int16_t value) {
  function serialize (line 203) | inline void serialize(Writer& w, int32_t value) {
  function serialize (line 207) | inline void serialize(Writer& w, int64_t value) {
  function serialize (line 211) | inline void serialize(Writer& w, const SpacetimeDB::i128& value) {
  function serialize (line 215) | inline void serialize(Writer& w, const SpacetimeDB::i256_placeholder& va...
  function serialize (line 219) | inline void serialize(Writer& w, float value) {
  function serialize (line 223) | inline void serialize(Writer& w, double value) {
  function serialize (line 227) | inline void serialize(Writer& w, const std::string& value) {
  function serialize (line 231) | inline void serialize(Writer& w, const std::vector<uint8_t>& value) {
  function serialize (line 235) | inline void serialize(Writer&, std::monostate) {

FILE: crates/bindings-cpp/include/spacetimedb/client_visibility_filter.h
  function namespace (line 5) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/database.h
  function namespace (line 21) | namespace SpacetimeDB {
  function explicit (line 138) | explicit TableAccessor(const std::string& table_name) : table_name_(tabl...
  function T (line 141) | T insert(const T& row) const {
  function delete_by_value (line 151) | uint32_t delete_by_value(const T& value) const {
  function update_by_value (line 156) | uint32_t update_by_value(const T& old_value, const T& new_value) const {
  function class (line 211) | class DatabaseContext {
  function namespace (line 270) | namespace spacetimedb {

FILE: crates/bindings-cpp/include/spacetimedb/enum_macro.h
  function namespace (line 370) | namespace SpacetimeDB {
  function namespace (line 429) | namespace SpacetimeDB::detail {

FILE: crates/bindings-cpp/include/spacetimedb/error_handling.h
  function namespace (line 10) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/http.h
  function namespace (line 44) | namespace SpacetimeDB {
  function HttpVersion (line 75) | enum class HttpVersion : uint8_t {
  type HttpRequest (line 170) | struct HttpRequest {
  type HttpResponse (line 185) | struct HttpResponse {
  function class (line 205) | class HttpClient {

FILE: crates/bindings-cpp/include/spacetimedb/http_client_impl.h
  function Outcome (line 14) | inline Outcome<HttpResponse> HttpClient::SendImpl(const HttpRequest& req...

FILE: crates/bindings-cpp/include/spacetimedb/http_convert.h
  function namespace (line 27) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/http_wire.h
  function namespace (line 32) | namespace SpacetimeDB {
  function namespace (line 163) | namespace SpacetimeDB::bsatn {

FILE: crates/bindings-cpp/include/spacetimedb/index_iterator.h
  function namespace (line 69) | namespace SpacetimeDB {
  type Iterator (line 635) | struct Iterator {
  function noexcept (line 644) | const noexcept { return iter->operator->(); }
  function Iterator (line 669) | Iterator begin() {
  function Iterator (line 676) | Iterator end() { return Iterator(nullptr, true); }
  function size (line 695) | size_t size() {
  function count (line 708) | size_t count() { return size(); }

FILE: crates/bindings-cpp/include/spacetimedb/internal/Module.h
  function namespace (line 16) | namespace SpacetimeDB {
  function class (line 128) | class Module {
  function RegisterReducer (line 138) | void RegisterReducer(const char* name, Func func) {
  function RegisterClientVisibilityFilter (line 143) | static void RegisterClientVisibilityFilter(const char* sql) {
  function SetMetadata (line 148) | static void SetMetadata([[maybe_unused]] const char* name, [[maybe_unuse...
  function SetCaseConversionPolicy (line 152) | static void SetCaseConversionPolicy(CaseConversionPolicy policy) {
  function RegisterExplicitTableName (line 156) | static void RegisterExplicitTableName(const char* source_name, const cha...
  function RegisterExplicitFunctionName (line 160) | static void RegisterExplicitFunctionName(const char* source_name, const ...
  function RegisterExplicitIndexName (line 164) | static void RegisterExplicitIndexName(const char* source_name, const cha...
  function initialize_module (line 181) | inline void initialize_module() {
  function BytesSink (line 187) | BytesSink bs{sink};
  function spacetimedb_call_reducer (line 192) | inline int16_t spacetimedb_call_reducer(uint32_t id, uint32_t args,

FILE: crates/bindings-cpp/include/spacetimedb/internal/Module_impl.h
  function namespace (line 36) | namespace SpacetimeDB {
  function write_u32 (line 129) | inline void write_u32(std::vector<uint8_t>& buf, uint32_t val) {
  function write_string (line 134) | inline void write_string(std::vector<uint8_t>& buf, const std::string& s...
  function read_u8 (line 139) | inline uint8_t read_u8(uint32_t source) {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/AlgebraicType.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/CaseConversionPolicy.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/ExplicitNameEntry.g.h
  function bsatn_serialize (line 21) | void bsatn_serialize(::SpacetimeDB::bsatn::Writer& writer) const {
  function SPACETIMEDB_INTERNAL_PRODUCT_TYPE (line 26) | SPACETIMEDB_INTERNAL_PRODUCT_TYPE(ExplicitNameEntry_Index_Wrapper) {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/ExplicitNames.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/FunctionVisibility.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/IndexType.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/Lifecycle.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/MiscModuleExport.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/NameMapping.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/ProductType.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/ProductTypeElement.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefV8.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefaultValueV10.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefaultValueV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDataV9.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV10.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV8.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV9.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexAlgorithm.g.h
  function bsatn_serialize (line 21) | void bsatn_serialize(::SpacetimeDB::bsatn::Writer& writer) const {
  function bsatn_serialize (line 30) | void bsatn_serialize(::SpacetimeDB::bsatn::Writer& writer) const {
  function SPACETIMEDB_INTERNAL_PRODUCT_TYPE (line 37) | SPACETIMEDB_INTERNAL_PRODUCT_TYPE(RawIndexAlgorithmDirectData) {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV10.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV8.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV9.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawLifeCycleReducerDefV10.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawMiscModuleExportV9.g.h
  function namespace (line 19) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDef.g.h
  function namespace (line 19) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV10.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV10Section.g.h
  function namespace (line 27) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV8.g.h
  function namespace (line 20) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV9.g.h
  function namespace (line 22) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV10.g.h
  function namespace (line 19) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV9.g.h
  function namespace (line 18) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV10.g.h
  function namespace (line 19) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV9.g.h
  function namespace (line 18) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawRowLevelSecurityDefV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScheduleDefV10.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScheduleDefV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScopedTypeNameV10.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScopedTypeNameV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV10.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV8.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV10.g.h
  function namespace (line 22) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV8.g.h
  function namespace (line 20) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV9.g.h
  function namespace (line 22) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTypeDefV10.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTypeDefV9.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawUniqueConstraintDataV9.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawViewDefV10.g.h
  function namespace (line 18) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/RawViewDefV9.g.h
  function namespace (line 18) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/ReducerDef.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/SumType.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/SumTypeVariant.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/TableAccess.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/TableDesc.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/TableType.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/TypeAlias.g.h
  function namespace (line 16) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen/Typespace.g.h
  function namespace (line 17) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/autogen_base.h
  function namespace (line 12) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/bsatn_adapters.h
  function namespace (line 9) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/internal/buffer_pool.h
  function namespace (line 6) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/internal/field_registration.h
  function namespace (line 21) | namespace SpacetimeDB {
  type bsatn_type_id (line 161) | struct bsatn_type_id
  type FieldDescriptor (line 171) | struct FieldDescriptor {
  type TableDescriptor (line 182) | struct TableDescriptor {
  function write_u32 (line 201) | inline void write_u32(std::vector<uint8_t>& buf, uint32_t val) {
  function write_string (line 208) | inline void write_string(std::vector<uint8_t>& buf, const std::string& s...

FILE: crates/bindings-cpp/include/spacetimedb/internal/forward_declarations.h
  function namespace (line 4) | namespace SpacetimeDB::Internal {

FILE: crates/bindings-cpp/include/spacetimedb/internal/module_type_registration.h
  function namespace (line 24) | namespace SpacetimeDB {
  function std (line 36) | inline std::string demangle_cpp_type_name(const char* name) {
  function namespace (line 49) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/internal/runtime_registration.h
  function namespace (line 11) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/internal/template_utils.h
  function namespace (line 10) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/internal/v10_builder.h
  function namespace (line 40) | namespace SpacetimeDB {
  function RawReducerDefV10 (line 381) | RawReducerDefV10 reducer_def{
  function RawReducerDefV10 (line 431) | RawReducerDefV10 reducer_def{
  function RawViewDefV10 (line 496) | RawViewDefV10 view_def{
  function result (line 542) | auto result = std::apply([&ctx_inner, fn](auto&&... unpacked) {
  function RawProcedureDefV10 (line 578) | RawProcedureDefV10 procedure_def{
  function RegisterSchedule (line 587) | void RegisterSchedule(const std::string& table_name, uint16_t scheduled_...
  function Typespace (line 662) | Typespace typespace_{}

FILE: crates/bindings-cpp/include/spacetimedb/internal/v9_builder.h
  function namespace (line 36) | namespace SpacetimeDB {
  function RawViewDefV9 (line 925) | RawViewDefV9 view_def{
  function else (line 937) | else if constexpr (std::is_same_v<ContextType, AnonymousViewContext>) {
  function RawViewDefV9 (line 964) | RawViewDefV9 view_def{
  function result (line 1076) | auto result = std::apply([&ctx_inner, fn](auto&&... args) {
  function RawProcedureDefV9 (line 1097) | RawProcedureDefV9 procedure_def{

FILE: crates/bindings-cpp/include/spacetimedb/jwt_claims.h
  function namespace (line 10) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/logger.h
  function namespace (line 12) | namespace SpacetimeDB {
  function log (line 82) | inline void log(LogLevel level, std::string_view message) {
  function log (line 97) | inline void log(LogLevel level, const std::string& message) {
  function log_error (line 160) | inline void log_error(std::string_view message) { log(LogLevelValue::ERR...
  function log_warn (line 161) | inline void log_warn(std::string_view message) { log(LogLevelValue::WARN...
  function log_info (line 162) | inline void log_info(std::string_view message) { log(LogLevelValue::INFO...
  function log_debug (line 163) | inline void log_debug(std::string_view message) { log(LogLevelValue::DEB...
  function log_trace (line 164) | inline void log_trace(std::string_view message) { log(LogLevelValue::TRA...
  function log_panic (line 165) | inline void log_panic(std::string_view message) { log(LogLevelValue::ERR...
  function log_error (line 168) | inline void log_error(const std::string& message) { log_error(std::strin...
  function log_warn (line 169) | inline void log_warn(const std::string& message) { log_warn(std::string_...
  function log_info (line 170) | inline void log_info(const std::string& message) { log_info(std::string_...
  function log_debug (line 171) | inline void log_debug(const std::string& message) { log_debug(std::strin...
  function log_trace (line 172) | inline void log_trace(const std::string& message) { log_trace(std::strin...
  function class (line 198) | class LogStopwatch {
  function explicit (line 213) | explicit LogStopwatch(const std::string& name) : LogStopwatch(std::strin...
  function end (line 227) | void end() {

FILE: crates/bindings-cpp/include/spacetimedb/macros.h
  function namespace (line 13) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/outcome.h
  function namespace (line 10) | namespace SpacetimeDB {
  function std (line 63) | const std::string& error() const { return std::get<1>(value_).msg; }
  function explicit (line 80) | explicit Outcome(OutcomeError error) : error_(std::move(error)) {}
  function Outcome (line 86) | static Outcome Ok() {
  function Outcome (line 90) | static Outcome Err(std::string error) {
  function Outcome (line 94) | static Outcome Err(const char* error) {
  function Outcome (line 109) | inline Outcome<void> Ok() {
  function Outcome (line 114) | inline Outcome<void> Err(std::string msg) {
  function Outcome (line 118) | inline Outcome<void> Err(const char* msg) {

FILE: crates/bindings-cpp/include/spacetimedb/procedure_context.h
  function identity (line 55) | struct ProcedureContext {
  function TxContext (line 212) | TxContext tx{reducer_ctx};
  function TxContext (line 275) | TxContext tx{reducer_ctx};

FILE: crates/bindings-cpp/include/spacetimedb/procedure_macros.h
  function namespace (line 12) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/random.h
  function class (line 47) | class StdbRng {

FILE: crates/bindings-cpp/include/spacetimedb/range_queries.h
  function namespace (line 7) | namespace SpacetimeDB {
  function delete_range (line 153) | uint32_t delete_range(const Range<FieldType>& range) {
  function count_range (line 158) | size_t count_range(const Range<FieldType>& range) {
  type RangeStart (line 170) | struct RangeStart {}
  type RangeEnd (line 171) | struct RangeEnd {}
  function RangeStart (line 173) | constexpr RangeStart range_start{}
  function RangeEnd (line 174) | constexpr RangeEnd range_end{}

FILE: crates/bindings-cpp/include/spacetimedb/readonly_database_context.h
  function namespace (line 9) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/readonly_field_accessors.h
  function namespace (line 14) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/readonly_table_accessor.h
  function namespace (line 11) | namespace SpacetimeDB {
  function namespace (line 118) | namespace spacetimedb {

FILE: crates/bindings-cpp/include/spacetimedb/reducer_context.h
  function namespace (line 16) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/reducer_error.h
  function namespace (line 47) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/table.h
  function namespace (line 27) | namespace SpacetimeDB {
  function namespace (line 83) | namespace detail {
  function explicit (line 178) | explicit TableIterator(TableId table_id) {
  function deserialize_batch (line 328) | void deserialize_batch(size_t buffer_len) {
  function T (line 385) | T insert(const T& row_data) {
  function delete_all_by_eq (line 469) | uint32_t delete_all_by_eq(const std::vector<T>& rows) {
  function count (line 551) | uint64_t count() {
  function empty (line 558) | bool empty() { return count() == 0; }

FILE: crates/bindings-cpp/include/spacetimedb/table_with_constraints.h
  function namespace (line 19) | namespace SpacetimeDB {
  function delete_all (line 580) | uint32_t delete_all(const FieldType& value) const {
  function IndexId (line 621) | IndexId id{0};
  function namespace (line 691) | namespace detail { \

FILE: crates/bindings-cpp/include/spacetimedb/tx_context.h
  function namespace (line 6) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/view_context.h
  function namespace (line 9) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/include/spacetimedb/view_macros.h
  function namespace (line 12) | namespace SpacetimeDB {

FILE: crates/bindings-cpp/src/abi/module_exports.cpp
  function __describe_module__ (line 16) | void __describe_module__(SpacetimeDB::BytesSink description) {
  function __call_reducer__ (line 22) | int16_t __call_reducer__(
  function __call_view__ (line 56) | int16_t __call_view__(
  function __call_view_anon__ (line 71) | int16_t __call_view_anon__(
  function __call_procedure__ (line 84) | int16_t __call_procedure__(

FILE: crates/bindings-cpp/src/abi/wasi_shims.cpp
  type __wasi_ciovec_t (line 19) | struct __wasi_ciovec_t {
  function emscripten_notify_memory_growth (line 189) | void emscripten_notify_memory_growth(int32_t) {

FILE: crates/bindings-cpp/src/internal/AlgebraicType.cpp
  type SpacetimeDB::Internal (line 8) | namespace SpacetimeDB::Internal {
    function AlgebraicType (line 77) | AlgebraicType& AlgebraicType::operator=(const AlgebraicType& other) {

FILE: crates/bindings-cpp/src/internal/Module.cpp
  type SpacetimeDB (line 24) | namespace SpacetimeDB {
    type Internal (line 27) | namespace Internal {
      type ReducerHandler (line 32) | struct ReducerHandler {
      type ViewHandler (line 40) | struct ViewHandler {
      type AnonymousViewHandler (line 46) | struct AnonymousViewHandler {
      type ProcedureHandler (line 53) | struct ProcedureHandler {
      type ViewResultHeader (line 65) | enum class ViewResultHeader : uint8_t {
      function SetMultiplePrimaryKeyError (line 82) | void SetMultiplePrimaryKeyError(const std::string& table_name) {
      function SetConstraintRegistrationError (line 88) | void SetConstraintRegistrationError(const std::string& code, const s...
      function RegisterReducerHandler (line 96) | void RegisterReducerHandler(const std::string& name,
      function RegisterViewHandler (line 103) | void RegisterViewHandler(const std::string& name,
      function RegisterAnonymousViewHandler (line 109) | void RegisterAnonymousViewHandler(const std::string& name,
      function RegisterProcedureHandler (line 115) | void RegisterProcedureHandler(const std::string& name,
      function GetViewHandlerCount (line 121) | size_t GetViewHandlerCount() {
      function GetAnonymousViewHandlerCount (line 125) | size_t GetAnonymousViewHandlerCount() {
      function GetProcedureHandlerCount (line 130) | size_t GetProcedureHandlerCount() {
      function SetTableIsEventFlag (line 134) | void SetTableIsEventFlag(const std::string& table_name, bool is_even...
      function GetTableIsEventFlag (line 138) | bool GetTableIsEventFlag(const std::string& table_name) {
      function ClearModuleRegistrationState (line 143) | void ClearModuleRegistrationState() {
      function __preinit__01_clear_global_state (line 162) | __attribute__((export_name("__preinit__01_clear_global_state")))
      function __preinit__99_validate_types (line 172) | __attribute__((export_name("__preinit__99_validate_types")))
      function ConsumeBytes (line 366) | std::vector<uint8_t> ConsumeBytes(BytesSource source) {
      function WriteBytes (line 429) | void WriteBytes(BytesSink sink, const std::vector<uint8_t>& bytes) {
      function Status (line 438) | Status Module::__call_reducer__(

FILE: crates/bindings-cpp/src/internal/module_type_registration.cpp
  type SpacetimeDB (line 13) | namespace SpacetimeDB {
    type Internal (line 14) | namespace Internal {
      function initializeModuleTypeRegistration (line 28) | void initializeModuleTypeRegistration() {
      function ModuleTypeRegistration (line 36) | ModuleTypeRegistration& getModuleTypeRegistration() {
      function AlgebraicType (line 45) | AlgebraicType ModuleTypeRegistration::registerType(const bsatn::Alge...
      function AlgebraicType (line 296) | AlgebraicType ModuleTypeRegistration::convertUnitType() const {
      function AlgebraicType (line 371) | AlgebraicType ModuleTypeRegistration::convertPrimitive(const bsatn::...
      function AlgebraicType (line 411) | AlgebraicType ModuleTypeRegistration::convertArray(const bsatn::Alge...
      function AlgebraicType (line 423) | AlgebraicType ModuleTypeRegistration::convertSpecialType(const bsatn...
      function AlgebraicType (line 441) | AlgebraicType ModuleTypeRegistration::convertInlineSum(const bsatn::...
      function AlgebraicType (line 459) | AlgebraicType ModuleTypeRegistration::registerComplexType(const bsat...
      function AlgebraicType (line 515) | AlgebraicType ModuleTypeRegistration::processProduct(const bsatn::Al...
      function AlgebraicType (line 534) | AlgebraicType ModuleTypeRegistration::processSum(const bsatn::Algebr...

FILE: crates/bindings-cpp/src/internal/v10_builder.cpp
  type SpacetimeDB (line 13) | namespace SpacetimeDB {
    type Internal (line 14) | namespace Internal {
      function initializeV10Builder (line 18) | void initializeV10Builder() {
      function V10Builder (line 22) | V10Builder& getV10Builder() {
      function AlgebraicType (line 88) | AlgebraicType V10Builder::MakeUnitAlgebraicType() {
      function AlgebraicType (line 94) | AlgebraicType V10Builder::MakeStringAlgebraicType() {
      function RawIndexDefV10 (line 153) | RawIndexDefV10 V10Builder::CreateBTreeIndex(const std::string& table...
      function RawConstraintDefV10 (line 169) | RawConstraintDefV10 V10Builder::CreateUniqueConstraint(const std::st...
      function RawModuleDefV10 (line 184) | RawModuleDefV10 V10Builder::BuildModuleDef() const {

FILE: crates/bindings-cpp/src/internal/v9_builder.cpp
  type SpacetimeDB (line 34) | namespace SpacetimeDB {
    type Internal (line 35) | namespace Internal {
      function RawModuleDefV9 (line 39) | RawModuleDefV9& GetV9Module() {
      function ClearV9CompatModuleState (line 43) | void ClearV9CompatModuleState() {
      function initializeV9Builder (line 52) | void initializeV9Builder() {
      function V9Builder (line 58) | V9Builder& getV9Builder() {
      function AlgebraicType (line 75) | AlgebraicType V9Builder::registerType(const bsatn::AlgebraicType& bs...
      function RawTableDefV9 (line 315) | RawTableDefV9* V9Builder::findTableByName(const std::string& table_n...
      function RawIndexDefV9 (line 326) | RawIndexDefV9 V9Builder::createBTreeIndex(const std::string& table_n...
      function RawConstraintDefV9 (line 344) | RawConstraintDefV9 V9Builder::createUniqueConstraint(const std::stri...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_constraint_simple.cpp
  type SimpleConstraintTest (line 6) | struct SimpleConstraintTest {
  function SPACETIMEDB_INIT (line 14) | SPACETIMEDB_INIT(init, ReducerContext ctx) {
  function SPACETIMEDB_REDUCER (line 19) | SPACETIMEDB_REDUCER(test_simple_constraint, SpacetimeDB::ReducerContext ...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_large_struct.cpp
  type EveryPrimitiveStruct (line 10) | struct EveryPrimitiveStruct {
  type TestTable (line 35) | struct TestTable {
  function SPACETIMEDB_REDUCER (line 43) | SPACETIMEDB_REDUCER(test_basic, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_minimal_fail.cpp
  type DirectTable (line 10) | struct DirectTable { SimpleEnum e; }

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_optional_large_struct.cpp
  type EveryPrimitiveStruct (line 10) | struct EveryPrimitiveStruct {
  type OptionLargeStruct (line 35) | struct OptionLargeStruct {
  function SPACETIMEDB_REDUCER (line 42) | SPACETIMEDB_REDUCER(test_basic, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_simple_enum.cpp
  type SimpleEnumTable (line 15) | struct SimpleEnumTable {
  type TestEnumTable (line 23) | struct TestEnumTable {
  function SPACETIMEDB_REDUCER (line 31) | SPACETIMEDB_REDUCER(insert_enum, ReducerContext ctx, SimpleEnum e, int32...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_special.cpp
  type DebugIdentityVec (line 9) | struct DebugIdentityVec {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_special_constraints.cpp
  type TestIdentity (line 9) | struct TestIdentity { Identity i; }
  type UniqueIdentity (line 14) | struct UniqueIdentity { Identity i; int32_t data; }
  type PkIdentity (line 20) | struct PkIdentity { Identity i; int32_t data; }
  function SPACETIMEDB_REDUCER (line 26) | SPACETIMEDB_REDUCER(test_basic, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_special_reducers.cpp
  type TestIdentity (line 9) | struct TestIdentity { Identity i; }
  type TestConnectionId (line 13) | struct TestConnectionId { ConnectionId c; }
  type IdentityParam (line 18) | struct IdentityParam { Identity i; }
  type ConnectionIdParam (line 21) | struct ConnectionIdParam { ConnectionId c; }
  function SPACETIMEDB_REDUCER (line 25) | SPACETIMEDB_REDUCER(insert_identity, ReducerContext ctx, IdentityParam p...
  function SPACETIMEDB_REDUCER (line 30) | SPACETIMEDB_REDUCER(insert_connection_id, ReducerContext ctx, Connection...
  function SPACETIMEDB_REDUCER (line 36) | SPACETIMEDB_REDUCER(test_basic, ReducerContext ctx)
  function SPACETIMEDB_REDUCER (line 42) | SPACETIMEDB_REDUCER(insert_direct_identity, ReducerContext ctx, Identity i)
  function SPACETIMEDB_REDUCER (line 47) | SPACETIMEDB_REDUCER(insert_direct_connection_id, ReducerContext ctx, Con...
  function SPACETIMEDB_REDUCER (line 52) | SPACETIMEDB_REDUCER(insert_direct_timestamp, ReducerContext ctx, Timesta...
  function SPACETIMEDB_REDUCER (line 57) | SPACETIMEDB_REDUCER(insert_direct_time_duration, ReducerContext ctx, Tim...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_trace.cpp
  type DebugTable (line 7) | struct DebugTable {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_vector_only.cpp
  type VectorTable (line 12) | struct VectorTable {
  function SPACETIMEDB_REDUCER (line 18) | SPACETIMEDB_REDUCER(insert_test, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/debug_vector_only_simple.cpp
  type VectorTable (line 15) | struct VectorTable { VectorEnum ve; }

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_autoinc_non_integer.cpp
  type StringAutoInc (line 9) | struct StringAutoInc {
  type FloatAutoInc (line 18) | struct FloatAutoInc {
  type DoubleAutoInc (line 27) | struct DoubleAutoInc {
  type BoolAutoInc (line 36) | struct BoolAutoInc {
  type IdentityAutoInc (line 45) | struct IdentityAutoInc {
  type NestedStruct (line 54) | struct NestedStruct {
  type StructAutoInc (line 60) | struct StructAutoInc {
  type VectorAutoInc (line 69) | struct VectorAutoInc {
  type OptionalAutoInc (line 78) | struct OptionalAutoInc {
  type ValidU32AutoInc (line 87) | struct ValidU32AutoInc {
  type ValidU64AutoInc (line 95) | struct ValidU64AutoInc {
  type ValidI32AutoInc (line 103) | struct ValidI32AutoInc {
  type ValidI64AutoInc (line 111) | struct ValidI64AutoInc {
  function SPACETIMEDB_REDUCER (line 120) | SPACETIMEDB_REDUCER(test_autoinc_types, SpacetimeDB::ReducerContext ctx)
  function SPACETIMEDB_INIT (line 141) | SPACETIMEDB_INIT(init, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_circular_ref.cpp
  type StructA (line 11) | struct StructA {
  function SPACETIMEDB_REDUCER (line 23) | SPACETIMEDB_REDUCER(test_circular_ref, SpacetimeDB::ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_default_missing_field.cpp
  type BadDefaultRow (line 5) | struct BadDefaultRow {
  function SPACETIMEDB_REDUCER (line 16) | SPACETIMEDB_REDUCER(insert_bad_default_row, ReducerContext ctx, uint32_t...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_invalid_index.cpp
  type ComplexData (line 8) | struct ComplexData {
  type UniqueOnStruct (line 16) | struct UniqueOnStruct {
  type UniqueOnVector (line 32) | struct UniqueOnVector {
  type UniqueOnOptional (line 45) | struct UniqueOnOptional {
  type UniqueOnFloat (line 58) | struct UniqueOnFloat {
  type IndexOnDouble (line 71) | struct IndexOnDouble {
  type UniqueOnScheduleAt (line 84) | struct UniqueOnScheduleAt {
  type ValidUniqueInt (line 97) | struct ValidUniqueInt {
  type ValidIndexString (line 109) | struct ValidIndexString {
  type ValidUniqueIdentity (line 120) | struct ValidUniqueIdentity {
  type ValidIndexTimestamp (line 131) | struct ValidIndexTimestamp {
  type ValidUniqueBool (line 142) | struct ValidUniqueBool {
  function SPACETIMEDB_REDUCER (line 154) | SPACETIMEDB_REDUCER(test_field_macro_validation, SpacetimeDB::ReducerCon...
  function SPACETIMEDB_INIT (line 174) | SPACETIMEDB_INIT(init, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_multicolumn_missing_field.cpp
  type BadIndexRow (line 5) | struct BadIndexRow {
  function SPACETIMEDB_REDUCER (line 16) | SPACETIMEDB_REDUCER(insert_bad_index_row, ReducerContext ctx, uint32_t i...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_multiple_pk.cpp
  type DoublePrimaryKey (line 9) | struct DoublePrimaryKey {
  type MixedPrimaryKey (line 20) | struct MixedPrimaryKey {
  type DoubleAutoInc (line 31) | struct DoubleAutoInc {
  type TriplePrimaryKey (line 42) | struct TriplePrimaryKey {
  type SinglePrimaryKey (line 55) | struct SinglePrimaryKey {
  type SingleAutoInc (line 64) | struct SingleAutoInc {
  function SPACETIMEDB_REDUCER (line 73) | SPACETIMEDB_REDUCER(test_multiple_pks, SpacetimeDB::ReducerContext ctx)
  function SPACETIMEDB_INIT (line 95) | SPACETIMEDB_INIT(init, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_non_spacetimedb_type.cpp
  type UnsupportedType (line 10) | struct UnsupportedType {
  type ThreadContainingType (line 17) | struct ThreadContainingType {
  type RawPointerType (line 24) | struct RawPointerType {
  type SmartPointerType (line 31) | struct SmartPointerType {
  type AtomicType (line 38) | struct AtomicType {
  type ValidType (line 45) | struct ValidType {
  function SPACETIMEDB_REDUCER (line 55) | SPACETIMEDB_REDUCER(test_unsupported_arg, SpacetimeDB::ReducerContext ct...
  function SPACETIMEDB_REDUCER (line 62) | SPACETIMEDB_REDUCER(test_valid_arg, SpacetimeDB::ReducerContext ctx, Val...
  type ComplexBadType (line 69) | struct ComplexBadType {
  function SPACETIMEDB_INIT (line 77) | SPACETIMEDB_INIT(init, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/error_scheduled_id_pk.cpp
  type BadScheduledTable (line 9) | struct BadScheduledTable {
  type WrongPkScheduledTable (line 19) | struct WrongPkScheduledTable {
  type UniqueScheduledTable (line 30) | struct UniqueScheduledTable {
  type GoodScheduledTable (line 41) | struct GoodScheduledTable {
  function SPACETIMEDB_REDUCER (line 52) | SPACETIMEDB_REDUCER(process_bad_schedule, SpacetimeDB::ReducerContext ct...
  function SPACETIMEDB_REDUCER (line 58) | SPACETIMEDB_REDUCER(process_wrong_pk_schedule, SpacetimeDB::ReducerConte...
  function SPACETIMEDB_REDUCER (line 64) | SPACETIMEDB_REDUCER(process_unique_schedule, SpacetimeDB::ReducerContext...
  function SPACETIMEDB_REDUCER (line 70) | SPACETIMEDB_REDUCER(process_good_schedule, SpacetimeDB::ReducerContext c...
  function SPACETIMEDB_REDUCER (line 77) | SPACETIMEDB_REDUCER(test_schedule_tables, SpacetimeDB::ReducerContext ctx)
  function SPACETIMEDB_INIT (line 100) | SPACETIMEDB_INIT(init, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module01_basic_unsigned.cpp
  type OneU8 (line 11) | struct OneU8 { uint8_t n; }
  type OneU16 (line 16) | struct OneU16 { uint16_t n; }
  type OneU32 (line 21) | struct OneU32 { uint32_t n; }
  type VecU8 (line 26) | struct VecU8 { std::vector<uint8_t> n; }
  type VecU16 (line 31) | struct VecU16 { std::vector<uint16_t> n; }
  type VecU32 (line 36) | struct VecU32 { std::vector<uint32_t> n; }
  type UniqueU8 (line 41) | struct UniqueU8 { uint8_t n; int32_t data; }
  type UniqueU16 (line 47) | struct UniqueU16 { uint16_t n; int32_t data; }
  type UniqueU32 (line 53) | struct UniqueU32 { uint32_t n; int32_t data; }
  type PkU8 (line 59) | struct PkU8 { uint8_t n; int32_t data; }
  type PkU16 (line 65) | struct PkU16 { uint16_t n; int32_t data; }
  type PkU32 (line 71) | struct PkU32 { uint32_t n; int32_t data; }
  function SPACETIMEDB_REDUCER (line 77) | SPACETIMEDB_REDUCER(insert_one_u8, ReducerContext ctx, uint8_t n)
  function SPACETIMEDB_REDUCER (line 82) | SPACETIMEDB_REDUCER(insert_one_u16, ReducerContext ctx, uint16_t n)
  function SPACETIMEDB_REDUCER (line 87) | SPACETIMEDB_REDUCER(insert_one_u32, ReducerContext ctx, uint32_t n)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module02_large_unsigned.cpp
  type OneU64 (line 11) | struct OneU64 { uint64_t n; }
  type OneU128 (line 16) | struct OneU128 { u128 n; }
  type OneU256 (line 21) | struct OneU256 { u256 n; }
  type VecU64 (line 26) | struct VecU64 { std::vector<uint64_t> n; }
  type VecU128 (line 31) | struct VecU128 { std::vector<u128> n; }
  type VecU256 (line 36) | struct VecU256 { std::vector<u256> n; }
  type UniqueU64 (line 41) | struct UniqueU64 { uint64_t n; int32_t data; }
  type UniqueU128 (line 47) | struct UniqueU128 { u128 n; int32_t data; }
  type UniqueU256 (line 53) | struct UniqueU256 { u256 n; int32_t data; }
  type PkU64 (line 59) | struct PkU64 { uint64_t n; int32_t data; }
  type PkU128 (line 65) | struct PkU128 { u128 n; int32_t data; }
  type PkU256 (line 71) | struct PkU256 { u256 n; int32_t data; }
  function SPACETIMEDB_REDUCER (line 77) | SPACETIMEDB_REDUCER(insert_one_u64, ReducerContext ctx, uint64_t n)
  function SPACETIMEDB_REDUCER (line 82) | SPACETIMEDB_REDUCER(insert_one_u128, ReducerContext ctx, u128 n)
  function SPACETIMEDB_REDUCER (line 87) | SPACETIMEDB_REDUCER(insert_one_u256, ReducerContext ctx, u256 n)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module03_basic_signed.cpp
  type OneI8 (line 11) | struct OneI8 { int8_t n; }
  type OneI16 (line 16) | struct OneI16 { int16_t n; }
  type OneI32 (line 21) | struct OneI32 { int32_t n; }
  type VecI8 (line 26) | struct VecI8 { std::vector<int8_t> n; }
  type VecI16 (line 31) | struct VecI16 { std::vector<int16_t> n; }
  type VecI32 (line 36) | struct VecI32 { std::vector<int32_t> n; }
  type UniqueI8 (line 41) | struct UniqueI8 { int8_t n; int32_t data; }
  type UniqueI16 (line 47) | struct UniqueI16 { int16_t n; int32_t data; }
  type UniqueI32 (line 53) | struct UniqueI32 { int32_t n; int32_t data; }
  type PkI8 (line 59) | struct PkI8 { int8_t n; int32_t data; }
  type PkI16 (line 65) | struct PkI16 { int16_t n; int32_t data; }
  type PkI32 (line 71) | struct PkI32 { int32_t n; int32_t data; }
  function SPACETIMEDB_REDUCER (line 77) | SPACETIMEDB_REDUCER(insert_one_i8, ReducerContext ctx, int8_t n)
  function SPACETIMEDB_REDUCER (line 82) | SPACETIMEDB_REDUCER(insert_one_i16, ReducerContext ctx, int16_t n)
  function SPACETIMEDB_REDUCER (line 87) | SPACETIMEDB_REDUCER(insert_one_i32, ReducerContext ctx, int32_t n)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module04_large_signed.cpp
  type OneI64 (line 11) | struct OneI64 { int64_t n; }
  type OneI128 (line 16) | struct OneI128 { i128 n; }
  type OneI256 (line 21) | struct OneI256 { i256 n; }
  type VecI64 (line 26) | struct VecI64 { std::vector<int64_t> n; }
  type VecI128 (line 31) | struct VecI128 { std::vector<i128> n; }
  type VecI256 (line 36) | struct VecI256 { std::vector<i256> n; }
  type UniqueI64 (line 41) | struct UniqueI64 { int64_t n; int32_t data; }
  type UniqueI128 (line 47) | struct UniqueI128 { i128 n; int32_t data; }
  type UniqueI256 (line 53) | struct UniqueI256 { i256 n; int32_t data; }
  type PkI64 (line 59) | struct PkI64 { int64_t n; int32_t data; }
  type PkI128 (line 65) | struct PkI128 { i128 n; int32_t data; }
  type PkI256 (line 71) | struct PkI256 { i256 n; int32_t data; }
  function SPACETIMEDB_REDUCER (line 77) | SPACETIMEDB_REDUCER(insert_one_i64, ReducerContext ctx, int64_t n)
  function SPACETIMEDB_REDUCER (line 82) | SPACETIMEDB_REDUCER(insert_one_i128, ReducerContext ctx, i128 n)
  function SPACETIMEDB_REDUCER (line 87) | SPACETIMEDB_REDUCER(insert_one_i256, ReducerContext ctx, i256 n)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module05_float_bool.cpp
  type OneBool (line 11) | struct OneBool { bool b; }
  type OneF32 (line 16) | struct OneF32 { float f; }
  type OneF64 (line 21) | struct OneF64 { double f; }
  type VecBool (line 26) | struct VecBool { std::vector<bool> b; }
  type VecF32 (line 31) | struct VecF32 { std::vector<float> f; }
  type VecF64 (line 36) | struct VecF64 { std::vector<double> f; }
  type UniqueBool (line 41) | struct UniqueBool { bool b; int32_t data; }
  type PkBool (line 47) | struct PkBool { bool b; int32_t data; }
  function SPACETIMEDB_REDUCER (line 53) | SPACETIMEDB_REDUCER(insert_one_bool, ReducerContext ctx, bool b)
  function SPACETIMEDB_REDUCER (line 58) | SPACETIMEDB_REDUCER(insert_one_f32, ReducerContext ctx, float f)
  function SPACETIMEDB_REDUCER (line 63) | SPACETIMEDB_REDUCER(insert_one_f64, ReducerContext ctx, double f)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module06_string.cpp
  type OneString (line 10) | struct OneString { std::string s; }
  type VecString (line 15) | struct VecString { std::vector<std::string> s; }
  type UniqueString (line 20) | struct UniqueString { std::string s; int32_t data; }
  type PkString (line 26) | struct PkString { std::string s; int32_t data; }
  function SPACETIMEDB_REDUCER (line 32) | SPACETIMEDB_REDUCER(insert_one_string, ReducerContext ctx, std::string s)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module07_special_types.cpp
  type OneIdentity (line 11) | struct OneIdentity { Identity i; }
  type OneConnectionId (line 16) | struct OneConnectionId { ConnectionId a; }
  type OneTimestamp (line 21) | struct OneTimestamp { Timestamp t; }
  type VecIdentity (line 26) | struct VecIdentity { std::vector<Identity> i; }
  type VecConnectionId (line 31) | struct VecConnectionId { std::vector<ConnectionId> a; }
  type VecTimestamp (line 36) | struct VecTimestamp { std::vector<Timestamp> t; }
  type UniqueIdentity (line 41) | struct UniqueIdentity { Identity i; int32_t data; }
  type UniqueConnectionId (line 47) | struct UniqueConnectionId { ConnectionId a; int32_t data; }
  type PkIdentity (line 53) | struct PkIdentity { Identity i; int32_t data; }
  type PkConnectionId (line 59) | struct PkConnectionId { ConnectionId a; int32_t data; }
  type Users (line 65) | struct Users {
  type IdentityParam (line 74) | struct IdentityParam { Identity i; }
  type ConnectionIdParam (line 77) | struct ConnectionIdParam { ConnectionId a; }
  type TimestampParam (line 80) | struct TimestampParam { Timestamp t; }
  function SPACETIMEDB_REDUCER (line 84) | SPACETIMEDB_REDUCER(insert_one_identity, ReducerContext ctx, IdentityPar...
  function SPACETIMEDB_REDUCER (line 89) | SPACETIMEDB_REDUCER(insert_one_connection_id, ReducerContext ctx, Connec...
  function SPACETIMEDB_REDUCER (line 94) | SPACETIMEDB_REDUCER(insert_one_timestamp, ReducerContext ctx, TimestampP...
  function SPACETIMEDB_REDUCER (line 100) | SPACETIMEDB_REDUCER(insert_direct_identity, ReducerContext ctx, Identity i)
  function SPACETIMEDB_REDUCER (line 105) | SPACETIMEDB_REDUCER(insert_direct_connection_id, ReducerContext ctx, Con...
  function SPACETIMEDB_REDUCER (line 110) | SPACETIMEDB_REDUCER(insert_direct_timestamp, ReducerContext ctx, Timesta...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module08_enums.cpp
  type IndexedSimpleEnum (line 68) | struct IndexedSimpleEnum {
  function SPACETIMEDB_REDUCER (line 76) | SPACETIMEDB_REDUCER(insert_one_simple_enum, ReducerContext ctx, SimpleEn...
  function SPACETIMEDB_REDUCER (line 81) | SPACETIMEDB_REDUCER(insert_one_enum_with_payload, ReducerContext ctx, En...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module09_structs.cpp
  type VecUnitStruct (line 123) | struct VecUnitStruct { std::vector<UnitStruct> s; }
  type VecByteStruct (line 128) | struct VecByteStruct { std::vector<ByteStruct> s; }
  type VecEveryPrimitiveStruct (line 133) | struct VecEveryPrimitiveStruct { std::vector<EveryPrimitiveStruct> s; }
  type VecEveryVecStruct (line 138) | struct VecEveryVecStruct { std::vector<EveryVecStruct> s; }
  type LargeTable (line 143) | struct LargeTable {
  function SPACETIMEDB_REDUCER (line 171) | SPACETIMEDB_REDUCER(insert_one_unit_struct, ReducerContext ctx, UnitStru...
  function SPACETIMEDB_REDUCER (line 176) | SPACETIMEDB_REDUCER(insert_one_byte_struct, ReducerContext ctx, ByteStru...
  function SPACETIMEDB_REDUCER (line 181) | SPACETIMEDB_REDUCER(insert_one_every_primitive_struct, ReducerContext ct...
  function SPACETIMEDB_REDUCER (line 186) | SPACETIMEDB_REDUCER(insert_one_every_vec_struct, ReducerContext ctx, Eve...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module10_vectors.cpp
  type OneU8 (line 11) | struct OneU8 { uint8_t n; }
  type VecU8 (line 14) | struct VecU8 { std::vector<uint8_t> n; }
  type TableHoldsTable (line 18) | struct TableHoldsTable {
  type VecVecU8 (line 26) | struct VecVecU8 { std::vector<std::vector<uint8_t>> n; }
  type VecVecString (line 30) | struct VecVecString { std::vector<std::vector<std::string>> s; }
  function SPACETIMEDB_REDUCER (line 35) | SPACETIMEDB_REDUCER(insert_table_holds_table, ReducerContext ctx, OneU8 ...
  function SPACETIMEDB_REDUCER (line 41) | SPACETIMEDB_REDUCER(insert_vec_u8, ReducerContext ctx, std::vector<uint8...
  function SPACETIMEDB_REDUCER (line 46) | SPACETIMEDB_REDUCER(insert_vec_vec_u8, ReducerContext ctx, std::vector<s...
  function SPACETIMEDB_REDUCER (line 51) | SPACETIMEDB_REDUCER(insert_vec_vec_string, ReducerContext ctx, std::vect...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module11_optional.cpp
  type EveryPrimitiveStruct (line 16) | struct EveryPrimitiveStruct {
  type OptionI32 (line 45) | struct OptionI32 { std::optional<int32_t> n; }
  type OptionString (line 50) | struct OptionString { std::optional<std::string> s; }
  type OptionIdentity (line 55) | struct OptionIdentity { std::optional<Identity> i; }
  type OptionSimpleEnum (line 60) | struct OptionSimpleEnum { std::optional<SimpleEnum> e; }
  type OptionEveryPrimitiveStruct (line 65) | struct OptionEveryPrimitiveStruct { std::optional<EveryPrimitiveStruct> ...
  type OptionVecOptionI32 (line 70) | struct OptionVecOptionI32 { std::optional<std::vector<std::optional<int3...
  type OptionalI32Param (line 75) | struct OptionalI32Param { std::optional<int32_t> n; }
  type OptionalStringParam (line 78) | struct OptionalStringParam { std::optional<std::string> s; }
  type OptionalIdentityParam (line 81) | struct OptionalIdentityParam { std::optional<Identity> i; }
  function SPACETIMEDB_REDUCER (line 85) | SPACETIMEDB_REDUCER(insert_option_i32, ReducerContext ctx, OptionalI32Pa...
  function SPACETIMEDB_REDUCER (line 90) | SPACETIMEDB_REDUCER(insert_option_string, ReducerContext ctx, OptionalSt...
  function SPACETIMEDB_REDUCER (line 95) | SPACETIMEDB_REDUCER(insert_option_identity, ReducerContext ctx, Optional...
  function SPACETIMEDB_REDUCER (line 101) | SPACETIMEDB_REDUCER(insert_direct_option_i32, ReducerContext ctx, std::o...
  function SPACETIMEDB_REDUCER (line 106) | SPACETIMEDB_REDUCER(insert_direct_option_string, ReducerContext ctx, std...
  function SPACETIMEDB_REDUCER (line 111) | SPACETIMEDB_REDUCER(insert_direct_option_every_primitive_struct, Reducer...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/module12_constraints.cpp
  type IndexedTable (line 11) | struct IndexedTable {
  type IndexedTable2 (line 19) | struct IndexedTable2 {
  type BTreeU32 (line 30) | struct BTreeU32 {
  type PkU32Two (line 39) | struct PkU32Two { uint32_t n; int32_t data; }
  function SPACETIMEDB_REDUCER (line 45) | SPACETIMEDB_REDUCER(insert_indexed_table, ReducerContext ctx, uint32_t p...
  function SPACETIMEDB_REDUCER (line 50) | SPACETIMEDB_REDUCER(insert_indexed_table_2, ReducerContext ctx, uint32_t...
  function SPACETIMEDB_REDUCER (line 55) | SPACETIMEDB_REDUCER(insert_btree_u32, ReducerContext ctx, uint32_t n, in...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_complex_reducer_only.cpp
  type EveryPrimitiveStruct (line 8) | struct EveryPrimitiveStruct {
  type SimpleTable (line 33) | struct SimpleTable {
  function SPACETIMEDB_REDUCER (line 41) | SPACETIMEDB_REDUCER(insert_with_complex, ReducerContext ctx, EveryPrimit...
  function SPACETIMEDB_REDUCER (line 50) | SPACETIMEDB_REDUCER(insert_simple, ReducerContext ctx, int32_t id, std::...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_complex_table_only.cpp
  type EveryPrimitiveStruct (line 8) | struct EveryPrimitiveStruct {
  type ComplexTable (line 33) | struct ComplexTable {
  function SPACETIMEDB_REDUCER (line 41) | SPACETIMEDB_REDUCER(insert_default, ReducerContext ctx, int32_t id)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_connectionid_only.cpp
  type TestConnectionId (line 8) | struct TestConnectionId {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_debug_optional.cpp
  type DebugInit (line 9) | struct DebugInit {
    method DebugInit (line 10) | DebugInit() {
  type OptionalTable (line 18) | struct OptionalTable {
  type AfterBsatn (line 27) | struct AfterBsatn {
    method AfterBsatn (line 28) | AfterBsatn() {
  type AfterTable (line 38) | struct AfterTable {
    method AfterTable (line 39) | AfterTable() {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_enum_vector_payloads.cpp
  type TableWithComplexEnum (line 17) | struct TableWithComplexEnum {
  type TableWithVectorOfComplexEnums (line 24) | struct TableWithVectorOfComplexEnums {
  function SPACETIMEDB_REDUCER (line 31) | SPACETIMEDB_REDUCER(test_complex_enum, ReducerContext ctx, EnumWithVecto...
  function SPACETIMEDB_REDUCER (line 36) | SPACETIMEDB_REDUCER(test_vector_complex_enum, ReducerContext ctx, std::v...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_identity_only.cpp
  type TestIdentity (line 8) | struct TestIdentity {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_minimal_special.cpp
  type SimpleIdentityTable (line 8) | struct SimpleIdentityTable { Identity id; }
  function SPACETIMEDB_REDUCER (line 13) | SPACETIMEDB_REDUCER(test_identity_reducer, ReducerContext ctx, Identity i)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_mixed_types.cpp
  type TestIdentity (line 8) | struct TestIdentity {
  type TestU128 (line 16) | struct TestU128 {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_multicolumn_index_valid.cpp
  type ScoreRow (line 5) | struct ScoreRow {
  function SPACETIMEDB_REDUCER (line 16) | SPACETIMEDB_REDUCER(insert_score, ReducerContext ctx, uint32_t id, uint3...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_nested_optionals.cpp
  type EveryPrimitiveStruct (line 8) | struct EveryPrimitiveStruct {
  type OptionVecOptionI32 (line 17) | struct OptionVecOptionI32 {
  type OptionEveryPrimitiveStruct (line 24) | struct OptionEveryPrimitiveStruct {
  function SPACETIMEDB_REDUCER (line 31) | SPACETIMEDB_REDUCER(insert_option_vec_option_i32, ReducerContext ctx, st...
  function SPACETIMEDB_REDUCER (line 36) | SPACETIMEDB_REDUCER(insert_option_every_primitive_struct, ReducerContext...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_optional_debug.cpp
  type OptionalTable (line 9) | struct OptionalTable {
  function SPACETIMEDB_REDUCER (line 16) | SPACETIMEDB_REDUCER(test_basic, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_optional_reducer_only.cpp
  type OptionalParam (line 10) | struct OptionalParam {
  type SimpleTable (line 17) | struct SimpleTable {
  function SPACETIMEDB_REDUCER (line 25) | SPACETIMEDB_REDUCER(insert_with_optional, ReducerContext ctx, OptionalPa...
  function SPACETIMEDB_REDUCER (line 35) | SPACETIMEDB_REDUCER(insert_direct, ReducerContext ctx, int32_t id, int32...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_optional_simple.cpp
  type SimpleOptional (line 9) | struct SimpleOptional {
  type OptionalParam (line 18) | struct OptionalParam {
  function SPACETIMEDB_REDUCER (line 25) | SPACETIMEDB_REDUCER(insert_optional, ReducerContext ctx, OptionalParam p...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_optional_table_only.cpp
  type OptionalI32Table (line 10) | struct OptionalI32Table {
  function SPACETIMEDB_REDUCER (line 17) | SPACETIMEDB_REDUCER(insert_value, ReducerContext ctx, int32_t v)
  function SPACETIMEDB_REDUCER (line 24) | SPACETIMEDB_REDUCER(insert_none, ReducerContext ctx)

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_simple_table.cpp
  function SPACETIMEDB_INIT (line 6) | SPACETIMEDB_INIT(init, ReducerContext ctx) {
  type SimpleTable (line 12) | struct SimpleTable {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_single_special_vector.cpp
  type TestVecIdentity (line 10) | struct TestVecIdentity { std::vector<Identity> identities; }

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_special_minimal.cpp
  type TestIdentity (line 10) | struct TestIdentity { Identity i; }
  type TestConnectionId (line 14) | struct TestConnectionId { ConnectionId c; }
  type TestTimestamp (line 18) | struct TestTimestamp { Timestamp t; }

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_special_vectors.cpp
  type VecIdentity (line 10) | struct VecIdentity { std::vector<Identity> identities; }
  type VecConnectionId (line 14) | struct VecConnectionId { std::vector<ConnectionId> connections; }
  type VecTimestamp (line 18) | struct VecTimestamp { std::vector<Timestamp> timestamps; }

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_timeduration_only.cpp
  type TestTimeDuration (line 8) | struct TestTimeDuration {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_timestamp_only.cpp
  type TestTimestamp (line 8) | struct TestTimestamp {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_u128_only.cpp
  type TestU128 (line 8) | struct TestU128 {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_unified_enum.cpp
  function SPACETIMEDB_REDUCER (line 21) | SPACETIMEDB_REDUCER(test_complex_enum, ReducerContext ctx, ComplexTestEn...

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_unit_isolation.cpp
  type UnitPlusInt (line 10) | struct UnitPlusInt {
  type TwoUnits (line 19) | struct TwoUnits {
  type NestedUnitTest (line 28) | struct NestedUnitTest {
  function SPACETIMEDB_REDUCER (line 36) | SPACETIMEDB_REDUCER(test_step1_simple, ReducerContext ctx) {
  function SPACETIMEDB_REDUCER (line 42) | SPACETIMEDB_REDUCER(test_step2_two_units, ReducerContext ctx) {
  function SPACETIMEDB_REDUCER (line 49) | SPACETIMEDB_REDUCER(test_step3_nested_fail, ReducerContext ctx) {
  function SPACETIMEDB_INIT (line 58) | SPACETIMEDB_INIT(init, ReducerContext ctx) {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_unit_progression.cpp
  type SimpleStructWithUnit (line 15) | struct SimpleStructWithUnit {
  type StructWithMultipleUnits (line 22) | struct StructWithMultipleUnits {
  type TableWithUnit (line 30) | struct TableWithUnit {
  type TableWithMultipleUnits (line 38) | struct TableWithMultipleUnits {
  type NestedUnit (line 47) | struct NestedUnit {
  function SPACETIMEDB_REDUCER (line 55) | SPACETIMEDB_REDUCER(test_single_unit, ReducerContext ctx, TestUnit unit) {
  function SPACETIMEDB_REDUCER (line 60) | SPACETIMEDB_REDUCER(test_multiple_units, ReducerContext ctx, Unit1 u1, U...
  function SPACETIMEDB_REDUCER (line 65) | SPACETIMEDB_REDUCER(test_struct_with_unit, ReducerContext ctx, SimpleStr...
  function SPACETIMEDB_REDUCER (line 70) | SPACETIMEDB_REDUCER(test_nested_units, ReducerContext ctx, NestedUnit ne...
  function SPACETIMEDB_INIT (line 75) | SPACETIMEDB_INIT(init, ReducerContext ctx) {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_unit_simple.cpp
  type SimpleTable (line 11) | struct SimpleTable {
  function SPACETIMEDB_INIT (line 20) | SPACETIMEDB_INIT(init, ReducerContext ctx) {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_unit_struct.cpp
  type StructWithUnits (line 15) | struct StructWithUnits {
  type NestedWithUnits (line 24) | struct NestedWithUnits {
  type TableWithUnits (line 32) | struct TableWithUnits {
  type ComplexTable (line 41) | struct ComplexTable {
  type SimpleUnitTable (line 50) | struct SimpleUnitTable {
  function SPACETIMEDB_REDUCER (line 61) | SPACETIMEDB_REDUCER(reducer_with_unit_param, ReducerContext ctx, BasicUn...
  function SPACETIMEDB_REDUCER (line 72) | SPACETIMEDB_REDUCER(reducer_with_struct_param, ReducerContext ctx, Struc...
  function SPACETIMEDB_REDUCER (line 83) | SPACETIMEDB_REDUCER(reducer_multiple_units, ReducerContext ctx,
  function SPACETIMEDB_REDUCER (line 95) | SPACETIMEDB_REDUCER(reducer_nested_units, ReducerContext ctx, NestedWith...
  function SPACETIMEDB_INIT (line 106) | SPACETIMEDB_INIT(init, ReducerContext ctx) {

FILE: crates/bindings-cpp/tests/type-isolation-test/test_modules/test_wrapped_special.cpp
  type SimpleIdentityTable (line 8) | struct SimpleIdentityTable { Identity id; }
  type IdentityParam (line 13) | struct IdentityParam { Identity id; }
  function SPACETIMEDB_REDUCER (line 17) | SPACETIMEDB_REDUCER(test_identity_reducer, ReducerContext ctx, IdentityP...

FILE: crates/bindings-csharp/BSATN.Codegen/Diag.cs
  type ErrorDescriptorGroup (line 10) | public record ErrorDescriptorGroup(string Tag, string Name)
  class ErrorDescriptor (line 22) | public class ErrorDescriptor<TContext>
    method ErrorDescriptor (line 28) | public ErrorDescriptor(
    method ErrorDescriptor (line 70) | public ErrorDescriptor(
    method ErrorDescriptor (line 78) | public ErrorDescriptor(
    method ErrorDescriptor (line 86) | public ErrorDescriptor(
    method ErrorDescriptor (line 94) | public ErrorDescriptor(
    method ToDiag (line 110) | public Diagnostic ToDiag(TContext ctx) =>
  class UnusedErrorDescriptor (line 121) | public sealed class UnusedErrorDescriptor
    method UnusedErrorDescriptor (line 123) | public UnusedErrorDescriptor(ErrorDescriptorGroup group)
  class ErrorDescriptor (line 129) | internal static class ErrorDescriptor
    method ErrorDescriptor (line 28) | public ErrorDescriptor(
    method ErrorDescriptor (line 70) | public ErrorDescriptor(
    method ErrorDescriptor (line 78) | public ErrorDescriptor(
    method ErrorDescriptor (line 86) | public ErrorDescriptor(
    method ErrorDescriptor (line 94) | public ErrorDescriptor(
    method ToDiag (line 110) | public Diagnostic ToDiag(TContext ctx) =>
  type ParseResult (line 202) | public record ParseResult<T>(T? Parsed, EquatableArray<Diagnostic> Diag)
  class DiagReporter (line 205) | public class DiagReporter
    method Report (line 210) | public void Report<TContext>(ErrorDescriptor<TContext> descriptor, TCo...
    method DiagReporter (line 215) | private DiagReporter() { }
    method With (line 225) | public static ParseResult<T> With<T>(Location location, Func<DiagRepor...
    method With (line 245) | public static ParseResult<T> With<T>(SyntaxNode node, Func<DiagReporte...
  class DiagExtensions (line 252) | public static class DiagExtensions
    method ParseWithDiags (line 254) | public static ParseResult<T> ParseWithDiags<T>(
    method ReportDiagnostics (line 263) | public static IncrementalValuesProvider<T> ReportDiagnostics<T>(

FILE: crates/bindings-csharp/BSATN.Codegen/Type.cs
  type TypeUse (line 37) | public abstract record TypeUse(string Name, string BSATNName)
  type ResultUse (line 165) | public sealed record ResultUse : TypeUse
  type EnumUse (line 207) | public record EnumUse(string Type, string TypeInfo) : TypeUse(Type, Type...
  type ValueUse (line 231) | public record ValueUse(string Type, string TypeInfo) : TypeUse(Type, Typ...
  type NullableUse (line 249) | public record NullableUse(string Type, string TypeInfo) : TypeUse(Type, ...
  type ReferenceUse (line 267) | public record ReferenceUse(string Type, string TypeInfo) : TypeUse(Type,...
  type ArrayUse (line 286) | public record ArrayUse(string Type, string TypeInfo, TypeUse ElementType...
  type ListUse (line 351) | public record ListUse(string Type, string TypeInfo, TypeUse ElementType)...
  type MemberDeclaration (line 413) | public record MemberDeclaration(
  type TypeKind (line 452) | public enum TypeKind
  type BaseTypeDeclaration (line 458) | public abstract record BaseTypeDeclaration<M>
  type TypeDeclaration (line 787) | record TypeDeclaration : BaseTypeDeclaration<MemberDeclaration>
  class Type (line 799) | [Generator]
    method Initialize (line 802) | public void Initialize(IncrementalGeneratorInitializationContext context)

FILE: crates/bindings-csharp/BSATN.Codegen/Utils.cs
  class Utils (line 11) | public static class Utils
    type EquatableArray (line 16) | public readonly record struct EquatableArray<T>(ImmutableArray<T> Arra...
    method SymbolToName (line 39) | public static string SymbolToName(ISymbol symbol)
    method EscapeIdentifier (line 44) | public static string EscapeIdentifier(string name)
    method RegisterSourceOutputs (line 56) | public static void RegisterSourceOutputs(
    method MakeRwTypeParam (line 86) | public static string MakeRwTypeParam(string typeParam) => typeParam + ...
    class UnresolvedTypeException (line 88) | public class UnresolvedTypeException(INamedTypeSymbol type)
    method IsNullableReferenceType (line 97) | public static bool IsNullableReferenceType(ITypeSymbol type) =>
    method GetTypeInfo (line 111) | public static string GetTypeInfo(ITypeSymbol type)
    method AppendJoin (line 196) | private static StringBuilder AppendJoin<T>(
    method ResolveConstant (line 215) | private static object? ResolveConstant(TypedConstant constant, System....
    method ParseAs (line 232) | public static T ParseAs<T>(this AttributeData attrData, System.Type? t...
    type Scope (line 264) | public readonly record struct Scope

FILE: crates/bindings-csharp/BSATN.Runtime.Tests/Tests.cs
  class BSATNRuntimeTests (line 9) | public static partial class BSATNRuntimeTests
    method ConnectionIdRoundtrips (line 11) | [Fact]
    method ConnectionIdLengthCheck (line 55) | [Fact]
    method IdentityRoundtrips (line 78) | [Fact]
    method IdentityLengthCheck (line 114) | [Fact]
    method NonHexStrings (line 137) | [Fact]
    method TimestampConversionChecks (line 146) | [Fact]
    method ConnectionIdComparableChecks (line 183) | [Fact]
    method IdentityComparableChecks (line 209) | [Fact]
    class BasicDataClass (line 230) | [Type]
      method BasicDataClass (line 238) | public BasicDataClass() { }
      method BasicDataClass (line 240) | public BasicDataClass((int x, string y, int? z, string? w) data)
    type BasicDataStruct (line 249) | [Type]
    type BasicDataRecord (line 258) | [Type]
    type CollisionCounter (line 297) | struct CollisionCounter
      method Add (line 302) | public void Add(bool collides)
      method AssertCollisionsLessThan (line 316) | public readonly void AssertCollisionsLessThan(double fraction)
    method TestRoundTrip (line 325) | static void TestRoundTrip<T, BSATN>(Gen<T> gen, BSATN serializer)
    method GeneratedProductRoundTrip (line 343) | [Fact]
    method GeneratedProductEqualsWorks (line 360) | [Fact]
    type BasicEnum (line 430) | [Type]
    method GeneratedSumRoundTrip (line 464) | [Fact]
    method GeneratedSumEqualsWorks (line 470) | [Fact]
    class ContainsList (line 514) | [Type]
      method ContainsList (line 519) | public ContainsList() { }
      method ContainsList (line 521) | public ContainsList(List<BasicEnum?>? theList)
    method GeneratedListRoundTrip (line 538) | [Fact]
    method GeneratedListEqualsWorks (line 544) | [Fact]
    class ContainsNestedList (line 582) | [Type]
      method ContainsNestedList (line 587) | public ContainsNestedList() { }
      method ContainsNestedList (line 589) | public ContainsNestedList(List<BasicEnum[][]> theList)
    method GeneratedNestedListRoundTrip (line 602) | [Fact]
    class EnumerableEqualityComparer (line 625) | class EnumerableEqualityComparer<T>(EqualityComparer<T> equalityComparer)
      method Equals (line 630) | public override bool Equals(IEnumerable<T>? x, IEnumerable<T>? y) =>
      method GetHashCode (line 633) | public override int GetHashCode([DisallowNull] IEnumerable<T> obj)
    type Banana (line 647) | [Type]
    method EnumSerializationWorks (line 660) | [Fact]
    method GeneratedNestedListEqualsWorks (line 692) | [Fact]
    method GeneratedToString (line 728) | [Fact]
    method NonNullableStringSerializationRejectsNull (line 812) | [Fact]
    method NullableStringOptionRoundTripsNull (line 823) | [Fact]
    type ContainsEnum (line 838) | [Type]
    method GeneratedEnumEqualsWorks (line 854) | [Fact]
    method UUidRoundTrip (line 879) | [Fact]
    method UuidToString (line 890) | [Fact]
    method WrapAround (line 910) | [Fact]
    method NegativeTimestampThrows (line 922) | [Fact]
    method UuidOrdered (line 935) | [Fact]
    method UuidVersion (line 982) | [Fact]

FILE: crates/bindings-csharp/BSATN.Runtime/Attrs.cs
  class TypeAttribute (line 5) | [AttributeUsage(
  type TaggedEnum (line 14) | public abstract record TaggedEnum<Variants>

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/AlgebraicType.cs
  type ITypeRegistrar (line 3) | public interface ITypeRegistrar
    method RegisterType (line 5) | AlgebraicType.Ref RegisterType<T>(Func<AlgebraicType.Ref, AlgebraicTyp...
  type AggregateElement (line 8) | [SpacetimeDB.Type]
  type AlgebraicType (line 16) | [SpacetimeDB.Type]

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/I128.cs
  type I128 (line 10) | [StructLayout(LayoutKind.Sequential)]

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/I256.cs
  type I256 (line 11) | [StructLayout(LayoutKind.Sequential)]

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/Runtime.cs
  type IStructuralReadWrite (line 9) | public interface IStructuralReadWrite
    method ReadFields (line 19) | void ReadFields(BinaryReader reader);
    method WriteFields (line 28) | void WriteFields(BinaryWriter writer);
    method GetSerializer (line 49) | object GetSerializer();
    method Read (line 59) | static T Read<T>(BinaryReader reader)
    method ToBytes (line 70) | public static byte[] ToBytes<RW, T>(RW rw, T value)
    method ToBytes (line 79) | public static byte[] ToBytes<T>(T value)
  type IReadWrite (line 96) | public interface IReadWrite<T>
    method Read (line 105) | T Read(BinaryReader reader);
    method Write (line 110) | void Write(BinaryWriter writer, T value);
    method GetAlgebraicType (line 117) | AlgebraicType GetAlgebraicType(ITypeRegistrar registrar);
  type Enum (line 124) | public readonly struct Enum<T> : IReadWrite<T>
    method Read (line 134) | public T Read(BinaryReader reader)
    method Write (line 149) | public void Write(BinaryWriter writer, T value)
    method GetAlgebraicType (line 176) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type RefOption (line 187) | public readonly struct RefOption<Inner, InnerRW> : IReadWrite<Inner?>
    method Read (line 193) | public Inner? Read(BinaryReader reader) => reader.ReadBoolean() ? null...
    method Write (line 195) | public void Write(BinaryWriter writer, Inner? value)
    method GetAlgebraicType (line 204) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
    method GetListSerializer (line 208) | public static List<Inner, InnerRW> GetListSerializer()
  type ValueOption (line 218) | public readonly struct ValueOption<Inner, InnerRW> : IReadWrite<Inner?>
    method Read (line 224) | public Inner? Read(BinaryReader reader) => reader.ReadBoolean() ? null...
    method Write (line 226) | public void Write(BinaryWriter writer, Inner? value)
    method GetAlgebraicType (line 235) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
    method GetListSerializer (line 239) | public static List<Inner, InnerRW> GetListSerializer()
  type Bool (line 245) | public readonly struct Bool : IReadWrite<bool>
    method Read (line 247) | public bool Read(BinaryReader reader) => reader.ReadBoolean();
    method Write (line 249) | public void Write(BinaryWriter writer, bool value) => writer.Write(val...
    method GetAlgebraicType (line 251) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U8 (line 255) | public readonly struct U8 : IReadWrite<byte>
    method Read (line 257) | public byte Read(BinaryReader reader) => reader.ReadByte();
    method Write (line 259) | public void Write(BinaryWriter writer, byte value) => writer.Write(val...
    method GetAlgebraicType (line 261) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U16 (line 265) | public readonly struct U16 : IReadWrite<ushort>
    method Read (line 267) | public ushort Read(BinaryReader reader) => reader.ReadUInt16();
    method Write (line 269) | public void Write(BinaryWriter writer, ushort value) => writer.Write(v...
    method GetAlgebraicType (line 271) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U32 (line 275) | public readonly struct U32 : IReadWrite<uint>
    method Read (line 277) | public uint Read(BinaryReader reader) => reader.ReadUInt32();
    method Write (line 279) | public void Write(BinaryWriter writer, uint value) => writer.Write(val...
    method GetAlgebraicType (line 281) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U64 (line 285) | public readonly struct U64 : IReadWrite<ulong>
    method Read (line 287) | public ulong Read(BinaryReader reader) => reader.ReadUInt64();
    method Write (line 289) | public void Write(BinaryWriter writer, ulong value) => writer.Write(va...
    method GetAlgebraicType (line 291) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U128Stdb (line 295) | public readonly struct U128Stdb : IReadWrite<SpacetimeDB.U128>
    method Read (line 297) | public SpacetimeDB.U128 Read(BinaryReader reader)
    method Write (line 304) | public void Write(BinaryWriter writer, SpacetimeDB.U128 value)
    method GetAlgebraicType (line 310) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U128 (line 315) | public readonly struct U128 : IReadWrite<UInt128>
    method Read (line 317) | public UInt128 Read(BinaryReader reader)
    method Write (line 324) | public void Write(BinaryWriter writer, UInt128 value)
    method GetAlgebraicType (line 330) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type U256 (line 335) | public readonly struct U256 : IReadWrite<SpacetimeDB.U256>
    method Read (line 337) | public SpacetimeDB.U256 Read(BinaryReader reader)
    method Write (line 345) | public void Write(BinaryWriter writer, SpacetimeDB.U256 value)
    method GetAlgebraicType (line 352) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I8 (line 356) | public readonly struct I8 : IReadWrite<sbyte>
    method Read (line 358) | public sbyte Read(BinaryReader reader) => reader.ReadSByte();
    method Write (line 360) | public void Write(BinaryWriter writer, sbyte value) => writer.Write(va...
    method GetAlgebraicType (line 362) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I16 (line 366) | public readonly struct I16 : IReadWrite<short>
    method Read (line 368) | public short Read(BinaryReader reader) => reader.ReadInt16();
    method Write (line 370) | public void Write(BinaryWriter writer, short value) => writer.Write(va...
    method GetAlgebraicType (line 372) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I32 (line 376) | public readonly struct I32 : IReadWrite<int>
    method Read (line 378) | public int Read(BinaryReader reader) => reader.ReadInt32();
    method Write (line 380) | public void Write(BinaryWriter writer, int value) => writer.Write(value);
    method GetAlgebraicType (line 382) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I64 (line 386) | public readonly struct I64 : IReadWrite<long>
    method Read (line 388) | public long Read(BinaryReader reader) => reader.ReadInt64();
    method Write (line 390) | public void Write(BinaryWriter writer, long value) => writer.Write(val...
    method GetAlgebraicType (line 392) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I128Stdb (line 396) | public readonly struct I128Stdb : IReadWrite<SpacetimeDB.I128>
    method Read (line 398) | public SpacetimeDB.I128 Read(BinaryReader reader)
    method Write (line 405) | public void Write(BinaryWriter writer, SpacetimeDB.I128 value)
    method GetAlgebraicType (line 411) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I128 (line 416) | public readonly struct I128 : IReadWrite<Int128>
    method Read (line 418) | public Int128 Read(BinaryReader reader)
    method Write (line 425) | public void Write(BinaryWriter writer, Int128 value)
    method GetAlgebraicType (line 431) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type I256 (line 436) | public readonly struct I256 : IReadWrite<SpacetimeDB.I256>
    method Read (line 438) | public SpacetimeDB.I256 Read(BinaryReader reader)
    method Write (line 446) | public void Write(BinaryWriter writer, SpacetimeDB.I256 value)
    method GetAlgebraicType (line 453) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type F32 (line 457) | public readonly struct F32 : IReadWrite<float>
    method Read (line 459) | public float Read(BinaryReader reader) => reader.ReadSingle();
    method Write (line 461) | public void Write(BinaryWriter writer, float value) => writer.Write(va...
    method GetAlgebraicType (line 463) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type F64 (line 467) | public readonly struct F64 : IReadWrite<double>
    method Read (line 469) | public double Read(BinaryReader reader) => reader.ReadDouble();
    method Write (line 471) | public void Write(BinaryWriter writer, double value) => writer.Write(v...
    method GetAlgebraicType (line 473) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type Enumerable (line 477) | readonly struct Enumerable<Element, ElementRW> : IReadWrite<IEnumerable<...
    method Read (line 482) | public IEnumerable<Element> Read(BinaryReader reader)
    method Write (line 491) | public void Write(BinaryWriter writer, IEnumerable<Element> value)
    method GetAlgebraicType (line 500) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type Array (line 504) | public readonly struct Array<Element, ElementRW> : IReadWrite<Element[]>
    method Read (line 510) | public Element[] Read(BinaryReader reader)
    method Write (line 522) | public void Write(BinaryWriter writer, Element[] value) => enumerable....
    method GetAlgebraicType (line 524) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type ByteArray (line 529) | public readonly struct ByteArray : IReadWrite<byte[]>
    method Read (line 533) | public byte[] Read(BinaryReader reader) => reader.ReadBytes(reader.Rea...
    method Write (line 535) | public void Write(BinaryWriter writer, byte[] value)
    method GetAlgebraicType (line 541) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type String (line 546) | public readonly struct String : IReadWrite<string>
    method Read (line 548) | public string Read(BinaryReader reader) =>
    method Write (line 551) | public void Write(BinaryWriter writer, string value)
    method GetAlgebraicType (line 564) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type List (line 568) | public readonly struct List<Element, ElementRW> : IReadWrite<List<Element>>
    method Read (line 574) | public List<Element> Read(BinaryReader reader)
    method Write (line 586) | public void Write(BinaryWriter writer, List<Element> value) => enumera...
    method GetAlgebraicType (line 588) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type Unsupported (line 594) | public readonly struct Unsupported<T> : IReadWrite<T>
    method Read (line 599) | public T Read(BinaryReader reader) => throw Exception;
    method Write (line 601) | public void Write(BinaryWriter writer, T value) => throw Exception;
    method GetAlgebraicType (line 603) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) => thr...
  class StringUtil (line 609) | public static class StringUtil
    method GenericToString (line 625) | public static string GenericToString(object? obj)
    method ToStringLiteral (line 650) | internal static string ToStringLiteral(string input)
    method GenericListToString (line 714) | internal static string GenericListToString(System.Collections.IList list)

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/U128.cs
  type U128 (line 11) | [StructLayout(LayoutKind.Sequential)]

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/U256.cs
  type U256 (line 8) | [StructLayout(LayoutKind.Sequential)]

FILE: crates/bindings-csharp/BSATN.Runtime/BSATN/Uuid.cs
  type Uuid (line 12) | [StructLayout(LayoutKind.Sequential)]

FILE: crates/bindings-csharp/BSATN.Runtime/Builtins.cs
  class Util (line 7) | internal static class Util
    method AsBytes (line 9) | public static Span<byte> AsBytes<T>(ref T val)
    method ToHexBigEndian (line 25) | public static string ToHexBigEndian<T>(T val)
    method Read (line 53) | public static T Read<T>(ReadOnlySpan<byte> source, bool littleEndian)
    method StringToByteArray (line 79) | public static byte[] StringToByteArray(string hex)
  type Unit (line 109) | public readonly partial struct Unit
    type BSATN (line 111) | public readonly struct BSATN : IReadWrite<Unit>
      method Read (line 113) | public Unit Read(BinaryReader reader) => default;
      method Write (line 115) | public void Write(BinaryWriter writer, Unit value) { }
      method GetAlgebraicType (line 117) | public AlgebraicType GetAlgebraicType(ITypeRegistrar registrar) =>
  type ConnectionId (line 123) | [StructLayout(LayoutKind.Sequential)]
  type Identity (line 239) | [StructLayout(LayoutKind.Sequential)]
  type Timestamp (line 349) | [StructLayout(LayoutKind.Sequential)] // we should be able to use it in FFI
  type TimeDuration (line 454) | [StructLayout(LayoutKind.Sequential)]
  type ScheduleAt (line 550) | public partial record ScheduleAt : TaggedEnum<(TimeDuration Interval, Ti...
  type Result (line 633) | public partial record Result<T, E> : TaggedEnum<(T Ok, E Err)>

FILE: crates/bindings-csharp/BSATN.Runtime/Db.cs
  type DbContext (line 3) | public abstract record DbContext<DbView>(DbView Db)

FILE: crates/bindings-csharp/BSATN.Runtime/HttpWireTypes.cs
  type HttpMethodWire (line 10) | [Type]
  type HttpVersionWire (line 26) | [Type]
  type HttpHeaderPairWire (line 37) | [Type]
  type HttpHeadersWire (line 45) | [Type]
  type HttpTimeoutWire (line 52) | [Type]
  type HttpRequestWire (line 59) | [Type]
  type HttpResponseWire (line 70) | [Type]

FILE: crates/bindings-csharp/BSATN.Runtime/Internal/ByteArrayComparer.cs
  type ByteArrayComparer (line 6) | public readonly struct ByteArrayComparer : IEqualityComparer<byte[]>
    method Equals (line 10) | public bool Equals(byte[]? left, byte[]? right)
    method EqualsUnvectorized (line 25) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetHashCode (line 39) | public int GetHashCode(byte[] obj)

FILE: crates/bindings-csharp/BSATN.Runtime/QueryBuilder.cs
  type SqlLiteral (line 8) | public readonly struct SqlLiteral<T>
    method SqlLiteral (line 12) | internal SqlLiteral(string sql)
    method ToString (line 17) | public override string ToString() => Sql;
  class SqlLit (line 20) | public static class SqlLit
    method String (line 22) | public static SqlLiteral<string> String(ReadOnlySpan<char> value) =>
    method Bool (line 25) | public static SqlLiteral<bool> Bool(bool value) => new(value ? "TRUE" ...
    method Int (line 27) | public static SqlLiteral<sbyte> Int(sbyte value) =>
    method Int (line 30) | public static SqlLiteral<byte> Int(byte value) =>
    method Int (line 33) | public static SqlLiteral<short> Int(short value) =>
    method Int (line 36) | public static SqlLiteral<ushort> Int(ushort value) =>
    method Int (line 39) | public static SqlLiteral<int> Int(int value) =>
    method Int (line 42) | public static SqlLiteral<uint> Int(uint value) =>
    method Int (line 45) | public static SqlLiteral<long> Int(long value) =>
    method Int (line 48) | public static SqlLiteral<ulong> Int(ulong value) =>
    method Int (line 51) | public static SqlLiteral<U128> Int(U128 value) => new(value.ToString());
    method Identity (line 53) | public static SqlLiteral<Identity> Identity(Identity value) =>
    method ConnectionId (line 56) | public static SqlLiteral<ConnectionId> ConnectionId(ConnectionId value...
    method Uuid (line 59) | public static SqlLiteral<Uuid> Uuid(Uuid value) =>
  type IQuery (line 63) | public interface IQuery<TRow>
    method ToSql (line 65) | string ToSql();
  type BoolExpr (line 68) | public readonly struct BoolExpr<TRow>
    method BoolExpr (line 72) | public BoolExpr(string sql)
    method And (line 77) | public BoolExpr<TRow> And(BoolExpr<TRow> other) => new($"({Sql} AND {o...
    method Or (line 79) | public BoolExpr<TRow> Or(BoolExpr<TRow> other) => new($"({Sql} OR {oth...
    method Not (line 81) | public BoolExpr<TRow> Not() => new($"(NOT {Sql})");
    method ToString (line 83) | public override string ToString() => Sql;
  class QueryPredicate (line 92) | internal static class QueryPredicate
    method ToBoolExpr (line 94) | internal static BoolExpr<TRow> ToBoolExpr<TRow>(object value) =>
  type IxJoinEq (line 108) | public readonly struct IxJoinEq<TLeftRow, TRightRow>
    method IxJoinEq (line 113) | internal IxJoinEq(string leftRefSql, string rightRefSql)
  type Col (line 120) | public readonly struct Col<TRow, TValue>
    method Col (line 126) | public Col(string tableName, string columnName)
    method Eq (line 135) | public BoolExpr<TRow> Eq(SqlLiteral<TValue> value) => new($"({RefSql} ...
    method Eq (line 137) | public BoolExpr<TRow> Eq(Col<TRow, TValue> other) => new($"({RefSql} =...
    method Neq (line 139) | public BoolExpr<TRow> Neq(SqlLiteral<TValue> value) => new($"({RefSql}...
    method Neq (line 141) | public BoolExpr<TRow> Neq(Col<TRow, TValue> other) => new($"({RefSql} ...
    method Lt (line 143) | public BoolExpr<TRow> Lt(SqlLiteral<TValue> value) => new($"({RefSql} ...
    method Lte (line 145) | public BoolExpr<TRow> Lte(SqlLiteral<TValue> value) => new($"({RefSql}...
    method Gt (line 147) | public BoolExpr<TRow> Gt(SqlLiteral<TValue> value) => new($"({RefSql} ...
    method Gte (line 149) | public BoolExpr<TRow> Gte(SqlLiteral<TValue> value) => new($"({RefSql}...
    method Lt (line 151) | public BoolExpr<TRow> Lt(Col<TRow, TValue> other) => new($"({RefSql} <...
    method Lte (line 153) | public BoolExpr<TRow> Lte(Col<TRow, TValue> other) => new($"({RefSql} ...
    method Gt (line 155) | public BoolExpr<TRow> Gt(Col<TRow, TValue> other) => new($"({RefSql} >...
    method Gte (line 157) | public BoolExpr<TRow> Gte(Col<TRow, TValue> other) => new($"({RefSql} ...
    method ToString (line 159) | public override string ToString() => RefSql;
  type IxCol (line 162) | public readonly struct IxCol<TRow, TValue>
    method IxCol (line 168) | public IxCol(string tableName, string columnName)
    method Eq (line 177) | public BoolExpr<TRow> Eq(SqlLiteral<TValue> value) => new($"({RefSql} ...
    method Eq (line 179) | public IxJoinEq<TRow, TOtherRow> Eq<TOtherRow>(IxCol<TOtherRow, TValue...
    method Neq (line 182) | public BoolExpr<TRow> Neq(SqlLiteral<TValue> value) => new($"({RefSql}...
    method ToString (line 184) | public override string ToString() => RefSql;
  class Table (line 187) | public sealed class Table<TRow, TCols, TIxCols> : IQuery<TRow>
    method Table (line 193) | public Table(string tableName, TCols cols, TIxCols ixCols)
    method ToSql (line 206) | public string ToSql() => $"SELECT * FROM {SqlFormat.QuoteIdent(tableNa...
    method Where (line 208) | public FromWhere<TRow, TCols, TIxCols> Where<TPredicate>(Func<TCols, T...
    method Where (line 211) | public FromWhere<TRow, TCols, TIxCols> Where<TPredicate>(
    method Filter (line 215) | public FromWhere<TRow, TCols, TIxCols> Filter<TPredicate>(Func<TCols, ...
    method Filter (line 218) | public FromWhere<TRow, TCols, TIxCols> Filter<TPredicate>(
    method LeftSemijoin (line 222) | public LeftSemiJoin<TRow, TCols, TIxCols, TRightRow, TRightCols, TRigh...
    method RightSemijoin (line 231) | public RightSemiJoin<TRow, TCols, TIxCols, TRightRow, TRightCols, TRig...
  class FromWhere (line 241) | public sealed class FromWhere<TRow, TCols, TIxCols> : IQuery<TRow>
    method FromWhere (line 246) | internal FromWhere(Table<TRow, TCols, TIxCols> table, BoolExpr<TRow> e...
    method Where (line 252) | public FromWhere<TRow, TCols, TIxCols> Where<TPredicate>(Func<TCols, T...
    method Where (line 255) | public FromWhere<TRow, TCols, TIxCols> Where<TPredicate>(
    method Filter (line 260) | public FromWhere<TRow, TCols, TIxCols> Filter<TPredicate>(Func<TCols, ...
    method Filter (line 263) | public FromWhere<TRow, TCols, TIxCols> Filter<TPredicate>(
    method ToSql (line 267) | public string ToSql() => $"{table.ToSql()} WHERE {expr.Sql}";
    method LeftSemijoin (line 269) | public LeftSemiJoin<TRow, TCols, TIxCols, TRightRow, TRightCols, TRigh...
    method RightSemijoin (line 278) | public RightSemiJoin<TRow, TCols, TIxCols, TRightRow, TRightCols, TRig...
  class LeftSemiJoin (line 288) | public sealed class LeftSemiJoin<
    method LeftSemiJoin (line 303) | internal LeftSemiJoin(
    method Where (line 317) | public LeftSemiJoin<
    method Where (line 336) | public LeftSemiJoin<
    method Where (line 355) | public LeftSemiJoin<
    method Filter (line 365) | public LeftSemiJoin<
    method Filter (line 374) | public LeftSemiJoin<
    method Filter (line 383) | public LeftSemiJoin<
    method ToSql (line 392) | public string ToSql()
  class RightSemiJoin (line 399) | public sealed class RightSemiJoin<
    method RightSemiJoin (line 415) | internal RightSemiJoin(
    method RightSemiJoin (line 431) | internal RightSemiJoin(
    method Where (line 439) | public RightSemiJoin<
    method Where (line 461) | public RightSemiJoin<
    method Where (line 483) | public RightSemiJoin<
    method Filter (line 493) | public RightSemiJoin<
    method Filter (line 502) | public RightSemiJoin<
    method Filter (line 511) | public RightSemiJoin<
    method ToSql (line 520) | public string ToSql()
  class QueryBuilderExtensions (line 541) | public static class QueryBuilderExtensions
    method Eq (line 543) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, string> col, Read...
    method Neq (line 546) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, string> col, Rea...
    method Lt (line 549) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, string> col, Read...
    method Lte (line 552) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, string> col, Rea...
    method Gt (line 555) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, string> col, Read...
    method Gte (line 558) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, string> col, Rea...
    method Eq (line 561) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, bool> col, bool v...
    method Neq (line 564) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, bool> col, bool ...
    method Eq (line 567) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, sbyte> col, sbyte...
    method Neq (line 570) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, sbyte> col, sbyt...
    method Lt (line 573) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, sbyte> col, sbyte...
    method Lte (line 576) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, sbyte> col, sbyt...
    method Gt (line 579) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, sbyte> col, sbyte...
    method Gte (line 582) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, sbyte> col, sbyt...
    method Eq (line 585) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, byte> col, byte v...
    method Neq (line 588) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, byte> col, byte ...
    method Lt (line 591) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, byte> col, byte v...
    method Lte (line 594) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, byte> col, byte ...
    method Gt (line 597) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, byte> col, byte v...
    method Gte (line 600) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, byte> col, byte ...
    method Eq (line 603) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, short> col, short...
    method Neq (line 606) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, short> col, shor...
    method Lt (line 609) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, short> col, short...
    method Lte (line 612) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, short> col, shor...
    method Gt (line 615) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, short> col, short...
    method Gte (line 618) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, short> col, shor...
    method Eq (line 621) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, ushort> col, usho...
    method Neq (line 624) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, ushort> col, ush...
    method Lt (line 627) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, ushort> col, usho...
    method Lte (line 630) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, ushort> col, ush...
    method Gt (line 633) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, ushort> col, usho...
    method Gte (line 636) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, ushort> col, ush...
    method Eq (line 639) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, int> col, int val...
    method Neq (line 642) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, int> col, int va...
    method Lt (line 645) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, int> col, int val...
    method Lte (line 648) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, int> col, int va...
    method Gt (line 651) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, int> col, int val...
    method Gte (line 654) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, int> col, int va...
    method Eq (line 657) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, uint> col, uint v...
    method Neq (line 660) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, uint> col, uint ...
    method Lt (line 663) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, uint> col, uint v...
    method Lte (line 666) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, uint> col, uint ...
    method Gt (line 669) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, uint> col, uint v...
    method Gte (line 672) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, uint> col, uint ...
    method Eq (line 675) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, long> col, long v...
    method Neq (line 678) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, long> col, long ...
    method Lt (line 681) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, long> col, long v...
    method Lte (line 684) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, long> col, long ...
    method Gt (line 687) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, long> col, long v...
    method Gte (line 690) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, long> col, long ...
    method Eq (line 693) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, ulong> col, ulong...
    method Neq (line 696) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, ulong> col, ulon...
    method Lt (line 699) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, ulong> col, ulong...
    method Lte (line 702) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, ulong> col, ulon...
    method Gt (line 705) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, ulong> col, ulong...
    method Gte (line 708) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, ulong> col, ulon...
    method Eq (line 711) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, U128> col, U128 v...
    method Neq (line 714) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, U128> col, U128 ...
    method Lt (line 717) | public static BoolExpr<TRow> Lt<TRow>(this Col<TRow, U128> col, U128 v...
    method Lte (line 720) | public static BoolExpr<TRow> Lte<TRow>(this Col<TRow, U128> col, U128 ...
    method Gt (line 723) | public static BoolExpr<TRow> Gt<TRow>(this Col<TRow, U128> col, U128 v...
    method Gte (line 726) | public static BoolExpr<TRow> Gte<TRow>(this Col<TRow, U128> col, U128 ...
    method Eq (line 729) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, Identity> col, Id...
    method Neq (line 732) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, Identity> col, I...
    method Eq (line 735) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, ConnectionId> col...
    method Neq (line 738) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, ConnectionId> co...
    method Eq (line 741) | public static BoolExpr<TRow> Eq<TRow>(this Col<TRow, Uuid> col, Uuid v...
    method Neq (line 744) | public static BoolExpr<TRow> Neq<TRow>(this Col<TRow, Uuid> col, Uuid ...
    method Eq (line 747) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, string> col, Re...
    method Neq (line 750) | public static BoolExpr<TRow> Neq<TRow>(
    method Eq (line 755) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, bool> col, bool...
    method Neq (line 758) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, bool> col, boo...
    method Eq (line 761) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, sbyte> col, sby...
    method Neq (line 764) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, sbyte> col, sb...
    method Eq (line 767) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, byte> col, byte...
    method Neq (line 770) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, byte> col, byt...
    method Eq (line 773) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, short> col, sho...
    method Neq (line 776) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, short> col, sh...
    method Eq (line 779) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, ushort> col, us...
    method Neq (line 782) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, ushort> col, u...
    method Eq (line 785) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, int> col, int v...
    method Neq (line 788) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, int> col, int ...
    method Eq (line 791) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, uint> col, uint...
    method Neq (line 794) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, uint> col, uin...
    method Eq (line 797) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, long> col, long...
    method Neq (line 800) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, long> col, lon...
    method Eq (line 803) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, ulong> col, ulo...
    method Neq (line 806) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, ulong> col, ul...
    method Eq (line 809) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, U128> col, U128...
    method Neq (line 812) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, U128> col, U12...
    method Eq (line 815) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, Identity> col, ...
    method Neq (line 818) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, Identity> col,...
    method Eq (line 821) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, ConnectionId> c...
    method Neq (line 824) | public static BoolExpr<TRow> Neq<TRow>(
    method Eq (line 829) | public static BoolExpr<TRow> Eq<TRow>(this IxCol<TRow, Uuid> col, Uuid...
    method Neq (line 832) | public static BoolExpr<TRow> Neq<TRow>(this IxCol<TRow, Uuid> col, Uui...
  class SqlFormat (line 836) | internal static class SqlFormat
    method QuoteIdent (line 838) | public static string QuoteIdent(string ident)
    method EscapeString (line 844) | private static string EscapeString(string s) => s.Replace("'", "''");
    method FormatStringLiteral (line 846) | public static string FormatStringLiteral(ReadOnlySpan<char> value) =>
    method FormatHexLiteral (line 849) | public static string FormatHexLiteral(string hex)

FILE: crates/bindings-csharp/Codegen.Tests/TestInit.cs
  class TestInit (line 8) | static class TestInit
    class DiagConverter (line 12) | class DiagConverter : WriteOnlyJsonConverter<Diagnostic>
      method Write (line 14) | public override void Write(VerifyJsonWriter writer, Diagnostic diag)
    method Initialize (line 58) | [ModuleInitializer]

FILE: crates/bindings-csharp/Codegen.Tests/Tests.cs
  class GeneratorSnapshotTests (line 11) | public static class GeneratorSnapshotTests
    method GetProjectDir (line 15) | static string GetProjectDir([CallerFilePath] string path = "") => Path...
    type StepOutput (line 17) | record struct StepOutput(string Key, IncrementalStepRunReason Reason, ...
    class Fixture (line 19) | class Fixture
      method Fixture (line 24) | public Fixture(string projectDir, CSharpCompilation sampleCompilation)
      method Compile (line 32) | public static async Task<Fixture> Compile(string name)
      method Verify (line 41) | public Task Verify(string fileName, object target) =>
      method CreateDriver (line 44) | private static CSharpGeneratorDriver CreateDriver(
      method RunAndCheckGenerator (line 60) | private async Task<IEnumerable<SyntaxTree>> RunAndCheckGenerator(
      method RunGeneratorAndGetResult (line 78) | public GeneratorDriverRunResult RunGeneratorAndGetResult(IIncrementa...
      method RunAndCheckGenerators (line 84) | public async Task<CSharpCompilation> RunAndCheckGenerators(
    method CheckCacheWorking (line 94) | private static void CheckCacheWorking(
    method GetCompilationErrors (line 139) | static IEnumerable<Diagnostic> GetCompilationErrors(Compilation compil...
    method AssertGeneratedCodeDoesNotUseInternalBound (line 148) | static void AssertGeneratedCodeDoesNotUseInternalBound(CSharpCompilati...
    method AssertPublicBoundIsAvailableInRuntime (line 159) | static void AssertPublicBoundIsAvailableInRuntime(Compilation compilat...
    method AssertRuntimeDoesNotDefineLocal (line 166) | static void AssertRuntimeDoesNotDefineLocal(Compilation compilation)
    method AssertNoCs0436Diagnostics (line 193) | static void AssertNoCs0436Diagnostics(Compilation compilation)
    method TypeGeneratorOnClient (line 202) | [Fact]
    method TypeAndModuleGeneratorsOnServer (line 214) | [Fact]
    method SettingsAndExplicitNames (line 242) | [Fact]
    method CSharpKeywordIdentifiersAreEscapedInGeneratedCode (line 259) | [Fact]
    method TestDiagnostics (line 340) | [Fact]
    method ViewInvalidReturnHighlightsReturnType (line 360) | [Fact]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/client/Lib.cs
  type CustomStruct (line 9) | [SpacetimeDB.Type]
  type CustomClass (line 18) | [SpacetimeDB.Type]
  type CustomClass (line 27) | [StructLayout(LayoutKind.Auto)]
  type CustomEnum (line 33) | [SpacetimeDB.Type]
  class IsExternalInit (line 42) | internal static class IsExternalInit { }
  class ModuleInitializerAttribute (line 44) | [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultipl...
  type CustomTaggedEnum (line 48) | [SpacetimeDB.Type]
  type PublicTable (line 52) | [SpacetimeDB.Type]
  class PublicTableViewRegressions (line 83) | internal static class PublicTableViewRegressions
    method Initialize (line 85) | [global::System.Runtime.CompilerServices.ModuleInitializer]
    class PublicTableCols (line 93) | private sealed class PublicTableCols
      method PublicTableCols (line 97) | public PublicTableCols(string tableName)
    class PublicTableIxCols (line 103) | private sealed class PublicTableIxCols
      method PublicTableIxCols (line 107) | public PublicTableIxCols(string tableName)
    method MakeTable (line 113) | private static Table<PublicTable, PublicTableCols, PublicTableIxCols> ...
    method BuildPublicTableQuerySql (line 123) | private static string BuildPublicTableQuerySql() =>
    method BuildPublicTableViewSql (line 126) | private static string BuildPublicTableViewSql()
    method BuildFindPublicTableByIdentitySql (line 132) | private static string BuildFindPublicTableByIdentitySql()
    method ValidatePublicTableQuerySql (line 141) | [Conditional("DEBUG")]
    method ValidatePublicTableViewSql (line 154) | [Conditional("DEBUG")]
    method ValidateFindPublicTableByIdentitySql (line 167) | [Conditional("DEBUG")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/client/snapshots/Type#CustomClass.verified.cs
  type CustomClass (line 5) | partial struct CustomClass : System.IEquatable<CustomClass>, SpacetimeDB...
    method ReadFields (line 7) | public void ReadFields(System.IO.BinaryReader reader)
    method WriteFields (line 13) | public void WriteFields(System.IO.BinaryWriter writer)
    method GetSerializer (line 19) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
    method ToString (line 24) | public override string ToString() =>
    type BSATN (line 27) | public readonly partial struct BSATN : SpacetimeDB.BSATN.IReadWrite<Cu...
      method Read (line 32) | public CustomClass Read(System.IO.BinaryReader reader)
      method Write (line 39) | public void Write(System.IO.BinaryWriter writer, CustomClass value)
      method GetAlgebraicType (line 44) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
      method GetAlgebraicType (line 55) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<CustomC...
    method GetHashCode (line 60) | public override int GetHashCode()
    method Equals (line 68) | public bool Equals(CustomClass that)
    method Equals (line 78) | public override bool Equals(object? that)

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/client/snapshots/Type#CustomStruct.verified.cs
  type CustomStruct (line 5) | partial struct CustomStruct
    method ReadFields (line 9) | public void ReadFields(System.IO.BinaryReader reader)
    method WriteFields (line 15) | public void WriteFields(System.IO.BinaryWriter writer)
    method GetSerializer (line 21) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
    method ToString (line 26) | public override string ToString() =>
    type BSATN (line 29) | public readonly partial struct BSATN : SpacetimeDB.BSATN.IReadWrite<Cu...
      method Read (line 34) | public CustomStruct Read(System.IO.BinaryReader reader)
      method Write (line 41) | public void Write(System.IO.BinaryWriter writer, CustomStruct value)
      method GetAlgebraicType (line 46) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
      method GetAlgebraicType (line 57) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<CustomS...
    method GetHashCode (line 62) | public override int GetHashCode()
    method Equals (line 70) | public bool Equals(CustomStruct that)
    method Equals (line 80) | public override bool Equals(object? that)

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/client/snapshots/Type#CustomTaggedEnum.verified.cs
  type CustomTaggedEnum (line 5) | partial record CustomTaggedEnum : System.IEquatable<CustomTaggedEnum>

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/client/snapshots/Type#PublicTable.verified.cs
  type PublicTable (line 5) | partial struct PublicTable : System.IEquatable<PublicTable>, SpacetimeDB...
    method ReadFields (line 7) | public void ReadFields(System.IO.BinaryReader reader)
    method WriteFields (line 37) | public void WriteFields(System.IO.BinaryWriter writer)
    method GetSerializer (line 67) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
    method ToString (line 72) | public override string ToString() =>
    type BSATN (line 75) | public readonly partial struct BSATN : SpacetimeDB.BSATN.IReadWrite<Pu...
      method Read (line 111) | public PublicTable Read(System.IO.BinaryReader reader)
      method Write (line 118) | public void Write(System.IO.BinaryWriter writer, PublicTable value)
      method GetAlgebraicType (line 123) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
      method GetAlgebraicType (line 164) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<PublicT...
    method GetHashCode (line 169) | public override int GetHashCode()
    method Equals (line 239) | public bool Equals(PublicTable that)
    method Equals (line 329) | public override bool Equals(object? that)

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/Lib.cs
  type LocalEnum (line 5) | public enum LocalEnum { }
  type TestUnsupportedType (line 7) | [SpacetimeDB.Type]
  type TestEnumWithExplicitValues (line 16) | [SpacetimeDB.Type]
  type TestEnumWithTooManyVariants (line 23) | [SpacetimeDB.Type]
  type TestTaggedEnumInlineTuple (line 285) | [SpacetimeDB.Type]
  type TestTaggedEnumField (line 291) | [SpacetimeDB.Type]
  type TestTypeParams (line 297) | [SpacetimeDB.Type]
  class Reducers (line 303) | public static partial class Reducers
    method TestReducerReturnType (line 305) | [SpacetimeDB.Reducer]
    method TestReducerWithoutContext (line 308) | [SpacetimeDB.Reducer]
    method TestDuplicateReducerKind1 (line 311) | [SpacetimeDB.Reducer(ReducerKind.Init)]
    method TestDuplicateReducerKind2 (line 314) | [SpacetimeDB.Reducer(ReducerKind.Init)]
    method TestDuplicateReducerName (line 317) | [SpacetimeDB.Reducer]
    class InAnotherNamespace (line 320) | public static partial class InAnotherNamespace
      method TestDuplicateReducerName (line 322) | [SpacetimeDB.Reducer]
    method OnReducerWithReservedPrefix (line 326) | [SpacetimeDB.Reducer]
    method __ReducerWithReservedPrefix (line 329) | [SpacetimeDB.Reducer]
  type TestAutoIncNotInteger (line 333) | [SpacetimeDB.Table]
  type TestUniqueNotEquatable (line 344) | [SpacetimeDB.Table]
  type TestTableTaggedEnum (line 354) | [SpacetimeDB.Table]
  type TestDuplicateTableName (line 357) | [SpacetimeDB.Table]
  class InAnotherNamespace (line 360) | public static partial class InAnotherNamespace
    type TestDuplicateTableName (line 362) | [SpacetimeDB.Table]
  type TestDefaultFieldValues (line 366) | [SpacetimeDB.Table]
  type MyEnum (line 421) | [SpacetimeDB.Type]
  type MyStruct (line 429) | [SpacetimeDB.Type]
    method MyStruct (line 434) | public MyStruct(int x)
  type TestIndexIssues (line 440) | [SpacetimeDB.Table]
  type TestScheduleIssues (line 457) | [SpacetimeDB.Table(
    method DummyScheduledReducer (line 490) | [SpacetimeDB.Reducer]
  type Player (line 494) | [SpacetimeDB.Table]
  type NotSpacetimeType (line 501) | public struct NotSpacetimeType { }
  class Module (line 503) | public partial class Module
    method ViewDefNoPublic (line 528) | [SpacetimeDB.View(Accessor = "view_def_no_public")]
    method ViewDefNoContext (line 535) | [SpacetimeDB.View(Accessor = "view_def_no_context", Public = true)]
    method ViewDefWrongContext (line 542) | [SpacetimeDB.View(Accessor = "view_def_wrong_context", Public = true)]
    method ViewNoInsert (line 549) | [SpacetimeDB.View(Accessor = "view_no_insert", Public = true)]
    method ViewNoDelete (line 557) | [SpacetimeDB.View(Accessor = "view_no_delete", Public = true)]
    method ViewDefWrongReturn (line 573) | [SpacetimeDB.View(Accessor = "view_def_wrong_return", Public = true)]
    method ViewDefIEnumerableReturnFromIter (line 580) | [SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_iter", ...
    method ViewDefIEnumerableReturnFromFilter (line 587) | [SpacetimeDB.View(Accessor = "view_def_ienumerable_return_from_filter"...
    method ViewDefReturnsNotASpacetimeType (line 596) | [SpacetimeDB.View(Accessor = "view_def_returns_not_a_spacetime_type", ...
    method ViewDefNoAnonIdentity (line 602) | [SpacetimeDB.View(Accessor = "view_def_no_anon_identity", Public = true)]
    method ViewDefNoIter (line 609) | [SpacetimeDB.View(Accessor = "view_def_no_iter", Public = true)]
    method ViewDefIndexNoMutation (line 616) | [SpacetimeDB.View(Accessor = "view_def_index_no_mutation", Public = tr...

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#FFI.verified.cs
  type TestDuplicateTableNameCols (line 18) | public readonly struct TestDuplicateTableNameCols
    method TestDuplicateTableNameCols (line 20) | internal TestDuplicateTableNameCols(string tableName) { }
    method TestDuplicateTableNameCols (line 226) | internal TestDuplicateTableNameCols(string tableName) { }
  type TestDuplicateTableNameIxCols (line 23) | public readonly struct TestDuplicateTableNameIxCols
    method TestDuplicateTableNameIxCols (line 25) | internal TestDuplicateTableNameIxCols(string tableName) { }
    method TestDuplicateTableNameIxCols (line 231) | internal TestDuplicateTableNameIxCols(string tableName) { }
  type QueryBuilder (line 28) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type PlayerCols (line 42) | public readonly struct PlayerCols
    method PlayerCols (line 46) | internal PlayerCols(string tableName)
  type PlayerIxCols (line 55) | public readonly struct PlayerIxCols
    method PlayerIxCols (line 57) | internal PlayerIxCols(string tableName) { }
  type QueryBuilder (line 60) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestAutoIncNotIntegerCols (line 66) | public readonly struct TestAutoIncNotIntegerCols
    method TestAutoIncNotIntegerCols (line 74) | internal TestAutoIncNotIntegerCols(string tableName)
  type TestAutoIncNotIntegerIxCols (line 87) | public readonly struct TestAutoIncNotIntegerIxCols
    method TestAutoIncNotIntegerIxCols (line 89) | internal TestAutoIncNotIntegerIxCols(string tableName) { }
  type QueryBuilder (line 92) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestDefaultFieldValuesCols (line 106) | public readonly struct TestDefaultFieldValuesCols
    method TestDefaultFieldValuesCols (line 132) | internal TestDefaultFieldValuesCols(string tableName)
  type TestDefaultFieldValuesIxCols (line 205) | public readonly struct TestDefaultFieldValuesIxCols
    method TestDefaultFieldValuesIxCols (line 207) | internal TestDefaultFieldValuesIxCols(string tableName) { }
  type QueryBuilder (line 210) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestDuplicateTableNameCols (line 224) | public readonly struct TestDuplicateTableNameCols
    method TestDuplicateTableNameCols (line 20) | internal TestDuplicateTableNameCols(string tableName) { }
    method TestDuplicateTableNameCols (line 226) | internal TestDuplicateTableNameCols(string tableName) { }
  type TestDuplicateTableNameIxCols (line 229) | public readonly struct TestDuplicateTableNameIxCols
    method TestDuplicateTableNameIxCols (line 25) | internal TestDuplicateTableNameIxCols(string tableName) { }
    method TestDuplicateTableNameIxCols (line 231) | internal TestDuplicateTableNameIxCols(string tableName) { }
  type QueryBuilder (line 234) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestIndexIssuesCols (line 248) | public readonly struct TestIndexIssuesCols
    method TestIndexIssuesCols (line 256) | internal TestIndexIssuesCols(string tableName)
  type TestIndexIssuesIxCols (line 269) | public readonly struct TestIndexIssuesIxCols
    method TestIndexIssuesIxCols (line 277) | internal TestIndexIssuesIxCols(string tableName)
  type QueryBuilder (line 290) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestScheduleWithoutPrimaryKeyCols (line 304) | public readonly struct TestScheduleWithoutPrimaryKeyCols
    method TestScheduleWithoutPrimaryKeyCols (line 317) | internal TestScheduleWithoutPrimaryKeyCols(string tableName)
  type TestScheduleWithoutPrimaryKeyIxCols (line 338) | public readonly struct TestScheduleWithoutPrimaryKeyIxCols
    method TestScheduleWithoutPrimaryKeyIxCols (line 340) | internal TestScheduleWithoutPrimaryKeyIxCols(string tableName) { }
  type QueryBuilder (line 343) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestScheduleWithWrongPrimaryKeyTypeCols (line 357) | public readonly struct TestScheduleWithWrongPrimaryKeyTypeCols
    method TestScheduleWithWrongPrimaryKeyTypeCols (line 370) | internal TestScheduleWithWrongPrimaryKeyTypeCols(string tableName)
  type TestScheduleWithWrongPrimaryKeyTypeIxCols (line 391) | public readonly struct TestScheduleWithWrongPrimaryKeyTypeIxCols
    method TestScheduleWithWrongPrimaryKeyTypeIxCols (line 395) | internal TestScheduleWithWrongPrimaryKeyTypeIxCols(string tableName)
  type QueryBuilder (line 404) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestScheduleWithoutScheduleAtCols (line 418) | public readonly struct TestScheduleWithoutScheduleAtCols
    method TestScheduleWithoutScheduleAtCols (line 431) | internal TestScheduleWithoutScheduleAtCols(string tableName)
  type TestScheduleWithoutScheduleAtIxCols (line 452) | public readonly struct TestScheduleWithoutScheduleAtIxCols
    method TestScheduleWithoutScheduleAtIxCols (line 456) | internal TestScheduleWithoutScheduleAtIxCols(string tableName)
  type QueryBuilder (line 465) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestScheduleWithWrongScheduleAtTypeCols (line 479) | public readonly struct TestScheduleWithWrongScheduleAtTypeCols
    method TestScheduleWithWrongScheduleAtTypeCols (line 492) | internal TestScheduleWithWrongScheduleAtTypeCols(string tableName)
  type TestScheduleWithWrongScheduleAtTypeIxCols (line 513) | public readonly struct TestScheduleWithWrongScheduleAtTypeIxCols
    method TestScheduleWithWrongScheduleAtTypeIxCols (line 517) | internal TestScheduleWithWrongScheduleAtTypeIxCols(string tableName)
  type QueryBuilder (line 526) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestScheduleWithMissingScheduleAtFieldCols (line 540) | public readonly struct TestScheduleWithMissingScheduleAtFieldCols
    method TestScheduleWithMissingScheduleAtFieldCols (line 553) | internal TestScheduleWithMissingScheduleAtFieldCols(string tableName)
  type TestScheduleWithMissingScheduleAtFieldIxCols (line 574) | public readonly struct TestScheduleWithMissingScheduleAtFieldIxCols
    method TestScheduleWithMissingScheduleAtFieldIxCols (line 576) | internal TestScheduleWithMissingScheduleAtFieldIxCols(string tableName...
  type QueryBuilder (line 579) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type TestUniqueNotEquatableCols (line 597) | public readonly struct TestUniqueNotEquatableCols
    method TestUniqueNotEquatableCols (line 605) | internal TestUniqueNotEquatableCols(string tableName)
  type TestUniqueNotEquatableIxCols (line 618) | public readonly struct TestUniqueNotEquatableIxCols
    method TestUniqueNotEquatableIxCols (line 625) | internal TestUniqueNotEquatableIxCols(string tableName)
  type QueryBuilder (line 634) | public readonly partial struct QueryBuilder
    method TestDuplicateTableName (line 30) | public global::SpacetimeDB.Table<
    method Player (line 62) | public global::SpacetimeDB.Table<global::Player, PlayerCols, PlayerIxC...
    method TestAutoIncNotInteger (line 94) | public global::SpacetimeDB.Table<
    method TestDefaultFieldValues (line 212) | public global::SpacetimeDB.Table<
    method TestDuplicateTableName (line 236) | public global::SpacetimeDB.Table<
    method TestIndexIssues (line 292) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutPrimaryKey (line 345) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongPrimaryKeyType (line 406) | public global::SpacetimeDB.Table<
    method TestScheduleWithoutScheduleAt (line 467) | public global::SpacetimeDB.Table<
    method TestScheduleWithWrongScheduleAtType (line 528) | public global::SpacetimeDB.Table<
    method TestScheduleWithMissingScheduleAtField (line 581) | public global::SpacetimeDB.Table<
    method TestUniqueNotEquatable (line 636) | public global::SpacetimeDB.Table<
  type ReducerContext (line 648) | public sealed record ReducerContext : DbContext<Local>, Internal.IReduce...
  class ProcedureContext (line 726) | public sealed partial class ProcedureContext : global::SpacetimeDB.Proce...
    method ProcedureContext (line 730) | internal ProcedureContext(
    method CreateLocal (line 738) | protected override global::SpacetimeDB.LocalBase CreateLocal() => _db;
    method CreateTxContext (line 740) | protected override global::SpacetimeDB.ProcedureTxContextBase CreateTx...
    method WithTx (line 749) | [Experimental("STDB_UNSTABLE")]
    method TryWithTx (line 753) | [Experimental("STDB_UNSTABLE")]
    method NewUuidV4 (line 771) | public Uuid NewUuidV4()
    method NewUuidV7 (line 799) | public Uuid NewUuidV7()
  class ProcedureTxContext (line 807) | [Experimental("STDB_UNSTABLE")]
    method ProcedureTxContext (line 810) | internal ProcedureTxContext(Internal.TxContext inner)
  class Local (line 816) | public sealed class Local : global::SpacetimeDB.LocalBase
  type ViewContext (line 840) | public sealed record ViewContext : DbContext<Internal.LocalReadOnly>, In...
  type AnonymousViewContext (line 853) | public sealed record AnonymousViewContext
  type Player (line 866) | public readonly struct Player : global::SpacetimeDB.Internal.ITableView<...
    method ReadGenFields (line 868) | public static global::Player ReadGenFields(
    method MakeTableDesc (line 876) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 905) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 916) | public IEnumerable<global::Player> Iter() =>
    method Insert (line 919) | public global::Player Insert(global::Player row) =>
    method Delete (line 922) | public bool Delete(global::Player row) =>
    class IdentityUniqueIndex (line 925) | public sealed class IdentityUniqueIndex
      method IdentityUniqueIndex (line 928) | internal IdentityUniqueIndex()
      method Find (line 934) | public global::Player? Find(SpacetimeDB.Identity key) => FindSingle(...
  type TestAutoIncNotInteger (line 940) | public readonly struct TestAutoIncNotInteger
    method ReadGenFields (line 946) | public static global::TestAutoIncNotInteger ReadGenFields(
    method MakeTableDesc (line 964) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1004) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1018) | public IEnumerable<global::TestAutoIncNotInteger> Iter() =>
    method Insert (line 1024) | public global::TestAutoIncNotInteger Insert(global::TestAutoIncNotInte...
    method Delete (line 1030) | public bool Delete(global::TestAutoIncNotInteger row) =>
    class IdentityFieldUniqueIndex (line 1036) | public sealed class IdentityFieldUniqueIndex
      method IdentityFieldUniqueIndex (line 1044) | internal IdentityFieldUniqueIndex()
      method Find (line 1050) | public global::TestAutoIncNotInteger? Find(string key) => FindSingle...
  type TestDefaultFieldValues (line 1056) | public readonly struct TestDefaultFieldValues
    method ReadGenFields (line 1062) | public static global::TestDefaultFieldValues ReadGenFields(
    method MakeTableDesc (line 1070) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1100) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1114) | public IEnumerable<global::TestDefaultFieldValues> Iter() =>
    method Insert (line 1120) | public global::TestDefaultFieldValues Insert(global::TestDefaultFieldV...
    method Delete (line 1126) | public bool Delete(global::TestDefaultFieldValues row) =>
  type TestDuplicateTableName (line 1133) | public readonly struct TestDuplicateTableName
    method ReadGenFields (line 1139) | public static global::TestDuplicateTableName ReadGenFields(
    method MakeTableDesc (line 1147) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1164) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1178) | public IEnumerable<global::TestDuplicateTableName> Iter() =>
    method Insert (line 1184) | public global::TestDuplicateTableName Insert(global::TestDuplicateTabl...
    method Delete (line 1190) | public bool Delete(global::TestDuplicateTableName row) =>
  type TestIndexIssues (line 1197) | public readonly struct TestIndexIssues
    method ReadGenFields (line 1200) | public static global::TestIndexIssues ReadGenFields(
    method MakeTableDesc (line 1208) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1257) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1271) | public IEnumerable<global::TestIndexIssues> Iter() =>
    method Insert (line 1277) | public global::TestIndexIssues Insert(global::TestIndexIssues row) =>
    method Delete (line 1283) | public bool Delete(global::TestIndexIssues row) =>
    class TestIndexWithoutColumnsIndex (line 1289) | public sealed class TestIndexWithoutColumnsIndex()
    class TestIndexWithEmptyColumnsIndex (line 1296) | public sealed class TestIndexWithEmptyColumnsIndex()
    class TestUnknownColumnsIndex (line 1303) | public sealed class TestUnknownColumnsIndex()
    class SelfIndexingColumnIndex (line 1310) | public sealed class SelfIndexingColumnIndex()
      method Filter (line 1315) | public IEnumerable<global::TestIndexIssues> Filter(int SelfIndexingC...
      method Delete (line 1322) | public ulong Delete(int SelfIndexingColumn) =>
      method Filter (line 1329) | public IEnumerable<global::TestIndexIssues> Filter(
      method Delete (line 1338) | public ulong Delete(global::SpacetimeDB.Bound<int> SelfIndexingColum...
    class SecondaryIndexingColumnIndex (line 1348) | public sealed class SecondaryIndexingColumnIndex()
      method Filter (line 1353) | public IEnumerable<global::TestIndexIssues> Filter(int SecondaryInde...
      method Delete (line 1360) | public ulong Delete(int SecondaryIndexingColumn) =>
      method Filter (line 1367) | public IEnumerable<global::TestIndexIssues> Filter(
      method Delete (line 1376) | public ulong Delete(global::SpacetimeDB.Bound<int> SecondaryIndexing...
    class TestUnexpectedColumnsIndex (line 1386) | public sealed class TestUnexpectedColumnsIndex()
      method Filter (line 1391) | public IEnumerable<global::TestIndexIssues> Filter(int SelfIndexingC...
      method Delete (line 1398) | public ulong Delete(int SelfIndexingColumn) =>
      method Filter (line 1405) | public IEnumerable<global::TestIndexIssues> Filter(
      method Delete (line 1414) | public ulong Delete(global::SpacetimeDB.Bound<int> SelfIndexingColum...
  type TestScheduleWithMissingScheduleAtField (line 1425) | public readonly struct TestScheduleWithMissingScheduleAtField
    method ReadGenFields (line 1431) | public static global::TestScheduleIssues ReadGenFields(
    method MakeTableDesc (line 1439) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1456) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1470) | public IEnumerable<global::TestScheduleIssues> Iter() =>
    method Insert (line 1476) | public global::TestScheduleIssues Insert(global::TestScheduleIssues ro...
    method Delete (line 1482) | public bool Delete(global::TestScheduleIssues row) =>
  type TestScheduleWithoutPrimaryKey (line 1489) | public readonly struct TestScheduleWithoutPrimaryKey
    method ReadGenFields (line 1495) | public static global::TestScheduleIssues ReadGenFields(
    method MakeTableDesc (line 1503) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1520) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1538) | public IEnumerable<global::TestScheduleIssues> Iter() =>
    method Insert (line 1544) | public global::TestScheduleIssues Insert(global::TestScheduleIssues ro...
    method Delete (line 1550) | public bool Delete(global::TestScheduleIssues row) =>
  type TestScheduleWithoutScheduleAt (line 1557) | public readonly struct TestScheduleWithoutScheduleAt
    method ReadGenFields (line 1563) | public static global::TestScheduleIssues ReadGenFields(
    method MakeTableDesc (line 1571) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1601) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1615) | public IEnumerable<global::TestScheduleIssues> Iter() =>
    method Insert (line 1621) | public global::TestScheduleIssues Insert(global::TestScheduleIssues ro...
    method Delete (line 1627) | public bool Delete(global::TestScheduleIssues row) =>
    class IdCorrectTypeUniqueIndex (line 1633) | public sealed class IdCorrectTypeUniqueIndex
      method IdCorrectTypeUniqueIndex (line 1641) | internal IdCorrectTypeUniqueIndex()
      method Find (line 1647) | public global::TestScheduleIssues? Find(int key) => FindSingle(key);
      method Update (line 1649) | public global::TestScheduleIssues Update(global::TestScheduleIssues ...
  type TestScheduleWithWrongPrimaryKeyType (line 1656) | public readonly struct TestScheduleWithWrongPrimaryKeyType
    method ReadGenFields (line 1662) | public static global::TestScheduleIssues ReadGenFields(
    method MakeTableDesc (line 1670) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1700) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1718) | public IEnumerable<global::TestScheduleIssues> Iter() =>
    method Insert (line 1724) | public global::TestScheduleIssues Insert(global::TestScheduleIssues ro...
    method Delete (line 1730) | public bool Delete(global::TestScheduleIssues row) =>
    class IdWrongTypeUniqueIndex (line 1736) | public sealed class IdWrongTypeUniqueIndex
      method IdWrongTypeUniqueIndex (line 1744) | internal IdWrongTypeUniqueIndex()
      method Find (line 1750) | public global::TestScheduleIssues? Find(string key) => FindSingle(key);
      method Update (line 1752) | public global::TestScheduleIssues Update(global::TestScheduleIssues ...
  type TestScheduleWithWrongScheduleAtType (line 1759) | public readonly struct TestScheduleWithWrongScheduleAtType
    method ReadGenFields (line 1765) | public static global::TestScheduleIssues ReadGenFields(
    method MakeTableDesc (line 1773) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1803) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1821) | public IEnumerable<global::TestScheduleIssues> Iter() =>
    method Insert (line 1827) | public global::TestScheduleIssues Insert(global::TestScheduleIssues ro...
    method Delete (line 1833) | public bool Delete(global::TestScheduleIssues row) =>
    class IdCorrectTypeUniqueIndex (line 1839) | public sealed class IdCorrectTypeUniqueIndex
      method IdCorrectTypeUniqueIndex (line 1847) | internal IdCorrectTypeUniqueIndex()
      method Find (line 1853) | public global::TestScheduleIssues? Find(int key) => FindSingle(key);
      method Update (line 1855) | public global::TestScheduleIssues Update(global::TestScheduleIssues ...
  type TestUniqueNotEquatable (line 1862) | public readonly struct TestUniqueNotEquatable
    method ReadGenFields (line 1868) | public static global::TestUniqueNotEquatable ReadGenFields(
    method MakeTableDesc (line 1876) | public static SpacetimeDB.Internal.RawTableDefV10 MakeTableDesc(
    method MakeScheduleDesc (line 1915) | public static SpacetimeDB.Internal.RawScheduleDefV10? MakeScheduleDesc...
    method Iter (line 1929) | public IEnumerable<global::TestUniqueNotEquatable> Iter() =>
    method Insert (line 1935) | public global::TestUniqueNotEquatable Insert(global::TestUniqueNotEqua...
    method Delete (line 1941) | public bool Delete(global::TestUniqueNotEquatable row) =>
    class PrimaryKeyFieldUniqueIndex (line 1947) | public sealed class PrimaryKeyFieldUniqueIndex
      method PrimaryKeyFieldUniqueIndex (line 1955) | internal PrimaryKeyFieldUniqueIndex()
      method Find (line 1961) | public global::TestUniqueNotEquatable? Find(TestEnumWithExplicitValu...
      method Update (line 1964) | public global::TestUniqueNotEquatable Update(global::TestUniqueNotEq...
  class view_def_ienumerable_return_from_filterViewDispatcher (line 1972) | sealed class view_def_ienumerable_return_from_filterViewDispatcher
    method MakeViewDef (line 1975) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 1989) | public byte[] Invoke(
  class view_def_ienumerable_return_from_iterViewDispatcher (line 2019) | sealed class view_def_ienumerable_return_from_iterViewDispatcher
    method MakeViewDef (line 2022) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2036) | public byte[] Invoke(
  class view_def_no_contextViewDispatcher (line 2064) | sealed class view_def_no_contextViewDispatcher : global::SpacetimeDB.Int...
    method MakeViewDef (line 2066) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2080) | public byte[] Invoke(
  class view_def_no_publicViewDispatcher (line 2105) | sealed class view_def_no_publicViewDispatcher : global::SpacetimeDB.Inte...
    method MakeViewDef (line 2107) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2121) | public byte[] Invoke(
  class view_def_wrong_contextViewDispatcher (line 2146) | sealed class view_def_wrong_contextViewDispatcher : global::SpacetimeDB....
    method MakeViewDef (line 2148) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2162) | public byte[] Invoke(
  class view_def_wrong_returnViewDispatcher (line 2187) | sealed class view_def_wrong_returnViewDispatcher : global::SpacetimeDB.I...
    method MakeViewDef (line 2189) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2201) | public byte[] Invoke(
  class view_no_deleteViewDispatcher (line 2226) | sealed class view_no_deleteViewDispatcher : global::SpacetimeDB.Internal...
    method MakeViewDef (line 2228) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2242) | public byte[] Invoke(
  class view_no_insertViewDispatcher (line 2271) | sealed class view_no_insertViewDispatcher : global::SpacetimeDB.Internal...
    method MakeViewDef (line 2273) | public SpacetimeDB.Internal.RawViewDefV10 MakeViewDef(
    method Invoke (line 2287) | public byte[] Invoke(
  class view_def_index_no_mutationViewDispatcher (line 2316) | sealed class view_def_index_no_mutationViewDispatcher : global::Spacetim...
    method MakeAnonymousViewDef (line 2318) | public SpacetimeDB.Internal.RawViewDefV10 MakeAnonymousViewDef(
    method Invoke (line 2332) | public byte[] Invoke(
  class view_def_no_anon_identityViewDispatcher (line 2361) | sealed class view_def_no_anon_identityViewDispatcher : global::Spacetime...
    method MakeAnonymousViewDef (line 2363) | public SpacetimeDB.Internal.RawViewDefV10 MakeAnonymousViewDef(
    method Invoke (line 2377) | public byte[] Invoke(
  class view_def_no_iterViewDispatcher (line 2406) | sealed class view_def_no_iterViewDispatcher : global::SpacetimeDB.Intern...
    method MakeAnonymousViewDef (line 2408) | public SpacetimeDB.Internal.RawViewDefV10 MakeAnonymousViewDef(
    method Invoke (line 2422) | public byte[] Invoke(
  class view_def_returns_not_a_spacetime_typeViewDispatcher (line 2451) | sealed class view_def_returns_not_a_spacetime_typeViewDispatcher
    method MakeAnonymousViewDef (line 2454) | public SpacetimeDB.Internal.RawViewDefV10 MakeAnonymousViewDef(
    method Invoke (line 2469) | public byte[] Invoke(
  class PlayerReadOnly (line 2504) | public sealed class PlayerReadOnly
    method PlayerReadOnly (line 2507) | internal PlayerReadOnly()
    class IdentityIndex (line 2518) | public sealed class IdentityIndex
      method IdentityIndex (line 2526) | internal IdentityIndex()
      method Find (line 2529) | public global::Player? Find(SpacetimeDB.Identity key) => FindSingle(...
  class TestAutoIncNotIntegerReadOnly (line 2535) | public sealed class TestAutoIncNotIntegerReadOnly
    method TestAutoIncNotIntegerReadOnly (line 2538) | internal TestAutoIncNotIntegerReadOnly()
    class IdentityFieldIndex (line 2549) | public sealed class IdentityFieldIndex
      method IdentityFieldIndex (line 2557) | internal IdentityFieldIndex()
      method Find (line 2560) | public global::TestAutoIncNotInteger? Find(string key) => FindSingle...
  class TestDefaultFieldValuesReadOnly (line 2566) | public sealed class TestDefaultFieldValuesReadOnly
    method TestDefaultFieldValuesReadOnly (line 2569) | internal TestDefaultFieldValuesReadOnly()
  class TestDuplicateTableNameReadOnly (line 2581) | public sealed class TestDuplicateTableNameReadOnly
    method TestDuplicateTableNameReadOnly (line 2584) | internal TestDuplicateTableNameReadOnly()
  class TestIndexIssuesReadOnly (line 2596) | public sealed class TestIndexIssuesReadOnly
    method TestIndexIssuesReadOnly (line 2599) | internal TestIndexIssuesReadOnly()
    class TestIndexWithoutColumnsIndex (line 2610) | public sealed class TestIndexWithoutColumnsIndex
      method TestIndexWithoutColumnsIndex (line 2613) | internal TestIndexWithoutColumnsIndex()
    class TestIndexWithEmptyColumnsIndex (line 2619) | public sealed class TestIndexWithEmptyColumnsIndex
      method TestIndexWithEmptyColumnsIndex (line 2622) | internal TestIndexWithEmptyColumnsIndex()
    class TestUnknownColumnsIndex (line 2628) | public sealed class TestUnknownColumnsIndex
      method TestUnknownColumnsIndex (line 2631) | internal TestUnknownColumnsIndex()
    class SelfIndexingColumnIndex (line 2637) | public sealed class SelfIndexingColumnIndex
      method SelfIndexingColumnIndex (line 2640) | internal SelfIndexingColumnIndex()
      method Filter (line 2643) | public IEnumerable<global::TestIndexIssues> Filter(int SelfIndexingC...
      method Filter (line 2650) | public IEnumerable<global::TestIndexIssues> Filter(
    class SecondaryIndexingColumnIndex (line 2662) | public sealed class SecondaryIndexingColumnIndex
      method SecondaryIndexingColumnIndex (line 2665) | internal SecondaryIndexingColumnIndex()
      method Filter (line 2668) | public IEnumerable<global::TestIndexIssues> Filter(int SecondaryInde...
      method Filter (line 2675) | public IEnumerable<global::TestIndexIssues> Filter(
    class TestUnexpectedColumnsIndex (line 2687) | public sealed class TestUnexpectedColumnsIndex
      method TestUnexpectedColumnsIndex (line 2690) | internal TestUnexpectedColumnsIndex()
      method Filter (line 2693) | public IEnumerable<global::TestIndexIssues> Filter(int SelfIndexingC...
      method Filter (line 2700) | public IEnumerable<global::TestIndexIssues> Filter(
  class TestScheduleWithMissingScheduleAtFieldReadOnly (line 2713) | public sealed class TestScheduleWithMissingScheduleAtFieldReadOnly
    method TestScheduleWithMissingScheduleAtFieldReadOnly (line 2716) | internal TestScheduleWithMissingScheduleAtFieldReadOnly()
  class TestScheduleWithoutPrimaryKeyReadOnly (line 2728) | public sealed class TestScheduleWithoutPrimaryKeyReadOnly
    method TestScheduleWithoutPrimaryKeyReadOnly (line 2731) | internal TestScheduleWithoutPrimaryKeyReadOnly()
  class TestScheduleWithoutScheduleAtReadOnly (line 2743) | public sealed class TestScheduleWithoutScheduleAtReadOnly
    method TestScheduleWithoutScheduleAtReadOnly (line 2746) | internal TestScheduleWithoutScheduleAtReadOnly()
    class IdCorrectTypeIndex (line 2757) | public sealed class IdCorrectTypeIndex
      method IdCorrectTypeIndex (line 2765) | internal IdCorrectTypeIndex()
      method Find (line 2768) | public global::TestScheduleIssues? Find(int key) => FindSingle(key);
  class TestScheduleWithWrongPrimaryKeyTypeReadOnly (line 2774) | public sealed class TestScheduleWithWrongPrimaryKeyTypeReadOnly
    method TestScheduleWithWrongPrimaryKeyTypeReadOnly (line 2777) | internal TestScheduleWithWrongPrimaryKeyTypeReadOnly()
    class IdWrongTypeIndex (line 2788) | public sealed class IdWrongTypeIndex
      method IdWrongTypeIndex (line 2796) | internal IdWrongTypeIndex()
      method Find (line 2799) | public global::TestScheduleIssues? Find(string key) => FindSingle(key);
  class TestScheduleWithWrongScheduleAtTypeReadOnly (line 2805) | public sealed class TestScheduleWithWrongScheduleAtTypeReadOnly
    method TestScheduleWithWrongScheduleAtTypeReadOnly (line 2808) | internal TestScheduleWithWrongScheduleAtTypeReadOnly()
    class IdCorrectTypeIndex (line 2819) | public sealed class IdCorrectTypeIndex
      method IdCorrectTypeIndex (line 2827) | internal IdCorrectTypeIndex()
      method Find (line 2830) | public global::TestScheduleIssues? Find(int key) => FindSingle(key);
  class TestUniqueNotEquatableReadOnly (line 2836) | public sealed class TestUniqueNotEquatableReadOnly
    method TestUniqueNotEquatableReadOnly (line 2839) | internal TestUniqueNotEquatableReadOnly()
    class PrimaryKeyFieldIndex (line 2850) | public sealed class PrimaryKeyFieldIndex
      method PrimaryKeyFieldIndex (line 2858) | internal PrimaryKeyFieldIndex()
      method Find (line 2861) | public global::TestUniqueNotEquatable? Find(TestEnumWithExplicitValu...
  class LocalReadOnly (line 2871) | public sealed partial class LocalReadOnly
  class ModuleRegistration (line 2897) | static class ModuleRegistration
    class __ReducerWithReservedPrefix (line 2899) | class __ReducerWithReservedPrefix : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 2901) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 2914) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class DummyScheduledReducer (line 2920) | class DummyScheduledReducer : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 2924) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 2937) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class OnReducerWithReservedPrefix (line 2946) | class OnReducerWithReservedPrefix : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 2948) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 2961) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class TestDuplicateReducerKind1 (line 2967) | class TestDuplicateReducerKind1 : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 2969) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 2982) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class TestDuplicateReducerKind2 (line 2988) | class TestDuplicateReducerKind2 : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 2990) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 3003) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class TestDuplicateReducerName (line 3009) | class TestDuplicateReducerName : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 3011) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 3024) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class TestReducerReturnType (line 3030) | class TestReducerReturnType : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 3032) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 3045) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    class TestReducerWithoutContext (line 3051) | class TestReducerWithoutContext : SpacetimeDB.Internal.IReducer
      method MakeReducerDef (line 3053) | public SpacetimeDB.Internal.RawReducerDefV10 MakeReducerDef(
      method Invoke (line 3066) | public void Invoke(BinaryReader reader, SpacetimeDB.Internal.IReduce...
    method ToListOrEmpty (line 3072) | public static List<T> ToListOrEmpty<T>(T? value)
    method ToListOrEmpty (line 3075) | public static List<T> ToListOrEmpty<T>(T? value)
    method Main (line 3081) | [UnmanagedCallersOnly(EntryPoint = "__preinit__10_init_csharp")]
    method __describe_module__ (line 3400) | [UnmanagedCallersOnly(EntryPoint = "__describe_module__")]
    method __call_reducer__ (line 3404) | [UnmanagedCallersOnly(EntryPoint = "__call_reducer__")]
    method __call_procedure__ (line 3430) | [UnmanagedCallersOnly(EntryPoint = "__call_procedure__")]
    method __call_view__ (line 3456) | [UnmanagedCallersOnly(EntryPoint = "__call_view__")]
    method __call_view_anon__ (line 3476) | [UnmanagedCallersOnly(EntryPoint = "__call_view_anon__")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#InAnotherNamespace.TestDuplicateTableName.verified.cs
  class InAnotherNamespace (line 5) | partial class InAnotherNamespace
    type TestDuplicateTableName (line 7) | partial struct TestDuplicateTableName
      method ReadFields (line 11) | public void ReadFields(System.IO.BinaryReader reader) { }
      method WriteFields (line 13) | public void WriteFields(System.IO.BinaryWriter writer) { }
      method GetSerializer (line 15) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
      method ToString (line 20) | public override string ToString() => $"TestDuplicateTableName {{  }}";
      type BSATN (line 22) | public readonly partial struct BSATN
        method Read (line 25) | public InAnotherNamespace.TestDuplicateTableName Read(System.IO.Bi...
        method Write (line 32) | public void Write(
        method GetAlgebraicType (line 40) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
        method GetAlgebraicType (line 49) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<InAno...
      method GetHashCode (line 54) | public override int GetHashCode()
      method Equals (line 60) | public bool Equals(InAnotherNamespace.TestDuplicateTableName that)
      method Equals (line 65) | public override bool Equals(object? that)

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Player.verified.cs
  type Player (line 5) | partial struct Player : System.IEquatable<Player>, SpacetimeDB.BSATN.ISt...
    method ReadFields (line 7) | public void ReadFields(System.IO.BinaryReader reader)
    method WriteFields (line 12) | public void WriteFields(System.IO.BinaryWriter writer)
    method GetSerializer (line 17) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
    method ToString (line 22) | public override string ToString() =>
    type BSATN (line 25) | public readonly partial struct BSATN : SpacetimeDB.BSATN.IReadWrite<Pl...
      method Read (line 29) | public Player Read(System.IO.BinaryReader reader)
      method Write (line 36) | public void Write(System.IO.BinaryWriter writer, Player value)
      method GetAlgebraicType (line 41) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
      method GetAlgebraicType (line 51) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<Player>...
    method GetHashCode (line 56) | public override int GetHashCode()
    method Equals (line 63) | public bool Equals(Player that)
    method Equals (line 69) | public override bool Equals(object? that)

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.InAnotherNamespace.TestDuplicateReducerName.verified.cs
  class Reducers (line 5) | partial class Reducers
    class InAnotherNamespace (line 7) | partial class InAnotherNamespace
      method VolatileNonatomicScheduleImmediateTestDuplicateReducerName (line 9) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.OnReducerWithReservedPrefix.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateOnReducerWithReservedPrefix (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.TestDuplicateReducerKind1.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateTestDuplicateReducerKind1 (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.TestDuplicateReducerKind2.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateTestDuplicateReducerKind2 (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.TestDuplicateReducerName.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateTestDuplicateReducerName (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.TestReducerReturnType.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateTestReducerReturnType (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.TestReducerWithoutContext.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediateTestReducerWithoutContext (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#Reducers.__ReducerWithReservedPrefix.verified.cs
  class Reducers (line 5) | partial class Reducers
    method VolatileNonatomicScheduleImmediate__ReducerWithReservedPrefix (line 7) | [System.Diagnostics.CodeAnalysis.Experimental("STDB_UNSTABLE")]

FILE: crates/bindings-csharp/Codegen.Tests/fixtures/diag/snapshots/Module#TestAutoIncNotInteger.verified.cs
  type TestAutoIncNotInteger (line 5) | partial struct TestAutoIncNotInteger
    method ReadFields (line 9) | public void ReadFields(System.IO.BinaryReader reader)
    method WriteFields (line 15) | public void WriteFields(System.IO.BinaryWriter writer)
    method GetSerializer (line 21) | object SpacetimeDB.BSATN.IStructuralReadWrite.GetSerializer()
    method ToString (line 26) | public override string ToString() =>
    type BSATN (line 29) | public readonly partial struct BSATN : SpacetimeDB.BSATN.IReadWrite<Te...
      method Read (line 34) | public TestAutoIncNotInteger Read(System.IO.BinaryReader reader)
      method Write (line 41) | public void Write(System.IO.BinaryWriter writer, TestAutoIncNotInteg...
      method GetAlgebraicType (line 46) | public SpacetimeDB.BSATN.AlgebraicType.Ref GetAlgebraicType(
      method GetAlgebraicType (line 59) | SpacetimeDB.BSATN.AlgebraicType SpacetimeDB.BSATN.IReadWrite<TestAut...
    method GetHashCode (line 64) | public override int GetHashCode()
    method Equals (line 72) | public bool Equals(TestAutoIncNotInteger that)
    meth
Copy disabled (too large) Download .json
Condensed preview — 5165 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,640K chars).
[
  {
    "path": ".cargo/config.toml",
    "chars": 767,
    "preview": "[build]\nrustflags = [\"--cfg\", \"tokio_unstable\"]\n\n[alias]\nbump-versions = \"run -p upgrade-version --\"\nllm = \"run --packag"
  },
  {
    "path": ".dockerignore",
    "chars": 80,
    "preview": "**/target\n# we do our own version pinning in the Dockerfile\nrust-toolchain.toml\n"
  },
  {
    "path": ".envrc",
    "chars": 109,
    "preview": "# Directory environment using https://direnv.net/ and https://github.com/nix-community/nix-direnv.\nuse flake\n"
  },
  {
    "path": ".gitattributes",
    "chars": 142,
    "preview": "**/module_bindings/** linguist-generated=true eol=lf\n/docs/llms/** linguist-generated=true\n/docs/llms/*-details.json lin"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 540,
    "preview": "/crates/core/src/db/datastore/traits.rs @cloutiertyler\n/rust-toolchain.toml @cloutiertyler\n/.github/CODEOWNERS @cloutier"
  },
  {
    "path": ".github/Dockerfile",
    "chars": 354,
    "preview": "# Minimal Dockerfile that just wraps pre-built binaries, so we can test the server inside docker\nFROM rust:1.93.0\nRUN mk"
  },
  {
    "path": ".github/GREMLINS.md",
    "chars": 1105,
    "preview": "# GREMLINS.md — Who Lives in the Pipes\n\nThis file documents the automated agents and bots that operate on this repositor"
  },
  {
    "path": ".github/docker-compose.yml",
    "chars": 297,
    "preview": "services:\n  node:\n    labels:\n      app: spacetimedb\n    build:\n      context: ../\n      dockerfile: .github/Dockerfile\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 1042,
    "preview": "# Description of Changes\n\n<!-- Please describe your change, mention any related tickets, and so on here. -->\n\n# API and "
  },
  {
    "path": ".github/workflows/attach-artifacts.yml",
    "chars": 1904,
    "preview": "name: Attach client binaries to release\n\non:\n  workflow_dispatch:\n    inputs:\n      release_tag:\n        description: \"R"
  },
  {
    "path": ".github/workflows/benchmarks.yml",
    "chars": 13381,
    "preview": "on:\n  push:\n    branches:\n      - master\n      - jgilles/fix-callgrind-again\n\n  workflow_dispatch:\n    inputs:\n      pr_"
  },
  {
    "path": ".github/workflows/check-merge-labels.yml",
    "chars": 665,
    "preview": "name: Check merge labels\n\non:\n  pull_request:\n    types: [opened, reopened, synchronize, labeled, unlabeled]\n  merge_gro"
  },
  {
    "path": ".github/workflows/check-pr-base.yml",
    "chars": 470,
    "preview": "name: Git tree checks\n\non:\n  pull_request:\n    types: [opened, edited]\n  merge_group:\npermissions: read-all\n\njobs:\n  che"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 42658,
    "preview": "on:\n  pull_request:\n  push:\n    branches:\n      - master\n  merge_group:\n  workflow_dispatch:\n    inputs:\n      pr_number"
  },
  {
    "path": ".github/workflows/discord-posts.yml",
    "chars": 3202,
    "preview": "name: Discord notifications\n\non:\n  pull_request:\n    types: [closed]\n\njobs:\n  discordNotification:\n    runs-on: ubuntu-l"
  },
  {
    "path": ".github/workflows/docker.yml",
    "chars": 4203,
    "preview": "name: Docker Image\n\non:\n  push:\n    branches:\n      - master\n      - staging\n      - dev\n    tags:\n      - 'v*'\n\njobs:\n "
  },
  {
    "path": ".github/workflows/docs-publish.yaml",
    "chars": 1395,
    "preview": "name: Docs / Publish\n\npermissions:\n  contents: read\n\non:\n  push:\n    branches:\n      - docs/release\n\njobs:\n  build:\n    "
  },
  {
    "path": ".github/workflows/docs-test.yaml",
    "chars": 1029,
    "preview": "name: Docs / Test\npermissions:\n  contents: read\n\non:\n  pull_request:\n\njobs:\n  build:\n    runs-on: spacetimedb-new-runner"
  },
  {
    "path": ".github/workflows/llm-benchmark-update.yml",
    "chars": 13215,
    "preview": "name: Update LLM benchmarks\n\non:\n  workflow_dispatch:\n    inputs:\n      pr_number:\n        description: \"Pull Request Nu"
  },
  {
    "path": ".github/workflows/package.yml",
    "chars": 5533,
    "preview": "name: Package SpacetimeDB CLI\n\non:\n  push:\n    tags:\n      - '**'\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\nj"
  },
  {
    "path": ".github/workflows/pr_approval_check.yml",
    "chars": 4587,
    "preview": "name: Review Checks\n\n# SECURITY: This workflow uses pull_request_target so that it has write access to\n# set commit stat"
  },
  {
    "path": ".github/workflows/rust_matcher.json",
    "chars": 531,
    "preview": "{\n    \"problemMatcher\": [\n        {\n            \"owner\": \"rust\",\n            \"pattern\": [\n                {\n            "
  },
  {
    "path": ".github/workflows/tag-release.yml",
    "chars": 594,
    "preview": "on:\n  release:\n    types: [published]\n\njobs:\n  on-release:\n    name: Re-tag latest\n    runs-on: ubuntu-latest\n    steps:"
  },
  {
    "path": ".github/workflows/typescript-lint.yml",
    "chars": 867,
    "preview": "name: TypeScript - Lint\n\non:\n  pull_request:\n  push:\n    branches:\n      - master\n  merge_group:\n\njobs:\n  build:\n    run"
  },
  {
    "path": ".github/workflows/typescript-test.yml",
    "chars": 6220,
    "preview": "name: TypeScript - Tests\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n  merge_group:\n\nconcurrency:\n  group:"
  },
  {
    "path": ".github/workflows/upgrade-version-check.yml",
    "chars": 884,
    "preview": "name: Upgrade Version Check\n\non:\n  pull_request:\n    types: [opened, synchronize]\n  merge_group:\npermissions: read-all\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 4437,
    "preview": "\n# Created by https://www.toptal.com/developers/gitignore/api/rust,node,visualstudiocode\n# Edit at https://www.toptal.co"
  },
  {
    "path": ".prettierignore",
    "chars": 57,
    "preview": "node_modules\npnpm-lock.yaml\ndist\ntarget\n.github\ncoverage\n"
  },
  {
    "path": ".prettierrc",
    "chars": 201,
    "preview": "{\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"arrowParens\": \"avoid\",\n  \"jsxSingleQuot"
  },
  {
    "path": ".rustfmt.toml",
    "chars": 56,
    "preview": "max_width = 120\nstyle_edition = \"2021\"\nedition = \"2024\"\n"
  },
  {
    "path": "Cargo.toml",
    "chars": 13159,
    "preview": "[workspace]\nexclude = [\"crates/smoketests/modules\"]\nmembers = [\n  \"crates/auth\",\n  \"crates/bench\",\n  \"crates/bindings-sy"
  },
  {
    "path": "Dockerfile",
    "chars": 2006,
    "preview": "# Use a base image that supports multi-arch\nFROM rust:bookworm AS builder\n\nWORKDIR /usr/src/app\nCOPY . .\n\n# If we're in "
  },
  {
    "path": "LICENSE.txt",
    "chars": 42516,
    "preview": "SPACETIMEDB BUSINESS SOURCE LICENSE AGREEMENT\n\nBusiness Source License 1.1\n\nParameters\n\nLicensor:             Clockwork "
  },
  {
    "path": "README.md",
    "chars": 12100,
    "preview": "<p align=\"center\">\n    <a href=\"https://spacetimedb.com#gh-dark-mode-only\" target=\"_blank\">\n\t<img width=\"320\" src=\"./ima"
  },
  {
    "path": "clippy.toml",
    "chars": 1037,
    "preview": "disallowed-macros = [\n    { path = \"std::print\",    reason = \"print blocks on a global mutex for synchronization, and it"
  },
  {
    "path": "crates/auth/Cargo.toml",
    "chars": 516,
    "preview": "[package]\nname = \"spacetimedb-auth\"\nversion.workspace = true\nedition.workspace = true\nrust-version.workspace = true\nlice"
  },
  {
    "path": "crates/auth/src/identity.rs",
    "chars": 6925,
    "preview": "pub use jsonwebtoken::errors::Error as JwtError;\npub use jsonwebtoken::errors::ErrorKind as JwtErrorKind;\npub use jsonwe"
  },
  {
    "path": "crates/auth/src/lib.rs",
    "chars": 18,
    "preview": "pub mod identity;\n"
  },
  {
    "path": "crates/bench/.gitignore",
    "chars": 20,
    "preview": ".spacetime/\ntarget/\n"
  },
  {
    "path": "crates/bench/Cargo.toml",
    "chars": 2634,
    "preview": "[package]\nname = \"spacetimedb-bench\"\nversion.workspace = true\nedition.workspace = true\nlicense-file = \"LICENSE\"\ndescript"
  },
  {
    "path": "crates/bench/Dockerfile",
    "chars": 609,
    "preview": "# Dockerfile for callgrind benchmarking environment.\n# Set up to run from linux / WSL (running from a windows file syste"
  },
  {
    "path": "crates/bench/README.md",
    "chars": 8665,
    "preview": "# spacetimedb-bench\n\n> ⚠️ **Internal Crate** ⚠️\n>\n> This crate is intended for internal use only. It is **not** stable a"
  },
  {
    "path": "crates/bench/benches/callgrind.rs",
    "chars": 27668,
    "preview": "#[cfg(target_os = \"linux\")]\nmod callgrind_benches {\n\n    /// Benchmarks that run under our iai-callgrind fork (https://g"
  },
  {
    "path": "crates/bench/benches/delete_table.rs",
    "chars": 13895,
    "preview": "use core::{cmp::Ordering, iter::repeat_with, time::Duration};\nuse criterion::{\n    black_box, criterion_group, criterion"
  },
  {
    "path": "crates/bench/benches/generic.rs",
    "chars": 10271,
    "preview": "use criterion::{\n    criterion_group, criterion_main,\n    measurement::{Measurement, WallTime},\n    Bencher, BenchmarkGr"
  },
  {
    "path": "crates/bench/benches/index.rs",
    "chars": 13114,
    "preview": "use core::{any::type_name, hash::BuildHasherDefault, hint::black_box, iter::repeat_with, mem, time::Duration};\nuse crite"
  },
  {
    "path": "crates/bench/benches/special.rs",
    "chars": 7227,
    "preview": "use criterion::async_executor::AsyncExecutor;\nuse criterion::{criterion_group, criterion_main, Criterion, SamplingMode};"
  },
  {
    "path": "crates/bench/benches/subscription.rs",
    "chars": 6008,
    "preview": "use criterion::{black_box, criterion_group, criterion_main, Criterion};\nuse spacetimedb::client::consume_each_list::Cons"
  },
  {
    "path": "crates/bench/callgrind-docker.sh",
    "chars": 352,
    "preview": "#!/bin/bash\n\n# script to enter iai dockerfile locally\n\nset -exo pipefail\n\nSCRIPT_DIR=\"$(dirname \"$(readlink -f \"$0\")\")\"\n"
  },
  {
    "path": "crates/bench/clippy.toml",
    "chars": 81,
    "preview": "# we use println in summarize.rs, don't complain about it\ndisallowed-macros = []\n"
  },
  {
    "path": "crates/bench/flamegraph.sh",
    "chars": 659,
    "preview": "#!/bin/bash\nset -euo pipefail\n\nif [ \"$#\" -lt \"2\" ] ; then\n  echo \"Usage: $0 <benchmark-exe> <benchmark-filter> <svg-name"
  },
  {
    "path": "crates/bench/hyper_cmp.py",
    "chars": 4915,
    "preview": "# Mini-tool for comparing benchmark between PR or locally\nimport os\nimport json\nimport argparse\nimport subprocess\nimport"
  },
  {
    "path": "crates/bench/instruments.sh",
    "chars": 436,
    "preview": "#!/bin/bash\nset -euo pipefail\n\nif [ \"$#\" -lt \"3\" ] ; then\n  echo \"Usage: $0 <template> <bench_executable> <bench_filter>"
  },
  {
    "path": "crates/bench/src/database.rs",
    "chars": 2170,
    "preview": "use spacetimedb_lib::AlgebraicValue;\nuse spacetimedb_primitives::ColId;\n\nuse crate::schemas::{BenchTable, IndexStrategy}"
  },
  {
    "path": "crates/bench/src/lib.rs",
    "chars": 4779,
    "preview": "pub mod database;\npub mod schemas;\npub mod spacetime_module;\npub mod spacetime_raw;\npub mod sqlite;\n\npub type ResultBenc"
  },
  {
    "path": "crates/bench/src/schemas.rs",
    "chars": 11448,
    "preview": "#![allow(non_camel_case_types)]\n\nuse serde::Deserialize;\nuse spacetimedb_lib::de::Deserialize as SatsDeserializer;\nuse s"
  },
  {
    "path": "crates/bench/src/spacetime_module.rs",
    "chars": 7565,
    "preview": "use std::{marker::PhantomData, path::Path};\n\nuse convert_case::{Case, Casing};\nuse spacetimedb::db::{Config, Storage};\nu"
  },
  {
    "path": "crates/bench/src/spacetime_raw.rs",
    "chars": 6572,
    "preview": "use crate::{\n    database::BenchDatabase,\n    schemas::{table_name, BenchTable, IndexStrategy},\n    ResultBench,\n};\nuse "
  },
  {
    "path": "crates/bench/src/sqlite.rs",
    "chars": 9210,
    "preview": "use crate::{\n    database::BenchDatabase,\n    schemas::{table_name, BenchTable, IndexStrategy},\n    ResultBench,\n};\nuse "
  },
  {
    "path": "crates/bindings/Cargo.toml",
    "chars": 1545,
    "preview": "[package]\nname = \"spacetimedb\"\nversion.workspace = true\nedition.workspace = true\nlicense-file = \"LICENSE\"\ndescription = "
  },
  {
    "path": "crates/bindings/README.md",
    "chars": 29783,
    "preview": "# SpacetimeDB Rust Module Library\n\n<!-- n.b. This file is used as the top-level library documentation in `src/lib.rs`.\n "
  },
  {
    "path": "crates/bindings/bindings-doctests.sh",
    "chars": 479,
    "preview": "#!/bin/env bash\n\n# Script to run doctests.\n# Note: if you get `cannot find type thing__TableHandle in this scope`, that\n"
  },
  {
    "path": "crates/bindings/src/client_visibility_filter.rs",
    "chars": 1078,
    "preview": "/// A row-level security filter,\n/// which can be registered using the [`macro@crate::client_visibility_filter`] attribu"
  },
  {
    "path": "crates/bindings/src/http.rs",
    "chars": 12046,
    "preview": "//! Types and utilities for performing HTTP requests in [procedures](crate::procedure).\n//!\n//! Perform an HTTP request "
  },
  {
    "path": "crates/bindings/src/lib.rs",
    "chars": 64499,
    "preview": "#![doc = include_str!(\"../README.md\")]\n// ^ if you are working on docs, go read the top comment of README.md please.\n\nus"
  },
  {
    "path": "crates/bindings/src/log_stopwatch.rs",
    "chars": 555,
    "preview": "/// TODO(this PR): docs\npub struct LogStopwatch {\n    stopwatch_id: u32,\n}\n\nimpl LogStopwatch {\n    pub fn new(name: &st"
  },
  {
    "path": "crates/bindings/src/logger.rs",
    "chars": 2532,
    "preview": "//! Defines our panic hook and that `log` will log to the console.\n\nuse crate::sys;\nuse std::sync::Mutex;\nuse std::{fmt,"
  },
  {
    "path": "crates/bindings/src/rng.rs",
    "chars": 6107,
    "preview": "#[cfg(feature = \"unstable\")]\nuse crate::ProcedureContext;\nuse crate::{rand, ReducerContext};\nuse core::cell::UnsafeCell;"
  },
  {
    "path": "crates/bindings/src/rt.rs",
    "chars": 50136,
    "preview": "#![deny(unsafe_op_in_unsafe_fn)]\n\nuse crate::query_builder::{FromWhere, HasCols, LeftSemiJoin, RawQuery, RightSemiJoin, "
  },
  {
    "path": "crates/bindings/src/table.rs",
    "chars": 55991,
    "preview": "use crate::{bsatn, rt::ExplicitNames, sys, DeserializeOwned, IterBuf, Serialize, SpacetimeType, TableId};\nuse core::borr"
  },
  {
    "path": "crates/bindings/tests/deps.rs",
    "chars": 1343,
    "preview": "//! Snapshot testing for the dependency tree of the `bindings` crate - we want\n//! to make sure we don't unknowingly add"
  },
  {
    "path": "crates/bindings/tests/snapshots/deps__duplicate_deps.snap",
    "chars": 132,
    "preview": "---\nsource: crates/bindings/tests/deps.rs\nexpression: cargo tree -p spacetimedb -e no-dev -d --depth 0\n---\nheck v0.4.1\n\n"
  },
  {
    "path": "crates/bindings/tests/snapshots/deps__spacetimedb_bindings_dependencies.snap",
    "chars": 3249,
    "preview": "---\nsource: crates/bindings/tests/deps.rs\nexpression: \"cargo tree -p spacetimedb -e no-dev --color never --target wasm32"
  },
  {
    "path": "crates/bindings/tests/ui/reducers.rs",
    "chars": 1160,
    "preview": "use spacetimedb::ReducerContext;\n\nstruct Test;\n\n#[spacetimedb::reducer]\nfn bad_type(_ctx: &ReducerContext, _a: Test) {}\n"
  },
  {
    "path": "crates/bindings/tests/ui/reducers.stderr",
    "chars": 11996,
    "preview": "error: type parameters are not allowed on reducers\n  --> tests/ui/reducers.rs:17:15\n   |\n17 | fn type_param<T>() {}\n   |"
  },
  {
    "path": "crates/bindings/tests/ui/tables.rs",
    "chars": 690,
    "preview": "struct Test;\n\n#[spacetimedb::table(accessor = table)]\nstruct Table {\n    x: Test,\n}\n\n#[spacetimedb::table(accessor = typ"
  },
  {
    "path": "crates/bindings/tests/ui/tables.stderr",
    "chars": 9490,
    "preview": "error: type parameters are not allowed on tables\n --> tests/ui/tables.rs:9:18\n  |\n9 | struct TypeParam<T> {\n  |         "
  },
  {
    "path": "crates/bindings/tests/ui/views-more.rs",
    "chars": 507,
    "preview": "use spacetimedb::{table, view, Identity, Query, ViewContext};\n\n#[table(accessor = player_info)]\nstruct PlayerInfo {\n    "
  },
  {
    "path": "crates/bindings/tests/ui/views-more.stderr",
    "chars": 352,
    "preview": "error: literal out of range for `u8`\n  --> tests/ui/views-more.rs:14:49\n   |\n14 |     ctx.from.player_info().r#where(|a|"
  },
  {
    "path": "crates/bindings/tests/ui/views.rs",
    "chars": 5878,
    "preview": "use spacetimedb::{reducer, table, view, AnonymousViewContext, Identity, Query, ReducerContext, ViewContext};\n\n#[table(ac"
  },
  {
    "path": "crates/bindings/tests/ui/views.stderr",
    "chars": 21814,
    "preview": "error: views must be `public`, e.g. `#[view(public)]`\n  --> tests/ui/views.rs:69:1\n   |\n69 | #[view(accessor = view_def_"
  },
  {
    "path": "crates/bindings/tests/ui.rs",
    "chars": 97,
    "preview": "#[test]\nfn ui() {\n    let t = trybuild::TestCases::new();\n    t.compile_fail(\"tests/ui/*.rs\");\n}\n"
  },
  {
    "path": "crates/bindings-cpp/.gitignore",
    "chars": 8,
    "preview": "build*/\n"
  },
  {
    "path": "crates/bindings-cpp/ARCHITECTURE.md",
    "chars": 23341,
    "preview": "# SpacetimeDB C++ Bindings Architecture\n\n## Overview\n\nThe SpacetimeDB C++ bindings provides a sophisticated compile-time"
  },
  {
    "path": "crates/bindings-cpp/CMakeLists.txt",
    "chars": 3587,
    "preview": "# SpacetimeDB C++ Module Library CMake Configuration\n\ncmake_minimum_required(VERSION 3.15)\nproject(SpacetimeDBCppModuleL"
  },
  {
    "path": "crates/bindings-cpp/DEVELOP.md",
    "chars": 21034,
    "preview": "# C++ Bindings Development Roadmap: Leveraging Modern C++ Standards\n\nThis document explores how upgrading to C++23 and C"
  },
  {
    "path": "crates/bindings-cpp/QUICKSTART.md",
    "chars": 8992,
    "preview": "# SpacetimeDB C++ Module Quickstart\n\nThis guide will walk you through creating your first SpacetimeDB module in C++. We'"
  },
  {
    "path": "crates/bindings-cpp/README.md",
    "chars": 11275,
    "preview": "# SpacetimeDB C++ Module Library\n\nThe SpacetimeDB C++ Module Library provides a modern C++20 API for building SpacetimeD"
  },
  {
    "path": "crates/bindings-cpp/REFERENCE.md",
    "chars": 36359,
    "preview": "# SpacetimeDB C++ Module Reference\n\nComplete API reference for building SpacetimeDB modules in C++.\n\n## Table of Content"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/abi/FFI.h",
    "chars": 4338,
    "preview": "#ifndef SPACETIMEDB_FFI_H\n#define SPACETIMEDB_FFI_H\n\n#include <cstdint>\n#include <cstddef>\n#include \"spacetimedb/abi/opa"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/abi/abi.h",
    "chars": 8229,
    "preview": "#ifndef SPACETIMEDB_ABI_H\n#define SPACETIMEDB_ABI_H\n\n#include <cstdint>\n#include <cstddef>\n#include \"opaque_types.h\"\n\n/*"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/abi/opaque_types.h",
    "chars": 7873,
    "preview": "#ifndef SPACETIMEDB_OPAQUE_TYPES_H\n#define SPACETIMEDB_OPAQUE_TYPES_H\n\n#include <cstdint>\n#include <functional>\n#include"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/auth_ctx.h",
    "chars": 8145,
    "preview": "#ifndef SPACETIMEDB_AUTH_CTX_H\n#define SPACETIMEDB_AUTH_CTX_H\n\n#include \"spacetimedb/jwt_claims.h\"\n#include \"spacetimedb"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/DEVELOP.md",
    "chars": 449,
    "preview": "# Core bsatn library\n\nThese files here are being used by both the Unreal C++ Client SDK and the Module Library.\nThese fi"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/README.md",
    "chars": 1915,
    "preview": "# BSATN C++ Library\n\nThis directory contains a self-contained C++ implementation of BSATN (Binary SpacetimeDB Algebraic "
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/algebraic_type.h",
    "chars": 19902,
    "preview": "#ifndef SPACETIMEDB_BSATN_ALGEBRAIC_TYPE_H\n#define SPACETIMEDB_BSATN_ALGEBRAIC_TYPE_H\n\n#include <cstdint>\n#include <stri"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/bsatn.h",
    "chars": 2906,
    "preview": "#ifndef SPACETIMEDB_BSATN_MAIN_H // Changed guard to avoid conflict if old bsatn.h was somehow included\n#define SPACETIM"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/primitive_traits.h",
    "chars": 7673,
    "preview": "#ifndef SPACETIMEDB_BSATN_PRIMITIVE_TRAITS_H\n#define SPACETIMEDB_BSATN_PRIMITIVE_TRAITS_H\n\n/**\n * @file primitive_traits"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/reader.h",
    "chars": 9762,
    "preview": "#ifndef SPACETIMEDB_BSATN_READER_H\n#define SPACETIMEDB_BSATN_READER_H\n\n#include <vector>\n#include <string>\n#include <cst"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/result.h",
    "chars": 6585,
    "preview": "#pragma once\n\n/**\n * @file result.h\n * @brief Result<T, E> type for SpacetimeDB C++ bindings\n * \n * This header provides"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/schedule_at.h",
    "chars": 4997,
    "preview": "#ifndef SPACETIMEDB_BSATN_SCHEDULE_AT_H\n#define SPACETIMEDB_BSATN_SCHEDULE_AT_H\n\n#include \"timestamp.h\"\n#include \"time_d"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/schedule_at_impl.h",
    "chars": 4655,
    "preview": "#ifndef SPACETIMEDB_BSATN_SCHEDULE_AT_IMPL_H\n#define SPACETIMEDB_BSATN_SCHEDULE_AT_IMPL_H\n\n#include \"schedule_at.h\"\n#inc"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/serialization.h",
    "chars": 3755,
    "preview": "#ifndef SPACETIMEDB_BSATN_SERIALIZATION_H\n#define SPACETIMEDB_BSATN_SERIALIZATION_H\n\n/**\n * @file serialization.h\n * @br"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/size_calculator.h",
    "chars": 8466,
    "preview": "#ifndef SPACETIMEDB_BSATN_SIZE_CALCULATOR_H\n#define SPACETIMEDB_BSATN_SIZE_CALCULATOR_H\n\n#include <cstddef>\n#include <cs"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/sum_type.h",
    "chars": 4422,
    "preview": "#ifndef SPACETIMEDB_BSATN_SUM_TYPE_H\n#define SPACETIMEDB_BSATN_SUM_TYPE_H\n\n#include <variant>\n#include <cstdint>\n#includ"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/time_duration.h",
    "chars": 4587,
    "preview": "#pragma once\n\n#include <cstdint>\n#include <chrono>\n\n// Forward declarations for BSATN\nnamespace SpacetimeDB {\nnamespace "
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/timestamp.h",
    "chars": 6329,
    "preview": "#pragma once\n\n#include <cstdint>\n#include <chrono>\n#include <ctime>\n#include <string>\n#include \"time_duration.h\"\n\n// For"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/traits.h",
    "chars": 21374,
    "preview": "#ifndef SPACETIMEDB_BSATN_TRAITS_H\n#define SPACETIMEDB_BSATN_TRAITS_H\n\n#include <type_traits>\n#include <concepts>\n#inclu"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/type_extensions.h",
    "chars": 19255,
    "preview": "#ifndef SPACETIMEDB_BSATN_TYPE_EXTENSIONS_H\n#define SPACETIMEDB_BSATN_TYPE_EXTENSIONS_H\n\n/**\n * @file type_extensions.h\n"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/types.h",
    "chars": 29511,
    "preview": "#pragma once\n\n/**\n * SpacetimeDB C++ bindings - Extended Type System\n * \n * This header provides complete support for al"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/types_impl.h",
    "chars": 3580,
    "preview": "#ifndef SPACETIMEDB_BSATN_TYPES_IMPL_H\n#define SPACETIMEDB_BSATN_TYPES_IMPL_H\n\n// This file contains the implementation "
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/uuid.h",
    "chars": 14187,
    "preview": "#pragma once\n\n#include <cstdint>\n#include <array>\n#include <string>\n#include <optional>\n#include <cstring>\n#include <sst"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/bsatn/writer.h",
    "chars": 8676,
    "preview": "#ifndef SPACETIMEDB_BSATN_WRITER_H\n#define SPACETIMEDB_BSATN_WRITER_H\n\n#include <vector>\n#include <string>\n#include <cst"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/client_visibility_filter.h",
    "chars": 1373,
    "preview": "#pragma once\n\n#include <string>\n\nnamespace SpacetimeDB {\n\n/// A row-level security filter,\n/// which can be registered u"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/database.h",
    "chars": 10041,
    "preview": "#ifndef SPACETIMEDB_DATABASE_H\n#define SPACETIMEDB_DATABASE_H\n\n#include \"table.h\"\n// Removed: internal/field_metadata.h "
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/enum_macro.h",
    "chars": 17978,
    "preview": "#pragma once\n\n#include \"spacetimedb/bsatn/traits.h\"\n#include \"spacetimedb/bsatn/sum_type.h\"\n#include \"spacetimedb/macros"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/error_handling.h",
    "chars": 8822,
    "preview": "#pragma once\n\n#include <optional>\n#include <variant>\n#include <string>\n#include <concepts>\n#include <type_traits>\n#inclu"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/http.h",
    "chars": 10072,
    "preview": "#ifndef SPACETIMEDB_HTTP_H\n#define SPACETIMEDB_HTTP_H\n\n#pragma once\n\n#include <string>\n#include <vector>\n#include <optio"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/http_client_impl.h",
    "chars": 3152,
    "preview": "#ifndef SPACETIMEDB_HTTP_CLIENT_IMPL_H\n#define SPACETIMEDB_HTTP_CLIENT_IMPL_H\n\n#pragma once\n\n#include \"spacetimedb/http_"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/http_convert.h",
    "chars": 9031,
    "preview": "#ifndef SPACETIMEDB_HTTP_CONVERT_H\n#define SPACETIMEDB_HTTP_CONVERT_H\n\n#pragma once\n\n#include \"spacetimedb/http.h\"\n#incl"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/http_wire.h",
    "chars": 10673,
    "preview": "#ifndef SPACETIMEDB_HTTP_WIRE_H\n#define SPACETIMEDB_HTTP_WIRE_H\n\n#pragma once\n\n#include <string>\n#include <vector>\n#incl"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/index_iterator.h",
    "chars": 25898,
    "preview": "#ifndef SPACETIMEDB_INDEX_ITERATOR_H\n#define SPACETIMEDB_INDEX_ITERATOR_H\n\n/**\n * @file index_iterator.h\n * @brief Itera"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/Module.h",
    "chars": 7431,
    "preview": "#ifndef SPACETIMEDB_MODULE_H\n#define SPACETIMEDB_MODULE_H\n\n#include <string>\n#include <vector>\n#include <optional>\n#incl"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/Module_impl.h",
    "chars": 18505,
    "preview": "#ifndef SPACETIMEDB_MODULE_IMPL_H\n#define SPACETIMEDB_MODULE_IMPL_H\n\n/**\n * SpacetimeDB C++ bindings - Module Implementa"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/README.md",
    "chars": 3497,
    "preview": "# SpacetimeDB C++ Module Library Internal API\n\nThis directory contains the internal implementation of the SpacetimeDB C+"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/AlgebraicType.g.h",
    "chars": 2726,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/CaseConversionPolicy.g.h",
    "chars": 524,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/ExplicitNameEntry.g.h",
    "chars": 1223,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/ExplicitNames.g.h",
    "chars": 781,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/FunctionVisibility.g.h",
    "chars": 530,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/IndexType.g.h",
    "chars": 509,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/Lifecycle.g.h",
    "chars": 535,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/MiscModuleExport.g.h",
    "chars": 554,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/NameMapping.g.h",
    "chars": 829,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/ProductType.g.h",
    "chars": 784,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/ProductTypeElement.g.h",
    "chars": 884,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefV8.g.h",
    "chars": 859,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefaultValueV10.g.h",
    "chars": 806,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawColumnDefaultValueV9.g.h",
    "chars": 891,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDataV9.g.h",
    "chars": 589,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV10.g.h",
    "chars": 888,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV8.g.h",
    "chars": 937,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawConstraintDefV9.g.h",
    "chars": 866,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexAlgorithm.g.h",
    "chars": 1668,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV10.g.h",
    "chars": 1019,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV8.g.h",
    "chars": 1055,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawIndexDefV9.g.h",
    "chars": 997,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawLifeCycleReducerDefV10.g.h",
    "chars": 895,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawMiscModuleExportV9.g.h",
    "chars": 727,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDef.g.h",
    "chars": 700,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV10.g.h",
    "chars": 796,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV10Section.g.h",
    "chars": 1420,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV8.g.h",
    "chars": 1243,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawModuleDefV9.g.h",
    "chars": 1636,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV10.g.h",
    "chars": 1185,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawProcedureDefV9.g.h",
    "chars": 998,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV10.g.h",
    "chars": 1333,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawReducerDefV9.g.h",
    "chars": 997,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawRowLevelSecurityDefV9.g.h",
    "chars": 705,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScheduleDefV10.g.h",
    "chars": 1061,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScheduleDefV9.g.h",
    "chars": 947,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScopedTypeNameV10.g.h",
    "chars": 824,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawScopedTypeNameV9.g.h",
    "chars": 802,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV10.g.h",
    "chars": 1272,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV8.g.h",
    "chars": 1369,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawSequenceDefV9.g.h",
    "chars": 1250,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV10.g.h",
    "chars": 2060,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV8.g.h",
    "chars": 1708,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTableDefV9.g.h",
    "chars": 1912,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTypeDefV10.g.h",
    "chars": 969,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawTypeDefV9.g.h",
    "chars": 945,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawUniqueConstraintDataV9.g.h",
    "chars": 728,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawViewDefV10.g.h",
    "chars": 1289,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/RawViewDefV9.g.h",
    "chars": 1267,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/ReducerDef.g.h",
    "chars": 854,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/SumType.g.h",
    "chars": 772,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/SumTypeVariant.g.h",
    "chars": 880,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/TableAccess.g.h",
    "chars": 515,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/TableDesc.g.h",
    "chars": 833,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/TableType.g.h",
    "chars": 510,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/TypeAlias.g.h",
    "chars": 767,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen/Typespace.g.h",
    "chars": 763,
    "preview": "// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE\n// WILL NOT BE SAVED. MODIFY TABLES IN YOUR M"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/autogen_base.h",
    "chars": 4448,
    "preview": "#pragma once\n\n// Autogenerated Type Support\n// This file provides base classes and macros exclusively for the autogenera"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/bsatn_adapters.h",
    "chars": 3542,
    "preview": "#pragma once\n\n#include <spacetimedb/bsatn/writer.h>\n#include <spacetimedb/bsatn/reader.h>\n#include <spacetimedb/abi/FFI."
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/buffer_pool.h",
    "chars": 4852,
    "preview": "#pragma once\n\n#include <vector>\n#include <cstdint>\n\nnamespace SpacetimeDB {\nnamespace Internal {\n\n/**\n * @brief Thread-l"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/debug.h",
    "chars": 2485,
    "preview": "#pragma once\n\n#include <cstdio>\n\n/**\n * @file debug.h\n * @brief Conditional debugging macros for SpacetimeDB C++ binding"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/field_registration.h",
    "chars": 15759,
    "preview": "#ifndef SPACETIMEDB_FIELD_REGISTRATION_H\n#define SPACETIMEDB_FIELD_REGISTRATION_H\n\n#include <cstdint>\n#include <cstddef>"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/forward_declarations.h",
    "chars": 285,
    "preview": "// Forward declarations for Internal types to break circular dependencies\n#pragma once\n\nnamespace SpacetimeDB::Internal "
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/module_type_registration.h",
    "chars": 15454,
    "preview": "#ifndef SPACETIMEDB_MODULE_TYPE_REGISTRATION_H\n#define SPACETIMEDB_MODULE_TYPE_REGISTRATION_H\n\n#include <memory>\n#includ"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/runtime_registration.h",
    "chars": 1489,
    "preview": "#ifndef SPACETIMEDB_RUNTIME_REGISTRATION_H\n#define SPACETIMEDB_RUNTIME_REGISTRATION_H\n\n#include <functional>\n#include <o"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/template_utils.h",
    "chars": 1234,
    "preview": "#ifndef SPACETIMEDB_TEMPLATE_UTILS_H\n#define SPACETIMEDB_TEMPLATE_UTILS_H\n\n#include <cstddef>\n#include <optional>\n#inclu"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/v10_builder.h",
    "chars": 32187,
    "preview": "#ifndef SPACETIMEDB_V10_BUILDER_H\n#define SPACETIMEDB_V10_BUILDER_H\n\n#include <functional>\n#include <memory>\n#include <o"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/internal/v9_builder.h",
    "chars": 49271,
    "preview": "#ifndef SPACETIMEDB_V9_BUILDER_H\n#define SPACETIMEDB_V9_BUILDER_H\n\n#include <memory>\n#include <vector>\n#include <optiona"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/jwt_claims.h",
    "chars": 7583,
    "preview": "#ifndef SPACETIMEDB_JWT_CLAIMS_H\n#define SPACETIMEDB_JWT_CLAIMS_H\n\n#include \"spacetimedb/bsatn/types.h\"\n#include <string"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/logger.h",
    "chars": 11127,
    "preview": "#ifndef SPACETIMEDB_LIBRARY_LOGGING_H\n#define SPACETIMEDB_LIBRARY_LOGGING_H\n\n#include \"spacetimedb/abi/FFI.h\" // For Log"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/macros.h",
    "chars": 42215,
    "preview": "#ifndef SPACETIMEDB_MACROS_H\n#define SPACETIMEDB_MACROS_H\n\n#include \"spacetimedb/bsatn/bsatn.h\"\n#include \"spacetimedb/re"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/outcome.h",
    "chars": 3535,
    "preview": "#ifndef SPACETIMEDB_OUTCOME_H\n#define SPACETIMEDB_OUTCOME_H\n\n#include <optional>\n#include <string>\n#include <type_traits"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/procedure_context.h",
    "chars": 9936,
    "preview": "#ifndef SPACETIMEDB_PROCEDURE_CONTEXT_H\n#define SPACETIMEDB_PROCEDURE_CONTEXT_H\n\n#include <spacetimedb/bsatn/types.h> //"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/procedure_macros.h",
    "chars": 5043,
    "preview": "#pragma once\n\n#include \"spacetimedb/procedure_context.h\"\n#include \"spacetimedb/internal/Module.h\"\n#include \"spacetimedb/"
  },
  {
    "path": "crates/bindings-cpp/include/spacetimedb/random.h",
    "chars": 10938,
    "preview": "#ifndef SPACETIMEDB_RANDOM_H\n#define SPACETIMEDB_RANDOM_H\n\n#include <random>\n#include <limits>\n#include <memory>\n#includ"
  }
]

// ... and 4965 more files (download for full content)

About this extraction

This page contains the full source code of the clockworklabs/SpacetimeDB GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5165 files (32.0 MB), approximately 4.4M tokens, and a symbol index with 17415 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!