ember-codemod-remove-ember-css-modules 4.0.4 → 4.1.0

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.
@@ -3,9 +3,8 @@ import { join } from 'node:path';
3
3
  import { AST } from '@codemod-utils/ast-javascript';
4
4
  import { createFiles, parseFilePath } from '@codemod-utils/files';
5
5
  function canSkip(file, data) {
6
- const traverse = AST.traverse(data.isTypeScript);
7
6
  let canSkip = false;
8
- traverse(file, {
7
+ AST.traverse(file, {
9
8
  visitImportDeclaration(path) {
10
9
  if (path.node.source.value === `./${data.fileName}.css`) {
11
10
  canSkip = true;
@@ -16,8 +15,7 @@ function canSkip(file, data) {
16
15
  return canSkip;
17
16
  }
18
17
  function removeTemplateOnlyComponentMethod(file, data) {
19
- const traverse = AST.traverse(data.isTypeScript);
20
- const ast = traverse(file, {
18
+ const ast = AST.traverse(file, {
21
19
  visitCallExpression(path) {
22
20
  // @ts-expect-error: Incorrect type
23
21
  if (path.node.callee.name !== 'templateOnlyComponent') {
@@ -49,10 +47,9 @@ function removeTemplateOnlyComponentMethod(file, data) {
49
47
  return AST.print(ast);
50
48
  }
51
49
  function importStylesInClass(file, data) {
52
- const traverse = AST.traverse(data.isTypeScript);
53
50
  // Find the last import statement
54
51
  let lastImportDeclarationPath;
55
- const ast = traverse(file, {
52
+ const ast = AST.traverse(file, {
56
53
  visitImportDeclaration(path) {
57
54
  if (!lastImportDeclarationPath) {
58
55
  lastImportDeclarationPath = path;
@@ -76,9 +73,8 @@ function importStylesInClass(file, data) {
76
73
  nodes.splice(index + 1, 0, AST.builders.importDeclaration([AST.builders.importDefaultSpecifier(AST.builders.identifier('styles'))], AST.builders.literal(`./${data.fileName}.css`)));
77
74
  return AST.print(ast);
78
75
  }
79
- function addStylesAsClassProperty(file, data) {
80
- const traverse = AST.traverse(data.isTypeScript);
81
- const ast = traverse(file, {
76
+ function addStylesAsClassProperty(file) {
77
+ const ast = AST.traverse(file, {
82
78
  visitClassDeclaration(path) {
83
79
  const { body } = path.node.body;
84
80
  const nodesToAdd = [
@@ -110,7 +106,7 @@ export function updateClass(entityName, { customizations, options }) {
110
106
  }
111
107
  file = removeTemplateOnlyComponentMethod(file, data);
112
108
  file = importStylesInClass(file, data);
113
- file = addStylesAsClassProperty(file, data);
109
+ file = addStylesAsClassProperty(file);
114
110
  const fileMap = new Map([[filePath, file]]);
115
111
  createFiles(fileMap, options);
116
112
  }
@@ -11,10 +11,6 @@ function sanitizeClassAndLocalClassAttributes(file) {
11
11
  return;
12
12
  }
13
13
  const attribute = attributes[attributeIndex];
14
- if (attribute.isValueless) {
15
- attributes.splice(attributeIndex, 1);
16
- return;
17
- }
18
14
  if (attribute.value.type !== 'TextNode') {
19
15
  return;
20
16
  }
@@ -24,8 +20,7 @@ function sanitizeClassAndLocalClassAttributes(file) {
24
20
  return;
25
21
  }
26
22
  }
27
- const traverse = AST.traverse();
28
- const ast = traverse(file, {
23
+ const ast = AST.traverse(file, {
29
24
  ElementNode(node) {
30
25
  const { attributes } = node;
31
26
  removeAttributeWithoutValue('class', attributes);
@@ -35,8 +30,7 @@ function sanitizeClassAndLocalClassAttributes(file) {
35
30
  return AST.print(ast);
36
31
  }
37
32
  function mergeClassAndLocalClassAttributes(file) {
38
- const traverse = AST.traverse();
39
- const ast = traverse(file, {
33
+ const ast = AST.traverse(file, {
40
34
  ElementNode(node) {
41
35
  // Check that both class and local-class attributes exist
42
36
  const { attributes } = node;
@@ -110,8 +104,8 @@ function removeLocalClassHelpers(file) {
110
104
  const value = param.value.trim();
111
105
  return value === '';
112
106
  }
113
- const traverse = AST.traverse();
114
- const ast = traverse(file, {
107
+ const ast = AST.traverse(file, {
108
+ // @ts-expect-error: Incorrect type
115
109
  AttrNode(node) {
116
110
  if (node.name !== 'class') {
117
111
  return;
@@ -290,8 +284,7 @@ function removeLocalClassAttributes(file) {
290
284
  return accumulator;
291
285
  }, []);
292
286
  }
293
- const traverse = AST.traverse();
294
- const ast = traverse(file, {
287
+ const ast = AST.traverse(file, {
295
288
  ElementNode(node) {
296
289
  // Check if the local-class attribute (still) exists
297
290
  const { attributes } = node;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-codemod-remove-ember-css-modules",
3
- "version": "4.0.4",
3
+ "version": "4.1.0",
4
4
  "description": "Codemod to replace ember-css-modules with embroider-css-modules",
5
5
  "keywords": [
6
6
  "codemod",
@@ -24,8 +24,8 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@codemod-utils/ast-javascript": "^3.0.1",
28
- "@codemod-utils/ast-template": "^3.0.1",
27
+ "@codemod-utils/ast-javascript": "^4.0.1",
28
+ "@codemod-utils/ast-template": "^4.0.0",
29
29
  "@codemod-utils/blueprints": "^3.1.0",
30
30
  "@codemod-utils/ember": "^4.1.1",
31
31
  "@codemod-utils/files": "^4.0.1",
@@ -35,14 +35,14 @@
35
35
  "devDependencies": {
36
36
  "@codemod-utils/tests": "^3.0.2",
37
37
  "@sondr3/minitest": "^0.1.2",
38
- "@types/node": "^22.19.17",
38
+ "@types/node": "^22.19.19",
39
39
  "@types/yargs": "^17.0.35",
40
- "concurrently": "^9.2.1",
40
+ "concurrently": "^10.0.0",
41
41
  "eslint": "^9.39.4",
42
42
  "prettier": "^3.8.3",
43
43
  "typescript": "^5.9.3",
44
- "@shared-configs/typescript": "0.0.0",
45
44
  "@shared-configs/eslint-config-node": "0.0.0",
45
+ "@shared-configs/typescript": "0.0.0",
46
46
  "@shared-configs/prettier": "0.0.0"
47
47
  },
48
48
  "engines": {