@mikro-orm/core 7.1.13-dev.3 → 7.1.13-dev.5

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.
@@ -1053,11 +1053,12 @@ export class MetadataDiscovery {
1053
1053
  }
1054
1054
  // TPT children have their own tables that don't contain the parent's columns,
1055
1055
  // so propagating parent indexes/uniques/checks/triggers would target missing columns.
1056
+ // deep equality, as the subclass items might be copies of the base class ones (e.g. with TC39 decorators)
1056
1057
  if (meta.inheritanceType !== 'tpt' || !meta.tptParent) {
1057
- meta.indexes = Utils.unique([...base.indexes, ...meta.indexes]);
1058
- meta.uniques = Utils.unique([...base.uniques, ...meta.uniques]);
1059
- meta.checks = Utils.unique([...base.checks, ...meta.checks]);
1060
- meta.triggers = Utils.unique([...base.triggers, ...meta.triggers]);
1058
+ meta.indexes = Utils.unique([...base.indexes, ...meta.indexes], Utils.equals);
1059
+ meta.uniques = Utils.unique([...base.uniques, ...meta.uniques], Utils.equals);
1060
+ meta.checks = Utils.unique([...base.checks, ...meta.checks], Utils.equals);
1061
+ meta.triggers = Utils.unique([...base.triggers, ...meta.triggers], Utils.equals);
1061
1062
  }
1062
1063
  const pks = Object.values(meta.properties)
1063
1064
  .filter(p => p.primary)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/core",
3
- "version": "7.1.13-dev.3",
3
+ "version": "7.1.13-dev.5",
4
4
  "description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
5
5
  "keywords": [
6
6
  "data-mapper",
package/utils/Utils.d.ts CHANGED
@@ -58,7 +58,7 @@ export declare class Utils {
58
58
  /**
59
59
  * Gets array without duplicates.
60
60
  */
61
- static unique<T = string>(items: T[]): T[];
61
+ static unique<T = string>(items: T[], equals?: (a: T, b: T) => boolean): T[];
62
62
  /**
63
63
  * Merges all sources into the target recursively.
64
64
  */
package/utils/Utils.js CHANGED
@@ -153,7 +153,7 @@ export function parseJsonSafe(value) {
153
153
  /** Collection of general-purpose utility methods used throughout the ORM. */
154
154
  export class Utils {
155
155
  static PK_SEPARATOR = '~~~';
156
- static #ORM_VERSION = '7.1.13-dev.3';
156
+ static #ORM_VERSION = '7.1.13-dev.5';
157
157
  /**
158
158
  * Checks if the argument is instance of `Object`. Returns false for arrays.
159
159
  */
@@ -216,10 +216,13 @@ export class Utils {
216
216
  /**
217
217
  * Gets array without duplicates.
218
218
  */
219
- static unique(items) {
219
+ static unique(items, equals) {
220
220
  if (items.length < 2) {
221
221
  return items;
222
222
  }
223
+ if (equals) {
224
+ return items.filter((a, idx) => items.findIndex(b => equals(a, b)) === idx);
225
+ }
223
226
  return [...new Set(items)];
224
227
  }
225
228
  /**