typeorm 1.0.0-beta.2 → 1.0.0-beta.3
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.
- package/README.md +1 -3
- package/browser/connection/ConnectionOptionsReader.js +1 -1
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/data-source/DataSource.d.ts +1 -1
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +1 -0
- package/browser/driver/DriverUtils.js +27 -29
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js +5 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +55 -50
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +2 -0
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
- package/browser/driver/expo/ExpoDataSourceOptions.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +16 -1
- package/browser/driver/expo/ExpoDriver.js +68 -6
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.d.ts +2 -1
- package/browser/driver/expo/ExpoQueryRunner.js +3 -0
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +4 -4
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +2 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +78 -82
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +3 -0
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +2 -2
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +8 -8
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +2 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +12 -8
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +3 -0
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +5 -3
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +2 -1
- package/browser/driver/sap/SapQueryRunner.js +171 -16
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
- package/browser/driver/spanner/SpannerDriver.js +6 -8
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +16 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +75 -7
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +3 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +65 -60
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +1 -1
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
- package/browser/error/NamedPlaceholdersNotSupportedError.js +14 -0
- package/browser/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
- package/browser/error/QueryFailedError.d.ts +3 -2
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/index.d.ts +1 -0
- package/browser/error/index.js +1 -0
- package/browser/error/index.js.map +1 -1
- package/browser/index.d.ts +0 -1
- package/browser/index.js +1 -3
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.d.ts +5 -4
- package/browser/logger/AbstractLogger.js +3 -1
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js +3 -1
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/Logger.d.ts +5 -4
- package/browser/logger/Logger.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
- package/browser/naming-strategy/DefaultNamingStrategy.js +19 -37
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +9 -13
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +20 -8
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +15 -5
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +50 -30
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/platform/PlatformTools.js +1 -1
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +3 -3
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +0 -1
- package/browser/query-builder/QueryBuilder.js +3 -13
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +33 -27
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +0 -2
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +0 -2
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.js +4 -4
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +16 -9
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +44 -21
- package/browser/query-runner/BaseQueryRunner.js +61 -21
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +11 -2
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +2 -1
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/Repository.d.ts +1 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +4 -4
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/event/QueryEvent.d.ts +2 -1
- package/browser/subscriber/event/QueryEvent.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.js +1 -1
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/OrmUtils.js +1 -1
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.js +1 -1
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.d.ts +1 -10
- package/browser/util/RandomGenerator.js +1 -10
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.js +9 -9
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/escapeRegExp.js +1 -1
- package/browser/util/escapeRegExp.js.map +1 -1
- package/commands/InitCommand.d.ts +0 -3
- package/commands/InitCommand.js +4 -31
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -1
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/VersionCommand.js +2 -2
- package/commands/VersionCommand.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +1 -1
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/data-source/DataSource.d.ts +1 -1
- package/data-source/DataSource.js.map +1 -1
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/driver/DriverUtils.d.ts +1 -0
- package/driver/DriverUtils.js +27 -29
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
- package/driver/capacitor/CapacitorQueryRunner.js +5 -1
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +3 -3
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +55 -50
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +1 -1
- package/driver/cordova/CordovaQueryRunner.js +2 -0
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
- package/driver/expo/ExpoDataSourceOptions.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +16 -1
- package/driver/expo/ExpoDriver.js +68 -6
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.d.ts +2 -1
- package/driver/expo/ExpoQueryRunner.js +3 -0
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +4 -4
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +2 -1
- package/driver/mysql/MysqlQueryRunner.js +78 -82
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +3 -0
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +2 -2
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +8 -8
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +2 -1
- package/driver/postgres/PostgresQueryRunner.js +12 -8
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +1 -1
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +3 -0
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.js +5 -3
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +2 -1
- package/driver/sap/SapQueryRunner.js +171 -16
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +1 -1
- package/driver/spanner/SpannerDriver.js +6 -8
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.d.ts +16 -1
- package/driver/spanner/SpannerQueryRunner.js +75 -7
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
- package/driver/sqljs/SqljsQueryRunner.js +3 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +65 -60
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +1 -1
- package/entity-manager/EntityManager.js.map +1 -1
- package/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
- package/error/NamedPlaceholdersNotSupportedError.js +14 -0
- package/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
- package/error/QueryFailedError.d.ts +3 -2
- package/error/QueryFailedError.js.map +1 -1
- package/error/index.d.ts +1 -0
- package/error/index.js +1 -0
- package/error/index.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +1 -3
- package/index.js.map +1 -1
- package/index.mjs +2 -2
- package/logger/AbstractLogger.d.ts +5 -4
- package/logger/AbstractLogger.js +3 -1
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/DebugLogger.js +3 -1
- package/logger/DebugLogger.js.map +1 -1
- package/logger/Logger.d.ts +5 -4
- package/logger/Logger.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
- package/naming-strategy/DefaultNamingStrategy.js +19 -37
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +9 -13
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +6 -6
- package/persistence/EntityPersistExecutor.js +20 -8
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +15 -5
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +50 -30
- package/persistence/SubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.js +1 -1
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/JoinAttribute.js +3 -3
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +0 -1
- package/query-builder/QueryBuilder.js +3 -13
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +33 -27
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +0 -2
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +0 -2
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.js +4 -4
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js +16 -9
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +44 -21
- package/query-runner/BaseQueryRunner.js +61 -21
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +11 -2
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/BaseEntity.d.ts +2 -1
- package/repository/BaseEntity.js.map +1 -1
- package/repository/Repository.d.ts +1 -1
- package/repository/Repository.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +4 -4
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/event/QueryEvent.d.ts +2 -1
- package/subscriber/event/QueryEvent.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +1 -1
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ImportUtils.js +1 -1
- package/util/ImportUtils.js.map +1 -1
- package/util/OrmUtils.js +1 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.js +1 -1
- package/util/PathUtils.js.map +1 -1
- package/util/RandomGenerator.d.ts +1 -10
- package/util/RandomGenerator.js +1 -10
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.js +9 -9
- package/util/StringUtils.js.map +1 -1
- package/util/escapeRegExp.js +1 -1
- package/util/escapeRegExp.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
- package/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
- package/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
- package/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
|
@@ -25,7 +25,7 @@ export declare class CordovaQueryRunner extends AbstractSqliteQueryRunner {
|
|
|
25
25
|
* @param parameters
|
|
26
26
|
* @param useStructuredResult
|
|
27
27
|
*/
|
|
28
|
-
query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;
|
|
28
|
+
query(query: string, parameters?: any[] | ObjectLiteral, useStructuredResult?: boolean): Promise<any>;
|
|
29
29
|
/**
|
|
30
30
|
* Would start a transaction but this driver does not support transactions.
|
|
31
31
|
*/
|
|
@@ -43,6 +43,8 @@ class CordovaQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQuery
|
|
|
43
43
|
async query(query, parameters, useStructuredResult = false) {
|
|
44
44
|
if (this.isReleased)
|
|
45
45
|
throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
|
|
46
|
+
if (parameters && !Array.isArray(parameters))
|
|
47
|
+
throw new error_1.NamedPlaceholdersNotSupportedError();
|
|
46
48
|
const databaseConnection = await this.connect();
|
|
47
49
|
this.driver.dataSource.logger.logQuery(query, parameters, this);
|
|
48
50
|
await this.broadcaster.broadcast("BeforeQuery", query, parameters);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CordovaQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["driver/cordova/CordovaQueryRunner.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,mEAA+D;AAC/D,iGAA6F;AAC7F,gEAA4D;AAC5D,8DAA0D;AAC1D,0EAAsE;AACtE,4FAAwF;AAGxF;;GAEG;AACH,MAAa,kBAAmB,SAAQ,qDAAyB;IAM7D,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAqB;QAC7B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CACP,KAAa,EACb,UAAkB,EAClB,mBAAmB,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,iEAA+B,EAAE,CAAA;QAEhE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QAE/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;QAElE,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAA;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEjC,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;gBAC5C,kBAAkB,CAAC,UAAU,CACzB,KAAK,EACL,UAAU,EACV,CAAC,GAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAC1B,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,oDAAoD;YACpD,MAAM,qBAAqB,GACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAA;YAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC/B,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAA;YAExD,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,IAAI,EACJ,kBAAkB,EAClB,GAAG,EACH,SAAS,CACZ,CAAA;YAED,IACI,qBAAqB;gBACrB,kBAAkB,GAAG,qBAAqB,EAC5C,CAAC;gBACC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CACtC,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAA;YAEhC,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACJ,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACpC,CAAC;gBAED,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;gBAC1B,MAAM,CAAC,GAAG,GAAG,SAAS,CAAA;gBACtB,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAA;YACtC,CAAC;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACJ,OAAO,MAAM,CAAC,GAAG,CAAA;YACrB,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CACvC,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YACD,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,GAAG,CACN,CAAA;YAED,MAAM,IAAI,mCAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACtD,CAAC;gBAAS,CAAC;YACP,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAA;QAClC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QAClB,MAAM,IAAI,oBAAY,CAClB,sDAAsD,CACzD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACnB,MAAM,IAAI,oBAAY,CAClB,sDAAsD,CACzD,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACrB,MAAM,IAAI,oBAAY,CAClB,sDAAsD,CACzD,CAAA;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACf,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC7C,IAAI,CAAC;YACD,MAAM,oBAAoB,GAAG,0FAA0F,CAAA;YACvH,MAAM,eAAe,GACjB,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YAE1C,MAAM,qBAAqB,GAAG,4HAA4H,CAAA;YAC1J,MAAM,gBAAgB,GAAoB,MAAM,IAAI,CAAC,KAAK,CACtD,qBAAqB,CACxB,CAAA;YAED,MAAM,OAAO,CAAC,GAAG,CACb,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACrD,CAAA;YACD,MAAM,OAAO,CAAC,GAAG,CACb,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACtD,CAAA;QACL,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAChD,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;;;;OAKG;IACO,WAAW,CACjB,aAA4B,EAC5B,aAAqB,CAAC;QAEtB,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;IAC5E,CAAC;CACJ;AA7MD,gDA6MC","sourcesContent":["import type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport type { CordovaDriver } from \"./CordovaDriver\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class CordovaQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: CordovaDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CordovaDriver) {\n super()\n this.driver = driver\n this.dataSource = driver.dataSource\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n *\n * @param query\n * @param parameters\n * @param useStructuredResult\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const databaseConnection = await this.connect()\n\n this.driver.dataSource.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n const queryStartTime = Date.now()\n\n try {\n const raw = await new Promise<any>((ok, fail) => {\n databaseConnection.executeSql(\n query,\n parameters,\n (raw: any) => ok(raw),\n (err: any) => fail(err),\n )\n })\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.dataSource.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n\n if (query.startsWith(\"INSERT INTO\")) {\n result.raw = raw.insertId\n } else {\n const resultSet = []\n for (let i = 0; i < raw.rows.length; i++) {\n resultSet.push(raw.rows.item(i))\n }\n\n result.records = resultSet\n result.raw = resultSet\n result.affected = raw.rowsAffected\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n this.driver.dataSource.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async startTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async commitTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async rollbackTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n async clearDatabase(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n try {\n const selectViewDropsQuery = `SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'`\n const dropViewQueries: ObjectLiteral[] =\n await this.query(selectViewDropsQuery)\n\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'`\n const dropTableQueries: ObjectLiteral[] = await this.query(\n selectTableDropsQuery,\n )\n\n await Promise.all(\n dropViewQueries.map((q) => this.query(q[\"query\"])),\n )\n await Promise.all(\n dropTableQueries.map((q) => this.query(q[\"query\"])),\n )\n } finally {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n *\n * @param objectLiteral\n * @param startIndex\n */\n protected parametrize(\n objectLiteral: ObjectLiteral,\n startIndex: number = 0,\n ): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\")\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CordovaQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["driver/cordova/CordovaQueryRunner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { NamedPlaceholdersNotSupportedError, TypeORMError } from \"../../error\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport type { CordovaDriver } from \"./CordovaDriver\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class CordovaQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: CordovaDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: CordovaDriver) {\n super()\n this.driver = driver\n this.dataSource = driver.dataSource\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n *\n * @param query\n * @param parameters\n * @param useStructuredResult\n */\n async query(\n query: string,\n parameters?: any[] | ObjectLiteral,\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n if (parameters && !Array.isArray(parameters))\n throw new NamedPlaceholdersNotSupportedError()\n\n const databaseConnection = await this.connect()\n\n this.driver.dataSource.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const broadcasterResult = new BroadcasterResult()\n const queryStartTime = Date.now()\n\n try {\n const raw = await new Promise<any>((ok, fail) => {\n databaseConnection.executeSql(\n query,\n parameters,\n (raw: any) => ok(raw),\n (err: any) => fail(err),\n )\n })\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.dataSource.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n\n if (query.startsWith(\"INSERT INTO\")) {\n result.raw = raw.insertId\n } else {\n const resultSet = []\n for (let i = 0; i < raw.rows.length; i++) {\n resultSet.push(raw.rows.item(i))\n }\n\n result.records = resultSet\n result.raw = resultSet\n result.affected = raw.rowsAffected\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n this.driver.dataSource.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async startTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async commitTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Would start a transaction but this driver does not support transactions.\n */\n async rollbackTransaction(): Promise<void> {\n throw new TypeORMError(\n \"Transactions are not supported by the Cordova driver\",\n )\n }\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n async clearDatabase(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n try {\n const selectViewDropsQuery = `SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'`\n const dropViewQueries: ObjectLiteral[] =\n await this.query(selectViewDropsQuery)\n\n const selectTableDropsQuery = `SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'`\n const dropTableQueries: ObjectLiteral[] = await this.query(\n selectTableDropsQuery,\n )\n\n await Promise.all(\n dropViewQueries.map((q) => this.query(q[\"query\"])),\n )\n await Promise.all(\n dropTableQueries.map((q) => this.query(q[\"query\"])),\n )\n } finally {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Parametrizes given object of values. Used to create column=value queries.\n *\n * @param objectLiteral\n * @param startIndex\n */\n protected parametrize(\n objectLiteral: ObjectLiteral,\n startIndex: number = 0,\n ): string[] {\n return Object.keys(objectLiteral).map((key, index) => `\"${key}\"` + \"=?\")\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BaseDataSourceOptions } from "../../data-source/BaseDataSourceOptions";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Expo SQLite-specific connection options.
|
|
4
4
|
*/
|
|
5
5
|
export interface ExpoDataSourceOptions extends BaseDataSourceOptions {
|
|
6
6
|
/**
|
|
@@ -12,8 +12,10 @@ export interface ExpoDataSourceOptions extends BaseDataSourceOptions {
|
|
|
12
12
|
*/
|
|
13
13
|
readonly database: string;
|
|
14
14
|
/**
|
|
15
|
-
* Driver module
|
|
15
|
+
* Driver module. Optional — if omitted, TypeORM will load `expo-sqlite`
|
|
16
|
+
* automatically. Pass explicitly when you need to control which instance
|
|
17
|
+
* of the module is used (e.g. patch-package, custom wrappers).
|
|
16
18
|
*/
|
|
17
|
-
readonly driver
|
|
19
|
+
readonly driver?: any;
|
|
18
20
|
readonly poolSize?: never;
|
|
19
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoDataSourceOptions.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoDataSourceOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"ExpoDataSourceOptions.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoDataSourceOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\n\n/**\n * Expo SQLite-specific connection options.\n */\nexport interface ExpoDataSourceOptions extends BaseDataSourceOptions {\n /**\n * Database type.\n */\n readonly type: \"expo\"\n\n /**\n * Database name.\n */\n readonly database: string\n\n /**\n * Driver module. Optional — if omitted, TypeORM will load `expo-sqlite`\n * automatically. Pass explicitly when you need to control which instance\n * of the module is used (e.g. patch-package, custom wrappers).\n */\n readonly driver?: any\n\n readonly poolSize?: never\n}\n"]}
|
|
@@ -8,5 +8,20 @@ export declare class ExpoDriver extends AbstractSqliteDriver {
|
|
|
8
8
|
disconnect(): Promise<void>;
|
|
9
9
|
createQueryRunner(): QueryRunner;
|
|
10
10
|
protected createDatabaseConnection(): Promise<any>;
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Loads the `expo-sqlite` module when `options.driver` is not set. Extracted
|
|
13
|
+
* as a method so tests can stub the module resolution without depending on
|
|
14
|
+
* whether `expo-sqlite` happens to be installed in the workspace.
|
|
15
|
+
*
|
|
16
|
+
* A literal `require("expo-sqlite")` is used so Metro's static bundler picks
|
|
17
|
+
* the dependency up at build time — `PlatformTools.load()` is a throwing
|
|
18
|
+
* stub in the browser/React-Native build and cannot be used here.
|
|
19
|
+
*/
|
|
20
|
+
protected requireExpoSqlite(): unknown;
|
|
21
|
+
/**
|
|
22
|
+
* If driver dependency is not given explicitly, resolve it via
|
|
23
|
+
* `requireExpoSqlite()` and validate that the loaded module exposes the
|
|
24
|
+
* modern async API introduced in Expo SDK v52.
|
|
25
|
+
*/
|
|
26
|
+
protected loadDependencies(): void;
|
|
12
27
|
}
|
|
@@ -4,13 +4,35 @@ exports.ExpoDriver = void 0;
|
|
|
4
4
|
const error_1 = require("../../error");
|
|
5
5
|
const AbstractSqliteDriver_1 = require("../sqlite-abstract/AbstractSqliteDriver");
|
|
6
6
|
const ExpoQueryRunner_1 = require("./ExpoQueryRunner");
|
|
7
|
+
// Node raises `MODULE_NOT_FOUND` when the requested module can't be resolved,
|
|
8
|
+
// but the same code also fires for transitive failures (a dependency of
|
|
9
|
+
// `expo-sqlite` that's missing, a `require` inside the module body). Node's
|
|
10
|
+
// error message has the shape:
|
|
11
|
+
//
|
|
12
|
+
// Cannot find module '<name>'
|
|
13
|
+
// Require stack:
|
|
14
|
+
// - /node_modules/<caller>/index.js
|
|
15
|
+
// - ...
|
|
16
|
+
//
|
|
17
|
+
// The stack lists the calling modules and can include `expo-sqlite` when the
|
|
18
|
+
// unresolved module is a transitive dependency — so matching the whole
|
|
19
|
+
// message would misreport such failures as "install expo-sqlite". Only the
|
|
20
|
+
// first line identifies the actually-missing module, so match against that.
|
|
21
|
+
const isExpoSqliteNotFoundError = (err) => {
|
|
22
|
+
if (typeof err !== "object" || err === null)
|
|
23
|
+
return false;
|
|
24
|
+
const e = err;
|
|
25
|
+
if (e.code !== "MODULE_NOT_FOUND")
|
|
26
|
+
return false;
|
|
27
|
+
if (typeof e.message !== "string")
|
|
28
|
+
return false;
|
|
29
|
+
const firstLine = e.message.split("\n", 1)[0];
|
|
30
|
+
return firstLine.startsWith("Cannot find module 'expo-sqlite'");
|
|
31
|
+
};
|
|
7
32
|
class ExpoDriver extends AbstractSqliteDriver_1.AbstractSqliteDriver {
|
|
8
33
|
constructor(dataSource) {
|
|
9
34
|
super(dataSource);
|
|
10
|
-
|
|
11
|
-
throw new error_1.TypeORMError("Legacy Expo driver is not supported.");
|
|
12
|
-
}
|
|
13
|
-
this.sqlite = this.options.driver;
|
|
35
|
+
this.loadDependencies();
|
|
14
36
|
}
|
|
15
37
|
async disconnect() {
|
|
16
38
|
this.queryRunner = undefined;
|
|
@@ -26,8 +48,48 @@ class ExpoDriver extends AbstractSqliteDriver_1.AbstractSqliteDriver {
|
|
|
26
48
|
await this.databaseConnection.runAsync("PRAGMA foreign_keys = ON");
|
|
27
49
|
return this.databaseConnection;
|
|
28
50
|
}
|
|
29
|
-
|
|
30
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Loads the `expo-sqlite` module when `options.driver` is not set. Extracted
|
|
53
|
+
* as a method so tests can stub the module resolution without depending on
|
|
54
|
+
* whether `expo-sqlite` happens to be installed in the workspace.
|
|
55
|
+
*
|
|
56
|
+
* A literal `require("expo-sqlite")` is used so Metro's static bundler picks
|
|
57
|
+
* the dependency up at build time — `PlatformTools.load()` is a throwing
|
|
58
|
+
* stub in the browser/React-Native build and cannot be used here.
|
|
59
|
+
*/
|
|
60
|
+
requireExpoSqlite() {
|
|
61
|
+
return require("expo-sqlite");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* If driver dependency is not given explicitly, resolve it via
|
|
65
|
+
* `requireExpoSqlite()` and validate that the loaded module exposes the
|
|
66
|
+
* modern async API introduced in Expo SDK v52.
|
|
67
|
+
*/
|
|
68
|
+
loadDependencies() {
|
|
69
|
+
if (this.options.driver) {
|
|
70
|
+
this.sqlite = this.options.driver;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
try {
|
|
74
|
+
this.sqlite = this.requireExpoSqlite();
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (isExpoSqliteNotFoundError(err)) {
|
|
78
|
+
throw new error_1.DriverPackageNotInstalledError("Expo SQLite", "expo-sqlite");
|
|
79
|
+
}
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Expo SDK v52 removed the legacy synchronous API. The modern async API
|
|
84
|
+
// exposes `openDatabaseAsync` as a function — anything else (missing,
|
|
85
|
+
// non-callable, non-object `driver`) means the user is on a pre-v52 SDK
|
|
86
|
+
// or has passed something that isn't the expo-sqlite module.
|
|
87
|
+
if (typeof this.sqlite?.openDatabaseAsync !== "function") {
|
|
88
|
+
const hint = this.options.driver
|
|
89
|
+
? "check that the provided `driver` exposes `openDatabaseAsync` — custom overrides must match the expo-sqlite v52+ surface"
|
|
90
|
+
: "upgrade to Expo SDK v52 or later, which ships the modern async SQLite API";
|
|
91
|
+
throw new error_1.TypeORMError(`Legacy Expo SQLite driver is not supported — ${hint}.`);
|
|
92
|
+
}
|
|
31
93
|
}
|
|
32
94
|
}
|
|
33
95
|
exports.ExpoDriver = ExpoDriver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoDriver.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoDriver.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"ExpoDriver.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoDriver.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataSource } from \"../../data-source/DataSource\"\nimport { DriverPackageNotInstalledError, TypeORMError } from \"../../error\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\"\nimport type { ExpoDataSourceOptions } from \"./ExpoDataSourceOptions\"\nimport { ExpoQueryRunner } from \"./ExpoQueryRunner\"\n\n// Node raises `MODULE_NOT_FOUND` when the requested module can't be resolved,\n// but the same code also fires for transitive failures (a dependency of\n// `expo-sqlite` that's missing, a `require` inside the module body). Node's\n// error message has the shape:\n//\n// Cannot find module '<name>'\n// Require stack:\n// - /node_modules/<caller>/index.js\n// - ...\n//\n// The stack lists the calling modules and can include `expo-sqlite` when the\n// unresolved module is a transitive dependency — so matching the whole\n// message would misreport such failures as \"install expo-sqlite\". Only the\n// first line identifies the actually-missing module, so match against that.\nconst isExpoSqliteNotFoundError = (err: unknown): boolean => {\n if (typeof err !== \"object\" || err === null) return false\n const e = err as { code?: string; message?: string }\n if (e.code !== \"MODULE_NOT_FOUND\") return false\n if (typeof e.message !== \"string\") return false\n const firstLine = e.message.split(\"\\n\", 1)[0]\n return firstLine.startsWith(\"Cannot find module 'expo-sqlite'\")\n}\n\nexport class ExpoDriver extends AbstractSqliteDriver {\n declare options: ExpoDataSourceOptions\n\n constructor(dataSource: DataSource) {\n super(dataSource)\n this.loadDependencies()\n }\n\n async disconnect(): Promise<void> {\n this.queryRunner = undefined\n await this.databaseConnection.closeAsync()\n this.databaseConnection = undefined\n }\n\n createQueryRunner(): QueryRunner {\n this.queryRunner ??= new ExpoQueryRunner(this)\n return this.queryRunner\n }\n\n protected async createDatabaseConnection() {\n this.databaseConnection = await this.sqlite.openDatabaseAsync(\n this.options.database,\n )\n await this.databaseConnection.runAsync(\"PRAGMA foreign_keys = ON\")\n return this.databaseConnection\n }\n\n /**\n * Loads the `expo-sqlite` module when `options.driver` is not set. Extracted\n * as a method so tests can stub the module resolution without depending on\n * whether `expo-sqlite` happens to be installed in the workspace.\n *\n * A literal `require(\"expo-sqlite\")` is used so Metro's static bundler picks\n * the dependency up at build time — `PlatformTools.load()` is a throwing\n * stub in the browser/React-Native build and cannot be used here.\n */\n protected requireExpoSqlite(): unknown {\n return require(\"expo-sqlite\")\n }\n\n /**\n * If driver dependency is not given explicitly, resolve it via\n * `requireExpoSqlite()` and validate that the loaded module exposes the\n * modern async API introduced in Expo SDK v52.\n */\n protected loadDependencies(): void {\n if (this.options.driver) {\n this.sqlite = this.options.driver\n } else {\n try {\n this.sqlite = this.requireExpoSqlite()\n } catch (err) {\n if (isExpoSqliteNotFoundError(err)) {\n throw new DriverPackageNotInstalledError(\n \"Expo SQLite\",\n \"expo-sqlite\",\n )\n }\n throw err\n }\n }\n\n // Expo SDK v52 removed the legacy synchronous API. The modern async API\n // exposes `openDatabaseAsync` as a function — anything else (missing,\n // non-callable, non-object `driver`) means the user is on a pre-v52 SDK\n // or has passed something that isn't the expo-sqlite module.\n if (typeof this.sqlite?.openDatabaseAsync !== \"function\") {\n const hint = this.options.driver\n ? \"check that the provided `driver` exposes `openDatabaseAsync` — custom overrides must match the expo-sqlite v52+ surface\"\n : \"upgrade to Expo SDK v52 or later, which ships the modern async SQLite API\"\n throw new TypeORMError(\n `Legacy Expo SQLite driver is not supported — ${hint}.`,\n )\n }\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ObjectLiteral } from "../../common/ObjectLiteral";
|
|
1
2
|
import { AbstractSqliteQueryRunner } from "../sqlite-abstract/AbstractSqliteQueryRunner";
|
|
2
3
|
import type { ExpoDriver } from "./ExpoDriver";
|
|
3
4
|
export declare class ExpoQueryRunner extends AbstractSqliteQueryRunner {
|
|
@@ -5,5 +6,5 @@ export declare class ExpoQueryRunner extends AbstractSqliteQueryRunner {
|
|
|
5
6
|
constructor(driver: ExpoDriver);
|
|
6
7
|
beforeMigration(): Promise<void>;
|
|
7
8
|
afterMigration(): Promise<void>;
|
|
8
|
-
query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;
|
|
9
|
+
query(query: string, parameters?: any[] | ObjectLiteral, useStructuredResult?: boolean): Promise<any>;
|
|
9
10
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExpoQueryRunner = void 0;
|
|
4
|
+
const error_1 = require("../../error");
|
|
4
5
|
const QueryFailedError_1 = require("../../error/QueryFailedError");
|
|
5
6
|
const QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
|
|
6
7
|
const QueryResult_1 = require("../../query-runner/QueryResult");
|
|
@@ -23,6 +24,8 @@ class ExpoQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQueryRun
|
|
|
23
24
|
async query(query, parameters, useStructuredResult = false) {
|
|
24
25
|
if (this.isReleased)
|
|
25
26
|
throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
|
|
27
|
+
if (parameters && !Array.isArray(parameters))
|
|
28
|
+
throw new error_1.NamedPlaceholdersNotSupportedError();
|
|
26
29
|
const databaseConnection = await this.connect();
|
|
27
30
|
const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
|
|
28
31
|
this.driver.dataSource.logger.logQuery(query, parameters, this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoQueryRunner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ExpoQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["driver/expo/ExpoQueryRunner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { NamedPlaceholdersNotSupportedError } from \"../../error\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport type { ExpoDriver } from \"./ExpoDriver\"\n\nexport class ExpoQueryRunner extends AbstractSqliteQueryRunner {\n driver: ExpoDriver\n\n constructor(driver: ExpoDriver) {\n super()\n this.driver = driver\n this.dataSource = driver.dataSource\n this.broadcaster = new Broadcaster(this)\n }\n\n async beforeMigration(): Promise<void> {\n await this.query(\"PRAGMA foreign_keys = OFF\")\n }\n\n async afterMigration(): Promise<void> {\n await this.query(\"PRAGMA foreign_keys = ON\")\n }\n\n async query(\n query: string,\n parameters?: any[] | ObjectLiteral,\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n if (parameters && !Array.isArray(parameters))\n throw new NamedPlaceholdersNotSupportedError()\n\n const databaseConnection = await this.connect()\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.dataSource.logger.logQuery(query, parameters, this)\n await this.broadcaster.broadcast(\"BeforeQuery\", query, parameters)\n\n const queryStartTime = Date.now()\n\n const statement = await databaseConnection.prepareAsync(query)\n try {\n const rawResult = await statement.executeAsync(parameters)\n\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n rawResult,\n undefined,\n )\n await broadcasterResult.wait()\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.dataSource.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n const result = new QueryResult()\n result.affected = rawResult.changes\n result.records = await rawResult.getAllAsync()\n result.raw = query.startsWith(\"INSERT INTO\")\n ? rawResult.lastInsertRowId\n : result.records\n\n return useStructuredResult ? result : result.raw\n } catch (err) {\n this.driver.dataSource.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n 0,\n undefined,\n err,\n )\n await broadcasterResult.wait()\n\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n await statement.finalizeAsync()\n }\n }\n}\n"]}
|
|
@@ -380,7 +380,7 @@ class MysqlDriver {
|
|
|
380
380
|
const escapedParameters = [];
|
|
381
381
|
if (!parameters || !Object.keys(parameters).length)
|
|
382
382
|
return [sql, escapedParameters];
|
|
383
|
-
sql = sql.
|
|
383
|
+
sql = sql.replaceAll(/:(\.\.\.)?([A-Za-z0-9_.]+)/g, (full, isArray, key) => {
|
|
384
384
|
if (!parameters.hasOwnProperty(key)) {
|
|
385
385
|
return full;
|
|
386
386
|
}
|
|
@@ -1002,8 +1002,8 @@ class MysqlDriver {
|
|
|
1002
1002
|
typeof databaseValue === "string") {
|
|
1003
1003
|
// we need to cut out "'" because in mysql we can understand returned value is a string or a function
|
|
1004
1004
|
// as result compare cannot understand if default is really changed or not
|
|
1005
|
-
columnMetadataValue = columnMetadataValue.
|
|
1006
|
-
databaseValue = databaseValue.
|
|
1005
|
+
columnMetadataValue = columnMetadataValue.replaceAll(/^'+|'+$/g, "");
|
|
1006
|
+
databaseValue = databaseValue.replaceAll(/^'+|'+$/g, "");
|
|
1007
1007
|
}
|
|
1008
1008
|
return columnMetadataValue === databaseValue;
|
|
1009
1009
|
}
|
|
@@ -1053,7 +1053,7 @@ class MysqlDriver {
|
|
|
1053
1053
|
escapeComment(comment) {
|
|
1054
1054
|
if (!comment)
|
|
1055
1055
|
return comment;
|
|
1056
|
-
comment = comment.
|
|
1056
|
+
comment = comment.replaceAll("\u0000", ""); // Null bytes aren't allowed in comments
|
|
1057
1057
|
return comment;
|
|
1058
1058
|
}
|
|
1059
1059
|
/**
|