diff --git a/packages/expo-sqlite/build/SQLite.js.map b/packages/expo-sqlite/build/SQLite.js.map index 1edc8dd04707e..8d99b0ebbcf37 100644 --- a/packages/expo-sqlite/build/SQLite.js.map +++ b/packages/expo-sqlite/build/SQLite.js.map @@ -1 +1 @@ -{"version":3,"file":"SQLite.js","sourceRoot":"","sources":["../src/SQLite.ts"],"names":[],"mappings":"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","sourcesContent":["import './polyfillNextTick';\n\nimport customOpenDatabase from '@expo/websql/custom';\nimport { NativeModulesProxy } from '@unimodules/core';\nimport zipObject from 'lodash/zipObject';\nimport { Platform } from 'react-native';\n\nimport { Query, SQLiteCallback, ResultSet, ResultSetError, WebSQLDatabase, SQLiteFileInfo } from './SQLite.types';\n\nconst { ExponentSQLite } = NativeModulesProxy;\n\nclass SQLiteDatabase {\n _name: string;\n _key?: string;\n _closed: boolean = false;\n\n constructor({ name, key }: SQLiteFileInfo) {\n this._name = name;\n this._key = key;\n }\n\n exec(queries: Query[], readOnly: boolean, callback: SQLiteCallback): void {\n if (this._closed) {\n throw new Error(`The SQLite database is closed`);\n }\n\n ExponentSQLite.exec(this._name, this._key, queries.map(_serializeQuery), readOnly).then(\n nativeResultSets => {\n callback(null, nativeResultSets.map(_deserializeResultSet));\n },\n error => {\n // TODO: make the native API consistently reject with an error, not a string or other type\n callback(error instanceof Error ? error : new Error(error));\n }\n );\n }\n\n close() {\n this._closed = true;\n ExponentSQLite.close(this._name);\n }\n}\n\nfunction _serializeQuery(query: Query): [string, unknown[]] {\n return [query.sql, Platform.OS === 'android' ? query.args.map(_escapeBlob) : query.args];\n}\n\nfunction _deserializeResultSet(nativeResult): ResultSet | ResultSetError {\n const [errorMessage, insertId, rowsAffected, columns, rows] = nativeResult;\n // TODO: send more structured error information from the native module so we can better construct\n // a SQLException object\n if (errorMessage !== null) {\n return { error: new Error(errorMessage) } as ResultSetError;\n }\n\n return {\n insertId,\n rowsAffected,\n rows: rows.map(row => zipObject(columns, row)),\n };\n}\n\nfunction _escapeBlob(data: T): T {\n if (typeof data === 'string') {\n /* eslint-disable no-control-regex */\n return data\n .replace(/\\u0002/g, '\\u0002\\u0002')\n .replace(/\\u0001/g, '\\u0001\\u0002')\n .replace(/\\u0000/g, '\\u0001\\u0001') as any;\n /* eslint-enable no-control-regex */\n } else {\n return data;\n }\n}\n\nconst _openExpoSQLiteDatabase = customOpenDatabase(SQLiteDatabase);\n\nfunction addExecMethod(db: any): WebSQLDatabase {\n db.exec = (queries: Query[], readOnly: boolean, callback: SQLiteCallback): void => {\n db._db.exec(queries, readOnly, callback);\n };\n return db;\n}\n\nexport function openDatabase(\n fileInfo: SQLiteFileInfo | string,\n version: string = '1.0',\n description: string,\n size: number = 1,\n callback?: (db: WebSQLDatabase) => void\n): WebSQLDatabase {\n let name: string;\n let key: string | undefined;\n\n if (typeof fileInfo === 'string') {\n name = fileInfo;\n key = undefined;\n } else {\n ({ name, key } = fileInfo);\n }\n\n if (name === undefined) {\n throw new TypeError(`The database name must not be undefined`);\n }\n description = description || name;\n\n const db = _openExpoSQLiteDatabase({ name, key }, version, description, size, callback);\n const dbWithExec = addExecMethod(db);\n return dbWithExec;\n}\n"]} \ No newline at end of file +{"version":3,"file":"SQLite.js","sourceRoot":"","sources":["../src/SQLite.ts"],"names":[],"mappings":"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","sourcesContent":["import './polyfillNextTick';\n\nimport customOpenDatabase from '@expo/websql/custom';\nimport { NativeModulesProxy } from '@unimodules/core';\nimport zipObject from 'lodash/zipObject';\nimport { Platform } from 'react-native';\n\nimport {\n Query,\n SQLiteCallback,\n ResultSet,\n ResultSetError,\n WebSQLDatabase,\n SQLiteFileInfo,\n} from './SQLite.types';\n\nconst { ExponentSQLite } = NativeModulesProxy;\n\nclass SQLiteDatabase {\n _name: string;\n _key?: string;\n _closed: boolean = false;\n\n constructor({ name, key }: SQLiteFileInfo) {\n this._name = name;\n this._key = key;\n }\n\n exec(queries: Query[], readOnly: boolean, callback: SQLiteCallback): void {\n if (this._closed) {\n throw new Error(`The SQLite database is closed`);\n }\n\n ExponentSQLite.exec(this._name, this._key, queries.map(_serializeQuery), readOnly).then(\n nativeResultSets => {\n callback(null, nativeResultSets.map(_deserializeResultSet));\n },\n error => {\n // TODO: make the native API consistently reject with an error, not a string or other type\n callback(error instanceof Error ? error : new Error(error));\n }\n );\n }\n\n close() {\n this._closed = true;\n ExponentSQLite.close(this._name);\n }\n}\n\nfunction _serializeQuery(query: Query): [string, unknown[]] {\n return [query.sql, Platform.OS === 'android' ? query.args.map(_escapeBlob) : query.args];\n}\n\nfunction _deserializeResultSet(nativeResult): ResultSet | ResultSetError {\n const [errorMessage, insertId, rowsAffected, columns, rows] = nativeResult;\n // TODO: send more structured error information from the native module so we can better construct\n // a SQLException object\n if (errorMessage !== null) {\n return { error: new Error(errorMessage) } as ResultSetError;\n }\n\n return {\n insertId,\n rowsAffected,\n rows: rows.map(row => zipObject(columns, row)),\n };\n}\n\nfunction _escapeBlob(data: T): T {\n if (typeof data === 'string') {\n /* eslint-disable no-control-regex */\n return data\n .replace(/\\u0002/g, '\\u0002\\u0002')\n .replace(/\\u0001/g, '\\u0001\\u0002')\n .replace(/\\u0000/g, '\\u0001\\u0001') as any;\n /* eslint-enable no-control-regex */\n } else {\n return data;\n }\n}\n\nconst _openExpoSQLiteDatabase = customOpenDatabase(SQLiteDatabase);\n\nfunction addExecMethod(db: any): WebSQLDatabase {\n db.exec = (queries: Query[], readOnly: boolean, callback: SQLiteCallback): void => {\n db._db.exec(queries, readOnly, callback);\n };\n return db;\n}\n\nexport function openDatabase(\n fileInfo: SQLiteFileInfo | string,\n version: string = '1.0',\n description: string,\n size: number = 1,\n callback?: (db: WebSQLDatabase) => void\n): WebSQLDatabase {\n let name: string;\n let key: string | undefined;\n\n if (typeof fileInfo === 'string') {\n name = fileInfo;\n key = undefined;\n } else {\n ({ name, key } = fileInfo);\n }\n\n if (name === undefined) {\n throw new TypeError(`The database name must not be undefined`);\n }\n description = description || name;\n\n const db = _openExpoSQLiteDatabase({ name, key }, version, description, size, callback);\n const dbWithExec = addExecMethod(db);\n return dbWithExec;\n}\n"]} \ No newline at end of file diff --git a/packages/expo-sqlite/src/SQLite.ts b/packages/expo-sqlite/src/SQLite.ts index ebec26dd46652..3e7b0ede002d5 100644 --- a/packages/expo-sqlite/src/SQLite.ts +++ b/packages/expo-sqlite/src/SQLite.ts @@ -5,7 +5,14 @@ import { NativeModulesProxy } from '@unimodules/core'; import zipObject from 'lodash/zipObject'; import { Platform } from 'react-native'; -import { Query, SQLiteCallback, ResultSet, ResultSetError, WebSQLDatabase, SQLiteFileInfo } from './SQLite.types'; +import { + Query, + SQLiteCallback, + ResultSet, + ResultSetError, + WebSQLDatabase, + SQLiteFileInfo, +} from './SQLite.types'; const { ExponentSQLite } = NativeModulesProxy;