@typestyles/migrate 0.0.0-unstable.5e4858efecfc → 0.0.0-unstable.608d633c0934
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.
- package/README.md +19 -17
- package/dist/{chunk-D2W3OEBT.js → chunk-3USMLGWZ.js} +78 -28
- package/dist/chunk-3USMLGWZ.js.map +1 -0
- package/dist/cli.cjs +76 -26
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.cjs +76 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-D2W3OEBT.js.map +0 -1
package/README.md
CHANGED
|
@@ -8,18 +8,18 @@ Full migration guide: [typestyles.dev/docs/migration](https://typestyles.dev/doc
|
|
|
8
8
|
|
|
9
9
|
## What it transforms
|
|
10
10
|
|
|
11
|
-
| Source | Becomes
|
|
12
|
-
| ----------------------------------- |
|
|
13
|
-
| `styled.div\`...\`` | `
|
|
14
|
-
| `styled(Button)\`...\`` | `
|
|
15
|
-
| `` css`...` `` (Emotion) | `
|
|
16
|
-
| Static template literals | CSS object properties (via PostCSS parser)
|
|
17
|
-
| `` `${props => props.x}` `` | `createVar` + `assignVars` + `
|
|
18
|
-
| `` `${props => props.x ? A : B}` `` | `
|
|
19
|
-
| `` `${({ x }) => x}` `` | `createVar` + `assignVars` (destructured params)
|
|
20
|
-
| `@media` in templates | Nested `'@media (…)'` objects in style definitions
|
|
21
|
-
|
|
22
|
-
The codemod rewrites JSX usage for styled components it can safely transform and adds
|
|
11
|
+
| Source | Becomes |
|
|
12
|
+
| ----------------------------------- | -------------------------------------------------- |
|
|
13
|
+
| `styled.div\`...\`` | `style('div', { ... })` + `className` on JSX |
|
|
14
|
+
| `styled(Button)\`...\`` | `style('button', { ... })` + `className` |
|
|
15
|
+
| `` css`...` `` (Emotion) | `style(...)` |
|
|
16
|
+
| Static template literals | CSS object properties (via PostCSS parser) |
|
|
17
|
+
| `` `${props => props.x}` `` | `createVar` + `assignVars` + `style` |
|
|
18
|
+
| `` `${props => props.x ? A : B}` `` | `recipe` variants + JSX rewrite |
|
|
19
|
+
| `` `${({ x }) => x}` `` | `createVar` + `assignVars` (destructured params) |
|
|
20
|
+
| `@media` in templates | Nested `'@media (…)'` objects in style definitions |
|
|
21
|
+
|
|
22
|
+
The codemod rewrites JSX usage for styled components it can safely transform and adds `createTypeStyles` plus a `style` binding when needed (`import { createTypeStyles } from 'typestyles'`).
|
|
23
23
|
|
|
24
24
|
## What it skips (with warnings)
|
|
25
25
|
|
|
@@ -29,7 +29,7 @@ Honest automation beats silent breakage:
|
|
|
29
29
|
- **Exported styled components** — avoids changing your public API shape without review
|
|
30
30
|
- **Non-JSX references** to styled component variables
|
|
31
31
|
|
|
32
|
-
Prop-based patterns like `` `${props => props.color}` `` and `` `${(props) => props.width}px` `` are converted to [`createVar` + `assignVars`](https://typestyles.dev/docs/dynamic-styles). Boolean prop ternaries like `` `${props => props.primary ? '#0066ff' : '#6b7280'}` `` become `
|
|
32
|
+
Prop-based patterns like `` `${props => props.color}` `` and `` `${(props) => props.width}px` `` are converted to [`createVar` + `assignVars`](https://typestyles.dev/docs/dynamic-styles). Boolean prop ternaries like `` `${props => props.primary ? '#0066ff' : '#6b7280'}` `` become `recipe` variants. Suffix text after the interpolation (e.g. `px`) is applied at the call site.
|
|
33
33
|
|
|
34
34
|
## Installation
|
|
35
35
|
|
|
@@ -107,9 +107,11 @@ export function App() {
|
|
|
107
107
|
**After:**
|
|
108
108
|
|
|
109
109
|
```tsx
|
|
110
|
-
import {
|
|
110
|
+
import { createTypeStyles } from 'typestyles';
|
|
111
111
|
|
|
112
|
-
const
|
|
112
|
+
const { style } = createTypeStyles();
|
|
113
|
+
|
|
114
|
+
const button = style('button', {
|
|
113
115
|
padding: '8px 16px',
|
|
114
116
|
background: '#0066ff',
|
|
115
117
|
color: 'white',
|
|
@@ -124,7 +126,7 @@ export function App() {
|
|
|
124
126
|
}
|
|
125
127
|
```
|
|
126
128
|
|
|
127
|
-
For components with variants, follow up manually with `
|
|
129
|
+
For components with variants, follow up manually with `recipe()` — see the [styled-components migration section](https://typestyles.dev/docs/migration#from-styled-components). Consider `createTypeStyles({ scopeId: 'your-app' })` for production apps.
|
|
128
130
|
|
|
129
131
|
## Programmatic API
|
|
130
132
|
|
|
@@ -150,7 +152,7 @@ await runMigration(process.cwd(), {
|
|
|
150
152
|
1. **Dry-run** on a branch and review diffs
|
|
151
153
|
2. **Fix warnings** — convert dynamic templates to vars or inline styles
|
|
152
154
|
3. **Apply with `--write`**
|
|
153
|
-
4. **Refactor** repeated `
|
|
155
|
+
4. **Refactor** repeated `style()` calls into `recipe()` with variants
|
|
154
156
|
5. **Add tokens** — replace hard-coded colors/spacing with `tokens.create`
|
|
155
157
|
6. **Enable extraction** — add `@typestyles/vite` or your bundler plugin for production zero-runtime
|
|
156
158
|
|
|
@@ -340,17 +340,37 @@ function updateClassNameAttribute(openingElement, classNameExpression) {
|
|
|
340
340
|
);
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
|
-
function
|
|
344
|
-
const
|
|
345
|
-
|
|
343
|
+
function hasLocalBinding(ast, name) {
|
|
344
|
+
for (const statement of ast.program.body) {
|
|
345
|
+
if (!t4.isVariableDeclaration(statement)) continue;
|
|
346
|
+
for (const declarator of statement.declarations) {
|
|
347
|
+
if (t4.isIdentifier(declarator.id) && declarator.id.name === name) return true;
|
|
348
|
+
if (t4.isObjectPattern(declarator.id)) {
|
|
349
|
+
for (const prop of declarator.id.properties) {
|
|
350
|
+
if (t4.isObjectProperty(prop) && t4.isIdentifier(prop.value) && prop.value.name === name) {
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
function ensureTypestylesRuntime(ast, needs) {
|
|
360
|
+
const requiredSpecifiers = /* @__PURE__ */ new Set(["createTypeStyles"]);
|
|
361
|
+
if (needs.vars) {
|
|
346
362
|
requiredSpecifiers.add("createVar");
|
|
347
363
|
requiredSpecifiers.add("assignVars");
|
|
348
364
|
}
|
|
349
365
|
let typestylesImport = null;
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
366
|
+
let lastImportIndex = -1;
|
|
367
|
+
for (let i = 0; i < ast.program.body.length; i++) {
|
|
368
|
+
const statement = ast.program.body[i];
|
|
369
|
+
if (t4.isImportDeclaration(statement)) {
|
|
370
|
+
lastImportIndex = i;
|
|
371
|
+
if (statement.source.value === "typestyles" && typestylesImport == null) {
|
|
372
|
+
typestylesImport = statement;
|
|
373
|
+
}
|
|
354
374
|
}
|
|
355
375
|
}
|
|
356
376
|
const buildSpecifiers = (names) => [...names].map((name) => t4.importSpecifier(t4.identifier(name), t4.identifier(name)));
|
|
@@ -358,16 +378,36 @@ function ensureTypestylesImport(ast, needsVars) {
|
|
|
358
378
|
ast.program.body.unshift(
|
|
359
379
|
t4.importDeclaration(buildSpecifiers(requiredSpecifiers), t4.stringLiteral("typestyles"))
|
|
360
380
|
);
|
|
361
|
-
|
|
381
|
+
lastImportIndex = 0;
|
|
382
|
+
} else {
|
|
383
|
+
for (const name of requiredSpecifiers) {
|
|
384
|
+
const hasSpecifier = typestylesImport.specifiers.some(
|
|
385
|
+
(specifier) => t4.isImportSpecifier(specifier) && t4.isIdentifier(specifier.imported, { name }) && t4.isIdentifier(specifier.local, { name })
|
|
386
|
+
);
|
|
387
|
+
if (!hasSpecifier) {
|
|
388
|
+
typestylesImport.specifiers.push(t4.importSpecifier(t4.identifier(name), t4.identifier(name)));
|
|
389
|
+
}
|
|
390
|
+
}
|
|
362
391
|
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
392
|
+
const destructureProps = [];
|
|
393
|
+
if (needs.style && !hasLocalBinding(ast, "style")) {
|
|
394
|
+
destructureProps.push(
|
|
395
|
+
t4.objectProperty(t4.identifier("style"), t4.identifier("style"), false, true)
|
|
396
|
+
);
|
|
397
|
+
}
|
|
398
|
+
if (needs.recipe && !hasLocalBinding(ast, "recipe")) {
|
|
399
|
+
destructureProps.push(
|
|
400
|
+
t4.objectProperty(t4.identifier("recipe"), t4.identifier("recipe"), false, true)
|
|
366
401
|
);
|
|
367
|
-
if (!hasSpecifier) {
|
|
368
|
-
typestylesImport.specifiers.push(t4.importSpecifier(t4.identifier(name), t4.identifier(name)));
|
|
369
|
-
}
|
|
370
402
|
}
|
|
403
|
+
if (destructureProps.length === 0) return;
|
|
404
|
+
const factoryDecl = t4.variableDeclaration("const", [
|
|
405
|
+
t4.variableDeclarator(
|
|
406
|
+
t4.objectPattern(destructureProps),
|
|
407
|
+
t4.callExpression(t4.identifier("createTypeStyles"), [])
|
|
408
|
+
)
|
|
409
|
+
]);
|
|
410
|
+
ast.program.body.splice(lastImportIndex + 1, 0, factoryDecl);
|
|
371
411
|
}
|
|
372
412
|
function cleanupUnusedImports(ast) {
|
|
373
413
|
traverse(ast, {
|
|
@@ -376,7 +416,7 @@ function cleanupUnusedImports(ast) {
|
|
|
376
416
|
},
|
|
377
417
|
ImportDeclaration(path) {
|
|
378
418
|
const unusedLocals = path.node.specifiers.filter((specifier) => {
|
|
379
|
-
if (path.node.source.value === "typestyles" && t4.isImportSpecifier(specifier) && (specifier.local.name === "
|
|
419
|
+
if (path.node.source.value === "typestyles" && t4.isImportSpecifier(specifier) && (specifier.local.name === "createTypeStyles" || specifier.local.name === "createVar" || specifier.local.name === "assignVars")) {
|
|
380
420
|
return false;
|
|
381
421
|
}
|
|
382
422
|
const local = specifier.local.name;
|
|
@@ -487,7 +527,7 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
|
|
|
487
527
|
declaration.node.declarations = [
|
|
488
528
|
t4.variableDeclarator(
|
|
489
529
|
t4.identifier(componentConstName),
|
|
490
|
-
t4.callExpression(t4.
|
|
530
|
+
t4.callExpression(t4.identifier("recipe"), [
|
|
491
531
|
t4.stringLiteral(toKebabCase(variableName)),
|
|
492
532
|
componentConfig
|
|
493
533
|
])
|
|
@@ -548,7 +588,7 @@ function migrateInterpolatedTemplate(path, variableName, template, styledTarget,
|
|
|
548
588
|
...varDeclarators,
|
|
549
589
|
t4.variableDeclarator(
|
|
550
590
|
t4.identifier(classConstName),
|
|
551
|
-
t4.callExpression(t4.
|
|
591
|
+
t4.callExpression(t4.identifier("style"), [
|
|
552
592
|
t4.stringLiteral(toKebabCase(variableName)),
|
|
553
593
|
objectExpression4
|
|
554
594
|
])
|
|
@@ -582,6 +622,8 @@ function migrateSource(filePath, source) {
|
|
|
582
622
|
const cssTagNames = /* @__PURE__ */ new Set();
|
|
583
623
|
const styledTransforms = /* @__PURE__ */ new Map();
|
|
584
624
|
let needsVars = false;
|
|
625
|
+
let needsStyle = false;
|
|
626
|
+
let needsRecipe = false;
|
|
585
627
|
traverse(ast, {
|
|
586
628
|
ImportDeclaration(path) {
|
|
587
629
|
if (path.node.source.value === "styled-components" || path.node.source.value === "@emotion/styled") {
|
|
@@ -643,6 +685,7 @@ function migrateSource(filePath, source) {
|
|
|
643
685
|
warnings,
|
|
644
686
|
styledTransforms
|
|
645
687
|
)) {
|
|
688
|
+
needsRecipe = true;
|
|
646
689
|
changed = true;
|
|
647
690
|
return;
|
|
648
691
|
}
|
|
@@ -655,6 +698,7 @@ function migrateSource(filePath, source) {
|
|
|
655
698
|
styledTransforms
|
|
656
699
|
)) {
|
|
657
700
|
needsVars = true;
|
|
701
|
+
needsStyle = true;
|
|
658
702
|
changed = true;
|
|
659
703
|
}
|
|
660
704
|
return;
|
|
@@ -681,10 +725,10 @@ function migrateSource(filePath, source) {
|
|
|
681
725
|
}
|
|
682
726
|
const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;
|
|
683
727
|
path.node.id = t4.identifier(classConstName);
|
|
684
|
-
path.node.init = t4.callExpression(
|
|
685
|
-
t4.
|
|
686
|
-
|
|
687
|
-
);
|
|
728
|
+
path.node.init = t4.callExpression(t4.identifier("style"), [
|
|
729
|
+
t4.stringLiteral(toKebabCase(variableName)),
|
|
730
|
+
objectExpression4
|
|
731
|
+
]);
|
|
688
732
|
styledTransforms.set(variableName, {
|
|
689
733
|
originalName: variableName,
|
|
690
734
|
mode: "class",
|
|
@@ -693,14 +737,16 @@ function migrateSource(filePath, source) {
|
|
|
693
737
|
propVars: [],
|
|
694
738
|
variantProps: []
|
|
695
739
|
});
|
|
740
|
+
needsStyle = true;
|
|
696
741
|
changed = true;
|
|
697
742
|
return;
|
|
698
743
|
}
|
|
699
744
|
if (t4.isIdentifier(path.node.init.tag) && cssTagNames.has(path.node.init.tag.name)) {
|
|
700
|
-
path.node.init = t4.callExpression(
|
|
701
|
-
t4.
|
|
702
|
-
|
|
703
|
-
);
|
|
745
|
+
path.node.init = t4.callExpression(t4.identifier("style"), [
|
|
746
|
+
t4.stringLiteral(toKebabCase(variableName)),
|
|
747
|
+
objectExpression4
|
|
748
|
+
]);
|
|
749
|
+
needsStyle = true;
|
|
704
750
|
changed = true;
|
|
705
751
|
}
|
|
706
752
|
}
|
|
@@ -738,7 +784,11 @@ function migrateSource(filePath, source) {
|
|
|
738
784
|
});
|
|
739
785
|
}
|
|
740
786
|
if (changed) {
|
|
741
|
-
|
|
787
|
+
ensureTypestylesRuntime(ast, {
|
|
788
|
+
style: needsStyle,
|
|
789
|
+
recipe: needsRecipe,
|
|
790
|
+
vars: needsVars
|
|
791
|
+
});
|
|
742
792
|
cleanupUnusedImports(ast);
|
|
743
793
|
}
|
|
744
794
|
const output = generate(
|
|
@@ -864,5 +914,5 @@ Scanned ${summary.filesScanned} files, changed ${summary.filesChanged}, warnings
|
|
|
864
914
|
}
|
|
865
915
|
|
|
866
916
|
export { migrateSource, runMigration };
|
|
867
|
-
//# sourceMappingURL=chunk-
|
|
868
|
-
//# sourceMappingURL=chunk-
|
|
917
|
+
//# sourceMappingURL=chunk-3USMLGWZ.js.map
|
|
918
|
+
//# sourceMappingURL=chunk-3USMLGWZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/css.ts","../src/interpolations.ts","../src/variants.ts","../src/transform.ts","../src/files.ts","../src/migrate.ts"],"names":["t","camelCaseProperty","t2","t3","toKeyNode","objectExpression","relative"],"mappings":"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","file":"chunk-3USMLGWZ.js","sourcesContent":["import postcss, { type ChildNode, type Container } from 'postcss';\nimport * as t from '@babel/types';\nimport type { MigrationWarning } from './types';\n\nfunction camelCaseProperty(property: string): string {\n return property.replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nfunction toValueNode(value: string, varReplacements?: Map<string, t.Identifier>): t.Expression {\n const trimmed = value.trim();\n if (varReplacements?.has(trimmed)) {\n return varReplacements.get(trimmed)!;\n }\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n return t.numericLiteral(Number(trimmed));\n }\n return t.stringLiteral(trimmed);\n}\n\nfunction toKeyNode(key: string): t.Expression {\n if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) {\n return t.identifier(key);\n }\n return t.stringLiteral(key);\n}\n\nfunction nodesToObject(\n nodes: ChildNode[] | undefined,\n warnings: MigrationWarning[],\n varReplacements?: Map<string, t.Identifier>,\n): t.ObjectExpression {\n const properties: t.ObjectProperty[] = [];\n\n for (const node of nodes ?? []) {\n if (node.type === 'decl') {\n const normalized = node.prop.startsWith('--') ? node.prop : camelCaseProperty(node.prop);\n properties.push(\n t.objectProperty(toKeyNode(normalized), toValueNode(node.value, varReplacements)),\n );\n continue;\n }\n\n if (node.type === 'rule') {\n const nested = nodesToObject(node.nodes, warnings, varReplacements);\n properties.push(t.objectProperty(t.stringLiteral(node.selector.trim()), nested));\n continue;\n }\n\n if (node.type === 'atrule') {\n const nested = nodesToObject(node.nodes, warnings, varReplacements);\n const atRuleKey = `@${node.name}${node.params ? ` ${node.params}` : ''}`;\n properties.push(t.objectProperty(t.stringLiteral(atRuleKey), nested));\n continue;\n }\n\n warnings.push({\n message: `Unsupported CSS node \"${node.type}\" skipped.`,\n });\n }\n\n return t.objectExpression(properties);\n}\n\nexport function cssToObjectExpression(\n cssText: string,\n warnings: MigrationWarning[],\n varReplacements?: Map<string, t.Identifier>,\n): t.ObjectExpression | null {\n try {\n const root = postcss.parse(cssText);\n return nodesToObject((root as unknown as Container).nodes, warnings, varReplacements);\n } catch (error) {\n warnings.push({\n message: `Could not parse CSS template literal: ${(error as Error).message}`,\n });\n return null;\n }\n}\n","import * as t from '@babel/types';\n\nexport type PropInterpolation = {\n index: number;\n propName: string;\n suffix: string;\n};\n\nexport type BooleanTernaryInterpolation = {\n index: number;\n propName: string;\n trueValue: string;\n falseValue: string;\n cssProperty: string;\n};\n\nconst PLACEHOLDER_PREFIX = '__ts_migrate_var_';\n\nfunction camelCaseProperty(property: string): string {\n return property.replace(/-([a-z])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nexport function placeholderToken(index: number): string {\n return `${PLACEHOLDER_PREFIX}${index}__`;\n}\n\nfunction extractSuffixFromQuasi(quasiText: string): string {\n const match = quasiText.match(/^([^;\\n]*)/);\n return match?.[1] ?? '';\n}\n\nfunction literalToCssValue(node: t.Node): string | null {\n if (t.isStringLiteral(node)) return node.value;\n if (t.isNumericLiteral(node)) return String(node.value);\n return null;\n}\n\nfunction unwrapExpression(expression: t.Expression): t.Expression {\n if (t.isParenthesizedExpression(expression)) {\n return unwrapExpression(expression.expression);\n }\n return expression;\n}\n\nfunction extractCssPropertyBeforeInterpolation(quasiText: string): string | null {\n const match = quasiText.match(/([a-zA-Z-]+)\\s*:\\s*$/);\n return match?.[1] ?? null;\n}\n\nfunction stripTrailingPropertyDeclaration(quasiText: string): string {\n return quasiText.replace(/[a-zA-Z-]+\\s*:\\s*$/, '');\n}\n\nfunction stripLeadingDeclarationRemainder(quasiText: string): string {\n const semiIdx = quasiText.indexOf(';');\n if (semiIdx === -1) return quasiText;\n return quasiText.slice(semiIdx + 1).trimStart();\n}\n\n/**\n * Parse a styled-components prop interpolation such as\n * `(props) => props.color`, `props => props.width`, or `({ color }) => color`.\n */\nexport function parsePropInterpolation(expression: t.Expression): { propName: string } | null {\n if (!t.isArrowFunctionExpression(expression)) return null;\n\n const param = expression.params[0];\n if (!param) return null;\n\n const body = unwrapExpression(expression.body as t.Expression);\n if (!t.isExpression(body)) return null;\n\n if (t.isIdentifier(param)) {\n if (\n t.isMemberExpression(body) &&\n !body.computed &&\n t.isIdentifier(body.object, { name: param.name }) &&\n t.isIdentifier(body.property)\n ) {\n return { propName: body.property.name };\n }\n return null;\n }\n\n if (t.isObjectPattern(param) && t.isIdentifier(body)) {\n const propName = body.name;\n const hasProp = param.properties.some((property) => {\n if (!t.isObjectProperty(property)) return false;\n const keyName = t.isIdentifier(property.key)\n ? property.key.name\n : t.isStringLiteral(property.key)\n ? property.key.value\n : null;\n return keyName === propName;\n });\n if (!hasProp) return null;\n return { propName };\n }\n\n return null;\n}\n\n/**\n * Parse `${(props) => (props.primary ? '#0066ff' : '#6b7280')}` style interpolations.\n */\nexport function parseBooleanTernaryInterpolation(\n expression: t.Expression,\n): { propName: string; trueValue: string; falseValue: string } | null {\n if (!t.isArrowFunctionExpression(expression)) return null;\n\n const param = expression.params[0];\n if (!t.isIdentifier(param)) return null;\n\n const body = unwrapExpression(expression.body as t.Expression);\n if (!t.isConditionalExpression(body)) return null;\n\n if (\n !t.isMemberExpression(body.test) ||\n body.test.computed ||\n !t.isIdentifier(body.test.object, { name: param.name }) ||\n !t.isIdentifier(body.test.property)\n ) {\n return null;\n }\n\n const trueValue = literalToCssValue(body.consequent);\n const falseValue = literalToCssValue(body.alternate);\n if (trueValue === null || falseValue === null) return null;\n\n return {\n propName: body.test.property.name,\n trueValue,\n falseValue,\n };\n}\n\nexport function parseTemplateInterpolations(\n template: t.TemplateLiteral,\n): PropInterpolation[] | null {\n const interpolations: PropInterpolation[] = [];\n\n for (let i = 0; i < template.expressions.length; i++) {\n const expression = template.expressions[i];\n if (!t.isExpression(expression)) return null;\n\n const parsed = parsePropInterpolation(expression);\n if (!parsed) return null;\n\n const followingQuasi = template.quasis[i + 1]?.value.cooked ?? '';\n interpolations.push({\n index: i,\n propName: parsed.propName,\n suffix: extractSuffixFromQuasi(followingQuasi),\n });\n }\n\n return interpolations;\n}\n\nexport function parseBooleanTemplateInterpolations(\n template: t.TemplateLiteral,\n): BooleanTernaryInterpolation[] | null {\n const interpolations: BooleanTernaryInterpolation[] = [];\n\n for (let i = 0; i < template.expressions.length; i++) {\n const expression = template.expressions[i];\n if (!t.isExpression(expression)) return null;\n\n const parsed = parseBooleanTernaryInterpolation(expression);\n if (!parsed) return null;\n\n const quasiBefore = template.quasis[i]?.value.cooked ?? '';\n const cssProperty = extractCssPropertyBeforeInterpolation(quasiBefore);\n if (!cssProperty) return null;\n\n interpolations.push({\n index: i,\n propName: parsed.propName,\n trueValue: parsed.trueValue,\n falseValue: parsed.falseValue,\n cssProperty: camelCaseProperty(cssProperty),\n });\n }\n\n return interpolations;\n}\n\nexport function reconstructInterpolatedCss(\n template: t.TemplateLiteral,\n interpolations: PropInterpolation[],\n): string {\n let result = '';\n\n for (let i = 0; i < template.quasis.length; i++) {\n let quasiText = template.quasis[i].value.cooked ?? '';\n\n if (i > 0) {\n const interpolation = interpolations[i - 1];\n if (interpolation?.suffix && quasiText.startsWith(interpolation.suffix)) {\n quasiText = quasiText.slice(interpolation.suffix.length);\n }\n }\n\n result += quasiText;\n\n if (i < interpolations.length) {\n result += placeholderToken(interpolations[i].index);\n }\n }\n\n return result;\n}\n\nexport function reconstructStaticCssWithoutVariants(\n template: t.TemplateLiteral,\n booleanInterpolations: BooleanTernaryInterpolation[],\n): string {\n const skipIndices = new Set(booleanInterpolations.map((interpolation) => interpolation.index));\n let result = '';\n\n for (let i = 0; i < template.quasis.length; i++) {\n let quasiText = template.quasis[i].value.cooked ?? '';\n\n if (skipIndices.has(i)) {\n quasiText = stripTrailingPropertyDeclaration(quasiText);\n }\n\n if (i > 0 && skipIndices.has(i - 1)) {\n quasiText = stripLeadingDeclarationRemainder(quasiText);\n }\n\n result += quasiText;\n }\n\n return result.trim();\n}\n\nexport function toVarDebugName(componentName: string, propName: string): string {\n return `${componentName}${propName.charAt(0).toUpperCase()}${propName.slice(1)}`;\n}\n\nexport function toComponentConstName(componentName: string): string {\n if (!componentName) return componentName;\n return componentName.charAt(0).toLowerCase() + componentName.slice(1);\n}\n","import * as t from '@babel/types';\nimport type { BooleanTernaryInterpolation } from './interpolations';\n\nfunction toCssValueNode(value: string): t.Expression {\n if (/^-?\\d+(\\.\\d+)?$/.test(value.trim())) {\n return t.numericLiteral(Number(value));\n }\n return t.stringLiteral(value);\n}\n\nfunction toKeyNode(key: string): t.Expression {\n if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key)) {\n return t.identifier(key);\n }\n return t.stringLiteral(key);\n}\n\nfunction buildVariantStyles(properties: Record<string, string>): t.ObjectExpression {\n return t.objectExpression(\n Object.entries(properties).map(([key, value]) =>\n t.objectProperty(toKeyNode(key), toCssValueNode(value)),\n ),\n );\n}\n\nexport function buildVariantComponentConfig(\n baseObject: t.ObjectExpression,\n booleanInterpolations: BooleanTernaryInterpolation[],\n): t.ObjectExpression {\n const variantGroups = new Map<\n string,\n { true: Record<string, string>; false: Record<string, string> }\n >();\n\n for (const interpolation of booleanInterpolations) {\n const group = variantGroups.get(interpolation.propName) ?? { true: {}, false: {} };\n group.true[interpolation.cssProperty] = interpolation.trueValue;\n group.false[interpolation.cssProperty] = interpolation.falseValue;\n variantGroups.set(interpolation.propName, group);\n }\n\n const variantsProperties = [...variantGroups.entries()].map(([propName, values]) =>\n t.objectProperty(\n t.identifier(propName),\n t.objectExpression([\n t.objectProperty(t.identifier('true'), buildVariantStyles(values.true)),\n t.objectProperty(t.identifier('false'), buildVariantStyles(values.false)),\n ]),\n ),\n );\n\n const defaultVariantProperties = [...variantGroups.keys()].map((propName) =>\n t.objectProperty(t.identifier(propName), t.booleanLiteral(false)),\n );\n\n return t.objectExpression([\n t.objectProperty(t.identifier('base'), baseObject),\n t.objectProperty(t.identifier('variants'), t.objectExpression(variantsProperties)),\n t.objectProperty(t.identifier('defaultVariants'), t.objectExpression(defaultVariantProperties)),\n ]);\n}\n","import { parse } from '@babel/parser';\nimport generate from '@babel/generator';\nimport traverse, { type NodePath } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { cssToObjectExpression } from './css';\nimport {\n parseBooleanTemplateInterpolations,\n parseTemplateInterpolations,\n placeholderToken,\n reconstructInterpolatedCss,\n reconstructStaticCssWithoutVariants,\n toComponentConstName,\n toVarDebugName,\n} from './interpolations';\nimport type { FileMigrationResult, MigrationWarning } from './types';\nimport { buildVariantComponentConfig } from './variants';\n\ntype StyledTarget =\n | { kind: 'intrinsic'; jsxName: t.JSXIdentifier }\n | { kind: 'component'; jsxName: t.JSXIdentifier | t.JSXMemberExpression };\n\ntype PropVarBinding = {\n propName: string;\n varConstName: string;\n suffix: string;\n};\n\ntype StyledTransform = {\n originalName: string;\n mode: 'class' | 'component';\n classConstName: string;\n target: StyledTarget;\n propVars: PropVarBinding[];\n variantProps: string[];\n};\n\nfunction toKebabCase(input: string): string {\n return input\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .toLowerCase();\n}\n\nfunction memberExpressionToJsxName(\n expression: t.Expression,\n): t.JSXIdentifier | t.JSXMemberExpression | null {\n if (t.isIdentifier(expression)) {\n return t.jsxIdentifier(expression.name);\n }\n\n if (t.isMemberExpression(expression) && !expression.computed) {\n const left = memberExpressionToJsxName(expression.object as t.Expression);\n const right = t.isIdentifier(expression.property)\n ? t.jsxIdentifier(expression.property.name)\n : null;\n if (!left || !right) return null;\n return t.jsxMemberExpression(left, right);\n }\n\n return null;\n}\n\nfunction parseStyledTarget(\n tag: t.TaggedTemplateExpression['tag'],\n styledNames: Set<string>,\n): StyledTarget | null {\n if (\n t.isMemberExpression(tag) &&\n t.isIdentifier(tag.object) &&\n styledNames.has(tag.object.name) &&\n t.isIdentifier(tag.property)\n ) {\n return { kind: 'intrinsic', jsxName: t.jsxIdentifier(tag.property.name) };\n }\n\n if (t.isCallExpression(tag) && t.isIdentifier(tag.callee) && styledNames.has(tag.callee.name)) {\n const firstArg = tag.arguments[0];\n if (!firstArg || !t.isExpression(firstArg)) return null;\n const jsxName = memberExpressionToJsxName(firstArg);\n if (!jsxName) return null;\n return { kind: 'component', jsxName };\n }\n\n return null;\n}\n\nfunction addWarning(warnings: MigrationWarning[], message: string, nodeName?: string): void {\n warnings.push({ message, nodeName });\n}\n\nfunction createMergedClassExpression(\n existing: t.Expression,\n classNameExpression: t.Expression,\n): t.Expression {\n return t.callExpression(\n t.memberExpression(\n t.callExpression(\n t.memberExpression(\n t.arrayExpression([existing, classNameExpression]),\n t.identifier('filter'),\n ),\n [t.identifier('Boolean')],\n ),\n t.identifier('join'),\n ),\n [t.stringLiteral(' ')],\n );\n}\n\nfunction updateClassNameAttribute(\n openingElement: t.JSXOpeningElement,\n classNameExpression: t.Expression,\n): void {\n const existingAttr = openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'className' }),\n );\n\n if (!existingAttr) {\n openingElement.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(classNameExpression)),\n );\n return;\n }\n\n if (!existingAttr.value) {\n existingAttr.value = t.jsxExpressionContainer(classNameExpression);\n return;\n }\n\n if (t.isStringLiteral(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n createMergedClassExpression(t.stringLiteral(existingAttr.value.value), classNameExpression),\n );\n return;\n }\n\n if (t.isJSXExpressionContainer(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n createMergedClassExpression(\n existingAttr.value.expression as t.Expression,\n classNameExpression,\n ),\n );\n }\n}\n\nfunction hasLocalBinding(ast: t.File, name: string): boolean {\n for (const statement of ast.program.body) {\n if (!t.isVariableDeclaration(statement)) continue;\n for (const declarator of statement.declarations) {\n if (t.isIdentifier(declarator.id) && declarator.id.name === name) return true;\n if (t.isObjectPattern(declarator.id)) {\n for (const prop of declarator.id.properties) {\n if (t.isObjectProperty(prop) && t.isIdentifier(prop.value) && prop.value.name === name) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\nfunction ensureTypestylesRuntime(\n ast: t.File,\n needs: { style: boolean; recipe: boolean; vars: boolean },\n): void {\n const requiredSpecifiers = new Set<string>(['createTypeStyles']);\n if (needs.vars) {\n requiredSpecifiers.add('createVar');\n requiredSpecifiers.add('assignVars');\n }\n\n let typestylesImport: t.ImportDeclaration | null = null;\n let lastImportIndex = -1;\n\n for (let i = 0; i < ast.program.body.length; i++) {\n const statement = ast.program.body[i];\n if (t.isImportDeclaration(statement)) {\n lastImportIndex = i;\n if (statement.source.value === 'typestyles' && typestylesImport == null) {\n typestylesImport = statement;\n }\n }\n }\n\n const buildSpecifiers = (names: Set<string>): t.ImportSpecifier[] =>\n [...names].map((name) => t.importSpecifier(t.identifier(name), t.identifier(name)));\n\n if (!typestylesImport) {\n ast.program.body.unshift(\n t.importDeclaration(buildSpecifiers(requiredSpecifiers), t.stringLiteral('typestyles')),\n );\n lastImportIndex = 0;\n } else {\n for (const name of requiredSpecifiers) {\n const hasSpecifier = typestylesImport.specifiers.some(\n (specifier) =>\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name }) &&\n t.isIdentifier(specifier.local, { name }),\n );\n\n if (!hasSpecifier) {\n typestylesImport.specifiers.push(t.importSpecifier(t.identifier(name), t.identifier(name)));\n }\n }\n }\n\n const destructureProps: t.ObjectProperty[] = [];\n if (needs.style && !hasLocalBinding(ast, 'style')) {\n destructureProps.push(\n t.objectProperty(t.identifier('style'), t.identifier('style'), false, true),\n );\n }\n if (needs.recipe && !hasLocalBinding(ast, 'recipe')) {\n destructureProps.push(\n t.objectProperty(t.identifier('recipe'), t.identifier('recipe'), false, true),\n );\n }\n\n if (destructureProps.length === 0) return;\n\n const factoryDecl = t.variableDeclaration('const', [\n t.variableDeclarator(\n t.objectPattern(destructureProps),\n t.callExpression(t.identifier('createTypeStyles'), []),\n ),\n ]);\n ast.program.body.splice(lastImportIndex + 1, 0, factoryDecl);\n}\n\nfunction cleanupUnusedImports(ast: t.File): void {\n traverse(ast, {\n Program(path) {\n path.scope.crawl();\n },\n ImportDeclaration(path) {\n const unusedLocals = path.node.specifiers.filter((specifier) => {\n if (\n path.node.source.value === 'typestyles' &&\n t.isImportSpecifier(specifier) &&\n (specifier.local.name === 'createTypeStyles' ||\n specifier.local.name === 'createVar' ||\n specifier.local.name === 'assignVars')\n ) {\n return false;\n }\n const local = specifier.local.name;\n const binding = path.scope.getBinding(local);\n return !binding || binding.referencePaths.length === 0;\n });\n\n if (unusedLocals.length === 0) return;\n\n path.node.specifiers = path.node.specifiers.filter(\n (specifier) => !unusedLocals.includes(specifier),\n );\n if (path.node.specifiers.length === 0) {\n path.remove();\n }\n },\n });\n}\n\nfunction createAssignVarValue(propExpression: t.Expression, suffix: string): t.Expression {\n if (!suffix) return propExpression;\n\n if (t.isStringLiteral(propExpression)) {\n return t.stringLiteral(`${propExpression.value}${suffix}`);\n }\n\n return t.binaryExpression('+', propExpression, t.stringLiteral(suffix));\n}\n\nfunction buildAssignVarsCall(\n propVars: PropVarBinding[],\n propValues: Map<string, t.Expression>,\n): t.CallExpression {\n const properties = propVars\n .filter((binding) => propValues.has(binding.propName))\n .map((binding) => {\n const propExpression = propValues.get(binding.propName)!;\n return t.objectProperty(\n t.identifier(binding.varConstName),\n createAssignVarValue(propExpression, binding.suffix),\n true,\n );\n });\n\n return t.callExpression(t.identifier('assignVars'), [t.objectExpression(properties)]);\n}\n\nfunction mergeStyleExpressions(\n existing: t.Expression,\n assignVarsCall: t.CallExpression,\n): t.Expression {\n return t.objectExpression([t.spreadElement(existing), t.spreadElement(assignVarsCall)]);\n}\n\nfunction updateStyleAttribute(\n openingElement: t.JSXOpeningElement,\n assignVarsCall: t.CallExpression,\n): void {\n const existingAttr = openingElement.attributes.find(\n (attribute): attribute is t.JSXAttribute =>\n t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'style' }),\n );\n\n if (!existingAttr) {\n openingElement.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('style'), t.jsxExpressionContainer(assignVarsCall)),\n );\n return;\n }\n\n if (!existingAttr.value) {\n existingAttr.value = t.jsxExpressionContainer(assignVarsCall);\n return;\n }\n\n if (t.isJSXExpressionContainer(existingAttr.value)) {\n existingAttr.value = t.jsxExpressionContainer(\n mergeStyleExpressions(existingAttr.value.expression as t.Expression, assignVarsCall),\n );\n }\n}\n\nfunction collectPropValuesFromJsx(\n openingElement: t.JSXOpeningElement,\n propNames: Set<string>,\n): Map<string, t.Expression> {\n const values = new Map<string, t.Expression>();\n\n for (const attribute of openingElement.attributes) {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) continue;\n if (!propNames.has(attribute.name.name)) continue;\n\n if (!attribute.value) {\n values.set(attribute.name.name, t.booleanLiteral(true));\n continue;\n }\n\n if (t.isStringLiteral(attribute.value)) {\n values.set(attribute.name.name, t.stringLiteral(attribute.value.value));\n continue;\n }\n\n if (t.isJSXExpressionContainer(attribute.value)) {\n values.set(attribute.name.name, attribute.value.expression as t.Expression);\n }\n }\n\n return values;\n}\n\nfunction removeStyledProps(openingElement: t.JSXOpeningElement, propNames: Set<string>): void {\n openingElement.attributes = openingElement.attributes.filter((attribute) => {\n if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return true;\n return !propNames.has(attribute.name.name);\n });\n}\n\nfunction buildComponentClassNameExpression(\n componentConstName: string,\n variantProps: string[],\n propValues: Map<string, t.Expression>,\n): t.CallExpression {\n const properties = variantProps\n .filter((propName) => propValues.has(propName))\n .map((propName) => t.objectProperty(t.identifier(propName), propValues.get(propName)!));\n\n if (properties.length === 0) {\n return t.callExpression(t.identifier(componentConstName), []);\n }\n\n return t.callExpression(t.identifier(componentConstName), [t.objectExpression(properties)]);\n}\n\nfunction migrateBooleanVariantTemplate(\n path: NodePath<t.VariableDeclarator>,\n variableName: string,\n template: t.TemplateLiteral,\n styledTarget: StyledTarget,\n warnings: MigrationWarning[],\n styledTransforms: Map<string, StyledTransform>,\n): boolean {\n const booleanInterpolations = parseBooleanTemplateInterpolations(template);\n if (!booleanInterpolations) return false;\n\n const staticCss = reconstructStaticCssWithoutVariants(template, booleanInterpolations);\n const baseObject = cssToObjectExpression(staticCss, warnings);\n if (!baseObject) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return false;\n }\n\n const componentConstName = path.scope.generateUidIdentifier(\n toComponentConstName(variableName),\n ).name;\n const componentConfig = buildVariantComponentConfig(baseObject, booleanInterpolations);\n const variantProps = [\n ...new Set(booleanInterpolations.map((interpolation) => interpolation.propName)),\n ];\n\n const declaration = path.parentPath;\n if (!declaration.isVariableDeclaration()) return false;\n\n declaration.node.declarations = [\n t.variableDeclarator(\n t.identifier(componentConstName),\n t.callExpression(t.identifier('recipe'), [\n t.stringLiteral(toKebabCase(variableName)),\n componentConfig,\n ]),\n ),\n ];\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'component',\n classConstName: componentConstName,\n target: styledTarget,\n propVars: [],\n variantProps,\n });\n\n return true;\n}\n\nfunction migrateInterpolatedTemplate(\n path: NodePath<t.VariableDeclarator>,\n variableName: string,\n template: t.TemplateLiteral,\n styledTarget: StyledTarget,\n warnings: MigrationWarning[],\n styledTransforms: Map<string, StyledTransform>,\n): boolean {\n const interpolations = parseTemplateInterpolations(template);\n if (!interpolations) {\n addWarning(\n warnings,\n 'Skipped template literal with unsupported interpolations. Only prop-based patterns like `${props => props.color}` are migrated.',\n variableName,\n );\n return false;\n }\n\n const cssText = reconstructInterpolatedCss(template, interpolations);\n const propVars: PropVarBinding[] = interpolations.map((interpolation) => ({\n propName: interpolation.propName,\n varConstName: path.scope.generateUidIdentifier(\n `${variableName}${interpolation.propName.charAt(0).toUpperCase()}${interpolation.propName.slice(1)}Var`,\n ).name,\n suffix: interpolation.suffix,\n }));\n\n const varReplacements = new Map<string, t.Identifier>();\n for (let i = 0; i < interpolations.length; i++) {\n varReplacements.set(\n placeholderToken(interpolations[i].index),\n t.identifier(propVars[i].varConstName),\n );\n }\n\n const objectExpression = cssToObjectExpression(cssText, warnings, varReplacements);\n if (!objectExpression) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return false;\n }\n\n const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;\n const varDeclarators = propVars.map((propVar) =>\n t.variableDeclarator(\n t.identifier(propVar.varConstName),\n t.callExpression(t.identifier('createVar'), [\n t.stringLiteral(toVarDebugName(variableName, propVar.propName)),\n ]),\n ),\n );\n\n const declaration = path.parentPath;\n if (!declaration.isVariableDeclaration()) return false;\n\n declaration.node.declarations = [\n ...varDeclarators,\n t.variableDeclarator(\n t.identifier(classConstName),\n t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]),\n ),\n ];\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'class',\n classConstName,\n target: styledTarget,\n propVars,\n variantProps: [],\n });\n\n return true;\n}\n\nfunction isOnlyJsxReferences(\n binding: NodePath<t.VariableDeclarator>['scope']['bindings'][string],\n): boolean {\n return binding.referencePaths.every((referencePath) => {\n const parent = referencePath.parentPath;\n if (!parent) return false;\n return (\n (parent.isJSXOpeningElement() && parent.get('name') === referencePath) ||\n (parent.isJSXClosingElement() && parent.get('name') === referencePath)\n );\n });\n}\n\nexport function migrateSource(filePath: string, source: string): FileMigrationResult {\n const warnings: MigrationWarning[] = [];\n let changed = false;\n\n const ast = parse(source, {\n sourceType: 'module',\n plugins: ['typescript', 'jsx'],\n });\n\n const styledNames = new Set<string>();\n const cssTagNames = new Set<string>();\n const styledTransforms = new Map<string, StyledTransform>();\n let needsVars = false;\n let needsStyle = false;\n let needsRecipe = false;\n\n traverse(ast, {\n ImportDeclaration(path) {\n if (\n path.node.source.value === 'styled-components' ||\n path.node.source.value === '@emotion/styled'\n ) {\n for (const specifier of path.node.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n styledNames.add(specifier.local.name);\n }\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: 'css' })\n ) {\n cssTagNames.add(specifier.local.name);\n }\n }\n }\n\n if (\n path.node.source.value === '@emotion/react' ||\n path.node.source.value === '@emotion/css'\n ) {\n for (const specifier of path.node.specifiers) {\n if (\n t.isImportSpecifier(specifier) &&\n t.isIdentifier(specifier.imported, { name: 'css' })\n ) {\n cssTagNames.add(specifier.local.name);\n }\n }\n }\n },\n });\n\n traverse(ast, {\n VariableDeclarator(path) {\n if (!t.isIdentifier(path.node.id)) return;\n if (!t.isTaggedTemplateExpression(path.node.init)) return;\n\n const variableName = path.node.id.name;\n const binding = path.scope.getBinding(variableName);\n if (!binding) return;\n\n const template = path.node.init.quasi;\n const hasInterpolations = template.expressions.length > 0;\n const styledTarget = parseStyledTarget(path.node.init.tag, styledNames);\n\n if (hasInterpolations) {\n if (!styledTarget) {\n addWarning(\n warnings,\n 'Skipped template literal with interpolations. Only styled-components prop patterns are migrated.',\n variableName,\n );\n return;\n }\n\n const declaration = path.parentPath;\n if (\n declaration.parentPath?.isExportNamedDeclaration() ||\n declaration.parentPath?.isExportDefaultDeclaration()\n ) {\n addWarning(\n warnings,\n 'Skipped exported styled component to avoid changing external API shape.',\n variableName,\n );\n return;\n }\n\n if (!isOnlyJsxReferences(binding)) {\n addWarning(warnings, 'Skipped styled component with non-JSX references.', variableName);\n return;\n }\n\n if (\n migrateBooleanVariantTemplate(\n path,\n variableName,\n template,\n styledTarget,\n warnings,\n styledTransforms,\n )\n ) {\n needsRecipe = true;\n changed = true;\n return;\n }\n\n if (\n migrateInterpolatedTemplate(\n path,\n variableName,\n template,\n styledTarget,\n warnings,\n styledTransforms,\n )\n ) {\n needsVars = true;\n needsStyle = true;\n changed = true;\n }\n return;\n }\n\n const cssText = template.quasis.map((quasi) => quasi.value.cooked ?? '').join('');\n const objectExpression = cssToObjectExpression(cssText, warnings);\n if (!objectExpression) {\n addWarning(warnings, 'Skipped because CSS could not be parsed.', variableName);\n return;\n }\n\n if (styledTarget) {\n const declaration = path.parentPath;\n if (\n declaration.parentPath?.isExportNamedDeclaration() ||\n declaration.parentPath?.isExportDefaultDeclaration()\n ) {\n addWarning(\n warnings,\n 'Skipped exported styled component to avoid changing external API shape.',\n variableName,\n );\n return;\n }\n\n if (!isOnlyJsxReferences(binding)) {\n addWarning(warnings, 'Skipped styled component with non-JSX references.', variableName);\n return;\n }\n\n const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;\n path.node.id = t.identifier(classConstName);\n path.node.init = t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]);\n\n styledTransforms.set(variableName, {\n originalName: variableName,\n mode: 'class',\n classConstName,\n target: styledTarget,\n propVars: [],\n variantProps: [],\n });\n needsStyle = true;\n changed = true;\n return;\n }\n\n if (t.isIdentifier(path.node.init.tag) && cssTagNames.has(path.node.init.tag.name)) {\n path.node.init = t.callExpression(t.identifier('style'), [\n t.stringLiteral(toKebabCase(variableName)),\n objectExpression,\n ]);\n needsStyle = true;\n changed = true;\n }\n },\n });\n\n if (styledTransforms.size > 0) {\n traverse(ast, {\n JSXElement(path) {\n const openingName = path.node.openingElement.name;\n if (!t.isJSXIdentifier(openingName)) return;\n const transform = styledTransforms.get(openingName.name);\n if (!transform) return;\n\n path.node.openingElement.name = transform.target.jsxName;\n if (path.node.closingElement) {\n path.node.closingElement.name = transform.target.jsxName;\n }\n\n const classNameExpression =\n transform.mode === 'component'\n ? buildComponentClassNameExpression(\n transform.classConstName,\n transform.variantProps,\n collectPropValuesFromJsx(path.node.openingElement, new Set(transform.variantProps)),\n )\n : t.identifier(transform.classConstName);\n\n updateClassNameAttribute(path.node.openingElement, classNameExpression);\n\n if (transform.propVars.length > 0) {\n const propNames = new Set(transform.propVars.map((propVar) => propVar.propName));\n const propValues = collectPropValuesFromJsx(path.node.openingElement, propNames);\n\n if (propValues.size > 0) {\n const assignVarsCall = buildAssignVarsCall(transform.propVars, propValues);\n updateStyleAttribute(path.node.openingElement, assignVarsCall);\n removeStyledProps(path.node.openingElement, propNames);\n }\n }\n\n if (transform.variantProps.length > 0) {\n removeStyledProps(path.node.openingElement, new Set(transform.variantProps));\n }\n },\n });\n }\n\n if (changed) {\n ensureTypestylesRuntime(ast, {\n style: needsStyle,\n recipe: needsRecipe,\n vars: needsVars,\n });\n cleanupUnusedImports(ast);\n }\n\n const output = generate(\n ast,\n {\n retainLines: false,\n comments: true,\n concise: false,\n },\n source,\n );\n\n return {\n filePath,\n changed: changed && output.code !== source,\n code: output.code,\n warnings,\n };\n}\n","import { stat } from 'node:fs/promises';\nimport { extname, relative, resolve } from 'node:path';\nimport fg from 'fast-glob';\nimport picomatch from 'picomatch';\n\nconst DEFAULT_EXCLUDES = ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/.turbo/**'];\n\nfunction normalizeExtension(extension: string): string {\n return extension.startsWith('.') ? extension : `.${extension}`;\n}\n\nexport async function collectTargetFiles(\n cwd: string,\n targets: string[],\n extensions: string[],\n include: string[],\n exclude: string[],\n): Promise<string[]> {\n const normalizedTargets = targets.length > 0 ? targets : ['.'];\n const literalFiles: string[] = [];\n const dynamicPatterns: string[] = [];\n\n for (const target of normalizedTargets) {\n const absolute = resolve(cwd, target);\n try {\n const targetStat = await stat(absolute);\n if (targetStat.isFile()) {\n literalFiles.push(absolute);\n } else if (targetStat.isDirectory()) {\n dynamicPatterns.push(`${absolute.split('\\\\').join('/')}/**/*`);\n }\n } catch {\n dynamicPatterns.push(target);\n }\n }\n\n const globbed = await fg(dynamicPatterns, {\n cwd,\n absolute: true,\n onlyFiles: true,\n ignore: [...DEFAULT_EXCLUDES, ...exclude],\n });\n\n const extensionSet = new Set(extensions.map(normalizeExtension));\n const includeMatchers = include.length > 0 ? include.map((pattern) => picomatch(pattern)) : null;\n const unique = new Set([...literalFiles, ...globbed]);\n\n return Array.from(unique)\n .filter((filePath) => extensionSet.has(extname(filePath)))\n .filter((filePath) => {\n if (!includeMatchers) return true;\n const rel = relative(cwd, filePath).split('\\\\').join('/');\n return includeMatchers.some((matcher) => matcher(rel));\n })\n .sort();\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname, relative } from 'node:path';\nimport { createPatch } from 'diff';\nimport type { CliOptions, MigrationReport, MigrationSummary } from './types';\nimport { collectTargetFiles } from './files';\nimport { migrateSource } from './transform';\n\nfunction renderPatch(filePath: string, before: string, after: string): string {\n return createPatch(filePath, before, after, 'before', 'after').split('\\n').slice(2).join('\\n');\n}\n\nexport async function runMigration(cwd: string, options: CliOptions): Promise<MigrationReport> {\n const files = await collectTargetFiles(\n cwd,\n options.targets,\n options.extensions,\n options.include,\n options.exclude,\n );\n\n const reportEntries: MigrationReport['files'] = [];\n let changedCount = 0;\n let warningCount = 0;\n\n for (const filePath of files) {\n const before = await readFile(filePath, 'utf8');\n const result = migrateSource(filePath, before);\n const relativePath = relative(cwd, filePath);\n\n warningCount += result.warnings.length;\n if (result.changed) {\n changedCount += 1;\n if (options.write) {\n await writeFile(filePath, result.code, 'utf8');\n process.stdout.write(`updated ${relativePath}\\n`);\n } else {\n process.stdout.write(`\\n--- ${relativePath} (dry-run) ---\\n`);\n process.stdout.write(`${renderPatch(relativePath, before, result.code)}\\n`);\n }\n }\n\n for (const warning of result.warnings) {\n const nodeLabel = warning.nodeName ? ` (${warning.nodeName})` : '';\n process.stdout.write(`warning ${relativePath}${nodeLabel}: ${warning.message}\\n`);\n }\n\n reportEntries.push({\n filePath: relativePath,\n changed: result.changed,\n warnings: result.warnings,\n });\n }\n\n const summary: MigrationSummary = {\n filesScanned: files.length,\n filesChanged: changedCount,\n warnings: warningCount,\n };\n\n process.stdout.write(\n `\\nScanned ${summary.filesScanned} files, changed ${summary.filesChanged}, warnings ${summary.warnings}.\\n`,\n );\n\n const report: MigrationReport = {\n summary,\n files: reportEntries,\n };\n\n if (options.reportPath) {\n await mkdir(dirname(options.reportPath), { recursive: true });\n await writeFile(options.reportPath, `${JSON.stringify(report, null, 2)}\\n`, 'utf8');\n process.stdout.write(`Report written to ${options.reportPath}\\n`);\n }\n\n return report;\n}\n"]}
|
package/dist/cli.cjs
CHANGED
|
@@ -405,17 +405,37 @@ function updateClassNameAttribute(openingElement, classNameExpression) {
|
|
|
405
405
|
);
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
|
-
function
|
|
409
|
-
const
|
|
410
|
-
|
|
408
|
+
function hasLocalBinding(ast, name) {
|
|
409
|
+
for (const statement of ast.program.body) {
|
|
410
|
+
if (!t4__namespace.isVariableDeclaration(statement)) continue;
|
|
411
|
+
for (const declarator of statement.declarations) {
|
|
412
|
+
if (t4__namespace.isIdentifier(declarator.id) && declarator.id.name === name) return true;
|
|
413
|
+
if (t4__namespace.isObjectPattern(declarator.id)) {
|
|
414
|
+
for (const prop of declarator.id.properties) {
|
|
415
|
+
if (t4__namespace.isObjectProperty(prop) && t4__namespace.isIdentifier(prop.value) && prop.value.name === name) {
|
|
416
|
+
return true;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
function ensureTypestylesRuntime(ast, needs) {
|
|
425
|
+
const requiredSpecifiers = /* @__PURE__ */ new Set(["createTypeStyles"]);
|
|
426
|
+
if (needs.vars) {
|
|
411
427
|
requiredSpecifiers.add("createVar");
|
|
412
428
|
requiredSpecifiers.add("assignVars");
|
|
413
429
|
}
|
|
414
430
|
let typestylesImport = null;
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
431
|
+
let lastImportIndex = -1;
|
|
432
|
+
for (let i = 0; i < ast.program.body.length; i++) {
|
|
433
|
+
const statement = ast.program.body[i];
|
|
434
|
+
if (t4__namespace.isImportDeclaration(statement)) {
|
|
435
|
+
lastImportIndex = i;
|
|
436
|
+
if (statement.source.value === "typestyles" && typestylesImport == null) {
|
|
437
|
+
typestylesImport = statement;
|
|
438
|
+
}
|
|
419
439
|
}
|
|
420
440
|
}
|
|
421
441
|
const buildSpecifiers = (names) => [...names].map((name) => t4__namespace.importSpecifier(t4__namespace.identifier(name), t4__namespace.identifier(name)));
|
|
@@ -423,16 +443,36 @@ function ensureTypestylesImport(ast, needsVars) {
|
|
|
423
443
|
ast.program.body.unshift(
|
|
424
444
|
t4__namespace.importDeclaration(buildSpecifiers(requiredSpecifiers), t4__namespace.stringLiteral("typestyles"))
|
|
425
445
|
);
|
|
426
|
-
|
|
446
|
+
lastImportIndex = 0;
|
|
447
|
+
} else {
|
|
448
|
+
for (const name of requiredSpecifiers) {
|
|
449
|
+
const hasSpecifier = typestylesImport.specifiers.some(
|
|
450
|
+
(specifier) => t4__namespace.isImportSpecifier(specifier) && t4__namespace.isIdentifier(specifier.imported, { name }) && t4__namespace.isIdentifier(specifier.local, { name })
|
|
451
|
+
);
|
|
452
|
+
if (!hasSpecifier) {
|
|
453
|
+
typestylesImport.specifiers.push(t4__namespace.importSpecifier(t4__namespace.identifier(name), t4__namespace.identifier(name)));
|
|
454
|
+
}
|
|
455
|
+
}
|
|
427
456
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
457
|
+
const destructureProps = [];
|
|
458
|
+
if (needs.style && !hasLocalBinding(ast, "style")) {
|
|
459
|
+
destructureProps.push(
|
|
460
|
+
t4__namespace.objectProperty(t4__namespace.identifier("style"), t4__namespace.identifier("style"), false, true)
|
|
461
|
+
);
|
|
462
|
+
}
|
|
463
|
+
if (needs.recipe && !hasLocalBinding(ast, "recipe")) {
|
|
464
|
+
destructureProps.push(
|
|
465
|
+
t4__namespace.objectProperty(t4__namespace.identifier("recipe"), t4__namespace.identifier("recipe"), false, true)
|
|
431
466
|
);
|
|
432
|
-
if (!hasSpecifier) {
|
|
433
|
-
typestylesImport.specifiers.push(t4__namespace.importSpecifier(t4__namespace.identifier(name), t4__namespace.identifier(name)));
|
|
434
|
-
}
|
|
435
467
|
}
|
|
468
|
+
if (destructureProps.length === 0) return;
|
|
469
|
+
const factoryDecl = t4__namespace.variableDeclaration("const", [
|
|
470
|
+
t4__namespace.variableDeclarator(
|
|
471
|
+
t4__namespace.objectPattern(destructureProps),
|
|
472
|
+
t4__namespace.callExpression(t4__namespace.identifier("createTypeStyles"), [])
|
|
473
|
+
)
|
|
474
|
+
]);
|
|
475
|
+
ast.program.body.splice(lastImportIndex + 1, 0, factoryDecl);
|
|
436
476
|
}
|
|
437
477
|
function cleanupUnusedImports(ast) {
|
|
438
478
|
traverse__default.default(ast, {
|
|
@@ -441,7 +481,7 @@ function cleanupUnusedImports(ast) {
|
|
|
441
481
|
},
|
|
442
482
|
ImportDeclaration(path) {
|
|
443
483
|
const unusedLocals = path.node.specifiers.filter((specifier) => {
|
|
444
|
-
if (path.node.source.value === "typestyles" && t4__namespace.isImportSpecifier(specifier) && (specifier.local.name === "
|
|
484
|
+
if (path.node.source.value === "typestyles" && t4__namespace.isImportSpecifier(specifier) && (specifier.local.name === "createTypeStyles" || specifier.local.name === "createVar" || specifier.local.name === "assignVars")) {
|
|
445
485
|
return false;
|
|
446
486
|
}
|
|
447
487
|
const local = specifier.local.name;
|
|
@@ -552,7 +592,7 @@ function migrateBooleanVariantTemplate(path, variableName, template, styledTarge
|
|
|
552
592
|
declaration.node.declarations = [
|
|
553
593
|
t4__namespace.variableDeclarator(
|
|
554
594
|
t4__namespace.identifier(componentConstName),
|
|
555
|
-
t4__namespace.callExpression(t4__namespace.
|
|
595
|
+
t4__namespace.callExpression(t4__namespace.identifier("recipe"), [
|
|
556
596
|
t4__namespace.stringLiteral(toKebabCase(variableName)),
|
|
557
597
|
componentConfig
|
|
558
598
|
])
|
|
@@ -613,7 +653,7 @@ function migrateInterpolatedTemplate(path, variableName, template, styledTarget,
|
|
|
613
653
|
...varDeclarators,
|
|
614
654
|
t4__namespace.variableDeclarator(
|
|
615
655
|
t4__namespace.identifier(classConstName),
|
|
616
|
-
t4__namespace.callExpression(t4__namespace.
|
|
656
|
+
t4__namespace.callExpression(t4__namespace.identifier("style"), [
|
|
617
657
|
t4__namespace.stringLiteral(toKebabCase(variableName)),
|
|
618
658
|
objectExpression4
|
|
619
659
|
])
|
|
@@ -647,6 +687,8 @@ function migrateSource(filePath, source) {
|
|
|
647
687
|
const cssTagNames = /* @__PURE__ */ new Set();
|
|
648
688
|
const styledTransforms = /* @__PURE__ */ new Map();
|
|
649
689
|
let needsVars = false;
|
|
690
|
+
let needsStyle = false;
|
|
691
|
+
let needsRecipe = false;
|
|
650
692
|
traverse__default.default(ast, {
|
|
651
693
|
ImportDeclaration(path) {
|
|
652
694
|
if (path.node.source.value === "styled-components" || path.node.source.value === "@emotion/styled") {
|
|
@@ -708,6 +750,7 @@ function migrateSource(filePath, source) {
|
|
|
708
750
|
warnings,
|
|
709
751
|
styledTransforms
|
|
710
752
|
)) {
|
|
753
|
+
needsRecipe = true;
|
|
711
754
|
changed = true;
|
|
712
755
|
return;
|
|
713
756
|
}
|
|
@@ -720,6 +763,7 @@ function migrateSource(filePath, source) {
|
|
|
720
763
|
styledTransforms
|
|
721
764
|
)) {
|
|
722
765
|
needsVars = true;
|
|
766
|
+
needsStyle = true;
|
|
723
767
|
changed = true;
|
|
724
768
|
}
|
|
725
769
|
return;
|
|
@@ -746,10 +790,10 @@ function migrateSource(filePath, source) {
|
|
|
746
790
|
}
|
|
747
791
|
const classConstName = path.scope.generateUidIdentifier(`${variableName}Class`).name;
|
|
748
792
|
path.node.id = t4__namespace.identifier(classConstName);
|
|
749
|
-
path.node.init = t4__namespace.callExpression(
|
|
750
|
-
t4__namespace.
|
|
751
|
-
|
|
752
|
-
);
|
|
793
|
+
path.node.init = t4__namespace.callExpression(t4__namespace.identifier("style"), [
|
|
794
|
+
t4__namespace.stringLiteral(toKebabCase(variableName)),
|
|
795
|
+
objectExpression4
|
|
796
|
+
]);
|
|
753
797
|
styledTransforms.set(variableName, {
|
|
754
798
|
originalName: variableName,
|
|
755
799
|
mode: "class",
|
|
@@ -758,14 +802,16 @@ function migrateSource(filePath, source) {
|
|
|
758
802
|
propVars: [],
|
|
759
803
|
variantProps: []
|
|
760
804
|
});
|
|
805
|
+
needsStyle = true;
|
|
761
806
|
changed = true;
|
|
762
807
|
return;
|
|
763
808
|
}
|
|
764
809
|
if (t4__namespace.isIdentifier(path.node.init.tag) && cssTagNames.has(path.node.init.tag.name)) {
|
|
765
|
-
path.node.init = t4__namespace.callExpression(
|
|
766
|
-
t4__namespace.
|
|
767
|
-
|
|
768
|
-
);
|
|
810
|
+
path.node.init = t4__namespace.callExpression(t4__namespace.identifier("style"), [
|
|
811
|
+
t4__namespace.stringLiteral(toKebabCase(variableName)),
|
|
812
|
+
objectExpression4
|
|
813
|
+
]);
|
|
814
|
+
needsStyle = true;
|
|
769
815
|
changed = true;
|
|
770
816
|
}
|
|
771
817
|
}
|
|
@@ -803,7 +849,11 @@ function migrateSource(filePath, source) {
|
|
|
803
849
|
});
|
|
804
850
|
}
|
|
805
851
|
if (changed) {
|
|
806
|
-
|
|
852
|
+
ensureTypestylesRuntime(ast, {
|
|
853
|
+
style: needsStyle,
|
|
854
|
+
recipe: needsRecipe,
|
|
855
|
+
vars: needsVars
|
|
856
|
+
});
|
|
807
857
|
cleanupUnusedImports(ast);
|
|
808
858
|
}
|
|
809
859
|
const output = generate__default.default(
|