@anfenn/dync 1.0.19 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,6 +51,7 @@ var ExpoSQLiteDriver = class {
51
51
  this.openPromise = (async () => {
52
52
  if (!this.db) {
53
53
  this.db = await SQLite.openDatabaseAsync(this.name);
54
+ await this.db.execAsync("PRAGMA case_sensitive_like = ON");
54
55
  this.opened = true;
55
56
  }
56
57
  })();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/expoSqlite.ts","../src/storage/sqlite/drivers/ExpoSQLiteDriver.native.ts"],"sourcesContent":["export { ExpoSQLiteDriver } from './storage/sqlite/drivers/ExpoSQLiteDriver.native';\nexport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from './storage/sqlite/types';\n","import * as SQLite from 'expo-sqlite';\n\nimport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from '../types';\n\nexport class ExpoSQLiteDriver implements SQLiteDatabaseDriver {\n readonly type = 'ExpoSQLiteDriver';\n private db: SQLite.SQLiteDatabase | null = null;\n private openPromise?: Promise<void>;\n private opened = false;\n readonly name: string;\n\n constructor(name: string) {\n this.name = name;\n }\n\n async open(): Promise<void> {\n if (this.opened) return;\n if (this.openPromise) return this.openPromise;\n\n this.openPromise = (async () => {\n if (!this.db) {\n this.db = await SQLite.openDatabaseAsync(this.name);\n this.opened = true;\n }\n })();\n\n try {\n await this.openPromise;\n } finally {\n this.openPromise = undefined;\n }\n }\n\n async close(): Promise<void> {\n const db = this.db;\n this.db = null;\n this.opened = false;\n this.openPromise = undefined;\n if (db?.closeAsync) {\n await db.closeAsync();\n }\n }\n\n async execute(statement: string): Promise<void> {\n await this.run(statement, []);\n }\n\n async run(statement: string, values: any[] = []): Promise<SQLiteRunResult> {\n await this.open();\n const db = this.db!;\n const result = await db.runAsync(statement, values);\n return {\n changes: result.changes ?? 0,\n lastId: (result as any).lastInsertRowId ?? (result as any).lastInsertId ?? undefined,\n };\n }\n\n async query(statement: string, values: any[] = []): Promise<SQLiteQueryResult> {\n await this.open();\n const db = this.db!;\n const rows = await db.getAllAsync(statement, values);\n const first = rows[0];\n const columns = first ? Object.keys(first) : [];\n const valuesMatrix = rows.map((row) => columns.map((col) => (row as any)[col]));\n return { columns, values: valuesMatrix };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,aAAwB;AAIjB,IAAM,mBAAN,MAAuD;AAAA,EACjD,OAAO;AAAA,EACR,KAAmC;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,EACR;AAAA,EAET,YAAY,MAAc;AACtB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,OAAsB;AACxB,QAAI,KAAK,OAAQ;AACjB,QAAI,KAAK,YAAa,QAAO,KAAK;AAElC,SAAK,eAAe,YAAY;AAC5B,UAAI,CAAC,KAAK,IAAI;AACV,aAAK,KAAK,MAAa,yBAAkB,KAAK,IAAI;AAClD,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ,GAAG;AAEH,QAAI;AACA,YAAM,KAAK;AAAA,IACf,UAAE;AACE,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AACzB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,QAAI,IAAI,YAAY;AAChB,YAAM,GAAG,WAAW;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,WAAkC;AAC5C,UAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,IAAI,WAAmB,SAAgB,CAAC,GAA6B;AACvE,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,MAAM,GAAG,SAAS,WAAW,MAAM;AAClD,WAAO;AAAA,MACH,SAAS,OAAO,WAAW;AAAA,MAC3B,QAAS,OAAe,mBAAoB,OAAe,gBAAgB;AAAA,IAC/E;AAAA,EACJ;AAAA,EAEA,MAAM,MAAM,WAAmB,SAAgB,CAAC,GAA+B;AAC3E,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,OAAO,MAAM,GAAG,YAAY,WAAW,MAAM;AACnD,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,UAAU,QAAQ,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9C,UAAM,eAAe,KAAK,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,QAAS,IAAY,GAAG,CAAC,CAAC;AAC9E,WAAO,EAAE,SAAS,QAAQ,aAAa;AAAA,EAC3C;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/expoSqlite.ts","../src/storage/sqlite/drivers/ExpoSQLiteDriver.native.ts"],"sourcesContent":["export { ExpoSQLiteDriver } from './storage/sqlite/drivers/ExpoSQLiteDriver.native';\nexport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from './storage/sqlite/types';\n","import * as SQLite from 'expo-sqlite';\n\nimport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from '../types';\n\nexport class ExpoSQLiteDriver implements SQLiteDatabaseDriver {\n readonly type = 'ExpoSQLiteDriver';\n private db: SQLite.SQLiteDatabase | null = null;\n private openPromise?: Promise<void>;\n private opened = false;\n readonly name: string;\n\n constructor(name: string) {\n this.name = name;\n }\n\n async open(): Promise<void> {\n if (this.opened) return;\n if (this.openPromise) return this.openPromise;\n\n this.openPromise = (async () => {\n if (!this.db) {\n this.db = await SQLite.openDatabaseAsync(this.name);\n // Case-sensitive LIKE to match Dexie's startsWith() behavior\n await this.db.execAsync('PRAGMA case_sensitive_like = ON');\n this.opened = true;\n }\n })();\n\n try {\n await this.openPromise;\n } finally {\n this.openPromise = undefined;\n }\n }\n\n async close(): Promise<void> {\n const db = this.db;\n this.db = null;\n this.opened = false;\n this.openPromise = undefined;\n if (db?.closeAsync) {\n await db.closeAsync();\n }\n }\n\n async execute(statement: string): Promise<void> {\n await this.run(statement, []);\n }\n\n async run(statement: string, values: any[] = []): Promise<SQLiteRunResult> {\n await this.open();\n const db = this.db!;\n const result = await db.runAsync(statement, values);\n return {\n changes: result.changes ?? 0,\n lastId: (result as any).lastInsertRowId ?? (result as any).lastInsertId ?? undefined,\n };\n }\n\n async query(statement: string, values: any[] = []): Promise<SQLiteQueryResult> {\n await this.open();\n const db = this.db!;\n const rows = await db.getAllAsync(statement, values);\n const first = rows[0];\n const columns = first ? Object.keys(first) : [];\n const valuesMatrix = rows.map((row) => columns.map((col) => (row as any)[col]));\n return { columns, values: valuesMatrix };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,aAAwB;AAIjB,IAAM,mBAAN,MAAuD;AAAA,EACjD,OAAO;AAAA,EACR,KAAmC;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,EACR;AAAA,EAET,YAAY,MAAc;AACtB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,OAAsB;AACxB,QAAI,KAAK,OAAQ;AACjB,QAAI,KAAK,YAAa,QAAO,KAAK;AAElC,SAAK,eAAe,YAAY;AAC5B,UAAI,CAAC,KAAK,IAAI;AACV,aAAK,KAAK,MAAa,yBAAkB,KAAK,IAAI;AAElD,cAAM,KAAK,GAAG,UAAU,iCAAiC;AACzD,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ,GAAG;AAEH,QAAI;AACA,YAAM,KAAK;AAAA,IACf,UAAE;AACE,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AACzB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,QAAI,IAAI,YAAY;AAChB,YAAM,GAAG,WAAW;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,WAAkC;AAC5C,UAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,IAAI,WAAmB,SAAgB,CAAC,GAA6B;AACvE,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,MAAM,GAAG,SAAS,WAAW,MAAM;AAClD,WAAO;AAAA,MACH,SAAS,OAAO,WAAW;AAAA,MAC3B,QAAS,OAAe,mBAAoB,OAAe,gBAAgB;AAAA,IAC/E;AAAA,EACJ;AAAA,EAEA,MAAM,MAAM,WAAmB,SAAgB,CAAC,GAA+B;AAC3E,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,OAAO,MAAM,GAAG,YAAY,WAAW,MAAM;AACnD,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,UAAU,QAAQ,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9C,UAAM,eAAe,KAAK,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,QAAS,IAAY,GAAG,CAAC,CAAC;AAC9E,WAAO,EAAE,SAAS,QAAQ,aAAa;AAAA,EAC3C;AACJ;","names":[]}
@@ -15,6 +15,7 @@ var ExpoSQLiteDriver = class {
15
15
  this.openPromise = (async () => {
16
16
  if (!this.db) {
17
17
  this.db = await SQLite.openDatabaseAsync(this.name);
18
+ await this.db.execAsync("PRAGMA case_sensitive_like = ON");
18
19
  this.opened = true;
19
20
  }
20
21
  })();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/storage/sqlite/drivers/ExpoSQLiteDriver.native.ts"],"sourcesContent":["import * as SQLite from 'expo-sqlite';\n\nimport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from '../types';\n\nexport class ExpoSQLiteDriver implements SQLiteDatabaseDriver {\n readonly type = 'ExpoSQLiteDriver';\n private db: SQLite.SQLiteDatabase | null = null;\n private openPromise?: Promise<void>;\n private opened = false;\n readonly name: string;\n\n constructor(name: string) {\n this.name = name;\n }\n\n async open(): Promise<void> {\n if (this.opened) return;\n if (this.openPromise) return this.openPromise;\n\n this.openPromise = (async () => {\n if (!this.db) {\n this.db = await SQLite.openDatabaseAsync(this.name);\n this.opened = true;\n }\n })();\n\n try {\n await this.openPromise;\n } finally {\n this.openPromise = undefined;\n }\n }\n\n async close(): Promise<void> {\n const db = this.db;\n this.db = null;\n this.opened = false;\n this.openPromise = undefined;\n if (db?.closeAsync) {\n await db.closeAsync();\n }\n }\n\n async execute(statement: string): Promise<void> {\n await this.run(statement, []);\n }\n\n async run(statement: string, values: any[] = []): Promise<SQLiteRunResult> {\n await this.open();\n const db = this.db!;\n const result = await db.runAsync(statement, values);\n return {\n changes: result.changes ?? 0,\n lastId: (result as any).lastInsertRowId ?? (result as any).lastInsertId ?? undefined,\n };\n }\n\n async query(statement: string, values: any[] = []): Promise<SQLiteQueryResult> {\n await this.open();\n const db = this.db!;\n const rows = await db.getAllAsync(statement, values);\n const first = rows[0];\n const columns = first ? Object.keys(first) : [];\n const valuesMatrix = rows.map((row) => columns.map((col) => (row as any)[col]));\n return { columns, values: valuesMatrix };\n }\n}\n"],"mappings":";AAAA,YAAY,YAAY;AAIjB,IAAM,mBAAN,MAAuD;AAAA,EACjD,OAAO;AAAA,EACR,KAAmC;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,EACR;AAAA,EAET,YAAY,MAAc;AACtB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,OAAsB;AACxB,QAAI,KAAK,OAAQ;AACjB,QAAI,KAAK,YAAa,QAAO,KAAK;AAElC,SAAK,eAAe,YAAY;AAC5B,UAAI,CAAC,KAAK,IAAI;AACV,aAAK,KAAK,MAAa,yBAAkB,KAAK,IAAI;AAClD,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ,GAAG;AAEH,QAAI;AACA,YAAM,KAAK;AAAA,IACf,UAAE;AACE,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AACzB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,QAAI,IAAI,YAAY;AAChB,YAAM,GAAG,WAAW;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,WAAkC;AAC5C,UAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,IAAI,WAAmB,SAAgB,CAAC,GAA6B;AACvE,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,MAAM,GAAG,SAAS,WAAW,MAAM;AAClD,WAAO;AAAA,MACH,SAAS,OAAO,WAAW;AAAA,MAC3B,QAAS,OAAe,mBAAoB,OAAe,gBAAgB;AAAA,IAC/E;AAAA,EACJ;AAAA,EAEA,MAAM,MAAM,WAAmB,SAAgB,CAAC,GAA+B;AAC3E,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,OAAO,MAAM,GAAG,YAAY,WAAW,MAAM;AACnD,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,UAAU,QAAQ,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9C,UAAM,eAAe,KAAK,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,QAAS,IAAY,GAAG,CAAC,CAAC;AAC9E,WAAO,EAAE,SAAS,QAAQ,aAAa;AAAA,EAC3C;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/storage/sqlite/drivers/ExpoSQLiteDriver.native.ts"],"sourcesContent":["import * as SQLite from 'expo-sqlite';\n\nimport type { SQLiteDatabaseDriver, SQLiteQueryResult, SQLiteRunResult } from '../types';\n\nexport class ExpoSQLiteDriver implements SQLiteDatabaseDriver {\n readonly type = 'ExpoSQLiteDriver';\n private db: SQLite.SQLiteDatabase | null = null;\n private openPromise?: Promise<void>;\n private opened = false;\n readonly name: string;\n\n constructor(name: string) {\n this.name = name;\n }\n\n async open(): Promise<void> {\n if (this.opened) return;\n if (this.openPromise) return this.openPromise;\n\n this.openPromise = (async () => {\n if (!this.db) {\n this.db = await SQLite.openDatabaseAsync(this.name);\n // Case-sensitive LIKE to match Dexie's startsWith() behavior\n await this.db.execAsync('PRAGMA case_sensitive_like = ON');\n this.opened = true;\n }\n })();\n\n try {\n await this.openPromise;\n } finally {\n this.openPromise = undefined;\n }\n }\n\n async close(): Promise<void> {\n const db = this.db;\n this.db = null;\n this.opened = false;\n this.openPromise = undefined;\n if (db?.closeAsync) {\n await db.closeAsync();\n }\n }\n\n async execute(statement: string): Promise<void> {\n await this.run(statement, []);\n }\n\n async run(statement: string, values: any[] = []): Promise<SQLiteRunResult> {\n await this.open();\n const db = this.db!;\n const result = await db.runAsync(statement, values);\n return {\n changes: result.changes ?? 0,\n lastId: (result as any).lastInsertRowId ?? (result as any).lastInsertId ?? undefined,\n };\n }\n\n async query(statement: string, values: any[] = []): Promise<SQLiteQueryResult> {\n await this.open();\n const db = this.db!;\n const rows = await db.getAllAsync(statement, values);\n const first = rows[0];\n const columns = first ? Object.keys(first) : [];\n const valuesMatrix = rows.map((row) => columns.map((col) => (row as any)[col]));\n return { columns, values: valuesMatrix };\n }\n}\n"],"mappings":";AAAA,YAAY,YAAY;AAIjB,IAAM,mBAAN,MAAuD;AAAA,EACjD,OAAO;AAAA,EACR,KAAmC;AAAA,EACnC;AAAA,EACA,SAAS;AAAA,EACR;AAAA,EAET,YAAY,MAAc;AACtB,SAAK,OAAO;AAAA,EAChB;AAAA,EAEA,MAAM,OAAsB;AACxB,QAAI,KAAK,OAAQ;AACjB,QAAI,KAAK,YAAa,QAAO,KAAK;AAElC,SAAK,eAAe,YAAY;AAC5B,UAAI,CAAC,KAAK,IAAI;AACV,aAAK,KAAK,MAAa,yBAAkB,KAAK,IAAI;AAElD,cAAM,KAAK,GAAG,UAAU,iCAAiC;AACzD,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ,GAAG;AAEH,QAAI;AACA,YAAM,KAAK;AAAA,IACf,UAAE;AACE,WAAK,cAAc;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAuB;AACzB,UAAM,KAAK,KAAK;AAChB,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,QAAI,IAAI,YAAY;AAChB,YAAM,GAAG,WAAW;AAAA,IACxB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ,WAAkC;AAC5C,UAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,IAAI,WAAmB,SAAgB,CAAC,GAA6B;AACvE,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,SAAS,MAAM,GAAG,SAAS,WAAW,MAAM;AAClD,WAAO;AAAA,MACH,SAAS,OAAO,WAAW;AAAA,MAC3B,QAAS,OAAe,mBAAoB,OAAe,gBAAgB;AAAA,IAC/E;AAAA,EACJ;AAAA,EAEA,MAAM,MAAM,WAAmB,SAAgB,CAAC,GAA+B;AAC3E,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,KAAK;AAChB,UAAM,OAAO,MAAM,GAAG,YAAY,WAAW,MAAM;AACnD,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,UAAU,QAAQ,OAAO,KAAK,KAAK,IAAI,CAAC;AAC9C,UAAM,eAAe,KAAK,IAAI,CAAC,QAAQ,QAAQ,IAAI,CAAC,QAAS,IAAY,GAAG,CAAC,CAAC;AAC9E,WAAO,EAAE,SAAS,QAAQ,aAAa;AAAA,EAC3C;AACJ;","names":[]}
package/dist/index.cjs CHANGED
@@ -2339,7 +2339,7 @@ var MemoryAdapter = class {
2339
2339
  var SQLITE_SCHEMA_VERSION_STATE_KEY = "sqlite_schema_version";
2340
2340
  var DEFAULT_STREAM_BATCH_SIZE = 200;
2341
2341
  var createDefaultState2 = () => ({
2342
- sqlConditions: [],
2342
+ orGroups: [[]],
2343
2343
  jsPredicate: void 0,
2344
2344
  orderBy: void 0,
2345
2345
  reverse: false,
@@ -2347,19 +2347,26 @@ var createDefaultState2 = () => ({
2347
2347
  limit: void 0,
2348
2348
  distinct: false
2349
2349
  });
2350
- var buildWhereClause = (conditions) => {
2351
- if (conditions.length === 0) {
2350
+ var buildWhereClause = (orGroups) => {
2351
+ const nonEmptyGroups = orGroups.filter((group) => group.length > 0);
2352
+ if (nonEmptyGroups.length === 0) {
2352
2353
  return { whereClause: "", parameters: [] };
2353
2354
  }
2354
- const clauses = [];
2355
+ const groupClauses = [];
2355
2356
  const parameters = [];
2356
- for (const condition of conditions) {
2357
- const built = buildCondition(condition);
2358
- clauses.push(built.clause);
2359
- parameters.push(...built.parameters);
2357
+ for (const group of nonEmptyGroups) {
2358
+ const conditionClauses = [];
2359
+ for (const condition of group) {
2360
+ const built = buildCondition(condition);
2361
+ conditionClauses.push(built.clause);
2362
+ parameters.push(...built.parameters);
2363
+ }
2364
+ const groupClause = conditionClauses.length === 1 ? conditionClauses[0] : `(${conditionClauses.join(" AND ")})`;
2365
+ groupClauses.push(groupClause);
2360
2366
  }
2367
+ const whereContent = groupClauses.length === 1 ? groupClauses[0] : `(${groupClauses.join(" OR ")})`;
2361
2368
  return {
2362
- whereClause: `WHERE ${clauses.join(" AND ")}`,
2369
+ whereClause: `WHERE ${whereContent}`,
2363
2370
  parameters
2364
2371
  };
2365
2372
  };
@@ -3610,25 +3617,26 @@ var SQLiteCollection2 = class _SQLiteCollection {
3610
3617
  this.state = {
3611
3618
  ...base,
3612
3619
  ...state,
3613
- sqlConditions: state?.sqlConditions ?? base.sqlConditions,
3620
+ orGroups: state?.orGroups ?? base.orGroups,
3614
3621
  jsPredicate: state?.jsPredicate
3615
3622
  };
3616
3623
  }
3617
3624
  getState() {
3618
- return { ...this.state, sqlConditions: [...this.state.sqlConditions] };
3625
+ return { ...this.state, orGroups: this.state.orGroups.map((g) => [...g]) };
3619
3626
  }
3620
- // Add a SQL-expressible condition to this collection
3627
+ // Add a SQL-expressible condition to the current OR group
3621
3628
  addSqlCondition(condition) {
3629
+ const newGroups = this.state.orGroups.map((g, i) => i === this.state.orGroups.length - 1 ? [...g, condition] : g);
3622
3630
  return new _SQLiteCollection(this.table, {
3623
3631
  ...this.state,
3624
- sqlConditions: [...this.state.sqlConditions, condition]
3632
+ orGroups: newGroups
3625
3633
  });
3626
3634
  }
3627
3635
  replicate(overrides) {
3628
3636
  return new _SQLiteCollection(this.table, {
3629
3637
  ...this.state,
3630
3638
  ...overrides,
3631
- sqlConditions: overrides?.sqlConditions ?? this.state.sqlConditions,
3639
+ orGroups: overrides?.orGroups ?? this.state.orGroups,
3632
3640
  jsPredicate: overrides?.jsPredicate !== void 0 ? overrides.jsPredicate : this.state.jsPredicate
3633
3641
  });
3634
3642
  }
@@ -3654,7 +3662,7 @@ var SQLiteCollection2 = class _SQLiteCollection {
3654
3662
  * and apply them after JS filtering.
3655
3663
  */
3656
3664
  async executeQuery(options = {}) {
3657
- const { whereClause, parameters } = buildWhereClause(this.state.sqlConditions);
3665
+ const { whereClause, parameters } = buildWhereClause(this.state.orGroups);
3658
3666
  const ordering = options.orderByOverride ?? this.resolveOrdering();
3659
3667
  const cloneValues = options.clone !== false;
3660
3668
  const hasJsFilter = this.hasJsPredicate();
@@ -3721,7 +3729,7 @@ var SQLiteCollection2 = class _SQLiteCollection {
3721
3729
  }
3722
3730
  async keys() {
3723
3731
  if (!this.hasJsPredicate()) {
3724
- const { whereClause, parameters } = buildWhereClause(this.state.sqlConditions);
3732
+ const { whereClause, parameters } = buildWhereClause(this.state.orGroups);
3725
3733
  const ordering = this.resolveOrdering();
3726
3734
  return this.table.queryKeysWithConditions({
3727
3735
  whereClause,
@@ -3740,7 +3748,7 @@ var SQLiteCollection2 = class _SQLiteCollection {
3740
3748
  }
3741
3749
  async uniqueKeys() {
3742
3750
  if (!this.hasJsPredicate()) {
3743
- const { whereClause, parameters } = buildWhereClause(this.state.sqlConditions);
3751
+ const { whereClause, parameters } = buildWhereClause(this.state.orGroups);
3744
3752
  const ordering = this.resolveOrdering();
3745
3753
  return this.table.queryKeysWithConditions({
3746
3754
  whereClause,
@@ -3757,8 +3765,8 @@ var SQLiteCollection2 = class _SQLiteCollection {
3757
3765
  async count() {
3758
3766
  if (!this.hasJsPredicate()) {
3759
3767
  return this.table.countWithConditions({
3760
- whereClause: buildWhereClause(this.state.sqlConditions).whereClause,
3761
- parameters: buildWhereClause(this.state.sqlConditions).parameters,
3768
+ whereClause: buildWhereClause(this.state.orGroups).whereClause,
3769
+ parameters: buildWhereClause(this.state.orGroups).parameters,
3762
3770
  distinct: this.state.distinct
3763
3771
  });
3764
3772
  }
@@ -3778,7 +3786,11 @@ var SQLiteCollection2 = class _SQLiteCollection {
3778
3786
  return this.withJsPredicate((record) => predicate(cloneValue(record)));
3779
3787
  }
3780
3788
  or(index) {
3781
- return this.table.createWhereClause(index, this);
3789
+ const newCollection = new _SQLiteCollection(this.table, {
3790
+ ...this.state,
3791
+ orGroups: [...this.state.orGroups, []]
3792
+ });
3793
+ return this.table.createWhereClause(index, newCollection);
3782
3794
  }
3783
3795
  clone(_props) {
3784
3796
  return this.replicate();
@@ -3797,7 +3809,7 @@ var SQLiteCollection2 = class _SQLiteCollection {
3797
3809
  }
3798
3810
  async delete() {
3799
3811
  if (!this.hasJsPredicate()) {
3800
- const { whereClause, parameters } = buildWhereClause(this.state.sqlConditions);
3812
+ const { whereClause, parameters } = buildWhereClause(this.state.orGroups);
3801
3813
  return this.table.deleteWithConditions({ whereClause, parameters });
3802
3814
  }
3803
3815
  const entries = await this.executeQuery({ clone: false });
@@ -3808,7 +3820,7 @@ var SQLiteCollection2 = class _SQLiteCollection {
3808
3820
  }
3809
3821
  async modify(changes) {
3810
3822
  if (typeof changes !== "function" && !this.hasJsPredicate()) {
3811
- const { whereClause, parameters } = buildWhereClause(this.state.sqlConditions);
3823
+ const { whereClause, parameters } = buildWhereClause(this.state.orGroups);
3812
3824
  return this.table.updateWithConditions({ whereClause, parameters, changes });
3813
3825
  }
3814
3826
  const entries = await this.executeQuery();