@tamagui/codemod-flat-values 3.0.0-beta.922.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/convert.mjs +1 -1
- package/dist/convert.mjs.map +1 -1
- package/dist/expressions.mjs +1 -1
- package/dist/expressions.mjs.map +1 -1
- package/dist/grammar.mjs +7 -4
- package/dist/grammar.mjs.map +1 -1
- package/dist/index.mjs +335 -13
- package/dist/index.mjs.map +1 -1
- package/dist/provenance.mjs +10 -1
- package/dist/provenance.mjs.map +1 -1
- package/dist/report.mjs +16 -3
- package/dist/report.mjs.map +1 -1
- package/dist/transition.mjs +257 -0
- package/dist/transition.mjs.map +1 -0
- package/package.json +8 -8
- package/src/convert.ts +1 -1
- package/src/expressions.ts +1 -1
- package/src/grammar.ts +11 -4
- package/src/index.ts +478 -14
- package/src/provenance.ts +11 -0
- package/src/report.ts +36 -2
- package/src/transition.ts +415 -0
package/README.md
CHANGED
|
@@ -11,9 +11,28 @@ Run it from the root of the project you are migrating. Paths, the report and the
|
|
|
11
11
|
npx @tamagui/codemod-flat-values ./src # dry run
|
|
12
12
|
npx @tamagui/codemod-flat-values --json report.json ./src # machine readable
|
|
13
13
|
npx @tamagui/codemod-flat-values --write ./src # apply safe conversions
|
|
14
|
+
npx @tamagui/codemod-flat-values --source-semantics v2-pixels --write ./src
|
|
15
|
+
npx @tamagui/codemod-flat-values --source-semantics v2-pixels --line-height-only --write ./src
|
|
14
16
|
npx @tamagui/codemod-flat-values --help
|
|
15
17
|
```
|
|
16
18
|
|
|
19
|
+
The default `--source-semantics v3-ratios` describes current V3 source: numeric
|
|
20
|
+
Tamagui `lineHeight` values are ratios. Select `v2-pixels` when migrating V2
|
|
21
|
+
source. It changes every proven numeric Tamagui line height to an explicit px
|
|
22
|
+
string, so `lineHeight={1.5}` becomes `lineHeight="1.5px"` and a rerun makes no
|
|
23
|
+
further change. Numeric font configuration, raw React Native styles, and Restyle
|
|
24
|
+
styles retain their existing pixel contract and are not rewritten. A local React
|
|
25
|
+
wrapper that renders Tamagui JSX, including an imported local alias, is reported
|
|
26
|
+
as `ambiguous-wrapper-line-height` and never rewritten: the wrapper may transform
|
|
27
|
+
units. Already-migrated strings stay authored.
|
|
28
|
+
|
|
29
|
+
The migration follows Tamagui import and factory provenance through JSX,
|
|
30
|
+
`styled()` configs and variants, `styled.dynamic`, component `style()` and
|
|
31
|
+
`resolve()` calls, inline style objects, and inline style arrays. It reports a
|
|
32
|
+
shared style object rather than changing it when that object may also reach a raw
|
|
33
|
+
native or Restyle host. Untyped dynamic values and extracted token `.val` values
|
|
34
|
+
are also reported because their units cannot be recovered from the expression.
|
|
35
|
+
|
|
17
36
|
Inside this repository the same two runs over the pinned corpus are
|
|
18
37
|
`bun run dry-run` and `bun run write` from `code/core/codemod-flat-values`. That
|
|
19
38
|
corpus is `code/kitchen-sink/src/usecases` plus the canonical `Button.tsx` skin,
|
|
@@ -214,6 +233,7 @@ A flag means a human decides. Every code the tool can emit:
|
|
|
214
233
|
| `functional-variant-type-bodies` | different type-key bodies cannot be combined into safe `typeof` branches |
|
|
215
234
|
| `functional-variant-unsupported`, `functional-variant-unsupported-extras`, `functional-variant-styled-import` | the callback, env access, or `styled` import does not have a provable automatic rewrite |
|
|
216
235
|
| `emitted-program-mismatch`, `emitted-value-invalid` | the printer failed its own re-parse; this is a codemod bug |
|
|
236
|
+
| `ambiguous-wrapper-line-height` | a local React wrapper renders Tamagui JSX, so numeric `lineHeight` / `lh` or an inline style may still be V2 pixels, but the wrapper may transform units |
|
|
217
237
|
| plus any code from the shared converter | `unsupported-legacy-value`, `legacy-condition-object`, `ambiguous-legacy-group`, `legacy-composite-shorthand` |
|
|
218
238
|
|
|
219
239
|
## Configuration warning codes
|
package/dist/convert.mjs
CHANGED
|
@@ -118,7 +118,7 @@ function legacyTokenWarnings(prop, values) {
|
|
|
118
118
|
const formatted = [...names].sort().map((name) => `\`${name}\``).join(", ");
|
|
119
119
|
warnings.push({
|
|
120
120
|
code: "legacy-palette-token",
|
|
121
|
-
detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive
|
|
121
|
+
detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive color-N value`
|
|
122
122
|
});
|
|
123
123
|
return warnings;
|
|
124
124
|
}
|
package/dist/convert.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","names":[],"sources":["convert.js"],"sourcesContent":["import {\n Node,\n SyntaxKind\n} from \"ts-morph\";\nimport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n} from \"./expressions\";\nimport {\n assessFlatConversion,\n convertLegacyConditionProp,\n expandToLonghands,\n flatStringValue,\n mergeProgramValues,\n parseValue,\n printProgram,\n resolveProp,\n sharedPayload,\n shorthands,\n styleProps,\n tokenVariantProps,\n unitSuffix\n} from \"./grammar\";\nimport { isLegacyConditionName, resolveLegacyName } from \"./legacyNames\";\nimport { classifyStructuredNativeValue } from \"./structuredNative\";\nfunction assessmentVerdict(assessments) {\n if (assessments.some((assessment) => assessment.verdict === \"ineligible\")) {\n return \"ineligible\";\n }\n if (assessments.some((assessment) => assessment.verdict === \"needs-relocation\")) {\n return \"needs-relocation\";\n }\n return assessments.length ? \"unknown-host\" : \"clean\";\n}\nfunction createSite(kind, registry, containers, targets, host) {\n return {\n kind,\n registry,\n containers,\n targets,\n host,\n members: [],\n comments: /* @__PURE__ */ new Map(),\n extras: [],\n respelled: [],\n warnings: [],\n flags: [],\n inventory: [],\n pending: [],\n assessments: [],\n notes: [],\n legacy: false,\n index: 0\n };\n}\nfunction assessProgram(site, property, modifiers) {\n const targetProperty = resolveProp(property);\n const assessment = assessFlatConversion(\n {\n property: targetProperty,\n modifiers,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict !== \"clean\") addAssessment(site, targetProperty, assessment);\n return assessment.verdict !== \"ineligible\";\n}\nfunction addAssessment(site, property, assessment) {\n if (assessment.verdict === \"clean\") return;\n if (!site.assessments.some(\n (finding) => finding.property === property && finding.verdict === assessment.verdict && JSON.stringify(finding.reasons) === JSON.stringify(assessment.reasons)\n )) {\n site.assessments.push({\n property,\n verdict: assessment.verdict,\n reasons: assessment.reasons\n });\n }\n}\nfunction legacyKeysInSpread(expression) {\n const names = /* @__PURE__ */ new Set();\n for (const object of expression.getDescendantsOfKind(\n SyntaxKind.ObjectLiteralExpression\n )) {\n for (const property of object.getProperties()) {\n if (!Node.isPropertyAssignment(property)) continue;\n const name = propertyName(property.getNameNode());\n if (name !== null && isLegacyConditionName(name)) names.add(name);\n }\n }\n return [...names];\n}\nfunction pushSpread(site, expression, text) {\n const keys = legacyKeysInSpread(expression);\n if (keys.length) {\n site.legacy = true;\n addFlag(\n site.flags,\n \"legacy-condition-in-spread\",\n `\"${compact(text)}\" is not an inline object literal, so its ${keys.map((key) => `\"${key}\"`).join(\", \")} ${keys.length === 1 ? \"entry stays\" : \"entries stay\"} authored`\n );\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text,\n legacy: keys.length > 0\n });\n}\nfunction converted(site, report) {\n return report.programs.length > 0 || site.extras.length > 0 || site.members.some(\n (member) => member.type === \"authored\" && member.activated || member.type === \"legacy\" && !member.failed\n );\n}\nfunction legacyLeft(site) {\n return site.members.filter(\n (member) => member.type === \"legacy\" && member.failed || member.type === \"spread\" && member.legacy\n ).length;\n}\nfunction isConvertedName(name) {\n return name === \"group\" || styleProps.has(name) || tokenVariantProps.has(name) || isLegacyConditionName(name);\n}\nfunction addFlag(list, code, detail) {\n if (!list.some((flag) => flag.code === code && flag.detail === detail)) {\n list.push({ code, detail });\n }\n}\nfunction addNote(site, note) {\n if (!site.notes.includes(note)) site.notes.push(note);\n}\nconst legacyPaletteStepPattern = /(?:^|[^\\w-])\\$?((?:gray|mauve|slate|sage|olive|sand|tomato|red|ruby|crimson|pink|plum|purple|violet|iris|indigo|blue|cyan|teal|jade|green|grass|bronze|gold|brown|orange|amber|yellow|lime|mint|sky)(?:1[0-2]|[1-9]))(?![\\w-])/g;\nconst legacyTrueTokenPattern = /(?:^|[^\\w-])\\$true(?![\\w-])/;\nfunction legacyTokenWarnings(prop, values) {\n const warnings = [];\n if (values.some((value) => legacyTrueTokenPattern.test(value))) {\n warnings.push({\n code: \"legacy-true-token\",\n detail: `${prop} spelled the \\`$true\\` alias, written as \\`4\\` because the default config aliased it there; confirm the app's tokens agree`\n });\n }\n const names = /* @__PURE__ */ new Set();\n for (const value of values) {\n legacyPaletteStepPattern.lastIndex = 0;\n for (const match of value.matchAll(legacyPaletteStepPattern)) names.add(match[1]);\n }\n if (!names.size) return warnings;\n const formatted = [...names].sort().map((name) => `\\`${name}\\``).join(\", \");\n warnings.push({\n code: \"legacy-palette-token\",\n detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive colorN value`\n });\n return warnings;\n}\nconst empty = {\n payload: null,\n text: null,\n dynamic: false,\n problem: null,\n warnings: [],\n blocked: null,\n inventory: null\n};\nfunction interpolate(prop, text, kind, registry) {\n return `\\${${text}}${kind === \"number\" ? unitSuffix(resolveProp(prop), registry) : \"\"}`;\n}\nfunction classifyStatic(prop, value, registry) {\n const probe = sharedPayload(prop, value, registry);\n const error = probe.errors[0];\n if (error || probe.payload === null) {\n const flag = {\n code: error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${error?.message ?? `\"${String(value)}\" has no flat spelling`}`\n };\n return { ...empty, problem: flag, blocked: flag };\n }\n return { ...empty, payload: probe.payload };\n}\nfunction reparsesAsBase(value, registry) {\n const parsed = parseValue(value, registry);\n return parsed.ok && parsed.value.clauses.length === 0 && parsed.value.base === value.trim();\n}\nfunction classifyDynamic(prop, expression, registry) {\n const current = unwrapExpression(expression);\n const source = compact(current.getText());\n const structured = classifyStructuredNativeValue(\n resolveProp(prop),\n current,\n source,\n registry\n );\n if (structured) {\n return {\n ...empty,\n payload: structured.payload,\n blocked: structured.blocked\n };\n }\n const tree = literalTree(current, registry);\n if (tree && tree.error) {\n const flag2 = {\n code: tree.error.code,\n detail: `${prop}: ${tree.error.message}`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (tree && tree.kind !== \"nullish\") {\n const rewrittenTokenText = /\\$(?=[\\w-])/.test(source) && tree.text !== source ? tree.text : null;\n return {\n ...empty,\n payload: interpolate(prop, tree.text, tree.kind, registry),\n text: rewrittenTokenText,\n dynamic: true,\n warnings: legacyTokenWarnings(prop, tree.strings)\n };\n }\n if (tree) {\n const flag2 = {\n code: \"empty-style-value\",\n detail: `${prop} value \"${source}\" is always nullish and cannot join a program`\n };\n return { ...empty, blocked: flag2 };\n }\n const runtime = runtimeType(current);\n if (runtime.kind === \"number\") {\n return {\n ...empty,\n payload: interpolate(prop, source, \"number\", registry),\n dynamic: true\n };\n }\n if (runtime.kind === \"string\") {\n const tokens = runtime.literals?.filter((literal) => literal.startsWith(\"$\"));\n if (tokens?.length) {\n const flag2 = {\n code: \"legacy-token-constant\",\n detail: `${prop} value \"${source}\" resolves to legacy token ${tokens.map((token) => `\"${token}\"`).join(\", \")}; migrate the constant it comes from`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (runtime.literals === null) {\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true,\n inventory: {\n code: \"dynamic-string-value\",\n detail: `${prop} value \"${source}\" is an open string; confirm it never holds a legacy \"$token\" spelling`\n }\n };\n }\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true\n };\n }\n const flag = {\n code: \"unprovable-dynamic-value\",\n detail: `${prop} value \"${source}\" has no provable number or string type, so it cannot fold into a program`\n };\n return { ...empty, blocked: flag };\n}\nfunction pushBase(site, prop, text, value, literalString) {\n const index = site.index++;\n if (literalString !== null) {\n for (const warning of legacyTokenWarnings(prop, [literalString])) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (literalString.includes(\"$\")) {\n site.legacy = true;\n const allowed2 = assessProgram(site, prop, []);\n const flat = flatStringValue(literalString, site.registry);\n const problem = flat.text === null ? {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${flat.error?.message ?? `${JSON.stringify(literalString)} has no flat spelling`}`\n } : !reparsesAsBase(flat.text, site.registry) ? {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(flat.text)} does not read back as one flat base value`\n } : null;\n if (problem !== null) addFlag(site.flags, problem.code, problem.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed2 && problem === null ? flat.text : null,\n dynamic: false,\n blocked: problem,\n token: allowed2,\n activated: false\n });\n return;\n }\n if (!reparsesAsBase(literalString, site.registry)) {\n const flag = {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(literalString)} does not read back as one flat base value`\n };\n addFlag(site.flags, flag.code, flag.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: flag,\n token: false,\n activated: false\n });\n return;\n }\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: literalString,\n dynamic: false,\n blocked: null,\n token: false,\n activated: false\n });\n return;\n }\n const number = value ? numericValue(value) : null;\n if (number !== null) {\n const classified2 = classifyStatic(prop, number, site.registry);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: classified2.payload,\n dynamic: false,\n blocked: classified2.blocked,\n token: false,\n activated: false\n });\n return;\n }\n const kind = value?.getKind();\n if (value === null || kind === SyntaxKind.TrueKeyword || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.NullKeyword) {\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: {\n code: \"non-css-style-value\",\n detail: `${prop} value \"${compact(text)}\" is not a CSS value and cannot join a program`\n },\n token: false,\n activated: false\n });\n return;\n }\n const classified = classifyDynamic(prop, value, site.registry);\n if (classified.problem) {\n site.legacy = true;\n addFlag(site.flags, classified.problem.code, classified.problem.detail);\n }\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (classified.inventory) {\n addFlag(site.inventory, classified.inventory.code, classified.inventory.detail);\n }\n if (classified.text !== null) site.legacy = true;\n const allowed = classified.text === null || assessProgram(site, prop, []);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed ? classified.payload : null,\n dynamic: classified.dynamic,\n blocked: classified.blocked,\n token: allowed && classified.text !== null,\n activated: false\n });\n}\nconst sentinelMark = \"\u0001\";\nfunction evaluateLegacyObject(object, rootPath) {\n const leaves = [];\n const visit = (current, currentPath) => {\n const value = {};\n for (const property of current.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n return {\n value: null,\n fatal: `spread \"${compact(property.getText())}\" hides legacy condition entries`\n };\n }\n if (!Node.isPropertyAssignment(property)) {\n return {\n value: null,\n fatal: `property \"${compact(property.getText())}\" is not a static assignment`\n };\n }\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n return {\n value: null,\n fatal: `computed property \"${compact(nameNode.getText())}\" hides the affected style property`\n };\n }\n const name = propertyName(nameNode);\n if (name === null) {\n return {\n value: null,\n fatal: `property name \"${compact(nameNode.getText())}\" is not statically known`\n };\n }\n const path = `${currentPath}.${name}`;\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (Node.isObjectLiteralExpression(initializer)) {\n const nested = visit(initializer, path);\n if (nested.fatal) return nested;\n value[name] = nested.value;\n continue;\n }\n const leaf = staticLeafValue(initializer);\n if (leaf) {\n value[name] = leaf.value;\n continue;\n }\n value[name] = `${sentinelMark}${leaves.length}${sentinelMark}`;\n leaves.push({ path, prop: name, expression: initializer });\n }\n return { value, fatal: null };\n };\n const result = visit(object, rootPath);\n return { ...result, leaves };\n}\nfunction conditionProperties(value) {\n const properties = /* @__PURE__ */ new Set();\n const visit = (object) => {\n for (const key in object) {\n const child = object[key];\n if (child !== null && typeof child === \"object\" && isLegacyConditionName(key)) {\n visit(child);\n continue;\n }\n if (!styleProps.has(key)) continue;\n for (const property of expandToLonghands(key, shorthands)) properties.add(property);\n }\n };\n visit(value);\n return properties;\n}\nfunction pushLegacy(site, name, text, initializer, node) {\n const index = site.index++;\n site.legacy = true;\n const keep = (properties2) => {\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions: [],\n properties: properties2,\n failed: true\n });\n };\n if (initializer === null || !Node.isObjectLiteralExpression(initializer)) {\n addFlag(\n site.flags,\n \"dynamic-legacy-condition\",\n `\"${name}\" is not an inline object literal, so its entries are not statically known`\n );\n keep(null);\n return;\n }\n const evaluated = evaluateLegacyObject(initializer, name);\n if (evaluated.fatal || evaluated.value === null) {\n addFlag(site.flags, \"dynamic-legacy-condition\", evaluated.fatal ?? \"unresolved\");\n keep(null);\n return;\n }\n const properties = conditionProperties(evaluated.value);\n const eligibilityStack = [{ object: evaluated.value, path: name }];\n let hasRejectedProperty = false;\n while (eligibilityStack.length > 0) {\n const current = eligibilityStack.pop();\n for (const prop in current.object) {\n const value = current.object[prop];\n const targetProp = resolveProp(prop);\n if (styleProps.has(targetProp) && !isLegacyConditionName(prop)) {\n const assessment = assessFlatConversion(\n {\n property: targetProp,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict === \"ineligible\") {\n addAssessment(site, targetProp, assessment);\n hasRejectedProperty = true;\n }\n continue;\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value) && isLegacyConditionName(prop)) {\n eligibilityStack.push({\n object: value,\n path: `${current.path}.${prop}`\n });\n }\n }\n }\n if (hasRejectedProperty) {\n keep(properties);\n return;\n }\n const unresolved = site.containers.unresolved.get(node);\n if (unresolved !== void 0) {\n addFlag(site.flags, unresolved.code, unresolved.detail);\n keep(properties);\n return;\n }\n const resolution = resolveLegacyName(name, site.registry);\n if (!resolution.ok) {\n addFlag(site.flags, resolution.code, resolution.message);\n keep(properties);\n return;\n }\n const payloads = /* @__PURE__ */ new Map();\n let failed = false;\n for (let index2 = 0; index2 < evaluated.leaves.length; index2++) {\n const leaf = evaluated.leaves[index2];\n const classified = classifyDynamic(leaf.prop, leaf.expression, site.registry);\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, `${leaf.path}: ${warning.detail}`);\n }\n if (classified.payload === null) {\n const flag = classified.problem ?? classified.blocked;\n addFlag(\n site.flags,\n flag?.code ?? \"dynamic-condition-value\",\n `${leaf.path}: ${flag?.detail ?? \"the value is not statically known\"}`\n );\n failed = true;\n continue;\n }\n payloads.set(`${sentinelMark}${index2}${sentinelMark}`, classified.payload);\n }\n if (failed) {\n keep(properties);\n return;\n }\n const { canonical, replaceRoot } = resolution.resolved;\n const converted2 = convertLegacyConditionProp(canonical, evaluated.value, {\n registry: site.registry\n });\n if (converted2 === null) {\n addFlag(\n site.flags,\n \"unknown-legacy-condition\",\n `\"${name}\" is not a registered legacy condition spelling`\n );\n keep(properties);\n return;\n }\n for (const error of converted2.errors) {\n const path = error.path.startsWith(canonical) ? `${name}${error.path.slice(canonical.length)}` : error.path;\n addFlag(site.flags, error.code, `${path}: ${error.message}`);\n failed = true;\n }\n const contributions = [];\n for (const contribution of converted2.contributions) {\n if (!styleProps.has(contribution.prop)) {\n addFlag(\n site.flags,\n \"non-style-condition-entry\",\n `${name}.${contribution.prop} is not a style property, so a flat value cannot carry it`\n );\n failed = true;\n continue;\n }\n const modifiers = replaceRoot ? [...replaceRoot, ...contribution.clause.modifiers.slice(1)] : contribution.clause.modifiers;\n const dynamicPayload = payloads.get(contribution.clause.payload);\n contributions.push({\n prop: contribution.prop,\n clause: {\n modifiers,\n payload: dynamicPayload ?? contribution.clause.payload\n },\n dynamic: dynamicPayload !== void 0\n });\n if (!assessProgram(site, contribution.prop, modifiers)) failed = true;\n }\n if (failed) {\n keep(properties);\n return;\n }\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions,\n properties,\n failed: false\n });\n}\nfunction activationName(prop) {\n return resolveProp(prop);\n}\nconst noProperties = /* @__PURE__ */ new Set();\nconst legacyStatePriorities = Object.freeze({\n hover: 2,\n press: 3,\n active: 3,\n focus: 4,\n \"focus-visible\": 4,\n \"focus-within\": 4,\n enter: 4,\n disabled: 5,\n exit: 5\n});\nfunction legacyStatePriority(modifiers) {\n let priority = null;\n for (const modifier of modifiers) {\n const candidate = legacyStatePriorities[modifier];\n if (candidate !== void 0 && (priority === null || candidate > priority)) {\n priority = candidate;\n }\n }\n return priority;\n}\nfunction orderedEntries(site) {\n const ordered = [];\n for (const member of site.members) {\n if (member.type === \"authored\") {\n if (!member.activated || member.payload === null) continue;\n ordered.push({\n prop: member.prop,\n value: { base: member.payload, clauses: [] },\n dynamic: member.dynamic,\n index: member.index,\n base: true,\n from: null,\n legacyStatePriority: null\n });\n continue;\n }\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n ordered.push({\n prop: contribution.prop,\n value: { base: null, clauses: [contribution.clause] },\n dynamic: contribution.dynamic,\n index: member.index,\n base: false,\n from: member,\n legacyStatePriority: legacyStatePriority(contribution.clause.modifiers)\n });\n }\n }\n const ranked = ordered.filter((entry) => entry.legacyStatePriority !== null).sort(\n (left, right) => left.legacyStatePriority - right.legacyStatePriority || left.index - right.index\n );\n if (ranked.length < 2) return ordered;\n let rankedIndex = 0;\n return ordered.map(\n (entry) => entry.legacyStatePriority === null ? entry : ranked[rankedIndex++]\n );\n}\nfunction buildSlots(ordered) {\n const slots = /* @__PURE__ */ new Map();\n for (const entry of ordered) {\n for (const property of expandToLonghands(entry.prop, shorthands)) {\n const previous = slots.get(property);\n const value = previous ? mergeProgramValues(previous.value, entry.value) : entry.value;\n slots.delete(property);\n slots.set(property, {\n property,\n sourceProp: entry.prop,\n value,\n anchor: previous ? Math.min(previous.anchor, entry.index) : entry.index,\n last: previous ? Math.max(previous.last, entry.index) : entry.index,\n dynamic: (previous?.dynamic ?? false) || entry.dynamic\n });\n }\n }\n return slots;\n}\nfunction barriers(site) {\n const list = [];\n for (const member of site.members) {\n if (member.type === \"spread\") {\n list.push({ index: member.index, source: member.text, bases: null, clauses: null });\n continue;\n }\n if (member.type === \"authored\" && !member.activated) {\n list.push({\n index: member.index,\n source: member.text,\n bases: new Set(expandToLonghands(member.prop, shorthands)),\n clauses: noProperties\n });\n continue;\n }\n if (member.type === \"legacy\" && member.failed) {\n list.push({\n index: member.index,\n source: member.name,\n bases: noProperties,\n clauses: member.properties\n });\n }\n }\n return list;\n}\nfunction resolveBarriers(site, ordered, slots) {\n let changed = false;\n for (const slot of slots.values()) {\n const contributions = ordered.filter(\n (entry) => expandToLonghands(entry.prop, shorthands).includes(slot.property)\n );\n for (const barrier of barriers(site)) {\n if (barrier.index <= slot.anchor || barrier.index >= slot.last) continue;\n if (barrier.clauses === null || barrier.clauses.has(slot.property)) {\n for (const entry of contributions) {\n if (entry.base || entry.index < barrier.index || !entry.from) continue;\n addFlag(\n site.flags,\n \"condition-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so \"${entry.from.name}\" stays authored instead of merging`\n );\n entry.from.failed = true;\n changed = true;\n }\n }\n if (barrier.bases === null || barrier.bases.has(slot.property)) {\n for (const entry of contributions) {\n if (!entry.base || entry.index < barrier.index) continue;\n const authored = site.members.find(\n (member) => member.type === \"authored\" && member.index === entry.index && member.activated\n );\n if (authored && authored.type === \"authored\") {\n authored.payload = null;\n authored.blocked = {\n code: \"base-order-not-preservable\",\n detail: `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so this base cannot move`\n };\n changed = true;\n continue;\n }\n addFlag(\n site.flags,\n \"base-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so the merged base may win where it did not before`\n );\n }\n }\n }\n }\n return changed;\n}\nfunction assemble(site) {\n let slots = /* @__PURE__ */ new Map();\n for (; ; ) {\n let changed = false;\n const contributed = /* @__PURE__ */ new Set();\n for (const member of site.members) {\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n contributed.add(activationName(contribution.prop));\n }\n }\n for (const member of site.members) {\n if (member.type !== \"authored\") continue;\n const name = activationName(member.prop);\n member.activated = member.token && member.payload !== null || contributed.has(name);\n if (!member.activated || member.payload !== null) continue;\n const blocked = member.blocked;\n addFlag(\n site.flags,\n blocked?.code ?? \"unprovable-dynamic-value\",\n `a legacy condition targets \"${member.prop}\": ${blocked?.detail ?? `its base value \"${compact(member.text)}\" cannot join a program`}`\n );\n member.activated = false;\n for (const other of site.members) {\n if (other.type !== \"legacy\" || other.failed) continue;\n if (other.contributions.some((one) => activationName(one.prop) === name)) {\n other.failed = true;\n changed = true;\n }\n }\n }\n if (changed) continue;\n const ordered = orderedEntries(site);\n slots = buildSlots(ordered);\n if (!resolveBarriers(site, ordered, slots)) break;\n }\n const entries = [];\n for (const member of site.members) {\n if (member.type === \"authored\" && member.activated) continue;\n if (member.type === \"legacy\" && !member.failed) continue;\n entries.push({ index: member.index, text: member.text });\n }\n const printed = printSlots(site, slots);\n entries.push(...printed.output);\n entries.push(...site.extras);\n entries.sort((left, right) => left.index - right.index);\n return { entries, programs: printed.programs };\n}\nfunction printSlots(site, slots) {\n const printed = /* @__PURE__ */ new Set();\n const output = [];\n const programs = [];\n const outputCommentRanges = [];\n for (const [property, slot] of slots) {\n if (printed.has(property)) continue;\n const serialized = printProgram(slot.value);\n const expansion = expandToLonghands(slot.sourceProp, shorthands);\n const collapses = expansion.length > 0 && expansion.every((expanded) => {\n const candidate = slots.get(expanded);\n return candidate !== void 0 && candidate.sourceProp === slot.sourceProp && candidate.anchor === slot.anchor && candidate.dynamic === slot.dynamic && printProgram(candidate.value) === serialized;\n });\n const name = collapses ? slot.sourceProp : property;\n if (collapses) for (const expanded of expansion) printed.add(expanded);\n else printed.add(property);\n const value = slot.dynamic ? `\\`${serialized}\\`` : JSON.stringify(serialized);\n programs.push({ name, value: serialized, dynamic: slot.dynamic });\n const propertyText = site.kind === \"styled\" ? `${name}: ${value}` : `${name}=${slot.dynamic ? `{${value}}` : value}`;\n output.push({\n index: slot.anchor,\n text: propertyText\n });\n outputCommentRanges.push({\n outputIndex: output.length - 1,\n first: slot.anchor,\n last: slot.last\n });\n }\n verify(\n site,\n slots,\n [...output].sort((left, right) => left.index - right.index)\n );\n if (site.kind === \"styled\") {\n const commentedIndexes = /* @__PURE__ */ new Set();\n for (const range of outputCommentRanges) {\n const comments = [];\n for (const [index, texts] of site.comments) {\n if (index < range.first || index > range.last || commentedIndexes.has(index)) {\n continue;\n }\n comments.push(...texts);\n commentedIndexes.add(index);\n }\n if (comments.length) {\n output[range.outputIndex].text = `${comments.join(\"\\n\")}\n${output[range.outputIndex].text}`;\n }\n }\n }\n return { output, programs };\n}\nfunction sanitize(text) {\n let result = \"\";\n for (let index = 0; index < text.length; index++) {\n if (text[index] !== \"$\" || text[index + 1] !== \"{\") {\n result += text[index];\n continue;\n }\n let depth = 0;\n let end = index + 1;\n for (; end < text.length; end++) {\n if (text[end] === \"{\") depth++;\n else if (text[end] === \"}\" && --depth === 0) break;\n }\n result += \"zz\";\n index = end;\n }\n return result;\n}\nfunction verify(site, slots, output) {\n const separator = site.kind === \"styled\" ? \": \" : \"=\";\n const reparsed = /* @__PURE__ */ new Map();\n for (const entry of output) {\n const split = entry.text.indexOf(separator);\n const prop = entry.text.slice(0, split);\n let raw = entry.text.slice(split + separator.length);\n if (raw.startsWith(\"{\")) raw = raw.slice(1, -1);\n const text = sanitize(raw.slice(1, -1));\n const parsed = parseValue(text, site.registry);\n if (!parsed.ok) {\n addFlag(\n site.flags,\n \"emitted-value-invalid\",\n `\"${prop}=${text}\" does not parse: ${parsed.errors.map((error) => error.message).join(\"; \")}`\n );\n return;\n }\n for (const property of expandToLonghands(prop, shorthands)) {\n const previous = reparsed.get(property);\n reparsed.set(\n property,\n previous ? mergeProgramValues(previous, parsed.value) : parsed.value\n );\n }\n }\n for (const [property, slot] of slots) {\n const actual = reparsed.get(property);\n const expected = sanitize(printProgram(slot.value));\n if (actual === void 0 || sanitize(printProgram(actual)) !== expected) {\n addFlag(\n site.flags,\n \"emitted-program-mismatch\",\n `\"${property}\" reads back as \"${actual ? sanitize(printProgram(actual)) : \"(missing)\"}\" instead of \"${expected}\"`\n );\n }\n }\n}\nfunction propertyName(node) {\n if (Node.isIdentifier(node) || Node.isStringLiteral(node) || Node.isNumericLiteral(node)) {\n return node.getText().replace(/^['\"]|['\"]$/g, \"\");\n }\n return null;\n}\nfunction jsxAttributeName(attribute) {\n const name = attribute.getNameNode();\n return Node.isIdentifier(name) ? name.getText() : null;\n}\nfunction jsxLiteralString(attribute) {\n const initializer = attribute.getInitializer();\n if (Node.isStringLiteral(initializer)) return initializer.getLiteralValue();\n const expression = jsxExpression(attribute);\n if (expression && (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression))) {\n return expression.getLiteralValue();\n }\n return null;\n}\nfunction jsxExpression(attribute) {\n const initializer = attribute.getInitializer();\n if (!Node.isJsxExpression(initializer)) return null;\n const expression = initializer.getExpression();\n return expression ? unwrapExpression(expression) : null;\n}\nfunction isConvertedJsxAttribute(attribute) {\n if (Node.isJsxSpreadAttribute(attribute)) return true;\n if (!Node.isJsxAttribute(attribute)) return false;\n const name = jsxAttributeName(attribute);\n return !!name && isConvertedName(name);\n}\nfunction rewriteJsxSite(opening, entries) {\n const attributes = opening.getAttributes();\n const rendered = [];\n let inserted = false;\n for (const attribute of attributes) {\n if (isConvertedJsxAttribute(attribute)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(attribute.getText());\n }\n }\n const source = opening.getText();\n const start = opening.getStart();\n const first = attributes[0];\n const last = attributes[attributes.length - 1];\n const prefix = source.slice(0, first.getStart() - start);\n const suffix = source.slice(last.getEnd() - start);\n const authoredMultiline = prefix.includes(\"\\n\") || source.slice(first.getStart() - start, last.getEnd() - start).includes(\"\\n\");\n opening.replaceWithText(\n authoredMultiline ? `${prefix.replace(/[ \\t]+$/, \"\")}${rendered.map((text) => ` ${text}`).join(\"\\n\")}${suffix.replace(/\\n[ \\t]+/, \"\\n\")}` : `${prefix}${rendered.join(\" \")}${suffix}`\n );\n}\nfunction containerExtras(site, declaration, index) {\n const target = site.containers.targets.get(declaration);\n if (target === void 0) return;\n const name = target.named && target.group !== \"\" ? target.group : null;\n const text = site.kind === \"styled\" ? name === null ? \"container: true\" : `container: ${JSON.stringify(name)}` : name === null ? \"container\" : `container=${JSON.stringify(name)}`;\n site.legacy = true;\n site.extras.push({ index, text });\n if (target.flag !== null) addFlag(site.flags, target.flag.code, target.flag.detail);\n addNote(\n site,\n `a descendant uses a legacy container-size condition on this group, so it declares a query container`\n );\n}\nfunction convertJsxSite(opening, registry, containers, targets, host, write = false) {\n const site = createSite(\"jsx\", registry, containers, targets, host);\n const before = [];\n for (const attribute of opening.getAttributes()) {\n if (Node.isJsxSpreadAttribute(attribute)) {\n const expression = unwrapExpression(attribute.getExpression());\n if (Node.isObjectLiteralExpression(expression)) {\n before.push(compact(attribute.getText()));\n for (const property of expression.getProperties()) {\n if (Node.isPropertyAssignment(property)) {\n const name2 = propertyName(property.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(\n site,\n name2,\n property,\n `${name2}={${property.getInitializerOrThrow().getText()}}`\n );\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: `${name2}={${property.getInitializerOrThrow().getText()}}`\n });\n }\n continue;\n }\n }\n pushSpread(\n site,\n property,\n Node.isSpreadAssignment(property) ? `{${property.getText()}}` : `{...{ ${property.getText()} }}`\n );\n }\n continue;\n }\n before.push(compact(attribute.getText()));\n pushSpread(site, expression, attribute.getText());\n continue;\n }\n const name = jsxAttributeName(attribute);\n if (!name) continue;\n const text = compact(attribute.getText());\n if (name === \"group\") {\n before.push(text);\n containerExtras(site, attribute, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n continue;\n }\n if (isLegacyConditionName(name)) {\n before.push(text);\n pushLegacy(site, name, text, jsxExpression(attribute), attribute);\n continue;\n }\n if (tokenVariantProps.has(name)) {\n if (pushTokenVariant(site, name, attribute, text)) before.push(text);\n continue;\n }\n if (!styleProps.has(name)) continue;\n before.push(text);\n const literal = jsxLiteralString(attribute);\n pushBase(\n site,\n name,\n text,\n literal === null ? jsxExpression(attribute) : null,\n literal\n );\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = opening.getSourceFile();\n const report = {\n kind: \"jsx\",\n label: `<${opening.getTagNameNode().getText()}>`,\n line: sourceFile.getLineAndColumnAtPos(opening.getStart()).line,\n before: before.join(\" \"),\n after: entries.map((entry) => entry.text).join(\" \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: legacyLeft(site)\n };\n if (write && converted(site, report) && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteJsxSite(opening, entries);\n }\n return report;\n}\nfunction pushStyledProperty(site, name, property, authoredText) {\n const comments = allCommentTexts(property);\n if (comments.length) site.comments.set(site.index, comments);\n const text = authoredText ?? textWithOuterComments(property);\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (name === \"group\") {\n containerExtras(site, property, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n return;\n }\n if (isLegacyConditionName(name)) {\n pushLegacy(site, name, text, initializer, property);\n return;\n }\n if (tokenVariantProps.has(name)) {\n pushTokenVariant(site, name, property, text);\n return;\n }\n if (!styleProps.has(name)) return;\n const literal = Node.isStringLiteral(initializer) || Node.isNoSubstitutionTemplateLiteral(initializer) ? initializer.getLiteralValue() : null;\n pushBase(site, name, text, literal === null ? initializer : null, literal);\n}\nfunction pushTokenVariant(site, name, node, text) {\n const index = site.index++;\n const initializer = node.getInitializer();\n const value = initializer !== void 0 && Node.isJsxExpression(initializer) ? initializer.getExpression() : initializer;\n const literals = value === void 0 ? [] : [value, ...value.getDescendants()].filter(\n (candidate) => (Node.isStringLiteral(candidate) || Node.isNoSubstitutionTemplateLiteral(candidate)) && candidate.getLiteralValue().startsWith(\"$\")\n );\n if (value === void 0 || literals.length === 0) {\n site.members.push({ type: \"passthrough\", index, text });\n return false;\n }\n const source = value.getText();\n const start = value.getStart();\n let rewritten = \"\";\n let cursor = start;\n for (const literal of literals) {\n let replacement = \"true\";\n if (literal.getLiteralValue() !== \"$true\") {\n const flat = flatStringValue(literal.getLiteralValue(), site.registry);\n if (flat.text === null) {\n site.legacy = true;\n addFlag(\n site.flags,\n flat.error?.code ?? \"unsupported-legacy-value\",\n `${name}: ${flat.error?.message ?? `${literal.getText()} has no flat spelling`}`\n );\n site.members.push({ type: \"passthrough\", index, text });\n return true;\n }\n const quote = literal.getText()[0];\n replacement = `${quote}${flat.text}${quote}`;\n }\n rewritten += source.slice(cursor - start, literal.getStart() - start);\n rewritten += replacement;\n cursor = literal.getEnd();\n }\n rewritten += source.slice(cursor - start);\n site.legacy = true;\n const output = Node.isJsxAttribute(node) ? Node.isStringLiteral(initializer) ? rewritten === \"true\" ? name : `${name}=${rewritten}` : `${name}={${rewritten}}` : site.kind === \"jsx\" ? `${name}={${rewritten}}` : textWithOuterComments(node, `${node.getNameNode().getText()}: ${rewritten}`);\n site.members.push({ type: \"passthrough\", index, text: output });\n site.respelled.push({\n name,\n value: rewritten,\n dynamic: literals.length !== 1 || literals[0] !== value\n });\n return true;\n}\nfunction convertStyleObject(object, kind, label, registry, containers, targets, host, write = false) {\n const site = createSite(kind, registry, containers, targets, host);\n const before = [];\n for (const property of object.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n const expression = unwrapExpression(property.getExpression());\n before.push(compact(property.getText()));\n if (Node.isObjectLiteralExpression(expression)) {\n for (const nested of expression.getProperties()) {\n if (Node.isPropertyAssignment(nested)) {\n const name2 = propertyName(nested.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(site, name2, nested);\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n }\n pushSpread(site, nested, compact(nested.getText()));\n }\n continue;\n }\n pushSpread(site, expression, compact(property.getText()));\n continue;\n }\n if (!Node.isPropertyAssignment(property)) continue;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n addFlag(\n site.flags,\n \"computed-property\",\n `\"${compact(nameNode.getText())}\" hides the affected style property`\n );\n continue;\n }\n const name = propertyName(nameNode);\n if (name === null) continue;\n if (!isConvertedName(name)) continue;\n before.push(compact(property.getText()));\n pushStyledProperty(site, name, property);\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = object.getSourceFile();\n const report = {\n kind,\n label,\n line: sourceFile.getLineAndColumnAtPos(object.getStart()).line,\n before: before.join(\", \"),\n after: entries.map((entry) => entry.text).join(\", \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: legacyLeft(site)\n };\n if (write && converted(site, report) && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteStyleObject(object, entries);\n }\n return report;\n}\nfunction isConvertedStyledProperty(property) {\n if (Node.isSpreadAssignment(property)) return true;\n if (!Node.isPropertyAssignment(property)) return false;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) return false;\n const name = propertyName(nameNode);\n return !!name && isConvertedName(name);\n}\nfunction allCommentTexts(node) {\n const comments = /* @__PURE__ */ new Map();\n for (const current of [node, ...node.getDescendants()]) {\n for (const range of [\n ...current.getLeadingCommentRanges(),\n ...current.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n }\n return [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n}\nfunction textWithOuterComments(node, text = node.getText()) {\n const comments = /* @__PURE__ */ new Map();\n for (const range of [\n ...node.getLeadingCommentRanges(),\n ...node.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n const prefix = [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n return [...prefix, text].join(\"\\n \");\n}\nfunction rewriteStyleObject(object, entries) {\n const rendered = [];\n let inserted = false;\n for (const property of object.getProperties()) {\n if (isConvertedStyledProperty(property)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(textWithOuterComments(property));\n }\n }\n if (rendered.length === 0) {\n object.replaceWithText(\"{}\");\n return;\n }\n object.replaceWithText(`{\n${rendered.map((text) => ` ${text}`).join(\",\\n\")}\n}`);\n}\nexport {\n convertJsxSite,\n convertStyleObject,\n sanitize\n};\n//# sourceMappingURL=convert.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convert.js","names":[],"sources":["convert.js"],"sourcesContent":["import {\n Node,\n SyntaxKind\n} from \"ts-morph\";\nimport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n} from \"./expressions\";\nimport {\n assessFlatConversion,\n convertLegacyConditionProp,\n expandToLonghands,\n flatStringValue,\n mergeProgramValues,\n parseValue,\n printProgram,\n resolveProp,\n sharedPayload,\n shorthands,\n styleProps,\n tokenVariantProps,\n unitSuffix\n} from \"./grammar\";\nimport { isLegacyConditionName, resolveLegacyName } from \"./legacyNames\";\nimport { classifyStructuredNativeValue } from \"./structuredNative\";\nfunction assessmentVerdict(assessments) {\n if (assessments.some((assessment) => assessment.verdict === \"ineligible\")) {\n return \"ineligible\";\n }\n if (assessments.some((assessment) => assessment.verdict === \"needs-relocation\")) {\n return \"needs-relocation\";\n }\n return assessments.length ? \"unknown-host\" : \"clean\";\n}\nfunction createSite(kind, registry, containers, targets, host) {\n return {\n kind,\n registry,\n containers,\n targets,\n host,\n members: [],\n comments: /* @__PURE__ */ new Map(),\n extras: [],\n respelled: [],\n warnings: [],\n flags: [],\n inventory: [],\n pending: [],\n assessments: [],\n notes: [],\n legacy: false,\n index: 0\n };\n}\nfunction assessProgram(site, property, modifiers) {\n const targetProperty = resolveProp(property);\n const assessment = assessFlatConversion(\n {\n property: targetProperty,\n modifiers,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict !== \"clean\") addAssessment(site, targetProperty, assessment);\n return assessment.verdict !== \"ineligible\";\n}\nfunction addAssessment(site, property, assessment) {\n if (assessment.verdict === \"clean\") return;\n if (!site.assessments.some(\n (finding) => finding.property === property && finding.verdict === assessment.verdict && JSON.stringify(finding.reasons) === JSON.stringify(assessment.reasons)\n )) {\n site.assessments.push({\n property,\n verdict: assessment.verdict,\n reasons: assessment.reasons\n });\n }\n}\nfunction legacyKeysInSpread(expression) {\n const names = /* @__PURE__ */ new Set();\n for (const object of expression.getDescendantsOfKind(\n SyntaxKind.ObjectLiteralExpression\n )) {\n for (const property of object.getProperties()) {\n if (!Node.isPropertyAssignment(property)) continue;\n const name = propertyName(property.getNameNode());\n if (name !== null && isLegacyConditionName(name)) names.add(name);\n }\n }\n return [...names];\n}\nfunction pushSpread(site, expression, text) {\n const keys = legacyKeysInSpread(expression);\n if (keys.length) {\n site.legacy = true;\n addFlag(\n site.flags,\n \"legacy-condition-in-spread\",\n `\"${compact(text)}\" is not an inline object literal, so its ${keys.map((key) => `\"${key}\"`).join(\", \")} ${keys.length === 1 ? \"entry stays\" : \"entries stay\"} authored`\n );\n }\n site.members.push({\n type: \"spread\",\n index: site.index++,\n text,\n legacy: keys.length > 0\n });\n}\nfunction converted(site, report) {\n return report.programs.length > 0 || site.extras.length > 0 || site.members.some(\n (member) => member.type === \"authored\" && member.activated || member.type === \"legacy\" && !member.failed\n );\n}\nfunction legacyLeft(site) {\n return site.members.filter(\n (member) => member.type === \"legacy\" && member.failed || member.type === \"spread\" && member.legacy\n ).length;\n}\nfunction isConvertedName(name) {\n return name === \"group\" || styleProps.has(name) || tokenVariantProps.has(name) || isLegacyConditionName(name);\n}\nfunction addFlag(list, code, detail) {\n if (!list.some((flag) => flag.code === code && flag.detail === detail)) {\n list.push({ code, detail });\n }\n}\nfunction addNote(site, note) {\n if (!site.notes.includes(note)) site.notes.push(note);\n}\nconst legacyPaletteStepPattern = /(?:^|[^\\w-])\\$?((?:gray|mauve|slate|sage|olive|sand|tomato|red|ruby|crimson|pink|plum|purple|violet|iris|indigo|blue|cyan|teal|jade|green|grass|bronze|gold|brown|orange|amber|yellow|lime|mint|sky)(?:1[0-2]|[1-9]))(?![\\w-])/g;\nconst legacyTrueTokenPattern = /(?:^|[^\\w-])\\$true(?![\\w-])/;\nfunction legacyTokenWarnings(prop, values) {\n const warnings = [];\n if (values.some((value) => legacyTrueTokenPattern.test(value))) {\n warnings.push({\n code: \"legacy-true-token\",\n detail: `${prop} spelled the \\`$true\\` alias, written as \\`4\\` because the default config aliased it there; confirm the app's tokens agree`\n });\n }\n const names = /* @__PURE__ */ new Set();\n for (const value of values) {\n legacyPaletteStepPattern.lastIndex = 0;\n for (const match of value.matchAll(legacyPaletteStepPattern)) names.add(match[1]);\n }\n if (!names.size) return warnings;\n const formatted = [...names].sort().map((name) => `\\`${name}\\``).join(\", \");\n warnings.push({\n code: \"legacy-palette-token\",\n detail: `${prop} preserves ${formatted}, which @tamagui/config/v6 does not define; choose an absolute palette token or an adaptive color-N value`\n });\n return warnings;\n}\nconst empty = {\n payload: null,\n text: null,\n dynamic: false,\n problem: null,\n warnings: [],\n blocked: null,\n inventory: null\n};\nfunction interpolate(prop, text, kind, registry) {\n return `\\${${text}}${kind === \"number\" ? unitSuffix(resolveProp(prop), registry) : \"\"}`;\n}\nfunction classifyStatic(prop, value, registry) {\n const probe = sharedPayload(prop, value, registry);\n const error = probe.errors[0];\n if (error || probe.payload === null) {\n const flag = {\n code: error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${error?.message ?? `\"${String(value)}\" has no flat spelling`}`\n };\n return { ...empty, problem: flag, blocked: flag };\n }\n return { ...empty, payload: probe.payload };\n}\nfunction reparsesAsBase(value, registry) {\n const parsed = parseValue(value, registry);\n return parsed.ok && parsed.value.clauses.length === 0 && parsed.value.base === value.trim();\n}\nfunction classifyDynamic(prop, expression, registry) {\n const current = unwrapExpression(expression);\n const source = compact(current.getText());\n const structured = classifyStructuredNativeValue(\n resolveProp(prop),\n current,\n source,\n registry\n );\n if (structured) {\n return {\n ...empty,\n payload: structured.payload,\n blocked: structured.blocked\n };\n }\n const tree = literalTree(current, registry);\n if (tree && tree.error) {\n const flag2 = {\n code: tree.error.code,\n detail: `${prop}: ${tree.error.message}`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (tree && tree.kind !== \"nullish\") {\n const rewrittenTokenText = /\\$(?=[\\w-])/.test(source) && tree.text !== source ? tree.text : null;\n return {\n ...empty,\n payload: interpolate(prop, tree.text, tree.kind, registry),\n text: rewrittenTokenText,\n dynamic: true,\n warnings: legacyTokenWarnings(prop, tree.strings)\n };\n }\n if (tree) {\n const flag2 = {\n code: \"empty-style-value\",\n detail: `${prop} value \"${source}\" is always nullish and cannot join a program`\n };\n return { ...empty, blocked: flag2 };\n }\n const runtime = runtimeType(current);\n if (runtime.kind === \"number\") {\n return {\n ...empty,\n payload: interpolate(prop, source, \"number\", registry),\n dynamic: true\n };\n }\n if (runtime.kind === \"string\") {\n const tokens = runtime.literals?.filter((literal) => literal.startsWith(\"$\"));\n if (tokens?.length) {\n const flag2 = {\n code: \"legacy-token-constant\",\n detail: `${prop} value \"${source}\" resolves to legacy token ${tokens.map((token) => `\"${token}\"`).join(\", \")}; migrate the constant it comes from`\n };\n return { ...empty, problem: flag2, blocked: flag2 };\n }\n if (runtime.literals === null) {\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true,\n inventory: {\n code: \"dynamic-string-value\",\n detail: `${prop} value \"${source}\" is an open string; confirm it never holds a legacy \"$token\" spelling`\n }\n };\n }\n return {\n ...empty,\n payload: interpolate(prop, source, \"string\", registry),\n dynamic: true\n };\n }\n const flag = {\n code: \"unprovable-dynamic-value\",\n detail: `${prop} value \"${source}\" has no provable number or string type, so it cannot fold into a program`\n };\n return { ...empty, blocked: flag };\n}\nfunction pushBase(site, prop, text, value, literalString) {\n const index = site.index++;\n if (literalString !== null) {\n for (const warning of legacyTokenWarnings(prop, [literalString])) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (literalString.includes(\"$\")) {\n site.legacy = true;\n const allowed2 = assessProgram(site, prop, []);\n const flat = flatStringValue(literalString, site.registry);\n const problem = flat.text === null ? {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n detail: `${prop}: ${flat.error?.message ?? `${JSON.stringify(literalString)} has no flat spelling`}`\n } : !reparsesAsBase(flat.text, site.registry) ? {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(flat.text)} does not read back as one flat base value`\n } : null;\n if (problem !== null) addFlag(site.flags, problem.code, problem.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed2 && problem === null ? flat.text : null,\n dynamic: false,\n blocked: problem,\n token: allowed2,\n activated: false\n });\n return;\n }\n if (!reparsesAsBase(literalString, site.registry)) {\n const flag = {\n code: \"value-reparses-as-program\",\n detail: `${prop} value ${JSON.stringify(literalString)} does not read back as one flat base value`\n };\n addFlag(site.flags, flag.code, flag.detail);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: flag,\n token: false,\n activated: false\n });\n return;\n }\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: literalString,\n dynamic: false,\n blocked: null,\n token: false,\n activated: false\n });\n return;\n }\n const number = value ? numericValue(value) : null;\n if (number !== null) {\n const classified2 = classifyStatic(prop, number, site.registry);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: classified2.payload,\n dynamic: false,\n blocked: classified2.blocked,\n token: false,\n activated: false\n });\n return;\n }\n const kind = value?.getKind();\n if (value === null || kind === SyntaxKind.TrueKeyword || kind === SyntaxKind.FalseKeyword || kind === SyntaxKind.NullKeyword) {\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: null,\n dynamic: false,\n blocked: {\n code: \"non-css-style-value\",\n detail: `${prop} value \"${compact(text)}\" is not a CSS value and cannot join a program`\n },\n token: false,\n activated: false\n });\n return;\n }\n const classified = classifyDynamic(prop, value, site.registry);\n if (classified.problem) {\n site.legacy = true;\n addFlag(site.flags, classified.problem.code, classified.problem.detail);\n }\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, warning.detail);\n }\n if (classified.inventory) {\n addFlag(site.inventory, classified.inventory.code, classified.inventory.detail);\n }\n if (classified.text !== null) site.legacy = true;\n const allowed = classified.text === null || assessProgram(site, prop, []);\n site.members.push({\n type: \"authored\",\n index,\n prop,\n text,\n payload: allowed ? classified.payload : null,\n dynamic: classified.dynamic,\n blocked: classified.blocked,\n token: allowed && classified.text !== null,\n activated: false\n });\n}\nconst sentinelMark = \"\u0001\";\nfunction evaluateLegacyObject(object, rootPath) {\n const leaves = [];\n const visit = (current, currentPath) => {\n const value = {};\n for (const property of current.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n return {\n value: null,\n fatal: `spread \"${compact(property.getText())}\" hides legacy condition entries`\n };\n }\n if (!Node.isPropertyAssignment(property)) {\n return {\n value: null,\n fatal: `property \"${compact(property.getText())}\" is not a static assignment`\n };\n }\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n return {\n value: null,\n fatal: `computed property \"${compact(nameNode.getText())}\" hides the affected style property`\n };\n }\n const name = propertyName(nameNode);\n if (name === null) {\n return {\n value: null,\n fatal: `property name \"${compact(nameNode.getText())}\" is not statically known`\n };\n }\n const path = `${currentPath}.${name}`;\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (Node.isObjectLiteralExpression(initializer)) {\n const nested = visit(initializer, path);\n if (nested.fatal) return nested;\n value[name] = nested.value;\n continue;\n }\n const leaf = staticLeafValue(initializer);\n if (leaf) {\n value[name] = leaf.value;\n continue;\n }\n value[name] = `${sentinelMark}${leaves.length}${sentinelMark}`;\n leaves.push({ path, prop: name, expression: initializer });\n }\n return { value, fatal: null };\n };\n const result = visit(object, rootPath);\n return { ...result, leaves };\n}\nfunction conditionProperties(value) {\n const properties = /* @__PURE__ */ new Set();\n const visit = (object) => {\n for (const key in object) {\n const child = object[key];\n if (child !== null && typeof child === \"object\" && isLegacyConditionName(key)) {\n visit(child);\n continue;\n }\n if (!styleProps.has(key)) continue;\n for (const property of expandToLonghands(key, shorthands)) properties.add(property);\n }\n };\n visit(value);\n return properties;\n}\nfunction pushLegacy(site, name, text, initializer, node) {\n const index = site.index++;\n site.legacy = true;\n const keep = (properties2) => {\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions: [],\n properties: properties2,\n failed: true\n });\n };\n if (initializer === null || !Node.isObjectLiteralExpression(initializer)) {\n addFlag(\n site.flags,\n \"dynamic-legacy-condition\",\n `\"${name}\" is not an inline object literal, so its entries are not statically known`\n );\n keep(null);\n return;\n }\n const evaluated = evaluateLegacyObject(initializer, name);\n if (evaluated.fatal || evaluated.value === null) {\n addFlag(site.flags, \"dynamic-legacy-condition\", evaluated.fatal ?? \"unresolved\");\n keep(null);\n return;\n }\n const properties = conditionProperties(evaluated.value);\n const eligibilityStack = [{ object: evaluated.value, path: name }];\n let hasRejectedProperty = false;\n while (eligibilityStack.length > 0) {\n const current = eligibilityStack.pop();\n for (const prop in current.object) {\n const value = current.object[prop];\n const targetProp = resolveProp(prop);\n if (styleProps.has(targetProp) && !isLegacyConditionName(prop)) {\n const assessment = assessFlatConversion(\n {\n property: targetProp,\n targets: site.targets,\n host: site.host\n },\n site.registry\n );\n if (assessment.verdict === \"ineligible\") {\n addAssessment(site, targetProp, assessment);\n hasRejectedProperty = true;\n }\n continue;\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value) && isLegacyConditionName(prop)) {\n eligibilityStack.push({\n object: value,\n path: `${current.path}.${prop}`\n });\n }\n }\n }\n if (hasRejectedProperty) {\n keep(properties);\n return;\n }\n const unresolved = site.containers.unresolved.get(node);\n if (unresolved !== void 0) {\n addFlag(site.flags, unresolved.code, unresolved.detail);\n keep(properties);\n return;\n }\n const resolution = resolveLegacyName(name, site.registry);\n if (!resolution.ok) {\n addFlag(site.flags, resolution.code, resolution.message);\n keep(properties);\n return;\n }\n const payloads = /* @__PURE__ */ new Map();\n let failed = false;\n for (let index2 = 0; index2 < evaluated.leaves.length; index2++) {\n const leaf = evaluated.leaves[index2];\n const classified = classifyDynamic(leaf.prop, leaf.expression, site.registry);\n for (const warning of classified.warnings) {\n addFlag(site.warnings, warning.code, `${leaf.path}: ${warning.detail}`);\n }\n if (classified.payload === null) {\n const flag = classified.problem ?? classified.blocked;\n addFlag(\n site.flags,\n flag?.code ?? \"dynamic-condition-value\",\n `${leaf.path}: ${flag?.detail ?? \"the value is not statically known\"}`\n );\n failed = true;\n continue;\n }\n payloads.set(`${sentinelMark}${index2}${sentinelMark}`, classified.payload);\n }\n if (failed) {\n keep(properties);\n return;\n }\n const { canonical, replaceRoot } = resolution.resolved;\n const converted2 = convertLegacyConditionProp(canonical, evaluated.value, {\n registry: site.registry\n });\n if (converted2 === null) {\n addFlag(\n site.flags,\n \"unknown-legacy-condition\",\n `\"${name}\" is not a registered legacy condition spelling`\n );\n keep(properties);\n return;\n }\n for (const error of converted2.errors) {\n const path = error.path.startsWith(canonical) ? `${name}${error.path.slice(canonical.length)}` : error.path;\n addFlag(site.flags, error.code, `${path}: ${error.message}`);\n failed = true;\n }\n const contributions = [];\n for (const contribution of converted2.contributions) {\n if (!styleProps.has(contribution.prop)) {\n addFlag(\n site.flags,\n \"non-style-condition-entry\",\n `${name}.${contribution.prop} is not a style property, so a flat value cannot carry it`\n );\n failed = true;\n continue;\n }\n const modifiers = replaceRoot ? [...replaceRoot, ...contribution.clause.modifiers.slice(1)] : contribution.clause.modifiers;\n const dynamicPayload = payloads.get(contribution.clause.payload);\n contributions.push({\n prop: contribution.prop,\n clause: {\n modifiers,\n payload: dynamicPayload ?? contribution.clause.payload\n },\n dynamic: dynamicPayload !== void 0\n });\n if (!assessProgram(site, contribution.prop, modifiers)) failed = true;\n }\n if (failed) {\n keep(properties);\n return;\n }\n site.members.push({\n type: \"legacy\",\n index,\n name,\n text,\n contributions,\n properties,\n failed: false\n });\n}\nfunction activationName(prop) {\n return resolveProp(prop);\n}\nconst noProperties = /* @__PURE__ */ new Set();\nconst legacyStatePriorities = Object.freeze({\n hover: 2,\n press: 3,\n active: 3,\n focus: 4,\n \"focus-visible\": 4,\n \"focus-within\": 4,\n enter: 4,\n disabled: 5,\n exit: 5\n});\nfunction legacyStatePriority(modifiers) {\n let priority = null;\n for (const modifier of modifiers) {\n const candidate = legacyStatePriorities[modifier];\n if (candidate !== void 0 && (priority === null || candidate > priority)) {\n priority = candidate;\n }\n }\n return priority;\n}\nfunction orderedEntries(site) {\n const ordered = [];\n for (const member of site.members) {\n if (member.type === \"authored\") {\n if (!member.activated || member.payload === null) continue;\n ordered.push({\n prop: member.prop,\n value: { base: member.payload, clauses: [] },\n dynamic: member.dynamic,\n index: member.index,\n base: true,\n from: null,\n legacyStatePriority: null\n });\n continue;\n }\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n ordered.push({\n prop: contribution.prop,\n value: { base: null, clauses: [contribution.clause] },\n dynamic: contribution.dynamic,\n index: member.index,\n base: false,\n from: member,\n legacyStatePriority: legacyStatePriority(contribution.clause.modifiers)\n });\n }\n }\n const ranked = ordered.filter((entry) => entry.legacyStatePriority !== null).sort(\n (left, right) => left.legacyStatePriority - right.legacyStatePriority || left.index - right.index\n );\n if (ranked.length < 2) return ordered;\n let rankedIndex = 0;\n return ordered.map(\n (entry) => entry.legacyStatePriority === null ? entry : ranked[rankedIndex++]\n );\n}\nfunction buildSlots(ordered) {\n const slots = /* @__PURE__ */ new Map();\n for (const entry of ordered) {\n for (const property of expandToLonghands(entry.prop, shorthands)) {\n const previous = slots.get(property);\n const value = previous ? mergeProgramValues(previous.value, entry.value) : entry.value;\n slots.delete(property);\n slots.set(property, {\n property,\n sourceProp: entry.prop,\n value,\n anchor: previous ? Math.min(previous.anchor, entry.index) : entry.index,\n last: previous ? Math.max(previous.last, entry.index) : entry.index,\n dynamic: (previous?.dynamic ?? false) || entry.dynamic\n });\n }\n }\n return slots;\n}\nfunction barriers(site) {\n const list = [];\n for (const member of site.members) {\n if (member.type === \"spread\") {\n list.push({ index: member.index, source: member.text, bases: null, clauses: null });\n continue;\n }\n if (member.type === \"authored\" && !member.activated) {\n list.push({\n index: member.index,\n source: member.text,\n bases: new Set(expandToLonghands(member.prop, shorthands)),\n clauses: noProperties\n });\n continue;\n }\n if (member.type === \"legacy\" && member.failed) {\n list.push({\n index: member.index,\n source: member.name,\n bases: noProperties,\n clauses: member.properties\n });\n }\n }\n return list;\n}\nfunction resolveBarriers(site, ordered, slots) {\n let changed = false;\n for (const slot of slots.values()) {\n const contributions = ordered.filter(\n (entry) => expandToLonghands(entry.prop, shorthands).includes(slot.property)\n );\n for (const barrier of barriers(site)) {\n if (barrier.index <= slot.anchor || barrier.index >= slot.last) continue;\n if (barrier.clauses === null || barrier.clauses.has(slot.property)) {\n for (const entry of contributions) {\n if (entry.base || entry.index < barrier.index || !entry.from) continue;\n addFlag(\n site.flags,\n \"condition-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so \"${entry.from.name}\" stays authored instead of merging`\n );\n entry.from.failed = true;\n changed = true;\n }\n }\n if (barrier.bases === null || barrier.bases.has(slot.property)) {\n for (const entry of contributions) {\n if (!entry.base || entry.index < barrier.index) continue;\n const authored = site.members.find(\n (member) => member.type === \"authored\" && member.index === entry.index && member.activated\n );\n if (authored && authored.type === \"authored\") {\n authored.payload = null;\n authored.blocked = {\n code: \"base-order-not-preservable\",\n detail: `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so this base cannot move`\n };\n changed = true;\n continue;\n }\n addFlag(\n site.flags,\n \"base-order-not-preservable\",\n `\"${compact(barrier.source)}\" can set \"${slot.property}\" between the values contributing to it, so the merged base may win where it did not before`\n );\n }\n }\n }\n }\n return changed;\n}\nfunction assemble(site) {\n let slots = /* @__PURE__ */ new Map();\n for (; ; ) {\n let changed = false;\n const contributed = /* @__PURE__ */ new Set();\n for (const member of site.members) {\n if (member.type !== \"legacy\" || member.failed) continue;\n for (const contribution of member.contributions) {\n contributed.add(activationName(contribution.prop));\n }\n }\n for (const member of site.members) {\n if (member.type !== \"authored\") continue;\n const name = activationName(member.prop);\n member.activated = member.token && member.payload !== null || contributed.has(name);\n if (!member.activated || member.payload !== null) continue;\n const blocked = member.blocked;\n addFlag(\n site.flags,\n blocked?.code ?? \"unprovable-dynamic-value\",\n `a legacy condition targets \"${member.prop}\": ${blocked?.detail ?? `its base value \"${compact(member.text)}\" cannot join a program`}`\n );\n member.activated = false;\n for (const other of site.members) {\n if (other.type !== \"legacy\" || other.failed) continue;\n if (other.contributions.some((one) => activationName(one.prop) === name)) {\n other.failed = true;\n changed = true;\n }\n }\n }\n if (changed) continue;\n const ordered = orderedEntries(site);\n slots = buildSlots(ordered);\n if (!resolveBarriers(site, ordered, slots)) break;\n }\n const entries = [];\n for (const member of site.members) {\n if (member.type === \"authored\" && member.activated) continue;\n if (member.type === \"legacy\" && !member.failed) continue;\n entries.push({ index: member.index, text: member.text });\n }\n const printed = printSlots(site, slots);\n entries.push(...printed.output);\n entries.push(...site.extras);\n entries.sort((left, right) => left.index - right.index);\n return { entries, programs: printed.programs };\n}\nfunction printSlots(site, slots) {\n const printed = /* @__PURE__ */ new Set();\n const output = [];\n const programs = [];\n const outputCommentRanges = [];\n for (const [property, slot] of slots) {\n if (printed.has(property)) continue;\n const serialized = printProgram(slot.value);\n const expansion = expandToLonghands(slot.sourceProp, shorthands);\n const collapses = expansion.length > 0 && expansion.every((expanded) => {\n const candidate = slots.get(expanded);\n return candidate !== void 0 && candidate.sourceProp === slot.sourceProp && candidate.anchor === slot.anchor && candidate.dynamic === slot.dynamic && printProgram(candidate.value) === serialized;\n });\n const name = collapses ? slot.sourceProp : property;\n if (collapses) for (const expanded of expansion) printed.add(expanded);\n else printed.add(property);\n const value = slot.dynamic ? `\\`${serialized}\\`` : JSON.stringify(serialized);\n programs.push({ name, value: serialized, dynamic: slot.dynamic });\n const propertyText = site.kind === \"styled\" ? `${name}: ${value}` : `${name}=${slot.dynamic ? `{${value}}` : value}`;\n output.push({\n index: slot.anchor,\n text: propertyText\n });\n outputCommentRanges.push({\n outputIndex: output.length - 1,\n first: slot.anchor,\n last: slot.last\n });\n }\n verify(\n site,\n slots,\n [...output].sort((left, right) => left.index - right.index)\n );\n if (site.kind === \"styled\") {\n const commentedIndexes = /* @__PURE__ */ new Set();\n for (const range of outputCommentRanges) {\n const comments = [];\n for (const [index, texts] of site.comments) {\n if (index < range.first || index > range.last || commentedIndexes.has(index)) {\n continue;\n }\n comments.push(...texts);\n commentedIndexes.add(index);\n }\n if (comments.length) {\n output[range.outputIndex].text = `${comments.join(\"\\n\")}\n${output[range.outputIndex].text}`;\n }\n }\n }\n return { output, programs };\n}\nfunction sanitize(text) {\n let result = \"\";\n for (let index = 0; index < text.length; index++) {\n if (text[index] !== \"$\" || text[index + 1] !== \"{\") {\n result += text[index];\n continue;\n }\n let depth = 0;\n let end = index + 1;\n for (; end < text.length; end++) {\n if (text[end] === \"{\") depth++;\n else if (text[end] === \"}\" && --depth === 0) break;\n }\n result += \"zz\";\n index = end;\n }\n return result;\n}\nfunction verify(site, slots, output) {\n const separator = site.kind === \"styled\" ? \": \" : \"=\";\n const reparsed = /* @__PURE__ */ new Map();\n for (const entry of output) {\n const split = entry.text.indexOf(separator);\n const prop = entry.text.slice(0, split);\n let raw = entry.text.slice(split + separator.length);\n if (raw.startsWith(\"{\")) raw = raw.slice(1, -1);\n const text = sanitize(raw.slice(1, -1));\n const parsed = parseValue(text, site.registry);\n if (!parsed.ok) {\n addFlag(\n site.flags,\n \"emitted-value-invalid\",\n `\"${prop}=${text}\" does not parse: ${parsed.errors.map((error) => error.message).join(\"; \")}`\n );\n return;\n }\n for (const property of expandToLonghands(prop, shorthands)) {\n const previous = reparsed.get(property);\n reparsed.set(\n property,\n previous ? mergeProgramValues(previous, parsed.value) : parsed.value\n );\n }\n }\n for (const [property, slot] of slots) {\n const actual = reparsed.get(property);\n const expected = sanitize(printProgram(slot.value));\n if (actual === void 0 || sanitize(printProgram(actual)) !== expected) {\n addFlag(\n site.flags,\n \"emitted-program-mismatch\",\n `\"${property}\" reads back as \"${actual ? sanitize(printProgram(actual)) : \"(missing)\"}\" instead of \"${expected}\"`\n );\n }\n }\n}\nfunction propertyName(node) {\n if (Node.isIdentifier(node) || Node.isStringLiteral(node) || Node.isNumericLiteral(node)) {\n return node.getText().replace(/^['\"]|['\"]$/g, \"\");\n }\n return null;\n}\nfunction jsxAttributeName(attribute) {\n const name = attribute.getNameNode();\n return Node.isIdentifier(name) ? name.getText() : null;\n}\nfunction jsxLiteralString(attribute) {\n const initializer = attribute.getInitializer();\n if (Node.isStringLiteral(initializer)) return initializer.getLiteralValue();\n const expression = jsxExpression(attribute);\n if (expression && (Node.isStringLiteral(expression) || Node.isNoSubstitutionTemplateLiteral(expression))) {\n return expression.getLiteralValue();\n }\n return null;\n}\nfunction jsxExpression(attribute) {\n const initializer = attribute.getInitializer();\n if (!Node.isJsxExpression(initializer)) return null;\n const expression = initializer.getExpression();\n return expression ? unwrapExpression(expression) : null;\n}\nfunction isConvertedJsxAttribute(attribute) {\n if (Node.isJsxSpreadAttribute(attribute)) return true;\n if (!Node.isJsxAttribute(attribute)) return false;\n const name = jsxAttributeName(attribute);\n return !!name && isConvertedName(name);\n}\nfunction rewriteJsxSite(opening, entries) {\n const attributes = opening.getAttributes();\n const rendered = [];\n let inserted = false;\n for (const attribute of attributes) {\n if (isConvertedJsxAttribute(attribute)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(attribute.getText());\n }\n }\n const source = opening.getText();\n const start = opening.getStart();\n const first = attributes[0];\n const last = attributes[attributes.length - 1];\n const prefix = source.slice(0, first.getStart() - start);\n const suffix = source.slice(last.getEnd() - start);\n const authoredMultiline = prefix.includes(\"\\n\") || source.slice(first.getStart() - start, last.getEnd() - start).includes(\"\\n\");\n opening.replaceWithText(\n authoredMultiline ? `${prefix.replace(/[ \\t]+$/, \"\")}${rendered.map((text) => ` ${text}`).join(\"\\n\")}${suffix.replace(/\\n[ \\t]+/, \"\\n\")}` : `${prefix}${rendered.join(\" \")}${suffix}`\n );\n}\nfunction containerExtras(site, declaration, index) {\n const target = site.containers.targets.get(declaration);\n if (target === void 0) return;\n const name = target.named && target.group !== \"\" ? target.group : null;\n const text = site.kind === \"styled\" ? name === null ? \"container: true\" : `container: ${JSON.stringify(name)}` : name === null ? \"container\" : `container=${JSON.stringify(name)}`;\n site.legacy = true;\n site.extras.push({ index, text });\n if (target.flag !== null) addFlag(site.flags, target.flag.code, target.flag.detail);\n addNote(\n site,\n `a descendant uses a legacy container-size condition on this group, so it declares a query container`\n );\n}\nfunction convertJsxSite(opening, registry, containers, targets, host, write = false) {\n const site = createSite(\"jsx\", registry, containers, targets, host);\n const before = [];\n for (const attribute of opening.getAttributes()) {\n if (Node.isJsxSpreadAttribute(attribute)) {\n const expression = unwrapExpression(attribute.getExpression());\n if (Node.isObjectLiteralExpression(expression)) {\n before.push(compact(attribute.getText()));\n for (const property of expression.getProperties()) {\n if (Node.isPropertyAssignment(property)) {\n const name2 = propertyName(property.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(\n site,\n name2,\n property,\n `${name2}={${property.getInitializerOrThrow().getText()}}`\n );\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: `${name2}={${property.getInitializerOrThrow().getText()}}`\n });\n }\n continue;\n }\n }\n pushSpread(\n site,\n property,\n Node.isSpreadAssignment(property) ? `{${property.getText()}}` : `{...{ ${property.getText()} }}`\n );\n }\n continue;\n }\n before.push(compact(attribute.getText()));\n pushSpread(site, expression, attribute.getText());\n continue;\n }\n const name = jsxAttributeName(attribute);\n if (!name) continue;\n const text = compact(attribute.getText());\n if (name === \"group\") {\n before.push(text);\n containerExtras(site, attribute, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n continue;\n }\n if (isLegacyConditionName(name)) {\n before.push(text);\n pushLegacy(site, name, text, jsxExpression(attribute), attribute);\n continue;\n }\n if (tokenVariantProps.has(name)) {\n if (pushTokenVariant(site, name, attribute, text)) before.push(text);\n continue;\n }\n if (!styleProps.has(name)) continue;\n before.push(text);\n const literal = jsxLiteralString(attribute);\n pushBase(\n site,\n name,\n text,\n literal === null ? jsxExpression(attribute) : null,\n literal\n );\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = opening.getSourceFile();\n const report = {\n kind: \"jsx\",\n label: `<${opening.getTagNameNode().getText()}>`,\n line: sourceFile.getLineAndColumnAtPos(opening.getStart()).line,\n before: before.join(\" \"),\n after: entries.map((entry) => entry.text).join(\" \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: legacyLeft(site)\n };\n if (write && converted(site, report) && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteJsxSite(opening, entries);\n }\n return report;\n}\nfunction pushStyledProperty(site, name, property, authoredText) {\n const comments = allCommentTexts(property);\n if (comments.length) site.comments.set(site.index, comments);\n const text = authoredText ?? textWithOuterComments(property);\n const initializer = unwrapExpression(property.getInitializerOrThrow());\n if (name === \"group\") {\n containerExtras(site, property, site.index);\n site.members.push({ type: \"passthrough\", index: site.index++, text });\n return;\n }\n if (isLegacyConditionName(name)) {\n pushLegacy(site, name, text, initializer, property);\n return;\n }\n if (tokenVariantProps.has(name)) {\n pushTokenVariant(site, name, property, text);\n return;\n }\n if (!styleProps.has(name)) return;\n const literal = Node.isStringLiteral(initializer) || Node.isNoSubstitutionTemplateLiteral(initializer) ? initializer.getLiteralValue() : null;\n pushBase(site, name, text, literal === null ? initializer : null, literal);\n}\nfunction pushTokenVariant(site, name, node, text) {\n const index = site.index++;\n const initializer = node.getInitializer();\n const value = initializer !== void 0 && Node.isJsxExpression(initializer) ? initializer.getExpression() : initializer;\n const literals = value === void 0 ? [] : [value, ...value.getDescendants()].filter(\n (candidate) => (Node.isStringLiteral(candidate) || Node.isNoSubstitutionTemplateLiteral(candidate)) && candidate.getLiteralValue().startsWith(\"$\")\n );\n if (value === void 0 || literals.length === 0) {\n site.members.push({ type: \"passthrough\", index, text });\n return false;\n }\n const source = value.getText();\n const start = value.getStart();\n let rewritten = \"\";\n let cursor = start;\n for (const literal of literals) {\n let replacement = \"true\";\n if (literal.getLiteralValue() !== \"$true\") {\n const flat = flatStringValue(literal.getLiteralValue(), site.registry);\n if (flat.text === null) {\n site.legacy = true;\n addFlag(\n site.flags,\n flat.error?.code ?? \"unsupported-legacy-value\",\n `${name}: ${flat.error?.message ?? `${literal.getText()} has no flat spelling`}`\n );\n site.members.push({ type: \"passthrough\", index, text });\n return true;\n }\n const quote = literal.getText()[0];\n replacement = `${quote}${flat.text}${quote}`;\n }\n rewritten += source.slice(cursor - start, literal.getStart() - start);\n rewritten += replacement;\n cursor = literal.getEnd();\n }\n rewritten += source.slice(cursor - start);\n site.legacy = true;\n const output = Node.isJsxAttribute(node) ? Node.isStringLiteral(initializer) ? rewritten === \"true\" ? name : `${name}=${rewritten}` : `${name}={${rewritten}}` : site.kind === \"jsx\" ? `${name}={${rewritten}}` : textWithOuterComments(node, `${node.getNameNode().getText()}: ${rewritten}`);\n site.members.push({ type: \"passthrough\", index, text: output });\n site.respelled.push({\n name,\n value: rewritten,\n dynamic: literals.length !== 1 || literals[0] !== value\n });\n return true;\n}\nfunction convertStyleObject(object, kind, label, registry, containers, targets, host, write = false) {\n const site = createSite(kind, registry, containers, targets, host);\n const before = [];\n for (const property of object.getProperties()) {\n if (Node.isSpreadAssignment(property)) {\n const expression = unwrapExpression(property.getExpression());\n before.push(compact(property.getText()));\n if (Node.isObjectLiteralExpression(expression)) {\n for (const nested of expression.getProperties()) {\n if (Node.isPropertyAssignment(nested)) {\n const name2 = propertyName(nested.getNameNode());\n if (name2 !== null) {\n if (isConvertedName(name2)) {\n pushStyledProperty(site, name2, nested);\n } else {\n site.members.push({\n type: \"passthrough\",\n index: site.index++,\n text: compact(nested.getText())\n });\n }\n continue;\n }\n }\n pushSpread(site, nested, compact(nested.getText()));\n }\n continue;\n }\n pushSpread(site, expression, compact(property.getText()));\n continue;\n }\n if (!Node.isPropertyAssignment(property)) continue;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) {\n addFlag(\n site.flags,\n \"computed-property\",\n `\"${compact(nameNode.getText())}\" hides the affected style property`\n );\n continue;\n }\n const name = propertyName(nameNode);\n if (name === null) continue;\n if (!isConvertedName(name)) continue;\n before.push(compact(property.getText()));\n pushStyledProperty(site, name, property);\n }\n if (!site.legacy) return null;\n const { entries, programs } = assemble(site);\n const sourceFile = object.getSourceFile();\n const report = {\n kind,\n label,\n line: sourceFile.getLineAndColumnAtPos(object.getStart()).line,\n before: before.join(\", \"),\n after: entries.map((entry) => entry.text).join(\", \") || \"(no style props left)\",\n programs: [...programs, ...site.respelled],\n assessments: site.assessments,\n assessmentVerdict: assessmentVerdict(site.assessments),\n warnings: site.warnings,\n flags: site.flags,\n inventory: site.inventory,\n pending: site.pending,\n notes: site.notes,\n legacyLeft: legacyLeft(site)\n };\n if (write && converted(site, report) && !site.flags.some(\n (flag) => flag.code === \"emitted-program-mismatch\" || flag.code === \"emitted-value-invalid\"\n )) {\n rewriteStyleObject(object, entries);\n }\n return report;\n}\nfunction isConvertedStyledProperty(property) {\n if (Node.isSpreadAssignment(property)) return true;\n if (!Node.isPropertyAssignment(property)) return false;\n const nameNode = property.getNameNode();\n if (Node.isComputedPropertyName(nameNode)) return false;\n const name = propertyName(nameNode);\n return !!name && isConvertedName(name);\n}\nfunction allCommentTexts(node) {\n const comments = /* @__PURE__ */ new Map();\n for (const current of [node, ...node.getDescendants()]) {\n for (const range of [\n ...current.getLeadingCommentRanges(),\n ...current.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n }\n return [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n}\nfunction textWithOuterComments(node, text = node.getText()) {\n const comments = /* @__PURE__ */ new Map();\n for (const range of [\n ...node.getLeadingCommentRanges(),\n ...node.getTrailingCommentRanges()\n ]) {\n comments.set(range.getPos(), range.getText());\n }\n const prefix = [...comments.entries()].sort((left, right) => left[0] - right[0]).map((entry) => entry[1]);\n return [...prefix, text].join(\"\\n \");\n}\nfunction rewriteStyleObject(object, entries) {\n const rendered = [];\n let inserted = false;\n for (const property of object.getProperties()) {\n if (isConvertedStyledProperty(property)) {\n if (!inserted) {\n rendered.push(...entries.map((entry) => entry.text));\n inserted = true;\n }\n } else {\n rendered.push(textWithOuterComments(property));\n }\n }\n if (rendered.length === 0) {\n object.replaceWithText(\"{}\");\n return;\n }\n object.replaceWithText(`{\n${rendered.map((text) => ` ${text}`).join(\",\\n\")}\n}`);\n}\nexport {\n convertJsxSite,\n convertStyleObject,\n sanitize\n};\n//# sourceMappingURL=convert.js.map\n"],"mappings":"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"}
|
package/dist/expressions.mjs
CHANGED
package/dist/expressions.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","names":[],"sources":["expressions.js"],"sourcesContent":["import { Node, SyntaxKind } from \"ts-morph\";\nimport { flatStringValue } from \"./grammar\";\nfunction unwrapExpression(expression) {\n let current = expression;\n while (Node.isParenthesizedExpression(current) || Node.isAsExpression(current) || Node.isTypeAssertion(current) || Node.isNonNullExpression(current)) {\n current = current.getExpression();\n }\n return current;\n}\nfunction numericValue(expression) {\n const current = unwrapExpression(expression);\n if (Node.isNumericLiteral(current)) return Number(current.getText());\n if (Node.isPrefixUnaryExpression(current)) {\n const operand = current.getOperand();\n if (!Node.isNumericLiteral(operand)) return null;\n const value = Number(operand.getText());\n const operator = current.getOperatorToken();\n if (operator === SyntaxKind.MinusToken) return -value;\n if (operator === SyntaxKind.PlusToken) return value;\n }\n return null;\n}\nfunction staticLeafValue(expression) {\n const current = unwrapExpression(expression);\n if (Node.isStringLiteral(current) || Node.isNoSubstitutionTemplateLiteral(current)) {\n return { found: true, value: current.getLiteralValue() };\n }\n const number = numericValue(current);\n if (number !== null) return { found: true, value: number };\n if (current.getKind() === SyntaxKind.TrueKeyword) return { found: true, value: true };\n if (current.getKind() === SyntaxKind.FalseKeyword) return { found: true, value: false };\n if (current.getKind() === SyntaxKind.NullKeyword) return { found: true, value: null };\n return null;\n}\nfunction literalText(value, registry) {\n if (!value.includes(\"$\")) return { text: value, error: null };\n const flat = flatStringValue(value, registry);\n if (flat.text === null) {\n return {\n text: value,\n error: {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n message: flat.error?.message ?? `\"${value}\" has no flat spelling`\n }\n };\n }\n return { text: flat.text, error: null };\n}\nfunction templateTree(template, registry) {\n const head = literalText(template.getHead().getLiteralText(), registry);\n let error = head.error;\n let text = `\\`${head.text}`;\n const strings = [template.getHead().getLiteralText()];\n for (const span of template.getTemplateSpans()) {\n const literal = span.getLiteral().getLiteralText();\n const tail = literalText(literal, registry);\n error ??= tail.error;\n strings.push(literal);\n text += `\\${${span.getExpression().getText().trim()}}${tail.text}`;\n }\n return { kind: \"string\", text: `${text}\\``, strings, error };\n}\nfunction literalTree(expression, registry) {\n const current = unwrapExpression(expression);\n if (Node.isStringLiteral(current) || Node.isNoSubstitutionTemplateLiteral(current)) {\n const value = current.getLiteralValue();\n const literal = literalText(value, registry);\n return {\n kind: \"string\",\n text: JSON.stringify(literal.text),\n strings: [value],\n error: literal.error\n };\n }\n if (Node.isTemplateExpression(current)) return templateTree(current, registry);\n const number = numericValue(current);\n if (number !== null) {\n return { kind: \"number\", text: String(number), strings: [], error: null };\n }\n if (current.getKind() === SyntaxKind.UndefinedKeyword || current.getKind() === SyntaxKind.NullKeyword || Node.isIdentifier(current) && current.getText() === \"undefined\") {\n return { kind: \"nullish\", text: current.getText(), strings: [], error: null };\n }\n if (Node.isConditionalExpression(current)) {\n const whenTrue = literalTree(current.getWhenTrue(), registry);\n const whenFalse = literalTree(current.getWhenFalse(), registry);\n if (!whenTrue || !whenFalse) return null;\n if (whenTrue.kind !== whenFalse.kind && whenTrue.kind !== \"nullish\" && whenFalse.kind !== \"nullish\") {\n return null;\n }\n return {\n kind: whenTrue.kind === \"nullish\" ? whenFalse.kind : whenTrue.kind,\n text: `${current.getCondition().getText().trim()} ? ${whenTrue.text} : ${whenFalse.text}`,\n strings: [...whenTrue.strings, ...whenFalse.strings],\n error: whenTrue.error ?? whenFalse.error\n };\n }\n return null;\n}\nfunction runtimeType(expression) {\n const type = unwrapExpression(expression).getType();\n const parts = type.isUnion() ? type.getUnionTypes() : [type];\n const literals = [];\n let numbers = 0;\n let strings = 0;\n let known = 0;\n for (const part of parts) {\n if (part.isUndefined() || part.isNull()) continue;\n known++;\n if (part.isNumber() || part.isNumberLiteral()) {\n numbers++;\n continue;\n }\n if (part.isStringLiteral()) {\n strings++;\n literals.push(String(part.getLiteralValue()));\n continue;\n }\n if (part.isString()) {\n strings++;\n continue;\n }\n return { kind: \"unknown\", literals: null };\n }\n if (!known) return { kind: \"unknown\", literals: null };\n if (numbers === known) return { kind: \"number\", literals: null };\n if (strings === known) {\n return { kind: \"string\", literals: literals.length === known ? literals : null };\n }\n return { kind: \"unknown\", literals: null };\n}\nfunction compact(text) {\n return text.replace(/\\s+/g, \" \").trim();\n}\nexport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n};\n//# sourceMappingURL=expressions.js.map\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"expressions.js","names":[],"sources":["expressions.js"],"sourcesContent":["import { Node, SyntaxKind } from \"ts-morph\";\nimport { flatStringValue } from \"./grammar\";\nfunction unwrapExpression(expression) {\n let current = expression;\n while (Node.isParenthesizedExpression(current) || Node.isAsExpression(current) || Node.isTypeAssertion(current) || Node.isNonNullExpression(current)) {\n current = current.getExpression();\n }\n return current;\n}\nfunction numericValue(expression) {\n const current = unwrapExpression(expression);\n if (Node.isNumericLiteral(current)) return Number(current.getText());\n if (Node.isPrefixUnaryExpression(current)) {\n const operand = current.getOperand();\n if (!Node.isNumericLiteral(operand)) return null;\n const value = Number(operand.getText());\n const operator = current.getOperatorToken();\n if (operator === SyntaxKind.MinusToken) return -value;\n if (operator === SyntaxKind.PlusToken) return value;\n }\n return null;\n}\nfunction staticLeafValue(expression) {\n const current = unwrapExpression(expression);\n if (Node.isStringLiteral(current) || Node.isNoSubstitutionTemplateLiteral(current)) {\n return { found: true, value: current.getLiteralValue() };\n }\n const number = numericValue(current);\n if (number !== null) return { found: true, value: number };\n if (current.getKind() === SyntaxKind.TrueKeyword) return { found: true, value: true };\n if (current.getKind() === SyntaxKind.FalseKeyword) return { found: true, value: false };\n if (current.getKind() === SyntaxKind.NullKeyword) return { found: true, value: null };\n return null;\n}\nfunction literalText(value, registry) {\n if (!value.includes(\"$\")) return { text: value, error: null };\n const flat = flatStringValue(value, registry);\n if (flat.text === null) {\n return {\n text: value,\n error: {\n code: flat.error?.code ?? \"unsupported-legacy-value\",\n message: flat.error?.message ?? `\"${value}\" has no flat spelling`\n }\n };\n }\n return { text: flat.text, error: null };\n}\nfunction templateTree(template, registry) {\n const head = literalText(template.getHead().getLiteralText(), registry);\n let error = head.error;\n let text = `\\`${head.text}`;\n const strings = [template.getHead().getLiteralText()];\n for (const span of template.getTemplateSpans()) {\n const literal = span.getLiteral().getLiteralText();\n const tail = literalText(literal, registry);\n error ??= tail.error;\n strings.push(literal);\n text += `\\${${span.getExpression().getText().trim()}}${tail.text}`;\n }\n return { kind: \"string\", text: `${text}\\``, strings, error };\n}\nfunction literalTree(expression, registry) {\n const current = unwrapExpression(expression);\n if (Node.isStringLiteral(current) || Node.isNoSubstitutionTemplateLiteral(current)) {\n const value = current.getLiteralValue();\n const literal = literalText(value, registry);\n return {\n kind: \"string\",\n text: JSON.stringify(literal.text),\n strings: [value],\n error: literal.error\n };\n }\n if (Node.isTemplateExpression(current)) return templateTree(current, registry);\n const number = numericValue(current);\n if (number !== null) {\n return { kind: \"number\", text: String(number), strings: [], error: null };\n }\n if (current.getKind() === SyntaxKind.UndefinedKeyword || current.getKind() === SyntaxKind.NullKeyword || Node.isIdentifier(current) && current.getText() === \"undefined\") {\n return { kind: \"nullish\", text: current.getText(), strings: [], error: null };\n }\n if (Node.isConditionalExpression(current)) {\n const whenTrue = literalTree(current.getWhenTrue(), registry);\n const whenFalse = literalTree(current.getWhenFalse(), registry);\n if (!whenTrue || !whenFalse) return null;\n if (whenTrue.kind !== whenFalse.kind && whenTrue.kind !== \"nullish\" && whenFalse.kind !== \"nullish\") {\n return null;\n }\n return {\n kind: whenTrue.kind === \"nullish\" ? whenFalse.kind : whenTrue.kind,\n text: `${current.getCondition().getText().trim()} ? ${whenTrue.text} : ${whenFalse.text}`,\n strings: [...whenTrue.strings, ...whenFalse.strings],\n error: whenTrue.error ?? whenFalse.error\n };\n }\n return null;\n}\nfunction runtimeType(expression) {\n const type = unwrapExpression(expression).getType();\n const parts = type.isUnion() ? type.getUnionTypes() : [type];\n const literals = [];\n let numbers = 0;\n let strings = 0;\n let known = 0;\n for (const part of parts) {\n if (part.isUndefined() || part.isNull()) continue;\n known++;\n if (part.isNumber() || part.isNumberLiteral()) {\n numbers++;\n continue;\n }\n if (part.isStringLiteral()) {\n strings++;\n literals.push(String(part.getLiteralValue()));\n continue;\n }\n if (part.isString() || part.isTemplateLiteral()) {\n strings++;\n continue;\n }\n return { kind: \"unknown\", literals: null };\n }\n if (!known) return { kind: \"unknown\", literals: null };\n if (numbers === known) return { kind: \"number\", literals: null };\n if (strings === known) {\n return { kind: \"string\", literals: literals.length === known ? literals : null };\n }\n return { kind: \"unknown\", literals: null };\n}\nfunction compact(text) {\n return text.replace(/\\s+/g, \" \").trim();\n}\nexport {\n compact,\n literalTree,\n numericValue,\n runtimeType,\n staticLeafValue,\n unwrapExpression\n};\n//# sourceMappingURL=expressions.js.map\n"],"mappings":"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"}
|
package/dist/grammar.mjs
CHANGED
|
@@ -6,18 +6,21 @@ import { convertLegacyConditionProp as convertLegacyConditionProp$1, pseudoToMod
|
|
|
6
6
|
|
|
7
7
|
const grammar = styleGrammarTooling;
|
|
8
8
|
const { assessFlatConversion, createModifierRegistry, defaultMediaKeys, evaluateProgram, expandToLonghands, grammarEntries, grammarPlatformNames, legacyPartComposite, mergeProgramValues, parseValue, programEligibility, standaloneValueProps, parseTransformString } = grammar;
|
|
9
|
-
function
|
|
9
|
+
function normalizeV3Payload(value, prop = "") {
|
|
10
|
+
if (typeof value === "number" && Number.isFinite(value) && (prop === "lineHeight" || prop === "lh")) {
|
|
11
|
+
return String(value);
|
|
12
|
+
}
|
|
10
13
|
if (typeof value === "string") return replaceV6BuiltInTokens(value);
|
|
11
|
-
if (Array.isArray(value)) return value.map(
|
|
14
|
+
if (Array.isArray(value)) return value.map((item) => normalizeV3Payload(item, prop));
|
|
12
15
|
if (value === null || typeof value !== "object") return value;
|
|
13
16
|
const renamed = {};
|
|
14
17
|
for (const key in value) {
|
|
15
|
-
renamed[key] =
|
|
18
|
+
renamed[key] = normalizeV3Payload(value[key], key);
|
|
16
19
|
}
|
|
17
20
|
return renamed;
|
|
18
21
|
}
|
|
19
22
|
function convertLegacyConditionProp(propName, value, options) {
|
|
20
|
-
return convertLegacyConditionProp$1(propName,
|
|
23
|
+
return convertLegacyConditionProp$1(propName, normalizeV3Payload(value), options);
|
|
21
24
|
}
|
|
22
25
|
const styleProps = /* @__PURE__ */ new Set([
|
|
23
26
|
...grammarEntries.map((entry) => entry.prop),
|
package/dist/grammar.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","names":["convertLegacyConditionPropLocal"],"sources":["grammar.js"],"sourcesContent":["import { stylePropsAll } from \"@tamagui/helpers\";\nimport { shorthands } from \"@tamagui/shorthands/v6\";\nimport * as styleGrammarTooling from \"@tamagui/style-grammar/tooling\";\nimport { replaceV6BuiltInTokens } from \"./builtInNames\";\nimport {\n convertLegacyConditionProp as convertLegacyConditionPropLocal,\n pseudoToModifier\n} from \"./legacyConditions\";\nconst grammar = styleGrammarTooling;\nconst {\n assessFlatConversion,\n createModifierRegistry,\n defaultMediaKeys,\n evaluateProgram,\n expandToLonghands,\n grammarEntries,\n grammarPlatformNames,\n legacyPartComposite,\n mergeProgramValues,\n parseValue,\n programEligibility,\n standaloneValueProps,\n parseTransformString\n} = grammar;\nfunction
|
|
1
|
+
{"version":3,"file":"grammar.js","names":["convertLegacyConditionPropLocal"],"sources":["grammar.js"],"sourcesContent":["import { stylePropsAll } from \"@tamagui/helpers\";\nimport { shorthands } from \"@tamagui/shorthands/v6\";\nimport * as styleGrammarTooling from \"@tamagui/style-grammar/tooling\";\nimport { replaceV6BuiltInTokens } from \"./builtInNames\";\nimport {\n convertLegacyConditionProp as convertLegacyConditionPropLocal,\n pseudoToModifier\n} from \"./legacyConditions\";\nconst grammar = styleGrammarTooling;\nconst {\n assessFlatConversion,\n createModifierRegistry,\n defaultMediaKeys,\n evaluateProgram,\n expandToLonghands,\n grammarEntries,\n grammarPlatformNames,\n legacyPartComposite,\n mergeProgramValues,\n parseValue,\n programEligibility,\n standaloneValueProps,\n parseTransformString\n} = grammar;\nfunction normalizeV3Payload(value, prop = \"\") {\n if (typeof value === \"number\" && Number.isFinite(value) && (prop === \"lineHeight\" || prop === \"lh\")) {\n return String(value);\n }\n if (typeof value === \"string\") return replaceV6BuiltInTokens(value);\n if (Array.isArray(value)) return value.map((item) => normalizeV3Payload(item, prop));\n if (value === null || typeof value !== \"object\") return value;\n const renamed = {};\n for (const key in value) {\n renamed[key] = normalizeV3Payload(value[key], key);\n }\n return renamed;\n}\nfunction convertLegacyConditionProp(propName, value, options) {\n return convertLegacyConditionPropLocal(propName, normalizeV3Payload(value), options);\n}\nconst styleProps = /* @__PURE__ */ new Set([\n ...grammarEntries.map((entry) => entry.prop),\n ...Object.keys(standaloneValueProps),\n ...Object.keys(stylePropsAll),\n ...Object.keys(shorthands),\n ...Object.values(shorthands)\n]);\nconst tokenVariantProps = /* @__PURE__ */ new Set([\n \"size\",\n \"elevation\",\n \"iconSize\"\n]);\nconst codemodMediaNames = [\n ...defaultMediaKeys,\n \"motionReduce\",\n \"motionSafe\"\n];\nfunction resolveProp(prop) {\n return shorthands[prop] ?? prop;\n}\nconst payloadProbeCondition = \"$platform-web\";\nfunction sharedPayload(prop, value, registry) {\n const converted = convertLegacyConditionProp(\n payloadProbeCondition,\n { [prop]: value },\n { registry }\n );\n if (converted === null) {\n throw new Error(\n `the payload probe condition \"${payloadProbeCondition}\" is unregistered`\n );\n }\n return {\n payload: converted.contributions[0]?.clause.payload ?? null,\n errors: converted.errors\n };\n}\nconst stringProbeProp = \"color\";\nfunction flatStringValue(value, registry) {\n const probe = sharedPayload(stringProbeProp, value, registry);\n return { text: probe.payload, error: probe.errors[0] ?? null };\n}\nconst unitSuffixes = /* @__PURE__ */ new Map();\nfunction unitSuffix(prop, registry) {\n const cached = unitSuffixes.get(prop);\n if (cached !== void 0) return cached;\n const probe = sharedPayload(prop, 1, registry);\n const suffix = probe.payload !== null && probe.payload.startsWith(\"1\") ? probe.payload.slice(1) : \"\";\n unitSuffixes.set(prop, suffix);\n return suffix;\n}\nconst printProgram = grammar.formatParsedValue;\nexport {\n assessFlatConversion,\n codemodMediaNames,\n convertLegacyConditionProp,\n createModifierRegistry,\n defaultMediaKeys,\n evaluateProgram,\n expandToLonghands,\n flatStringValue,\n grammarEntries,\n grammarPlatformNames,\n legacyPartComposite,\n mergeProgramValues,\n parseTransformString,\n parseValue,\n printProgram,\n programEligibility,\n pseudoToModifier,\n resolveProp,\n sharedPayload,\n shorthands,\n standaloneValueProps,\n styleProps,\n tokenVariantProps,\n unitSuffix\n};\n//# sourceMappingURL=grammar.js.map\n"],"mappings":";;;;;;;AAQA,MAAM,UAAU;AAChB,MAAM,EACJ,sBACA,wBACA,kBACA,iBACA,mBACA,gBACA,sBACA,qBACA,oBACA,YACA,oBACA,sBACA,yBACE;AACJ,SAAS,mBAAmB,OAAO,OAAO,IAAI;CAC5C,IAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,MAAM,SAAS,gBAAgB,SAAS,OAAO;EACnG,OAAO,OAAO,KAAK;CACrB;CACA,IAAI,OAAO,UAAU,UAAU,OAAO,uBAAuB,KAAK;CAClE,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,KAAK,SAAS,mBAAmB,MAAM,IAAI,CAAC;CACnF,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU,OAAO;CACxD,MAAM,UAAU,CAAC;CACjB,KAAK,MAAM,OAAO,OAAO;EACvB,QAAQ,OAAO,mBAAmB,MAAM,MAAM,GAAG;CACnD;CACA,OAAO;AACT;AACA,SAAS,2BAA2B,UAAU,OAAO,SAAS;CAC5D,OAAOA,6BAAgC,UAAU,mBAAmB,KAAK,GAAG,OAAO;AACrF;AACA,MAAM,6BAA6B,IAAI,IAAI;CACzC,GAAG,eAAe,KAAK,UAAU,MAAM,IAAI;CAC3C,GAAG,OAAO,KAAK,oBAAoB;CACnC,GAAG,OAAO,KAAK,aAAa;CAC5B,GAAG,OAAO,KAAK,UAAU;CACzB,GAAG,OAAO,OAAO,UAAU;AAC7B,CAAC;AACD,MAAM,oCAAoC,IAAI,IAAI;CAChD;CACA;CACA;AACF,CAAC;AACD,MAAM,oBAAoB;CACxB,GAAG;CACH;CACA;AACF;AACA,SAAS,YAAY,MAAM;CACzB,OAAO,WAAW,SAAS;AAC7B;AACA,MAAM,wBAAwB;AAC9B,SAAS,cAAc,MAAM,OAAO,UAAU;CAC5C,MAAM,YAAY,2BAChB,uBACA,GAAG,OAAO,MAAM,GAChB,EAAE,SAAS,CACb;CACA,IAAI,cAAc,MAAM;EACtB,MAAM,IAAI,MACR,gCAAgC,sBAAsB,kBACxD;CACF;CACA,OAAO;EACL,SAAS,UAAU,cAAc,EAAE,EAAE,OAAO,WAAW;EACvD,QAAQ,UAAU;CACpB;AACF;AACA,MAAM,kBAAkB;AACxB,SAAS,gBAAgB,OAAO,UAAU;CACxC,MAAM,QAAQ,cAAc,iBAAiB,OAAO,QAAQ;CAC5D,OAAO;EAAE,MAAM,MAAM;EAAS,OAAO,MAAM,OAAO,MAAM;CAAK;AAC/D;AACA,MAAM,+BAA+B,IAAI,IAAI;AAC7C,SAAS,WAAW,MAAM,UAAU;CAClC,MAAM,SAAS,aAAa,IAAI,IAAI;CACpC,IAAI,WAAW,KAAK,GAAG,OAAO;CAC9B,MAAM,QAAQ,cAAc,MAAM,GAAG,QAAQ;CAC7C,MAAM,SAAS,MAAM,YAAY,QAAQ,MAAM,QAAQ,WAAW,GAAG,IAAI,MAAM,QAAQ,MAAM,CAAC,IAAI;CAClG,aAAa,IAAI,MAAM,MAAM;CAC7B,OAAO;AACT;AACA,MAAM,eAAe,QAAQ"}
|