diff --git a/crates/bindings-typescript/case-conversion-test-client/src/module_bindings/index.ts b/crates/bindings-typescript/case-conversion-test-client/src/module_bindings/index.ts index 8fbf73d58d4..82ddf0cb52f 100644 --- a/crates/bindings-typescript/case-conversion-test-client/src/module_bindings/index.ts +++ b/crates/bindings-typescript/case-conversion-test-client/src/module_bindings/index.ts @@ -229,10 +229,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/crates/bindings-typescript/test-app/src/module_bindings/index.ts b/crates/bindings-typescript/test-app/src/module_bindings/index.ts index 5a5cc759b17..cf33870746c 100644 --- a/crates/bindings-typescript/test-app/src/module_bindings/index.ts +++ b/crates/bindings-typescript/test-app/src/module_bindings/index.ts @@ -249,10 +249,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/crates/bindings-typescript/test-react-router-app/src/module_bindings/index.ts b/crates/bindings-typescript/test-react-router-app/src/module_bindings/index.ts index 5a7a64d1e2b..dae611869c6 100644 --- a/crates/bindings-typescript/test-react-router-app/src/module_bindings/index.ts +++ b/crates/bindings-typescript/test-react-router-app/src/module_bindings/index.ts @@ -227,10 +227,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/crates/bindings-typescript/test-solid-router/src/module_bindings/index.ts b/crates/bindings-typescript/test-solid-router/src/module_bindings/index.ts index 5a7a64d1e2b..dae611869c6 100644 --- a/crates/bindings-typescript/test-solid-router/src/module_bindings/index.ts +++ b/crates/bindings-typescript/test-solid-router/src/module_bindings/index.ts @@ -227,10 +227,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/crates/codegen/src/typescript.rs b/crates/codegen/src/typescript.rs index 2706949d05b..226ecb0fcc8 100644 --- a/crates/codegen/src/typescript.rs +++ b/crates/codegen/src/typescript.rs @@ -759,6 +759,16 @@ impl Lang for TypeScript { ); writeln!(out); + if has_table_accessor_aliases { + // Narrow `db` by merging an interface into the class rather than with a + // `declare` field, which Babel (React Native, Expo) rejects by default. + writeln!(out, "export interface DbConnection {{"); + out.indent(1); + writeln!(out, "db: DbView;"); + out.dedent(1); + writeln!(out, "}}"); + writeln!(out); + } writeln!(out, "/** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */"); writeln!( out, @@ -766,9 +776,6 @@ impl Lang for TypeScript { ); out.indent(1); if has_table_accessor_aliases { - writeln!(out, "declare db: DbView;"); - - writeln!(out); writeln!( out, "constructor(config: __DbConnectionConfig) {{" diff --git a/crates/codegen/tests/snapshots/codegen__codegen_typescript.snap b/crates/codegen/tests/snapshots/codegen__codegen_typescript.snap index 80b88f79b73..e32448cbd40 100644 --- a/crates/codegen/tests/snapshots/codegen__codegen_typescript.snap +++ b/crates/codegen/tests/snapshots/codegen__codegen_typescript.snap @@ -409,10 +409,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/demo/Blackholio/client-ts/src/module_bindings/index.ts b/demo/Blackholio/client-ts/src/module_bindings/index.ts index 81afe450da0..0e7f3e8df74 100644 --- a/demo/Blackholio/client-ts/src/module_bindings/index.ts +++ b/demo/Blackholio/client-ts/src/module_bindings/index.ts @@ -219,10 +219,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/templates/hangman-react-ts/src/module_bindings/index.ts b/templates/hangman-react-ts/src/module_bindings/index.ts index 6852d40b6fe..625f44b14a7 100644 --- a/templates/hangman-react-ts/src/module_bindings/index.ts +++ b/templates/hangman-react-ts/src/module_bindings/index.ts @@ -259,10 +259,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView; diff --git a/templates/money-exchange-react-ts/src/module_bindings/index.ts b/templates/money-exchange-react-ts/src/module_bindings/index.ts index c4bf96e2c56..ee0cd17aa2f 100644 --- a/templates/money-exchange-react-ts/src/module_bindings/index.ts +++ b/templates/money-exchange-react-ts/src/module_bindings/index.ts @@ -229,10 +229,12 @@ export class SubscriptionBuilder extends __SubscriptionBuilderImpl< /** Builder class to configure a new database connection to the remote SpacetimeDB instance. */ export class DbConnectionBuilder extends __DbConnectionBuilder {} +export interface DbConnection { + db: DbView; +} + /** The typed database connection to manage connections to the remote SpacetimeDB instance. This class has type information specific to the generated module. */ export class DbConnection extends __DbConnectionImpl { - declare db: DbView; - constructor(config: __DbConnectionConfig) { super(config); this.db = __withTableAccessorAliases(this.db) as DbView;