@anfenn/dync 1.0.21 → 1.0.22

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,7 +51,6 @@ 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");
55
54
  this.opened = true;
56
55
  }
57
56
  })();
@@ -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 // 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":[]}
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":[]}
@@ -15,7 +15,6 @@ 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");
19
18
  this.opened = true;
20
19
  }
21
20
  })();
@@ -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 // 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":[]}
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":[]}
package/dist/index.cjs CHANGED
@@ -2388,7 +2388,7 @@ var buildCondition = (condition) => {
2388
2388
  switch (condition.type) {
2389
2389
  case "equals": {
2390
2390
  if (condition.caseInsensitive) {
2391
- return { clause: `LOWER(${col}) = LOWER(?)`, parameters: [condition.value] };
2391
+ return { clause: `${col} = ? COLLATE NOCASE`, parameters: [condition.value] };
2392
2392
  }
2393
2393
  return { clause: `${col} = ?`, parameters: [condition.value] };
2394
2394
  }
@@ -2410,7 +2410,7 @@ var buildCondition = (condition) => {
2410
2410
  const placeholders = condition.values.map(() => "?").join(", ");
2411
2411
  if (condition.caseInsensitive) {
2412
2412
  return {
2413
- clause: `LOWER(${col}) IN (${condition.values.map(() => "LOWER(?)").join(", ")})`,
2413
+ clause: `${col} COLLATE NOCASE IN (${placeholders})`,
2414
2414
  parameters: condition.values
2415
2415
  };
2416
2416
  }
@@ -2425,9 +2425,10 @@ var buildCondition = (condition) => {
2425
2425
  }
2426
2426
  case "like": {
2427
2427
  if (condition.caseInsensitive) {
2428
- return { clause: `LOWER(${col}) LIKE LOWER(?)`, parameters: [condition.pattern] };
2428
+ return { clause: `${col} LIKE ?`, parameters: [condition.pattern] };
2429
2429
  }
2430
- return { clause: `${col} LIKE ?`, parameters: [condition.pattern] };
2430
+ const globPattern = condition.pattern.replace(/%/g, "*").replace(/_/g, "?");
2431
+ return { clause: `${col} GLOB ?`, parameters: [globPattern] };
2431
2432
  }
2432
2433
  }
2433
2434
  };