Skip to content

Commit ed20b94

Browse files
kevin-dpclaudeautofix-ci[bot]
authored
Remove unnecessary type parameters from persistence interfaces (#1439)
* Remove unnecessary type parameters from persistence interfaces PersistedCollectionPersistence, PersistenceAdapter, and SQLiteCorePersistenceAdapter were generic over <T, TKey> but all implementations erased these to Record<string, unknown> / string | number internally. The type params were threaded through the entire persistence hierarchy without providing real type safety at the implementation level. Collection-level typing (T, TKey) is fully preserved — it flows from getKey, schema, and other CollectionConfig fields, not from persistence. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * ci: apply automated fixes * Fix missed type arguments in tauri persistence test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent cc46951 commit ed20b94

File tree

53 files changed

+363
-649
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+363
-649
lines changed

examples/react/offline-transactions/src/db/persisted-todos.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export async function createPersistedTodoCollection(): Promise<PersistedTodosHan
2929
dbName: `tanstack-db-demo`,
3030
})
3131

32-
const persistence = createBrowserWASQLitePersistence<PersistedTodo, string>({
32+
const persistence = createBrowserWASQLitePersistence({
3333
database,
3434
coordinator,
3535
})

packages/browser-db-sqlite-persistence/e2e/browser-single-tab-persisted-collection.e2e.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function createPersistedCollection<T extends PersistableRow>(
3636
id: string,
3737
syncMode: `eager` | `on-demand`,
3838
): PersistedCollectionHarness<T> {
39-
const persistence = createBrowserWASQLitePersistence<T, string | number>({
39+
const persistence = createBrowserWASQLitePersistence({
4040
database,
4141
})
4242
let seedTxSequence = 0

packages/browser-db-sqlite-persistence/src/browser-coordinator.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,7 @@ type CollectionState = {
8181
}
8282

8383
// Adapter with pullSince support
84-
type AdapterWithPullSince = PersistenceAdapter<
85-
Record<string, unknown>,
86-
string | number
87-
> & {
84+
type AdapterWithPullSince = PersistenceAdapter & {
8885
pullSince?: (
8986
collectionId: string,
9087
fromRowVersion: number,

packages/browser-db-sqlite-persistence/src/browser-persistence.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -89,24 +89,16 @@ function resolveAdapterBaseOptions(
8989
* many collections on the same database. This is single-tab wiring using
9090
* SingleProcessCoordinator semantics (no election required).
9191
*/
92-
export function createBrowserWASQLitePersistence<
93-
T extends object,
94-
TKey extends string | number = string | number,
95-
>(
92+
export function createBrowserWASQLitePersistence(
9693
options: BrowserWASQLitePersistenceOptions,
97-
): PersistedCollectionPersistence<T, TKey> {
94+
): PersistedCollectionPersistence {
9895
const { coordinator, schemaMismatchPolicy } = options
9996
const driver = createInternalSQLiteDriver(options)
10097
const adapterBaseOptions = resolveAdapterBaseOptions(options)
10198
const resolvedCoordinator = coordinator ?? new SingleProcessCoordinator()
10299
const adapterCache = new Map<
103100
string,
104-
ReturnType<
105-
typeof createSQLiteCorePersistenceAdapter<
106-
Record<string, unknown>,
107-
string | number
108-
>
109-
>
101+
ReturnType<typeof createSQLiteCorePersistenceAdapter>
110102
>()
111103

112104
const getAdapterForCollection = (
@@ -126,10 +118,7 @@ export function createBrowserWASQLitePersistence<
126118
return cachedAdapter
127119
}
128120

129-
const adapter = createSQLiteCorePersistenceAdapter<
130-
Record<string, unknown>,
131-
string | number
132-
>({
121+
const adapter = createSQLiteCorePersistenceAdapter({
133122
...adapterBaseOptions,
134123
driver,
135124
schemaMismatchPolicy: resolvedSchemaMismatchPolicy,
@@ -149,11 +138,8 @@ export function createBrowserWASQLitePersistence<
149138
const createCollectionPersistence = (
150139
mode: PersistedCollectionMode,
151140
schemaVersion: number | undefined,
152-
): PersistedCollectionPersistence<T, TKey> => ({
153-
adapter: getAdapterForCollection(
154-
mode,
155-
schemaVersion,
156-
) as unknown as PersistedCollectionPersistence<T, TKey>[`adapter`],
141+
): PersistedCollectionPersistence => ({
142+
adapter: getAdapterForCollection(mode, schemaVersion),
157143
coordinator: resolvedCoordinator,
158144
})
159145

packages/browser-db-sqlite-persistence/tests/browser-coordinator.test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,7 @@ function cleanupGlobals(): void {
171171
// Adapter stub
172172
// ---------------------------------------------------------------------------
173173

174-
function createStubAdapter(): PersistenceAdapter<
175-
Record<string, unknown>,
176-
string | number
177-
> & {
174+
function createStubAdapter(): PersistenceAdapter & {
178175
pullSince: (
179176
collectionId: string,
180177
fromRowVersion: number,

packages/browser-db-sqlite-persistence/tests/browser-persistence.test.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ runRuntimePersistenceContractSuite(
4848
{
4949
createDatabaseHarness: createRuntimeDatabaseHarness,
5050
createAdapter: (driver) =>
51-
createBrowserWASQLitePersistence<RuntimePersistenceContractTodo, string>({
51+
createBrowserWASQLitePersistence({
5252
database: (driver as BrowserWASQLiteDriver).getDatabase(),
5353
}).adapter,
5454
createPersistence: (driver, coordinator) =>
55-
createBrowserWASQLitePersistence<RuntimePersistenceContractTodo, string>({
55+
createBrowserWASQLitePersistence({
5656
database: (driver as BrowserWASQLiteDriver).getDatabase(),
5757
coordinator,
5858
}),
@@ -98,10 +98,7 @@ describe(`browser wa-sqlite persistence helpers`, () => {
9898
const firstDatabase = createWASQLiteTestDatabase({ filename: dbPath })
9999

100100
try {
101-
const firstPersistence = createBrowserWASQLitePersistence<
102-
RuntimePersistenceContractTodo,
103-
string
104-
>({
101+
const firstPersistence = createBrowserWASQLitePersistence({
105102
database: firstDatabase,
106103
})
107104

@@ -141,10 +138,7 @@ describe(`browser wa-sqlite persistence helpers`, () => {
141138

142139
const secondDatabase = createWASQLiteTestDatabase({ filename: dbPath })
143140
try {
144-
const secondPersistence = createBrowserWASQLitePersistence<
145-
RuntimePersistenceContractTodo,
146-
string
147-
>({
141+
const secondPersistence = createBrowserWASQLitePersistence({
148142
database: secondDatabase,
149143
})
150144

packages/browser-db-sqlite-persistence/tests/browser-single-tab.test.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,7 @@ it(`works without browser election primitives`, async () => {
9393
}
9494
}
9595

96-
const persistence = createBrowserWASQLitePersistence<{
97-
id: string
98-
title: string
99-
score: number
100-
}>({
96+
const persistence = createBrowserWASQLitePersistence({
10197
database,
10298
})
10399

packages/capacitor-db-sqlite-persistence/e2e/capacitor-persisted-collection-conformance-suite.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { createCapacitorPersistedCollectionHarnessConfig } from './shared/capaci
66
import { registerPersistedCollectionConformanceSuite } from './shared/register-persisted-collection-conformance-suite'
77
import type { PersistedCollectionPersistence } from '@tanstack/db-sqlite-persistence-core'
88

9-
type CapacitorPersistenceFactory = <T extends { id: string }>(
9+
type CapacitorPersistenceFactory = (
1010
database: ReturnType<typeof createCapacitorSQLiteTestDatabase>,
11-
) => PersistedCollectionPersistence<T, string | number>
11+
) => PersistedCollectionPersistence
1212

1313
export function runCapacitorPersistedCollectionConformanceSuite(
1414
suiteName: string,

packages/capacitor-db-sqlite-persistence/e2e/shared/capacitor-persisted-collection-harness.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ type PersistedTransactionHandle = {
2525
}
2626
}
2727

28-
type PersistenceFactory<TDatabase> = <T extends PersistableRow>(
28+
type PersistenceFactory<TDatabase> = (
2929
database: TDatabase,
30-
) => PersistedCollectionPersistence<T, string | number>
30+
) => PersistedCollectionPersistence
3131

3232
type DatabaseLike = {
3333
close: () => Promise<void>
@@ -41,7 +41,7 @@ function createPersistedCollection<T extends PersistableRow, TDatabase>(
4141
syncMode: `eager` | `on-demand`,
4242
createPersistence: PersistenceFactory<TDatabase>,
4343
): PersistedCollectionHarness<T> {
44-
const persistence = createPersistence<T>(database)
44+
const persistence = createPersistence(database)
4545
let seedTxSequence = 0
4646

4747
const seedPersisted = async (rows: Array<T>): Promise<void> => {

packages/capacitor-db-sqlite-persistence/src/capacitor-persistence.ts

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -87,24 +87,16 @@ function resolveAdapterBaseOptions(
8787
}
8888
}
8989

90-
export function createCapacitorSQLitePersistence<
91-
T extends object,
92-
TKey extends string | number = string | number,
93-
>(
90+
export function createCapacitorSQLitePersistence(
9491
options: CapacitorSQLitePersistenceOptions,
95-
): PersistedCollectionPersistence<T, TKey> {
92+
): PersistedCollectionPersistence {
9693
const { coordinator, schemaMismatchPolicy } = options
9794
const driver = createInternalSQLiteDriver(options)
9895
const adapterBaseOptions = resolveAdapterBaseOptions(options)
9996
const resolvedCoordinator = coordinator ?? new SingleProcessCoordinator()
10097
const adapterCache = new Map<
10198
string,
102-
ReturnType<
103-
typeof createSQLiteCorePersistenceAdapter<
104-
Record<string, unknown>,
105-
string | number
106-
>
107-
>
99+
ReturnType<typeof createSQLiteCorePersistenceAdapter>
108100
>()
109101

110102
const getAdapterForCollection = (
@@ -124,10 +116,7 @@ export function createCapacitorSQLitePersistence<
124116
return cachedAdapter
125117
}
126118

127-
const adapter = createSQLiteCorePersistenceAdapter<
128-
Record<string, unknown>,
129-
string | number
130-
>({
119+
const adapter = createSQLiteCorePersistenceAdapter({
131120
...adapterBaseOptions,
132121
driver,
133122
schemaMismatchPolicy: resolvedSchemaMismatchPolicy,
@@ -140,11 +129,8 @@ export function createCapacitorSQLitePersistence<
140129
const createCollectionPersistence = (
141130
mode: PersistedCollectionMode,
142131
schemaVersion: number | undefined,
143-
): PersistedCollectionPersistence<T, TKey> => ({
144-
adapter: getAdapterForCollection(
145-
mode,
146-
schemaVersion,
147-
) as unknown as PersistedCollectionPersistence<T, TKey>[`adapter`],
132+
): PersistedCollectionPersistence => ({
133+
adapter: getAdapterForCollection(mode, schemaVersion),
148134
coordinator: resolvedCoordinator,
149135
})
150136

0 commit comments

Comments
 (0)