@mikro-orm/core 7.3.0-dev.15 → 7.3.0-dev.17

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.
@@ -600,7 +600,7 @@ type EntityTarget = {
600
600
  '~entity': any;
601
601
  } | EntityClass;
602
602
  declare const propertyBuilders: PropertyBuilders;
603
- type PropertyBuildersOverrideKeys = 'bigint' | 'array' | 'decimal' | 'json' | 'string' | 'text' | 'datetime' | 'time' | 'enum';
603
+ type PropertyBuildersOverrideKeys = 'bigint' | 'array' | 'decimal' | 'double' | 'json' | 'string' | 'text' | 'datetime' | 'time' | 'enum';
604
604
  /** Map of factory functions for creating type-safe property builders (scalars, enums, embeddables, and relations). */
605
605
  export type PropertyBuilders = {
606
606
  [K in Exclude<keyof typeof types, PropertyBuildersOverrideKeys>]: () => UniversalPropertyOptionsBuilder<InferPropertyValueType<(typeof types)[K]>, EmptyOptions, IncludeKeysForProperty>;
@@ -608,6 +608,7 @@ export type PropertyBuilders = {
608
608
  bigint: <Mode extends 'bigint' | 'number' | 'string' = 'bigint'>(mode?: Mode) => UniversalPropertyOptionsBuilder<InferPropertyValueType<typeof types.bigint<Mode>>, EmptyOptions, IncludeKeysForProperty>;
609
609
  array: <T = string>(toJsValue?: (i: string) => T, toDbValue?: (i: T) => string) => UniversalPropertyOptionsBuilder<InferPropertyValueType<typeof types.array<T>>, EmptyOptions, IncludeKeysForProperty>;
610
610
  decimal: <Mode extends 'number' | 'string' = 'string'>(mode?: Mode) => UniversalPropertyOptionsBuilder<InferPropertyValueType<typeof types.decimal<Mode>>, EmptyOptions, IncludeKeysForProperty>;
611
+ double: <Mode extends 'number' | 'string' = 'number'>(mode?: Mode) => UniversalPropertyOptionsBuilder<InferPropertyValueType<typeof types.double<Mode>>, EmptyOptions, IncludeKeysForProperty>;
611
612
  json: <T>() => UniversalPropertyOptionsBuilder<T, EmptyOptions, IncludeKeysForProperty>;
612
613
  string: () => StringPropertyOptionsBuilder<InferPropertyValueType<typeof types.string>, EmptyOptions>;
613
614
  text: () => StringPropertyOptionsBuilder<InferPropertyValueType<typeof types.text>, EmptyOptions>;
@@ -519,6 +519,7 @@ const propertyBuilders = {
519
519
  bigint: (mode) => new UniversalPropertyOptionsBuilder({ type: new types.bigint(mode) }),
520
520
  array: (toJsValue = i => i, toDbValue = i => i) => new UniversalPropertyOptionsBuilder({ type: new types.array(toJsValue, toDbValue) }),
521
521
  decimal: (mode) => new UniversalPropertyOptionsBuilder({ type: new types.decimal(mode) }),
522
+ double: (mode) => new UniversalPropertyOptionsBuilder({ type: new types.double(mode) }),
522
523
  json: () => new UniversalPropertyOptionsBuilder({ type: types.json }),
523
524
  string: () => new StringPropertyOptionsBuilder({
524
525
  type: types.string,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/core",
3
- "version": "7.3.0-dev.15",
3
+ "version": "7.3.0-dev.17",
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",
@@ -2,10 +2,14 @@ import { Type } from './Type.js';
2
2
  import type { Platform } from '../platforms/Platform.js';
3
3
  import type { EntityProperty } from '../typings.js';
4
4
  /**
5
- * Type that maps an SQL DOUBLE to a JS string or number.
5
+ * Type that maps an SQL DOUBLE to a JS number (default) or string.
6
6
  */
7
- export declare class DoubleType extends Type<number | string, string> {
8
- convertToJSValue(value: string): number | string;
7
+ export declare class DoubleType<Mode extends 'number' | 'string' = 'number'> extends Type<JSTypeByMode<Mode>, string> {
8
+ mode?: Mode | undefined;
9
+ constructor(mode?: Mode | undefined);
10
+ convertToJSValue(value: string): JSTypeByMode<Mode>;
9
11
  getColumnType(prop: EntityProperty, platform: Platform): string;
10
12
  compareAsType(): string;
11
13
  }
14
+ type JSTypeByMode<Mode extends 'number' | 'string'> = Mode extends 'number' ? number : string;
15
+ export {};
@@ -1,11 +1,16 @@
1
1
  import { Type } from './Type.js';
2
2
  /**
3
- * Type that maps an SQL DOUBLE to a JS string or number.
3
+ * Type that maps an SQL DOUBLE to a JS number (default) or string.
4
4
  */
5
5
  export class DoubleType extends Type {
6
+ mode;
7
+ constructor(mode) {
8
+ super();
9
+ this.mode = mode;
10
+ }
6
11
  /* v8 ignore next */
7
12
  convertToJSValue(value) {
8
- if (this.prop?.runtimeType === 'number') {
13
+ if ((this.mode ?? this.prop?.runtimeType) === 'number') {
9
14
  return +value;
10
15
  }
11
16
  return String(value);
@@ -14,6 +19,6 @@ export class DoubleType extends Type {
14
19
  return platform.getDoubleDeclarationSQL();
15
20
  }
16
21
  compareAsType() {
17
- return this.prop?.runtimeType ?? 'number';
22
+ return this.mode ?? this.prop?.runtimeType ?? 'number';
18
23
  }
19
24
  }
@@ -218,6 +218,17 @@ export type MigrationsOptions = {
218
218
  * @default true
219
219
  */
220
220
  allOrNothing?: boolean;
221
+ /**
222
+ * Serialize concurrent `migrator.up()`/`migrator.down()` runs (e.g. several replicas migrating on start) with a
223
+ * database lock, held on a pooled connection of its own for the whole run (so `pool.max` needs to be at least 2).
224
+ * Supported on PostgreSQL, MySQL, MariaDB and MSSQL, ignored elsewhere.
225
+ * @default false
226
+ */
227
+ lock?: boolean;
228
+ /**
229
+ * How long to wait for the migration lock (in milliseconds) before failing. Waits indefinitely by default.
230
+ */
231
+ lockTimeout?: number;
221
232
  /**
222
233
  * Allow dropping tables during schema diff.
223
234
  * @default true
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.3.0-dev.15';
156
+ static #ORM_VERSION = '7.3.0-dev.17';
157
157
  /** Default session variable name backing an RLS filter argument (`current_setting('mikro.<filter>.<arg>')`). */
158
158
  static getRlsSettingName(filterName, argName) {
159
159
  return `mikro.${filterName}.${argName}`;
package/utils/env-vars.js CHANGED
@@ -74,6 +74,8 @@ export function loadEnvironmentVars() {
74
74
  read2('transactional', bool);
75
75
  read2('disableForeignKeys', bool);
76
76
  read2('allOrNothing', bool);
77
+ read2('lock', bool);
78
+ read2('lockTimeout', num);
77
79
  read2('dropTables', bool);
78
80
  read2('safe', bool);
79
81
  read2('silent', bool);