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>
<a href="https://github.com/clockworklabs/spacetimedb"><img src="https://img.shields.io/badge/built_with-Rust-dca282.svg?style=flat-square"></a>
<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>
<a href="https://status.spacetimedb.com"><img src="https://img.shields.io/uptimerobot/ratio/7/m784409192-e472ca350bb615372ededed7?label=cloud%20uptime&style=flat-square"></a>
<a href="https://hub.docker.com/r/clockworklabs/spacetimedb"><img src="https://img.shields.io/docker/pulls/clockworklabs/spacetimedb?style=flat-square"></a>
<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>
<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>
<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>
<a href="https://twitter.com/spacetime_db"><img src="https://img.shields.io/badge/twitter-Follow_us-1d9bf0.svg?style=flat-square"></a>
<a href="https://clockworklabs.io/join"><img src="https://img.shields.io/badge/careers-Join_us-86f7b7.svg?style=flat-square"></a>
<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>
<a href="https://twitter.com/spacetime_db"><img height="25" src="./images/social/twitter.svg" alt="Twitter"></a>
<a href="https://github.com/clockworklabs/spacetimedb"><img height="25" src="./images/social/github.svg" alt="GitHub"></a>
<a href="https://twitch.tv/SpacetimeDB"><img height="25" src="./images/social/twitch.svg" alt="Twitch"></a>
<a href="https://youtube.com/@SpacetimeDB"><img height="25" src="./images/social/youtube.svg" alt="YouTube"></a>
<a href="https://www.linkedin.com/company/clockwork-labs/"><img height="25" src="./images/social/linkedin.svg" alt="LinkedIn"></a>
<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
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
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.