@sanity/ui-codemod 1.0.0-alpha.3 → 1.0.0-alpha.4

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.
@@ -106,7 +106,19 @@ const LAYOUT_MODS = {
106
106
  mapping: {
107
107
  none: "auto",
108
108
  auto: "auto",
109
- initial: "auto"
109
+ initial: "auto",
110
+ 1: "0%",
111
+ 2: "0%",
112
+ 3: "0%",
113
+ 4: "0%",
114
+ 5: "0%",
115
+ 6: "0%",
116
+ 7: "0%",
117
+ 8: "0%",
118
+ 9: "0%",
119
+ 10: "0%",
120
+ 11: "0%",
121
+ 12: "0%"
110
122
  }
111
123
  },
112
124
  {
@@ -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 },\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 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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"}
@@ -177,23 +177,23 @@ function getMappingExpression(j, val) {
177
177
  return val === void 0 ? j.identifier("undefined") : typeof val == "boolean" ? j.booleanLiteral(val) : typeof val == "number" ? j.numericLiteral(val) : j.stringLiteral(val);
178
178
  }
179
179
  function getMappingValue(mapping, expr) {
180
- let matchedVal;
181
- for (const val in mapping)
182
- expr.value === mapping[val] && (matchedVal = mapping[val]);
183
- if (matchedVal)
184
- return matchedVal;
185
180
  let key;
186
181
  if ((expr.type === "NumericLiteral" || expr.type === "BooleanLiteral" || expr.type === "StringLiteral" || expr.type === "Literal") && (key = String(expr.value)), expr.type === "TemplateLiteral") {
187
182
  const expressions = expr.expressions, quasis = expr.quasis;
188
183
  expressions.length === 0 && quasis.length === 1 && (key = quasis[0]?.value.cooked ?? null);
189
184
  }
190
- if (!key)
191
- return;
192
- if (Object.prototype.hasOwnProperty.call(mapping, key))
193
- return mapping[key];
194
- const number = Number(key);
195
- if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number))
196
- return mapping[number];
185
+ if (key) {
186
+ if (Object.prototype.hasOwnProperty.call(mapping, key))
187
+ return mapping[key];
188
+ const number = Number(key);
189
+ if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number))
190
+ return mapping[number];
191
+ }
192
+ if (expr.type === "BooleanLiteral" || expr.type === "Literal" && typeof expr.value == "boolean") {
193
+ for (const val in mapping)
194
+ if (expr.value === mapping[val])
195
+ return mapping[val];
196
+ }
197
197
  }
198
198
  function getMappingArray(j, arr, mapping, allowUndefined) {
199
199
  if (arr.type !== "ArrayExpression")
@@ -1 +1 @@
1
- {"version":3,"file":"transformComponent.js","sources":["../../src/utils/getClonedImportSpecifiers.ts","../../src/utils/getSplitImportSpecifiers.ts","../../src/utils/transformImport.ts","../../src/utils/getComponentLocalNames.ts","../../src/utils/getAttribute.ts","../../src/utils/getAttributeExpression.ts","../../src/utils/getStaticAttributeExpression.ts","../../src/utils/insertTodoWarning.ts","../../src/utils/shouldTransformComponent.ts","../../src/utils/getCompositeAttrValue.ts","../../src/utils/getMappingExpression.ts","../../src/utils/getMappingValue.ts","../../src/utils/getMappingArray.ts","../../src/utils/getShorthandAttributes.ts","../../src/utils/getStyleExpression.ts","../../src/utils/isValidStyleType.ts","../../src/utils/mergeStyle.ts","../../src/utils/transformAttributes.ts","../../src/utils/transformComponent.ts"],"sourcesContent":["import type {API, ImportDefaultSpecifier, ImportSpecifier} from 'jscodeshift'\n\nexport function getClonedImportSpecifiers(\n j: API['jscodeshift'],\n specifiers: (ImportSpecifier | ImportDefaultSpecifier)[] = [],\n) {\n return specifiers.map((spec) => {\n if (spec.type === 'ImportSpecifier') {\n if (spec.imported.type !== 'Identifier' || spec.local?.type !== 'Identifier') {\n return spec\n }\n\n const clone = j.importSpecifier(\n j.identifier(spec.imported.name),\n j.identifier(spec.local.name),\n )\n\n if ('importKind' in spec && spec.importKind === 'type') {\n Object.assign(clone, {importKind: 'type'})\n }\n\n return clone\n } else {\n return j.importDefaultSpecifier(\n j.identifier((spec as ImportDefaultSpecifier).local?.name as string),\n )\n }\n })\n}\n","import type {ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier} from 'jscodeshift'\n\nexport function getSplitImportSpecifiers(\n specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[] = [],\n componentName: string,\n) {\n const componentNames = new Set([componentName, `${componentName}Props`])\n const specs = {\n componentSpecs: [] as (ImportSpecifier | ImportDefaultSpecifier)[],\n restSpecs: [] as (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[],\n }\n\n for (const spec of specifiers) {\n if (spec.type === 'ImportNamespaceSpecifier') {\n specs.restSpecs.push(spec)\n continue\n }\n\n if (spec.type === 'ImportSpecifier' || spec.type === 'ImportDefaultSpecifier') {\n let local\n\n if (spec.type === 'ImportSpecifier') {\n const loc = spec.local ?? spec.imported\n local = loc.type === 'Identifier' ? loc.name : null\n }\n\n if (spec.type === 'ImportDefaultSpecifier') {\n local = spec.local?.type === 'Identifier' ? spec.local.name : null\n }\n\n if (local && componentNames.has(local)) {\n specs.componentSpecs.push(spec)\n } else {\n specs.restSpecs.push(spec)\n }\n }\n }\n\n return specs\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport {getClonedImportSpecifiers} from './getClonedImportSpecifiers'\nimport {getSplitImportSpecifiers} from './getSplitImportSpecifiers'\n\nexport const DEFAULT_UI_PACKAGE = '@sanity/ui'\n\n/**\n * Rewrites imports from `fromPackage` to `toPackage`, splitting imports if needed.\n * Returns whether the AST was updated.\n */\nexport function transformImport(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n fromPackage: string = DEFAULT_UI_PACKAGE,\n toPackage: string = DEFAULT_UI_PACKAGE,\n): boolean {\n if (fromPackage === toPackage) {\n return false\n }\n\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const node = path.node\n\n if (node.source.value !== fromPackage) {\n return\n }\n\n const {componentSpecs, restSpecs} = getSplitImportSpecifiers(node.specifiers, componentName)\n\n if (componentSpecs.length === 0) {\n return\n }\n\n if (restSpecs.length === 0) {\n if (node.source && typeof node.source === 'object' && 'value' in node.source) {\n const sourceLiteral = node.source as {value: string}\n sourceLiteral.value = toPackage\n }\n\n hasChanges = true\n return\n }\n\n path.node.specifiers = restSpecs\n const clonedImportSpecifiers = getClonedImportSpecifiers(j, componentSpecs)\n path.insertAfter(j.importDeclaration(clonedImportSpecifiers, j.stringLiteral(toPackage)))\n hasChanges = true\n })\n\n return hasChanges\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport type {BaseOptions} from '../types/BaseOptions'\nimport {DEFAULT_UI_PACKAGE} from './transformImport'\n\nexport function getComponentLocalNames(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n options?: BaseOptions,\n): Set<string> {\n const importedNames = new Set<string>()\n const packages = new Set([\n options?.fromPackage ?? DEFAULT_UI_PACKAGE,\n options?.toPackage ?? DEFAULT_UI_PACKAGE,\n ])\n let hasOtherPackageImport = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const node = path.node\n\n if ('importKind' in node && node.importKind === 'type') {\n return\n }\n\n const matchesPackage = packages.has(node.source.value as string)\n\n for (const spec of 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' || spec.imported.name !== componentName) {\n continue\n }\n\n const local = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n\n if (!matchesPackage) {\n hasOtherPackageImport = true\n continue\n }\n\n importedNames.add(local)\n }\n })\n\n if (importedNames.size > 0) {\n return importedNames\n }\n\n if (hasOtherPackageImport) {\n return new Set()\n }\n\n const usesComponentInJsx = root.find(j.JSXOpeningElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === componentName\n })\n\n if (usesComponentInJsx) {\n return new Set([componentName])\n }\n\n return new Set()\n}\n","import type {JSXAttribute, JSXElement} from 'jscodeshift'\n\nexport function getAttribute(\n attrs: JSXElement['openingElement']['attributes'],\n name: string,\n): JSXAttribute | undefined {\n if (!attrs) {\n return undefined\n }\n\n for (const attr of attrs) {\n if (\n attr.type === 'JSXAttribute' &&\n attr.name.type === 'JSXIdentifier' &&\n attr.name.name === name\n ) {\n return attr\n }\n }\n\n return undefined\n}\n","import {type API, type JSXAttribute} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function getAttributeExpression(\n attr: JSXAttribute,\n j: API['jscodeshift'],\n): AnyExpression | null {\n if (!attr.value) {\n return j.booleanLiteral(true)\n }\n\n if (attr.value.type === 'StringLiteral' || attr.value.type === 'Literal') {\n return attr.value\n }\n\n if (attr.value.type === 'JSXExpressionContainer') {\n return attr.value.expression\n }\n\n return null\n}\n","import type {API, JSXAttribute, JSXSpreadAttribute} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport {getAttribute} from './getAttribute'\nimport {getAttributeExpression} from './getAttributeExpression'\n\nexport type CompositePrimitive = string | number | boolean\n\nexport type StaticAttributeValue = CompositePrimitive | (CompositePrimitive | null | undefined)[]\n\nfunction getStaticPrimitive(expr: AnyExpression): CompositePrimitive | undefined {\n if (\n expr.type === 'StringLiteral' ||\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'Literal'\n ) {\n const {value} = expr\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value\n }\n }\n\n return undefined\n}\n\nexport function getStaticAttributeExpression(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n name: string,\n): StaticAttributeValue | null {\n const attr = getAttribute(attrs, name)\n\n if (!attr) {\n return null\n }\n\n const expr = getAttributeExpression(attr, j)\n\n if (!expr) {\n return null\n }\n\n const primitive = getStaticPrimitive(expr as AnyExpression)\n\n if (primitive !== undefined) {\n return primitive\n }\n\n if (expr.type !== 'ArrayExpression') {\n return null\n }\n\n const elements = expr.elements as ((AnyExpression & {name?: string}) | null)[]\n const values: (CompositePrimitive | null | undefined)[] = []\n\n for (const element of elements) {\n if (element === null || element.type === 'NullLiteral') {\n values.push(null)\n continue\n }\n\n if (element.type === 'SpreadElement') {\n return null\n }\n\n if (element.type === 'Literal' && element.value === null) {\n values.push(null)\n continue\n }\n\n if (element.type === 'Identifier' && element.name === 'undefined') {\n values.push(undefined)\n continue\n }\n\n const elementValue = getStaticPrimitive(element)\n\n if (elementValue === undefined) {\n return null\n }\n\n values.push(elementValue)\n }\n\n return values\n}\n","import {type API, type ASTPath, type ImportDeclaration, type JSXOpeningElement} from 'jscodeshift'\n\ntype CommentableNode = {\n comments?: {type: string; value: string; leading?: boolean}[] | null\n}\n\n/**\n * Inserts a `UI-CODEMOD TODO` comment.\n * Returns whether the AST was updated.\n */\nexport function insertTodoWarning(\n j: API['jscodeshift'],\n path: ASTPath<JSXOpeningElement | ImportDeclaration>,\n warning: string,\n): boolean {\n let target: CommentableNode | null = null\n\n if (path.node.type === 'ImportDeclaration') {\n target = path.node\n } else if (path.parent?.node.type === 'JSXElement') {\n target = path.parent.node\n }\n\n if (!target) {\n return false\n }\n\n target.comments ??= []\n\n if (target.comments.some((comment) => comment.value.includes(warning))) {\n return false\n }\n\n target.comments.unshift(j.commentLine(` UI-CODEMOD TODO: ${warning}`, true))\n return true\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport type {BaseOptions} from '../types/BaseOptions'\nimport {getSplitImportSpecifiers} from './getSplitImportSpecifiers'\nimport {DEFAULT_UI_PACKAGE} from './transformImport'\n\n/**\n * Returns whether a component transform should run on this file, based on local\n * usage or a pending import rewrite.\n */\nexport function shouldTransformComponent(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n localNames: Set<string>,\n options?: BaseOptions,\n styledAliases?: Set<string>,\n): boolean {\n if (localNames.size > 0) {\n return true\n }\n\n if (styledAliases && styledAliases.size > 0) {\n return true\n }\n\n const fromPackage = options?.fromPackage ?? DEFAULT_UI_PACKAGE\n const toPackage = options?.toPackage ?? DEFAULT_UI_PACKAGE\n\n if (fromPackage === toPackage) {\n return false\n }\n\n return root.find(j.ImportDeclaration).some((path) => {\n const node = path.node\n\n if (node.source.value !== fromPackage) {\n return false\n }\n\n const {componentSpecs} = getSplitImportSpecifiers(node.specifiers, componentName)\n\n return componentSpecs.length > 0\n })\n}\n","import type {API, JSXAttribute, JSXSpreadAttribute} from 'jscodeshift'\n\nimport type {CompositeAttributeMapping} from '../types/AttributeMods'\nimport {getStaticAttributeExpression} from './getStaticAttributeExpression'\n\nexport function getCompositeAttrValue(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n mapping: CompositeAttributeMapping,\n) {\n let compositeAttrValue: string | null = null\n\n for (const compositeKey of Object.keys(mapping)) {\n const compositeMapping = mapping[compositeKey]\n\n if (!compositeMapping) {\n continue\n }\n\n let hasMatchingValues = true\n\n for (const propName of Object.keys(compositeMapping)) {\n const mappingValue = compositeMapping[propName]\n const attrValue = getStaticAttributeExpression(j, attrs, propName)\n\n if (mappingValue === undefined || attrValue !== mappingValue) {\n hasMatchingValues = false\n break\n }\n }\n\n if (hasMatchingValues) {\n compositeAttrValue = compositeKey\n break\n }\n }\n\n return compositeAttrValue\n}\n","import {type API} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\n\nexport function getMappingExpression(\n j: API['jscodeshift'],\n val: string | boolean | number | undefined,\n): AnyExpression {\n if (val === undefined) {\n return j.identifier('undefined')\n }\n\n if (typeof val === 'boolean') {\n return j.booleanLiteral(val)\n }\n\n if (typeof val === 'number') {\n return j.numericLiteral(val)\n }\n\n return j.stringLiteral(val)\n}\n","import type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMapping} from '../types/AttributeMods'\n\nexport function getMappingValue(mapping: AttributeMapping, expr: AnyExpression) {\n let matchedVal\n\n for (const val in mapping) {\n if (expr.value === mapping[val]) {\n matchedVal = mapping[val]\n }\n }\n\n if (matchedVal) {\n return matchedVal\n }\n\n let key\n\n if (\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'StringLiteral' ||\n expr.type === 'Literal'\n ) {\n key = String(expr.value)\n }\n\n if (expr.type === 'TemplateLiteral') {\n const expressions = expr.expressions as unknown[]\n const quasis = expr.quasis as {value: {cooked: string | null}}[]\n\n if (expressions.length === 0 && quasis.length === 1) {\n key = quasis[0]?.value.cooked ?? null\n }\n }\n\n if (!key) {\n return\n }\n\n if (Object.prototype.hasOwnProperty.call(mapping, key)) {\n return mapping[key]\n }\n\n const number = Number(key)\n\n if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number)) {\n return mapping[number]\n }\n\n return\n}\n","import {type API, type ArrayExpression} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMapping} from '../types/AttributeMods'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\n\nexport function getMappingArray(\n j: API['jscodeshift'],\n arr: AnyExpression,\n mapping: AttributeMapping,\n allowUndefined?: boolean,\n): ArrayExpression | null {\n if (arr.type !== 'ArrayExpression') {\n return null\n }\n\n const elements = arr.elements as (AnyExpression | null)[]\n const output: AnyExpression[] = []\n\n for (const el of elements) {\n if (el == null || el.type === 'SpreadElement') {\n return null\n }\n\n const mappingValue = getMappingValue(mapping, el)\n\n if (!mappingValue && !allowUndefined) {\n return null\n }\n\n output.push(getMappingExpression(j, mappingValue))\n }\n\n return j.arrayExpression(output as never[])\n}\n","import type {API, JSXAttribute} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMod} from '../types/AttributeMods'\nimport {getMappingArray} from './getMappingArray'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\n\nexport function getShorthandAttributes(\n j: API['jscodeshift'],\n expr: AnyExpression,\n mod: AttributeMod,\n) {\n const attributes: JSXAttribute[] = []\n\n if (!('props' in mod)) {\n return []\n }\n\n if (expr.type === 'ArrayExpression') {\n for (const prop of mod.props) {\n const styleArray = getMappingArray(j, expr, prop.mapping, true)\n\n if (!styleArray) {\n continue\n }\n\n attributes.push(\n j.jsxAttribute(j.jsxIdentifier(prop.name), j.jsxExpressionContainer(styleArray)),\n )\n }\n }\n\n for (const prop of mod.props) {\n const styleValue = getMappingValue(prop.mapping, expr)\n\n if (styleValue === undefined) {\n continue\n }\n\n if (typeof styleValue === 'string') {\n attributes.push(j.jsxAttribute(j.jsxIdentifier(prop.name), j.stringLiteral(styleValue)))\n } else {\n attributes.push(\n j.jsxAttribute(\n j.jsxIdentifier(prop.name),\n j.jsxExpressionContainer(getMappingExpression(j, styleValue) as never),\n ),\n )\n }\n }\n\n return attributes\n}\n","import {type API} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function getStyleExpression(j: API['jscodeshift'], expr: AnyExpression): AnyExpression {\n if (expr.type === 'Literal') {\n if (expr.value === null) {\n return j.literal(null)\n }\n\n if (typeof expr.value === 'boolean') {\n return j.booleanLiteral(expr.value)\n }\n\n if (typeof expr.value === 'number') {\n return j.numericLiteral(expr.value)\n }\n\n if (typeof expr.value === 'string') {\n return j.stringLiteral(expr.value)\n }\n }\n\n if (expr.type === 'BooleanLiteral') {\n return j.booleanLiteral(expr.value as boolean)\n }\n\n if (expr.type === 'NumericLiteral') {\n return j.numericLiteral(expr.value as number)\n }\n\n if (expr.type === 'StringLiteral') {\n return j.stringLiteral(expr.value as string)\n }\n\n return expr\n}\n","import {type AnyExpression} from '../types/AnyExpression'\n\nexport function isValidStyleType(expr: AnyExpression) {\n if (expr.type === 'TemplateLiteral') {\n const expressions = expr.expressions as unknown[]\n const quasis = expr.quasis as {value: {cooked: string | null}}[]\n return expressions.length === 0 && quasis.length === 1\n }\n\n if (\n expr.type === 'StringLiteral' ||\n expr.type === 'Literal' ||\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'NullLiteral'\n ) {\n return true\n }\n\n return false\n}\n","import {type API, type JSXAttribute, type JSXSpreadAttribute} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function mergeStyle(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n styleKey: string,\n styleExpression: AnyExpression,\n) {\n const styleProp = j.objectProperty(j.identifier(styleKey), styleExpression as never)\n\n const styleIndex = attrs.findIndex(\n (a): a is JSXAttribute =>\n a.type === 'JSXAttribute' && a.name.type === 'JSXIdentifier' && a.name.name === 'style',\n )\n\n if (styleIndex === -1) {\n attrs.push(\n j.jsxAttribute(\n j.jsxIdentifier('style'),\n j.jsxExpressionContainer(j.objectExpression([styleProp])),\n ),\n )\n\n return true\n }\n\n const styleAttr = attrs[styleIndex] as JSXAttribute\n\n if (styleAttr.value?.type !== 'JSXExpressionContainer') {\n return false\n }\n\n const expr = styleAttr.value.expression\n\n if (expr.type === 'ObjectExpression') {\n expr.properties = expr.properties.filter((prop) => {\n if (prop.type !== 'ObjectProperty' && prop.type !== 'Property') {\n return true\n }\n\n const key = prop.key\n\n const name =\n key.type === 'Identifier'\n ? key.name\n : key.type === 'StringLiteral' || key.type === 'Literal'\n ? String(key.value)\n : null\n\n return name !== styleKey\n })\n\n expr.properties.push(styleProp)\n return true\n }\n\n styleAttr.value = j.jsxExpressionContainer(\n j.objectExpression([j.spreadElement(expr as never), styleProp]),\n )\n\n return true\n}\n","import {type API, type ASTPath, type JSXOpeningElement} from 'jscodeshift'\n\nimport {type AttributeMods} from '../types/AttributeMods'\nimport {getAttribute} from './getAttribute'\nimport {getAttributeExpression} from './getAttributeExpression'\nimport {getCompositeAttrValue} from './getCompositeAttrValue'\nimport {getMappingArray} from './getMappingArray'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\nimport {getShorthandAttributes} from './getShorthandAttributes'\nimport {getStyleExpression} from './getStyleExpression'\nimport {insertTodoWarning} from './insertTodoWarning'\nimport {isValidStyleType} from './isValidStyleType'\nimport {mergeStyle} from './mergeStyle'\n\n/**\n * Applies attribute migration rules to a JSX opening element.\n * Returns whether the AST was updated.\n */\nexport function transformAttributes(\n j: API['jscodeshift'],\n path: ASTPath<JSXOpeningElement>,\n mods: AttributeMods,\n todoWarning: string,\n): boolean {\n if (!path.node.attributes) {\n return false\n }\n\n let hasChanges = false\n const attrs = path.node.attributes\n const removeIdxs: number[] = []\n\n for (const [attrName, mod] of Object.entries(mods)) {\n if (mod?.type !== 'warn-missing') {\n continue\n }\n\n if (getAttribute(attrs, attrName)) {\n continue\n }\n\n if (insertTodoWarning(j, path, mod.warning || todoWarning)) {\n hasChanges = true\n }\n }\n\n for (let i = 0; i < attrs.length; i++) {\n const attr = attrs[i]\n\n if (!attr || attr.type !== 'JSXAttribute' || attr.name.type !== 'JSXIdentifier') {\n continue\n }\n\n const mod = mods[attr.name.name]\n const expr = getAttributeExpression(attr, j)\n\n if (!mod || !expr) {\n continue\n }\n\n if (mod.type === 'remove') {\n removeIdxs.push(i)\n }\n\n if (mod.type === 'warn-only') {\n if (insertTodoWarning(j, path, mod.warning || todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'rename-only') {\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n hasChanges = true\n }\n }\n\n if (mod.type === 'style-only') {\n if (!expr || !isValidStyleType(expr)) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const merged = mergeStyle(j, attrs, mod.style, getStyleExpression(j, expr))\n\n if (merged) {\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'style-mapped') {\n if (!expr || !isValidStyleType(expr)) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const styleValue = getMappingValue(mod.mapping, expr)\n\n if (styleValue === undefined) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const merged = mergeStyle(j, attrs, mod.style, getMappingExpression(j, styleValue))\n\n if (merged) {\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'shorthand-mapped') {\n if (expr.type === 'ConditionalExpression' || expr.type === 'Identifier') {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const shorthandAttrs = getShorthandAttributes(j, expr, mod)\n\n if (shorthandAttrs.length) {\n attrs.splice(i + 1, 0, ...shorthandAttrs)\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'composite') {\n const triggerName = attr.name.name\n const compositeValue = getCompositeAttrValue(j, attrs, mod.mapping)\n\n if (!compositeValue) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n }\n\n attr.value = j.stringLiteral(compositeValue)\n\n for (const attrName of Object.keys(mod.mapping[compositeValue] || {})) {\n if (attrName === triggerName) {\n continue\n }\n\n const otherAttr = getAttribute(attrs, attrName)\n\n if (otherAttr) {\n const k = attrs.indexOf(otherAttr)\n\n if (k !== -1) {\n removeIdxs.push(k)\n }\n }\n }\n\n hasChanges = true\n }\n\n if (mod.type === 'mapped-only' || mod.type === 'rename-mapped') {\n if (mod.type === 'rename-mapped') {\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n }\n }\n\n if (expr.type === 'ConditionalExpression' || expr.type === 'Identifier') {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (expr.type === 'ArrayExpression') {\n const styleArray = getMappingArray(j, expr, mod.mapping)\n\n if (!styleArray) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (attr.value?.type === 'JSXExpressionContainer') {\n attr.value.expression = styleArray\n } else {\n attr.value = j.jsxExpressionContainer(styleArray)\n }\n\n hasChanges = true\n continue\n }\n\n const styleValue = getMappingValue(mod.mapping, expr)\n\n if (styleValue === undefined) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (typeof styleValue === 'string') {\n attr.value = j.stringLiteral(styleValue)\n } else {\n attr.value = j.jsxExpressionContainer(getMappingExpression(j, styleValue) as never)\n }\n\n hasChanges = true\n }\n }\n\n const idxsToRemove = [...new Set(removeIdxs)].sort((a, b) => b - a)\n\n if (idxsToRemove.length > 0) {\n hasChanges = true\n\n for (const i of idxsToRemove) {\n attrs.splice(i, 1)\n }\n }\n\n return hasChanges\n}\n","import type {API, Collection, FileInfo} from 'jscodeshift'\n\nexport type TransformContext = {\n j: API['jscodeshift']\n root: Collection\n markChanged: () => void\n}\n\n/**\n * Runs a component transform on a file and only calls `toSource()` when\n * `markChanged()` was invoked. Returns `undefined` for no-op files.\n */\nexport function transformComponent(\n fileInfo: FileInfo,\n api: API,\n fn: (ctx: TransformContext) => void,\n): string | undefined {\n const j = api.jscodeshift\n const root = j(fileInfo.source)\n let hasChanges = false\n\n fn({\n j,\n root,\n markChanged: () => {\n hasChanges = true\n },\n })\n\n return hasChanges ? root.toSource() : undefined\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformComponent.js","sources":["../../src/utils/getClonedImportSpecifiers.ts","../../src/utils/getSplitImportSpecifiers.ts","../../src/utils/transformImport.ts","../../src/utils/getComponentLocalNames.ts","../../src/utils/getAttribute.ts","../../src/utils/getAttributeExpression.ts","../../src/utils/getStaticAttributeExpression.ts","../../src/utils/insertTodoWarning.ts","../../src/utils/shouldTransformComponent.ts","../../src/utils/getCompositeAttrValue.ts","../../src/utils/getMappingExpression.ts","../../src/utils/getMappingValue.ts","../../src/utils/getMappingArray.ts","../../src/utils/getShorthandAttributes.ts","../../src/utils/getStyleExpression.ts","../../src/utils/isValidStyleType.ts","../../src/utils/mergeStyle.ts","../../src/utils/transformAttributes.ts","../../src/utils/transformComponent.ts"],"sourcesContent":["import type {API, ImportDefaultSpecifier, ImportSpecifier} from 'jscodeshift'\n\nexport function getClonedImportSpecifiers(\n j: API['jscodeshift'],\n specifiers: (ImportSpecifier | ImportDefaultSpecifier)[] = [],\n) {\n return specifiers.map((spec) => {\n if (spec.type === 'ImportSpecifier') {\n if (spec.imported.type !== 'Identifier' || spec.local?.type !== 'Identifier') {\n return spec\n }\n\n const clone = j.importSpecifier(\n j.identifier(spec.imported.name),\n j.identifier(spec.local.name),\n )\n\n if ('importKind' in spec && spec.importKind === 'type') {\n Object.assign(clone, {importKind: 'type'})\n }\n\n return clone\n } else {\n return j.importDefaultSpecifier(\n j.identifier((spec as ImportDefaultSpecifier).local?.name as string),\n )\n }\n })\n}\n","import type {ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier} from 'jscodeshift'\n\nexport function getSplitImportSpecifiers(\n specifiers: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[] = [],\n componentName: string,\n) {\n const componentNames = new Set([componentName, `${componentName}Props`])\n const specs = {\n componentSpecs: [] as (ImportSpecifier | ImportDefaultSpecifier)[],\n restSpecs: [] as (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[],\n }\n\n for (const spec of specifiers) {\n if (spec.type === 'ImportNamespaceSpecifier') {\n specs.restSpecs.push(spec)\n continue\n }\n\n if (spec.type === 'ImportSpecifier' || spec.type === 'ImportDefaultSpecifier') {\n let local\n\n if (spec.type === 'ImportSpecifier') {\n const loc = spec.local ?? spec.imported\n local = loc.type === 'Identifier' ? loc.name : null\n }\n\n if (spec.type === 'ImportDefaultSpecifier') {\n local = spec.local?.type === 'Identifier' ? spec.local.name : null\n }\n\n if (local && componentNames.has(local)) {\n specs.componentSpecs.push(spec)\n } else {\n specs.restSpecs.push(spec)\n }\n }\n }\n\n return specs\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport {getClonedImportSpecifiers} from './getClonedImportSpecifiers'\nimport {getSplitImportSpecifiers} from './getSplitImportSpecifiers'\n\nexport const DEFAULT_UI_PACKAGE = '@sanity/ui'\n\n/**\n * Rewrites imports from `fromPackage` to `toPackage`, splitting imports if needed.\n * Returns whether the AST was updated.\n */\nexport function transformImport(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n fromPackage: string = DEFAULT_UI_PACKAGE,\n toPackage: string = DEFAULT_UI_PACKAGE,\n): boolean {\n if (fromPackage === toPackage) {\n return false\n }\n\n let hasChanges = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const node = path.node\n\n if (node.source.value !== fromPackage) {\n return\n }\n\n const {componentSpecs, restSpecs} = getSplitImportSpecifiers(node.specifiers, componentName)\n\n if (componentSpecs.length === 0) {\n return\n }\n\n if (restSpecs.length === 0) {\n if (node.source && typeof node.source === 'object' && 'value' in node.source) {\n const sourceLiteral = node.source as {value: string}\n sourceLiteral.value = toPackage\n }\n\n hasChanges = true\n return\n }\n\n path.node.specifiers = restSpecs\n const clonedImportSpecifiers = getClonedImportSpecifiers(j, componentSpecs)\n path.insertAfter(j.importDeclaration(clonedImportSpecifiers, j.stringLiteral(toPackage)))\n hasChanges = true\n })\n\n return hasChanges\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport type {BaseOptions} from '../types/BaseOptions'\nimport {DEFAULT_UI_PACKAGE} from './transformImport'\n\nexport function getComponentLocalNames(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n options?: BaseOptions,\n): Set<string> {\n const importedNames = new Set<string>()\n const packages = new Set([\n options?.fromPackage ?? DEFAULT_UI_PACKAGE,\n options?.toPackage ?? DEFAULT_UI_PACKAGE,\n ])\n let hasOtherPackageImport = false\n\n root.find(j.ImportDeclaration).forEach((path) => {\n const node = path.node\n\n if ('importKind' in node && node.importKind === 'type') {\n return\n }\n\n const matchesPackage = packages.has(node.source.value as string)\n\n for (const spec of 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' || spec.imported.name !== componentName) {\n continue\n }\n\n const local = spec.local?.type === 'Identifier' ? spec.local.name : spec.imported.name\n\n if (!matchesPackage) {\n hasOtherPackageImport = true\n continue\n }\n\n importedNames.add(local)\n }\n })\n\n if (importedNames.size > 0) {\n return importedNames\n }\n\n if (hasOtherPackageImport) {\n return new Set()\n }\n\n const usesComponentInJsx = root.find(j.JSXOpeningElement).some(({node}) => {\n return node.name.type === 'JSXIdentifier' && node.name.name === componentName\n })\n\n if (usesComponentInJsx) {\n return new Set([componentName])\n }\n\n return new Set()\n}\n","import type {JSXAttribute, JSXElement} from 'jscodeshift'\n\nexport function getAttribute(\n attrs: JSXElement['openingElement']['attributes'],\n name: string,\n): JSXAttribute | undefined {\n if (!attrs) {\n return undefined\n }\n\n for (const attr of attrs) {\n if (\n attr.type === 'JSXAttribute' &&\n attr.name.type === 'JSXIdentifier' &&\n attr.name.name === name\n ) {\n return attr\n }\n }\n\n return undefined\n}\n","import {type API, type JSXAttribute} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function getAttributeExpression(\n attr: JSXAttribute,\n j: API['jscodeshift'],\n): AnyExpression | null {\n if (!attr.value) {\n return j.booleanLiteral(true)\n }\n\n if (attr.value.type === 'StringLiteral' || attr.value.type === 'Literal') {\n return attr.value\n }\n\n if (attr.value.type === 'JSXExpressionContainer') {\n return attr.value.expression\n }\n\n return null\n}\n","import type {API, JSXAttribute, JSXSpreadAttribute} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport {getAttribute} from './getAttribute'\nimport {getAttributeExpression} from './getAttributeExpression'\n\nexport type CompositePrimitive = string | number | boolean\n\nexport type StaticAttributeValue = CompositePrimitive | (CompositePrimitive | null | undefined)[]\n\nfunction getStaticPrimitive(expr: AnyExpression): CompositePrimitive | undefined {\n if (\n expr.type === 'StringLiteral' ||\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'Literal'\n ) {\n const {value} = expr\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value\n }\n }\n\n return undefined\n}\n\nexport function getStaticAttributeExpression(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n name: string,\n): StaticAttributeValue | null {\n const attr = getAttribute(attrs, name)\n\n if (!attr) {\n return null\n }\n\n const expr = getAttributeExpression(attr, j)\n\n if (!expr) {\n return null\n }\n\n const primitive = getStaticPrimitive(expr as AnyExpression)\n\n if (primitive !== undefined) {\n return primitive\n }\n\n if (expr.type !== 'ArrayExpression') {\n return null\n }\n\n const elements = expr.elements as ((AnyExpression & {name?: string}) | null)[]\n const values: (CompositePrimitive | null | undefined)[] = []\n\n for (const element of elements) {\n if (element === null || element.type === 'NullLiteral') {\n values.push(null)\n continue\n }\n\n if (element.type === 'SpreadElement') {\n return null\n }\n\n if (element.type === 'Literal' && element.value === null) {\n values.push(null)\n continue\n }\n\n if (element.type === 'Identifier' && element.name === 'undefined') {\n values.push(undefined)\n continue\n }\n\n const elementValue = getStaticPrimitive(element)\n\n if (elementValue === undefined) {\n return null\n }\n\n values.push(elementValue)\n }\n\n return values\n}\n","import {type API, type ASTPath, type ImportDeclaration, type JSXOpeningElement} from 'jscodeshift'\n\ntype CommentableNode = {\n comments?: {type: string; value: string; leading?: boolean}[] | null\n}\n\n/**\n * Inserts a `UI-CODEMOD TODO` comment.\n * Returns whether the AST was updated.\n */\nexport function insertTodoWarning(\n j: API['jscodeshift'],\n path: ASTPath<JSXOpeningElement | ImportDeclaration>,\n warning: string,\n): boolean {\n let target: CommentableNode | null = null\n\n if (path.node.type === 'ImportDeclaration') {\n target = path.node\n } else if (path.parent?.node.type === 'JSXElement') {\n target = path.parent.node\n }\n\n if (!target) {\n return false\n }\n\n target.comments ??= []\n\n if (target.comments.some((comment) => comment.value.includes(warning))) {\n return false\n }\n\n target.comments.unshift(j.commentLine(` UI-CODEMOD TODO: ${warning}`, true))\n return true\n}\n","import type {API, Collection} from 'jscodeshift'\n\nimport type {BaseOptions} from '../types/BaseOptions'\nimport {getSplitImportSpecifiers} from './getSplitImportSpecifiers'\nimport {DEFAULT_UI_PACKAGE} from './transformImport'\n\n/**\n * Returns whether a component transform should run on this file, based on local\n * usage or a pending import rewrite.\n */\nexport function shouldTransformComponent(\n j: API['jscodeshift'],\n root: Collection,\n componentName: string,\n localNames: Set<string>,\n options?: BaseOptions,\n styledAliases?: Set<string>,\n): boolean {\n if (localNames.size > 0) {\n return true\n }\n\n if (styledAliases && styledAliases.size > 0) {\n return true\n }\n\n const fromPackage = options?.fromPackage ?? DEFAULT_UI_PACKAGE\n const toPackage = options?.toPackage ?? DEFAULT_UI_PACKAGE\n\n if (fromPackage === toPackage) {\n return false\n }\n\n return root.find(j.ImportDeclaration).some((path) => {\n const node = path.node\n\n if (node.source.value !== fromPackage) {\n return false\n }\n\n const {componentSpecs} = getSplitImportSpecifiers(node.specifiers, componentName)\n\n return componentSpecs.length > 0\n })\n}\n","import type {API, JSXAttribute, JSXSpreadAttribute} from 'jscodeshift'\n\nimport type {CompositeAttributeMapping} from '../types/AttributeMods'\nimport {getStaticAttributeExpression} from './getStaticAttributeExpression'\n\nexport function getCompositeAttrValue(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n mapping: CompositeAttributeMapping,\n) {\n let compositeAttrValue: string | null = null\n\n for (const compositeKey of Object.keys(mapping)) {\n const compositeMapping = mapping[compositeKey]\n\n if (!compositeMapping) {\n continue\n }\n\n let hasMatchingValues = true\n\n for (const propName of Object.keys(compositeMapping)) {\n const mappingValue = compositeMapping[propName]\n const attrValue = getStaticAttributeExpression(j, attrs, propName)\n\n if (mappingValue === undefined || attrValue !== mappingValue) {\n hasMatchingValues = false\n break\n }\n }\n\n if (hasMatchingValues) {\n compositeAttrValue = compositeKey\n break\n }\n }\n\n return compositeAttrValue\n}\n","import {type API} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\n\nexport function getMappingExpression(\n j: API['jscodeshift'],\n val: string | boolean | number | undefined,\n): AnyExpression {\n if (val === undefined) {\n return j.identifier('undefined')\n }\n\n if (typeof val === 'boolean') {\n return j.booleanLiteral(val)\n }\n\n if (typeof val === 'number') {\n return j.numericLiteral(val)\n }\n\n return j.stringLiteral(val)\n}\n","import type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMapping} from '../types/AttributeMods'\n\nexport function getMappingValue(mapping: AttributeMapping, expr: AnyExpression) {\n let key\n\n if (\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'StringLiteral' ||\n expr.type === 'Literal'\n ) {\n key = String(expr.value)\n }\n\n if (expr.type === 'TemplateLiteral') {\n const expressions = expr.expressions as unknown[]\n const quasis = expr.quasis as {value: {cooked: string | null}}[]\n\n if (expressions.length === 0 && quasis.length === 1) {\n key = quasis[0]?.value.cooked ?? null\n }\n }\n\n if (key) {\n if (Object.prototype.hasOwnProperty.call(mapping, key)) {\n return mapping[key]\n }\n\n const number = Number(key)\n\n if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number)) {\n return mapping[number]\n }\n }\n\n if (\n expr.type === 'BooleanLiteral' ||\n (expr.type === 'Literal' && typeof expr.value === 'boolean')\n ) {\n for (const val in mapping) {\n if (expr.value === mapping[val]) {\n return mapping[val]\n }\n }\n }\n\n return\n}\n","import {type API, type ArrayExpression} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMapping} from '../types/AttributeMods'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\n\nexport function getMappingArray(\n j: API['jscodeshift'],\n arr: AnyExpression,\n mapping: AttributeMapping,\n allowUndefined?: boolean,\n): ArrayExpression | null {\n if (arr.type !== 'ArrayExpression') {\n return null\n }\n\n const elements = arr.elements as (AnyExpression | null)[]\n const output: AnyExpression[] = []\n\n for (const el of elements) {\n if (el == null || el.type === 'SpreadElement') {\n return null\n }\n\n const mappingValue = getMappingValue(mapping, el)\n\n if (!mappingValue && !allowUndefined) {\n return null\n }\n\n output.push(getMappingExpression(j, mappingValue))\n }\n\n return j.arrayExpression(output as never[])\n}\n","import type {API, JSXAttribute} from 'jscodeshift'\n\nimport type {AnyExpression} from '../types/AnyExpression'\nimport type {AttributeMod} from '../types/AttributeMods'\nimport {getMappingArray} from './getMappingArray'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\n\nexport function getShorthandAttributes(\n j: API['jscodeshift'],\n expr: AnyExpression,\n mod: AttributeMod,\n) {\n const attributes: JSXAttribute[] = []\n\n if (!('props' in mod)) {\n return []\n }\n\n if (expr.type === 'ArrayExpression') {\n for (const prop of mod.props) {\n const styleArray = getMappingArray(j, expr, prop.mapping, true)\n\n if (!styleArray) {\n continue\n }\n\n attributes.push(\n j.jsxAttribute(j.jsxIdentifier(prop.name), j.jsxExpressionContainer(styleArray)),\n )\n }\n }\n\n for (const prop of mod.props) {\n const styleValue = getMappingValue(prop.mapping, expr)\n\n if (styleValue === undefined) {\n continue\n }\n\n if (typeof styleValue === 'string') {\n attributes.push(j.jsxAttribute(j.jsxIdentifier(prop.name), j.stringLiteral(styleValue)))\n } else {\n attributes.push(\n j.jsxAttribute(\n j.jsxIdentifier(prop.name),\n j.jsxExpressionContainer(getMappingExpression(j, styleValue) as never),\n ),\n )\n }\n }\n\n return attributes\n}\n","import {type API} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function getStyleExpression(j: API['jscodeshift'], expr: AnyExpression): AnyExpression {\n if (expr.type === 'Literal') {\n if (expr.value === null) {\n return j.literal(null)\n }\n\n if (typeof expr.value === 'boolean') {\n return j.booleanLiteral(expr.value)\n }\n\n if (typeof expr.value === 'number') {\n return j.numericLiteral(expr.value)\n }\n\n if (typeof expr.value === 'string') {\n return j.stringLiteral(expr.value)\n }\n }\n\n if (expr.type === 'BooleanLiteral') {\n return j.booleanLiteral(expr.value as boolean)\n }\n\n if (expr.type === 'NumericLiteral') {\n return j.numericLiteral(expr.value as number)\n }\n\n if (expr.type === 'StringLiteral') {\n return j.stringLiteral(expr.value as string)\n }\n\n return expr\n}\n","import {type AnyExpression} from '../types/AnyExpression'\n\nexport function isValidStyleType(expr: AnyExpression) {\n if (expr.type === 'TemplateLiteral') {\n const expressions = expr.expressions as unknown[]\n const quasis = expr.quasis as {value: {cooked: string | null}}[]\n return expressions.length === 0 && quasis.length === 1\n }\n\n if (\n expr.type === 'StringLiteral' ||\n expr.type === 'Literal' ||\n expr.type === 'NumericLiteral' ||\n expr.type === 'BooleanLiteral' ||\n expr.type === 'NullLiteral'\n ) {\n return true\n }\n\n return false\n}\n","import {type API, type JSXAttribute, type JSXSpreadAttribute} from 'jscodeshift'\n\nimport {type AnyExpression} from '../types/AnyExpression'\n\nexport function mergeStyle(\n j: API['jscodeshift'],\n attrs: (JSXAttribute | JSXSpreadAttribute)[],\n styleKey: string,\n styleExpression: AnyExpression,\n) {\n const styleProp = j.objectProperty(j.identifier(styleKey), styleExpression as never)\n\n const styleIndex = attrs.findIndex(\n (a): a is JSXAttribute =>\n a.type === 'JSXAttribute' && a.name.type === 'JSXIdentifier' && a.name.name === 'style',\n )\n\n if (styleIndex === -1) {\n attrs.push(\n j.jsxAttribute(\n j.jsxIdentifier('style'),\n j.jsxExpressionContainer(j.objectExpression([styleProp])),\n ),\n )\n\n return true\n }\n\n const styleAttr = attrs[styleIndex] as JSXAttribute\n\n if (styleAttr.value?.type !== 'JSXExpressionContainer') {\n return false\n }\n\n const expr = styleAttr.value.expression\n\n if (expr.type === 'ObjectExpression') {\n expr.properties = expr.properties.filter((prop) => {\n if (prop.type !== 'ObjectProperty' && prop.type !== 'Property') {\n return true\n }\n\n const key = prop.key\n\n const name =\n key.type === 'Identifier'\n ? key.name\n : key.type === 'StringLiteral' || key.type === 'Literal'\n ? String(key.value)\n : null\n\n return name !== styleKey\n })\n\n expr.properties.push(styleProp)\n return true\n }\n\n styleAttr.value = j.jsxExpressionContainer(\n j.objectExpression([j.spreadElement(expr as never), styleProp]),\n )\n\n return true\n}\n","import {type API, type ASTPath, type JSXOpeningElement} from 'jscodeshift'\n\nimport {type AttributeMods} from '../types/AttributeMods'\nimport {getAttribute} from './getAttribute'\nimport {getAttributeExpression} from './getAttributeExpression'\nimport {getCompositeAttrValue} from './getCompositeAttrValue'\nimport {getMappingArray} from './getMappingArray'\nimport {getMappingExpression} from './getMappingExpression'\nimport {getMappingValue} from './getMappingValue'\nimport {getShorthandAttributes} from './getShorthandAttributes'\nimport {getStyleExpression} from './getStyleExpression'\nimport {insertTodoWarning} from './insertTodoWarning'\nimport {isValidStyleType} from './isValidStyleType'\nimport {mergeStyle} from './mergeStyle'\n\n/**\n * Applies attribute migration rules to a JSX opening element.\n * Returns whether the AST was updated.\n */\nexport function transformAttributes(\n j: API['jscodeshift'],\n path: ASTPath<JSXOpeningElement>,\n mods: AttributeMods,\n todoWarning: string,\n): boolean {\n if (!path.node.attributes) {\n return false\n }\n\n let hasChanges = false\n const attrs = path.node.attributes\n const removeIdxs: number[] = []\n\n for (const [attrName, mod] of Object.entries(mods)) {\n if (mod?.type !== 'warn-missing') {\n continue\n }\n\n if (getAttribute(attrs, attrName)) {\n continue\n }\n\n if (insertTodoWarning(j, path, mod.warning || todoWarning)) {\n hasChanges = true\n }\n }\n\n for (let i = 0; i < attrs.length; i++) {\n const attr = attrs[i]\n\n if (!attr || attr.type !== 'JSXAttribute' || attr.name.type !== 'JSXIdentifier') {\n continue\n }\n\n const mod = mods[attr.name.name]\n const expr = getAttributeExpression(attr, j)\n\n if (!mod || !expr) {\n continue\n }\n\n if (mod.type === 'remove') {\n removeIdxs.push(i)\n }\n\n if (mod.type === 'warn-only') {\n if (insertTodoWarning(j, path, mod.warning || todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'rename-only') {\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n hasChanges = true\n }\n }\n\n if (mod.type === 'style-only') {\n if (!expr || !isValidStyleType(expr)) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const merged = mergeStyle(j, attrs, mod.style, getStyleExpression(j, expr))\n\n if (merged) {\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'style-mapped') {\n if (!expr || !isValidStyleType(expr)) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const styleValue = getMappingValue(mod.mapping, expr)\n\n if (styleValue === undefined) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const merged = mergeStyle(j, attrs, mod.style, getMappingExpression(j, styleValue))\n\n if (merged) {\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'shorthand-mapped') {\n if (expr.type === 'ConditionalExpression' || expr.type === 'Identifier') {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n const shorthandAttrs = getShorthandAttributes(j, expr, mod)\n\n if (shorthandAttrs.length) {\n attrs.splice(i + 1, 0, ...shorthandAttrs)\n removeIdxs.push(i)\n } else if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n }\n\n if (mod.type === 'composite') {\n const triggerName = attr.name.name\n const compositeValue = getCompositeAttrValue(j, attrs, mod.mapping)\n\n if (!compositeValue) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n }\n\n attr.value = j.stringLiteral(compositeValue)\n\n for (const attrName of Object.keys(mod.mapping[compositeValue] || {})) {\n if (attrName === triggerName) {\n continue\n }\n\n const otherAttr = getAttribute(attrs, attrName)\n\n if (otherAttr) {\n const k = attrs.indexOf(otherAttr)\n\n if (k !== -1) {\n removeIdxs.push(k)\n }\n }\n }\n\n hasChanges = true\n }\n\n if (mod.type === 'mapped-only' || mod.type === 'rename-mapped') {\n if (mod.type === 'rename-mapped') {\n if (attr.name.type === 'JSXIdentifier') {\n attr.name.name = mod.name\n }\n }\n\n if (expr.type === 'ConditionalExpression' || expr.type === 'Identifier') {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (expr.type === 'ArrayExpression') {\n const styleArray = getMappingArray(j, expr, mod.mapping)\n\n if (!styleArray) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (attr.value?.type === 'JSXExpressionContainer') {\n attr.value.expression = styleArray\n } else {\n attr.value = j.jsxExpressionContainer(styleArray)\n }\n\n hasChanges = true\n continue\n }\n\n const styleValue = getMappingValue(mod.mapping, expr)\n\n if (styleValue === undefined) {\n if (insertTodoWarning(j, path, todoWarning)) {\n hasChanges = true\n }\n\n continue\n }\n\n if (typeof styleValue === 'string') {\n attr.value = j.stringLiteral(styleValue)\n } else {\n attr.value = j.jsxExpressionContainer(getMappingExpression(j, styleValue) as never)\n }\n\n hasChanges = true\n }\n }\n\n const idxsToRemove = [...new Set(removeIdxs)].sort((a, b) => b - a)\n\n if (idxsToRemove.length > 0) {\n hasChanges = true\n\n for (const i of idxsToRemove) {\n attrs.splice(i, 1)\n }\n }\n\n return hasChanges\n}\n","import type {API, Collection, FileInfo} from 'jscodeshift'\n\nexport type TransformContext = {\n j: API['jscodeshift']\n root: Collection\n markChanged: () => void\n}\n\n/**\n * Runs a component transform on a file and only calls `toSource()` when\n * `markChanged()` was invoked. Returns `undefined` for no-op files.\n */\nexport function transformComponent(\n fileInfo: FileInfo,\n api: API,\n fn: (ctx: TransformContext) => void,\n): string | undefined {\n const j = api.jscodeshift\n const root = j(fileInfo.source)\n let hasChanges = false\n\n fn({\n j,\n root,\n markChanged: () => {\n hasChanges = true\n },\n })\n\n return hasChanges ? root.toSource() : undefined\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/ui-codemod",
3
- "version": "1.0.0-alpha.3",
3
+ "version": "1.0.0-alpha.4",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "ISC",
@@ -109,6 +109,18 @@ export const LAYOUT_MODS: AttributeMods = {
109
109
  none: 'auto',
110
110
  auto: 'auto',
111
111
  initial: 'auto',
112
+ 1: '0%',
113
+ 2: '0%',
114
+ 3: '0%',
115
+ 4: '0%',
116
+ 5: '0%',
117
+ 6: '0%',
118
+ 7: '0%',
119
+ 8: '0%',
120
+ 9: '0%',
121
+ 10: '0%',
122
+ 11: '0%',
123
+ 12: '0%',
112
124
  },
113
125
  },
114
126
  {
@@ -2,18 +2,6 @@ import type {AnyExpression} from '../types/AnyExpression'
2
2
  import type {AttributeMapping} from '../types/AttributeMods'
3
3
 
4
4
  export function getMappingValue(mapping: AttributeMapping, expr: AnyExpression) {
5
- let matchedVal
6
-
7
- for (const val in mapping) {
8
- if (expr.value === mapping[val]) {
9
- matchedVal = mapping[val]
10
- }
11
- }
12
-
13
- if (matchedVal) {
14
- return matchedVal
15
- }
16
-
17
5
  let key
18
6
 
19
7
  if (
@@ -34,18 +22,27 @@ export function getMappingValue(mapping: AttributeMapping, expr: AnyExpression)
34
22
  }
35
23
  }
36
24
 
37
- if (!key) {
38
- return
39
- }
25
+ if (key) {
26
+ if (Object.prototype.hasOwnProperty.call(mapping, key)) {
27
+ return mapping[key]
28
+ }
40
29
 
41
- if (Object.prototype.hasOwnProperty.call(mapping, key)) {
42
- return mapping[key]
43
- }
30
+ const number = Number(key)
44
31
 
45
- const number = Number(key)
32
+ if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number)) {
33
+ return mapping[number]
34
+ }
35
+ }
46
36
 
47
- if (!Number.isNaN(number) && Object.prototype.hasOwnProperty.call(mapping, number)) {
48
- return mapping[number]
37
+ if (
38
+ expr.type === 'BooleanLiteral' ||
39
+ (expr.type === 'Literal' && typeof expr.value === 'boolean')
40
+ ) {
41
+ for (const val in mapping) {
42
+ if (expr.value === mapping[val]) {
43
+ return mapping[val]
44
+ }
45
+ }
49
46
  }
50
47
 
51
48
  return
@@ -290,7 +290,7 @@ defineInlineTest(
290
290
  transform,
291
291
  {},
292
292
  `
293
- <div flex="1" />
293
+ <div flex={1} />
294
294
  `,
295
295
  `
296
296
  <div flexGrow={1} />
@@ -314,7 +314,7 @@ defineInlineTest(
314
314
  transform,
315
315
  {},
316
316
  `
317
- <div flex={["2", "none"]} />
317
+ <div flex={[2, "none"]} />
318
318
  `,
319
319
  `
320
320
  <div