typeorm 0.3.26 → 0.3.27-dev.22b26d1

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.
@@ -35,10 +35,32 @@ export async function importOrRequireFile(filePath) {
35
35
  }
36
36
  return tryToRequire();
37
37
  }
38
+ const packageJsonCache = new Map();
39
+ const MAX_CACHE_SIZE = 1000;
40
+ function setPackageJsonCache(paths, packageJson) {
41
+ for (const path of paths) {
42
+ // Simple LRU-like behavior: if we're at capacity, remove oldest entry
43
+ if (packageJsonCache.size >= MAX_CACHE_SIZE &&
44
+ !packageJsonCache.has(path)) {
45
+ const firstKey = packageJsonCache.keys().next().value;
46
+ if (firstKey)
47
+ packageJsonCache.delete(firstKey);
48
+ }
49
+ packageJsonCache.set(path, packageJson);
50
+ }
51
+ }
38
52
  async function getNearestPackageJson(filePath) {
39
53
  let currentPath = filePath;
54
+ const paths = [];
40
55
  while (currentPath !== path.dirname(currentPath)) {
41
56
  currentPath = path.dirname(currentPath);
57
+ // Check if we have already cached the package.json for this path
58
+ if (packageJsonCache.has(currentPath)) {
59
+ setPackageJsonCache(paths, packageJsonCache.get(currentPath));
60
+ return packageJsonCache.get(currentPath);
61
+ }
62
+ // Add the current path to the list of paths to cache
63
+ paths.push(currentPath);
42
64
  const potentialPackageJson = path.join(currentPath, "package.json");
43
65
  try {
44
66
  const stats = await fs.stat(potentialPackageJson);
@@ -46,9 +68,14 @@ async function getNearestPackageJson(filePath) {
46
68
  continue;
47
69
  }
48
70
  try {
49
- return JSON.parse(await fs.readFile(potentialPackageJson, "utf8"));
71
+ const parsedPackage = JSON.parse(await fs.readFile(potentialPackageJson, "utf8"));
72
+ // Cache the parsed package.json object and return it
73
+ setPackageJsonCache(paths, parsedPackage);
74
+ return parsedPackage;
50
75
  }
51
76
  catch {
77
+ // If parsing fails, we still cache null to avoid repeated attempts
78
+ setPackageJsonCache(paths, null);
52
79
  return null;
53
80
  }
54
81
  }
@@ -57,6 +84,7 @@ async function getNearestPackageJson(filePath) {
57
84
  }
58
85
  }
59
86
  // the top of the file tree is reached
87
+ setPackageJsonCache(paths, null);
60
88
  return null;
61
89
  }
62
90
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/ImportUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAgB;IAEhB,MAAM,WAAW,GAAG,KAAK,IAA2B,EAAE;QAClD,qFAAqF;QACrF,oDAAoD;QACpD,OAAO;YACH,8DAA8D;YAC9D,MAAM,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CACnD,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC1B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAC3C;YACD,KAAK;SACR,CAAA;IACL,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,GAAsB,EAAE;QACzC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IAE5E,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,WAAW,EAAE,CAAA;SAC/D,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,YAAY,EAAE,CAAA;SACrE,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QAEzD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAI,WAAmB,EAAE,IAAI,KAAK,QAAQ,CAAA;YAExD,IAAI,QAAQ;gBAAE,OAAO,WAAW,EAAE,CAAA;;gBAC7B,OAAO,YAAY,EAAE,CAAA;QAC9B,CAAC;;YAAM,OAAO,YAAY,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,YAAY,EAAE,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IACjD,IAAI,WAAW,GAAG,QAAQ,CAAA;IAE1B,OAAO,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/C,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;QAEnE,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACjD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,SAAQ;YACZ,CAAC;YAED,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CACb,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAClD,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,IAAI,CAAA;YACf,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,SAAQ;QACZ,CAAC;IACL,CAAC;IAED,sCAAsC;IACtC,OAAO,IAAI,CAAA;AACf,CAAC","file":"ImportUtils.js","sourcesContent":["import fs from \"fs/promises\"\nimport path from \"path\"\nimport { pathToFileURL } from \"url\"\n\nexport async function importOrRequireFile(\n filePath: string,\n): Promise<[any, \"esm\" | \"commonjs\"]> {\n const tryToImport = async (): Promise<[any, \"esm\"]> => {\n // `Function` is required to make sure the `import` statement wil stay `import` after\n // transpilation and won't be converted to `require`\n return [\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n await Function(\"return filePath => import(filePath)\")()(\n filePath.startsWith(\"file://\")\n ? filePath\n : pathToFileURL(filePath).toString(),\n ),\n \"esm\",\n ]\n }\n const tryToRequire = (): [any, \"commonjs\"] => {\n return [require(filePath), \"commonjs\"]\n }\n\n const extension = filePath.substring(filePath.lastIndexOf(\".\") + \".\".length)\n\n if (extension === \"mjs\" || extension === \"mts\") return tryToImport()\n else if (extension === \"cjs\" || extension === \"cts\") return tryToRequire()\n else if (extension === \"js\" || extension === \"ts\") {\n const packageJson = await getNearestPackageJson(filePath)\n\n if (packageJson != null) {\n const isModule = (packageJson as any)?.type === \"module\"\n\n if (isModule) return tryToImport()\n else return tryToRequire()\n } else return tryToRequire()\n }\n\n return tryToRequire()\n}\n\nasync function getNearestPackageJson(filePath: string): Promise<object | null> {\n let currentPath = filePath\n\n while (currentPath !== path.dirname(currentPath)) {\n currentPath = path.dirname(currentPath)\n const potentialPackageJson = path.join(currentPath, \"package.json\")\n\n try {\n const stats = await fs.stat(potentialPackageJson)\n if (!stats.isFile()) {\n continue\n }\n\n try {\n return JSON.parse(\n await fs.readFile(potentialPackageJson, \"utf8\"),\n )\n } catch {\n return null\n }\n } catch {\n continue\n }\n }\n\n // the top of the file tree is reached\n return null\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/ImportUtils.ts"],"names":[],"mappings":"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","file":"ImportUtils.js","sourcesContent":["import fs from \"fs/promises\"\nimport path from \"path\"\nimport { pathToFileURL } from \"url\"\n\nexport async function importOrRequireFile(\n filePath: string,\n): Promise<[any, \"esm\" | \"commonjs\"]> {\n const tryToImport = async (): Promise<[any, \"esm\"]> => {\n // `Function` is required to make sure the `import` statement wil stay `import` after\n // transpilation and won't be converted to `require`\n return [\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n await Function(\"return filePath => import(filePath)\")()(\n filePath.startsWith(\"file://\")\n ? filePath\n : pathToFileURL(filePath).toString(),\n ),\n \"esm\",\n ]\n }\n const tryToRequire = (): [any, \"commonjs\"] => {\n return [require(filePath), \"commonjs\"]\n }\n\n const extension = filePath.substring(filePath.lastIndexOf(\".\") + \".\".length)\n\n if (extension === \"mjs\" || extension === \"mts\") return tryToImport()\n else if (extension === \"cjs\" || extension === \"cts\") return tryToRequire()\n else if (extension === \"js\" || extension === \"ts\") {\n const packageJson = await getNearestPackageJson(filePath)\n\n if (packageJson != null) {\n const isModule = (packageJson as any)?.type === \"module\"\n\n if (isModule) return tryToImport()\n else return tryToRequire()\n } else return tryToRequire()\n }\n\n return tryToRequire()\n}\n\nconst packageJsonCache = new Map<string, object | null>()\nconst MAX_CACHE_SIZE = 1000\n\nfunction setPackageJsonCache(paths: string[], packageJson: object | null) {\n for (const path of paths) {\n // Simple LRU-like behavior: if we're at capacity, remove oldest entry\n if (\n packageJsonCache.size >= MAX_CACHE_SIZE &&\n !packageJsonCache.has(path)\n ) {\n const firstKey = packageJsonCache.keys().next().value\n if (firstKey) packageJsonCache.delete(firstKey)\n }\n packageJsonCache.set(path, packageJson)\n }\n}\n\nasync function getNearestPackageJson(filePath: string): Promise<object | null> {\n let currentPath = filePath\n const paths: string[] = []\n\n while (currentPath !== path.dirname(currentPath)) {\n currentPath = path.dirname(currentPath)\n\n // Check if we have already cached the package.json for this path\n if (packageJsonCache.has(currentPath)) {\n setPackageJsonCache(paths, packageJsonCache.get(currentPath)!)\n return packageJsonCache.get(currentPath)!\n }\n\n // Add the current path to the list of paths to cache\n paths.push(currentPath)\n\n const potentialPackageJson = path.join(currentPath, \"package.json\")\n\n try {\n const stats = await fs.stat(potentialPackageJson)\n if (!stats.isFile()) {\n continue\n }\n\n try {\n const parsedPackage = JSON.parse(\n await fs.readFile(potentialPackageJson, \"utf8\"),\n )\n // Cache the parsed package.json object and return it\n setPackageJsonCache(paths, parsedPackage)\n return parsedPackage\n } catch {\n // If parsing fails, we still cache null to avoid repeated attempts\n setPackageJsonCache(paths, null)\n return null\n }\n } catch {\n continue\n }\n }\n\n // the top of the file tree is reached\n setPackageJsonCache(paths, null)\n return null\n}\n"],"sourceRoot":".."}
@@ -8,6 +8,11 @@ export interface VirtualColumnOptions {
8
8
  * Column type. Must be one of the value from the ColumnTypes class.
9
9
  */
10
10
  type?: ColumnType;
11
+ /**
12
+ * Indicates if column is always selected by QueryBuilder and find operations.
13
+ * Default value is "true".
14
+ */
15
+ select?: boolean;
11
16
  /**
12
17
  * Return type of HSTORE column.
13
18
  * Returns value as string or as object.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/options/VirtualColumnOptions.ts"],"names":[],"mappings":"","file":"VirtualColumnOptions.js","sourcesContent":["import { ColumnType } from \"../../driver/types/ColumnTypes\"\nimport { ValueTransformer } from \"./ValueTransformer\"\n\n/**\n * Describes all calculated column's options.\n */\nexport interface VirtualColumnOptions {\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type?: ColumnType\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\" | \"string\"\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 /**\n * Specifies a value transformer(s) that is to be used to unmarshal\n * this column when reading from the database.\n */\n transformer?: ValueTransformer | ValueTransformer[]\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/decorator/options/VirtualColumnOptions.ts"],"names":[],"mappings":"","file":"VirtualColumnOptions.js","sourcesContent":["import { ColumnType } from \"../../driver/types/ColumnTypes\"\nimport { ValueTransformer } from \"./ValueTransformer\"\n\n/**\n * Describes all calculated column's options.\n */\nexport interface VirtualColumnOptions {\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type?: ColumnType\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 * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\" | \"string\"\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 /**\n * Specifies a value transformer(s) that is to be used to unmarshal\n * this column when reading from the database.\n */\n transformer?: ValueTransformer | ValueTransformer[]\n}\n"],"sourceRoot":"../.."}
package/package.json CHANGED
@@ -1,267 +1 @@
1
- {
2
- "name": "typeorm",
3
- "version": "0.3.26",
4
- "description": "Data-Mapper ORM for TypeScript and ES2021+. Supports MySQL/MariaDB, PostgreSQL, MS SQL Server, Oracle, SAP HANA, SQLite, MongoDB databases.",
5
- "homepage": "https://typeorm.io",
6
- "bugs": {
7
- "url": "https://github.com/typeorm/typeorm/issues"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/typeorm/typeorm.git"
12
- },
13
- "funding": "https://opencollective.com/typeorm",
14
- "license": "MIT",
15
- "author": {
16
- "name": "Umed Khudoiberdiev",
17
- "email": "pleerock.me@gmail.com"
18
- },
19
- "exports": {
20
- ".": {
21
- "types": "./index.d.ts",
22
- "node": {
23
- "types": "./index.d.ts",
24
- "import": "./index.mjs",
25
- "require": "./index.js"
26
- },
27
- "browser": {
28
- "require": "./index.js",
29
- "import": "./browser/index.js",
30
- "default": "./index.js"
31
- }
32
- },
33
- "./browser": {
34
- "types": "./index.d.ts",
35
- "default": "./browser/index.js"
36
- },
37
- "./*.js": "./*.js",
38
- "./*": {
39
- "require": "./*.js",
40
- "import": "./*"
41
- }
42
- },
43
- "main": "./index.js",
44
- "module": "./index.mjs",
45
- "browser": {
46
- "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js",
47
- "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js",
48
- "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js",
49
- "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
50
- "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
51
- "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
52
- "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
53
- "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js",
54
- "./browser/driver/mongodb/bson.typings.js": "./browser/platform/BrowserDisabledDriversDummy.js",
55
- "./browser/driver/mongodb/typings.js": "./browser/platform/BrowserDisabledDriversDummy.js",
56
- "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
57
- "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
58
- "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
59
- "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
60
- "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
61
- "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js",
62
- "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js",
63
- "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js",
64
- "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js",
65
- "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js",
66
- "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js",
67
- "./index.js": "./browser/index.js",
68
- "./index.mjs": "./browser/index.js"
69
- },
70
- "types": "./index.d.ts",
71
- "bin": {
72
- "typeorm": "./cli.js",
73
- "typeorm-ts-node-commonjs": "./cli-ts-node-commonjs.js",
74
- "typeorm-ts-node-esm": "./cli-ts-node-esm.js"
75
- },
76
- "scripts": {
77
- "changelog": "standard-changelog",
78
- "compile": "rimraf ./build && tsc",
79
- "docs:dev": "cd docs && npm run start",
80
- "format": "prettier --cache --write \"./**/*.ts\"",
81
- "format:ci": "prettier --check \"./**/*.ts\"",
82
- "lint": "eslint .",
83
- "pack": "gulp pack",
84
- "package": "gulp package",
85
- "pre-commit": "lint-staged",
86
- "prepare": "husky",
87
- "publish:preview": "pkg-pr-new publish './build/package' --pnpm --template='./sample/playground'",
88
- "test": "npm run compile && npm run test:fast --",
89
- "test:ci": "mocha --bail",
90
- "test:fast": "mocha",
91
- "typecheck": "tsc --noEmit",
92
- "watch": "tsc --watch"
93
- },
94
- "dependencies": {
95
- "@sqltools/formatter": "^1.2.5",
96
- "ansis": "^3.17.0",
97
- "app-root-path": "^3.1.0",
98
- "buffer": "^6.0.3",
99
- "dayjs": "^1.11.13",
100
- "debug": "^4.4.0",
101
- "dedent": "^1.6.0",
102
- "dotenv": "^16.4.7",
103
- "glob": "^10.4.5",
104
- "sha.js": "^2.4.11",
105
- "sql-highlight": "^6.0.0",
106
- "tslib": "^2.8.1",
107
- "uuid": "^11.1.0",
108
- "yargs": "^17.7.2"
109
- },
110
- "devDependencies": {
111
- "@eslint/js": "^9.29.0",
112
- "@sap/hana-client": "^2.25.22",
113
- "@tsconfig/node16": "^16.1.4",
114
- "@types/chai": "^4.3.20",
115
- "@types/chai-as-promised": "^7.1.8",
116
- "@types/debug": "^4.1.12",
117
- "@types/gulp-rename": "^2.0.6",
118
- "@types/gulp-sourcemaps": "^0.0.38",
119
- "@types/mocha": "^10.0.10",
120
- "@types/node": "^16.18.126",
121
- "@types/sha.js": "^2.4.4",
122
- "@types/sinon": "^10.0.20",
123
- "@types/sinon-chai": "^4.0.0",
124
- "@types/source-map-support": "^0.5.10",
125
- "@types/yargs": "^17.0.33",
126
- "better-sqlite3": "^8.7.0",
127
- "chai": "^4.5.0",
128
- "chai-as-promised": "^7.1.2",
129
- "class-transformer": "^0.5.1",
130
- "eslint": "^9.29.0",
131
- "globals": "^16.2.0",
132
- "gulp": "^4.0.2",
133
- "gulp-rename": "^2.0.0",
134
- "gulp-replace": "^1.1.4",
135
- "gulp-shell": "^0.8.0",
136
- "gulp-sourcemaps": "^3.0.0",
137
- "gulp-typescript": "^6.0.0-alpha.1",
138
- "gulpclass": "^0.2.0",
139
- "husky": "^9.1.7",
140
- "lint-staged": "^15.5.2",
141
- "mocha": "^10.8.2",
142
- "mongodb": "^6.15.0",
143
- "mssql": "^11.0.1",
144
- "mysql": "^2.18.1",
145
- "mysql2": "^3.14.0",
146
- "nyc": "^17.1.0",
147
- "oracledb": "^6.8.0",
148
- "pg": "^8.14.1",
149
- "pg-query-stream": "^4.8.1",
150
- "pkg-pr-new": "^0.0.43",
151
- "prettier": "^2.8.8",
152
- "redis": "^5.7.0",
153
- "reflect-metadata": "^0.2.2",
154
- "remap-istanbul": "^0.13.0",
155
- "rimraf": "^5.0.10",
156
- "sinon": "^15.2.0",
157
- "sinon-chai": "^3.7.0",
158
- "sort-package-json": "^2.15.1",
159
- "source-map-support": "^0.5.21",
160
- "sql.js": "^1.13.0",
161
- "sqlite3": "^5.1.7",
162
- "standard-changelog": "^6.0.0",
163
- "ts-node": "^10.9.2",
164
- "typescript": "^5.8.3",
165
- "typescript-eslint": "^8.34.1"
166
- },
167
- "peerDependencies": {
168
- "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0",
169
- "@sap/hana-client": "^2.14.22",
170
- "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0",
171
- "ioredis": "^5.0.4",
172
- "mongodb": "^5.8.0 || ^6.0.0",
173
- "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1",
174
- "mysql2": "^2.2.5 || ^3.0.1",
175
- "oracledb": "^6.3.0",
176
- "pg": "^8.5.1",
177
- "pg-native": "^3.0.0",
178
- "pg-query-stream": "^4.0.0",
179
- "redis": "^3.1.1 || ^4.0.0 || ^5.0.14",
180
- "reflect-metadata": "^0.1.14 || ^0.2.0",
181
- "sql.js": "^1.4.0",
182
- "sqlite3": "^5.0.3",
183
- "ts-node": "^10.7.0",
184
- "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0"
185
- },
186
- "peerDependenciesMeta": {
187
- "@google-cloud/spanner": {
188
- "optional": true
189
- },
190
- "@sap/hana-client": {
191
- "optional": true
192
- },
193
- "better-sqlite3": {
194
- "optional": true
195
- },
196
- "ioredis": {
197
- "optional": true
198
- },
199
- "mongodb": {
200
- "optional": true
201
- },
202
- "mssql": {
203
- "optional": true
204
- },
205
- "mysql2": {
206
- "optional": true
207
- },
208
- "oracledb": {
209
- "optional": true
210
- },
211
- "pg": {
212
- "optional": true
213
- },
214
- "pg-native": {
215
- "optional": true
216
- },
217
- "pg-query-stream": {
218
- "optional": true
219
- },
220
- "redis": {
221
- "optional": true
222
- },
223
- "sql.js": {
224
- "optional": true
225
- },
226
- "sqlite3": {
227
- "optional": true
228
- },
229
- "ts-node": {
230
- "optional": true
231
- },
232
- "typeorm-aurora-data-api-driver": {
233
- "optional": true
234
- }
235
- },
236
- "engines": {
237
- "node": ">=16.13.0"
238
- },
239
- "collective": {
240
- "type": "opencollective",
241
- "url": "https://opencollective.com/typeorm",
242
- "logo": "https://opencollective.com/opencollective/logo.txt"
243
- },
244
- "readmeFilename": "README.md",
245
- "tags": [
246
- "orm",
247
- "typescript",
248
- "typescript-orm",
249
- "mariadb",
250
- "mariadb-orm",
251
- "mysql",
252
- "mysql-orm",
253
- "oracle",
254
- "oracle-orm",
255
- "postgresql",
256
- "postgresql-orm",
257
- "sap-hana",
258
- "sap-hana-orm",
259
- "spanner",
260
- "cloud-spanner",
261
- "cloud-spanner-orm",
262
- "sqlite",
263
- "sqlite-orm",
264
- "sql-server",
265
- "sql-server-orm"
266
- ]
267
- }
1
+ { "name": "typeorm", "version": "0.3.27-dev.22b26d1", "description": "Data-Mapper ORM for TypeScript and ES2021+. Supports MySQL/MariaDB, PostgreSQL, MS SQL Server, Oracle, SAP HANA, SQLite, MongoDB databases.", "homepage": "https://typeorm.io", "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "funding": "https://opencollective.com/typeorm", "license": "MIT", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "exports": { ".": { "types": "./index.d.ts", "node": { "types": "./index.d.ts", "import": "./index.mjs", "require": "./index.js" }, "browser": { "require": "./index.js", "import": "./browser/index.js", "default": "./index.js" } }, "./browser": { "types": "./index.d.ts", "default": "./browser/index.js" }, "./*.js": "./*.js", "./*": { "require": "./*.js", "import": "./*" } }, "main": "./index.js", "module": "./index.mjs", "browser": { "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/bson.typings.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/typings.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./index.js": "./browser/index.js", "./index.mjs": "./browser/index.js" }, "types": "./index.d.ts", "bin": { "typeorm": "./cli.js", "typeorm-ts-node-commonjs": "./cli-ts-node-commonjs.js", "typeorm-ts-node-esm": "./cli-ts-node-esm.js" }, "scripts": { "changelog": "standard-changelog", "compile": "rimraf ./build && tsc", "docs:dev": "cd docs && npm run start", "format": "prettier --cache --write \"./**/*.ts\"", "format:ci": "prettier --check \"./**/*.ts\"", "lint": "eslint .", "pack": "gulp pack", "package": "gulp package", "pre-commit": "lint-staged", "prepare": "husky", "publish:preview": "pkg-pr-new publish './build/package' --pnpm --template='./sample/playground'", "test": "npm run compile && npm run test:fast --", "test:ci": "mocha --bail", "test:fast": "mocha", "typecheck": "tsc --noEmit", "watch": "tsc --watch" }, "dependencies": { "@sqltools/formatter": "^1.2.5", "ansis": "^3.17.0", "app-root-path": "^3.1.0", "buffer": "^6.0.3", "dayjs": "^1.11.13", "debug": "^4.4.0", "dedent": "^1.6.0", "dotenv": "^16.4.7", "glob": "^10.4.5", "sha.js": "^2.4.11", "sql-highlight": "^6.0.0", "tslib": "^2.8.1", "uuid": "^11.1.0", "yargs": "^17.7.2" }, "devDependencies": { "@eslint/js": "^9.29.0", "@sap/hana-client": "^2.25.22", "@tsconfig/node16": "^16.1.4", "@types/chai": "^4.3.20", "@types/chai-as-promised": "^7.1.8", "@types/debug": "^4.1.12", "@types/gulp-rename": "^2.0.6", "@types/gulp-sourcemaps": "^0.0.38", "@types/mocha": "^10.0.10", "@types/node": "^16.18.126", "@types/sha.js": "^2.4.4", "@types/sinon": "^10.0.20", "@types/sinon-chai": "^4.0.0", "@types/source-map-support": "^0.5.10", "@types/yargs": "^17.0.33", "better-sqlite3": "^8.7.0", "chai": "^4.5.0", "chai-as-promised": "^7.1.2", "class-transformer": "^0.5.1", "eslint": "^9.29.0", "globals": "^16.2.0", "gulp": "^4.0.2", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^9.1.7", "lint-staged": "^15.5.2", "mocha": "^10.8.2", "mongodb": "^6.15.0", "mssql": "^11.0.1", "mysql": "^2.18.1", "mysql2": "^3.14.0", "nyc": "^17.1.0", "oracledb": "^6.8.0", "pg": "^8.14.1", "pg-query-stream": "^4.8.1", "pkg-pr-new": "^0.0.43", "prettier": "^2.8.8", "redis": "^5.7.0", "reflect-metadata": "^0.2.2", "remap-istanbul": "^0.13.0", "rimraf": "^5.0.10", "sinon": "^15.2.0", "sinon-chai": "^3.7.0", "sort-package-json": "^2.15.1", "source-map-support": "^0.5.21", "sql.js": "^1.13.0", "sqlite3": "^5.1.7", "standard-changelog": "^6.0.0", "ts-node": "^10.9.2", "typescript": "^5.8.3", "typescript-eslint": "^8.34.1" }, "peerDependencies": { "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", "@sap/hana-client": "^2.14.22", "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", "ioredis": "^5.0.4", "mongodb": "^5.8.0 || ^6.0.0", "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", "mysql2": "^2.2.5 || ^3.0.1", "oracledb": "^6.3.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", "reflect-metadata": "^0.1.14 || ^0.2.0", "sql.js": "^1.4.0", "sqlite3": "^5.0.3", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" }, "peerDependenciesMeta": { "@google-cloud/spanner": { "optional": true }, "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "ts-node": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "engines": { "node": ">=16.13.0" }, "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "readmeFilename": "README.md", "tags": [ "orm", "typescript", "typescript-orm", "mariadb", "mariadb-orm", "mysql", "mysql-orm", "oracle", "oracle-orm", "postgresql", "postgresql-orm", "sap-hana", "sap-hana-orm", "spanner", "cloud-spanner", "cloud-spanner-orm", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm" ] }
@@ -1670,12 +1670,9 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
1670
1670
  return finalSelects;
1671
1671
  }
1672
1672
  findEntityColumnSelects(aliasName, metadata) {
1673
- const mainSelect = this.expressionMap.selects.find((select) => select.selection === aliasName);
1674
- if (mainSelect)
1675
- return [mainSelect];
1676
- return this.expressionMap.selects.filter((select) => {
1677
- return metadata.columns.some((column) => select.selection === aliasName + "." + column.propertyPath);
1678
- });
1673
+ return this.expressionMap.selects.filter((select) => select.selection === aliasName ||
1674
+ metadata.columns.some((column) => select.selection ===
1675
+ aliasName + "." + column.propertyPath));
1679
1676
  }
1680
1677
  computeCountExpression() {
1681
1678
  const mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with "fromTableName"?