typeorm 0.2.44-dev.8742e33 → 0.2.45-dev.0fc093d
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/browser/decorator/options/ViewColumnOptions.d.ts +6 -0
- package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
- package/browser/driver/Driver.d.ts +6 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -0
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +4 -0
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +66 -28
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +4 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +4 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +43 -11
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +4 -0
- package/browser/driver/cockroachdb/CockroachDriver.js +4 -0
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +98 -61
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +111 -55
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +4 -0
- package/browser/driver/mongodb/MongoDriver.js +4 -0
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +10 -2
- package/browser/driver/mysql/MysqlDriver.js +46 -6
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +71 -37
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +4 -0
- package/browser/driver/oracle/OracleDriver.js +4 -0
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +62 -28
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +4 -0
- package/browser/driver/postgres/PostgresDriver.js +4 -0
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +69 -32
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +4 -0
- package/browser/driver/sap/SapDriver.js +4 -0
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +32 -14
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +4 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +78 -36
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +4 -0
- package/browser/driver/sqlserver/SqlServerDriver.js +4 -0
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +132 -95
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +22 -31
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +8 -8
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/ReturningStatementNotSupportedError.js +1 -1
- package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js +7 -1
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +2 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.js +7 -10
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.d.ts +3 -0
- package/browser/query-builder/InsertOrUpdateOptions.js +3 -0
- package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -0
- package/browser/query-builder/InsertQueryBuilder.d.ts +2 -1
- package/browser/query-builder/InsertQueryBuilder.js +19 -5
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +2 -1
- package/browser/query-builder/QueryBuilder.js +2 -2
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/RelationLoader.js +7 -7
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js +4 -3
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +7 -12
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +8 -12
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +5 -0
- package/browser/query-runner/BaseQueryRunner.js +5 -0
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/repository/UpsertOptions.d.ts +4 -0
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/browser/util/ImportUtils.js +2 -1
- package/browser/util/ImportUtils.js.map +1 -1
- package/decorator/options/ViewColumnOptions.d.ts +6 -0
- package/decorator/options/ViewColumnOptions.js.map +1 -1
- package/driver/Driver.d.ts +6 -1
- package/driver/Driver.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -0
- package/driver/aurora-data-api/AuroraDataApiDriver.js +4 -0
- package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +66 -28
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +4 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +4 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +43 -11
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +4 -0
- package/driver/cockroachdb/CockroachDriver.js +4 -0
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +98 -61
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +111 -55
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +4 -0
- package/driver/mongodb/MongoDriver.js +4 -0
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +10 -2
- package/driver/mysql/MysqlDriver.js +46 -6
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +71 -37
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +4 -0
- package/driver/oracle/OracleDriver.js +4 -0
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +62 -28
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +4 -0
- package/driver/postgres/PostgresDriver.js +4 -0
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +69 -32
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +4 -0
- package/driver/sap/SapDriver.js +4 -0
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +32 -14
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +4 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -0
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +78 -36
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +4 -0
- package/driver/sqlserver/SqlServerDriver.js +4 -0
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +132 -95
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.js +22 -31
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +8 -8
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/ReturningStatementNotSupportedError.js +1 -1
- package/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/metadata/ColumnMetadata.js +7 -1
- package/metadata/ColumnMetadata.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectExecutor.js +2 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.js +7 -10
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertOrUpdateOptions.d.ts +3 -0
- package/query-builder/InsertOrUpdateOptions.js +4 -0
- package/query-builder/InsertOrUpdateOptions.js.map +1 -0
- package/query-builder/InsertQueryBuilder.d.ts +2 -1
- package/query-builder/InsertQueryBuilder.js +19 -5
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +2 -1
- package/query-builder/QueryBuilder.js +2 -2
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +1 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/RelationLoader.js +11 -11
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +4 -3
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +7 -12
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +8 -12
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +5 -0
- package/query-runner/BaseQueryRunner.js +5 -0
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/repository/UpsertOptions.d.ts +4 -0
- package/repository/UpsertOptions.js.map +1 -1
- package/util/ImportUtils.js +2 -1
- package/util/ImportUtils.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/driver/aurora-data-api/AuroraDataApiDriver.ts"],"names":[],"mappings":"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","file":"AuroraDataApiDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {AuroraDataApiQueryRunner} from \"./AuroraDataApiQueryRunner\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {AuroraDataApiConnectionOptions} from \"./AuroraDataApiConnectionOptions\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {AuroraDataApiConnectionCredentialsOptions} from \"./AuroraDataApiConnectionCredentialsOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\nimport { TypeORMError } from \"../../error\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\n\n/**\n * Organizes communication with MySQL DBMS.\n */\nexport class AuroraDataApiDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n connection: Connection;\n /**\n * Aurora Data API underlying library.\n */\n DataApiDriver: any;\n\n client: any;\n\n /**\n * Connection pool.\n * Used in non-replication mode.\n */\n pool: any;\n\n /**\n * Pool cluster used in replication mode.\n */\n poolCluster: any;\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: AuroraDataApiConnectionOptions;\n\n /**\n * Database name used to perform all write queries.\n */\n database?: string;\n\n /**\n * Schema name used to performn all write queries.\n */\n schema?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/mysql/mysql-data-types.htm\n * @see https://dev.mysql.com/doc/refman/8.0/en/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n // numeric types\n \"bit\",\n \"int\",\n \"integer\", // synonym for int\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"float\",\n \"double\",\n \"double precision\", // synonym for double\n \"real\", // synonym for double\n \"decimal\",\n \"dec\", // synonym for decimal\n \"numeric\", // synonym for decimal\n \"fixed\", // synonym for decimal\n \"bool\", // synonym for tinyint\n \"boolean\", // synonym for tinyint\n // date and time types\n \"date\",\n \"datetime\",\n \"timestamp\",\n \"time\",\n \"year\",\n // string types\n \"char\",\n \"nchar\", // synonym for national char\n \"national char\",\n \"varchar\",\n \"nvarchar\", // synonym for national varchar\n \"national varchar\",\n \"blob\",\n \"text\",\n \"tinyblob\",\n \"tinytext\",\n \"mediumblob\",\n \"mediumtext\",\n \"longblob\",\n \"longtext\",\n \"enum\",\n \"set\",\n \"binary\",\n \"varbinary\",\n // json data type\n \"json\",\n // spatial data types\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\"\n ];\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-duplicate-key-update\";\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\"\n ];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"char\",\n \"varchar\",\n \"nvarchar\",\n \"binary\",\n \"varbinary\"\n ];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withWidthColumnTypes: ColumnType[] = [\n \"bit\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"int\",\n \"integer\",\n \"bigint\"\n ];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n \"time\",\n \"datetime\",\n \"timestamp\"\n ];\n\n /**\n * Gets list of column data types that supports scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\"\n ];\n\n /**\n * Gets list of column data types that supports UNSIGNED and ZEROFILL attributes.\n */\n unsignedAndZerofillTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"smallint\",\n \"tinyint\",\n \"mediumint\",\n \"bigint\",\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\"\n ];\n\n /**\n * ORM has special columns and we need to know what database column types should be for those columns.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDatePrecision: 6,\n createDateDefault: \"CURRENT_TIMESTAMP(6)\",\n updateDate: \"datetime\",\n updateDatePrecision: 6,\n updateDateDefault: \"CURRENT_TIMESTAMP(6)\",\n deleteDate: \"datetime\",\n deleteDatePrecision: 6,\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults = {\n \"varchar\": { length: 255 },\n \"nvarchar\": { length: 255 },\n \"national varchar\": { length: 255 },\n \"char\": { length: 1 },\n \"binary\": { length: 1 },\n \"varbinary\": { length: 255 },\n \"decimal\": { precision: 10, scale: 0 },\n \"dec\": { precision: 10, scale: 0 },\n \"numeric\": { precision: 10, scale: 0 },\n \"fixed\": { precision: 10, scale: 0 },\n \"float\": { precision: 12 },\n \"double\": { precision: 22 },\n \"time\": { precision: 0 },\n \"datetime\": { precision: 0 },\n \"timestamp\": { precision: 0 },\n \"bit\": { width: 1 },\n \"int\": { width: 11 },\n \"integer\": { width: 11 },\n \"tinyint\": { width: 4 },\n \"smallint\": { width: 6 },\n \"mediumint\": { width: 9 },\n \"bigint\": { width: 20 }\n };\n\n\n /**\n * Max length allowed by MySQL for aliases.\n * @see https://dev.mysql.com/doc/refman/5.5/en/identifiers.html\n */\n maxAliasLength = 63;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as AuroraDataApiConnectionOptions;\n\n // load mysql package\n this.loadDependencies();\n\n this.client = new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n );\n\n this.database = DriverUtils.buildDriverOptions(this.options).database;\n\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!(this.options.host || (this.options.extra && this.options.extra.socketPath)) && !this.options.socketPath)\n // throw new DriverOptionNotSetError(\"socketPath and host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // todo: check what is going on when connection is setup without database and how to connect to a database then?\n // todo: provide options to auto-create a database if it does not exist yet\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n if (!this.database) {\n const queryRunner = await this.createQueryRunner(\"master\");\n\n this.database = await queryRunner.getCurrentDatabase();\n\n await queryRunner.release();\n }\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n afterConnect(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Closes connection with the database.\n */\n async disconnect(): Promise<void> {\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new AuroraDataApiQueryRunner(this, new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n ));\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters];\n\n sql = sql.replace(/:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g, (full, isArray: string, key: string): string => {\n if (!parameters.hasOwnProperty(key)) {\n return full;\n }\n\n let value: any = parameters[key];\n\n if (isArray) {\n return value.map((v: any) => {\n escapedParameters.push(v);\n return this.createParameter(key, escapedParameters.length - 1);\n }).join(\", \");\n\n }\n\n if (value instanceof Function) {\n return value();\n\n }\n\n escapedParameters.push(value);\n return this.createParameter(key, escapedParameters.length - 1);\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, escapedParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"`\" + columnName + \"`\";\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n */\n buildTableName(tableName: string, schema?: string, database?: string): string {\n let tablePath = [ tableName ];\n\n if (database) {\n tablePath.unshift(database);\n }\n\n return tablePath.join(\".\");\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(target: EntityMetadata | Table | View | TableForeignKey | string): { database?: string, schema?: string, tableName: string } {\n const driverDatabase = this.database;\n const driverSchema = undefined;\n\n if (target instanceof Table || target instanceof View) {\n const parsed = this.parseTableName(target.name);\n\n return {\n database: target.database || parsed.database || driverDatabase,\n schema: target.schema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof TableForeignKey) {\n const parsed = this.parseTableName(target.referencedTableName);\n\n return {\n database: target.referencedDatabase || parsed.database || driverDatabase,\n schema: target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof EntityMetadata) {\n // EntityMetadata tableName is never a path\n\n return {\n database: target.database || driverDatabase,\n schema: target.schema || driverSchema,\n tableName: target.tableName\n };\n\n }\n\n const parts = target.split(\".\");\n\n return {\n database: (parts.length > 1 ? parts[0] : undefined) || driverDatabase,\n schema: driverSchema,\n tableName: parts.length > 1 ? parts[1] : parts[0]\n };\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (!this.options.formatOptions || this.options.formatOptions.castParameters !== false) {\n return this.client.preparePersistentValue(value, columnMetadata);\n }\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"json\") {\n return JSON.stringify(value);\n\n } else if (columnMetadata.type === \"timestamp\" || columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n return DateUtils.mixedDateToDate(value);\n\n } else if (columnMetadata.type === \"simple-array\" || columnMetadata.type === \"set\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n\n } else if (columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") {\n return \"\" + value;\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n if (!this.options.formatOptions || this.options.formatOptions.castParameters !== false) {\n return this.client.prepareHydratedValue(value, columnMetadata);\n }\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"bool\" || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"json\") {\n value = typeof value === \"string\" ? JSON.parse(value) : value;\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\" || columnMetadata.type === \"set\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n } else if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\")\n && columnMetadata.enum\n && !isNaN(value)\n && columnMetadata.enum.indexOf(parseInt(value)) >= 0) {\n // convert to number if that exists in possible enum options\n value = parseInt(value);\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type: ColumnType, length?: number|string, precision?: number|null, scale?: number }): string {\n if (column.type === Number || column.type === \"integer\") {\n return \"int\";\n\n } else if (column.type === String) {\n return \"varchar\";\n\n } else if (column.type === Date) {\n return \"datetime\";\n\n } else if ((column.type as any) === Buffer) {\n return \"blob\";\n\n } else if (column.type === Boolean) {\n return \"tinyint\";\n\n } else if (column.type === \"uuid\") {\n return \"varchar\";\n\n } else if (column.type === \"simple-array\" || column.type === \"simple-json\") {\n return \"text\";\n\n } else if (column.type === \"simple-enum\") {\n return \"enum\";\n\n } else if (column.type === \"double precision\" || column.type === \"real\") {\n return \"double\";\n\n } else if (column.type === \"dec\" || column.type === \"numeric\" || column.type === \"fixed\") {\n return \"decimal\";\n\n } else if (column.type === \"bool\" || column.type === \"boolean\") {\n return \"tinyint\";\n\n } else if (column.type === \"nvarchar\" || column.type === \"national varchar\") {\n return \"varchar\";\n\n } else if (column.type === \"nchar\" || column.type === \"national char\") {\n return \"char\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n const defaultValue = columnMetadata.default;\n\n if (defaultValue === null) {\n return undefined;\n }\n\n if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") && defaultValue !== undefined) {\n return `'${defaultValue}'`;\n }\n\n if ((columnMetadata.type === \"set\") && defaultValue !== undefined) {\n return `'${DateUtils.simpleArrayToString(defaultValue)}'`;\n }\n\n if (typeof defaultValue === \"number\") {\n return `${defaultValue}`;\n }\n\n if (typeof defaultValue === \"boolean\") {\n return defaultValue ? \"1\" : \"0\";\n }\n\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'`;\n }\n\n if (defaultValue === undefined) {\n return undefined;\n }\n\n return `${defaultValue}`;\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.indices.some(idx => idx.isUnique && idx.columns.length === 1 && idx.columns[0] === column);\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata|TableColumn): string {\n if (column.length)\n return column.length.toString();\n\n /**\n * fix https://github.com/typeorm/typeorm/issues/1139\n */\n if (column.generationStrategy === \"uuid\")\n return \"36\";\n\n switch (column.type) {\n case String:\n case \"varchar\":\n case \"nvarchar\":\n case \"national varchar\":\n return \"255\";\n case \"varbinary\":\n return \"255\";\n default:\n return \"\";\n }\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n\n // used 'getColumnLength()' method, because MySQL requires column length for `varchar`, `nvarchar` and `varbinary` data types\n if (this.getColumnLength(column)) {\n type += `(${this.getColumnLength(column)})`;\n\n } else if (column.width) {\n type += `(${column.width})`;\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += `(${column.precision},${column.scale})`;\n\n } else if (column.precision !== null && column.precision !== undefined) {\n type += `(${column.precision})`;\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return new Promise<any>((ok, fail) => {\n if (this.poolCluster) {\n this.poolCluster.getConnection(\"MASTER\", (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n\n } else if (this.pool) {\n this.pool.getConnection((err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n } else {\n fail(new TypeORMError(`Connection is not established with mysql database`));\n }\n });\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n if (!this.poolCluster)\n return this.obtainMasterConnection();\n\n return new Promise<any>((ok, fail) => {\n this.poolCluster.getConnection(\"SLAVE*\", (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n });\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number) {\n const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {\n let value: any;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult.insertId) {\n // NOTE: When multiple rows is inserted by a single INSERT statement,\n // `insertId` is the value generated for the first inserted row only.\n value = insertResult.insertId + entityIndex;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // console.log(\"getting db value:\", generatedColumn.databaseName);\n // value = generatedColumn.getEntityValue(uuidMap);\n }\n\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"zerofill:\", tableColumn.zerofill, columnMetadata.zerofill);\n // console.log(\"unsigned:\", tableColumn.unsigned, columnMetadata.unsigned);\n // console.log(\"asExpression:\", tableColumn.asExpression, columnMetadata.asExpression);\n // console.log(\"generatedType:\", tableColumn.generatedType, columnMetadata.generatedType);\n // console.log(\"comment:\", tableColumn.comment, this.escapeComment(columnMetadata.comment));\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"enum:\", tableColumn.enum, columnMetadata.enum);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"onUpdate:\", tableColumn.onUpdate, columnMetadata.onUpdate);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log((columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated));\n // console.log(\"==========================================\");\n\n let columnMetadataLength = columnMetadata.length;\n if (!columnMetadataLength && columnMetadata.generationStrategy === \"uuid\") { // fixing #3374\n columnMetadataLength = this.getColumnLength(columnMetadata);\n }\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadataLength\n || tableColumn.width !== columnMetadata.width\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n || tableColumn.zerofill !== columnMetadata.zerofill\n || tableColumn.unsigned !== columnMetadata.unsigned\n || tableColumn.asExpression !== columnMetadata.asExpression\n || tableColumn.generatedType !== columnMetadata.generatedType\n || tableColumn.comment !== this.escapeComment(columnMetadata.comment)\n || !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default)\n || (tableColumn.enum && columnMetadata.enum && !OrmUtils.isArraysEqual(tableColumn.enum, columnMetadata.enum.map(val => val + \"\")))\n || tableColumn.onUpdate !== columnMetadata.onUpdate\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return true;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"?\";\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): void {\n const DataApiDriver = this.options.driver || PlatformTools.load(\"typeorm-aurora-data-api-driver\");\n this.DataApiDriver = DataApiDriver;\n\n // Driver uses rollup for publishing, which has issues when using typeorm in combination with webpack\n // See https://github.com/webpack/webpack/issues/4742#issuecomment-295556787\n this.DataApiDriver = this.DataApiDriver.default || this.DataApiDriver;\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected createConnectionOptions(options: AuroraDataApiConnectionOptions, credentials: AuroraDataApiConnectionCredentialsOptions): Promise<any> {\n\n credentials = Object.assign({}, credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n // build connection options for the driver\n return Object.assign({}, {\n resourceArn: options.resourceArn,\n secretArn: options.secretArn,\n database: options.database,\n region: options.region,\n type: options.type,\n }, {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: options.ssl\n },\n\n options.extra || {});\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(connectionOptions: any): Promise<any> {\n return {};\n }\n\n /**\n * Attaches all required base handlers to a database connection, such as the unhandled error handler.\n */\n private prepareDbConnection(connection: any): any {\n const { logger } = this.connection;\n /**\n * Attaching an error handler to connection errors is essential, as, otherwise, errors raised will go unhandled and\n * cause the hosting app to crash.\n */\n if (connection.listeners(\"error\").length === 0) {\n connection.on(\"error\", (error: any) => logger.log(\"warn\", `MySQL connection raised an error. ${error}`));\n }\n return connection;\n }\n\n /**\n * Checks if \"DEFAULT\" values in the column metadata and in the database are equal.\n */\n protected compareDefaultValues(columnMetadataValue: string | undefined, databaseValue: string | undefined): boolean {\n if (typeof columnMetadataValue === \"string\" && typeof databaseValue === \"string\") {\n // we need to cut out \"'\" because in mysql we can understand returned value is a string or a function\n // as result compare cannot understand if default is really changed or not\n columnMetadataValue = columnMetadataValue.replace(/^'+|'+$/g, \"\");\n databaseValue = databaseValue.replace(/^'+|'+$/g, \"\");\n }\n\n return columnMetadataValue === databaseValue;\n }\n\n /**\n * Escapes a given comment.\n */\n protected escapeComment(comment?: string) {\n if (!comment) return comment;\n\n comment = comment.replace(/\\u0000/g, \"\"); // Null bytes aren't allowed in comments\n\n return comment;\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../src/driver/aurora-data-api/AuroraDataApiDriver.ts"],"names":[],"mappings":";;;;AACA,8CAA2C;AAC3C,uEAAoE;AAGpE,kDAA+C;AAC/C,8DAA2D;AAE3D,8EAA2E;AAO3E,gEAA6D;AAC7D,gDAA6C;AAC7C,4EAAyE;AAEzE,qCAA2C;AAC3C,0DAAyD;AACzD,uDAAsD;AACtD,8EAA6E;AAE7E;;GAEG;AACH;IA6RI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,6BAAY,UAAsB;QAAlC,iBA6BC;QAlRD;;WAEG;QACH,iBAAY,GAAY,KAAK,CAAC;QAE9B;;WAEG;QACH,gBAAW,GAAG,IAAI,CAAC;QAEnB;;WAEG;QACH,uBAAkB,GAAG,QAAiB,CAAC;QAEvC;;;;;WAKG;QACH,uBAAkB,GAAiB;YAC/B,gBAAgB;YAChB,KAAK;YACL,KAAK;YACL,SAAS;YACT,SAAS;YACT,UAAU;YACV,WAAW;YACX,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,kBAAkB;YAClB,MAAM;YACN,SAAS;YACT,KAAK;YACL,SAAS;YACT,OAAO;YACP,MAAM;YACN,SAAS;YACT,sBAAsB;YACtB,MAAM;YACN,UAAU;YACV,WAAW;YACX,MAAM;YACN,MAAM;YACN,eAAe;YACf,MAAM;YACN,OAAO;YACP,eAAe;YACf,SAAS;YACT,UAAU;YACV,kBAAkB;YAClB,MAAM;YACN,MAAM;YACN,UAAU;YACV,UAAU;YACV,YAAY;YACZ,YAAY;YACZ,UAAU;YACV,UAAU;YACV,MAAM;YACN,KAAK;YACL,QAAQ;YACR,WAAW;YACX,iBAAiB;YACjB,MAAM;YACN,qBAAqB;YACrB,UAAU;YACV,OAAO;YACP,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,iBAAiB;YACjB,cAAc;YACd,oBAAoB;SACvB,CAAC;QAEF;;WAEG;QACM,wBAAmB,GAAG,yBAAyB,CAAC;QAEzD;;WAEG;QACH,iBAAY,GAAiB;YACzB,UAAU;YACV,OAAO;YACP,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,iBAAiB;YACjB,cAAc;YACd,oBAAoB;SACvB,CAAC;QAEF;;WAEG;QACH,0BAAqB,GAAiB;YAClC,MAAM;YACN,SAAS;YACT,UAAU;YACV,QAAQ;YACR,WAAW;SACd,CAAC;QAEF;;WAEG;QACH,yBAAoB,GAAiB;YACjC,KAAK;YACL,SAAS;YACT,UAAU;YACV,WAAW;YACX,KAAK;YACL,SAAS;YACT,QAAQ;SACX,CAAC;QAEF;;WAEG;QACH,6BAAwB,GAAiB;YACrC,SAAS;YACT,KAAK;YACL,SAAS;YACT,OAAO;YACP,OAAO;YACP,QAAQ;YACR,kBAAkB;YAClB,MAAM;YACN,MAAM;YACN,UAAU;YACV,WAAW;SACd,CAAC;QAEF;;WAEG;QACH,yBAAoB,GAAiB;YACjC,SAAS;YACT,KAAK;YACL,SAAS;YACT,OAAO;YACP,OAAO;YACP,QAAQ;YACR,kBAAkB;YAClB,MAAM;SACT,CAAC;QAEF;;WAEG;QACH,6BAAwB,GAAiB;YACrC,KAAK;YACL,SAAS;YACT,UAAU;YACV,SAAS;YACT,WAAW;YACX,QAAQ;YACR,SAAS;YACT,KAAK;YACL,SAAS;YACT,OAAO;YACP,OAAO;YACP,QAAQ;YACR,kBAAkB;YAClB,MAAM;SACT,CAAC;QAEF;;;WAGG;QACH,oBAAe,GAAsB;YACjC,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,CAAC;YACtB,iBAAiB,EAAE,sBAAsB;YACzC,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,CAAC;YACtB,iBAAiB,EAAE,sBAAsB;YACzC,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,CAAC;YACtB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,KAAK;YAClB,aAAa,EAAE,SAAS;YACxB,kBAAkB,EAAE,QAAQ;YAC5B,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,MAAM;YAClB,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,SAAS;YACvB,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,SAAS;YACzB,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,MAAM;SACxB,CAAC;QAEF;;;WAGG;QACH,qBAAgB,GAAqB;YACjC,SAAS,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YAC1B,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YAC3B,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YACnC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;YACrB,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;YACvB,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;YAC5B,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACtC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YAClC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACtC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACpC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC1B,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC3B,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YACxB,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YAC5B,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;YAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACnB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACpB,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACxB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACvB,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACxB,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACzB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;SAC1B,CAAC;QAGF;;;WAGG;QACH,mBAAc,GAAG,EAAE,CAAC;QAOhB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAyC,CAAC;QAEpE,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,UAAC,KAAa,EAAE,UAAkB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,EAAlD,CAAkD,EACzF,IAAI,CAAC,OAAO,CAAC,oBAAoB,EACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAC7B,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,yBAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;QAEtE,kDAAkD;QAClD,oDAAoD;QACpD,iHAAiH;QACjH,gEAAgE;QAChE,8BAA8B;QAC9B,qDAAqD;QACrD,8BAA8B;QAC9B,qDAAqD;QACrD,gHAAgH;QAChH,2EAA2E;IAC/E,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACG,qCAAO,GAAb;;;;;;6BACQ,CAAC,IAAI,CAAC,QAAQ,EAAd,wBAAc;wBACM,qBAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAA;;wBAApD,WAAW,GAAG,SAAsC;wBAE1D,KAAA,IAAI,CAAA;wBAAY,qBAAM,WAAW,CAAC,kBAAkB,EAAE,EAAA;;wBAAtD,GAAK,QAAQ,GAAG,SAAsC,CAAC;wBAEvD,qBAAM,WAAW,CAAC,OAAO,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;;;;KAEnC;IAED;;OAEG;IACH,0CAAY,GAAZ;QACI,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACG,wCAAU,GAAhB;;;;;;KACC;IAED;;OAEG;IACH,iDAAmB,GAAnB;QACI,OAAO,IAAI,uCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,+CAAiB,GAAjB,UAAkB,IAAqB;QAAvC,iBAUC;QATG,OAAO,IAAI,mDAAwB,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,UAAC,KAAa,EAAE,UAAkB,IAAK,OAAA,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,EAAlD,CAAkD,EACzF,IAAI,CAAC,OAAO,CAAC,oBAAoB,EACjC,IAAI,CAAC,OAAO,CAAC,aAAa,CAC7B,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,uDAAyB,GAAzB,UAA0B,GAAW,EAAE,UAAyB,EAAE,gBAA+B;QAAjG,iBA6BC;QA5BG,IAAM,iBAAiB,GAAU,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,gBAAgB,CAAC,GAAG,CAAC,EAArB,CAAqB,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;YAC9C,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAEpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,6BAA6B,EAAE,UAAC,IAAI,EAAE,OAAe,EAAE,GAAW;YAChF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACf;YAED,IAAI,KAAK,GAAQ,UAAU,CAAC,GAAG,CAAC,CAAC;YAEjC,IAAI,OAAO,EAAE;gBACT,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,CAAM;oBACpB,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,OAAO,KAAI,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAEjB;YAED,IAAI,KAAK,YAAY,QAAQ,EAAE;gBAC3B,OAAO,KAAK,EAAE,CAAC;aAElB;YAED,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO,KAAI,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC,CAAC,kEAAkE;QACtE,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oCAAM,GAAN,UAAO,UAAkB;QACrB,OAAO,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,4CAAc,GAAd,UAAe,SAAiB,EAAE,MAAe,EAAE,QAAiB;QAChE,IAAI,SAAS,GAAG,CAAE,SAAS,CAAE,CAAC;QAE9B,IAAI,QAAQ,EAAE;YACV,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,4CAAc,GAAd,UAAe,MAAgE;QAC3E,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,IAAM,YAAY,GAAG,SAAS,CAAC;QAE/B,IAAI,MAAM,YAAY,aAAK,IAAI,MAAM,YAAY,WAAI,EAAE;YACnD,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAEhD,OAAO;gBACH,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,cAAc;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,YAAY;gBACtD,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B,CAAC;SACL;QAED,IAAI,MAAM,YAAY,iCAAe,EAAE;YACnC,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAE/D,OAAO;gBACH,QAAQ,EAAE,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,QAAQ,IAAI,cAAc;gBACxE,MAAM,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,IAAI,YAAY;gBAChE,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B,CAAC;SACL;QAED,IAAI,MAAM,YAAY,+BAAc,EAAE;YAClC,2CAA2C;YAE3C,OAAO;gBACH,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,cAAc;gBAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,YAAY;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B,CAAC;SAEL;QAED,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhC,OAAO;YACH,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,cAAc;YACrE,MAAM,EAAE,YAAY;YACpB,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACpD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,oDAAsB,GAAtB,UAAuB,KAAU,EAAE,cAA8B;QAC7D,IAAI,cAAc,CAAC,WAAW;YAC1B,KAAK,GAAG,+CAAsB,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,KAAK,KAAK,EAAE;YACpF,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;SACpE;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YACrC,OAAO,KAAK,CAAC;QAEjB,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,EAAE;YACjC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAEjC;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,OAAO,qBAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAEjD;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,OAAO,qBAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAEjD;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAEhC;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,IAAI,cAAc,CAAC,IAAI,KAAK,IAAI,EAAE;YAClH,OAAO,qBAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAE3C;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE;YAChF,OAAO,qBAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAE/C;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE;YAC9C,OAAO,qBAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAE9C;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE;YAChF,OAAO,EAAE,GAAG,KAAK,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,kDAAoB,GAApB,UAAqB,KAAU,EAAE,cAA8B;QAC3D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YACrC,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,+CAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAExH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,KAAK,KAAK,EAAE;YACpF,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;SAClE;QAED,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,EAAE;YACxG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;SAEhC;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,IAAI,cAAc,CAAC,IAAI,KAAK,IAAI,EAAE;YAC3E,KAAK,GAAG,qBAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAElD;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,KAAK,GAAG,qBAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SAElD;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SAEjE;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE;YACvC,KAAK,GAAG,qBAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAE9C;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE;YAChF,KAAK,GAAG,qBAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAEhD;aAAM,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,EAAE;YAC9C,KAAK,GAAG,qBAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAE/C;aAAM,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC;eAC7E,cAAc,CAAC,IAAI;eACnB,CAAC,KAAK,CAAC,KAAK,CAAC;eACb,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;YACtD,4DAA4D;YAC5D,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,IAAI,cAAc,CAAC,WAAW;YAC1B,KAAK,GAAG,+CAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEpF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,2CAAa,GAAb,UAAc,MAA6F;QACvG,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;YACrD,OAAO,KAAK,CAAC;SAEhB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC/B,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;YAC7B,OAAO,UAAU,CAAC;SAErB;aAAM,IAAK,MAAM,CAAC,IAAY,KAAK,MAAM,EAAE;YACxC,OAAO,MAAM,CAAC;SAEjB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAChC,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YAC/B,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YACxE,OAAO,MAAM,CAAC;SAEjB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YACtC,OAAO,MAAM,CAAC;SAEjB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;YACrE,OAAO,QAAQ,CAAC;SAEnB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YACtF,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5D,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE;YACzE,OAAO,SAAS,CAAC;SAEpB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;YACnE,OAAO,MAAM,CAAC;SAEjB;aAAM;YACH,OAAO,MAAM,CAAC,IAAc,IAAI,EAAE,CAAC;SACtC;IACL,CAAC;IAED;;OAEG;IACH,8CAAgB,GAAhB,UAAiB,cAA8B;QAC3C,IAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC;QAE5C,IAAI,YAAY,KAAK,IAAI,EAAE;YACvB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,cAAc,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE;YACzG,OAAO,MAAI,YAAY,MAAG,CAAC;SAC9B;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE;YAC/D,OAAO,MAAI,qBAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAG,CAAC;SAC7D;QAED,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YAClC,OAAO,KAAG,YAAc,CAAC;SAC5B;QAED,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE;YACnC,OAAO,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SACnC;QAED,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;YACpC,OAAO,YAAY,EAAE,CAAC;SACzB;QAED,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;YAClC,OAAO,MAAI,YAAY,MAAG,CAAC;SAC9B;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,KAAG,YAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,+CAAiB,GAAjB,UAAkB,MAAsB;QACpC,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAArE,CAAqE,CAAC,CAAC;IAC5H,CAAC;IAED;;OAEG;IACH,6CAAe,GAAf,UAAgB,MAAkC;QAC9C,IAAI,MAAM,CAAC,MAAM;YACb,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEpC;;WAEG;QACH,IAAI,MAAM,CAAC,kBAAkB,KAAK,MAAM;YACpC,OAAO,IAAI,CAAC;QAEhB,QAAQ,MAAM,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,CAAC;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,kBAAkB;gBACnB,OAAO,KAAK,CAAC;YACjB,KAAK,WAAW;gBACZ,OAAO,KAAK,CAAC;YACjB;gBACI,OAAO,EAAE,CAAC;SACjB;IACL,CAAC;IAED;;OAEG;IACH,4CAAc,GAAd,UAAe,MAAmB;QAC9B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEvB,6HAA6H;QAC7H,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,IAAI,MAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAG,CAAC;SAE/C;aAAM,IAAI,MAAM,CAAC,KAAK,EAAE;YACrB,IAAI,IAAI,MAAI,MAAM,CAAC,KAAK,MAAG,CAAC;SAE/B;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC3H,IAAI,IAAI,MAAI,MAAM,CAAC,SAAS,SAAI,MAAM,CAAC,KAAK,MAAG,CAAC;SAEnD;aAAM,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;YACpE,IAAI,IAAI,MAAI,MAAM,CAAC,SAAS,MAAG,CAAC;SACnC;QAED,IAAI,MAAM,CAAC,OAAO;YACd,IAAI,IAAI,QAAQ,CAAC;QAErB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,oDAAsB,GAAtB;QAAA,iBAeC;QAdG,OAAO,IAAI,OAAO,CAAM,UAAC,EAAE,EAAE,IAAI;YAC7B,IAAI,KAAI,CAAC,WAAW,EAAE;gBAClB,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAC,GAAQ,EAAE,YAAiB;oBACjE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;aAEN;iBAAM,IAAI,KAAI,CAAC,IAAI,EAAE;gBAClB,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAC,GAAQ,EAAE,YAAiB;oBAChD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,IAAI,CAAC,IAAI,oBAAY,CAAC,mDAAmD,CAAC,CAAC,CAAC;aAC/E;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,mDAAqB,GAArB;QAAA,iBASC;QARG,IAAI,CAAC,IAAI,CAAC,WAAW;YACjB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAM,UAAC,EAAE,EAAE,IAAI;YAC7B,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAC,GAAQ,EAAE,YAAiB;gBACjE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,gDAAkB,GAAlB,UAAmB,QAAwB,EAAE,YAAiB,EAAE,WAAmB;QAC/E,IAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,eAAe;YACvE,IAAI,KAAU,CAAC;YACf,IAAI,eAAe,CAAC,kBAAkB,KAAK,WAAW,IAAI,YAAY,CAAC,QAAQ,EAAE;gBAC7E,qEAAqE;gBACrE,qEAAqE;gBACrE,KAAK,GAAG,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;gBAChD,8DAA8D;gBAC9D,sEAAsE;gBACtE,uDAAuD;aACtD;YAED,OAAO,mBAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC,EAAE,EAAmB,CAAC,CAAC;QAExB,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACH,gDAAkB,GAAlB,UAAmB,YAA2B,EAAE,eAAiC;QAAjF,iBAqDC;QApDG,OAAO,eAAe,CAAC,MAAM,CAAC,UAAA,cAAc;YACxC,IAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,EAAtC,CAAsC,CAAC,CAAC;YACnF,IAAI,CAAC,WAAW;gBACZ,OAAO,KAAK,CAAC,CAAC,4DAA4D;YAE9E,kEAAkE;YAClE,uEAAuE;YACvE,8EAA8E;YAC9E,qEAAqE;YACrE,kEAAkE;YAClE,8EAA8E;YAC9E,kEAAkE;YAClE,2EAA2E;YAC3E,2EAA2E;YAC3E,uFAAuF;YACvF,0FAA0F;YAC1F,4FAA4F;YAC5F,wEAAwE;YACxE,+DAA+D;YAC/D,2HAA2H;YAC3H,2EAA2E;YAC3E,8EAA8E;YAC9E,iFAAiF;YACjF,0FAA0F;YAC1F,oFAAoF;YACpF,yHAAyH;YACzH,6DAA6D;YAE7D,IAAI,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,oBAAoB,IAAI,cAAc,CAAC,kBAAkB,KAAK,MAAM,EAAE,EAAE,eAAe;gBACxF,oBAAoB,GAAG,KAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;aAC/D;YAED,OAAO,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY;mBAChD,WAAW,CAAC,IAAI,KAAK,KAAI,CAAC,aAAa,CAAC,cAAc,CAAC;mBACvD,WAAW,CAAC,MAAM,KAAK,oBAAoB;mBAC3C,WAAW,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK;mBAC1C,WAAW,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS;mBAClD,WAAW,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK;mBAC1C,WAAW,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ;mBAChD,WAAW,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ;mBAChD,WAAW,CAAC,YAAY,KAAK,cAAc,CAAC,YAAY;mBACxD,WAAW,CAAC,aAAa,KAAK,cAAc,CAAC,aAAa;mBAC1D,WAAW,CAAC,OAAO,KAAK,KAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;mBAClE,CAAC,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;mBACtF,CAAC,WAAW,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,IAAI,CAAC,mBAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,GAAG,EAAE,EAAR,CAAQ,CAAC,CAAC,CAAC;mBAChI,WAAW,CAAC,QAAQ,KAAK,cAAc,CAAC,QAAQ;mBAChD,WAAW,CAAC,SAAS,KAAK,cAAc,CAAC,SAAS;mBAClD,WAAW,CAAC,UAAU,KAAK,cAAc,CAAC,UAAU;mBACpD,WAAW,CAAC,QAAQ,KAAK,KAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;mBAC/D,CAAC,cAAc,CAAC,kBAAkB,KAAK,MAAM,IAAI,WAAW,CAAC,WAAW,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,qDAAuB,GAAvB;QACI,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,uDAAyB,GAAzB;QACI,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,2DAA6B,GAA7B;QACI,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,6CAAe,GAAf,UAAgB,aAAqB,EAAE,KAAa;QAChD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,8CAAgB,GAA1B;QACI,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,6BAAa,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAClG,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,qGAAqG;QACrG,4EAA4E;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC;IAC1E,CAAC;IAED;;OAEG;IACO,qDAAuB,GAAjC,UAAkC,OAAuC,EAAE,WAAsD;QAE7H,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,yBAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,yBAAyB;QAEpH,0CAA0C;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,EAAE;YACC,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,QAAQ;YAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACnB,EAED,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACa,wCAAU,GAA1B,UAA2B,iBAAsB;;;gBAC7C,sBAAO,EAAE,EAAC;;;KACb;IAED;;OAEG;IACK,iDAAmB,GAA3B,UAA4B,UAAe;QAC/B,IAAA,MAAM,GAAK,IAAI,CAAC,UAAU,OAApB,CAAqB;QACnC;;;WAGG;QACH,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAU,IAAK,OAAA,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,uCAAqC,KAAO,CAAC,EAAhE,CAAgE,CAAC,CAAC;SAC5G;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;OAEG;IACO,kDAAoB,GAA9B,UAA+B,mBAAuC,EAAE,aAAiC;QACrG,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YAC9E,qGAAqG;YACrG,0EAA0E;YAC1E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAClE,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACzD;QAED,OAAO,mBAAmB,KAAK,aAAa,CAAC;IACjD,CAAC;IAED;;OAEG;IACO,2CAAa,GAAvB,UAAwB,OAAgB;QACpC,IAAI,CAAC,OAAO;YAAG,OAAO,OAAO,CAAC;QAE9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,wCAAwC;QAElF,OAAO,OAAO,CAAC;IACnB,CAAC;IAEL,0BAAC;AAAD,CAl7BA,AAk7BC,IAAA;AAl7BY,kDAAmB","file":"AuroraDataApiDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {AuroraDataApiQueryRunner} from \"./AuroraDataApiQueryRunner\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {AuroraDataApiConnectionOptions} from \"./AuroraDataApiConnectionOptions\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {AuroraDataApiConnectionCredentialsOptions} from \"./AuroraDataApiConnectionCredentialsOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\nimport { TypeORMError } from \"../../error\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\n\n/**\n * Organizes communication with MySQL DBMS.\n */\nexport class AuroraDataApiDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n connection: Connection;\n /**\n * Aurora Data API underlying library.\n */\n DataApiDriver: any;\n\n client: any;\n\n /**\n * Connection pool.\n * Used in non-replication mode.\n */\n pool: any;\n\n /**\n * Pool cluster used in replication mode.\n */\n poolCluster: any;\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: AuroraDataApiConnectionOptions;\n\n /**\n * Database name used to perform all write queries.\n */\n database?: string;\n\n /**\n * Schema name used to performn all write queries.\n */\n schema?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Represent transaction support by this driver\n */\n transactionSupport = \"nested\" as const;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/mysql/mysql-data-types.htm\n * @see https://dev.mysql.com/doc/refman/8.0/en/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n // numeric types\n \"bit\",\n \"int\",\n \"integer\", // synonym for int\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"float\",\n \"double\",\n \"double precision\", // synonym for double\n \"real\", // synonym for double\n \"decimal\",\n \"dec\", // synonym for decimal\n \"numeric\", // synonym for decimal\n \"fixed\", // synonym for decimal\n \"bool\", // synonym for tinyint\n \"boolean\", // synonym for tinyint\n // date and time types\n \"date\",\n \"datetime\",\n \"timestamp\",\n \"time\",\n \"year\",\n // string types\n \"char\",\n \"nchar\", // synonym for national char\n \"national char\",\n \"varchar\",\n \"nvarchar\", // synonym for national varchar\n \"national varchar\",\n \"blob\",\n \"text\",\n \"tinyblob\",\n \"tinytext\",\n \"mediumblob\",\n \"mediumtext\",\n \"longblob\",\n \"longtext\",\n \"enum\",\n \"set\",\n \"binary\",\n \"varbinary\",\n // json data type\n \"json\",\n // spatial data types\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\"\n ];\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-duplicate-key-update\";\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\"\n ];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"char\",\n \"varchar\",\n \"nvarchar\",\n \"binary\",\n \"varbinary\"\n ];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withWidthColumnTypes: ColumnType[] = [\n \"bit\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"int\",\n \"integer\",\n \"bigint\"\n ];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n \"time\",\n \"datetime\",\n \"timestamp\"\n ];\n\n /**\n * Gets list of column data types that supports scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\"\n ];\n\n /**\n * Gets list of column data types that supports UNSIGNED and ZEROFILL attributes.\n */\n unsignedAndZerofillTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"smallint\",\n \"tinyint\",\n \"mediumint\",\n \"bigint\",\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\"\n ];\n\n /**\n * ORM has special columns and we need to know what database column types should be for those columns.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDatePrecision: 6,\n createDateDefault: \"CURRENT_TIMESTAMP(6)\",\n updateDate: \"datetime\",\n updateDatePrecision: 6,\n updateDateDefault: \"CURRENT_TIMESTAMP(6)\",\n deleteDate: \"datetime\",\n deleteDatePrecision: 6,\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults = {\n \"varchar\": { length: 255 },\n \"nvarchar\": { length: 255 },\n \"national varchar\": { length: 255 },\n \"char\": { length: 1 },\n \"binary\": { length: 1 },\n \"varbinary\": { length: 255 },\n \"decimal\": { precision: 10, scale: 0 },\n \"dec\": { precision: 10, scale: 0 },\n \"numeric\": { precision: 10, scale: 0 },\n \"fixed\": { precision: 10, scale: 0 },\n \"float\": { precision: 12 },\n \"double\": { precision: 22 },\n \"time\": { precision: 0 },\n \"datetime\": { precision: 0 },\n \"timestamp\": { precision: 0 },\n \"bit\": { width: 1 },\n \"int\": { width: 11 },\n \"integer\": { width: 11 },\n \"tinyint\": { width: 4 },\n \"smallint\": { width: 6 },\n \"mediumint\": { width: 9 },\n \"bigint\": { width: 20 }\n };\n\n\n /**\n * Max length allowed by MySQL for aliases.\n * @see https://dev.mysql.com/doc/refman/5.5/en/identifiers.html\n */\n maxAliasLength = 63;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as AuroraDataApiConnectionOptions;\n\n // load mysql package\n this.loadDependencies();\n\n this.client = new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n );\n\n this.database = DriverUtils.buildDriverOptions(this.options).database;\n\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!(this.options.host || (this.options.extra && this.options.extra.socketPath)) && !this.options.socketPath)\n // throw new DriverOptionNotSetError(\"socketPath and host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // todo: check what is going on when connection is setup without database and how to connect to a database then?\n // todo: provide options to auto-create a database if it does not exist yet\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n if (!this.database) {\n const queryRunner = await this.createQueryRunner(\"master\");\n\n this.database = await queryRunner.getCurrentDatabase();\n\n await queryRunner.release();\n }\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n afterConnect(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Closes connection with the database.\n */\n async disconnect(): Promise<void> {\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new AuroraDataApiQueryRunner(this, new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) => this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n ));\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters];\n\n sql = sql.replace(/:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g, (full, isArray: string, key: string): string => {\n if (!parameters.hasOwnProperty(key)) {\n return full;\n }\n\n let value: any = parameters[key];\n\n if (isArray) {\n return value.map((v: any) => {\n escapedParameters.push(v);\n return this.createParameter(key, escapedParameters.length - 1);\n }).join(\", \");\n\n }\n\n if (value instanceof Function) {\n return value();\n\n }\n\n escapedParameters.push(value);\n return this.createParameter(key, escapedParameters.length - 1);\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, escapedParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"`\" + columnName + \"`\";\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n */\n buildTableName(tableName: string, schema?: string, database?: string): string {\n let tablePath = [ tableName ];\n\n if (database) {\n tablePath.unshift(database);\n }\n\n return tablePath.join(\".\");\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(target: EntityMetadata | Table | View | TableForeignKey | string): { database?: string, schema?: string, tableName: string } {\n const driverDatabase = this.database;\n const driverSchema = undefined;\n\n if (target instanceof Table || target instanceof View) {\n const parsed = this.parseTableName(target.name);\n\n return {\n database: target.database || parsed.database || driverDatabase,\n schema: target.schema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof TableForeignKey) {\n const parsed = this.parseTableName(target.referencedTableName);\n\n return {\n database: target.referencedDatabase || parsed.database || driverDatabase,\n schema: target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof EntityMetadata) {\n // EntityMetadata tableName is never a path\n\n return {\n database: target.database || driverDatabase,\n schema: target.schema || driverSchema,\n tableName: target.tableName\n };\n\n }\n\n const parts = target.split(\".\");\n\n return {\n database: (parts.length > 1 ? parts[0] : undefined) || driverDatabase,\n schema: driverSchema,\n tableName: parts.length > 1 ? parts[1] : parts[0]\n };\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (!this.options.formatOptions || this.options.formatOptions.castParameters !== false) {\n return this.client.preparePersistentValue(value, columnMetadata);\n }\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"json\") {\n return JSON.stringify(value);\n\n } else if (columnMetadata.type === \"timestamp\" || columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n return DateUtils.mixedDateToDate(value);\n\n } else if (columnMetadata.type === \"simple-array\" || columnMetadata.type === \"set\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n\n } else if (columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") {\n return \"\" + value;\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n if (!this.options.formatOptions || this.options.formatOptions.castParameters !== false) {\n return this.client.prepareHydratedValue(value, columnMetadata);\n }\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"bool\" || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"json\") {\n value = typeof value === \"string\" ? JSON.parse(value) : value;\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\" || columnMetadata.type === \"set\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n } else if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\")\n && columnMetadata.enum\n && !isNaN(value)\n && columnMetadata.enum.indexOf(parseInt(value)) >= 0) {\n // convert to number if that exists in possible enum options\n value = parseInt(value);\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type: ColumnType, length?: number|string, precision?: number|null, scale?: number }): string {\n if (column.type === Number || column.type === \"integer\") {\n return \"int\";\n\n } else if (column.type === String) {\n return \"varchar\";\n\n } else if (column.type === Date) {\n return \"datetime\";\n\n } else if ((column.type as any) === Buffer) {\n return \"blob\";\n\n } else if (column.type === Boolean) {\n return \"tinyint\";\n\n } else if (column.type === \"uuid\") {\n return \"varchar\";\n\n } else if (column.type === \"simple-array\" || column.type === \"simple-json\") {\n return \"text\";\n\n } else if (column.type === \"simple-enum\") {\n return \"enum\";\n\n } else if (column.type === \"double precision\" || column.type === \"real\") {\n return \"double\";\n\n } else if (column.type === \"dec\" || column.type === \"numeric\" || column.type === \"fixed\") {\n return \"decimal\";\n\n } else if (column.type === \"bool\" || column.type === \"boolean\") {\n return \"tinyint\";\n\n } else if (column.type === \"nvarchar\" || column.type === \"national varchar\") {\n return \"varchar\";\n\n } else if (column.type === \"nchar\" || column.type === \"national char\") {\n return \"char\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n const defaultValue = columnMetadata.default;\n\n if (defaultValue === null) {\n return undefined;\n }\n\n if ((columnMetadata.type === \"enum\" || columnMetadata.type === \"simple-enum\") && defaultValue !== undefined) {\n return `'${defaultValue}'`;\n }\n\n if ((columnMetadata.type === \"set\") && defaultValue !== undefined) {\n return `'${DateUtils.simpleArrayToString(defaultValue)}'`;\n }\n\n if (typeof defaultValue === \"number\") {\n return `${defaultValue}`;\n }\n\n if (typeof defaultValue === \"boolean\") {\n return defaultValue ? \"1\" : \"0\";\n }\n\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'`;\n }\n\n if (defaultValue === undefined) {\n return undefined;\n }\n\n return `${defaultValue}`;\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.indices.some(idx => idx.isUnique && idx.columns.length === 1 && idx.columns[0] === column);\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata|TableColumn): string {\n if (column.length)\n return column.length.toString();\n\n /**\n * fix https://github.com/typeorm/typeorm/issues/1139\n */\n if (column.generationStrategy === \"uuid\")\n return \"36\";\n\n switch (column.type) {\n case String:\n case \"varchar\":\n case \"nvarchar\":\n case \"national varchar\":\n return \"255\";\n case \"varbinary\":\n return \"255\";\n default:\n return \"\";\n }\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n\n // used 'getColumnLength()' method, because MySQL requires column length for `varchar`, `nvarchar` and `varbinary` data types\n if (this.getColumnLength(column)) {\n type += `(${this.getColumnLength(column)})`;\n\n } else if (column.width) {\n type += `(${column.width})`;\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += `(${column.precision},${column.scale})`;\n\n } else if (column.precision !== null && column.precision !== undefined) {\n type += `(${column.precision})`;\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return new Promise<any>((ok, fail) => {\n if (this.poolCluster) {\n this.poolCluster.getConnection(\"MASTER\", (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n\n } else if (this.pool) {\n this.pool.getConnection((err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n } else {\n fail(new TypeORMError(`Connection is not established with mysql database`));\n }\n });\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n if (!this.poolCluster)\n return this.obtainMasterConnection();\n\n return new Promise<any>((ok, fail) => {\n this.poolCluster.getConnection(\"SLAVE*\", (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection));\n });\n });\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number) {\n const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {\n let value: any;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult.insertId) {\n // NOTE: When multiple rows is inserted by a single INSERT statement,\n // `insertId` is the value generated for the first inserted row only.\n value = insertResult.insertId + entityIndex;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // console.log(\"getting db value:\", generatedColumn.databaseName);\n // value = generatedColumn.getEntityValue(uuidMap);\n }\n\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"zerofill:\", tableColumn.zerofill, columnMetadata.zerofill);\n // console.log(\"unsigned:\", tableColumn.unsigned, columnMetadata.unsigned);\n // console.log(\"asExpression:\", tableColumn.asExpression, columnMetadata.asExpression);\n // console.log(\"generatedType:\", tableColumn.generatedType, columnMetadata.generatedType);\n // console.log(\"comment:\", tableColumn.comment, this.escapeComment(columnMetadata.comment));\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"enum:\", tableColumn.enum, columnMetadata.enum);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"onUpdate:\", tableColumn.onUpdate, columnMetadata.onUpdate);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log((columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated));\n // console.log(\"==========================================\");\n\n let columnMetadataLength = columnMetadata.length;\n if (!columnMetadataLength && columnMetadata.generationStrategy === \"uuid\") { // fixing #3374\n columnMetadataLength = this.getColumnLength(columnMetadata);\n }\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadataLength\n || tableColumn.width !== columnMetadata.width\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n || tableColumn.zerofill !== columnMetadata.zerofill\n || tableColumn.unsigned !== columnMetadata.unsigned\n || tableColumn.asExpression !== columnMetadata.asExpression\n || tableColumn.generatedType !== columnMetadata.generatedType\n || tableColumn.comment !== this.escapeComment(columnMetadata.comment)\n || !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default)\n || (tableColumn.enum && columnMetadata.enum && !OrmUtils.isArraysEqual(tableColumn.enum, columnMetadata.enum.map(val => val + \"\")))\n || tableColumn.onUpdate !== columnMetadata.onUpdate\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return true;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"?\";\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): void {\n const DataApiDriver = this.options.driver || PlatformTools.load(\"typeorm-aurora-data-api-driver\");\n this.DataApiDriver = DataApiDriver;\n\n // Driver uses rollup for publishing, which has issues when using typeorm in combination with webpack\n // See https://github.com/webpack/webpack/issues/4742#issuecomment-295556787\n this.DataApiDriver = this.DataApiDriver.default || this.DataApiDriver;\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected createConnectionOptions(options: AuroraDataApiConnectionOptions, credentials: AuroraDataApiConnectionCredentialsOptions): Promise<any> {\n\n credentials = Object.assign({}, credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n // build connection options for the driver\n return Object.assign({}, {\n resourceArn: options.resourceArn,\n secretArn: options.secretArn,\n database: options.database,\n region: options.region,\n type: options.type,\n }, {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: options.ssl\n },\n\n options.extra || {});\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(connectionOptions: any): Promise<any> {\n return {};\n }\n\n /**\n * Attaches all required base handlers to a database connection, such as the unhandled error handler.\n */\n private prepareDbConnection(connection: any): any {\n const { logger } = this.connection;\n /**\n * Attaching an error handler to connection errors is essential, as, otherwise, errors raised will go unhandled and\n * cause the hosting app to crash.\n */\n if (connection.listeners(\"error\").length === 0) {\n connection.on(\"error\", (error: any) => logger.log(\"warn\", `MySQL connection raised an error. ${error}`));\n }\n return connection;\n }\n\n /**\n * Checks if \"DEFAULT\" values in the column metadata and in the database are equal.\n */\n protected compareDefaultValues(columnMetadataValue: string | undefined, databaseValue: string | undefined): boolean {\n if (typeof columnMetadataValue === \"string\" && typeof databaseValue === \"string\") {\n // we need to cut out \"'\" because in mysql we can understand returned value is a string or a function\n // as result compare cannot understand if default is really changed or not\n columnMetadataValue = columnMetadataValue.replace(/^'+|'+$/g, \"\");\n databaseValue = databaseValue.replace(/^'+|'+$/g, \"\");\n }\n\n return columnMetadataValue === databaseValue;\n }\n\n /**\n * Escapes a given comment.\n */\n protected escapeComment(comment?: string) {\n if (!comment) return comment;\n\n comment = comment.replace(/\\u0000/g, \"\"); // Null bytes aren't allowed in comments\n\n return comment;\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AuroraDataApiQueryRunner = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var QueryResult_1 = require("../../query-runner/QueryResult");
|
|
6
|
-
var TransactionAlreadyStartedError_1 = require("../../error/TransactionAlreadyStartedError");
|
|
7
6
|
var TransactionNotStartedError_1 = require("../../error/TransactionNotStartedError");
|
|
8
7
|
var TableColumn_1 = require("../../schema-builder/table/TableColumn");
|
|
9
8
|
var Table_1 = require("../../schema-builder/table/Table");
|
|
@@ -63,20 +62,36 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
63
62
|
*/
|
|
64
63
|
AuroraDataApiQueryRunner.prototype.startTransaction = function (isolationLevel) {
|
|
65
64
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
65
|
+
var err_1;
|
|
66
66
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
67
67
|
switch (_a.label) {
|
|
68
68
|
case 0:
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return [4 /*yield*/, this.broadcaster.broadcast('BeforeTransactionStart')];
|
|
69
|
+
this.isTransactionActive = true;
|
|
70
|
+
_a.label = 1;
|
|
72
71
|
case 1:
|
|
72
|
+
_a.trys.push([1, 3, , 4]);
|
|
73
|
+
return [4 /*yield*/, this.broadcaster.broadcast('BeforeTransactionStart')];
|
|
74
|
+
case 2:
|
|
73
75
|
_a.sent();
|
|
74
|
-
|
|
76
|
+
return [3 /*break*/, 4];
|
|
77
|
+
case 3:
|
|
78
|
+
err_1 = _a.sent();
|
|
79
|
+
this.isTransactionActive = false;
|
|
80
|
+
throw err_1;
|
|
81
|
+
case 4:
|
|
82
|
+
if (!(this.transactionDepth === 0)) return [3 /*break*/, 6];
|
|
75
83
|
return [4 /*yield*/, this.client.startTransaction()];
|
|
76
|
-
case
|
|
84
|
+
case 5:
|
|
85
|
+
_a.sent();
|
|
86
|
+
return [3 /*break*/, 8];
|
|
87
|
+
case 6: return [4 /*yield*/, this.query("SAVEPOINT typeorm_" + this.transactionDepth)];
|
|
88
|
+
case 7:
|
|
77
89
|
_a.sent();
|
|
90
|
+
_a.label = 8;
|
|
91
|
+
case 8:
|
|
92
|
+
this.transactionDepth += 1;
|
|
78
93
|
return [4 /*yield*/, this.broadcaster.broadcast('AfterTransactionStart')];
|
|
79
|
-
case
|
|
94
|
+
case 9:
|
|
80
95
|
_a.sent();
|
|
81
96
|
return [2 /*return*/];
|
|
82
97
|
}
|
|
@@ -97,12 +112,20 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
97
112
|
return [4 /*yield*/, this.broadcaster.broadcast('BeforeTransactionCommit')];
|
|
98
113
|
case 1:
|
|
99
114
|
_a.sent();
|
|
100
|
-
return [
|
|
115
|
+
if (!(this.transactionDepth > 1)) return [3 /*break*/, 3];
|
|
116
|
+
return [4 /*yield*/, this.query("RELEASE SAVEPOINT typeorm_" + (this.transactionDepth - 1))];
|
|
101
117
|
case 2:
|
|
118
|
+
_a.sent();
|
|
119
|
+
return [3 /*break*/, 5];
|
|
120
|
+
case 3: return [4 /*yield*/, this.client.commitTransaction()];
|
|
121
|
+
case 4:
|
|
102
122
|
_a.sent();
|
|
103
123
|
this.isTransactionActive = false;
|
|
124
|
+
_a.label = 5;
|
|
125
|
+
case 5:
|
|
126
|
+
this.transactionDepth -= 1;
|
|
104
127
|
return [4 /*yield*/, this.broadcaster.broadcast('AfterTransactionCommit')];
|
|
105
|
-
case
|
|
128
|
+
case 6:
|
|
106
129
|
_a.sent();
|
|
107
130
|
return [2 /*return*/];
|
|
108
131
|
}
|
|
@@ -123,12 +146,20 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
123
146
|
return [4 /*yield*/, this.broadcaster.broadcast('BeforeTransactionRollback')];
|
|
124
147
|
case 1:
|
|
125
148
|
_a.sent();
|
|
126
|
-
return [
|
|
149
|
+
if (!(this.transactionDepth > 1)) return [3 /*break*/, 3];
|
|
150
|
+
return [4 /*yield*/, this.query("ROLLBACK TO SAVEPOINT typeorm_" + (this.transactionDepth - 1))];
|
|
127
151
|
case 2:
|
|
152
|
+
_a.sent();
|
|
153
|
+
return [3 /*break*/, 5];
|
|
154
|
+
case 3: return [4 /*yield*/, this.client.rollbackTransaction()];
|
|
155
|
+
case 4:
|
|
128
156
|
_a.sent();
|
|
129
157
|
this.isTransactionActive = false;
|
|
158
|
+
_a.label = 5;
|
|
159
|
+
case 5:
|
|
160
|
+
this.transactionDepth -= 1;
|
|
130
161
|
return [4 /*yield*/, this.broadcaster.broadcast('AfterTransactionRollback')];
|
|
131
|
-
case
|
|
162
|
+
case 6:
|
|
132
163
|
_a.sent();
|
|
133
164
|
return [2 /*return*/];
|
|
134
165
|
}
|
|
@@ -174,7 +205,7 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
174
205
|
if (this.isReleased)
|
|
175
206
|
throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
|
|
176
207
|
return new Promise(function (ok, fail) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
177
|
-
var databaseConnection, stream,
|
|
208
|
+
var databaseConnection, stream, err_2;
|
|
178
209
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
179
210
|
switch (_a.label) {
|
|
180
211
|
case 0:
|
|
@@ -190,8 +221,8 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
190
221
|
ok(stream);
|
|
191
222
|
return [3 /*break*/, 3];
|
|
192
223
|
case 2:
|
|
193
|
-
|
|
194
|
-
fail(
|
|
224
|
+
err_2 = _a.sent();
|
|
225
|
+
fail(err_2);
|
|
195
226
|
return [3 /*break*/, 3];
|
|
196
227
|
case 3: return [2 /*return*/];
|
|
197
228
|
}
|
|
@@ -1566,7 +1597,7 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
1566
1597
|
*/
|
|
1567
1598
|
AuroraDataApiQueryRunner.prototype.clearDatabase = function (database) {
|
|
1568
1599
|
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
|
|
1569
|
-
var dbName, isDatabaseExist, selectViewDropsQuery, dropViewQueries, disableForeignKeysCheckQuery, dropTablesQuery, enableForeignKeysCheckQuery, dropQueries, error_2, rollbackError_1;
|
|
1600
|
+
var dbName, isDatabaseExist, isAnotherTransactionActive, selectViewDropsQuery, dropViewQueries, disableForeignKeysCheckQuery, dropTablesQuery, enableForeignKeysCheckQuery, dropQueries, error_2, rollbackError_1;
|
|
1570
1601
|
var _this = this;
|
|
1571
1602
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
1572
1603
|
switch (_a.label) {
|
|
@@ -1580,12 +1611,15 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
1580
1611
|
return [2 /*return*/, Promise.resolve()];
|
|
1581
1612
|
return [3 /*break*/, 3];
|
|
1582
1613
|
case 2: throw new error_1.TypeORMError("Can not clear database. No database is specified");
|
|
1583
|
-
case 3:
|
|
1614
|
+
case 3:
|
|
1615
|
+
isAnotherTransactionActive = this.isTransactionActive;
|
|
1616
|
+
if (!!isAnotherTransactionActive) return [3 /*break*/, 5];
|
|
1617
|
+
return [4 /*yield*/, this.startTransaction()];
|
|
1584
1618
|
case 4:
|
|
1585
1619
|
_a.sent();
|
|
1586
1620
|
_a.label = 5;
|
|
1587
1621
|
case 5:
|
|
1588
|
-
_a.trys.push([5,
|
|
1622
|
+
_a.trys.push([5, 14, , 20]);
|
|
1589
1623
|
selectViewDropsQuery = "SELECT concat('DROP VIEW IF EXISTS `', table_schema, '`.`', table_name, '`') AS `query` FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = '" + dbName + "'";
|
|
1590
1624
|
return [4 /*yield*/, this.query(selectViewDropsQuery)];
|
|
1591
1625
|
case 6:
|
|
@@ -1608,24 +1642,28 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
|
|
|
1608
1642
|
return [4 /*yield*/, this.query(enableForeignKeysCheckQuery)];
|
|
1609
1643
|
case 11:
|
|
1610
1644
|
_a.sent();
|
|
1645
|
+
if (!!isAnotherTransactionActive) return [3 /*break*/, 13];
|
|
1611
1646
|
return [4 /*yield*/, this.commitTransaction()];
|
|
1612
1647
|
case 12:
|
|
1613
1648
|
_a.sent();
|
|
1614
|
-
|
|
1615
|
-
case 13:
|
|
1616
|
-
error_2 = _a.sent();
|
|
1617
|
-
_a.label = 14;
|
|
1649
|
+
_a.label = 13;
|
|
1650
|
+
case 13: return [3 /*break*/, 20];
|
|
1618
1651
|
case 14:
|
|
1619
|
-
_a.
|
|
1620
|
-
|
|
1652
|
+
error_2 = _a.sent();
|
|
1653
|
+
_a.label = 15;
|
|
1621
1654
|
case 15:
|
|
1622
|
-
_a.
|
|
1623
|
-
return [3 /*break*/, 17];
|
|
1655
|
+
_a.trys.push([15, 18, , 19]);
|
|
1656
|
+
if (!!isAnotherTransactionActive) return [3 /*break*/, 17];
|
|
1657
|
+
return [4 /*yield*/, this.rollbackTransaction()];
|
|
1624
1658
|
case 16:
|
|
1659
|
+
_a.sent();
|
|
1660
|
+
_a.label = 17;
|
|
1661
|
+
case 17: return [3 /*break*/, 19];
|
|
1662
|
+
case 18:
|
|
1625
1663
|
rollbackError_1 = _a.sent();
|
|
1626
|
-
return [3 /*break*/,
|
|
1627
|
-
case
|
|
1628
|
-
case
|
|
1664
|
+
return [3 /*break*/, 19];
|
|
1665
|
+
case 19: throw error_2;
|
|
1666
|
+
case 20: return [2 /*return*/];
|
|
1629
1667
|
}
|
|
1630
1668
|
});
|
|
1631
1669
|
});
|