typeorm 0.3.26-dev.f351757 → 0.3.27-dev.4d204ad
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1110
- package/browser/cache/RedisQueryResultCache.d.ts +13 -0
- package/browser/cache/RedisQueryResultCache.js +105 -38
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +6 -0
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +2 -2
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +9 -9
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +3 -1
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +2 -2
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +10 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.js +1 -2
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.js +7 -3
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/repository/SaveOptions.d.ts +1 -1
- package/browser/repository/SaveOptions.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +13 -0
- package/cache/RedisQueryResultCache.js +105 -38
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +6 -0
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +2 -2
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +9 -9
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +3 -1
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +2 -2
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +1 -1
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +10 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +3 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/DriverPackageNotInstalledError.js +1 -2
- package/error/DriverPackageNotInstalledError.js.map +1 -1
- package/package.json +1 -1
- package/repository/SaveOptions.d.ts +1 -1
- package/repository/SaveOptions.js.map +1 -1
|
@@ -35,6 +35,10 @@ export interface EntitySchemaColumnOptions extends SpatialColumnOptions {
|
|
|
35
35
|
* Indicates if this column is a treeLevel column.
|
|
36
36
|
*/
|
|
37
37
|
treeLevel?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Indicates if this column is a virtualProperty column.
|
|
40
|
+
*/
|
|
41
|
+
virtualProperty?: boolean;
|
|
38
42
|
/**
|
|
39
43
|
* Column type. Must be one of the value from the ColumnTypes class.
|
|
40
44
|
*/
|
|
@@ -176,4 +180,10 @@ export interface EntitySchemaColumnOptions extends SpatialColumnOptions {
|
|
|
176
180
|
* Foreign key options of this column.
|
|
177
181
|
*/
|
|
178
182
|
foreignKey?: EntitySchemaColumnForeignKeyOptions;
|
|
183
|
+
/**
|
|
184
|
+
* Query to be used to populate the column data. This query is used when generating the relational db script.
|
|
185
|
+
* The query function is called with the current entities alias either defined by the Entity Decorator or automatically
|
|
186
|
+
* @See https://typeorm.io/decorator-reference#virtualcolumn for more details.
|
|
187
|
+
*/
|
|
188
|
+
query?: (alias: string) => string;
|
|
179
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/entity-schema/EntitySchemaColumnOptions.ts"],"names":[],"mappings":"","file":"EntitySchemaColumnOptions.js","sourcesContent":["import { ColumnType } from \"../driver/types/ColumnTypes\"\nimport { ValueTransformer } from \"../decorator/options/ValueTransformer\"\nimport { SpatialColumnOptions } from \"../decorator/options/SpatialColumnOptions\"\nimport { EntitySchemaColumnForeignKeyOptions } from \"./EntitySchemaColumnForeignKeyOptions\"\n\nexport interface EntitySchemaColumnOptions extends SpatialColumnOptions {\n /**\n * Indicates if this column is a primary column.\n */\n primary?: boolean\n\n /**\n * Indicates if this column is of type ObjectId\n */\n objectId?: boolean\n\n /**\n * Indicates if this column is a created date column.\n */\n createDate?: boolean\n\n /**\n * Indicates if this column is an update date column.\n */\n updateDate?: boolean\n\n /**\n * Indicates if this column is a delete date column.\n */\n deleteDate?: boolean\n\n /**\n * Indicates if this column is a version column.\n */\n version?: boolean\n\n /**\n * Indicates if this column is a treeChildrenCount column.\n */\n treeChildrenCount?: boolean\n\n /**\n * Indicates if this column is a treeLevel column.\n */\n treeLevel?: boolean\n\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type: ColumnType\n\n /**\n * Column name in the database.\n */\n name?: string\n\n /**\n * Column type's length. For example type = \"string\" and length = 100 means that ORM will create a column with\n * type varchar(100).\n */\n length?: string | number\n\n /**\n * Column type's display width. Used only on some column types in MySQL.\n * For example, INT(4) specifies an INT with a display width of four digits.\n */\n width?: number\n\n /**\n * Indicates if column's value can be set to NULL.\n */\n nullable?: boolean\n\n /**\n * Indicates if column value is not updated by \"save\" operation.\n * It means you'll be able to write this value only when you first time insert the object.\n * Default value is \"false\".\n *\n * @deprecated Please use the `update` option instead. Careful, it takes\n * the opposite value to readonly.\n *\n */\n readonly?: boolean\n\n /**\n * Indicates if column value is updated by \"save\" operation.\n * If false you'll be able to write this value only when you first time insert the object.\n * Default value is \"true\".\n */\n update?: boolean\n\n /**\n * Indicates if column is always selected by QueryBuilder and find operations.\n * Default value is \"true\".\n */\n select?: boolean\n\n /**\n * Indicates if column is inserted by default.\n * Default value is \"true\".\n */\n insert?: boolean\n\n /**\n * Specifies if this column will use AUTO_INCREMENT or not (e.g. generated number).\n */\n generated?: true | \"increment\" | \"uuid\" | \"rowid\"\n\n /**\n * Specifies if column's value must be unique or not.\n */\n unique?: boolean\n\n /**\n * Extra column definition. Should be used only in emergency situations. Note that if you'll use this property\n * auto schema generation will not work properly anymore. Avoid using it.\n */\n columnDefinition?: string\n\n /**\n * Column comment.\n */\n comment?: string\n\n /**\n * Default database value.\n */\n default?: any\n\n /**\n * ON UPDATE trigger. Works only for MySQL.\n */\n onUpdate?: string\n\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n zerofill?: boolean\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n unsigned?: boolean\n\n /**\n * Defines a column character set.\n * Not supported by all database types.\n */\n charset?: string\n\n /**\n * Defines a column collation.\n */\n collation?: string\n\n /**\n * Array of possible enumerated values.\n */\n enum?: any[] | Object\n\n /**\n * Exact name of enum\n */\n enumName?: string\n\n /**\n * Generated column expression.\n */\n asExpression?: string\n\n /**\n * Generated column type.\n */\n generatedType?: \"VIRTUAL\" | \"STORED\"\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\" | \"string\"\n\n /**\n * Indicates if this column is an array.\n * Can be simply set to true or array length can be specified.\n * Supported only by postgres.\n */\n array?: boolean\n\n /**\n * Specifies a value transformer that is to be used to (un)marshal\n * this column when reading or writing to the database.\n */\n transformer?: ValueTransformer | ValueTransformer[]\n\n /**\n * Name of the primary key constraint.\n */\n primaryKeyConstraintName?: string\n\n /**\n * Foreign key options of this column.\n */\n foreignKey?: EntitySchemaColumnForeignKeyOptions\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/entity-schema/EntitySchemaColumnOptions.ts"],"names":[],"mappings":"","file":"EntitySchemaColumnOptions.js","sourcesContent":["import { ColumnType } from \"../driver/types/ColumnTypes\"\nimport { ValueTransformer } from \"../decorator/options/ValueTransformer\"\nimport { SpatialColumnOptions } from \"../decorator/options/SpatialColumnOptions\"\nimport { EntitySchemaColumnForeignKeyOptions } from \"./EntitySchemaColumnForeignKeyOptions\"\n\nexport interface EntitySchemaColumnOptions extends SpatialColumnOptions {\n /**\n * Indicates if this column is a primary column.\n */\n primary?: boolean\n\n /**\n * Indicates if this column is of type ObjectId\n */\n objectId?: boolean\n\n /**\n * Indicates if this column is a created date column.\n */\n createDate?: boolean\n\n /**\n * Indicates if this column is an update date column.\n */\n updateDate?: boolean\n\n /**\n * Indicates if this column is a delete date column.\n */\n deleteDate?: boolean\n\n /**\n * Indicates if this column is a version column.\n */\n version?: boolean\n\n /**\n * Indicates if this column is a treeChildrenCount column.\n */\n treeChildrenCount?: boolean\n\n /**\n * Indicates if this column is a treeLevel column.\n */\n treeLevel?: boolean\n\n /**\n * Indicates if this column is a virtualProperty column.\n */\n virtualProperty?: boolean\n\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type: ColumnType\n\n /**\n * Column name in the database.\n */\n name?: string\n\n /**\n * Column type's length. For example type = \"string\" and length = 100 means that ORM will create a column with\n * type varchar(100).\n */\n length?: string | number\n\n /**\n * Column type's display width. Used only on some column types in MySQL.\n * For example, INT(4) specifies an INT with a display width of four digits.\n */\n width?: number\n\n /**\n * Indicates if column's value can be set to NULL.\n */\n nullable?: boolean\n\n /**\n * Indicates if column value is not updated by \"save\" operation.\n * It means you'll be able to write this value only when you first time insert the object.\n * Default value is \"false\".\n *\n * @deprecated Please use the `update` option instead. Careful, it takes\n * the opposite value to readonly.\n *\n */\n readonly?: boolean\n\n /**\n * Indicates if column value is updated by \"save\" operation.\n * If false you'll be able to write this value only when you first time insert the object.\n * Default value is \"true\".\n */\n update?: boolean\n\n /**\n * Indicates if column is always selected by QueryBuilder and find operations.\n * Default value is \"true\".\n */\n select?: boolean\n\n /**\n * Indicates if column is inserted by default.\n * Default value is \"true\".\n */\n insert?: boolean\n\n /**\n * Specifies if this column will use AUTO_INCREMENT or not (e.g. generated number).\n */\n generated?: true | \"increment\" | \"uuid\" | \"rowid\"\n\n /**\n * Specifies if column's value must be unique or not.\n */\n unique?: boolean\n\n /**\n * Extra column definition. Should be used only in emergency situations. Note that if you'll use this property\n * auto schema generation will not work properly anymore. Avoid using it.\n */\n columnDefinition?: string\n\n /**\n * Column comment.\n */\n comment?: string\n\n /**\n * Default database value.\n */\n default?: any\n\n /**\n * ON UPDATE trigger. Works only for MySQL.\n */\n onUpdate?: string\n\n /**\n * The precision for a decimal (exact numeric) column (applies only for decimal column), which is the maximum\n * number of digits that are stored for the values.\n */\n precision?: number\n\n /**\n * The scale for a decimal (exact numeric) column (applies only for decimal column), which represents the number\n * of digits to the right of the decimal point and must not be greater than precision.\n */\n scale?: number\n\n /**\n * Puts ZEROFILL attribute on to numeric column. Works only for MySQL.\n * If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column\n */\n zerofill?: boolean\n\n /**\n * Puts UNSIGNED attribute on to numeric column. Works only for MySQL.\n */\n unsigned?: boolean\n\n /**\n * Defines a column character set.\n * Not supported by all database types.\n */\n charset?: string\n\n /**\n * Defines a column collation.\n */\n collation?: string\n\n /**\n * Array of possible enumerated values.\n */\n enum?: any[] | Object\n\n /**\n * Exact name of enum\n */\n enumName?: string\n\n /**\n * Generated column expression.\n */\n asExpression?: string\n\n /**\n * Generated column type.\n */\n generatedType?: \"VIRTUAL\" | \"STORED\"\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\" | \"string\"\n\n /**\n * Indicates if this column is an array.\n * Can be simply set to true or array length can be specified.\n * Supported only by postgres.\n */\n array?: boolean\n\n /**\n * Specifies a value transformer that is to be used to (un)marshal\n * this column when reading or writing to the database.\n */\n transformer?: ValueTransformer | ValueTransformer[]\n\n /**\n * Name of the primary key constraint.\n */\n primaryKeyConstraintName?: string\n\n /**\n * Foreign key options of this column.\n */\n foreignKey?: EntitySchemaColumnForeignKeyOptions\n\n /**\n * Query to be used to populate the column data. This query is used when generating the relational db script.\n * The query function is called with the current entities alias either defined by the Entity Decorator or automatically\n * @See https://typeorm.io/decorator-reference#virtualcolumn for more details.\n */\n query?: (alias: string) => string\n}\n"],"sourceRoot":".."}
|
|
@@ -71,6 +71,8 @@ export class EntitySchemaTransformer {
|
|
|
71
71
|
mode = "treeLevel";
|
|
72
72
|
if (regularColumn.objectId)
|
|
73
73
|
mode = "objectId";
|
|
74
|
+
if (regularColumn.virtualProperty)
|
|
75
|
+
mode = "virtual-property";
|
|
74
76
|
const columnArgs = {
|
|
75
77
|
target: options.target || options.name,
|
|
76
78
|
mode: mode,
|
|
@@ -106,6 +108,7 @@ export class EntitySchemaTransformer {
|
|
|
106
108
|
transformer: regularColumn.transformer,
|
|
107
109
|
spatialFeatureType: regularColumn.spatialFeatureType,
|
|
108
110
|
srid: regularColumn.srid,
|
|
111
|
+
query: regularColumn.query,
|
|
109
112
|
},
|
|
110
113
|
};
|
|
111
114
|
metadataArgsStorage.columns.push(columnArgs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/entity-schema/EntitySchemaTransformer.ts"],"names":[],"mappings":"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","file":"EntitySchemaTransformer.js","sourcesContent":["import { EntitySchema } from \"./EntitySchema\"\nimport { MetadataArgsStorage } from \"../metadata-args/MetadataArgsStorage\"\nimport { TableMetadataArgs } from \"../metadata-args/TableMetadataArgs\"\nimport { ColumnMetadataArgs } from \"../metadata-args/ColumnMetadataArgs\"\nimport { IndexMetadataArgs } from \"../metadata-args/IndexMetadataArgs\"\nimport { RelationMetadataArgs } from \"../metadata-args/RelationMetadataArgs\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { JoinTableMetadataArgs } from \"../metadata-args/JoinTableMetadataArgs\"\nimport { JoinTableOptions } from \"../decorator/options/JoinTableOptions\"\nimport { JoinTableMultipleColumnsOptions } from \"../decorator/options/JoinTableMultipleColumnsOptions\"\nimport { ColumnMode } from \"../metadata-args/types/ColumnMode\"\nimport { GeneratedMetadataArgs } from \"../metadata-args/GeneratedMetadataArgs\"\nimport { UniqueMetadataArgs } from \"../metadata-args/UniqueMetadataArgs\"\nimport { CheckMetadataArgs } from \"../metadata-args/CheckMetadataArgs\"\nimport { ExclusionMetadataArgs } from \"../metadata-args/ExclusionMetadataArgs\"\nimport { EntitySchemaColumnOptions } from \"./EntitySchemaColumnOptions\"\nimport { EntitySchemaOptions } from \"./EntitySchemaOptions\"\nimport { EntitySchemaEmbeddedError } from \"./EntitySchemaEmbeddedError\"\nimport { InheritanceMetadataArgs } from \"../metadata-args/InheritanceMetadataArgs\"\nimport { RelationIdMetadataArgs } from \"../metadata-args/RelationIdMetadataArgs\"\nimport { ForeignKeyMetadataArgs } from \"../metadata-args/ForeignKeyMetadataArgs\"\n\n/**\n * Transforms entity schema into metadata args storage.\n * The result will be just like entities read from decorators.\n */\nexport class EntitySchemaTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Transforms entity schema into new metadata args storage object.\n */\n transform(schemas: EntitySchema<any>[]): MetadataArgsStorage {\n const metadataArgsStorage = new MetadataArgsStorage()\n\n schemas.forEach((entitySchema) => {\n const options = entitySchema.options\n\n // add table metadata args from the schema\n const tableMetadata: TableMetadataArgs = {\n target: options.target || options.name,\n name: options.tableName,\n database: options.database,\n schema: options.schema,\n type: options.type || \"regular\",\n orderBy: options.orderBy,\n synchronize: options.synchronize,\n withoutRowid: !!options.withoutRowid,\n expression: options.expression,\n }\n metadataArgsStorage.tables.push(tableMetadata)\n\n const { inheritance } = options\n\n if (inheritance) {\n metadataArgsStorage.inheritances.push({\n target: options.target,\n pattern: inheritance.pattern ?? \"STI\",\n column: inheritance.column\n ? typeof inheritance.column === \"string\"\n ? { name: inheritance.column }\n : inheritance.column\n : undefined,\n } as InheritanceMetadataArgs)\n }\n\n const { discriminatorValue } = options\n\n if (discriminatorValue) {\n metadataArgsStorage.discriminatorValues.push({\n target: options.target || options.name,\n value: discriminatorValue,\n })\n }\n\n this.transformColumnsRecursive(options, metadataArgsStorage)\n })\n\n return metadataArgsStorage\n }\n\n private transformColumnsRecursive(\n options: EntitySchemaOptions<any>,\n metadataArgsStorage: MetadataArgsStorage,\n ): void {\n // add columns metadata args from the schema\n Object.keys(options.columns).forEach((columnName) => {\n const column = options.columns[columnName]!\n\n const regularColumn = column as EntitySchemaColumnOptions\n let mode: ColumnMode = \"regular\"\n if (regularColumn.createDate) mode = \"createDate\"\n if (regularColumn.updateDate) mode = \"updateDate\"\n if (regularColumn.deleteDate) mode = \"deleteDate\"\n if (regularColumn.version) mode = \"version\"\n if (regularColumn.treeChildrenCount) mode = \"treeChildrenCount\"\n if (regularColumn.treeLevel) mode = \"treeLevel\"\n if (regularColumn.objectId) mode = \"objectId\"\n\n const columnArgs: ColumnMetadataArgs = {\n target: options.target || options.name,\n mode: mode,\n propertyName: columnName,\n options: {\n type: regularColumn.type,\n name: regularColumn.objectId ? \"_id\" : regularColumn.name,\n primaryKeyConstraintName:\n regularColumn.primaryKeyConstraintName,\n length: regularColumn.length,\n width: regularColumn.width,\n nullable: regularColumn.nullable,\n readonly: regularColumn.readonly,\n update: regularColumn.update,\n select: regularColumn.select,\n insert: regularColumn.insert,\n primary: regularColumn.primary,\n unique: regularColumn.unique,\n comment: regularColumn.comment,\n default: regularColumn.default,\n onUpdate: regularColumn.onUpdate,\n precision: regularColumn.precision,\n scale: regularColumn.scale,\n zerofill: regularColumn.zerofill,\n unsigned: regularColumn.unsigned,\n charset: regularColumn.charset,\n collation: regularColumn.collation,\n enum: regularColumn.enum,\n enumName: regularColumn.enumName,\n asExpression: regularColumn.asExpression,\n generatedType: regularColumn.generatedType,\n hstoreType: regularColumn.hstoreType,\n array: regularColumn.array,\n transformer: regularColumn.transformer,\n spatialFeatureType: regularColumn.spatialFeatureType,\n srid: regularColumn.srid,\n },\n }\n metadataArgsStorage.columns.push(columnArgs)\n\n if (regularColumn.generated) {\n const generationArgs: GeneratedMetadataArgs = {\n target: options.target || options.name,\n propertyName: columnName,\n strategy:\n typeof regularColumn.generated === \"string\"\n ? regularColumn.generated\n : \"increment\",\n }\n metadataArgsStorage.generations.push(generationArgs)\n }\n\n if (regularColumn.unique)\n metadataArgsStorage.uniques.push({\n target: options.target || options.name,\n columns: [columnName],\n })\n\n if (regularColumn.foreignKey) {\n const foreignKey = regularColumn.foreignKey\n\n const foreignKeyArgs: ForeignKeyMetadataArgs = {\n target: options.target || options.name,\n type: foreignKey.target,\n propertyName: columnName,\n inverseSide: foreignKey.inverseSide,\n name: foreignKey.name,\n onDelete: foreignKey.onDelete,\n onUpdate: foreignKey.onUpdate,\n deferrable: foreignKey.deferrable,\n }\n metadataArgsStorage.foreignKeys.push(foreignKeyArgs)\n }\n })\n\n // add relation metadata args from the schema\n if (options.relations) {\n Object.keys(options.relations).forEach((relationName) => {\n const relationSchema = options.relations![relationName]!\n const relation: RelationMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n relationType: relationSchema.type,\n isLazy: relationSchema.lazy || false,\n type: relationSchema.target,\n inverseSideProperty: relationSchema.inverseSide,\n isTreeParent: relationSchema.treeParent,\n isTreeChildren: relationSchema.treeChildren,\n options: {\n eager: relationSchema.eager || false,\n cascade: relationSchema.cascade,\n nullable: relationSchema.nullable,\n onDelete: relationSchema.onDelete,\n onUpdate: relationSchema.onUpdate,\n deferrable: relationSchema.deferrable,\n // primary: relationSchema.primary,\n createForeignKeyConstraints:\n relationSchema.createForeignKeyConstraints,\n persistence: relationSchema.persistence,\n orphanedRowAction: relationSchema.orphanedRowAction,\n },\n }\n\n metadataArgsStorage.relations.push(relation)\n\n // add join column\n if (relationSchema.joinColumn) {\n if (typeof relationSchema.joinColumn === \"boolean\") {\n const joinColumn: JoinColumnMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n }\n metadataArgsStorage.joinColumns.push(joinColumn)\n } else {\n const joinColumnsOptions = Array.isArray(\n relationSchema.joinColumn,\n )\n ? relationSchema.joinColumn\n : [relationSchema.joinColumn]\n\n for (const joinColumnOption of joinColumnsOptions) {\n const joinColumn: JoinColumnMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n name: joinColumnOption.name,\n referencedColumnName:\n joinColumnOption.referencedColumnName,\n foreignKeyConstraintName:\n joinColumnOption.foreignKeyConstraintName,\n }\n metadataArgsStorage.joinColumns.push(joinColumn)\n }\n }\n }\n\n // add join table\n if (relationSchema.joinTable) {\n if (typeof relationSchema.joinTable === \"boolean\") {\n const joinTable: JoinTableMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n }\n metadataArgsStorage.joinTables.push(joinTable)\n } else {\n const joinTable: JoinTableMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n name: relationSchema.joinTable.name,\n database: relationSchema.joinTable.database,\n schema: relationSchema.joinTable.schema,\n joinColumns: ((\n relationSchema.joinTable as JoinTableOptions\n ).joinColumn\n ? [\n (\n relationSchema.joinTable as JoinTableOptions\n ).joinColumn!,\n ]\n : (\n relationSchema.joinTable as JoinTableMultipleColumnsOptions\n ).joinColumns) as any,\n inverseJoinColumns: ((\n relationSchema.joinTable as JoinTableOptions\n ).inverseJoinColumn\n ? [\n (\n relationSchema.joinTable as JoinTableOptions\n ).inverseJoinColumn!,\n ]\n : (\n relationSchema.joinTable as JoinTableMultipleColumnsOptions\n ).inverseJoinColumns) as any,\n }\n metadataArgsStorage.joinTables.push(joinTable)\n }\n }\n })\n }\n\n // add relation id metadata args from the schema\n if (options.relationIds) {\n Object.keys(options.relationIds).forEach((relationIdName) => {\n const relationIdOptions = options.relationIds![relationIdName]!\n const relationId: RelationIdMetadataArgs = {\n propertyName: relationIdName,\n relation: relationIdOptions.relationName,\n target: options.target || options.name,\n alias: relationIdOptions.alias,\n queryBuilderFactory: relationIdOptions.queryBuilderFactory,\n }\n metadataArgsStorage.relationIds.push(relationId)\n })\n }\n\n // add index metadata args from the schema\n if (options.indices) {\n options.indices.forEach((index) => {\n const indexArgs: IndexMetadataArgs = {\n target: options.target || options.name,\n name: index.name,\n unique: index.unique === true ? true : false,\n spatial: index.spatial === true ? true : false,\n fulltext: index.fulltext === true ? true : false,\n nullFiltered: index.nullFiltered === true ? true : false,\n parser: index.parser,\n synchronize: index.synchronize === false ? false : true,\n where: index.where,\n sparse: index.sparse,\n columns: index.columns,\n }\n metadataArgsStorage.indices.push(indexArgs)\n })\n }\n\n if (options.foreignKeys) {\n options.foreignKeys.forEach((foreignKey) => {\n const foreignKeyArgs: ForeignKeyMetadataArgs = {\n target: options.target || options.name,\n type: foreignKey.target,\n columnNames: foreignKey.columnNames,\n referencedColumnNames: foreignKey.referencedColumnNames,\n name: foreignKey.name,\n onDelete: foreignKey.onDelete,\n onUpdate: foreignKey.onUpdate,\n deferrable: foreignKey.deferrable,\n }\n metadataArgsStorage.foreignKeys.push(foreignKeyArgs)\n })\n }\n\n // add unique metadata args from the schema\n if (options.uniques) {\n options.uniques.forEach((unique) => {\n const uniqueArgs: UniqueMetadataArgs = {\n target: options.target || options.name,\n name: unique.name,\n columns: unique.columns,\n deferrable: unique.deferrable,\n }\n metadataArgsStorage.uniques.push(uniqueArgs)\n })\n }\n\n // add check metadata args from the schema\n if (options.checks) {\n options.checks.forEach((check) => {\n const checkArgs: CheckMetadataArgs = {\n target: options.target || options.name,\n name: check.name,\n expression: check.expression,\n }\n metadataArgsStorage.checks.push(checkArgs)\n })\n }\n\n // add exclusion metadata args from the schema\n if (options.exclusions) {\n options.exclusions.forEach((exclusion) => {\n const exclusionArgs: ExclusionMetadataArgs = {\n target: options.target || options.name,\n name: exclusion.name,\n expression: exclusion.expression,\n }\n metadataArgsStorage.exclusions.push(exclusionArgs)\n })\n }\n\n if (options.embeddeds) {\n Object.keys(options.embeddeds).forEach((columnName) => {\n const embeddedOptions = options.embeddeds![columnName]\n\n if (!embeddedOptions.schema)\n throw EntitySchemaEmbeddedError.createEntitySchemaIsRequiredException(\n columnName,\n )\n\n const embeddedSchema = embeddedOptions.schema.options\n\n metadataArgsStorage.embeddeds.push({\n target: options.target || options.name,\n propertyName: columnName,\n isArray: embeddedOptions.array === true,\n prefix:\n embeddedOptions.prefix !== undefined\n ? embeddedOptions.prefix\n : undefined,\n type: () => embeddedSchema?.target || embeddedSchema.name,\n })\n\n this.transformColumnsRecursive(\n embeddedSchema,\n metadataArgsStorage,\n )\n })\n }\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/entity-schema/EntitySchemaTransformer.ts"],"names":[],"mappings":"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","file":"EntitySchemaTransformer.js","sourcesContent":["import { EntitySchema } from \"./EntitySchema\"\nimport { MetadataArgsStorage } from \"../metadata-args/MetadataArgsStorage\"\nimport { TableMetadataArgs } from \"../metadata-args/TableMetadataArgs\"\nimport { ColumnMetadataArgs } from \"../metadata-args/ColumnMetadataArgs\"\nimport { IndexMetadataArgs } from \"../metadata-args/IndexMetadataArgs\"\nimport { RelationMetadataArgs } from \"../metadata-args/RelationMetadataArgs\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { JoinTableMetadataArgs } from \"../metadata-args/JoinTableMetadataArgs\"\nimport { JoinTableOptions } from \"../decorator/options/JoinTableOptions\"\nimport { JoinTableMultipleColumnsOptions } from \"../decorator/options/JoinTableMultipleColumnsOptions\"\nimport { ColumnMode } from \"../metadata-args/types/ColumnMode\"\nimport { GeneratedMetadataArgs } from \"../metadata-args/GeneratedMetadataArgs\"\nimport { UniqueMetadataArgs } from \"../metadata-args/UniqueMetadataArgs\"\nimport { CheckMetadataArgs } from \"../metadata-args/CheckMetadataArgs\"\nimport { ExclusionMetadataArgs } from \"../metadata-args/ExclusionMetadataArgs\"\nimport { EntitySchemaColumnOptions } from \"./EntitySchemaColumnOptions\"\nimport { EntitySchemaOptions } from \"./EntitySchemaOptions\"\nimport { EntitySchemaEmbeddedError } from \"./EntitySchemaEmbeddedError\"\nimport { InheritanceMetadataArgs } from \"../metadata-args/InheritanceMetadataArgs\"\nimport { RelationIdMetadataArgs } from \"../metadata-args/RelationIdMetadataArgs\"\nimport { ForeignKeyMetadataArgs } from \"../metadata-args/ForeignKeyMetadataArgs\"\n\n/**\n * Transforms entity schema into metadata args storage.\n * The result will be just like entities read from decorators.\n */\nexport class EntitySchemaTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Transforms entity schema into new metadata args storage object.\n */\n transform(schemas: EntitySchema<any>[]): MetadataArgsStorage {\n const metadataArgsStorage = new MetadataArgsStorage()\n\n schemas.forEach((entitySchema) => {\n const options = entitySchema.options\n\n // add table metadata args from the schema\n const tableMetadata: TableMetadataArgs = {\n target: options.target || options.name,\n name: options.tableName,\n database: options.database,\n schema: options.schema,\n type: options.type || \"regular\",\n orderBy: options.orderBy,\n synchronize: options.synchronize,\n withoutRowid: !!options.withoutRowid,\n expression: options.expression,\n }\n metadataArgsStorage.tables.push(tableMetadata)\n\n const { inheritance } = options\n\n if (inheritance) {\n metadataArgsStorage.inheritances.push({\n target: options.target,\n pattern: inheritance.pattern ?? \"STI\",\n column: inheritance.column\n ? typeof inheritance.column === \"string\"\n ? { name: inheritance.column }\n : inheritance.column\n : undefined,\n } as InheritanceMetadataArgs)\n }\n\n const { discriminatorValue } = options\n\n if (discriminatorValue) {\n metadataArgsStorage.discriminatorValues.push({\n target: options.target || options.name,\n value: discriminatorValue,\n })\n }\n\n this.transformColumnsRecursive(options, metadataArgsStorage)\n })\n\n return metadataArgsStorage\n }\n\n private transformColumnsRecursive(\n options: EntitySchemaOptions<any>,\n metadataArgsStorage: MetadataArgsStorage,\n ): void {\n // add columns metadata args from the schema\n Object.keys(options.columns).forEach((columnName) => {\n const column = options.columns[columnName]!\n\n const regularColumn = column as EntitySchemaColumnOptions\n let mode: ColumnMode = \"regular\"\n if (regularColumn.createDate) mode = \"createDate\"\n if (regularColumn.updateDate) mode = \"updateDate\"\n if (regularColumn.deleteDate) mode = \"deleteDate\"\n if (regularColumn.version) mode = \"version\"\n if (regularColumn.treeChildrenCount) mode = \"treeChildrenCount\"\n if (regularColumn.treeLevel) mode = \"treeLevel\"\n if (regularColumn.objectId) mode = \"objectId\"\n if (regularColumn.virtualProperty) mode = \"virtual-property\"\n\n const columnArgs: ColumnMetadataArgs = {\n target: options.target || options.name,\n mode: mode,\n propertyName: columnName,\n options: {\n type: regularColumn.type,\n name: regularColumn.objectId ? \"_id\" : regularColumn.name,\n primaryKeyConstraintName:\n regularColumn.primaryKeyConstraintName,\n length: regularColumn.length,\n width: regularColumn.width,\n nullable: regularColumn.nullable,\n readonly: regularColumn.readonly,\n update: regularColumn.update,\n select: regularColumn.select,\n insert: regularColumn.insert,\n primary: regularColumn.primary,\n unique: regularColumn.unique,\n comment: regularColumn.comment,\n default: regularColumn.default,\n onUpdate: regularColumn.onUpdate,\n precision: regularColumn.precision,\n scale: regularColumn.scale,\n zerofill: regularColumn.zerofill,\n unsigned: regularColumn.unsigned,\n charset: regularColumn.charset,\n collation: regularColumn.collation,\n enum: regularColumn.enum,\n enumName: regularColumn.enumName,\n asExpression: regularColumn.asExpression,\n generatedType: regularColumn.generatedType,\n hstoreType: regularColumn.hstoreType,\n array: regularColumn.array,\n transformer: regularColumn.transformer,\n spatialFeatureType: regularColumn.spatialFeatureType,\n srid: regularColumn.srid,\n query: regularColumn.query,\n },\n }\n metadataArgsStorage.columns.push(columnArgs)\n\n if (regularColumn.generated) {\n const generationArgs: GeneratedMetadataArgs = {\n target: options.target || options.name,\n propertyName: columnName,\n strategy:\n typeof regularColumn.generated === \"string\"\n ? regularColumn.generated\n : \"increment\",\n }\n metadataArgsStorage.generations.push(generationArgs)\n }\n\n if (regularColumn.unique)\n metadataArgsStorage.uniques.push({\n target: options.target || options.name,\n columns: [columnName],\n })\n\n if (regularColumn.foreignKey) {\n const foreignKey = regularColumn.foreignKey\n\n const foreignKeyArgs: ForeignKeyMetadataArgs = {\n target: options.target || options.name,\n type: foreignKey.target,\n propertyName: columnName,\n inverseSide: foreignKey.inverseSide,\n name: foreignKey.name,\n onDelete: foreignKey.onDelete,\n onUpdate: foreignKey.onUpdate,\n deferrable: foreignKey.deferrable,\n }\n metadataArgsStorage.foreignKeys.push(foreignKeyArgs)\n }\n })\n\n // add relation metadata args from the schema\n if (options.relations) {\n Object.keys(options.relations).forEach((relationName) => {\n const relationSchema = options.relations![relationName]!\n const relation: RelationMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n relationType: relationSchema.type,\n isLazy: relationSchema.lazy || false,\n type: relationSchema.target,\n inverseSideProperty: relationSchema.inverseSide,\n isTreeParent: relationSchema.treeParent,\n isTreeChildren: relationSchema.treeChildren,\n options: {\n eager: relationSchema.eager || false,\n cascade: relationSchema.cascade,\n nullable: relationSchema.nullable,\n onDelete: relationSchema.onDelete,\n onUpdate: relationSchema.onUpdate,\n deferrable: relationSchema.deferrable,\n // primary: relationSchema.primary,\n createForeignKeyConstraints:\n relationSchema.createForeignKeyConstraints,\n persistence: relationSchema.persistence,\n orphanedRowAction: relationSchema.orphanedRowAction,\n },\n }\n\n metadataArgsStorage.relations.push(relation)\n\n // add join column\n if (relationSchema.joinColumn) {\n if (typeof relationSchema.joinColumn === \"boolean\") {\n const joinColumn: JoinColumnMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n }\n metadataArgsStorage.joinColumns.push(joinColumn)\n } else {\n const joinColumnsOptions = Array.isArray(\n relationSchema.joinColumn,\n )\n ? relationSchema.joinColumn\n : [relationSchema.joinColumn]\n\n for (const joinColumnOption of joinColumnsOptions) {\n const joinColumn: JoinColumnMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n name: joinColumnOption.name,\n referencedColumnName:\n joinColumnOption.referencedColumnName,\n foreignKeyConstraintName:\n joinColumnOption.foreignKeyConstraintName,\n }\n metadataArgsStorage.joinColumns.push(joinColumn)\n }\n }\n }\n\n // add join table\n if (relationSchema.joinTable) {\n if (typeof relationSchema.joinTable === \"boolean\") {\n const joinTable: JoinTableMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n }\n metadataArgsStorage.joinTables.push(joinTable)\n } else {\n const joinTable: JoinTableMetadataArgs = {\n target: options.target || options.name,\n propertyName: relationName,\n name: relationSchema.joinTable.name,\n database: relationSchema.joinTable.database,\n schema: relationSchema.joinTable.schema,\n joinColumns: ((\n relationSchema.joinTable as JoinTableOptions\n ).joinColumn\n ? [\n (\n relationSchema.joinTable as JoinTableOptions\n ).joinColumn!,\n ]\n : (\n relationSchema.joinTable as JoinTableMultipleColumnsOptions\n ).joinColumns) as any,\n inverseJoinColumns: ((\n relationSchema.joinTable as JoinTableOptions\n ).inverseJoinColumn\n ? [\n (\n relationSchema.joinTable as JoinTableOptions\n ).inverseJoinColumn!,\n ]\n : (\n relationSchema.joinTable as JoinTableMultipleColumnsOptions\n ).inverseJoinColumns) as any,\n }\n metadataArgsStorage.joinTables.push(joinTable)\n }\n }\n })\n }\n\n // add relation id metadata args from the schema\n if (options.relationIds) {\n Object.keys(options.relationIds).forEach((relationIdName) => {\n const relationIdOptions = options.relationIds![relationIdName]!\n const relationId: RelationIdMetadataArgs = {\n propertyName: relationIdName,\n relation: relationIdOptions.relationName,\n target: options.target || options.name,\n alias: relationIdOptions.alias,\n queryBuilderFactory: relationIdOptions.queryBuilderFactory,\n }\n metadataArgsStorage.relationIds.push(relationId)\n })\n }\n\n // add index metadata args from the schema\n if (options.indices) {\n options.indices.forEach((index) => {\n const indexArgs: IndexMetadataArgs = {\n target: options.target || options.name,\n name: index.name,\n unique: index.unique === true ? true : false,\n spatial: index.spatial === true ? true : false,\n fulltext: index.fulltext === true ? true : false,\n nullFiltered: index.nullFiltered === true ? true : false,\n parser: index.parser,\n synchronize: index.synchronize === false ? false : true,\n where: index.where,\n sparse: index.sparse,\n columns: index.columns,\n }\n metadataArgsStorage.indices.push(indexArgs)\n })\n }\n\n if (options.foreignKeys) {\n options.foreignKeys.forEach((foreignKey) => {\n const foreignKeyArgs: ForeignKeyMetadataArgs = {\n target: options.target || options.name,\n type: foreignKey.target,\n columnNames: foreignKey.columnNames,\n referencedColumnNames: foreignKey.referencedColumnNames,\n name: foreignKey.name,\n onDelete: foreignKey.onDelete,\n onUpdate: foreignKey.onUpdate,\n deferrable: foreignKey.deferrable,\n }\n metadataArgsStorage.foreignKeys.push(foreignKeyArgs)\n })\n }\n\n // add unique metadata args from the schema\n if (options.uniques) {\n options.uniques.forEach((unique) => {\n const uniqueArgs: UniqueMetadataArgs = {\n target: options.target || options.name,\n name: unique.name,\n columns: unique.columns,\n deferrable: unique.deferrable,\n }\n metadataArgsStorage.uniques.push(uniqueArgs)\n })\n }\n\n // add check metadata args from the schema\n if (options.checks) {\n options.checks.forEach((check) => {\n const checkArgs: CheckMetadataArgs = {\n target: options.target || options.name,\n name: check.name,\n expression: check.expression,\n }\n metadataArgsStorage.checks.push(checkArgs)\n })\n }\n\n // add exclusion metadata args from the schema\n if (options.exclusions) {\n options.exclusions.forEach((exclusion) => {\n const exclusionArgs: ExclusionMetadataArgs = {\n target: options.target || options.name,\n name: exclusion.name,\n expression: exclusion.expression,\n }\n metadataArgsStorage.exclusions.push(exclusionArgs)\n })\n }\n\n if (options.embeddeds) {\n Object.keys(options.embeddeds).forEach((columnName) => {\n const embeddedOptions = options.embeddeds![columnName]\n\n if (!embeddedOptions.schema)\n throw EntitySchemaEmbeddedError.createEntitySchemaIsRequiredException(\n columnName,\n )\n\n const embeddedSchema = embeddedOptions.schema.options\n\n metadataArgsStorage.embeddeds.push({\n target: options.target || options.name,\n propertyName: columnName,\n isArray: embeddedOptions.array === true,\n prefix:\n embeddedOptions.prefix !== undefined\n ? embeddedOptions.prefix\n : undefined,\n type: () => embeddedSchema?.target || embeddedSchema.name,\n })\n\n this.transformColumnsRecursive(\n embeddedSchema,\n metadataArgsStorage,\n )\n })\n }\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -4,8 +4,7 @@ import { TypeORMError } from "./TypeORMError";
|
|
|
4
4
|
*/
|
|
5
5
|
export class DriverPackageNotInstalledError extends TypeORMError {
|
|
6
6
|
constructor(driverName, packageName) {
|
|
7
|
-
super(`${driverName} package has not been found installed.
|
|
8
|
-
`Try to install it: npm install ${packageName} --save`);
|
|
7
|
+
super(`${driverName} package has not been found installed. Please run "npm install ${packageName}".`);
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
10
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/error/DriverPackageNotInstalledError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,YAAY;IAC5D,YAAY,UAAkB,EAAE,WAAmB;QAC/C,KAAK,CACD,GAAG,UAAU,
|
|
1
|
+
{"version":3,"sources":["../browser/src/error/DriverPackageNotInstalledError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,YAAY;IAC5D,YAAY,UAAkB,EAAE,WAAmB;QAC/C,KAAK,CACD,GAAG,UAAU,kEAAkE,WAAW,IAAI,CACjG,CAAA;IACL,CAAC;CACJ","file":"DriverPackageNotInstalledError.js","sourcesContent":["import { TypeORMError } from \"./TypeORMError\"\n\n/**\n * Thrown when required driver's package is not installed.\n */\nexport class DriverPackageNotInstalledError extends TypeORMError {\n constructor(driverName: string, packageName: string) {\n super(\n `${driverName} package has not been found installed. Please run \"npm install ${packageName}\".`,\n )\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -14,10 +14,11 @@ export class PlatformTools {
|
|
|
14
14
|
if (typeof window !== "undefined") {
|
|
15
15
|
return window;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return global;
|
|
17
|
+
if (typeof globalThis !== "undefined") {
|
|
18
|
+
return globalThis;
|
|
20
19
|
}
|
|
20
|
+
// NativeScript uses global, not window
|
|
21
|
+
return global;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Loads ("require"-s) given file or package.
|
|
@@ -128,6 +129,9 @@ export class Writable {
|
|
|
128
129
|
if (typeof window !== "undefined") {
|
|
129
130
|
window.Buffer = Buffer;
|
|
130
131
|
}
|
|
132
|
+
if (typeof globalThis !== "undefined") {
|
|
133
|
+
globalThis.Buffer = Buffer;
|
|
134
|
+
}
|
|
131
135
|
// NativeScript uses global, not window
|
|
132
136
|
if (typeof global !== "undefined" && typeof require !== "undefined") {
|
|
133
137
|
global.Buffer = require("buffer/").Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/platform/BrowserPlatformTools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,aAAa;IAOtB;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACpB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,OAAO,MAAM,CAAA;QACjB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../browser/src/platform/BrowserPlatformTools.ts"],"names":[],"mappings":"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","file":"BrowserPlatformTools.js","sourcesContent":["/**\n * Browser's implementation of the platform-specific tools.\n *\n * This file gonna replace PlatformTools for browser environment.\n * For node.js environment this class is not getting packaged.\n * Don't use methods of this class in the code, use PlatformTools methods instead.\n */\nimport { Buffer } from \"buffer\";\n\nexport class PlatformTools {\n\n /**\n * Type of the currently running platform.\n */\n static type: \"browser\"|\"node\" = \"browser\";\n\n /**\n * Gets global variable where global stuff can be stored.\n */\n static getGlobalVariable(): any {\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n // NativeScript uses global, not window\n return global\n }\n\n /**\n * Loads (\"require\"-s) given file or package.\n * This operation only supports on node platform\n */\n static load(name: string): any {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: require(\"${name}\").`);\n\n return \"\";\n }\n\n /**\n * Normalizes given path. Does \"path.normalize\".\n */\n static pathNormalize(pathStr: string): string {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: path.normalize(\"${pathStr}\").`);\n\n return \"\";\n }\n\n /**\n * Gets file extension. Does \"path.extname\".\n */\n static pathExtname(pathStr: string): string {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: path.extname(\"${pathStr}\").`);\n\n return \"\";\n }\n\n /**\n * Resolved given path. Does \"path.resolve\".\n */\n static pathResolve(pathStr: string): string {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: path.resolve(\"${pathStr}\").`);\n\n return \"\";\n }\n\n /**\n * Synchronously checks if file exist. Does \"fs.existsSync\".\n */\n static fileExist(pathStr: string): boolean {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: fs.existsSync(\"${pathStr}\").`);\n\n return false;\n }\n\n static dotenv(pathStr: string): void {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: dotenv.config({ path: \"${pathStr}\" }).`);\n }\n\n /**\n * Gets environment variable.\n */\n static getEnvVariable(name: string): any {\n // if (this.type === \"browser\")\n // throw new Error(`This option/function is not supported in the browser environment. Failed operation: process.env[\"${name}\"].`);\n return undefined;\n }\n\n static readFileSync(filename: string): any {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: fs.readFileSync(\"${filename}\").`);\n return null;\n }\n\n static appendFileSync(filename: string, data: any) {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: fs.appendFileSync(\"${filename}\").`);\n }\n\n static writeFile(path: string, data: any): Promise<void> {\n if (this.type === \"browser\")\n throw new Error(`This option/function is not supported in the browser environment. Failed operation: fs.writeFile(\"${path}\").`);\n return Promise.reject(null);\n }\n\n /**\n * Highlights sql string to be printed in the console.\n */\n static highlightSql(sql: string) {\n return sql;\n }\n\n /**\n * Logging functions needed by AdvancedConsoleLogger (but here without ANSI colors)\n */\n static logInfo(prefix: string, info: any) {\n console.info(prefix + \" \", info);\n }\n\n static logError(prefix: string, error: any) {\n console.error(prefix + \" \", error);\n }\n\n static logWarn(prefix: string, warning: any) {\n console.warn(prefix + \" \", warning);\n }\n\n static log(message: string) {\n console.log(message);\n }\n\n static warn(message: string) {\n return message;\n }\n}\n\n/**\n * These classes are needed for stream operations or\n * in the mongodb driver. Both aren't supported in the browser.\n */\nexport class EventEmitter {}\n\nexport class Readable {}\n\nexport class Writable {}\n\nexport interface ReadStream {}\n\n/**\n * This loads a polyfill to enable Buffers in the browser.\n */\ninterface Window {\n Buffer: any;\n}\n\ndeclare var window: Window;\nif (typeof window !== \"undefined\") {\n window.Buffer = Buffer;\n}\nif (typeof globalThis !== \"undefined\") {\n globalThis.Buffer = Buffer;\n}\n// NativeScript uses global, not window\nif (typeof global !== \"undefined\" && typeof require !== \"undefined\") {\n global.Buffer = require(\"buffer/\").Buffer;\n}\n"],"sourceRoot":".."}
|
|
@@ -28,7 +28,7 @@ export interface SaveOptions {
|
|
|
28
28
|
* Flag to determine whether the entity that is being persisted
|
|
29
29
|
* should be reloaded during the persistence operation.
|
|
30
30
|
*
|
|
31
|
-
* It will work only on databases which
|
|
31
|
+
* It will work only on databases which do not support RETURNING / OUTPUT statement.
|
|
32
32
|
* Enabled by default.
|
|
33
33
|
*/
|
|
34
34
|
reload?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/repository/SaveOptions.ts"],"names":[],"mappings":"","file":"SaveOptions.js","sourcesContent":["/**\n * Special options passed to Repository#save, Repository#insert and Repository#update methods.\n */\nexport interface SaveOptions {\n /**\n * Additional data to be passed with persist method.\n * This data can be used in subscribers then.\n */\n data?: any\n\n /**\n * Indicates if listeners and subscribers are called for this operation.\n * By default they are enabled, you can disable them by setting { listeners: false } in save/remove options.\n */\n listeners?: boolean\n\n /**\n * By default transactions are enabled and all queries in persistence operation are wrapped into the transaction.\n * You can disable this behaviour by setting { transaction: false } in the persistence options.\n */\n transaction?: boolean\n\n /**\n * Breaks save execution into chunks of a given size.\n * For example, if you want to save 100,000 objects but you have issues with saving them,\n * you can break them into 10 groups of 10,000 objects (by setting { chunk: 10000 }) and save each group separately.\n * This option is needed to perform very big insertions when you have issues with underlying driver parameter number limitation.\n */\n chunk?: number\n\n /**\n * Flag to determine whether the entity that is being persisted\n * should be reloaded during the persistence operation.\n *\n * It will work only on databases which
|
|
1
|
+
{"version":3,"sources":["../browser/src/repository/SaveOptions.ts"],"names":[],"mappings":"","file":"SaveOptions.js","sourcesContent":["/**\n * Special options passed to Repository#save, Repository#insert and Repository#update methods.\n */\nexport interface SaveOptions {\n /**\n * Additional data to be passed with persist method.\n * This data can be used in subscribers then.\n */\n data?: any\n\n /**\n * Indicates if listeners and subscribers are called for this operation.\n * By default they are enabled, you can disable them by setting { listeners: false } in save/remove options.\n */\n listeners?: boolean\n\n /**\n * By default transactions are enabled and all queries in persistence operation are wrapped into the transaction.\n * You can disable this behaviour by setting { transaction: false } in the persistence options.\n */\n transaction?: boolean\n\n /**\n * Breaks save execution into chunks of a given size.\n * For example, if you want to save 100,000 objects but you have issues with saving them,\n * you can break them into 10 groups of 10,000 objects (by setting { chunk: 10000 }) and save each group separately.\n * This option is needed to perform very big insertions when you have issues with underlying driver parameter number limitation.\n */\n chunk?: number\n\n /**\n * Flag to determine whether the entity that is being persisted\n * should be reloaded during the persistence operation.\n *\n * It will work only on databases which do not support RETURNING / OUTPUT statement.\n * Enabled by default.\n */\n reload?: boolean\n}\n"],"sourceRoot":".."}
|
|
@@ -19,6 +19,10 @@ export declare class RedisQueryResultCache implements QueryResultCache {
|
|
|
19
19
|
* Type of the Redis Client (redis or ioredis).
|
|
20
20
|
*/
|
|
21
21
|
protected clientType: "redis" | "ioredis" | "ioredis/cluster";
|
|
22
|
+
/**
|
|
23
|
+
* Redis major version number
|
|
24
|
+
*/
|
|
25
|
+
protected redisMajorVersion: number | undefined;
|
|
22
26
|
constructor(connection: DataSource, clientType: "redis" | "ioredis" | "ioredis/cluster");
|
|
23
27
|
/**
|
|
24
28
|
* Creates a connection with given cache provider.
|
|
@@ -62,4 +66,13 @@ export declare class RedisQueryResultCache implements QueryResultCache {
|
|
|
62
66
|
* Loads redis dependency.
|
|
63
67
|
*/
|
|
64
68
|
protected loadRedis(): any;
|
|
69
|
+
/**
|
|
70
|
+
* Detects the Redis version based on the connected client's API characteristics
|
|
71
|
+
* without creating test keys in the database
|
|
72
|
+
*/
|
|
73
|
+
private detectRedisVersion;
|
|
74
|
+
/**
|
|
75
|
+
* Checks if Redis version is 5.x or higher
|
|
76
|
+
*/
|
|
77
|
+
private isRedis5OrHigher;
|
|
65
78
|
}
|
|
@@ -24,19 +24,32 @@ class RedisQueryResultCache {
|
|
|
24
24
|
async connect() {
|
|
25
25
|
const cacheOptions = this.connection.options.cache;
|
|
26
26
|
if (this.clientType === "redis") {
|
|
27
|
-
|
|
27
|
+
const clientOptions = {
|
|
28
28
|
...cacheOptions?.options,
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
};
|
|
30
|
+
// Create initial client to test Redis version
|
|
31
|
+
let tempClient = this.redis.createClient(clientOptions);
|
|
32
|
+
const isRedis4Plus = typeof tempClient.connect === "function";
|
|
33
|
+
if (isRedis4Plus) {
|
|
34
|
+
// Redis 4+ detected, recreate with legacyMode for Redis 4.x
|
|
35
|
+
// (Redis 5 will ignore legacyMode if not needed)
|
|
36
|
+
clientOptions.legacyMode = true;
|
|
37
|
+
tempClient = this.redis.createClient(clientOptions);
|
|
38
|
+
}
|
|
39
|
+
// Set as the main client
|
|
40
|
+
this.client = tempClient;
|
|
31
41
|
if (typeof this.connection.options.cache === "object" &&
|
|
32
42
|
this.connection.options.cache.ignoreErrors) {
|
|
33
43
|
this.client.on("error", (err) => {
|
|
34
44
|
this.connection.logger.log("warn", err);
|
|
35
45
|
});
|
|
36
46
|
}
|
|
37
|
-
|
|
47
|
+
// Connect if Redis 4+
|
|
48
|
+
if (typeof this.client.connect === "function") {
|
|
38
49
|
await this.client.connect();
|
|
39
50
|
}
|
|
51
|
+
// Detect precise version after connection is established
|
|
52
|
+
this.detectRedisVersion();
|
|
40
53
|
}
|
|
41
54
|
else if (this.clientType === "ioredis") {
|
|
42
55
|
if (cacheOptions && cacheOptions.port) {
|
|
@@ -74,6 +87,13 @@ class RedisQueryResultCache {
|
|
|
74
87
|
* Disconnects the connection
|
|
75
88
|
*/
|
|
76
89
|
async disconnect() {
|
|
90
|
+
if (this.isRedis5OrHigher()) {
|
|
91
|
+
// Redis 5+ uses quit() that returns a Promise
|
|
92
|
+
await this.client.quit();
|
|
93
|
+
this.client = undefined;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Redis 3/4 callback style
|
|
77
97
|
return new Promise((ok, fail) => {
|
|
78
98
|
this.client.quit((err, result) => {
|
|
79
99
|
if (err)
|
|
@@ -93,24 +113,22 @@ class RedisQueryResultCache {
|
|
|
93
113
|
* Returns undefined if result is not cached.
|
|
94
114
|
*/
|
|
95
115
|
getFromCache(options, queryRunner) {
|
|
116
|
+
const key = options.identifier || options.query;
|
|
117
|
+
if (!key)
|
|
118
|
+
return Promise.resolve(undefined);
|
|
119
|
+
if (this.isRedis5OrHigher()) {
|
|
120
|
+
// Redis 5+ Promise-based API
|
|
121
|
+
return this.client.get(key).then((result) => {
|
|
122
|
+
return result ? JSON.parse(result) : undefined;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Redis 3/4 callback-based API
|
|
96
126
|
return new Promise((ok, fail) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
else if (options.query) {
|
|
105
|
-
this.client.get(options.query, (err, result) => {
|
|
106
|
-
if (err)
|
|
107
|
-
return fail(err);
|
|
108
|
-
ok(JSON.parse(result));
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
ok(undefined);
|
|
113
|
-
}
|
|
127
|
+
this.client.get(key, (err, result) => {
|
|
128
|
+
if (err)
|
|
129
|
+
return fail(err);
|
|
130
|
+
ok(result ? JSON.parse(result) : undefined);
|
|
131
|
+
});
|
|
114
132
|
});
|
|
115
133
|
}
|
|
116
134
|
/**
|
|
@@ -123,27 +141,37 @@ class RedisQueryResultCache {
|
|
|
123
141
|
* Stores given query result in the cache.
|
|
124
142
|
*/
|
|
125
143
|
async storeInCache(options, savedCache, queryRunner) {
|
|
144
|
+
const key = options.identifier || options.query;
|
|
145
|
+
if (!key)
|
|
146
|
+
return;
|
|
147
|
+
const value = JSON.stringify(options);
|
|
148
|
+
const duration = options.duration;
|
|
149
|
+
if (this.isRedis5OrHigher()) {
|
|
150
|
+
// Redis 5+ Promise-based API with PX option
|
|
151
|
+
await this.client.set(key, value, {
|
|
152
|
+
PX: duration,
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Redis 3/4 callback-based API
|
|
126
157
|
return new Promise((ok, fail) => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
else if (options.query) {
|
|
135
|
-
this.client.set(options.query, JSON.stringify(options), "PX", options.duration, (err, result) => {
|
|
136
|
-
if (err)
|
|
137
|
-
return fail(err);
|
|
138
|
-
ok();
|
|
139
|
-
});
|
|
140
|
-
}
|
|
158
|
+
this.client.set(key, value, "PX", duration, (err, result) => {
|
|
159
|
+
if (err)
|
|
160
|
+
return fail(err);
|
|
161
|
+
ok();
|
|
162
|
+
});
|
|
141
163
|
});
|
|
142
164
|
}
|
|
143
165
|
/**
|
|
144
166
|
* Clears everything stored in the cache.
|
|
145
167
|
*/
|
|
146
168
|
async clear(queryRunner) {
|
|
169
|
+
if (this.isRedis5OrHigher()) {
|
|
170
|
+
// Redis 5+ Promise-based API
|
|
171
|
+
await this.client.flushDb();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
// Redis 3/4 callback-based API
|
|
147
175
|
return new Promise((ok, fail) => {
|
|
148
176
|
this.client.flushdb((err, result) => {
|
|
149
177
|
if (err)
|
|
@@ -166,7 +194,13 @@ class RedisQueryResultCache {
|
|
|
166
194
|
/**
|
|
167
195
|
* Removes a single key from redis database.
|
|
168
196
|
*/
|
|
169
|
-
deleteKey(key) {
|
|
197
|
+
async deleteKey(key) {
|
|
198
|
+
if (this.isRedis5OrHigher()) {
|
|
199
|
+
// Redis 5+ Promise-based API
|
|
200
|
+
await this.client.del(key);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// Redis 3/4 callback-based API
|
|
170
204
|
return new Promise((ok, fail) => {
|
|
171
205
|
this.client.del(key, (err, result) => {
|
|
172
206
|
if (err)
|
|
@@ -187,10 +221,43 @@ class RedisQueryResultCache {
|
|
|
187
221
|
return PlatformTools_1.PlatformTools.load(this.clientType);
|
|
188
222
|
}
|
|
189
223
|
}
|
|
190
|
-
catch
|
|
191
|
-
throw new TypeORMError_1.TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}
|
|
224
|
+
catch {
|
|
225
|
+
throw new TypeORMError_1.TypeORMError(`Cannot use cache because ${this.clientType} is not installed. Please run "npm i ${this.clientType}".`);
|
|
192
226
|
}
|
|
193
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Detects the Redis version based on the connected client's API characteristics
|
|
230
|
+
* without creating test keys in the database
|
|
231
|
+
*/
|
|
232
|
+
detectRedisVersion() {
|
|
233
|
+
if (this.clientType !== "redis")
|
|
234
|
+
return;
|
|
235
|
+
try {
|
|
236
|
+
// Detect version by examining the client's method signatures
|
|
237
|
+
// This avoids creating test keys in the database
|
|
238
|
+
const setMethod = this.client.set;
|
|
239
|
+
if (setMethod && setMethod.length <= 3) {
|
|
240
|
+
// Redis 5+ set method accepts fewer parameters (key, value, options)
|
|
241
|
+
this.redisMajorVersion = 5;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Redis 3/4 set method requires more parameters (key, value, flag, duration, callback)
|
|
245
|
+
this.redisMajorVersion = 3;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Default to Redis 3/4 for maximum compatibility
|
|
250
|
+
this.redisMajorVersion = 3;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Checks if Redis version is 5.x or higher
|
|
255
|
+
*/
|
|
256
|
+
isRedis5OrHigher() {
|
|
257
|
+
if (this.clientType !== "redis")
|
|
258
|
+
return false;
|
|
259
|
+
return (this.redisMajorVersion !== undefined && this.redisMajorVersion >= 5);
|
|
260
|
+
}
|
|
194
261
|
}
|
|
195
262
|
exports.RedisQueryResultCache = RedisQueryResultCache;
|
|
196
263
|
|