Skip to content

Commit 8661465

Browse files
Change import target from @ember/reactive to @ember/reactive/collections
Co-authored-by: NullVoxPopuli <[email protected]>
1 parent d04c5a2 commit 8661465

4 files changed

Lines changed: 40 additions & 38 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ rules in templates can be disabled with eslint directives with mustache or html
336336
| [no-classic-classes](docs/rules/no-classic-classes.md) | disallow "classic" classes in favor of native JS classes || | |
337337
| [no-ember-super-in-es-classes](docs/rules/no-ember-super-in-es-classes.md) | disallow use of `this._super` in ES class methods || 🔧 | |
338338
| [no-empty-glimmer-component-classes](docs/rules/no-empty-glimmer-component-classes.md) | disallow empty backing classes for Glimmer components || | |
339-
| [no-tracked-built-ins](docs/rules/no-tracked-built-ins.md) | enforce usage of `@ember/reactive` imports instead of `tracked-built-ins` | | 🔧 | |
339+
| [no-tracked-built-ins](docs/rules/no-tracked-built-ins.md) | enforce usage of `@ember/reactive/collections` imports instead of `tracked-built-ins` | | 🔧 | |
340340
| [no-tracked-properties-from-args](docs/rules/no-tracked-properties-from-args.md) | disallow creating @tracked properties from this.args || | |
341341
| [template-indent](docs/rules/template-indent.md) | enforce consistent indentation for gts/gjs templates | | 🔧 | |
342342
| [template-no-deprecated](docs/rules/template-no-deprecated.md) | disallow using deprecated Glimmer components, helpers, and modifiers in templates | | | |

docs/rules/no-tracked-built-ins.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@
44

55
<!-- end auto-generated rule header -->
66

7-
Enforce usage of `@ember/reactive` imports instead of `tracked-built-ins`.
7+
Enforce usage of `@ember/reactive/collections` imports instead of `tracked-built-ins`.
88

99
## Context
1010

11-
Per [RFC #1068](https://github.com/emberjs/rfcs/pull/1068), the tracked collection utilities from the `tracked-built-ins` package are being moved into the framework as `@ember/reactive`. The new API also changes from class constructors (`new TrackedArray(...)`) to factory functions (`trackedArray(...)`).
11+
Per [RFC #1068](https://github.com/emberjs/rfcs/pull/1068), the tracked collection utilities from the `tracked-built-ins` package are being moved into the framework as `@ember/reactive/collections`. The new API also changes from class constructors (`new TrackedArray(...)`) to factory functions (`trackedArray(...)`).
1212

1313
## Rule Details
1414

15-
This rule detects imports from `tracked-built-ins` and provides an autofix to convert them to `@ember/reactive` with the new function-based API.
15+
This rule detects imports from `tracked-built-ins` and provides an autofix to convert them to `@ember/reactive/collections` with the new function-based API.
1616

1717
The following mappings are applied:
1818

19-
| Old (`tracked-built-ins`) | New (`@ember/reactive`) |
20-
| ------------------------- | ----------------------- |
21-
| `TrackedArray` | `trackedArray` |
22-
| `TrackedObject` | `trackedObject` |
23-
| `TrackedMap` | `trackedMap` |
24-
| `TrackedSet` | `trackedSet` |
25-
| `TrackedWeakMap` | `trackedWeakMap` |
26-
| `TrackedWeakSet` | `trackedWeakSet` |
19+
| Old (`tracked-built-ins`) | New (`@ember/reactive/collections`) |
20+
| ------------------------- | ----------------------------------- |
21+
| `TrackedArray` | `trackedArray` |
22+
| `TrackedObject` | `trackedObject` |
23+
| `TrackedMap` | `trackedMap` |
24+
| `TrackedSet` | `trackedSet` |
25+
| `TrackedWeakMap` | `trackedWeakMap` |
26+
| `TrackedWeakSet` | `trackedWeakSet` |
2727

2828
Additionally, `new` expressions using these imports are automatically converted to direct function calls.
2929

@@ -47,13 +47,13 @@ const map = new TrackedMap();
4747
Examples of **correct** code for this rule:
4848

4949
```js
50-
import { trackedArray } from '@ember/reactive';
50+
import { trackedArray } from '@ember/reactive/collections';
5151

5252
const arr = trackedArray([1, 2, 3]);
5353
```
5454

5555
```js
56-
import { trackedObject, trackedMap } from '@ember/reactive';
56+
import { trackedObject, trackedMap } from '@ember/reactive/collections';
5757

5858
const obj = trackedObject({ a: 1 });
5959
const map = trackedMap();
@@ -63,7 +63,7 @@ const map = trackedMap();
6363

6464
This rule provides automatic fixes via `--fix`. Running ESLint with the `--fix` flag will:
6565

66-
1. Replace `import { TrackedArray } from 'tracked-built-ins'` with `import { trackedArray } from '@ember/reactive'`
66+
1. Replace `import { TrackedArray } from 'tracked-built-ins'` with `import { trackedArray } from '@ember/reactive/collections'`
6767
2. Replace `new TrackedArray(...)` with `trackedArray(...)`
6868

6969
## References

lib/rules/no-tracked-built-ins.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
//------------------------------------------------------------------------------
4-
// Mapping from tracked-built-ins exports to @ember/reactive exports
4+
// Mapping from tracked-built-ins exports to @ember/reactive/collections exports
55
//------------------------------------------------------------------------------
66

77
const TRACKED_BUILT_INS_MAPPING = {
@@ -14,9 +14,10 @@ const TRACKED_BUILT_INS_MAPPING = {
1414
};
1515

1616
const TRACKED_BUILT_INS_MODULE = 'tracked-built-ins';
17-
const EMBER_REACTIVE_MODULE = '@ember/reactive';
17+
const EMBER_REACTIVE_MODULE = '@ember/reactive/collections';
1818

19-
const ERROR_MESSAGE_IMPORT = 'Use imports from `@ember/reactive` instead of `tracked-built-ins`.';
19+
const ERROR_MESSAGE_IMPORT =
20+
'Use imports from `@ember/reactive/collections` instead of `tracked-built-ins`.';
2021

2122
//------------------------------------------------------------------------------
2223
// Rule Definition
@@ -27,7 +28,8 @@ module.exports = {
2728
meta: {
2829
type: 'suggestion',
2930
docs: {
30-
description: 'enforce usage of `@ember/reactive` imports instead of `tracked-built-ins`',
31+
description:
32+
'enforce usage of `@ember/reactive/collections` imports instead of `tracked-built-ins`',
3133
category: 'Ember Octane',
3234
recommended: false,
3335
url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/no-tracked-built-ins.md',
@@ -37,7 +39,7 @@ module.exports = {
3739
messages: {
3840
import: ERROR_MESSAGE_IMPORT,
3941
newExpression:
40-
'Use `{{newName}}(...)` instead of `new {{oldName}}(...)`. The `@ember/reactive` utilities do not use `new`.',
42+
'Use `{{newName}}(...)` instead of `new {{oldName}}(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
4143
},
4244
},
4345

tests/lib/rules/no-tracked-built-ins.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ const ruleTester = new RuleTester({
2222

2323
ruleTester.run('no-tracked-built-ins', rule, {
2424
valid: [
25-
// Already using @ember/reactive
26-
"import { trackedArray } from '@ember/reactive';",
27-
"import { trackedObject, trackedMap } from '@ember/reactive';",
25+
// Already using @ember/reactive/collections
26+
"import { trackedArray } from '@ember/reactive/collections';",
27+
"import { trackedObject, trackedMap } from '@ember/reactive/collections';",
2828

2929
// Not tracked-built-ins
3030
"import { something } from 'other-package';",
@@ -38,29 +38,29 @@ ruleTester.run('no-tracked-built-ins', rule, {
3838
// Single named import
3939
{
4040
code: "import { TrackedArray } from 'tracked-built-ins';",
41-
output: "import { trackedArray } from '@ember/reactive';",
41+
output: "import { trackedArray } from '@ember/reactive/collections';",
4242
errors: [{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' }],
4343
},
4444

4545
// Multiple named imports
4646
{
4747
code: "import { TrackedArray, TrackedObject } from 'tracked-built-ins';",
48-
output: "import { trackedArray, trackedObject } from '@ember/reactive';",
48+
output: "import { trackedArray, trackedObject } from '@ember/reactive/collections';",
4949
errors: [{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' }],
5050
},
5151

5252
// All tracked imports
5353
{
5454
code: "import { TrackedArray, TrackedObject, TrackedMap, TrackedSet, TrackedWeakMap, TrackedWeakSet } from 'tracked-built-ins';",
5555
output:
56-
"import { trackedArray, trackedObject, trackedMap, trackedSet, trackedWeakMap, trackedWeakSet } from '@ember/reactive';",
56+
"import { trackedArray, trackedObject, trackedMap, trackedSet, trackedWeakMap, trackedWeakSet } from '@ember/reactive/collections';",
5757
errors: [{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' }],
5858
},
5959

6060
// Aliased import
6161
{
6262
code: "import { TrackedArray as TA } from 'tracked-built-ins';",
63-
output: "import { trackedArray as TA } from '@ember/reactive';",
63+
output: "import { trackedArray as TA } from '@ember/reactive/collections';",
6464
errors: [{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' }],
6565
},
6666

@@ -82,13 +82,13 @@ ruleTester.run('no-tracked-built-ins', rule, {
8282
{
8383
code: `import { TrackedArray } from 'tracked-built-ins';
8484
const arr = new TrackedArray([1, 2, 3]);`,
85-
output: `import { trackedArray } from '@ember/reactive';
85+
output: `import { trackedArray } from '@ember/reactive/collections';
8686
const arr = trackedArray([1, 2, 3]);`,
8787
errors: [
8888
{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' },
8989
{
9090
message:
91-
'Use `trackedArray(...)` instead of `new TrackedArray(...)`. The `@ember/reactive` utilities do not use `new`.',
91+
'Use `trackedArray(...)` instead of `new TrackedArray(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
9292
type: 'NewExpression',
9393
},
9494
],
@@ -98,13 +98,13 @@ const arr = trackedArray([1, 2, 3]);`,
9898
{
9999
code: `import { TrackedObject } from 'tracked-built-ins';
100100
const obj = new TrackedObject({ a: 1 });`,
101-
output: `import { trackedObject } from '@ember/reactive';
101+
output: `import { trackedObject } from '@ember/reactive/collections';
102102
const obj = trackedObject({ a: 1 });`,
103103
errors: [
104104
{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' },
105105
{
106106
message:
107-
'Use `trackedObject(...)` instead of `new TrackedObject(...)`. The `@ember/reactive` utilities do not use `new`.',
107+
'Use `trackedObject(...)` instead of `new TrackedObject(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
108108
type: 'NewExpression',
109109
},
110110
],
@@ -114,13 +114,13 @@ const obj = trackedObject({ a: 1 });`,
114114
{
115115
code: `import { TrackedMap } from 'tracked-built-ins';
116116
const map = new TrackedMap();`,
117-
output: `import { trackedMap } from '@ember/reactive';
117+
output: `import { trackedMap } from '@ember/reactive/collections';
118118
const map = trackedMap();`,
119119
errors: [
120120
{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' },
121121
{
122122
message:
123-
'Use `trackedMap(...)` instead of `new TrackedMap(...)`. The `@ember/reactive` utilities do not use `new`.',
123+
'Use `trackedMap(...)` instead of `new TrackedMap(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
124124
type: 'NewExpression',
125125
},
126126
],
@@ -130,13 +130,13 @@ const map = trackedMap();`,
130130
{
131131
code: `import { TrackedArray as TA } from 'tracked-built-ins';
132132
const arr = new TA([1, 2, 3]);`,
133-
output: `import { trackedArray as TA } from '@ember/reactive';
133+
output: `import { trackedArray as TA } from '@ember/reactive/collections';
134134
const arr = TA([1, 2, 3]);`,
135135
errors: [
136136
{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' },
137137
{
138138
message:
139-
'Use `trackedArray(...)` instead of `new TA(...)`. The `@ember/reactive` utilities do not use `new`.',
139+
'Use `trackedArray(...)` instead of `new TA(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
140140
type: 'NewExpression',
141141
},
142142
],
@@ -147,19 +147,19 @@ const arr = TA([1, 2, 3]);`,
147147
code: `import { TrackedArray, TrackedMap } from 'tracked-built-ins';
148148
const arr = new TrackedArray();
149149
const map = new TrackedMap();`,
150-
output: `import { trackedArray, trackedMap } from '@ember/reactive';
150+
output: `import { trackedArray, trackedMap } from '@ember/reactive/collections';
151151
const arr = trackedArray();
152152
const map = trackedMap();`,
153153
errors: [
154154
{ message: ERROR_MESSAGE_IMPORT, type: 'ImportDeclaration' },
155155
{
156156
message:
157-
'Use `trackedArray(...)` instead of `new TrackedArray(...)`. The `@ember/reactive` utilities do not use `new`.',
157+
'Use `trackedArray(...)` instead of `new TrackedArray(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
158158
type: 'NewExpression',
159159
},
160160
{
161161
message:
162-
'Use `trackedMap(...)` instead of `new TrackedMap(...)`. The `@ember/reactive` utilities do not use `new`.',
162+
'Use `trackedMap(...)` instead of `new TrackedMap(...)`. The `@ember/reactive/collections` utilities do not use `new`.',
163163
type: 'NewExpression',
164164
},
165165
],

0 commit comments

Comments
 (0)