From 9ecb9e9bebcff6f5abb0cb088443b9abb931a58b Mon Sep 17 00:00:00 2001 From: Alex <39951413+exzos28@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:31:52 +0100 Subject: [PATCH 1/7] fix: migrate FlowCancellationError to class implementation --- packages/mobx/src/api/flow.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/mobx/src/api/flow.ts b/packages/mobx/src/api/flow.ts index ced847471c..5691237b9b 100644 --- a/packages/mobx/src/api/flow.ts +++ b/packages/mobx/src/api/flow.ts @@ -17,10 +17,13 @@ export const FLOW = "flow" let generatorId = 0 -export function FlowCancellationError() { - this.message = "FLOW_CANCELLED" +class FlowCancellationError extends Error { + constructor() { + super("FLOW_CANCELLED"); + Object.setPrototypeOf(this, new.target.prototype); + this.name = "FlowCancellationError"; + } } -FlowCancellationError.prototype = Object.create(Error.prototype) export function isFlowCancellationError(error: Error) { return error instanceof FlowCancellationError From 0681ee52b05b8a41b78b6144e065768a1a34edb6 Mon Sep 17 00:00:00 2001 From: exzos Date: Mon, 17 Feb 2025 18:02:21 +0100 Subject: [PATCH 2/7] fix: add export --- packages/mobx/src/api/flow.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mobx/src/api/flow.ts b/packages/mobx/src/api/flow.ts index 5691237b9b..484077bae7 100644 --- a/packages/mobx/src/api/flow.ts +++ b/packages/mobx/src/api/flow.ts @@ -17,11 +17,11 @@ export const FLOW = "flow" let generatorId = 0 -class FlowCancellationError extends Error { +export class FlowCancellationError extends Error { constructor() { - super("FLOW_CANCELLED"); - Object.setPrototypeOf(this, new.target.prototype); - this.name = "FlowCancellationError"; + super("FLOW_CANCELLED") + Object.setPrototypeOf(this, new.target.prototype) + this.name = "FlowCancellationError" } } From 961536bd14304f581e08a5b9ad4ea4f44a93fb1a Mon Sep 17 00:00:00 2001 From: Gorbachev Egor <7gorbachevm@gmail.com> Date: Thu, 12 Mar 2026 16:51:10 +0700 Subject: [PATCH 3/7] fix tests --- packages/mobx/src/api/flow.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/mobx/src/api/flow.ts b/packages/mobx/src/api/flow.ts index 484077bae7..43b00715c6 100644 --- a/packages/mobx/src/api/flow.ts +++ b/packages/mobx/src/api/flow.ts @@ -23,6 +23,10 @@ export class FlowCancellationError extends Error { Object.setPrototypeOf(this, new.target.prototype) this.name = "FlowCancellationError" } + + toString() { + return `Error: ${this.message}` + } } export function isFlowCancellationError(error: Error) { From df81c144fb148b64140d761aa61f032a7f429e12 Mon Sep 17 00:00:00 2001 From: Gorbachev Egor <7gorbachevm@gmail.com> Date: Thu, 12 Mar 2026 17:28:49 +0700 Subject: [PATCH 4/7] changeset --- .changeset/rich-tigers-smile.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rich-tigers-smile.md diff --git a/.changeset/rich-tigers-smile.md b/.changeset/rich-tigers-smile.md new file mode 100644 index 0000000000..3b0cf6d64d --- /dev/null +++ b/.changeset/rich-tigers-smile.md @@ -0,0 +1,5 @@ +--- +"mobx": patch +--- + +Make `FlowCancellationError` a proper `Error` instance while preserving its previous string representation. From 21fc4de6c09a77caf115aedd2fe6df972637412b Mon Sep 17 00:00:00 2001 From: Gorbachev Egor <7gorbachevm@gmail.com> Date: Thu, 12 Mar 2026 17:38:57 +0700 Subject: [PATCH 5/7] fix(mobx): export CancellablePromise --- .changeset/sour-pears-smell.md | 5 +++++ packages/mobx/__tests__/v5/base/typescript-tests.ts | 9 +++++++++ packages/mobx/src/mobx.ts | 1 + 3 files changed, 15 insertions(+) create mode 100644 .changeset/sour-pears-smell.md diff --git a/.changeset/sour-pears-smell.md b/.changeset/sour-pears-smell.md new file mode 100644 index 0000000000..424c9d5f84 --- /dev/null +++ b/.changeset/sour-pears-smell.md @@ -0,0 +1,5 @@ +--- +"mobx": patch +--- + +Export `CancellablePromise` from the public `mobx` entrypoint. diff --git a/packages/mobx/__tests__/v5/base/typescript-tests.ts b/packages/mobx/__tests__/v5/base/typescript-tests.ts index 8c17f046dd..23c51df32c 100644 --- a/packages/mobx/__tests__/v5/base/typescript-tests.ts +++ b/packages/mobx/__tests__/v5/base/typescript-tests.ts @@ -33,6 +33,7 @@ import { flowResult, IObjectWillChange } from "../../../src/mobx" +import type { CancellablePromise } from "../../../src/mobx" import * as mobx from "../../../src/mobx" import { assert, IsExact } from "conditional-type-checks" @@ -2330,6 +2331,14 @@ test("TS - it should support flow as function wrapper", done => { }, 10) }) +test("TS - it should export CancellablePromise", () => { + const wrapped = flow(function* () { + return 5 + }) + + assert, CancellablePromise>>(true) +}) + test("TS - it should support flow as annotation", done => { const values: number[] = [] diff --git a/packages/mobx/src/mobx.ts b/packages/mobx/src/mobx.ts index cd7cb05af3..cb366b52a9 100644 --- a/packages/mobx/src/mobx.ts +++ b/packages/mobx/src/mobx.ts @@ -108,6 +108,7 @@ export { flow, isFlow, flowResult, + CancellablePromise, FlowCancellationError, isFlowCancellationError, toJS, From 8ec26b1fd2c6f827bdd80a8c9e1765c543e3e167 Mon Sep 17 00:00:00 2001 From: Gorbachev Egor <7gorbachevm@gmail.com> Date: Thu, 12 Mar 2026 17:42:48 +0700 Subject: [PATCH 6/7] chore(mobx): drop cancellable promise test --- packages/mobx/__tests__/v5/base/typescript-tests.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/mobx/__tests__/v5/base/typescript-tests.ts b/packages/mobx/__tests__/v5/base/typescript-tests.ts index 23c51df32c..8c17f046dd 100644 --- a/packages/mobx/__tests__/v5/base/typescript-tests.ts +++ b/packages/mobx/__tests__/v5/base/typescript-tests.ts @@ -33,7 +33,6 @@ import { flowResult, IObjectWillChange } from "../../../src/mobx" -import type { CancellablePromise } from "../../../src/mobx" import * as mobx from "../../../src/mobx" import { assert, IsExact } from "conditional-type-checks" @@ -2331,14 +2330,6 @@ test("TS - it should support flow as function wrapper", done => { }, 10) }) -test("TS - it should export CancellablePromise", () => { - const wrapped = flow(function* () { - return 5 - }) - - assert, CancellablePromise>>(true) -}) - test("TS - it should support flow as annotation", done => { const values: number[] = [] From 44909711dd9c5ba7850977a8228d16e020311729 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 10:50:00 +0000 Subject: [PATCH 7/7] Version release --- .changeset/rich-tigers-smile.md | 5 ----- .changeset/sour-pears-smell.md | 5 ----- packages/mobx/CHANGELOG.md | 8 ++++++++ packages/mobx/package.json | 2 +- 4 files changed, 9 insertions(+), 11 deletions(-) delete mode 100644 .changeset/rich-tigers-smile.md delete mode 100644 .changeset/sour-pears-smell.md diff --git a/.changeset/rich-tigers-smile.md b/.changeset/rich-tigers-smile.md deleted file mode 100644 index 3b0cf6d64d..0000000000 --- a/.changeset/rich-tigers-smile.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mobx": patch ---- - -Make `FlowCancellationError` a proper `Error` instance while preserving its previous string representation. diff --git a/.changeset/sour-pears-smell.md b/.changeset/sour-pears-smell.md deleted file mode 100644 index 424c9d5f84..0000000000 --- a/.changeset/sour-pears-smell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mobx": patch ---- - -Export `CancellablePromise` from the public `mobx` entrypoint. diff --git a/packages/mobx/CHANGELOG.md b/packages/mobx/CHANGELOG.md index 7e15eda37e..1604eae330 100644 --- a/packages/mobx/CHANGELOG.md +++ b/packages/mobx/CHANGELOG.md @@ -1,5 +1,13 @@ # mobx +## 6.15.1 + +### Patch Changes + +- [`df81c144fb148b64140d761aa61f032a7f429e12`](https://github.com/mobxjs/mobx/commit/df81c144fb148b64140d761aa61f032a7f429e12) [#4523](https://github.com/mobxjs/mobx/pull/4523) Thanks [@exzos28](https://github.com/exzos28)! - Make `FlowCancellationError` a proper `Error` instance while preserving its previous string representation. + +- [`21fc4de6c09a77caf115aedd2fe6df972637412b`](https://github.com/mobxjs/mobx/commit/21fc4de6c09a77caf115aedd2fe6df972637412b) [#4626](https://github.com/mobxjs/mobx/pull/4626) Thanks [@kubk](https://github.com/kubk)! - Export `CancellablePromise` from the public `mobx` entrypoint. + ## 6.15.0 ### Minor Changes diff --git a/packages/mobx/package.json b/packages/mobx/package.json index df508daca6..c6eaa42d90 100644 --- a/packages/mobx/package.json +++ b/packages/mobx/package.json @@ -1,6 +1,6 @@ { "name": "mobx", - "version": "6.15.0", + "version": "6.15.1", "description": "Simple, scalable state management.", "source": "src/mobx.ts", "main": "dist/index.js",