@sanity/ui-codemod 1.0.0-alpha.5 → 1.0.0-alpha.7

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.
Files changed (66) hide show
  1. package/dist/_chunks-es/addAttribute.js +1 -1
  2. package/dist/_chunks-es/box.mods.js +1 -100
  3. package/dist/_chunks-es/box.mods.js.map +1 -1
  4. package/dist/_chunks-es/flex.mods.js +1 -150
  5. package/dist/_chunks-es/flex.mods.js.map +1 -1
  6. package/dist/_chunks-es/layout-mods.js +4 -0
  7. package/dist/_chunks-es/layout-mods.js.map +1 -1
  8. package/dist/_chunks-es/replaceElement.js +102 -0
  9. package/dist/_chunks-es/replaceElement.js.map +1 -0
  10. package/dist/_chunks-es/{transformComponent.js → transformStyledComponents.js} +150 -2
  11. package/dist/_chunks-es/transformStyledComponents.js.map +1 -0
  12. package/dist/commands/latest/inline.d.ts +47 -0
  13. package/dist/commands/latest/inline.js +17 -0
  14. package/dist/commands/latest/inline.js.map +1 -0
  15. package/dist/commands/latest/label.d.ts +47 -0
  16. package/dist/commands/latest/label.js +17 -0
  17. package/dist/commands/latest/label.js.map +1 -0
  18. package/dist/commands/latest/stack.d.ts +47 -0
  19. package/dist/commands/latest/stack.js +17 -0
  20. package/dist/commands/latest/stack.js.map +1 -0
  21. package/dist/transforms/latest/box/box.js +4 -3
  22. package/dist/transforms/latest/box/box.js.map +1 -1
  23. package/dist/transforms/latest/card/card.js +26 -10
  24. package/dist/transforms/latest/card/card.js.map +1 -1
  25. package/dist/transforms/latest/code/code.js +18 -7
  26. package/dist/transforms/latest/code/code.js.map +1 -1
  27. package/dist/transforms/latest/container/container.js +15 -7
  28. package/dist/transforms/latest/container/container.js.map +1 -1
  29. package/dist/transforms/latest/flex/flex.js +2 -2
  30. package/dist/transforms/latest/grid/grid.js +15 -7
  31. package/dist/transforms/latest/grid/grid.js.map +1 -1
  32. package/dist/transforms/latest/heading/heading.js +18 -7
  33. package/dist/transforms/latest/heading/heading.js.map +1 -1
  34. package/dist/transforms/latest/inline/inline.d.ts +18 -0
  35. package/dist/transforms/latest/inline/inline.js +80 -0
  36. package/dist/transforms/latest/inline/inline.js.map +1 -0
  37. package/dist/transforms/latest/label/label.d.ts +18 -0
  38. package/dist/transforms/latest/label/label.js +111 -0
  39. package/dist/transforms/latest/label/label.js.map +1 -0
  40. package/dist/transforms/latest/stack/stack.d.ts +18 -0
  41. package/dist/transforms/latest/stack/stack.js +67 -0
  42. package/dist/transforms/latest/stack/stack.js.map +1 -0
  43. package/dist/transforms/latest/text/text.js +18 -7
  44. package/dist/transforms/latest/text/text.js.map +1 -1
  45. package/package.json +7 -1
  46. package/src/constants/latest/layout-mods.ts +4 -0
  47. package/src/transforms/latest/box/box.test.ts +3 -8
  48. package/src/transforms/latest/card/card.test.ts +100 -1
  49. package/src/transforms/latest/card/card.ts +42 -19
  50. package/src/transforms/latest/code/code.test.ts +84 -1
  51. package/src/transforms/latest/code/code.ts +47 -16
  52. package/src/transforms/latest/container/container.test.ts +78 -1
  53. package/src/transforms/latest/container/container.ts +29 -9
  54. package/src/transforms/latest/grid/grid.test.ts +78 -1
  55. package/src/transforms/latest/grid/grid.ts +29 -9
  56. package/src/transforms/latest/heading/heading.test.ts +84 -1
  57. package/src/transforms/latest/heading/heading.ts +47 -16
  58. package/src/transforms/latest/inline/inline.test.ts +78 -1
  59. package/src/transforms/latest/inline/inline.ts +29 -9
  60. package/src/transforms/latest/label/label.test.ts +84 -1
  61. package/src/transforms/latest/label/label.ts +36 -1
  62. package/src/transforms/latest/stack/stack.test.ts +100 -1
  63. package/src/transforms/latest/stack/stack.ts +29 -7
  64. package/src/transforms/latest/text/text.test.ts +84 -1
  65. package/src/transforms/latest/text/text.ts +58 -19
  66. package/dist/_chunks-es/transformComponent.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { getAttribute } from "./transformComponent.js";
1
+ import { getAttribute } from "./transformStyledComponents.js";
2
2
  function getAttributeValue(j, value) {
3
3
  return value === !0 || value === !1 ? j.jsxExpressionContainer(j.booleanLiteral(value)) : typeof value == "string" ? j.stringLiteral(value) : typeof value == "number" ? j.jsxExpressionContainer(j.numericLiteral(value)) : j.jsxExpressionContainer(j.nullLiteral());
4
4
  }
@@ -1,102 +1,4 @@
1
- import { insertTodoWarning } from "./transformComponent.js";
2
1
  import { LAYOUT_MODS } from "./layout-mods.js";
3
- function addImportSpecifier(j, root, addTo, name) {
4
- let hasChanges = !1;
5
- return root.find(j.ImportDeclaration).forEach((path) => {
6
- const specs = path.node.specifiers;
7
- if (!specs?.length)
8
- return;
9
- const hasFromSpecifier = specs.some(
10
- (s) => s.type === "ImportSpecifier" && s.imported.type === "Identifier" && s.imported.name === addTo
11
- ), hasToSpecifier = specs.some(
12
- (s) => s.type === "ImportSpecifier" && s.imported.type === "Identifier" && s.imported.name === name
13
- );
14
- hasFromSpecifier && !hasToSpecifier && (specs.push(j.importSpecifier(j.identifier(name), j.identifier(name))), hasChanges = !0);
15
- }), hasChanges;
16
- }
17
- function getElementMatchNames(element, localNames) {
18
- return localNames === void 0 ? /* @__PURE__ */ new Set([element]) : new Set(localNames);
19
- }
20
- function isImportBindingUsed(j, root, name, specifierPath) {
21
- if (root.find(j.JSXOpeningElement).some(({ node }) => node.name.type === "JSXIdentifier" && node.name.name === name) || root.find(j.JSXClosingElement).some(({ node }) => node.name.type === "JSXIdentifier" && node.name.name === name))
22
- return !0;
23
- const importedPath = specifierPath.get("imported"), localPath = specifierPath.get("local");
24
- return root.find(j.Identifier).some((idPath) => {
25
- if (idPath.node.name !== name || idPath === importedPath || idPath === localPath)
26
- return !1;
27
- const parent = idPath.parent?.node;
28
- return parent ? !(parent.type === "MemberExpression" && !parent.computed && parent.property === idPath.node || parent.type === "TSQualifiedName" && parent.right === idPath.node) : !0;
29
- });
30
- }
31
- function removeUnusedImport(j, root, name) {
32
- let hasChanges = !1;
33
- return root.find(j.ImportDeclaration).forEach((path) => {
34
- const specs = path.node.specifiers;
35
- if (!specs?.length)
36
- return;
37
- const next = specs.filter((spec, i) => {
38
- if (spec.type !== "ImportSpecifier" || spec.imported.type !== "Identifier" || spec.imported.name !== name || "importKind" in spec && spec.importKind === "type")
39
- return !0;
40
- const localName = spec.local?.type === "Identifier" ? spec.local.name : spec.imported.name, specifierPath = path.get("specifiers", i);
41
- return isImportBindingUsed(j, root, localName, specifierPath);
42
- });
43
- if (next.length !== specs.length) {
44
- if (next.length === 0) {
45
- j(path).remove(), hasChanges = !0;
46
- return;
47
- }
48
- path.node.specifiers = next, hasChanges = !0;
49
- }
50
- }), hasChanges;
51
- }
52
- function transformImportAlias(j, root, fromExport, toExport, localName, warning) {
53
- let updated = !1;
54
- return root.find(j.ImportDeclaration).forEach((path) => {
55
- const specs = path.node.specifiers;
56
- if (specs?.length) {
57
- for (const spec of specs)
58
- if (!(spec.type !== "ImportSpecifier" || spec.imported.type !== "Identifier" || spec.imported.name !== fromExport || (spec.local?.type === "Identifier" ? spec.local.name : spec.imported.name) !== localName)) {
59
- spec.imported.name = toExport, updated = !0, warning && insertTodoWarning(j, path, warning);
60
- return;
61
- }
62
- }
63
- }), updated;
64
- }
65
- function replaceElement(j, root, filter, from, to) {
66
- const names = getElementMatchNames(from.element, from.localNames);
67
- let hasChanges = !1, needsDefaultImportUpdate = !1;
68
- const aliases = /* @__PURE__ */ new Set();
69
- return root.find(j.JSXOpeningElement).forEach((path) => {
70
- const openingEl = path.node, openingName = openingEl.name;
71
- if (openingName.type !== "JSXIdentifier" || !names.has(openingName.name))
72
- return;
73
- const attrs = openingEl.attributes;
74
- if (!attrs || !filter(attrs)) {
75
- from.callback?.(path) && (hasChanges = !0);
76
- return;
77
- }
78
- const localTag = openingName.name;
79
- if (localTag !== from.element && localTag !== to.element)
80
- aliases.has(localTag) || (transformImportAlias(
81
- j,
82
- root,
83
- from.element,
84
- to.element,
85
- localTag,
86
- `Consider renaming ${localTag} to ${to.element}`
87
- ) && (hasChanges = !0), aliases.add(localTag));
88
- else {
89
- openingName.name = to.element;
90
- const parentNode = path.parent?.node;
91
- if (parentNode?.type === "JSXElement") {
92
- const closing = parentNode.closingElement;
93
- closing?.name.type === "JSXIdentifier" && (closing.name.name = to.element);
94
- }
95
- needsDefaultImportUpdate = !0, hasChanges = !0;
96
- }
97
- to.callback?.(path) && (hasChanges = !0);
98
- }), needsDefaultImportUpdate && (addImportSpecifier(j, root, from.element, to.element) && (hasChanges = !0), removeUnusedImport(j, root, from.element) && (hasChanges = !0)), hasChanges;
99
- }
100
2
  const BOX_MODS = {
101
3
  ...LAYOUT_MODS,
102
4
  alignItems: {
@@ -182,7 +84,6 @@ const BOX_MODS = {
182
84
  }
183
85
  };
184
86
  export {
185
- BOX_MODS,
186
- replaceElement
87
+ BOX_MODS
187
88
  };
188
89
  //# sourceMappingURL=box.mods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"box.mods.js","sources":["../../src/utils/addImportSpecifier.ts","../../src/utils/getElementMatchNames.ts","../../src/utils/isImportBindingUsed.ts","../../src/utils/removeUnusedImport.ts","../../src/utils/transformImportAlias.ts","../../src/utils/replaceElement.ts","../../src/transforms/latest/box/box.mods.ts"],"sourcesContent":["import type {API} from 'jscodeshift'\n\n/**\n * Adds an import specifier to an existing import declaration.\n * Returns whether the AST was updated.\n */\nexport function addImportSpecifier(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n addTo: string,\n name: string,\n): boolean {\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n const hasFromSpecifier = specs.some(\n (s) =>\n s.type === 'ImportSpecifier' &&\n s.imported.type === 'Identifier' &&\n s.imported.name === addTo,\n )\n const hasToSpecifier = specs.some(\n (s) =>\n s.type === 'ImportSpecifier' &&\n s.imported.type === 'Identifier' &&\n s.imported.name === name,\n )\n\n if (hasFromSpecifier && !hasToSpecifier) {\n specs.push(j.importSpecifier(j.identifier(name), j.identifier(name)))\n hasChanges = true\n }\n })\n\n return hasChanges\n}\n","export function getElementMatchNames(element: string, localNames?: Iterable<string>): Set<string> {\n if (localNames === undefined) {\n return new Set([element])\n }\n\n return new Set(localNames)\n}\n","import type {API, ASTPath, ImportSpecifier} from 'jscodeshift'\n\nexport function isImportBindingUsed(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n name: string,\n specifierPath: ASTPath<ImportSpecifier>,\n): boolean {\n const jsxOpening = root.find(j.JSXOpeningElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === name\n })\n\n if (jsxOpening) {\n return true\n }\n\n const jsxClosing = root.find(j.JSXClosingElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === name\n })\n\n if (jsxClosing) {\n return true\n }\n\n const importedPath = specifierPath.get('imported')\n const localPath = specifierPath.get('local')\n\n return root.find(j.Identifier).some((idPath) => {\n if (idPath.node.name !== name) {\n return false\n }\n\n if (idPath === importedPath || idPath === localPath) {\n return false\n }\n\n const parent = idPath.parent?.node\n\n if (!parent) {\n return true\n }\n\n if (parent.type === 'MemberExpression' && !parent.computed && parent.property === idPath.node) {\n return false\n }\n\n if (parent.type === 'TSQualifiedName' && parent.right === idPath.node) {\n return false\n }\n\n return true\n })\n}\n","import type {API, ASTPath, ImportSpecifier} from 'jscodeshift'\n\nimport {isImportBindingUsed} from './isImportBindingUsed'\n\n/**\n * Removes unused import specifier or the whole import if no specifiers remain.\n * Returns whether the AST was updated.\n */\nexport function removeUnusedImport(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n name: string,\n): boolean {\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n const next = specs.filter((spec, i) => {\n if (spec.type !== 'ImportSpecifier' || spec.imported.type !== 'Identifier') {\n return true\n }\n\n if (spec.imported.name !== name) {\n return true\n }\n\n if ('importKind' in spec && spec.importKind === 'type') {\n return true\n }\n\n const localName = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n const specifierPath = path.get('specifiers', i) as ASTPath<ImportSpecifier>\n\n return isImportBindingUsed(j, root, localName, specifierPath)\n })\n\n if (next.length === specs.length) {\n return\n }\n\n if (next.length === 0) {\n j(path).remove()\n hasChanges = true\n return\n }\n\n path.node.specifiers = next\n hasChanges = true\n })\n\n return hasChanges\n}\n","import type {API} from 'jscodeshift'\n\nimport {insertTodoWarning} from './insertTodoWarning'\n\nexport function transformImportAlias(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n fromExport: string,\n toExport: string,\n localName: string,\n warning?: string,\n): boolean {\n let updated = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n for (const spec of specs) {\n if (spec.type !== 'ImportSpecifier' || spec.imported.type !== 'Identifier') {\n continue\n }\n\n if (spec.imported.name !== fromExport) {\n continue\n }\n\n const local = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n\n if (local !== localName) {\n continue\n }\n\n spec.imported.name = toExport\n updated = true\n\n if (warning) {\n insertTodoWarning(j, path, warning)\n }\n\n return\n }\n })\n\n return updated\n}\n","import type {API, ASTPath, JSXAttribute, JSXOpeningElement, JSXSpreadAttribute} from 'jscodeshift'\n\nimport {addImportSpecifier} from './addImportSpecifier'\nimport {getElementMatchNames} from './getElementMatchNames'\nimport {removeUnusedImport} from './removeUnusedImport'\nimport {transformImportAlias} from './transformImportAlias'\n\n/**\n * Replaces JSX component if `filter` passes. Runs callbacks and updates imports.\n * If `localNames` is omitted, matches `from.element`. `localNames` may be an empty set,\n * to avoid rewriting unrelated JSX when only cross-file styled aliases are present.\n * Returns whether the AST was updated.\n */\nexport function replaceElement(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n filter: (attrs: (JSXAttribute | JSXSpreadAttribute)[]) => boolean,\n from: {\n element: string\n localNames?: Iterable<string>\n callback?: (path: ASTPath<JSXOpeningElement>) => boolean | void\n },\n to: {\n element: string\n callback?: (path: ASTPath<JSXOpeningElement>) => boolean | void\n },\n): boolean {\n const names = getElementMatchNames(from.element, from.localNames)\n\n let hasChanges = false\n let needsDefaultImportUpdate = false\n const aliases = new Set<string>()\n\n root.find(j.JSXOpeningElement).forEach((path) => {\n const openingEl = path.node\n const openingName = openingEl.name\n\n if (openingName.type !== 'JSXIdentifier' || !names.has(openingName.name)) {\n return\n }\n\n const attrs = openingEl.attributes\n\n if (!attrs || !filter(attrs)) {\n if (from.callback?.(path)) {\n hasChanges = true\n }\n\n return\n }\n\n const localTag = openingName.name\n const preserveAlias = localTag !== from.element && localTag !== to.element\n\n if (preserveAlias) {\n if (!aliases.has(localTag)) {\n if (\n transformImportAlias(\n j,\n root,\n from.element,\n to.element,\n localTag,\n `Consider renaming ${localTag} to ${to.element}`,\n )\n ) {\n hasChanges = true\n }\n\n aliases.add(localTag)\n }\n } else {\n openingName.name = to.element\n\n const parentNode = path.parent?.node\n\n if (parentNode?.type === 'JSXElement') {\n const closing = parentNode.closingElement\n\n if (closing?.name.type === 'JSXIdentifier') {\n closing.name.name = to.element\n }\n }\n\n needsDefaultImportUpdate = true\n hasChanges = true\n }\n\n if (to.callback?.(path)) {\n hasChanges = true\n }\n })\n\n if (needsDefaultImportUpdate) {\n if (addImportSpecifier(j, root, from.element, to.element)) {\n hasChanges = true\n }\n\n if (removeUnusedImport(j, root, from.element)) {\n hasChanges = true\n }\n }\n\n return hasChanges\n}\n","import {LAYOUT_MODS} from '../../../constants/latest/layout-mods'\nimport type {AttributeMods} from '../../../types/AttributeMods'\n\n/** @internal */\nexport const BOX_MODS: AttributeMods = {\n ...LAYOUT_MODS,\n alignItems: {\n type: 'style-only',\n style: 'alignItems',\n },\n flexDirection: {\n type: 'style-only',\n style: 'flexDirection',\n },\n flexWrap: {\n type: 'style-only',\n style: 'flexWrap',\n },\n gridAutoColumns: {\n type: 'style-only',\n style: 'gridAutoColumns',\n },\n gridAutoFlow: {\n type: 'style-only',\n style: 'gridAutoFlow',\n },\n gridAutoRows: {\n type: 'style-only',\n style: 'gridAutoRows',\n },\n gridTemplateColumns: {\n type: 'style-mapped',\n style: 'gridTemplateColumns',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n gridTemplateRows: {\n type: 'style-mapped',\n style: 'gridTemplateRows',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n justifyContent: {\n type: 'style-only',\n style: 'justifyContent',\n },\n tone: {\n type: 'mapped-only',\n mapping: {\n default: 'none',\n none: 'none',\n transparent: 'neutral',\n neutral: 'neutral',\n brand: 'primary',\n primary: 'primary',\n positive: 'positive',\n caution: 'caution',\n critical: 'critical',\n suggest: 'suggest',\n },\n },\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"box.mods.js","sources":["../../src/transforms/latest/box/box.mods.ts"],"sourcesContent":["import {LAYOUT_MODS} from '../../../constants/latest/layout-mods'\nimport type {AttributeMods} from '../../../types/AttributeMods'\n\n/** @internal */\nexport const BOX_MODS: AttributeMods = {\n ...LAYOUT_MODS,\n alignItems: {\n type: 'style-only',\n style: 'alignItems',\n },\n flexDirection: {\n type: 'style-only',\n style: 'flexDirection',\n },\n flexWrap: {\n type: 'style-only',\n style: 'flexWrap',\n },\n gridAutoColumns: {\n type: 'style-only',\n style: 'gridAutoColumns',\n },\n gridAutoFlow: {\n type: 'style-only',\n style: 'gridAutoFlow',\n },\n gridAutoRows: {\n type: 'style-only',\n style: 'gridAutoRows',\n },\n gridTemplateColumns: {\n type: 'style-mapped',\n style: 'gridTemplateColumns',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n gridTemplateRows: {\n type: 'style-mapped',\n style: 'gridTemplateRows',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n justifyContent: {\n type: 'style-only',\n style: 'justifyContent',\n },\n tone: {\n type: 'mapped-only',\n mapping: {\n default: 'none',\n none: 'none',\n transparent: 'neutral',\n neutral: 'neutral',\n brand: 'primary',\n primary: 'primary',\n positive: 'positive',\n caution: 'caution',\n critical: 'critical',\n suggest: 'suggest',\n },\n },\n}\n"],"names":[],"mappings":";AAIO,MAAM,WAA0B;AAAA,EACrC,GAAG;AAAA,EACH,YAAY;AAAA,IACV,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,eAAe;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,qBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
@@ -1,151 +1,4 @@
1
- import { getComponentLocalNames, insertTodoWarning } from "./transformComponent.js";
2
- import { readFileSync, existsSync } from "node:fs";
3
- import { resolve, dirname, join } from "node:path";
4
1
  import { LAYOUT_MODS } from "./layout-mods.js";
5
- const parseCache = /* @__PURE__ */ new Map();
6
- function parseModule(j, filePath) {
7
- const cached = parseCache.get(filePath);
8
- if (cached)
9
- return cached;
10
- try {
11
- const source = readFileSync(filePath, "utf8"), root = j(source);
12
- return parseCache.set(filePath, root), root;
13
- } catch {
14
- return null;
15
- }
16
- }
17
- const EXTENSIONS = [".tsx", ".ts", ".jsx", ".js"];
18
- function resolveRelativeModulePath(fromFilePath, moduleSpecifier) {
19
- if (!moduleSpecifier.startsWith("."))
20
- return null;
21
- const base = resolve(dirname(fromFilePath), moduleSpecifier);
22
- for (const ext of EXTENSIONS) {
23
- const filePath = `${base}${ext}`;
24
- if (existsSync(filePath))
25
- return filePath;
26
- }
27
- for (const ext of EXTENSIONS) {
28
- const indexPath = join(base, `index${ext}`);
29
- if (existsSync(indexPath))
30
- return indexPath;
31
- }
32
- return existsSync(base) ? base : null;
33
- }
34
- function findVariableInit(j, root, name) {
35
- let init = null;
36
- return root.find(j.VariableDeclarator).forEach((path) => {
37
- const { id } = path.node;
38
- id.type === "Identifier" && id.name === name && path.node.init && (init = path.node.init);
39
- }), init;
40
- }
41
- function getExportSpecifierName(exported) {
42
- return exported.type === "Identifier" || exported.type === "JSXIdentifier" ? exported.name : null;
43
- }
44
- function getNamedExportInit(j, exportName, filePath, visited = /* @__PURE__ */ new Set()) {
45
- if (visited.has(filePath))
46
- return null;
47
- visited.add(filePath);
48
- const root = parseModule(j, filePath);
49
- if (!root)
50
- return null;
51
- for (const path of root.find(j.ExportNamedDeclaration).paths()) {
52
- const { declaration, specifiers, source } = path.node, reexportSource = typeof source?.value == "string" ? source.value : null;
53
- if (declaration?.type === "VariableDeclaration") {
54
- for (const declarator of declaration.declarations)
55
- if (declarator.type === "VariableDeclarator" && declarator.id.type === "Identifier" && declarator.id.name === exportName && declarator.init)
56
- return { init: declarator.init, modulePath: filePath };
57
- }
58
- for (const spec of specifiers ?? []) {
59
- if (spec.type !== "ExportSpecifier")
60
- continue;
61
- const exported = getExportSpecifierName(spec.exported);
62
- if (!exported || exported !== exportName)
63
- continue;
64
- const local = spec.local?.type === "Identifier" ? spec.local.name : exported;
65
- if (reexportSource) {
66
- const resolvedPath = resolveRelativeModulePath(filePath, reexportSource);
67
- if (resolvedPath) {
68
- const followed = getNamedExportInit(j, local, resolvedPath, visited);
69
- if (followed)
70
- return followed;
71
- }
72
- continue;
73
- }
74
- const init = findVariableInit(j, root, local);
75
- if (init)
76
- return { init, modulePath: filePath };
77
- }
78
- }
79
- return null;
80
- }
81
- function getStyledComponentName(node) {
82
- if (!node || typeof node != "object" || !("type" in node))
83
- return null;
84
- const current = node;
85
- if (current.type === "TaggedTemplateExpression")
86
- return getStyledComponentName(current.tag);
87
- if (current.type === "CallExpression") {
88
- const callee = current.callee;
89
- if (callee && typeof callee == "object" && "type" in callee && callee.type === "Identifier" && "name" in callee && callee.name === "styled") {
90
- const arg = current.arguments?.[0];
91
- return arg && typeof arg == "object" && "type" in arg && arg.type === "Identifier" && "name" in arg ? arg.name : null;
92
- }
93
- return getStyledComponentName(callee);
94
- }
95
- return current.type === "MemberExpression" && current.object ? getStyledComponentName(current.object) : null;
96
- }
97
- function getSameFileStyledComponentAliases(j, root, localNames) {
98
- const aliases = /* @__PURE__ */ new Set(), names = new Set(localNames);
99
- return root.find(j.VariableDeclarator).forEach((path) => {
100
- const { id, init } = path.node;
101
- if (!init || id.type !== "Identifier")
102
- return;
103
- const baseComponent = getStyledComponentName(init);
104
- baseComponent && names.has(baseComponent) && aliases.add(id.name);
105
- }), aliases;
106
- }
107
- function getImportedStyledComponentAliases(j, root, componentName, filePath, options) {
108
- const aliases = /* @__PURE__ */ new Set();
109
- return filePath && root.find(j.ImportDeclaration).forEach((path) => {
110
- const source = path.node.source.value;
111
- if (typeof source != "string")
112
- return;
113
- const resolvedPath = resolveRelativeModulePath(filePath, source);
114
- if (resolvedPath)
115
- for (const spec of path.node.specifiers ?? []) {
116
- if (spec.type !== "ImportSpecifier" || "importKind" in spec && spec.importKind === "type" || spec.imported.type !== "Identifier")
117
- continue;
118
- const exportName = spec.imported.name, localName = spec.local?.type === "Identifier" ? spec.local.name : exportName, namedExport = getNamedExportInit(j, exportName, resolvedPath);
119
- if (!namedExport)
120
- continue;
121
- const sourceRoot = parseModule(j, namedExport.modulePath);
122
- if (!sourceRoot)
123
- continue;
124
- const exportLocalNames = getComponentLocalNames(j, sourceRoot, componentName, options), baseComponent = getStyledComponentName(namedExport.init);
125
- baseComponent && exportLocalNames.has(baseComponent) && aliases.add(localName);
126
- }
127
- }), aliases;
128
- }
129
- function getStyledComponentAliases(j, root, componentName, filePath, localNames, options) {
130
- const sameFile = getSameFileStyledComponentAliases(j, root, localNames), imported = getImportedStyledComponentAliases(j, root, componentName, filePath, options);
131
- return /* @__PURE__ */ new Set([...sameFile, ...imported]);
132
- }
133
- const DEFAULT_WARNING = "Please double check styled-component migration below";
134
- function transformStyledComponents(j, root, aliases, filter, options = {}) {
135
- const names = new Set(aliases), { callback, warning = DEFAULT_WARNING } = options;
136
- let hasChanges = !1;
137
- return root.find(j.JSXOpeningElement).forEach((path) => {
138
- const name = path.node.name;
139
- if (name.type !== "JSXIdentifier" || !names.has(name.name))
140
- return;
141
- const attrs = path.node.attributes ?? [];
142
- if (!filter(attrs)) {
143
- insertTodoWarning(j, path, warning) && (hasChanges = !0);
144
- return;
145
- }
146
- callback?.(path) && (hasChanges = !0);
147
- }), hasChanges;
148
- }
149
2
  const FLEX_MODS = {
150
3
  ...LAYOUT_MODS,
151
4
  align: {
@@ -216,8 +69,6 @@ const FLEX_MODS = {
216
69
  }
217
70
  };
218
71
  export {
219
- FLEX_MODS,
220
- getStyledComponentAliases,
221
- transformStyledComponents
72
+ FLEX_MODS
222
73
  };
223
74
  //# sourceMappingURL=flex.mods.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flex.mods.js","sources":["../../src/utils/parseModule.ts","../../src/utils/resolveRelativeModulePath.ts","../../src/utils/getNamedExportInit.ts","../../src/utils/getStyledComponentName.ts","../../src/utils/getStyledComponentAliases.ts","../../src/utils/transformStyledComponents.ts","../../src/transforms/latest/flex/flex.mods.ts"],"sourcesContent":["import {readFileSync} from 'node:fs'\n\nimport type {API, Collection} from 'jscodeshift'\n\nconst parseCache = new Map<string, Collection>()\n\nexport function parseModule(j: API['jscodeshift'], filePath: string): Collection | null {\n const cached = parseCache.get(filePath)\n\n if (cached) {\n return cached\n }\n\n try {\n const source = readFileSync(filePath, 'utf8')\n const root = j(source)\n\n parseCache.set(filePath, root)\n\n return root\n } catch {\n return null\n }\n}\n\n/** @internal */\nexport function clearModuleParseCache(): void {\n parseCache.clear()\n}\n","import {existsSync} from 'node:fs'\nimport {dirname, join, resolve} from 'node:path'\n\nconst EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js'] as const\n\nexport function resolveRelativeModulePath(\n fromFilePath: string,\n moduleSpecifier: string,\n): string | null {\n if (!moduleSpecifier.startsWith('.')) {\n return null\n }\n\n const base = resolve(dirname(fromFilePath), moduleSpecifier)\n\n for (const ext of EXTENSIONS) {\n const filePath = `${base}${ext}`\n\n if (existsSync(filePath)) {\n return filePath\n }\n }\n\n for (const ext of EXTENSIONS) {\n const indexPath = join(base, `index${ext}`)\n\n if (existsSync(indexPath)) {\n return indexPath\n }\n }\n\n if (existsSync(base)) {\n return base\n }\n\n return null\n}\n","import type {API, Expression, ExportSpecifier} from 'jscodeshift'\n\nimport {parseModule} from './parseModule'\nimport {resolveRelativeModulePath} from './resolveRelativeModulePath'\n\nexport type NamedExportInit = {\n init: Expression\n modulePath: string\n}\n\nfunction findVariableInit(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n name: string,\n): Expression | null {\n let init: Expression | null = null\n\n root.find(j.VariableDeclarator).forEach((path) => {\n const {id} = path.node\n\n if (id.type === 'Identifier' && id.name === name && path.node.init) {\n init = path.node.init\n }\n })\n\n return init\n}\n\nfunction getExportSpecifierName(exported: ExportSpecifier['exported']): string | null {\n if (exported.type === 'Identifier' || exported.type === 'JSXIdentifier') {\n return exported.name\n }\n\n return null\n}\n\nexport function getNamedExportInit(\n j: API['jscodeshift'],\n exportName: string,\n filePath: string,\n visited: Set<string> = new Set(),\n): NamedExportInit | null {\n if (visited.has(filePath)) {\n return null\n }\n\n visited.add(filePath)\n\n const root = parseModule(j, filePath)\n\n if (!root) {\n return null\n }\n\n for (const path of root.find(j.ExportNamedDeclaration).paths()) {\n const {declaration, specifiers, source} = path.node\n const reexportSource = typeof source?.value === 'string' ? source.value : null\n\n if (declaration?.type === 'VariableDeclaration') {\n for (const declarator of declaration.declarations) {\n if (declarator.type !== 'VariableDeclarator') {\n continue\n }\n\n if (\n declarator.id.type === 'Identifier' &&\n declarator.id.name === exportName &&\n declarator.init\n ) {\n return {init: declarator.init, modulePath: filePath}\n }\n }\n }\n\n for (const spec of specifiers ?? []) {\n if (spec.type !== 'ExportSpecifier') {\n continue\n }\n\n const exported = getExportSpecifierName(spec.exported)\n\n if (!exported || exported !== exportName) {\n continue\n }\n\n const local = spec.local?.type === 'Identifier' ? spec.local.name : exported\n\n if (reexportSource) {\n const resolvedPath = resolveRelativeModulePath(filePath, reexportSource)\n\n if (resolvedPath) {\n const followed = getNamedExportInit(j, local, resolvedPath, visited)\n\n if (followed) {\n return followed\n }\n }\n\n continue\n }\n\n const init = findVariableInit(j, root, local)\n\n if (init) {\n return {init, modulePath: filePath}\n }\n }\n }\n\n return null\n}\n","export function getStyledComponentName(node: unknown): string | null {\n if (!node || typeof node !== 'object' || !('type' in node)) {\n return null\n }\n\n const current = node as {\n type: string\n callee?: unknown\n tag?: unknown\n object?: unknown\n arguments?: unknown[]\n }\n\n if (current.type === 'TaggedTemplateExpression') {\n return getStyledComponentName(current.tag)\n }\n\n if (current.type === 'CallExpression') {\n const callee = current.callee\n\n if (\n callee &&\n typeof callee === 'object' &&\n 'type' in callee &&\n callee.type === 'Identifier' &&\n 'name' in callee &&\n callee.name === 'styled'\n ) {\n const arg = current.arguments?.[0]\n\n if (\n arg &&\n typeof arg === 'object' &&\n 'type' in arg &&\n arg.type === 'Identifier' &&\n 'name' in arg\n ) {\n return arg.name as string\n }\n\n return null\n }\n\n return getStyledComponentName(callee)\n }\n\n if (current.type === 'MemberExpression' && current.object) {\n return getStyledComponentName(current.object)\n }\n\n return null\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport type {BaseOptions} from '../types/BaseOptions'\nimport {getComponentLocalNames} from './getComponentLocalNames'\nimport {getNamedExportInit} from './getNamedExportInit'\nimport {getStyledComponentName} from './getStyledComponentName'\nimport {parseModule} from './parseModule'\nimport {resolveRelativeModulePath} from './resolveRelativeModulePath'\n\nexport function getSameFileStyledComponentAliases(\n j: API['jscodeshift'],\n root: Collection,\n localNames: Iterable<string>,\n): Set<string> {\n const aliases = new Set<string>()\n const names = new Set(localNames)\n\n root.find(j.VariableDeclarator).forEach((path) => {\n const {id, init} = path.node\n\n if (!init || id.type !== 'Identifier') {\n return\n }\n\n const baseComponent = getStyledComponentName(init)\n\n if (baseComponent && names.has(baseComponent)) {\n aliases.add(id.name)\n }\n })\n\n return aliases\n}\n\nexport function getImportedStyledComponentAliases(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n filePath: string | undefined,\n options?: BaseOptions,\n): Set<string> {\n const aliases = new Set<string>()\n\n if (!filePath) {\n return aliases\n }\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const source = path.node.source.value\n\n if (typeof source !== 'string') {\n return\n }\n\n const resolvedPath = resolveRelativeModulePath(filePath, source)\n\n if (!resolvedPath) {\n return\n }\n\n for (const spec of path.node.specifiers ?? []) {\n if (spec.type !== 'ImportSpecifier') {\n continue\n }\n\n if ('importKind' in spec && spec.importKind === 'type') {\n continue\n }\n\n if (spec.imported.type !== 'Identifier') {\n continue\n }\n\n const exportName = spec.imported.name\n const localName = spec.local?.type === 'Identifier' ? spec.local.name : exportName\n const namedExport = getNamedExportInit(j, exportName, resolvedPath)\n\n if (!namedExport) {\n continue\n }\n\n const sourceRoot = parseModule(j, namedExport.modulePath)\n\n if (!sourceRoot) {\n continue\n }\n\n const exportLocalNames = getComponentLocalNames(j, sourceRoot, componentName, options)\n const baseComponent = getStyledComponentName(namedExport.init)\n\n if (baseComponent && exportLocalNames.has(baseComponent)) {\n aliases.add(localName)\n }\n }\n })\n\n return aliases\n}\n\nexport function getStyledComponentAliases(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n filePath: string | undefined,\n localNames: Set<string>,\n options?: BaseOptions,\n): Set<string> {\n const sameFile = getSameFileStyledComponentAliases(j, root, localNames)\n const imported = getImportedStyledComponentAliases(j, root, componentName, filePath, options)\n\n return new Set([...sameFile, ...imported])\n}\n","import type {API, ASTPath, JSXAttribute, JSXOpeningElement, JSXSpreadAttribute} from 'jscodeshift'\n\nimport {insertTodoWarning} from './insertTodoWarning'\n\nconst DEFAULT_WARNING = 'Please double check styled-component migration below'\n\n/**\n * Runs callback on JSX styled-component if `filter` passes. Otherwise, adds\n * a TODO on the component JSX instance when manual review is needed.\n * Returns whether the AST was updated.\n */\nexport function transformStyledComponents(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n aliases: Iterable<string>,\n filter: (attrs: (JSXAttribute | JSXSpreadAttribute)[]) => boolean,\n options: {\n callback?: (path: ASTPath<JSXOpeningElement>) => boolean | void\n warning?: string\n } = {},\n): boolean {\n const names = new Set(aliases)\n const {callback, warning = DEFAULT_WARNING} = options\n let hasChanges = false\n\n root.find(j.JSXOpeningElement).forEach((path) => {\n const name = path.node.name\n\n if (name.type !== 'JSXIdentifier' || !names.has(name.name)) {\n return\n }\n\n const attrs = path.node.attributes ?? []\n\n if (!filter(attrs)) {\n if (insertTodoWarning(j, path, warning)) {\n hasChanges = true\n }\n\n return\n }\n\n if (callback?.(path)) {\n hasChanges = true\n }\n })\n\n return hasChanges\n}\n","import {LAYOUT_MODS} from '../../../constants/latest/layout-mods'\nimport type {AttributeMods} from '../../../types/AttributeMods'\n\n/** @internal */\nexport const FLEX_MODS: AttributeMods = {\n ...LAYOUT_MODS,\n align: {\n type: 'rename-only',\n name: 'alignItems',\n },\n direction: {\n type: 'rename-only',\n name: 'flexDirection',\n },\n gridAutoColumns: {\n type: 'style-only',\n style: 'gridAutoColumns',\n },\n gridAutoFlow: {\n type: 'style-only',\n style: 'gridAutoFlow',\n },\n gridAutoRows: {\n type: 'style-only',\n style: 'gridAutoRows',\n },\n gridTemplateColumns: {\n type: 'style-mapped',\n style: 'gridTemplateColumns',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n gridTemplateRows: {\n type: 'style-mapped',\n style: 'gridTemplateRows',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n wrap: {\n type: 'rename-only',\n name: 'flexWrap',\n },\n justify: {\n type: 'rename-only',\n name: 'justifyContent',\n },\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flex.mods.js","sources":["../../src/transforms/latest/flex/flex.mods.ts"],"sourcesContent":["import {LAYOUT_MODS} from '../../../constants/latest/layout-mods'\nimport type {AttributeMods} from '../../../types/AttributeMods'\n\n/** @internal */\nexport const FLEX_MODS: AttributeMods = {\n ...LAYOUT_MODS,\n align: {\n type: 'rename-only',\n name: 'alignItems',\n },\n direction: {\n type: 'rename-only',\n name: 'flexDirection',\n },\n gridAutoColumns: {\n type: 'style-only',\n style: 'gridAutoColumns',\n },\n gridAutoFlow: {\n type: 'style-only',\n style: 'gridAutoFlow',\n },\n gridAutoRows: {\n type: 'style-only',\n style: 'gridAutoRows',\n },\n gridTemplateColumns: {\n type: 'style-mapped',\n style: 'gridTemplateColumns',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n gridTemplateRows: {\n type: 'style-mapped',\n style: 'gridTemplateRows',\n mapping: {\n 0: '0px',\n 1: 'repeat(1, 1fr)',\n 2: 'repeat(2, 1fr)',\n 3: 'repeat(3, 1fr)',\n 4: 'repeat(4, 1fr)',\n 5: 'repeat(5, 1fr)',\n 6: 'repeat(6, 1fr)',\n 7: 'repeat(7, 1fr)',\n 8: 'repeat(8, 1fr)',\n 9: 'repeat(9, 1fr)',\n 10: 'repeat(10, 1fr)',\n 11: 'repeat(11, 1fr)',\n 12: 'repeat(12, 1fr)',\n },\n },\n wrap: {\n type: 'rename-only',\n name: 'flexWrap',\n },\n justify: {\n type: 'rename-only',\n name: 'justifyContent',\n },\n}\n"],"names":[],"mappings":";AAIO,MAAM,YAA2B;AAAA,EACtC,GAAG;AAAA,EACH,OAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAAA,EAER,WAAW;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAAA,EAER,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,OAAO;AAAA,EAAA;AAAA,EAET,qBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,MACP,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAAA,EAER,SAAS;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAEV;"}
@@ -409,6 +409,10 @@ const LAYOUT_MODS = {
409
409
  border: "border-box"
410
410
  }
411
411
  },
412
+ space: {
413
+ type: "rename-only",
414
+ name: "gap"
415
+ },
412
416
  textAlign: {
413
417
  type: "style-only",
414
418
  style: "textAlign"
@@ -1 +1 @@
1
- {"version":3,"file":"layout-mods.js","sources":["../../src/constants/latest/layout-mods.ts"],"sourcesContent":["import type {AttributeMods} from '../../types/AttributeMods'\n\nexport const LAYOUT_MODS: AttributeMods = {\n border: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderTop: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderRight: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderBottom: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderLeft: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderWidth: {type: 'remove'},\n column: {\n type: 'rename-mapped',\n name: 'gridColumn',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n columnEnd: {\n type: 'rename-mapped',\n name: 'gridColumnEnd',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n columnStart: {\n type: 'rename-mapped',\n name: 'gridColumnStart',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n flex: {\n type: 'shorthand-mapped',\n props: [\n {\n name: 'flexBasis',\n mapping: {\n none: 'auto',\n auto: 'auto',\n initial: 'auto',\n 1: '0%',\n 2: '0%',\n 3: '0%',\n 4: '0%',\n 5: '0%',\n 6: '0%',\n 7: '0%',\n 8: '0%',\n 9: '0%',\n 10: '0%',\n 11: '0%',\n 12: '0%',\n },\n },\n {\n name: 'flexGrow',\n mapping: {\n none: 0,\n auto: 1,\n initial: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n 11: 11,\n 12: 12,\n },\n },\n {\n name: 'flexShrink',\n mapping: {\n none: 0,\n auto: 1,\n initial: 1,\n },\n },\n ],\n },\n gapX: {\n type: 'rename-only',\n name: 'columnGap',\n },\n gapY: {\n type: 'rename-only',\n name: 'rowGap',\n },\n gridColumn: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n gridColumnEnd: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridColumnStart: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridRow: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n gridRowEnd: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridRowStart: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n height: {\n type: 'mapped-only',\n mapping: {\n fill: '100%',\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n stretch: 'stretch',\n },\n },\n insetTop: {\n type: 'rename-only',\n name: 'top',\n },\n insetRight: {\n type: 'rename-only',\n name: 'right',\n },\n insetBottom: {\n type: 'rename-only',\n name: 'bottom',\n },\n insetLeft: {\n type: 'rename-only',\n name: 'left',\n },\n minHeight: {\n type: 'mapped-only',\n mapping: {\n full: '100%',\n 0: '0',\n },\n },\n maxWidth: {\n type: 'mapped-only',\n mapping: {\n auto: 'none',\n fill: '100%',\n 0: '20rem',\n 1: '40rem',\n 2: '60rem',\n 3: '80rem',\n 4: '100rem',\n 5: '120rem',\n },\n },\n minWidth: {\n type: 'mapped-only',\n mapping: {\n full: '100%',\n 0: '0',\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n },\n muted: {\n type: 'rename-mapped',\n name: 'tone',\n mapping: {\n true: 'neutral',\n },\n },\n outline: {\n type: 'style-only',\n style: 'outline',\n },\n pointerEvents: {\n type: 'style-only',\n style: 'pointerEvents',\n },\n row: {\n type: 'rename-mapped',\n name: 'gridRow',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n rowEnd: {\n type: 'rename-mapped',\n name: 'gridRowEnd',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n rowStart: {\n type: 'rename-mapped',\n name: 'gridRowStart',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n shadow: {type: 'remove'},\n sizing: {\n type: 'style-mapped',\n style: 'boxSizing',\n mapping: {\n content: 'content-box',\n border: 'border-box',\n },\n },\n textAlign: {\n type: 'style-only',\n style: 'textAlign',\n },\n width: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n fill: '100%',\n stretch: 'stretch',\n min: 'min-content',\n max: 'max-content',\n 0: '20rem',\n 1: '40rem',\n 2: '60rem',\n 3: '80rem',\n 4: '100rem',\n 5: '120rem',\n },\n },\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-mods.js","sources":["../../src/constants/latest/layout-mods.ts"],"sourcesContent":["import type {AttributeMods} from '../../types/AttributeMods'\n\nexport const LAYOUT_MODS: AttributeMods = {\n border: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderTop: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderRight: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderBottom: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderLeft: {\n type: 'mapped-only',\n mapping: {\n none: false,\n muted: true,\n default: true,\n },\n },\n borderWidth: {type: 'remove'},\n column: {\n type: 'rename-mapped',\n name: 'gridColumn',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n columnEnd: {\n type: 'rename-mapped',\n name: 'gridColumnEnd',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n columnStart: {\n type: 'rename-mapped',\n name: 'gridColumnStart',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n flex: {\n type: 'shorthand-mapped',\n props: [\n {\n name: 'flexBasis',\n mapping: {\n none: 'auto',\n auto: 'auto',\n initial: 'auto',\n 1: '0%',\n 2: '0%',\n 3: '0%',\n 4: '0%',\n 5: '0%',\n 6: '0%',\n 7: '0%',\n 8: '0%',\n 9: '0%',\n 10: '0%',\n 11: '0%',\n 12: '0%',\n },\n },\n {\n name: 'flexGrow',\n mapping: {\n none: 0,\n auto: 1,\n initial: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n 10: 10,\n 11: 11,\n 12: 12,\n },\n },\n {\n name: 'flexShrink',\n mapping: {\n none: 0,\n auto: 1,\n initial: 1,\n },\n },\n ],\n },\n gapX: {\n type: 'rename-only',\n name: 'columnGap',\n },\n gapY: {\n type: 'rename-only',\n name: 'rowGap',\n },\n gridColumn: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n gridColumnEnd: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridColumnStart: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridRow: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n gridRowEnd: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n gridRowStart: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n height: {\n type: 'mapped-only',\n mapping: {\n fill: '100%',\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n stretch: 'stretch',\n },\n },\n insetTop: {\n type: 'rename-only',\n name: 'top',\n },\n insetRight: {\n type: 'rename-only',\n name: 'right',\n },\n insetBottom: {\n type: 'rename-only',\n name: 'bottom',\n },\n insetLeft: {\n type: 'rename-only',\n name: 'left',\n },\n minHeight: {\n type: 'mapped-only',\n mapping: {\n full: '100%',\n 0: '0',\n },\n },\n maxWidth: {\n type: 'mapped-only',\n mapping: {\n auto: 'none',\n fill: '100%',\n 0: '20rem',\n 1: '40rem',\n 2: '60rem',\n 3: '80rem',\n 4: '100rem',\n 5: '120rem',\n },\n },\n minWidth: {\n type: 'mapped-only',\n mapping: {\n full: '100%',\n 0: '0',\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n },\n muted: {\n type: 'rename-mapped',\n name: 'tone',\n mapping: {\n true: 'neutral',\n },\n },\n outline: {\n type: 'style-only',\n style: 'outline',\n },\n pointerEvents: {\n type: 'style-only',\n style: 'pointerEvents',\n },\n row: {\n type: 'rename-mapped',\n name: 'gridRow',\n mapping: {\n auto: 'auto',\n full: '1 / -1',\n 1: 'span 1 / span 1',\n 2: 'span 2 / span 2',\n 3: 'span 3 / span 3',\n 4: 'span 4 / span 4',\n 5: 'span 5 / span 5',\n 6: 'span 6 / span 6',\n 7: 'span 7 / span 7',\n 8: 'span 8 / span 8',\n 9: 'span 9 / span 9',\n 10: 'span 10 / span 10',\n 11: 'span 11 / span 11',\n 12: 'span 12 / span 12',\n },\n },\n rowEnd: {\n type: 'rename-mapped',\n name: 'gridRowEnd',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n rowStart: {\n type: 'rename-mapped',\n name: 'gridRowStart',\n mapping: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n },\n shadow: {type: 'remove'},\n sizing: {\n type: 'style-mapped',\n style: 'boxSizing',\n mapping: {\n content: 'content-box',\n border: 'border-box',\n },\n },\n space: {\n type: 'rename-only',\n name: 'gap',\n },\n textAlign: {\n type: 'style-only',\n style: 'textAlign',\n },\n width: {\n type: 'mapped-only',\n mapping: {\n auto: 'auto',\n fill: '100%',\n stretch: 'stretch',\n min: 'min-content',\n max: 'max-content',\n 0: '20rem',\n 1: '40rem',\n 2: '60rem',\n 3: '80rem',\n 4: '100rem',\n 5: '120rem',\n },\n },\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { insertTodoWarning } from "./transformStyledComponents.js";
2
+ function addImportSpecifier(j, root, addTo, name) {
3
+ let hasChanges = !1;
4
+ return root.find(j.ImportDeclaration).forEach((path) => {
5
+ const specs = path.node.specifiers;
6
+ if (!specs?.length)
7
+ return;
8
+ const hasFromSpecifier = specs.some(
9
+ (s) => s.type === "ImportSpecifier" && s.imported.type === "Identifier" && s.imported.name === addTo
10
+ ), hasToSpecifier = specs.some(
11
+ (s) => s.type === "ImportSpecifier" && s.imported.type === "Identifier" && s.imported.name === name
12
+ );
13
+ hasFromSpecifier && !hasToSpecifier && (specs.push(j.importSpecifier(j.identifier(name), j.identifier(name))), hasChanges = !0);
14
+ }), hasChanges;
15
+ }
16
+ function getElementMatchNames(element, localNames) {
17
+ return localNames === void 0 ? /* @__PURE__ */ new Set([element]) : new Set(localNames);
18
+ }
19
+ function isImportBindingUsed(j, root, name, specifierPath) {
20
+ if (root.find(j.JSXOpeningElement).some(({ node }) => node.name.type === "JSXIdentifier" && node.name.name === name) || root.find(j.JSXClosingElement).some(({ node }) => node.name.type === "JSXIdentifier" && node.name.name === name))
21
+ return !0;
22
+ const importedPath = specifierPath.get("imported"), localPath = specifierPath.get("local");
23
+ return root.find(j.Identifier).some((idPath) => {
24
+ if (idPath.node.name !== name || idPath === importedPath || idPath === localPath)
25
+ return !1;
26
+ const parent = idPath.parent?.node;
27
+ return parent ? !(parent.type === "MemberExpression" && !parent.computed && parent.property === idPath.node || parent.type === "TSQualifiedName" && parent.right === idPath.node) : !0;
28
+ });
29
+ }
30
+ function removeUnusedImport(j, root, name) {
31
+ let hasChanges = !1;
32
+ return root.find(j.ImportDeclaration).forEach((path) => {
33
+ const specs = path.node.specifiers;
34
+ if (!specs?.length)
35
+ return;
36
+ const next = specs.filter((spec, i) => {
37
+ if (spec.type !== "ImportSpecifier" || spec.imported.type !== "Identifier" || spec.imported.name !== name || "importKind" in spec && spec.importKind === "type")
38
+ return !0;
39
+ const localName = spec.local?.type === "Identifier" ? spec.local.name : spec.imported.name, specifierPath = path.get("specifiers", i);
40
+ return isImportBindingUsed(j, root, localName, specifierPath);
41
+ });
42
+ if (next.length !== specs.length) {
43
+ if (next.length === 0) {
44
+ j(path).remove(), hasChanges = !0;
45
+ return;
46
+ }
47
+ path.node.specifiers = next, hasChanges = !0;
48
+ }
49
+ }), hasChanges;
50
+ }
51
+ function transformImportAlias(j, root, fromExport, toExport, localName, warning) {
52
+ let updated = !1;
53
+ return root.find(j.ImportDeclaration).forEach((path) => {
54
+ const specs = path.node.specifiers;
55
+ if (specs?.length) {
56
+ for (const spec of specs)
57
+ if (!(spec.type !== "ImportSpecifier" || spec.imported.type !== "Identifier" || spec.imported.name !== fromExport || (spec.local?.type === "Identifier" ? spec.local.name : spec.imported.name) !== localName)) {
58
+ spec.imported.name = toExport, updated = !0, warning && insertTodoWarning(j, path, warning);
59
+ return;
60
+ }
61
+ }
62
+ }), updated;
63
+ }
64
+ function replaceElement(j, root, filter, from, to) {
65
+ const names = getElementMatchNames(from.element, from.localNames);
66
+ let hasChanges = !1, needsDefaultImportUpdate = !1;
67
+ const aliases = /* @__PURE__ */ new Set();
68
+ return root.find(j.JSXOpeningElement).forEach((path) => {
69
+ const openingEl = path.node, openingName = openingEl.name;
70
+ if (openingName.type !== "JSXIdentifier" || !names.has(openingName.name))
71
+ return;
72
+ const attrs = openingEl.attributes;
73
+ if (!attrs || !filter(attrs)) {
74
+ from.callback?.(path) && (hasChanges = !0);
75
+ return;
76
+ }
77
+ const localTag = openingName.name;
78
+ if (localTag !== from.element && localTag !== to.element)
79
+ aliases.has(localTag) || (transformImportAlias(
80
+ j,
81
+ root,
82
+ from.element,
83
+ to.element,
84
+ localTag,
85
+ `Consider renaming ${localTag} to ${to.element}`
86
+ ) && (hasChanges = !0), aliases.add(localTag));
87
+ else {
88
+ openingName.name = to.element;
89
+ const parentNode = path.parent?.node;
90
+ if (parentNode?.type === "JSXElement") {
91
+ const closing = parentNode.closingElement;
92
+ closing?.name.type === "JSXIdentifier" && (closing.name.name = to.element);
93
+ }
94
+ needsDefaultImportUpdate = !0, hasChanges = !0;
95
+ }
96
+ to.callback?.(path) && (hasChanges = !0);
97
+ }), needsDefaultImportUpdate && (addImportSpecifier(j, root, from.element, to.element) && (hasChanges = !0), removeUnusedImport(j, root, from.element) && (hasChanges = !0)), hasChanges;
98
+ }
99
+ export {
100
+ replaceElement
101
+ };
102
+ //# sourceMappingURL=replaceElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replaceElement.js","sources":["../../src/utils/addImportSpecifier.ts","../../src/utils/getElementMatchNames.ts","../../src/utils/isImportBindingUsed.ts","../../src/utils/removeUnusedImport.ts","../../src/utils/transformImportAlias.ts","../../src/utils/replaceElement.ts"],"sourcesContent":["import type {API} from 'jscodeshift'\n\n/**\n * Adds an import specifier to an existing import declaration.\n * Returns whether the AST was updated.\n */\nexport function addImportSpecifier(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n addTo: string,\n name: string,\n): boolean {\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n const hasFromSpecifier = specs.some(\n (s) =>\n s.type === 'ImportSpecifier' &&\n s.imported.type === 'Identifier' &&\n s.imported.name === addTo,\n )\n const hasToSpecifier = specs.some(\n (s) =>\n s.type === 'ImportSpecifier' &&\n s.imported.type === 'Identifier' &&\n s.imported.name === name,\n )\n\n if (hasFromSpecifier && !hasToSpecifier) {\n specs.push(j.importSpecifier(j.identifier(name), j.identifier(name)))\n hasChanges = true\n }\n })\n\n return hasChanges\n}\n","export function getElementMatchNames(element: string, localNames?: Iterable<string>): Set<string> {\n if (localNames === undefined) {\n return new Set([element])\n }\n\n return new Set(localNames)\n}\n","import type {API, ASTPath, ImportSpecifier} from 'jscodeshift'\n\nexport function isImportBindingUsed(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n name: string,\n specifierPath: ASTPath<ImportSpecifier>,\n): boolean {\n const jsxOpening = root.find(j.JSXOpeningElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === name\n })\n\n if (jsxOpening) {\n return true\n }\n\n const jsxClosing = root.find(j.JSXClosingElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === name\n })\n\n if (jsxClosing) {\n return true\n }\n\n const importedPath = specifierPath.get('imported')\n const localPath = specifierPath.get('local')\n\n return root.find(j.Identifier).some((idPath) => {\n if (idPath.node.name !== name) {\n return false\n }\n\n if (idPath === importedPath || idPath === localPath) {\n return false\n }\n\n const parent = idPath.parent?.node\n\n if (!parent) {\n return true\n }\n\n if (parent.type === 'MemberExpression' && !parent.computed && parent.property === idPath.node) {\n return false\n }\n\n if (parent.type === 'TSQualifiedName' && parent.right === idPath.node) {\n return false\n }\n\n return true\n })\n}\n","import type {API, ASTPath, ImportSpecifier} from 'jscodeshift'\n\nimport {isImportBindingUsed} from './isImportBindingUsed'\n\n/**\n * Removes unused import specifier or the whole import if no specifiers remain.\n * Returns whether the AST was updated.\n */\nexport function removeUnusedImport(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n name: string,\n): boolean {\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n const next = specs.filter((spec, i) => {\n if (spec.type !== 'ImportSpecifier' || spec.imported.type !== 'Identifier') {\n return true\n }\n\n if (spec.imported.name !== name) {\n return true\n }\n\n if ('importKind' in spec && spec.importKind === 'type') {\n return true\n }\n\n const localName = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n const specifierPath = path.get('specifiers', i) as ASTPath<ImportSpecifier>\n\n return isImportBindingUsed(j, root, localName, specifierPath)\n })\n\n if (next.length === specs.length) {\n return\n }\n\n if (next.length === 0) {\n j(path).remove()\n hasChanges = true\n return\n }\n\n path.node.specifiers = next\n hasChanges = true\n })\n\n return hasChanges\n}\n","import type {API} from 'jscodeshift'\n\nimport {insertTodoWarning} from './insertTodoWarning'\n\nexport function transformImportAlias(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n fromExport: string,\n toExport: string,\n localName: string,\n warning?: string,\n): boolean {\n let updated = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const specs = path.node.specifiers\n\n if (!specs?.length) {\n return\n }\n\n for (const spec of specs) {\n if (spec.type !== 'ImportSpecifier' || spec.imported.type !== 'Identifier') {\n continue\n }\n\n if (spec.imported.name !== fromExport) {\n continue\n }\n\n const local = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n\n if (local !== localName) {\n continue\n }\n\n spec.imported.name = toExport\n updated = true\n\n if (warning) {\n insertTodoWarning(j, path, warning)\n }\n\n return\n }\n })\n\n return updated\n}\n","import type {API, ASTPath, JSXAttribute, JSXOpeningElement, JSXSpreadAttribute} from 'jscodeshift'\n\nimport {addImportSpecifier} from './addImportSpecifier'\nimport {getElementMatchNames} from './getElementMatchNames'\nimport {removeUnusedImport} from './removeUnusedImport'\nimport {transformImportAlias} from './transformImportAlias'\n\n/**\n * Replaces JSX component if `filter` passes. Runs callbacks and updates imports.\n * If `localNames` is omitted, matches `from.element`. `localNames` may be an empty set,\n * to avoid rewriting unrelated JSX when only cross-file styled aliases are present.\n * Returns whether the AST was updated.\n */\nexport function replaceElement(\n j: API['jscodeshift'],\n root: ReturnType<API['jscodeshift']>,\n filter: (attrs: (JSXAttribute | JSXSpreadAttribute)[]) => boolean,\n from: {\n element: string\n localNames?: Iterable<string>\n callback?: (path: ASTPath<JSXOpeningElement>) => boolean | void\n },\n to: {\n element: string\n callback?: (path: ASTPath<JSXOpeningElement>) => boolean | void\n },\n): boolean {\n const names = getElementMatchNames(from.element, from.localNames)\n\n let hasChanges = false\n let needsDefaultImportUpdate = false\n const aliases = new Set<string>()\n\n root.find(j.JSXOpeningElement).forEach((path) => {\n const openingEl = path.node\n const openingName = openingEl.name\n\n if (openingName.type !== 'JSXIdentifier' || !names.has(openingName.name)) {\n return\n }\n\n const attrs = openingEl.attributes\n\n if (!attrs || !filter(attrs)) {\n if (from.callback?.(path)) {\n hasChanges = true\n }\n\n return\n }\n\n const localTag = openingName.name\n const preserveAlias = localTag !== from.element && localTag !== to.element\n\n if (preserveAlias) {\n if (!aliases.has(localTag)) {\n if (\n transformImportAlias(\n j,\n root,\n from.element,\n to.element,\n localTag,\n `Consider renaming ${localTag} to ${to.element}`,\n )\n ) {\n hasChanges = true\n }\n\n aliases.add(localTag)\n }\n } else {\n openingName.name = to.element\n\n const parentNode = path.parent?.node\n\n if (parentNode?.type === 'JSXElement') {\n const closing = parentNode.closingElement\n\n if (closing?.name.type === 'JSXIdentifier') {\n closing.name.name = to.element\n }\n }\n\n needsDefaultImportUpdate = true\n hasChanges = true\n }\n\n if (to.callback?.(path)) {\n hasChanges = true\n }\n })\n\n if (needsDefaultImportUpdate) {\n if (addImportSpecifier(j, root, from.element, to.element)) {\n hasChanges = true\n }\n\n if (removeUnusedImport(j, root, from.element)) {\n hasChanges = true\n }\n }\n\n return hasChanges\n}\n"],"names":[],"mappings":";AAMO,SAAS,mBACd,GACA,MACA,OACA,MACS;AACT,MAAI,aAAa;AAEjB,SAAA,KAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAS;AAC/C,UAAM,QAAQ,KAAK,KAAK;AAExB,QAAI,CAAC,OAAO;AACV;AAGF,UAAM,mBAAmB,MAAM;AAAA,MAC7B,CAAC,MACC,EAAE,SAAS,qBACX,EAAE,SAAS,SAAS,gBACpB,EAAE,SAAS,SAAS;AAAA,IAAA,GAElB,iBAAiB,MAAM;AAAA,MAC3B,CAAC,MACC,EAAE,SAAS,qBACX,EAAE,SAAS,SAAS,gBACpB,EAAE,SAAS,SAAS;AAAA,IAAA;AAGpB,wBAAoB,CAAC,mBACvB,MAAM,KAAK,EAAE,gBAAgB,EAAE,WAAW,IAAI,GAAG,EAAE,WAAW,IAAI,CAAC,CAAC,GACpE,aAAa;AAAA,EAEjB,CAAC,GAEM;AACT;ACzCO,SAAS,qBAAqB,SAAiB,YAA4C;AAChG,SAAI,eAAe,SACV,oBAAI,IAAI,CAAC,OAAO,CAAC,IAGnB,IAAI,IAAI,UAAU;AAC3B;ACJO,SAAS,oBACd,GACA,MACA,MACA,eACS;AAaT,MAZmB,KAAK,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAC,KAAA,MAChD,KAAK,KAAK,SAAS,mBAAmB,KAAK,KAAK,SAAS,IACjE,KAMkB,KAAK,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAC,KAAA,MAChD,KAAK,KAAK,SAAS,mBAAmB,KAAK,KAAK,SAAS,IACjE;AAGC,WAAO;AAGT,QAAM,eAAe,cAAc,IAAI,UAAU,GAC3C,YAAY,cAAc,IAAI,OAAO;AAE3C,SAAO,KAAK,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW;AAK9C,QAJI,OAAO,KAAK,SAAS,QAIrB,WAAW,gBAAgB,WAAW;AACxC,aAAO;AAGT,UAAM,SAAS,OAAO,QAAQ;AAE9B,WAAK,SAID,EAAA,OAAO,SAAS,sBAAsB,CAAC,OAAO,YAAY,OAAO,aAAa,OAAO,QAIrF,OAAO,SAAS,qBAAqB,OAAO,UAAU,OAAO,QAPxD;AAAA,EAYX,CAAC;AACH;AC5CO,SAAS,mBACd,GACA,MACA,MACS;AACT,MAAI,aAAa;AAEjB,SAAA,KAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAS;AAC/C,UAAM,QAAQ,KAAK,KAAK;AAExB,QAAI,CAAC,OAAO;AACV;AAGF,UAAM,OAAO,MAAM,OAAO,CAAC,MAAM,MAAM;AASrC,UARI,KAAK,SAAS,qBAAqB,KAAK,SAAS,SAAS,gBAI1D,KAAK,SAAS,SAAS,QAIvB,gBAAgB,QAAQ,KAAK,eAAe;AAC9C,eAAO;AAGT,YAAM,YAAY,KAAK,OAAO,SAAS,eAAe,KAAK,MAAM,OAAO,KAAK,SAAS,MAChF,gBAAgB,KAAK,IAAI,cAAc,CAAC;AAE9C,aAAO,oBAAoB,GAAG,MAAM,WAAW,aAAa;AAAA,IAC9D,CAAC;AAED,QAAI,KAAK,WAAW,MAAM,QAI1B;AAAA,UAAI,KAAK,WAAW,GAAG;AACrB,UAAE,IAAI,EAAE,OAAA,GACR,aAAa;AACb;AAAA,MACF;AAEA,WAAK,KAAK,aAAa,MACvB,aAAa;AAAA,IAAA;AAAA,EACf,CAAC,GAEM;AACT;ACpDO,SAAS,qBACd,GACA,MACA,YACA,UACA,WACA,SACS;AACT,MAAI,UAAU;AAEd,SAAA,KAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAS;AAC/C,UAAM,QAAQ,KAAK,KAAK;AAExB,QAAK,OAAO;AAIZ,iBAAW,QAAQ;AAWjB,YAVI,EAAA,KAAK,SAAS,qBAAqB,KAAK,SAAS,SAAS,gBAI1D,KAAK,SAAS,SAAS,eAIb,KAAK,OAAO,SAAS,eAAe,KAAK,MAAM,OAAO,KAAK,SAAS,UAEpE,YAId;AAAA,eAAK,SAAS,OAAO,UACrB,UAAU,IAEN,WACF,kBAAkB,GAAG,MAAM,OAAO;AAGpC;AAAA,QAAA;AAAA;AAAA,EAEJ,CAAC,GAEM;AACT;ACnCO,SAAS,eACd,GACA,MACA,QACA,MAKA,IAIS;AACT,QAAM,QAAQ,qBAAqB,KAAK,SAAS,KAAK,UAAU;AAEhE,MAAI,aAAa,IACb,2BAA2B;AAC/B,QAAM,8BAAc,IAAA;AAEpB,SAAA,KAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAAS;AAC/C,UAAM,YAAY,KAAK,MACjB,cAAc,UAAU;AAE9B,QAAI,YAAY,SAAS,mBAAmB,CAAC,MAAM,IAAI,YAAY,IAAI;AACrE;AAGF,UAAM,QAAQ,UAAU;AAExB,QAAI,CAAC,SAAS,CAAC,OAAO,KAAK,GAAG;AACxB,WAAK,WAAW,IAAI,MACtB,aAAa;AAGf;AAAA,IACF;AAEA,UAAM,WAAW,YAAY;AAG7B,QAFsB,aAAa,KAAK,WAAW,aAAa,GAAG;AAG5D,cAAQ,IAAI,QAAQ,MAErB;AAAA,QACE;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,qBAAqB,QAAQ,OAAO,GAAG,OAAO;AAAA,MAAA,MAGhD,aAAa,KAGf,QAAQ,IAAI,QAAQ;AAAA,SAEjB;AACL,kBAAY,OAAO,GAAG;AAEtB,YAAM,aAAa,KAAK,QAAQ;AAEhC,UAAI,YAAY,SAAS,cAAc;AACrC,cAAM,UAAU,WAAW;AAEvB,iBAAS,KAAK,SAAS,oBACzB,QAAQ,KAAK,OAAO,GAAG;AAAA,MAE3B;AAEA,iCAA2B,IAC3B,aAAa;AAAA,IACf;AAEI,OAAG,WAAW,IAAI,MACpB,aAAa;AAAA,EAEjB,CAAC,GAEG,6BACE,mBAAmB,GAAG,MAAM,KAAK,SAAS,GAAG,OAAO,MACtD,aAAa,KAGX,mBAAmB,GAAG,MAAM,KAAK,OAAO,MAC1C,aAAa,MAIV;AACT;"}