Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
6047744
init bmad migration plan
smouillour Mar 5, 2026
8fc6928
epic 1-1
smouillour Mar 5, 2026
cc287d7
epic 2-1
smouillour Mar 5, 2026
b618582
epic 2-2
smouillour Mar 5, 2026
bc0c8e8
epic 2-3
smouillour Mar 5, 2026
49fdcd5
epic 3-1
smouillour Mar 5, 2026
767473c
epic 3-2
smouillour Mar 6, 2026
21c1674
epic 3-3 et 3-4
smouillour Mar 6, 2026
2f0f34a
epic 4-1 et 4-2
smouillour Mar 6, 2026
ac17d7e
epic 5-1 and 5-2
smouillour Mar 6, 2026
8cd9912
epic 5-3
smouillour Mar 6, 2026
dd89e87
epic 6-1
smouillour Mar 6, 2026
789b209
epic 6-2, 6-3, 6-4 and 6-5
smouillour Mar 6, 2026
b15ac19
epic 6-6
smouillour Mar 6, 2026
22fbe50
epic 7-1
smouillour Mar 6, 2026
d87c52d
epic 8-1 and 8-2
smouillour Mar 9, 2026
7901562
epic 8-3
smouillour Mar 9, 2026
1b84b75
epic 8-4
smouillour Mar 9, 2026
dcf3b18
epic 8-5
smouillour Mar 9, 2026
b09e561
epic 8-6
smouillour Mar 9, 2026
082fc66
epic 9-1
smouillour Mar 9, 2026
1047d27
epic 9-2
smouillour Mar 9, 2026
0a40c37
epic 9-3
smouillour Mar 9, 2026
0fcd96e
epic 9-4
smouillour Mar 9, 2026
6fff7c8
clean
smouillour Mar 9, 2026
0626f9a
fix test and missing update import
smouillour Mar 9, 2026
38ff869
Merge branch 'master' into smouillour-migrate-immutable-5
smouillour Mar 9, 2026
47134df
update to 5.1.5 + fix some import
smouillour Mar 9, 2026
f622e93
Merge 47134dfc9adb2d24711c895bb8b6dd4ca3aee1ce into 7ead27fd0ca188eb1…
smouillour Mar 9, 2026
7357be7
chore: yarn-deduplicate
github-actions[bot] Mar 9, 2026
b23107f
Merge branch 'master' into smouillour-migrate-immutable-5
smouillour Mar 9, 2026
f4f4802
fix test
smouillour Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .changeset/immutable-v5-cmf-cqrs-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@talend/react-cmf-cqrs': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`).
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
15 changes: 15 additions & 0 deletions .changeset/immutable-v5-cmf-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
'@talend/react-cmf': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`). All cmf source and expressions modules have been updated accordingly.
- **`Iterable` removed**: Replace `Immutable.Iterable` checks with `isImmutable()` from `immutable`.
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.
- **`OrderedMap` → `Map`**: `Map` in Immutable v5 preserves insertion order, making `OrderedMap` redundant. All internal usage has been updated.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
14 changes: 14 additions & 0 deletions .changeset/immutable-v5-components-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
'@talend/react-components': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`). ActionDropdown and other components have been updated accordingly.
- **`Iterable` removed**: Replace `Immutable.Iterable` checks with `isImmutable()` from `immutable`.
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
15 changes: 15 additions & 0 deletions .changeset/immutable-v5-containers-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
'@talend/react-containers': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`).
- **`Iterable` removed**: Replace `Immutable.Iterable` checks with `isImmutable()` from `immutable`.
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.
- **`OrderedMap` → `Map`**: `Map` in Immutable v5 preserves insertion order, making `OrderedMap` redundant. All internal usage has been updated.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
15 changes: 15 additions & 0 deletions .changeset/immutable-v5-flow-designer-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
'@talend/react-flow-designer': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`). Reducers (link, node, port) and renderers (LinksRenderer, NodesRenderer, PortsRenderer) have been updated accordingly.
- **`Iterable` removed**: Replace `Immutable.Iterable` checks with `isImmutable()` from `immutable`.
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.
- **`OrderedMap` → `Map`**: `Map` in Immutable v5 preserves insertion order, making `OrderedMap` redundant. All internal usage has been updated.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
13 changes: 13 additions & 0 deletions .changeset/immutable-v5-sagas-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@talend/react-sagas': major
---

Upgrade Immutable.js to v5

## Breaking Changes

- **Immutable.js upgraded from v3.8.2 to v5.x**: Consumers depending on Immutable v3 or v4 APIs must update accordingly.
- **Default import removed**: `import Immutable from 'immutable'` is no longer supported. Use named imports instead (e.g., `import { Map, List, fromJS, isImmutable } from 'immutable'`).
- **`react-immutable-proptypes` removed**: Custom internal validators replace `ImmutablePropTypes`. No peer-dep on `react-immutable-proptypes` anymore.

See the [migration guide](../docs/breaking-change-immutable-v5.md) for full details and upgrade instructions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,10 @@ eslint-report.json
stylelint-report.json
i18n-extract
.test-cache

# TMP
_bmad
_bmad-*
.github/agents/bmad-*
.github/prompts/bmad_*
.github/prompts/bmad-*
7 changes: 7 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,10 @@ dist
node_modules
__fixtures__
tools/scripts-config-storybook-lib/.storybook-templates/main.js

# TMP
_bmad
_bmad-output
.github/agents/bmad-*
.github/prompts/bmad_*
.github/prompts/bmad-*
160 changes: 160 additions & 0 deletions docs/breaking-change-immutable-v5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# Breaking Changes: Immutable.js v5 Migration

This document covers the breaking changes introduced by the Immutable.js v5 migration
across the following packages:

- `@talend/react-cmf`
- `@talend/react-components`
- `@talend/react-containers`
- `@talend/react-flow-designer`
- `@talend/react-cmf-cqrs`
- `@talend/react-sagas`

---

## 1. Immutable.js upgraded from v3.8.2 to v5.x

The `immutable` peer dependency has been bumped to `^5.0.0`.

Immutable v5 ships significant performance improvements and API clean-ups relative to v3/v4.
Consumers must upgrade their own `immutable` dependency and review any private API usage.

**Action required:** Update your `package.json`:

```json
{
"dependencies": {
"immutable": "^5.0.0"
}
}
```

---

## 2. Default import removed

The default export of `immutable` no longer exists in v5. Any code relying on the default
import will fail at runtime.

**Before:**

```js
import Immutable from 'immutable';

const map = Immutable.Map({ key: 'value' });
const list = Immutable.List([1, 2, 3]);
```

**After:**

```js
import { Map, List, fromJS, isImmutable } from 'immutable';

const map = Map({ key: 'value' });
const list = List([1, 2, 3]);
```

---

## 3. `Iterable` replaced by `isImmutable()`

`Immutable.Iterable` (and the `Iterable.isIterable()` helper) were removed in v5.
Use the top-level `isImmutable()` function to check whether a value is an Immutable
data structure.

**Before:**

```js
import Immutable from 'immutable';

if (Immutable.Iterable.isIterable(value)) {
// ...
}
```

**After:**

```js
import { isImmutable } from 'immutable';

if (isImmutable(value)) {
// ...
}
```

---

## 4. `react-immutable-proptypes` removed

The `react-immutable-proptypes` package has been removed from all affected packages.
Custom lightweight validators (provided internally) replace it.

If your application depends on `ImmutablePropTypes` from `react-immutable-proptypes`,
you must either:

- Remove the dependency and write plain PropTypes validators, **or**
- Keep `react-immutable-proptypes` as a direct dependency of your own package.

**Before (in your component):**

```js
import ImmutablePropTypes from 'react-immutable-proptypes';

MyComponent.propTypes = {
items: ImmutablePropTypes.list.isRequired,
};
```

**After (example using plain PropTypes + isImmutable):**

```js
import PropTypes from 'prop-types';
import { isImmutable } from 'immutable';

MyComponent.propTypes = {
items: (props, propName) => {
if (!isImmutable(props[propName])) {
return new Error(`${propName} must be an Immutable structure`);
}
return null;
},
};
```

---

## 5. `OrderedMap` replaced by `Map`

Immutable v5's `Map` preserves insertion order by default, making `OrderedMap`
redundant. All internal usages of `OrderedMap` have been replaced with `Map`.

If your code uses `OrderedMap` directly from these packages' re-exports or expects
`OrderedMap` instances from props/state, switch to `Map`.

**Before:**

```js
import Immutable from 'immutable';

const ordered = Immutable.OrderedMap({ a: 1, b: 2 });
```

**After:**

```js
import { Map } from 'immutable';

const map = Map({ a: 1, b: 2 }); // insertion order preserved in v5
```

---

## Migration Summary

| Change | v3 / v4 | v5 |
| ---------------- | ----------------------------------- | ------------------------------------------ |
| Package import | `import Immutable from 'immutable'` | `import { Map, List, … } from 'immutable'` |
| Iterable check | `Immutable.Iterable.isIterable(x)` | `isImmutable(x)` |
| Ordered map | `OrderedMap({ … })` | `Map({ … })` |
| PropTypes | `react-immutable-proptypes` | Custom validators / plain PropTypes |
| Peer dep version | `^3.8.2` or `^4.0.0` | `^5.0.0` |
2 changes: 1 addition & 1 deletion packages/cmf-cqrs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
"dependencies": {
"@talend/react-cmf": "^12.1.0",
"@talend/utils": "^3.7.0",
"immutable": "^3.8.2",
"immutable": "^5.1.5",
"redux-saga": "^1.4.2"
},
"devDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions packages/cmf/__tests__/componentState.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import PropTypes from 'prop-types';
import Immutable, { Map } from 'immutable';
import { Map, fromJS } from 'immutable';

import state, {
getStateAccessors,
Expand Down Expand Up @@ -67,7 +67,7 @@ describe('state', () => {
it('should getStateProps return state', () => {
const storeState = {
cmf: {
components: Immutable.fromJS({
components: fromJS({
foo: {
bar: {
open: true,
Expand Down
Loading
Loading