typeorm 0.3.11-dev.6eb674b → 0.3.11-dev.7fbc3ad

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.
Files changed (139) hide show
  1. package/README.md +2 -2
  2. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  3. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  4. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  5. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  6. package/browser/driver/postgres/PostgresDriver.js +11 -1
  7. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  8. package/browser/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  9. package/browser/driver/postgres/PostgresQueryRunner.js +97 -0
  10. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  11. package/browser/driver/react-native/ReactNativeQueryRunner.js +4 -4
  12. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  13. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  14. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  15. package/browser/driver/sqlite/SqliteDriver.js +18 -6
  16. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  17. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  18. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  19. package/browser/entity-manager/EntityManager.js +3 -1
  20. package/browser/entity-manager/EntityManager.js.map +1 -1
  21. package/browser/find-options/FindOperatorType.d.ts +1 -1
  22. package/browser/find-options/FindOperatorType.js.map +1 -1
  23. package/browser/find-options/FindOptionsOrder.d.ts +1 -1
  24. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  25. package/browser/find-options/FindOptionsRelations.d.ts +1 -1
  26. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  27. package/browser/find-options/FindOptionsSelect.d.ts +1 -1
  28. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  29. package/browser/find-options/FindOptionsWhere.d.ts +2 -2
  30. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  31. package/browser/find-options/operator/And.d.ts +2 -0
  32. package/browser/find-options/operator/And.js +6 -0
  33. package/browser/find-options/operator/And.js.map +1 -0
  34. package/browser/index.d.ts +1 -0
  35. package/browser/index.js +1 -0
  36. package/browser/index.js.map +1 -1
  37. package/browser/migration/MigrationExecutor.js +1 -1
  38. package/browser/migration/MigrationExecutor.js.map +1 -1
  39. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  40. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  41. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  42. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  43. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  44. package/browser/query-builder/QueryBuilder.js +9 -0
  45. package/browser/query-builder/QueryBuilder.js.map +1 -1
  46. package/browser/query-builder/RelationLoader.js +1 -0
  47. package/browser/query-builder/RelationLoader.js.map +1 -1
  48. package/browser/query-builder/SelectQueryBuilder.js +4 -8
  49. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  50. package/browser/query-builder/WhereClause.d.ts +1 -1
  51. package/browser/query-builder/WhereClause.js.map +1 -1
  52. package/browser/query-runner/BaseQueryRunner.d.ts +1 -1
  53. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  54. package/browser/repository/Repository.d.ts +1 -1
  55. package/browser/repository/Repository.js.map +1 -1
  56. package/browser/repository/TreeRepository.d.ts +0 -4
  57. package/browser/repository/TreeRepository.js +0 -11
  58. package/browser/repository/TreeRepository.js.map +1 -1
  59. package/browser/repository/UpsertOptions.d.ts +3 -1
  60. package/browser/repository/UpsertOptions.js.map +1 -1
  61. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  62. package/browser/schema-builder/RdbmsSchemaBuilder.js +74 -2
  63. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  64. package/browser/schema-builder/view/View.d.ts +13 -1
  65. package/browser/schema-builder/view/View.js +16 -0
  66. package/browser/schema-builder/view/View.js.map +1 -1
  67. package/browser/util/TreeRepositoryUtils.js +16 -6
  68. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  69. package/commands/MigrationRevertCommand.js +1 -0
  70. package/commands/MigrationRevertCommand.js.map +1 -1
  71. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -6
  72. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  73. package/driver/postgres/PostgresConnectionOptions.d.ts +16 -0
  74. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  75. package/driver/postgres/PostgresDriver.js +11 -1
  76. package/driver/postgres/PostgresDriver.js.map +1 -1
  77. package/driver/postgres/PostgresQueryRunner.d.ts +17 -1
  78. package/driver/postgres/PostgresQueryRunner.js +97 -0
  79. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  80. package/driver/react-native/ReactNativeQueryRunner.js +4 -4
  81. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  82. package/driver/sqlite/SqliteConnectionOptions.d.ts +6 -0
  83. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  84. package/driver/sqlite/SqliteDriver.js +18 -6
  85. package/driver/sqlite/SqliteDriver.js.map +1 -1
  86. package/driver/sqlite-abstract/AbstractSqliteDriver.js +6 -0
  87. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  88. package/entity-manager/EntityManager.js +3 -1
  89. package/entity-manager/EntityManager.js.map +1 -1
  90. package/find-options/FindOperatorType.d.ts +1 -1
  91. package/find-options/FindOperatorType.js.map +1 -1
  92. package/find-options/FindOptionsOrder.d.ts +1 -1
  93. package/find-options/FindOptionsOrder.js.map +1 -1
  94. package/find-options/FindOptionsRelations.d.ts +1 -1
  95. package/find-options/FindOptionsRelations.js.map +1 -1
  96. package/find-options/FindOptionsSelect.d.ts +1 -1
  97. package/find-options/FindOptionsSelect.js.map +1 -1
  98. package/find-options/FindOptionsWhere.d.ts +2 -2
  99. package/find-options/FindOptionsWhere.js.map +1 -1
  100. package/find-options/operator/And.d.ts +2 -0
  101. package/find-options/operator/And.js +10 -0
  102. package/find-options/operator/And.js.map +1 -0
  103. package/index.d.ts +1 -0
  104. package/index.js +1 -0
  105. package/index.js.map +1 -1
  106. package/index.mjs +2 -0
  107. package/migration/MigrationExecutor.js +1 -1
  108. package/migration/MigrationExecutor.js.map +1 -1
  109. package/naming-strategy/NamingStrategyInterface.d.ts +2 -1
  110. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  111. package/package.json +1 -1
  112. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +1 -0
  113. package/persistence/tree/MaterializedPathSubjectExecutor.js +19 -4
  114. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  115. package/query-builder/QueryBuilder.js +9 -0
  116. package/query-builder/QueryBuilder.js.map +1 -1
  117. package/query-builder/RelationLoader.js +1 -0
  118. package/query-builder/RelationLoader.js.map +1 -1
  119. package/query-builder/SelectQueryBuilder.js +4 -8
  120. package/query-builder/SelectQueryBuilder.js.map +1 -1
  121. package/query-builder/WhereClause.d.ts +1 -1
  122. package/query-builder/WhereClause.js.map +1 -1
  123. package/query-runner/BaseQueryRunner.d.ts +1 -1
  124. package/query-runner/BaseQueryRunner.js.map +1 -1
  125. package/repository/Repository.d.ts +1 -1
  126. package/repository/Repository.js.map +1 -1
  127. package/repository/TreeRepository.d.ts +0 -4
  128. package/repository/TreeRepository.js +0 -11
  129. package/repository/TreeRepository.js.map +1 -1
  130. package/repository/UpsertOptions.d.ts +3 -1
  131. package/repository/UpsertOptions.js.map +1 -1
  132. package/schema-builder/RdbmsSchemaBuilder.d.ts +4 -0
  133. package/schema-builder/RdbmsSchemaBuilder.js +74 -2
  134. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  135. package/schema-builder/view/View.d.ts +13 -1
  136. package/schema-builder/view/View.js +16 -0
  137. package/schema-builder/view/View.js.map +1 -1
  138. package/util/TreeRepositoryUtils.js +16 -6
  139. package/util/TreeRepositoryUtils.js.map +1 -1
@@ -8,27 +8,34 @@ export class TreeRepositoryUtils {
8
8
  // -------------------------------------------------------------------------
9
9
  static createRelationMaps(manager, metadata, alias, rawResults) {
10
10
  return rawResults.map((rawResult) => {
11
+ var _a;
11
12
  const joinColumn = metadata.treeParentRelation.joinColumns[0];
13
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
12
14
  // fixes issue #2518, default to databaseName property when givenDatabaseName is not set
13
15
  const joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;
14
- const id = rawResult[alias + "_" + metadata.primaryColumns[0].databaseName];
16
+ const referencedColumnName = referencedColumn.givenDatabaseName ||
17
+ referencedColumn.databaseName;
18
+ const id = rawResult[alias + "_" + referencedColumnName];
15
19
  const parentId = rawResult[alias + "_" + joinColumnName];
16
20
  return {
17
- id: manager.connection.driver.prepareHydratedValue(id, metadata.primaryColumns[0]),
21
+ id: manager.connection.driver.prepareHydratedValue(id, referencedColumn),
18
22
  parentId: manager.connection.driver.prepareHydratedValue(parentId, joinColumn),
19
23
  };
20
24
  });
21
25
  }
22
26
  static buildChildrenEntityTree(metadata, entity, entities, relationMaps, options) {
27
+ var _a;
23
28
  const childProperty = metadata.treeChildrenRelation.propertyName;
24
29
  if (options.depth === 0) {
25
30
  entity[childProperty] = [];
26
31
  return;
27
32
  }
28
- const parentEntityId = metadata.primaryColumns[0].getEntityValue(entity);
33
+ const joinColumn = metadata.treeParentRelation.joinColumns[0];
34
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
35
+ const parentEntityId = referencedColumn.getEntityValue(entity);
29
36
  const childRelationMaps = relationMaps.filter((relationMap) => relationMap.parentId === parentEntityId);
30
37
  const childIds = new Set(childRelationMaps.map((relationMap) => relationMap.id));
31
- entity[childProperty] = entities.filter((entity) => childIds.has(metadata.primaryColumns[0].getEntityValue(entity)));
38
+ entity[childProperty] = entities.filter((entity) => childIds.has(referencedColumn.getEntityValue(entity)));
32
39
  entity[childProperty].forEach((childEntity) => {
33
40
  TreeRepositoryUtils.buildChildrenEntityTree(metadata, childEntity, entities, relationMaps, {
34
41
  ...options,
@@ -37,13 +44,16 @@ export class TreeRepositoryUtils {
37
44
  });
38
45
  }
39
46
  static buildParentEntityTree(metadata, entity, entities, relationMaps) {
47
+ var _a;
40
48
  const parentProperty = metadata.treeParentRelation.propertyName;
41
- const entityId = metadata.primaryColumns[0].getEntityValue(entity);
49
+ const joinColumn = metadata.treeParentRelation.joinColumns[0];
50
+ const referencedColumn = (_a = joinColumn.referencedColumn) !== null && _a !== void 0 ? _a : metadata.primaryColumns[0];
51
+ const entityId = referencedColumn.getEntityValue(entity);
42
52
  const parentRelationMap = relationMaps.find((relationMap) => relationMap.id === entityId);
43
53
  const parentEntity = entities.find((entity) => {
44
54
  if (!parentRelationMap)
45
55
  return false;
46
- return (metadata.primaryColumns[0].getEntityValue(entity) ===
56
+ return (referencedColumn.getEntityValue(entity) ===
47
57
  parentRelationMap.parentId);
48
58
  });
49
59
  if (parentEntity) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/util/TreeRepositoryUtils.ts"],"names":[],"mappings":"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","file":"TreeRepositoryUtils.js","sourcesContent":["import { EntityManager } from \"../entity-manager/EntityManager\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { FindTreesOptions } from \"../repository/FindTreesOptions\"\n\n/**\n * Provides utilities for manipulating tree structures.\n *\n */\nexport class TreeRepositoryUtils {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n static createRelationMaps(\n manager: EntityManager,\n metadata: EntityMetadata,\n alias: string,\n rawResults: any[],\n ): { id: any; parentId: any }[] {\n return rawResults.map((rawResult) => {\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName =\n joinColumn.givenDatabaseName || joinColumn.databaseName\n const id =\n rawResult[alias + \"_\" + metadata.primaryColumns[0].databaseName]\n const parentId = rawResult[alias + \"_\" + joinColumnName]\n return {\n id: manager.connection.driver.prepareHydratedValue(\n id,\n metadata.primaryColumns[0],\n ),\n parentId: manager.connection.driver.prepareHydratedValue(\n parentId,\n joinColumn,\n ),\n }\n })\n }\n\n static buildChildrenEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n options: FindTreesOptions & { depth: number },\n ): void {\n const childProperty = metadata.treeChildrenRelation!.propertyName\n if (options.depth === 0) {\n entity[childProperty] = []\n return\n }\n const parentEntityId = metadata.primaryColumns[0].getEntityValue(entity)\n const childRelationMaps = relationMaps.filter(\n (relationMap) => relationMap.parentId === parentEntityId,\n )\n const childIds = new Set(\n childRelationMaps.map((relationMap) => relationMap.id),\n )\n entity[childProperty] = entities.filter((entity) =>\n childIds.has(metadata.primaryColumns[0].getEntityValue(entity)),\n )\n entity[childProperty].forEach((childEntity: any) => {\n TreeRepositoryUtils.buildChildrenEntityTree(\n metadata,\n childEntity,\n entities,\n relationMaps,\n {\n ...options,\n depth: options.depth - 1,\n },\n )\n })\n }\n\n static buildParentEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n ): void {\n const parentProperty = metadata.treeParentRelation!.propertyName\n const entityId = metadata.primaryColumns[0].getEntityValue(entity)\n const parentRelationMap = relationMaps.find(\n (relationMap) => relationMap.id === entityId,\n )\n const parentEntity = entities.find((entity) => {\n if (!parentRelationMap) return false\n\n return (\n metadata.primaryColumns[0].getEntityValue(entity) ===\n parentRelationMap.parentId\n )\n })\n if (parentEntity) {\n entity[parentProperty] = parentEntity\n TreeRepositoryUtils.buildParentEntityTree(\n metadata,\n entity[parentProperty],\n entities,\n relationMaps,\n )\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/util/TreeRepositoryUtils.ts"],"names":[],"mappings":"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","file":"TreeRepositoryUtils.js","sourcesContent":["import { EntityManager } from \"../entity-manager/EntityManager\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { FindTreesOptions } from \"../repository/FindTreesOptions\"\n\n/**\n * Provides utilities for manipulating tree structures.\n *\n */\nexport class TreeRepositoryUtils {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n static createRelationMaps(\n manager: EntityManager,\n metadata: EntityMetadata,\n alias: string,\n rawResults: any[],\n ): { id: any; parentId: any }[] {\n return rawResults.map((rawResult) => {\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName =\n joinColumn.givenDatabaseName || joinColumn.databaseName\n const referencedColumnName =\n referencedColumn.givenDatabaseName ||\n referencedColumn.databaseName\n const id = rawResult[alias + \"_\" + referencedColumnName]\n const parentId = rawResult[alias + \"_\" + joinColumnName]\n return {\n id: manager.connection.driver.prepareHydratedValue(\n id,\n referencedColumn,\n ),\n parentId: manager.connection.driver.prepareHydratedValue(\n parentId,\n joinColumn,\n ),\n }\n })\n }\n\n static buildChildrenEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n options: FindTreesOptions & { depth: number },\n ): void {\n const childProperty = metadata.treeChildrenRelation!.propertyName\n if (options.depth === 0) {\n entity[childProperty] = []\n return\n }\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n const parentEntityId = referencedColumn.getEntityValue(entity)\n const childRelationMaps = relationMaps.filter(\n (relationMap) => relationMap.parentId === parentEntityId,\n )\n const childIds = new Set(\n childRelationMaps.map((relationMap) => relationMap.id),\n )\n entity[childProperty] = entities.filter((entity) =>\n childIds.has(referencedColumn.getEntityValue(entity)),\n )\n entity[childProperty].forEach((childEntity: any) => {\n TreeRepositoryUtils.buildChildrenEntityTree(\n metadata,\n childEntity,\n entities,\n relationMaps,\n {\n ...options,\n depth: options.depth - 1,\n },\n )\n })\n }\n\n static buildParentEntityTree(\n metadata: EntityMetadata,\n entity: any,\n entities: any[],\n relationMaps: { id: any; parentId: any }[],\n ): void {\n const parentProperty = metadata.treeParentRelation!.propertyName\n const joinColumn = metadata.treeParentRelation!.joinColumns[0]\n const referencedColumn =\n joinColumn.referencedColumn ?? metadata.primaryColumns[0]\n const entityId = referencedColumn.getEntityValue(entity)\n const parentRelationMap = relationMaps.find(\n (relationMap) => relationMap.id === entityId,\n )\n const parentEntity = entities.find((entity) => {\n if (!parentRelationMap) return false\n\n return (\n referencedColumn.getEntityValue(entity) ===\n parentRelationMap.parentId\n )\n })\n if (parentEntity) {\n entity[parentProperty] = parentEntity\n TreeRepositoryUtils.buildParentEntityTree(\n metadata,\n entity[parentProperty],\n entities,\n relationMaps,\n )\n }\n }\n}\n"],"sourceRoot":".."}
@@ -48,6 +48,7 @@ class MigrationRevertCommand {
48
48
  await dataSource.initialize();
49
49
  const options = {
50
50
  transaction: (_a = dataSource.options.migrationsTransactionMode) !== null && _a !== void 0 ? _a : "all",
51
+ fake: !!args.f,
51
52
  };
52
53
  switch (args.t) {
53
54
  case "all":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/commands/MigrationRevertCommand.ts"],"names":[],"mappings":";;;;AAEA,6DAAyD;AACzD,wDAAuB;AACvB,8DAA6B;AAC7B,iDAA6C;AAE7C;;GAEG;AACH,MAAa,sBAAsB;IAAnC;QACI,YAAO,GAAG,kBAAkB,CAAA;QAC5B,aAAQ,GAAG,kCAAkC,CAAA;IAuEjD,CAAC;IArEG,OAAO,CAAC,IAAgB;QACpB,OAAO,IAAI;aACN,MAAM,CAAC,YAAY,EAAE;YAClB,KAAK,EAAE,GAAG;YACV,QAAQ,EACJ,6DAA6D;YACjE,YAAY,EAAE,IAAI;SACrB,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACnB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,SAAS;YAClB,QAAQ,EACJ,0FAA0F;SACjG,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACZ,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,+BAA+B;SAC5C,CAAC,CAAA;IACV,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAqB;;QAC/B,IAAI,UAAU,GAA2B,SAAS,CAAA;QAClD,IAAI;YACA,UAAU,GAAG,MAAM,2BAAY,CAAC,cAAc,CAC1C,cAAI,CAAC,OAAO,CAAC,iBAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAoB,CAAC,CACzD,CAAA;YACD,UAAU,CAAC,UAAU,CAAC;gBAClB,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;aACxC,CAAC,CAAA;YACF,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;YAE7B,MAAM,OAAO,GAAG;gBACZ,WAAW,EACP,MAAA,UAAU,CAAC,OAAO,CAAC,yBAAyB,mCAC3C,KAAiC;aACzC,CAAA;YAED,QAAQ,IAAI,CAAC,CAAC,EAAE;gBACZ,KAAK,KAAK;oBACN,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;oBAC3B,MAAK;gBACT,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO;oBACR,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;oBAC5B,MAAK;gBACT,KAAK,MAAM;oBACP,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;oBAC5B,MAAK;gBACT,QAAQ;gBACR,OAAO;aACV;YAED,MAAM,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC3C,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;SAC7B;QAAC,OAAO,GAAG,EAAE;YACV,6BAAa,CAAC,SAAS,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;YAE9D,IAAI,UAAU,IAAI,UAAU,CAAC,aAAa;gBACtC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;YAE9B,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAClB;IACL,CAAC;CACJ;AAzED,wDAyEC","file":"MigrationRevertCommand.js","sourcesContent":["import { DataSource } from \"../data-source/DataSource\"\nimport * as yargs from \"yargs\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport path from \"path\"\nimport process from \"process\"\nimport { CommandUtils } from \"./CommandUtils\"\n\n/**\n * Reverts last migration command.\n */\nexport class MigrationRevertCommand implements yargs.CommandModule {\n command = \"migration:revert\"\n describe = \"Reverts last executed migration.\"\n\n builder(args: yargs.Argv) {\n return args\n .option(\"dataSource\", {\n alias: \"d\",\n describe:\n \"Path to the file where your DataSource instance is defined.\",\n demandOption: true,\n })\n .option(\"transaction\", {\n alias: \"t\",\n default: \"default\",\n describe:\n \"Indicates if transaction should be used or not for migration revert. Enabled by default.\",\n })\n .option(\"fake\", {\n alias: \"f\",\n type: \"boolean\",\n default: false,\n describe: \"Fakes reverting the migration\",\n })\n }\n\n async handler(args: yargs.Arguments) {\n let dataSource: DataSource | undefined = undefined\n try {\n dataSource = await CommandUtils.loadDataSource(\n path.resolve(process.cwd(), args.dataSource as string),\n )\n dataSource.setOptions({\n subscribers: [],\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: [\"query\", \"error\", \"schema\"],\n })\n await dataSource.initialize()\n\n const options = {\n transaction:\n dataSource.options.migrationsTransactionMode ??\n (\"all\" as \"all\" | \"none\" | \"each\"),\n }\n\n switch (args.t) {\n case \"all\":\n options.transaction = \"all\"\n break\n case \"none\":\n case \"false\":\n options.transaction = \"none\"\n break\n case \"each\":\n options.transaction = \"each\"\n break\n default:\n // noop\n }\n\n await dataSource.undoLastMigration(options)\n await dataSource.destroy()\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during migration revert:\", err)\n\n if (dataSource && dataSource.isInitialized)\n await dataSource.destroy()\n\n process.exit(1)\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/commands/MigrationRevertCommand.ts"],"names":[],"mappings":";;;;AAEA,6DAAyD;AACzD,wDAAuB;AACvB,8DAA6B;AAC7B,iDAA6C;AAE7C;;GAEG;AACH,MAAa,sBAAsB;IAAnC;QACI,YAAO,GAAG,kBAAkB,CAAA;QAC5B,aAAQ,GAAG,kCAAkC,CAAA;IAwEjD,CAAC;IAtEG,OAAO,CAAC,IAAgB;QACpB,OAAO,IAAI;aACN,MAAM,CAAC,YAAY,EAAE;YAClB,KAAK,EAAE,GAAG;YACV,QAAQ,EACJ,6DAA6D;YACjE,YAAY,EAAE,IAAI;SACrB,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACnB,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,SAAS;YAClB,QAAQ,EACJ,0FAA0F;SACjG,CAAC;aACD,MAAM,CAAC,MAAM,EAAE;YACZ,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,+BAA+B;SAC5C,CAAC,CAAA;IACV,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAqB;;QAC/B,IAAI,UAAU,GAA2B,SAAS,CAAA;QAClD,IAAI;YACA,UAAU,GAAG,MAAM,2BAAY,CAAC,cAAc,CAC1C,cAAI,CAAC,OAAO,CAAC,iBAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,UAAoB,CAAC,CACzD,CAAA;YACD,UAAU,CAAC,UAAU,CAAC;gBAClB,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;aACxC,CAAC,CAAA;YACF,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;YAE7B,MAAM,OAAO,GAAG;gBACZ,WAAW,EACP,MAAA,UAAU,CAAC,OAAO,CAAC,yBAAyB,mCAC3C,KAAiC;gBACtC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;aACjB,CAAA;YAED,QAAQ,IAAI,CAAC,CAAC,EAAE;gBACZ,KAAK,KAAK;oBACN,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;oBAC3B,MAAK;gBACT,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO;oBACR,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;oBAC5B,MAAK;gBACT,KAAK,MAAM;oBACP,OAAO,CAAC,WAAW,GAAG,MAAM,CAAA;oBAC5B,MAAK;gBACT,QAAQ;gBACR,OAAO;aACV;YAED,MAAM,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC3C,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;SAC7B;QAAC,OAAO,GAAG,EAAE;YACV,6BAAa,CAAC,SAAS,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;YAE9D,IAAI,UAAU,IAAI,UAAU,CAAC,aAAa;gBACtC,MAAM,UAAU,CAAC,OAAO,EAAE,CAAA;YAE9B,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAClB;IACL,CAAC;CACJ;AA1ED,wDA0EC","file":"MigrationRevertCommand.js","sourcesContent":["import { DataSource } from \"../data-source/DataSource\"\nimport * as yargs from \"yargs\"\nimport { PlatformTools } from \"../platform/PlatformTools\"\nimport path from \"path\"\nimport process from \"process\"\nimport { CommandUtils } from \"./CommandUtils\"\n\n/**\n * Reverts last migration command.\n */\nexport class MigrationRevertCommand implements yargs.CommandModule {\n command = \"migration:revert\"\n describe = \"Reverts last executed migration.\"\n\n builder(args: yargs.Argv) {\n return args\n .option(\"dataSource\", {\n alias: \"d\",\n describe:\n \"Path to the file where your DataSource instance is defined.\",\n demandOption: true,\n })\n .option(\"transaction\", {\n alias: \"t\",\n default: \"default\",\n describe:\n \"Indicates if transaction should be used or not for migration revert. Enabled by default.\",\n })\n .option(\"fake\", {\n alias: \"f\",\n type: \"boolean\",\n default: false,\n describe: \"Fakes reverting the migration\",\n })\n }\n\n async handler(args: yargs.Arguments) {\n let dataSource: DataSource | undefined = undefined\n try {\n dataSource = await CommandUtils.loadDataSource(\n path.resolve(process.cwd(), args.dataSource as string),\n )\n dataSource.setOptions({\n subscribers: [],\n synchronize: false,\n migrationsRun: false,\n dropSchema: false,\n logging: [\"query\", \"error\", \"schema\"],\n })\n await dataSource.initialize()\n\n const options = {\n transaction:\n dataSource.options.migrationsTransactionMode ??\n (\"all\" as \"all\" | \"none\" | \"each\"),\n fake: !!args.f,\n }\n\n switch (args.t) {\n case \"all\":\n options.transaction = \"all\"\n break\n case \"none\":\n case \"false\":\n options.transaction = \"none\"\n break\n case \"each\":\n options.transaction = \"each\"\n break\n default:\n // noop\n }\n\n await dataSource.undoLastMigration(options)\n await dataSource.destroy()\n } catch (err) {\n PlatformTools.logCmdErr(\"Error during migration revert:\", err)\n\n if (dataSource && dataSource.isInitialized)\n await dataSource.destroy()\n\n process.exit(1)\n }\n }\n}\n"],"sourceRoot":".."}
@@ -69,12 +69,6 @@ class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqlit
69
69
  if (this.isReleased)
70
70
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
71
71
  const connection = this.driver.connection;
72
- parameters = parameters || [];
73
- for (let i = 0; i < parameters.length; i++) {
74
- // in "where" clauses the parameters are not escaped by the driver
75
- if (typeof parameters[i] === "boolean")
76
- parameters[i] = +parameters[i];
77
- }
78
72
  this.driver.connection.logger.logQuery(query, parameters, this);
79
73
  const queryStartTime = +new Date();
80
74
  const stmt = await this.getStmt(query);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/better-sqlite3/BetterSqlite3QueryRunner.ts"],"names":[],"mappings":"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","file":"BetterSqlite3QueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BetterSqlite3Driver } from \"./BetterSqlite3Driver\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: BetterSqlite3Driver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: BetterSqlite3Driver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n if (typeof this.driver.options.statementCacheSize === \"number\") {\n this.cacheSize = this.driver.options.statementCacheSize\n } else {\n this.cacheSize = 100\n }\n }\n\n private cacheSize: number\n private stmtCache = new Map<string, any>()\n\n private async getStmt(query: string) {\n if (this.cacheSize > 0) {\n let stmt = this.stmtCache.get(query)\n if (!stmt) {\n const databaseConnection = await this.connect()\n stmt = databaseConnection.prepare(query)\n this.stmtCache.set(query, stmt)\n while (this.stmtCache.size > this.cacheSize) {\n // since es6 map keeps the insertion order,\n // it comes to be FIFO cache\n const key = this.stmtCache.keys().next().value\n this.stmtCache.delete(key)\n }\n }\n return stmt\n } else {\n const databaseConnection = await this.connect()\n return databaseConnection.prepare(query)\n }\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n\n parameters = parameters || []\n for (let i = 0; i < parameters.length; i++) {\n // in \"where\" clauses the parameters are not escaped by the driver\n if (typeof parameters[i] === \"boolean\")\n parameters[i] = +parameters[i]\n }\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n const queryStartTime = +new Date()\n\n const stmt = await this.getStmt(query)\n\n try {\n const result = new QueryResult()\n\n if (stmt.reader) {\n const raw = stmt.all.apply(stmt, parameters)\n\n result.raw = raw\n\n if (Array.isArray(raw)) {\n result.records = raw\n }\n } else {\n const raw = stmt.run.apply(stmt, parameters)\n result.affected = raw.changes\n result.raw = raw.lastInsertRowid\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (!useStructuredResult) {\n return result.raw\n }\n\n return result\n } catch (err) {\n connection.logger.logQueryError(err, query, parameters, this)\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadTableRecords(\n tablePath: string,\n tableOrIndex: \"table\" | \"index\",\n ) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `SELECT ${\n database ? `'${database}'` : null\n } as database, * FROM ${this.escapePath(\n `${database ? `${database}.` : \"\"}sqlite_master`,\n )} WHERE \"type\" = '${tableOrIndex}' AND \"${\n tableOrIndex === \"table\" ? \"name\" : \"tbl_name\"\n }\" IN ('${tableName}')`,\n )\n return res\n }\n protected async loadPragmaRecords(tablePath: string, pragma: string) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `PRAGMA ${\n database ? `\"${database}\".` : \"\"\n }${pragma}(\"${tableName}\")`,\n )\n return res\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/better-sqlite3/BetterSqlite3QueryRunner.ts"],"names":[],"mappings":"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","file":"BetterSqlite3QueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BetterSqlite3Driver } from \"./BetterSqlite3Driver\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: BetterSqlite3Driver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: BetterSqlite3Driver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n if (typeof this.driver.options.statementCacheSize === \"number\") {\n this.cacheSize = this.driver.options.statementCacheSize\n } else {\n this.cacheSize = 100\n }\n }\n\n private cacheSize: number\n private stmtCache = new Map<string, any>()\n\n private async getStmt(query: string) {\n if (this.cacheSize > 0) {\n let stmt = this.stmtCache.get(query)\n if (!stmt) {\n const databaseConnection = await this.connect()\n stmt = databaseConnection.prepare(query)\n this.stmtCache.set(query, stmt)\n while (this.stmtCache.size > this.cacheSize) {\n // since es6 map keeps the insertion order,\n // it comes to be FIFO cache\n const key = this.stmtCache.keys().next().value\n this.stmtCache.delete(key)\n }\n }\n return stmt\n } else {\n const databaseConnection = await this.connect()\n return databaseConnection.prepare(query)\n }\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n const queryStartTime = +new Date()\n\n const stmt = await this.getStmt(query)\n\n try {\n const result = new QueryResult()\n\n if (stmt.reader) {\n const raw = stmt.all.apply(stmt, parameters)\n\n result.raw = raw\n\n if (Array.isArray(raw)) {\n result.records = raw\n }\n } else {\n const raw = stmt.run.apply(stmt, parameters)\n result.affected = raw.changes\n result.raw = raw.lastInsertRowid\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (!useStructuredResult) {\n return result.raw\n }\n\n return result\n } catch (err) {\n connection.logger.logQueryError(err, query, parameters, this)\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadTableRecords(\n tablePath: string,\n tableOrIndex: \"table\" | \"index\",\n ) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `SELECT ${\n database ? `'${database}'` : null\n } as database, * FROM ${this.escapePath(\n `${database ? `${database}.` : \"\"}sqlite_master`,\n )} WHERE \"type\" = '${tableOrIndex}' AND \"${\n tableOrIndex === \"table\" ? \"name\" : \"tbl_name\"\n }\" IN ('${tableName}')`,\n )\n return res\n }\n protected async loadPragmaRecords(tablePath: string, pragma: string) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `PRAGMA ${\n database ? `\"${database}\".` : \"\"\n }${pragma}(\"${tableName}\")`,\n )\n return res\n }\n}\n"],"sourceRoot":"../.."}
@@ -64,4 +64,20 @@ export interface PostgresConnectionOptions extends BaseDataSourceOptions, Postgr
64
64
  * the service using this connection. Defaults to 'undefined'
65
65
  */
66
66
  readonly applicationName?: string;
67
+ /**
68
+ * Return 64-bit integers (int8) as JavaScript integers.
69
+ *
70
+ * Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently
71
+ * parse int8 data type results as numbers because if you have a huge number it will overflow
72
+ * and the result you'd get back from node-postgres would not be the result in the database.
73
+ * That would be a very bad thing so node-postgres just returns int8 results as strings and leaves the parsing up to you.
74
+ *
75
+ * Enabling parseInt8 will cause node-postgres to parse int8 results as numbers.
76
+ * Note: the maximum safe integer in js is: Number.MAX_SAFE_INTEGER (`+2^53`)
77
+ *
78
+ * @see [JavaScript Number objects](http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)
79
+ * @see [node-postgres int8 explanation](https://github.com/brianc/node-pg-types#:~:text=on%20projects%3A%20return-,64%2Dbit%20integers,-(int8)%20as)
80
+ * @see [node-postgres defaults.parseInt8 implementation](https://github.com/brianc/node-postgres/blob/pg%408.8.0/packages/pg/lib/defaults.js#L80)
81
+ */
82
+ readonly parseInt8?: boolean;
67
83
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/postgres/PostgresConnectionOptions.ts"],"names":[],"mappings":"","file":"PostgresConnectionOptions.js","sourcesContent":["import { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\nimport { PostgresConnectionCredentialsOptions } from \"./PostgresConnectionCredentialsOptions\"\n\n/**\n * Postgres-specific connection options.\n */\nexport interface PostgresConnectionOptions\n extends BaseDataSourceOptions,\n PostgresConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"postgres\"\n\n /**\n * Schema name.\n */\n readonly schema?: string\n\n /**\n * The driver object\n * This defaults to `require(\"pg\")`.\n */\n readonly driver?: any\n\n /**\n * The driver object\n * This defaults to `require(\"pg-native\")`.\n */\n readonly nativeDriver?: any\n\n /**\n * A boolean determining whether to pass time values in UTC or local time. (default: false).\n */\n readonly useUTC?: boolean\n\n /**\n * Replication setup.\n */\n readonly replication?: {\n /**\n * Master server used by orm to perform writes.\n */\n readonly master: PostgresConnectionCredentialsOptions\n\n /**\n * List of read-from severs (slaves).\n */\n readonly slaves: PostgresConnectionCredentialsOptions[]\n }\n\n /**\n * The milliseconds before a timeout occurs during the initial connection to the postgres\n * server. If undefined, or set to 0, there is no timeout. Defaults to undefined.\n */\n readonly connectTimeoutMS?: number\n\n /**\n * The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\n * If pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\n * If uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.\n */\n readonly uuidExtension?: \"pgcrypto\" | \"uuid-ossp\"\n\n /*\n * Function handling errors thrown by drivers pool.\n * Defaults to logging error with `warn` level.\n */\n readonly poolErrorHandler?: (err: any) => any\n\n /**\n * Include notification messages from Postgres server in client logs\n */\n readonly logNotifications?: boolean\n\n /**\n * Automatically install postgres extensions\n */\n readonly installExtensions?: boolean\n\n /**\n * sets the application_name var to help db administrators identify\n * the service using this connection. Defaults to 'undefined'\n */\n readonly applicationName?: string\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/postgres/PostgresConnectionOptions.ts"],"names":[],"mappings":"","file":"PostgresConnectionOptions.js","sourcesContent":["import { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\nimport { PostgresConnectionCredentialsOptions } from \"./PostgresConnectionCredentialsOptions\"\n\n/**\n * Postgres-specific connection options.\n */\nexport interface PostgresConnectionOptions\n extends BaseDataSourceOptions,\n PostgresConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"postgres\"\n\n /**\n * Schema name.\n */\n readonly schema?: string\n\n /**\n * The driver object\n * This defaults to `require(\"pg\")`.\n */\n readonly driver?: any\n\n /**\n * The driver object\n * This defaults to `require(\"pg-native\")`.\n */\n readonly nativeDriver?: any\n\n /**\n * A boolean determining whether to pass time values in UTC or local time. (default: false).\n */\n readonly useUTC?: boolean\n\n /**\n * Replication setup.\n */\n readonly replication?: {\n /**\n * Master server used by orm to perform writes.\n */\n readonly master: PostgresConnectionCredentialsOptions\n\n /**\n * List of read-from severs (slaves).\n */\n readonly slaves: PostgresConnectionCredentialsOptions[]\n }\n\n /**\n * The milliseconds before a timeout occurs during the initial connection to the postgres\n * server. If undefined, or set to 0, there is no timeout. Defaults to undefined.\n */\n readonly connectTimeoutMS?: number\n\n /**\n * The Postgres extension to use to generate UUID columns. Defaults to uuid-ossp.\n * If pgcrypto is selected, TypeORM will use the gen_random_uuid() function from this extension.\n * If uuid-ossp is selected, TypeORM will use the uuid_generate_v4() function from this extension.\n */\n readonly uuidExtension?: \"pgcrypto\" | \"uuid-ossp\"\n\n /*\n * Function handling errors thrown by drivers pool.\n * Defaults to logging error with `warn` level.\n */\n readonly poolErrorHandler?: (err: any) => any\n\n /**\n * Include notification messages from Postgres server in client logs\n */\n readonly logNotifications?: boolean\n\n /**\n * Automatically install postgres extensions\n */\n readonly installExtensions?: boolean\n\n /**\n * sets the application_name var to help db administrators identify\n * the service using this connection. Defaults to 'undefined'\n */\n readonly applicationName?: string\n\n /**\n * Return 64-bit integers (int8) as JavaScript integers.\n *\n * Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently\n * parse int8 data type results as numbers because if you have a huge number it will overflow\n * and the result you'd get back from node-postgres would not be the result in the database.\n * That would be a very bad thing so node-postgres just returns int8 results as strings and leaves the parsing up to you.\n *\n * Enabling parseInt8 will cause node-postgres to parse int8 results as numbers.\n * Note: the maximum safe integer in js is: Number.MAX_SAFE_INTEGER (`+2^53`)\n *\n * @see [JavaScript Number objects](http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)\n * @see [node-postgres int8 explanation](https://github.com/brianc/node-pg-types#:~:text=on%20projects%3A%20return-,64%2Dbit%20integers,-(int8)%20as)\n * @see [node-postgres defaults.parseInt8 implementation](https://github.com/brianc/node-postgres/blob/pg%408.8.0/packages/pg/lib/defaults.js#L80)\n */\n readonly parseInt8?: boolean\n}\n"],"sourceRoot":"../.."}
@@ -1124,6 +1124,8 @@ class PostgresDriver {
1124
1124
  * Creates a new connection pool for a given database credentials.
1125
1125
  */
1126
1126
  async createPool(options, credentials) {
1127
+ var _a;
1128
+ const { logger } = this.connection;
1127
1129
  credentials = Object.assign({}, credentials);
1128
1130
  // build connection options for the driver
1129
1131
  // See: https://github.com/brianc/node-postgres/tree/master/packages/pg-pool#create
@@ -1139,9 +1141,17 @@ class PostgresDriver {
1139
1141
  application_name: options.applicationName,
1140
1142
  max: options.poolSize,
1141
1143
  }, options.extra || {});
1144
+ if (options.parseInt8 !== undefined) {
1145
+ if (this.postgres.defaults &&
1146
+ ((_a = Object.getOwnPropertyDescriptor(this.postgres.defaults, "parseInt8")) === null || _a === void 0 ? void 0 : _a.set)) {
1147
+ this.postgres.defaults.parseInt8 = options.parseInt8;
1148
+ }
1149
+ else {
1150
+ logger.log("warn", "Attempted to set parseInt8 option, but the postgres driver does not support setting defaults.parseInt8. This option will be ignored.");
1151
+ }
1152
+ }
1142
1153
  // create a connection pool
1143
1154
  const pool = new this.postgres.Pool(connectionOptions);
1144
- const { logger } = this.connection;
1145
1155
  const poolErrorHandler = options.poolErrorHandler ||
1146
1156
  ((error) => logger.log("warn", `Postgres pool raised an error. ${error}`));
1147
1157
  /*