{"version":3,"file":"index.mjs","sources":["../../../src/plugin/utils/plugin-error.ts","../../../src/plugin/utils/helpers.ts","../../../src/plugin/utils/constants.ts","../../../src/plugin/utils/common/optimized-host.ts","../../../src/plugin/utils/returned-props.ts","../../../src/plugin/utils/common/attributes.ts","../../../src/plugin/utils/common/intrinsic-ancestors.ts","../../../src/plugin/utils/common/validation.ts","../../../src/plugin/utils/common/base.ts","../../../src/plugin/utils/literal-spreads.ts","../../../src/plugin/utils/optimizer.ts","../../../src/plugin/utils/static-accessibility.ts","../../../src/plugin/optimizers/native-text/index.ts","../../../src/plugin/optimizers/native-image/index.ts","../../../src/plugin/utils/logger.ts","../../../src/plugin/optimizers/native-view/index.ts","../../../src/plugin/utils/unistyles.ts","../../../src/plugin/optimizers/native-activity-indicator/index.ts","../../../src/plugin/optimizers/animated-value-initialization/index.ts","../../../src/plugin/optimizers/animated-wrapper-removal/index.ts","../../../src/plugin/optimizers/stylesheet-operations/index.ts","../../../src/plugin/optimizers/platform-folding/index.ts","../../../src/plugin/utils/options.ts","../../../src/plugin/utils/ancestor-snapshot.ts","../../../src/plugin/utils/react-native-target.ts","../../../src/plugin/index.ts"],"sourcesContent":["export default class PluginError extends Error {\n  constructor(message: string) {\n    super(`[react-native-boost] ${message}`);\n    this.name = 'PluginError';\n  }\n}\n","export const ensureArray = <T>(value: T | T[]): T[] => {\n  if (Array.isArray(value)) return value;\n  return [value];\n};\n\nexport type BailoutCheck = {\n  reason: string;\n  shouldBail: () => boolean;\n};\n\nexport const getFirstBailoutReason = (checks: readonly BailoutCheck[]): string | null => {\n  for (const check of checks) {\n    if (check.shouldBail()) {\n      return check.reason;\n    }\n  }\n\n  return null;\n};\n","export const RUNTIME_MODULE_NAME = 'react-native-boost/runtime';\n\n/**\n * The npm package name of Unistyles, used both for the install probe (auto-detecting \"Unistyles mode\")\n * and for classifying a `StyleSheet.create` call's origin.\n */\nexport const UNISTYLES_MODULE_NAME = 'react-native-unistyles';\n\n/**\n * Unistyles' own \"lean\" host components — `createUnistylesElement(RCTText/RCTView)`. Routing a\n * Unistyles-styled element to these keeps Unistyles' shadow-tree registration (so reactivity survives)\n * while still skipping React Native's `Text`/`View` wrapper, which is the optimization Boost provides.\n * `NativeText` is a named export; `NativeView` is the module's default export (it mirrors RN's default\n * `View` export). These subpaths are part of Unistyles' `./components/native/*` exports map.\n */\nexport const UNISTYLES_NATIVE_TEXT_MODULE = `${UNISTYLES_MODULE_NAME}/components/native/NativeText`;\nexport const UNISTYLES_NATIVE_VIEW_MODULE = `${UNISTYLES_MODULE_NAME}/components/native/NativeView`;\n\n/**\n * The set of accessibility properties that need to be normalized.\n */\nexport const ACCESSIBILITY_PROPERTIES = new Set([\n  'accessibilityLabel',\n  'aria-label',\n  'accessibilityState',\n  'aria-busy',\n  'aria-checked',\n  'aria-disabled',\n  'aria-expanded',\n  'aria-hidden',\n  'aria-selected',\n  'accessible',\n]);\n\n// Maps the `userSelect` values to the corresponding boolean for the `selectable` prop\nexport const USER_SELECT_STYLE_TO_SELECTABLE_PROP: Record<string, boolean> = {\n  auto: true,\n  text: true,\n  none: false,\n  contain: true,\n  all: true,\n};\n\n// Maps the CSS-like `verticalAlign` values to React Native's `textAlignVertical`. Build-time mirror of\n// the runtime `verticalAlignToTextAlignVerticalMap`; the two must stay in sync, as a drift would make\n// a build-time-merged static style diverge from the runtime helper's result for the same input.\nexport const VERTICAL_ALIGN_TO_TEXT_ALIGN_VERTICAL: Record<string, string> = {\n  auto: 'auto',\n  top: 'top',\n  bottom: 'bottom',\n  middle: 'center',\n};\n","import { types as t } from '@babel/core';\n\nexport type ReactNativeComponentName = 'Image' | 'ScrollView' | 'Text' | 'View';\n\n// Babel cannot resolve an import added during the current visitor without another scope crawl.\nconst reactNativeComponents = new WeakMap<t.JSXOpeningElement, ReactNativeComponentName>();\n\nexport const markReactNativeComponent = (\n  openingElement: t.JSXOpeningElement,\n  component: ReactNativeComponentName\n): void => {\n  reactNativeComponents.set(openingElement, component);\n};\n\nexport const getMarkedReactNativeComponent = (\n  openingElement: t.JSXOpeningElement\n): ReactNativeComponentName | undefined => reactNativeComponents.get(openingElement);\n","import { type NodePath, types as t } from '@babel/core';\nimport type { SpreadKeys, SpreadSummary } from '../../ancestor-types';\nimport type { HubFile } from '../types';\n\ntype Binding = NonNullable<ReturnType<NodePath['scope']['getBinding']>>;\n\nexport function getCallReturnKeys(path: NodePath, call: t.CallExpression): SpreadKeys {\n  if (!t.isIdentifier(call.callee)) return null;\n  const summary = summarizeBinding(path.scope.getBinding(call.callee.name));\n  if (summary === null || Array.isArray(summary)) return summary;\n  const file = (path.hub as unknown as { file: HubFile }).file;\n  const { source, imported } = summary;\n  const value = file.__spreadImports?.[source]?.[imported];\n  const keys = Array.isArray(value) ? value : null;\n  file.__spreadReferences?.set(`${source}\\0${imported}`, { source, imported, keys });\n  return keys;\n}\n\nexport function analyzeSpreadExports(path: NodePath<t.Program>): Record<string, SpreadSummary> {\n  const exports: Record<string, SpreadSummary> = Object.create(null);\n  for (const statement of path.get('body')) {\n    if (statement.isExportDefaultDeclaration()) {\n      const declaration = statement.get('declaration');\n      exports.default = declaration.isIdentifier()\n        ? summarizeBinding(declaration.scope.getBinding(declaration.node.name))\n        : declaration.isFunctionDeclaration() && declaration.node.id\n          ? summarizeBinding(declaration.scope.getBinding(declaration.node.id.name))\n          : getReturnedKeys(declaration);\n    }\n    if (!statement.isExportNamedDeclaration() || statement.node.exportKind === 'type') continue;\n    const declaration = statement.get('declaration');\n    if (declaration.node) {\n      for (const name of Object.keys(t.getOuterBindingIdentifiers(declaration.node))) {\n        exports[name] = summarizeBinding(path.scope.getBinding(name));\n      }\n    }\n    for (const specifier of statement.node.specifiers) {\n      if (t.isExportSpecifier(specifier) && specifier.exportKind === 'type') continue;\n      const exported = t.isIdentifier(specifier.exported) ? specifier.exported.name : specifier.exported.value;\n      exports[exported] = null;\n      if (!t.isExportSpecifier(specifier)) continue;\n      const local = specifier.local.name;\n      exports[exported] = statement.node.source\n        ? { kind: 'import', source: statement.node.source.value, imported: local }\n        : summarizeBinding(path.scope.getBinding(local));\n    }\n  }\n  return exports;\n}\n\nfunction summarizeBinding(binding: Binding | undefined): SpreadSummary {\n  if (!binding?.constant) return null;\n  const path = binding.path;\n  if (path.isImportSpecifier() || path.isImportDefaultSpecifier()) {\n    const declaration = path.parent;\n    if (!t.isImportDeclaration(declaration) || declaration.importKind === 'type') return null;\n    if (path.isImportSpecifier() && path.node.importKind === 'type') return null;\n    const imported = path.isImportDefaultSpecifier()\n      ? 'default'\n      : t.isIdentifier(path.node.imported)\n        ? path.node.imported.name\n        : path.node.imported.value;\n    return { kind: 'import', source: declaration.source.value, imported };\n  }\n  return getReturnedKeys(path.isVariableDeclarator() ? path.get('init') : path);\n}\n\nfunction getReturnedKeys(path: NodePath<t.Node | null | undefined>): SpreadKeys {\n  if (!path.isFunctionDeclaration() && !path.isFunctionExpression() && !path.isArrowFunctionExpression()) return null;\n  if (path.node.async || path.node.generator) return null;\n  const keys = new Set<string>();\n  let valid = true;\n  const body = (path as NodePath<t.Function>).get('body');\n  if (!body.isBlockStatement()) return expressionKeys(body, path);\n  path.traverse({\n    CallExpression(call) {\n      // Direct eval can access a local object without a binding reference in the AST.\n      if (t.isIdentifier(call.node.callee, { name: 'eval' })) {\n        valid = false;\n        call.stop();\n      }\n    },\n    ReturnStatement(statement) {\n      if (statement.getFunctionParent() !== path) return;\n      const returned = expressionKeys(statement.get('argument'), path);\n      if (returned === null) {\n        valid = false;\n        statement.stop();\n      } else for (const key of returned) keys.add(key);\n    },\n  });\n  return valid ? [...keys].sort() : null;\n}\n\nfunction expressionKeys(expression: NodePath<t.Node | null | undefined>, owner: NodePath): SpreadKeys {\n  if (!expression.node || expression.isNullLiteral()) return [];\n  if (expression.isConditionalExpression()) {\n    const left = expressionKeys(expression.get('consequent'), owner);\n    const right = expressionKeys(expression.get('alternate'), owner);\n    return left && right ? [...new Set([...left, ...right])].sort() : null;\n  }\n  if (expression.isObjectExpression()) return objectKeys(expression.node);\n  if (!expression.isIdentifier()) return null;\n  const binding = expression.scope.getBinding(expression.node.name);\n  if (!binding?.constant || !binding.path.isVariableDeclarator() || binding.path.getFunctionParent() !== owner)\n    return null;\n  const initial = binding.path.node.init;\n  if (!t.isObjectExpression(initial)) return null;\n  const keys = objectKeys(initial);\n  if (keys === null) return null;\n  for (const reference of binding.referencePaths) {\n    if (reference.getFunctionParent() !== owner) return null;\n    const parent = reference.parentPath;\n    if (parent?.isReturnStatement() && reference.key === 'argument') continue;\n    if (!parent?.isMemberExpression() || reference.key !== 'object') return null;\n    const assignment = parent.parentPath;\n    if (!assignment?.isAssignmentExpression({ operator: '=' }) || parent.key !== 'left') return null;\n    const key = propertyKey(parent.node.property, parent.node.computed);\n    if (key === null) return null;\n    keys.push(key);\n  }\n  return [...new Set(keys)].sort();\n}\n\nfunction objectKeys(object: t.ObjectExpression): SpreadKeys {\n  const keys: string[] = [];\n  for (const property of object.properties) {\n    if (!t.isObjectProperty(property)) return null;\n    const key = propertyKey(property.key, property.computed);\n    if (key === null) return null;\n    keys.push(key);\n  }\n  return [...new Set(keys)].sort();\n}\n\nfunction propertyKey(node: t.Node, computed: boolean): string | null {\n  const key = t.isStringLiteral(node) ? node.value : !computed && t.isIdentifier(node) ? node.name : null;\n  return key === '__proto__' ? null : key;\n}\n","import { NodePath, types as t } from '@babel/core';\nimport { getCallReturnKeys } from '../returned-props';\nimport { ACCESSIBILITY_PROPERTIES } from '../constants';\nimport { USER_SELECT_STYLE_TO_SELECTABLE_PROP, VERTICAL_ALIGN_TO_TEXT_ALIGN_VERTICAL } from '../constants';\n\n// A key that matches this can be emitted as a bare `t.identifier`; anything else (e.g. `aria-label`)\n// must become a string-literal property key.\nconst VALID_JS_IDENTIFIER = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\n\n/**\n * Checks if the JSX element has a blacklisted property.\n *\n * @param path - The path to the JSXOpeningElement.\n * @param blacklist - The set of blacklisted properties.\n * @returns true if the JSX element has a blacklisted property.\n */\nexport const hasBlacklistedProperty = (path: NodePath<t.JSXOpeningElement>, blacklist: Set<string>): boolean => {\n  return path.node.attributes.some((attribute) => {\n    // Check direct attributes (e.g., onPress={handler})\n    if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && blacklist.has(attribute.name.name)) {\n      return true;\n    }\n\n    if (t.isJSXSpreadAttribute(attribute)) return spreadMayContainProperty(path, attribute.argument, blacklist);\n\n    // For other attribute types, assume no blacklisting\n    return false;\n  });\n};\n\n/**\n * Like {@link hasBlacklistedProperty}, but only inspects spread attributes — direct attributes are\n * ignored. Callers that can rewrite a direct attribute (e.g. the `id` → `nativeID` rename) handle it\n * separately, but still need the conservative spread bail: an unresolvable spread, or a resolvable\n * spread whose object contains a guarded key, could smuggle the prop through untranslated. The spread\n * guard accepts proved helper returns; the Text/Image blacklist checks still reject those calls.\n *\n * @param path - The path to the JSXOpeningElement.\n * @param keys - The set of guarded keys.\n * @returns true if any spread attribute could contribute one of `keys`.\n */\nexport const hasBlacklistedPropertyInSpread = (path: NodePath<t.JSXOpeningElement>, keys: Set<string>): boolean =>\n  path.node.attributes.some((attribute) => {\n    if (!t.isJSXSpreadAttribute(attribute)) return false;\n    if (!t.isCallExpression(attribute.argument)) return spreadMayContainProperty(path, attribute.argument, keys);\n    const returnedKeys = getCallReturnKeys(path, attribute.argument);\n    return returnedKeys === null || returnedKeys.some((key) => keys.has(key));\n  });\n\nfunction spreadMayContainProperty(\n  path: NodePath<t.JSXOpeningElement>,\n  argument: t.Expression,\n  keys: Set<string>\n): boolean {\n  if (!t.isIdentifier(argument)) return true;\n  const binding = path.scope.getBinding(argument.name);\n  if (\n    !binding?.constant ||\n    !binding.path.isVariableDeclarator() ||\n    !t.isObjectExpression(binding.path.node.init) ||\n    binding.referencePaths.some((reference) => !reference.parentPath?.isJSXSpreadAttribute())\n  ) {\n    return true;\n  }\n  return binding.path.node.init.properties.some(\n    (property) =>\n      !t.isObjectProperty(property) ||\n      property.computed ||\n      (t.isIdentifier(property.key)\n        ? keys.has(property.key.name)\n        : t.isStringLiteral(property.key)\n          ? keys.has(property.key.value)\n          : true)\n  );\n}\n\n/**\n * Mirrors the `Text` wrapper's `id ?? nativeID` precedence: renames a direct `id` JSX attribute to\n * `nativeID`, and when both are present drops the explicit `nativeID` so `id` wins. Only direct\n * attributes are touched — `id`/`nativeID` arriving via a spread are left for the caller's bailout\n * logic (see {@link hasBlacklistedPropertyInSpread}). The ambiguous \"both present and `id` is not\n * statically non-null\" case is expected to have already bailed (see {@link hasAmbiguousIdNativeID}).\n * Mutates `path.node.attributes` in place. (The `View` optimizer emits its rename last instead, to\n * win over a pass-through spread, so it does not use this helper.)\n */\nexport const renameIdToNativeID = (path: NodePath<t.JSXOpeningElement>): void => {\n  let idAttribute: t.JSXAttribute | undefined;\n  let nativeIdAttribute: t.JSXAttribute | undefined;\n\n  for (const attribute of path.node.attributes) {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) continue;\n    if (attribute.name.name === 'id') idAttribute = attribute;\n    else if (attribute.name.name === 'nativeID') nativeIdAttribute = attribute;\n  }\n\n  // A lone `nativeID` is already the native key — nothing to do.\n  if (!idAttribute) return;\n\n  idAttribute.name = t.jsxIdentifier('nativeID');\n  if (nativeIdAttribute) {\n    path.node.attributes = path.node.attributes.filter((attribute) => attribute !== nativeIdAttribute);\n  }\n};\n\n/**\n * Returns true when both a direct `id` and a direct `nativeID` attribute are present and the `id`\n * value is not statically provable to be non-null. The wrapper precedence is `id ?? nativeID`, so a\n * runtime-null `id` falls back to `nativeID`; a static rename cannot replicate that fallback, so the\n * caller must bail. When only `id` is present the rename is always safe (a null `id` yields\n * `nativeID={null}`, equivalent to omitted for the native host), so this guards the both-present\n * intersection only.\n */\nexport const hasAmbiguousIdNativeID = (path: NodePath<t.JSXOpeningElement>): boolean => {\n  let idAttribute: t.JSXAttribute | undefined;\n  let hasNativeId = false;\n\n  for (const attribute of path.node.attributes) {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) continue;\n    if (attribute.name.name === 'id') idAttribute = attribute;\n    else if (attribute.name.name === 'nativeID') hasNativeId = true;\n  }\n\n  if (!idAttribute || !hasNativeId) return false;\n\n  return !isStaticallyNonNullValue(idAttribute.value);\n};\n\n/**\n * Whether a JSX attribute value is statically provable to be non-null (and non-undefined). A shorthand\n * boolean attribute (no value), a string literal, or an expression container wrapping a string/number/\n * boolean/bigint/template literal qualifies. Anything that could evaluate to `null`/`undefined` at\n * runtime (identifiers, member/call expressions, `null`, `undefined`) does not.\n */\nconst isStaticallyNonNullValue = (value: t.JSXAttribute['value']): boolean => {\n  if (!value) return true; // shorthand attribute → boolean `true`\n  if (t.isStringLiteral(value)) return true;\n  if (t.isJSXExpressionContainer(value)) {\n    const { expression } = value;\n    return (\n      t.isStringLiteral(expression) ||\n      t.isNumericLiteral(expression) ||\n      t.isBooleanLiteral(expression) ||\n      t.isBigIntLiteral(expression) ||\n      t.isTemplateLiteral(expression)\n    );\n  }\n  return false;\n};\n\n/**\n * Adds a default property to a JSX element if it's not already defined. It avoids adding a default\n * if it cannot statically determine whether the property is already set.\n *\n * @param path - The path to the JSXOpeningElement.\n * @param key - The property key.\n * @param value - The default value expression.\n */\nexport const addDefaultProperty = (path: NodePath<t.JSXOpeningElement>, key: string, value: t.Expression) => {\n  let propertyIsFound = false;\n  let hasUnresolvableSpread = false;\n\n  for (const attribute of path.node.attributes) {\n    if (t.isJSXAttribute(attribute) && attribute.name.name === key) {\n      propertyIsFound = true;\n      break;\n    }\n\n    if (t.isJSXSpreadAttribute(attribute)) {\n      if (t.isObjectExpression(attribute.argument)) {\n        const propertyInSpread = attribute.argument.properties.some(\n          (p) =>\n            (t.isObjectProperty(p) && t.isIdentifier(p.key) && p.key.name === key) ||\n            (t.isObjectProperty(p) && t.isStringLiteral(p.key) && p.key.value === key)\n        );\n        if (propertyInSpread) {\n          propertyIsFound = true;\n          break;\n        }\n      } else if (t.isIdentifier(attribute.argument)) {\n        const binding = path.scope.getBinding(attribute.argument.name);\n        if (\n          binding?.path.node &&\n          t.isVariableDeclarator(binding.path.node) &&\n          t.isObjectExpression(binding.path.node.init)\n        ) {\n          const propertyInSpread = binding.path.node.init.properties.some(\n            (p) =>\n              (t.isObjectProperty(p) && t.isIdentifier(p.key) && p.key.name === key) ||\n              (t.isObjectProperty(p) && t.isStringLiteral(p.key) && p.key.value === key)\n          );\n          if (propertyInSpread) {\n            propertyIsFound = true;\n            break;\n          }\n        } else {\n          hasUnresolvableSpread = true;\n          break;\n        }\n      } else {\n        hasUnresolvableSpread = true;\n        break;\n      }\n    }\n  }\n\n  if (!propertyIsFound && !hasUnresolvableSpread) {\n    path.node.attributes.push(t.jsxAttribute(t.jsxIdentifier(key), t.jsxExpressionContainer(value)));\n  }\n};\n\n/**\n * Builds a JSX attribute. Strings with line breaks stay in containers to avoid JSX whitespace normalization.\n */\nexport function makeAttribute(name: string, value: t.Expression): t.JSXAttribute {\n  return t.jsxAttribute(\n    t.jsxIdentifier(name),\n    t.isStringLiteral(value) && !/[\\r\\n]/.test(value.value) ? value : t.jsxExpressionContainer(value)\n  );\n}\n\n/**\n * Builds an `ObjectProperty` from a single plain JSX attribute. A shorthand attribute (or empty\n * expression container) resolves to boolean `true`. A key that is not a valid JS identifier (e.g.\n * `aria-label`) becomes a string-literal property key.\n */\nconst buildObjectPropertyFromAttribute = (attribute: t.JSXAttribute): t.ObjectProperty => {\n  const key = attribute.name.name;\n  let value: t.Expression;\n  if (!attribute.value) {\n    value = t.booleanLiteral(true);\n  } else if (t.isStringLiteral(attribute.value)) {\n    value = attribute.value;\n  } else if (t.isJSXExpressionContainer(attribute.value)) {\n    value = t.isJSXEmptyExpression(attribute.value.expression) ? t.booleanLiteral(true) : attribute.value.expression;\n  } else {\n    value = t.nullLiteral();\n  }\n\n  const keyNode =\n    typeof key === 'string' && VALID_JS_IDENTIFIER.test(key) ? t.identifier(key) : t.stringLiteral(key.toString());\n\n  return t.objectProperty(keyNode, value);\n};\n\n/**\n * Builds an object expression from JSX attributes while preserving spread order.\n *\n * @param attributes - The attributes to build the expression from.\n * @returns An object expression containing direct properties and spread elements.\n */\nexport const buildPropertiesFromAttributes = (\n  attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): t.ObjectExpression =>\n  t.objectExpression(\n    attributes.map((attribute) =>\n      t.isJSXSpreadAttribute(attribute)\n        ? t.spreadElement(attribute.argument)\n        : buildObjectPropertyFromAttribute(attribute)\n    )\n  );\n\n/**\n * Checks if the JSX element has an accessibility property.\n *\n * @param path - The NodePath for the JSXOpeningElement, used for scope lookup.\n * @param attributes - The attributes to check.\n * @returns true if the JSX element has an accessibility property.\n */\nexport const hasAccessibilityProperty = (\n  path: NodePath<t.JSXOpeningElement>,\n  attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): boolean => {\n  for (const attribute of attributes) {\n    if (t.isJSXAttribute(attribute)) {\n      const key = attribute.name.name;\n      if (typeof key === 'string' && ACCESSIBILITY_PROPERTIES.has(key)) {\n        return true;\n      }\n    } else if (t.isJSXSpreadAttribute(attribute)) {\n      if (t.isObjectExpression(attribute.argument)) {\n        for (const property of attribute.argument.properties) {\n          if (\n            t.isObjectProperty(property) &&\n            t.isIdentifier(property.key) &&\n            ACCESSIBILITY_PROPERTIES.has(property.key.name)\n          ) {\n            return true;\n          }\n        }\n      } else if (t.isIdentifier(attribute.argument)) {\n        const binding = path.scope.getBinding(attribute.argument.name);\n        if (binding && t.isVariableDeclarator(binding.path.node)) {\n          const declarator = binding.path.node as t.VariableDeclarator;\n          if (declarator.init && t.isObjectExpression(declarator.init)) {\n            for (const property of declarator.init.properties) {\n              if (\n                t.isObjectProperty(property) &&\n                t.isIdentifier(property.key) &&\n                ACCESSIBILITY_PROPERTIES.has(property.key.name)\n              ) {\n                return true;\n              }\n            }\n            continue;\n          }\n        }\n        return true;\n      } else {\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\n/**\n * Extracts the `style` attribute from a JSX attributes list.\n *\n * @returns An object containing the attribute node itself (if found) and the expression inside\n */\nexport function extractStyleAttribute(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): {\n  styleAttribute?: t.JSXAttribute;\n  styleExpr?: t.Expression;\n} {\n  for (const attribute of attributes) {\n    if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'style' })) {\n      if (t.isStringLiteral(attribute.value)) return { styleAttribute: attribute, styleExpr: attribute.value };\n      if (\n        attribute.value &&\n        t.isJSXExpressionContainer(attribute.value) &&\n        !t.isJSXEmptyExpression(attribute.value.expression)\n      ) {\n        return {\n          styleAttribute: attribute,\n          styleExpr: attribute.value.expression,\n        };\n      }\n      return { styleAttribute: attribute };\n    }\n  }\n  return {};\n}\n\n/**\n * Extracts a direct `selectionColor` JSX attribute and its expression. A string literal, a non-empty\n * expression container, or a valueless attribute yields both values. An empty expression container is\n * left unchanged because React already resolves it to `undefined`.\n *\n * @returns The attribute node and its color expression when extractable; otherwise an empty object.\n */\nexport function extractSelectionColor(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): {\n  selectionColorAttribute?: t.JSXAttribute;\n  selectionColorExpr?: t.Expression;\n} {\n  for (const attribute of attributes) {\n    if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'selectionColor' })) {\n      const value = attribute.value;\n      if (t.isStringLiteral(value)) {\n        return { selectionColorAttribute: attribute, selectionColorExpr: value };\n      }\n      if (t.isJSXExpressionContainer(value) && !t.isJSXEmptyExpression(value.expression)) {\n        return { selectionColorAttribute: attribute, selectionColorExpr: value.expression };\n      }\n      if (value === null) {\n        return { selectionColorAttribute: attribute, selectionColorExpr: t.booleanLiteral(true) };\n      }\n      return {};\n    }\n  }\n  return {};\n}\n\ntype SelectableExtraction = { value: boolean | undefined };\n\n/** Reads the final static userSelect without removing values observed by style preprocessors. */\nexport function extractStaticTextSelectable(styleExpr: t.Expression): SelectableExtraction | undefined {\n  const value = tryFlattenStaticStyle(styleExpr, false)?.get('userSelect');\n  if (!value || t.isNullLiteral(value)) return undefined;\n  return { value: t.isStringLiteral(value) ? USER_SELECT_STYLE_TO_SELECTABLE_PROP[value.value] : undefined };\n}\n\n/**\n * Whether a node is a fully static literal tree — a value the plugin can resolve and reproduce at\n * build time without evaluating anything at runtime. Primitives (string/number/boolean/null and a\n * unary-minus numeric) qualify, as do object/array literals whose every leaf is itself such a tree.\n * Anything that could only be known at runtime (identifiers, member/call/template/conditional/logical\n * expressions, spreads, computed keys, getters/setters/methods) makes the whole tree non-static.\n *\n * Used by {@link tryBuildStaticTextStyle} to decide whether a `style` value can be normalized at\n * build time. Nested object/array values (e.g. `transform`, `shadowOffset`) are carried verbatim —\n * they are not flattened, only validated as static.\n */\nexport const isStaticLiteralTree = (node: t.Node): boolean => {\n  if (t.isStringLiteral(node) || t.isNumericLiteral(node) || t.isBooleanLiteral(node) || t.isNullLiteral(node)) {\n    return true;\n  }\n\n  if (t.isUnaryExpression(node) && node.operator === '-' && t.isNumericLiteral(node.argument)) {\n    return true;\n  }\n\n  if (t.isObjectExpression(node)) {\n    return node.properties.every(\n      (property) =>\n        t.isObjectProperty(property) &&\n        !property.computed &&\n        (t.isIdentifier(property.key) || t.isStringLiteral(property.key)) &&\n        t.isExpression(property.value) &&\n        isStaticLiteralTree(property.value)\n    );\n  }\n\n  if (t.isArrayExpression(node)) {\n    // A hole (`[1, , 2]`) yields `null`; treat its presence as non-static and bail.\n    return node.elements.every((element) => element != null && isStaticLiteralTree(element));\n  }\n\n  return false;\n};\n\nconst staticPropertyName = (property: t.ObjectProperty): string =>\n  t.isIdentifier(property.key) ? property.key.name : (property.key as t.StringLiteral).value;\n\n/**\n * Whether an array element of a `style` value flattens to a falsy result at runtime and therefore\n * contributes nothing, matching `StyleSheet.flatten`'s `if (computedStyle)` skip. Limited to the\n * literal forms that provably flatten to falsy (`null` / `false` / `undefined` / `0`); any other\n * primitive literal element is left for the caller to bail on rather than guessing.\n */\nconst isSkippableFalsyElement = (element: t.Expression | t.SpreadElement, allowUndefined = true): boolean =>\n  t.isNullLiteral(element) ||\n  (t.isBooleanLiteral(element) && element.value === false) ||\n  (allowUndefined && t.isIdentifier(element, { name: 'undefined' })) ||\n  (t.isNumericLiteral(element) && element.value === 0);\n\n/** Flattens a static object or array style with last-key-wins semantics. */\nexport function tryFlattenStaticStyle(\n  styleExpression: t.Expression,\n  allowUndefined = true\n): Map<string, t.Expression> | undefined {\n  if (!t.isObjectExpression(styleExpression) && !t.isArrayExpression(styleExpression)) return undefined;\n\n  const flattened = new Map<string, t.Expression>();\n  const collect = (expression: t.Expression | t.SpreadElement | null): boolean => {\n    if (expression === null) return true;\n    if (t.isArrayExpression(expression)) return expression.elements.every(collect);\n    if (isSkippableFalsyElement(expression, allowUndefined)) return true;\n    if (!t.isObjectExpression(expression) || !isStaticLiteralTree(expression)) return false;\n\n    for (const property of expression.properties) {\n      if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n      const name = staticPropertyName(property);\n      if (name === '__proto__') return false;\n      flattened.set(name, t.cloneNode(property.value, true));\n    }\n    return true;\n  };\n\n  return collect(styleExpression) ? flattened : undefined;\n}\n\n/** Appends RN's overrides to a static style, preserving renderer traversal and reset keys. */\nexport function tryBuildStaticTextStyle(styleExpr: t.Expression): t.Expression | undefined {\n  const merged = tryFlattenStaticStyle(styleExpr, false);\n  if (!merged) return undefined;\n  const overrides: t.ObjectProperty[] = [];\n  const fontWeight = merged.get('fontWeight');\n  if (t.isNumericLiteral(fontWeight)) {\n    overrides.push(t.objectProperty(t.identifier('fontWeight'), t.stringLiteral(String(fontWeight.value))));\n  } else if (t.isUnaryExpression(fontWeight)) {\n    return undefined;\n  }\n  const userSelect = merged.get('userSelect');\n  if (userSelect && !t.isNullLiteral(userSelect)) {\n    overrides.push(t.objectProperty(t.identifier('userSelect'), t.unaryExpression('void', t.numericLiteral(0))));\n  }\n  const verticalAlign = merged.get('verticalAlign');\n  if (verticalAlign && !t.isNullLiteral(verticalAlign)) {\n    const mapped = t.isStringLiteral(verticalAlign)\n      ? VERTICAL_ALIGN_TO_TEXT_ALIGN_VERTICAL[verticalAlign.value]\n      : undefined;\n    overrides.push(\n      t.objectProperty(\n        t.identifier('textAlignVertical'),\n        mapped === undefined ? t.unaryExpression('void', t.numericLiteral(0)) : t.stringLiteral(mapped)\n      ),\n      t.objectProperty(t.identifier('verticalAlign'), t.unaryExpression('void', t.numericLiteral(0)))\n    );\n  }\n  return overrides.length > 0 ? t.arrayExpression([styleExpr, t.objectExpression(overrides)]) : styleExpr;\n}\n\n/**\n * Determines whether an expression is statically provable to evaluate to a `string` or `number`\n * primitive — and therefore can never be a React element.\n */\nconst isPrimitiveExpression = (\n  path: NodePath<t.JSXOpeningElement>,\n  expression: t.Expression,\n  // Identifier names already resolved along this chain, to break circular `const` references\n  // (`const a = b; const b = a;`) that would otherwise recurse forever.\n  resolved: Set<string> = new Set()\n): boolean => {\n  // Unambiguous primitives — these can never be a React element.\n  if (t.isStringLiteral(expression) || t.isNumericLiteral(expression)) return true;\n\n  // A template literal ALWAYS coerces its interpolations to string, regardless of their types.\n  if (t.isTemplateLiteral(expression)) return true;\n\n  // `a + b` (and numeric `-`, `*`, ...) is primitive only when BOTH operands are themselves\n  // provably primitive. `in`/`instanceof` have a non-Expression `left` (a `PrivateName`), so the\n  // `isExpression` guard rejects them.\n  if (t.isBinaryExpression(expression)) {\n    const { left, right } = expression;\n    return (\n      t.isExpression(left) &&\n      isPrimitiveExpression(path, left, resolved) &&\n      isPrimitiveExpression(path, right, resolved)\n    );\n  }\n\n  // `c ? a : b` — only the reachable results (`a`, `b`) are rendered; the test is irrelevant.\n  if (t.isConditionalExpression(expression)) {\n    return (\n      isPrimitiveExpression(path, expression.consequent, resolved) &&\n      isPrimitiveExpression(path, expression.alternate, resolved)\n    );\n  }\n\n  // `a && b` / `a || b` / `a ?? b` — short-circuiting makes the result one of the operands, so both\n  // must be primitive (unlike the conditional, the left operand is itself a reachable result).\n  if (t.isLogicalExpression(expression)) {\n    return (\n      isPrimitiveExpression(path, expression.left, resolved) && isPrimitiveExpression(path, expression.right, resolved)\n    );\n  }\n\n  // Identifier resolving to a non-reassigned `const` whose initializer is itself provably primitive.\n  // `binding.constant` excludes reassigned bindings (`let x = 'a'; x = <Foo/>`).\n  if (t.isIdentifier(expression)) {\n    if (resolved.has(expression.name)) return false; // circular reference — give up\n    const binding = path.scope.getBinding(expression.name);\n    if (binding && binding.constant && binding.path.node && t.isVariableDeclarator(binding.path.node)) {\n      const init = binding.path.node.init;\n      return (\n        !!init && t.isExpression(init) && isPrimitiveExpression(path, init, new Set(resolved).add(expression.name))\n      );\n    }\n    return false;\n  }\n\n  return false;\n};\n\n/**\n * Checks whether a Text child node is statically provable to render as a string/number primitive.\n * Used to gate the Text optimizer: only such children are safe to keep when rewriting `<Text>` to\n * its native host. See {@link isPrimitiveExpression} for the underlying expression rules.\n */\nexport const isPrimitiveChild = (path: NodePath<t.JSXOpeningElement>, child: t.Node): boolean => {\n  if (t.isJSXText(child)) return true; // raw text between tags\n  if (t.isStringLiteral(child)) return true; // explicit `children=\"...\"` attribute value\n\n  if (t.isJSXExpressionContainer(child)) {\n    const { expression } = child;\n    if (t.isJSXEmptyExpression(expression)) return false; // `{/* comment */}` is not a primitive\n    return isPrimitiveExpression(path, expression);\n  }\n  return false;\n};\n","import type { ComponentAncestorClassification } from '../../../ancestor-types';\n\n/** Text context supplied to rendered children, not the native host's layout context. */\nexport function classifyReactNativeAncestor(name: string, platform?: string): ComponentAncestorClassification {\n  switch (name) {\n    case 'View':\n    case 'ActivityIndicator':\n    case 'DrawerLayoutAndroid':\n    case 'ImageBackground':\n    case 'KeyboardAvoidingView':\n    case 'Modal':\n    case 'Pressable':\n    case 'TouchableHighlight':\n    case 'TouchableOpacity': {\n      return 'safe';\n    }\n    case 'Text':\n    case 'TextInput': {\n      return 'text';\n    }\n    case 'InputAccessoryView':\n    case 'RefreshControl':\n    case 'Switch':\n    case 'experimental_LayoutConformance': {\n      return 'transparent';\n    }\n    case 'SafeAreaView': {\n      return platform === 'ios' ? 'transparent' : platform === 'android' ? 'safe' : 'unknown';\n    }\n    case 'ProgressBarAndroid': {\n      return platform === 'android' ? 'transparent' : platform === 'ios' ? 'safe' : 'unknown';\n    }\n    // Scroll/list customization and Touchable child-prop injection need more than a context summary.\n    default: {\n      return 'unknown';\n    }\n  }\n}\n\n/** Animated wrappers retain their wrapped component; they do not establish their own Text context. */\nexport function classifyAnimatedAncestor(name: string): ComponentAncestorClassification {\n  if (name === 'View') return 'safe';\n  if (name === 'Text') return 'text';\n  return 'unknown';\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type {\n  AncestorClassification,\n  AncestorSummary,\n  ComponentAncestorClassification,\n  ModuleAncestorAnalysis,\n} from '../../../ancestor-types';\nimport { ensureArray, BailoutCheck } from '../helpers';\nimport { HubFile } from '../../types';\nimport { Minimatch } from 'minimatch';\nimport nodePath from 'node:path';\nimport {\n  UNISTYLES_MODULE_NAME,\n  UNISTYLES_NATIVE_TEXT_MODULE,\n  UNISTYLES_NATIVE_VIEW_MODULE,\n  RUNTIME_MODULE_NAME,\n} from '../constants';\nimport { getMarkedReactNativeComponent } from './optimized-host';\nimport { extractStyleAttribute } from './attributes';\nimport { analyzeSpreadExports } from '../returned-props';\nimport { classifyAnimatedAncestor, classifyReactNativeAncestor } from './intrinsic-ancestors';\n\n/** Compiles ignore patterns once per Babel working directory. */\nexport function createFileIgnoreMatcher(ignores: string[]): (file: Pick<HubFile, 'opts'>) => boolean {\n  let cachedDirectory: string | undefined;\n  let matchers: Minimatch[] = [];\n  return (file) => {\n    if (ignores.length === 0) return false;\n    const directory = 'cwd' in file.opts ? (file.opts.cwd as string) : process.cwd();\n    if (directory !== cachedDirectory) {\n      matchers = ignores.map(\n        (pattern) =>\n          new Minimatch(nodePath.isAbsolute(pattern) ? pattern : nodePath.join(directory, pattern), { dot: true })\n      );\n      cachedDirectory = directory;\n    }\n    return matchers.some((matcher) => matcher.match(file.opts.filename));\n  };\n}\n\nexport const isForcedLine = (path: NodePath): boolean => hasDecoratorComment(path, '@boost-force');\n\nexport const isIgnoredLine = (path: NodePath): boolean => hasDecoratorComment(path, '@boost-ignore');\n\nfunction hasDecoratorComment(path: NodePath, decorator: string): boolean {\n  if (path.isJSXOpeningElement()) return hasJSXDecoratorComment(path, decorator);\n\n  let currentPath: NodePath | null = path;\n  while (currentPath) {\n    if (currentPath.node.leadingComments?.some((comment) => comment.value.includes(decorator))) return true;\n    if (currentPath.isStatement()) break;\n    currentPath = currentPath.parentPath;\n  }\n  return false;\n}\n\n/** Finds JSX decorators attached to the element or its preceding JSX comment. */\nfunction hasJSXDecoratorComment(path: NodePath<t.JSXOpeningElement>, decorator: string): boolean {\n  if (path.node.leadingComments?.some((comment) => comment.value.includes(decorator))) return true;\n\n  const jsxElementPath = path.parentPath;\n  if (jsxElementPath.node.leadingComments?.some((comment) => comment.value.includes(decorator))) {\n    return true;\n  }\n\n  // Check leading comments on the ObjectProperty (if the JSX element is a value inside an object literal).\n  const propertyPath = jsxElementPath.parentPath;\n  if (\n    propertyPath &&\n    propertyPath.isObjectProperty() &&\n    propertyPath.node.leadingComments?.some((comment) => comment.value.includes(decorator))\n  ) {\n    return true;\n  }\n\n  if (!jsxElementPath.parentPath) return false;\n\n  const containerPath = jsxElementPath.parentPath;\n  const siblings = ensureArray(containerPath.get('children'));\n  const index = siblings.findIndex((sibling) => sibling.node === jsxElementPath.node);\n  if (index === -1) return false;\n\n  for (let index_ = index - 1; index_ >= 0; index_--) {\n    const sibling = siblings[index_];\n    if (sibling.isJSXText() && sibling.node.value.trim() === '') {\n      continue;\n    }\n    if (sibling.isJSXExpressionContainer()) {\n      const expression = sibling.get('expression');\n      if (expression && expression.node) {\n        const comments = [\n          ...(expression.node.leadingComments || []),\n          ...(expression.node.trailingComments || []),\n          ...(expression.node.innerComments || []),\n        ].map((comment) => comment.value.trim());\n        if (comments.some((comment) => comment.includes(decorator))) {\n          return true;\n        }\n      }\n    }\n    if (\n      sibling.node.leadingComments &&\n      sibling.node.leadingComments.some((comment) => comment.value.includes(decorator))\n    ) {\n      return true;\n    }\n    break;\n  }\n  return false;\n}\n\nexport function isModuleImportBinding(\n  binding: ReturnType<NodePath['scope']['getBinding']>,\n  source: string,\n  isSpecifier: (node: t.Node) => boolean,\n  importedName?: string\n): boolean {\n  if (!binding || binding.kind !== 'module' || !isSpecifier(binding.path.node)) return false;\n  if (!t.isImportDeclaration(binding.path.parent) || binding.path.parent.source.value !== source) return false;\n  if (binding.path.parent.importKind === 'type') return false;\n  if (t.isImportSpecifier(binding.path.node)) {\n    return (\n      binding.path.node.importKind !== 'type' &&\n      (importedName === undefined || t.isIdentifier(binding.path.node.imported, { name: importedName }))\n    );\n  }\n  return importedName === undefined;\n}\n\nexport const isReactNativeComponent = (path: NodePath<t.JSXOpeningElement>, expectedImportedName: string): boolean => {\n  if (getMarkedReactNativeComponent(path.node) === expectedImportedName) return true;\n  if (!t.isJSXIdentifier(path.node.name) || !t.isJSXElement(path.parent)) return false;\n\n  const localName = path.node.name.name;\n  const binding = path.scope.getBinding(localName);\n  if (binding?.kind !== 'module' || !t.isImportDeclaration(binding.path.parent)) return false;\n  if (binding.path.parent.source.value !== 'react-native') return false;\n\n  if (t.isImportSpecifier(binding.path.node)) {\n    return t.isIdentifier(binding.path.node.imported, { name: expectedImportedName });\n  }\n\n  return t.isImportDefaultSpecifier(binding.path.node) && localName === expectedImportedName;\n};\n\nexport type { AncestorClassification } from '../../../ancestor-types';\ntype ScopeBinding = NonNullable<ReturnType<NodePath<t.Node>['scope']['getBinding']>>;\n\ntype AncestorAnalysisContext = {\n  componentCache: WeakMap<t.Node, AncestorSummary>;\n  componentInProgress: WeakSet<t.Node>;\n  imports?: Record<string, Record<string, ComponentAncestorClassification>>;\n  references?: HubFile['__ancestorReferences'];\n  symbolic?: boolean;\n  platform?: string;\n};\n\ntype TextContextSource = AncestorClassification | 'runtime';\n\n/** Resolves once during an element's safety checks, before its AST can change. */\nexport function createTextContextSourceResolver(path: NodePath<t.JSXOpeningElement>): () => TextContextSource {\n  let source: TextContextSource | undefined;\n  return () => (source ??= getTextContextSource(path));\n}\n\n/** Calls, prop values, and unresolved parents can change an element before it renders. */\nexport function hasUnresolvedChildProps(path: NodePath<t.JSXOpeningElement>): boolean {\n  const source = getTextContextSource(path, true);\n  return source !== 'safe' && source !== 'text';\n}\n\nfunction getTextContextSource(path: NodePath<t.JSXOpeningElement>, directChildrenOnly = false): TextContextSource {\n  const file = (path.hub as unknown as { file: HubFile }).file;\n  const context: AncestorAnalysisContext = {\n    componentCache: new WeakMap<t.Node, AncestorSummary>(),\n    componentInProgress: new WeakSet<t.Node>(),\n    platform: file.opts.caller?.platform,\n    imports: file.__ancestorImports,\n    references: file.__ancestorReferences,\n  };\n  let childPath: NodePath<t.Node> = path.parentPath;\n  let ancestorPath = childPath.parentPath;\n\n  while (ancestorPath) {\n    if (ancestorPath.isJSXElement() || ancestorPath.isJSXFragment()) {\n      if (childPath.listKey !== 'children') return 'unknown';\n\n      if (ancestorPath.isJSXElement()) {\n        const classification = classifyJSXElementAsAncestor(ancestorPath, context);\n        if (classification !== 'transparent') return typeof classification === 'string' ? classification : 'unknown';\n      }\n    }\n\n    if (ancestorPath.isExpressionStatement() && ancestorPath.parentPath?.isProgram()) {\n      const expressionPath = ancestorPath.get('expression');\n      return expressionPath.isJSXElement() || expressionPath.isJSXFragment() ? 'safe' : 'runtime';\n    }\n\n    if (ancestorPath.isFunction()) return 'runtime';\n\n    if (\n      directChildrenOnly &&\n      !ancestorPath.isJSXElement() &&\n      !ancestorPath.isJSXFragment() &&\n      !ancestorPath.isJSXExpressionContainer()\n    )\n      return 'unknown';\n\n    childPath = ancestorPath;\n    ancestorPath = ancestorPath.parentPath;\n  }\n\n  return 'runtime';\n}\n\n/**\n * The ancestor-safety bailout checks shared by the host-component optimizers. An element nested under\n * a `Text` can need a different native host, so optimization would be incorrect. An `'unknown'`\n * ancestor chain also bails unless the project asserts that unknown ancestors do not render `Text`.\n */\nexport const ancestorBailoutChecks = (\n  path: NodePath<t.JSXOpeningElement>,\n  unknownAncestorsDoNotRenderText: boolean\n): BailoutCheck[] => {\n  const classify = createTextContextSourceResolver(path);\n\n  return [\n    {\n      reason: 'has unresolved runtime parent that may render Text',\n      shouldBail: () => !unknownAncestorsDoNotRenderText && classify() === 'runtime',\n    },\n    {\n      reason: 'has Text ancestor',\n      shouldBail: () => classify() === 'text' || classify() === 'context',\n    },\n    {\n      reason: 'has unresolved ancestor that may render Text',\n      shouldBail: () => classify() === 'unknown' && !unknownAncestorsDoNotRenderText,\n    },\n  ];\n};\n\nfunction isReactFragmentElement(path: NodePath<t.JSXElement>): boolean {\n  const name = path.node.openingElement.name;\n\n  if (t.isJSXIdentifier(name)) {\n    const binding = path.scope.getBinding(name.name);\n    return (\n      isReactImportBinding(binding) &&\n      t.isImportSpecifier(binding.path.node) &&\n      getImportSpecifierImportedName(binding.path.node) === 'Fragment'\n    );\n  }\n\n  return (\n    t.isJSXMemberExpression(name) &&\n    t.isJSXIdentifier(name.object) &&\n    t.isJSXIdentifier(name.property, { name: 'Fragment' }) &&\n    isReactImportBinding(path.scope.getBinding(name.object.name))\n  );\n}\n\nfunction classifyJSXElementAsAncestor(path: NodePath<t.JSXElement>, context: AncestorAnalysisContext): AncestorSummary {\n  if (isReactFragmentElement(path)) return 'transparent';\n\n  const markedComponent = getMarkedReactNativeComponent(path.node.openingElement);\n  if (markedComponent) return classifyReactNativeAncestor(markedComponent, context.platform);\n\n  const openingElementName = path.node.openingElement.name;\n\n  if (t.isJSXIdentifier(openingElementName)) {\n    return classifyJSXIdentifierAsAncestor(path, openingElementName.name, context);\n  }\n\n  if (t.isJSXMemberExpression(openingElementName)) {\n    return classifyJSXMemberExpressionAsAncestor(path, openingElementName, context);\n  }\n\n  return 'unknown';\n}\n\nfunction classifyJSXIdentifierAsAncestor(\n  path: NodePath<t.JSXElement>,\n  identifierName: string,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  const binding = path.scope.getBinding(identifierName);\n  if (!binding) return 'unknown';\n\n  return classifyBindingAsAncestor(binding, context);\n}\n\nfunction classifyJSXMemberExpressionAsAncestor(\n  path: NodePath<t.JSXElement>,\n  expression: t.JSXMemberExpression,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  const reference = getModuleReference(path, expression);\n  return reference ? classifyModuleReference(reference, context) : 'unknown';\n}\n\nfunction classifyBindingAsAncestor(binding: ScopeBinding, context: AncestorAnalysisContext): AncestorSummary {\n  if (binding.kind === 'module') {\n    return classifyModuleBindingAsAncestor(binding, context);\n  }\n\n  return classifyLocalBindingAsAncestor(binding, context);\n}\n\nfunction classifyModuleBindingAsAncestor(binding: ScopeBinding, context: AncestorAnalysisContext): AncestorSummary {\n  const importDeclaration = binding.path.parent;\n  if (!t.isImportDeclaration(importDeclaration)) return 'unknown';\n\n  const source = importDeclaration.source.value;\n  if (\n    importDeclaration.importKind === 'type' ||\n    (t.isImportSpecifier(binding.path.node) && binding.path.node.importKind === 'type')\n  )\n    return 'unknown';\n\n  // An ancestor Boost itself already rewrote (its own runtime host, or a Unistyles lean host in\n  // Unistyles mode) is a *known* host: a View establishes a normal context ('safe'), a Text an\n  // inline-text context ('text'). Without this, a descendant of an optimized element would read its\n  // rewritten ancestor as 'unknown' and bail — so only the outermost element of any subtree could ever\n  // optimize. Classifying by what the host renders lets optimization cascade down the tree.\n  const optimizedHost = classifyOptimizedHostAncestor(source, binding);\n  if (optimizedHost) return optimizedHost;\n\n  if (source === 'react' && t.isImportSpecifier(binding.path.node)) {\n    const importedName = getImportSpecifierImportedName(binding.path.node);\n    if (importedName === 'Fragment') return 'transparent';\n  }\n\n  const imported = getBindingImportedName(binding);\n  return imported ? classifyImportedAncestor(source, imported, context) : 'unknown';\n}\n\n/**\n * Classifies an ancestor that is one of the optimized hosts Boost emits — its own runtime\n * `NativeText`/`NativeView`, or (in Unistyles mode) Unistyles' lean `NativeText`/`NativeView`. Returns\n * `'text'` for a Text host, `'safe'` for a View host, or `undefined` when the source is not a known\n * optimized host. The Unistyles lean hosts are keyed purely by their (component-specific) import source;\n * Boost's own runtime exports both hosts from one module, so its imported name is checked.\n */\nfunction classifyOptimizedHostAncestor(source: string, binding: ScopeBinding): AncestorClassification | undefined {\n  if (source === UNISTYLES_NATIVE_TEXT_MODULE) return 'text';\n  if (source === UNISTYLES_NATIVE_VIEW_MODULE) return 'safe';\n\n  if (\n    (source === RUNTIME_MODULE_NAME || source === 'react-native-boost/uniwind') &&\n    t.isImportSpecifier(binding.path.node)\n  ) {\n    const importedName = getImportSpecifierImportedName(binding.path.node);\n    if (importedName === 'NativeText') return 'text';\n    if (importedName === 'NativeView' || importedName === 'NativeViewWithContext') return 'safe';\n  }\n\n  return undefined;\n}\n\nfunction classifyLocalBindingAsAncestor(binding: ScopeBinding, context: AncestorAnalysisContext): AncestorSummary {\n  if (!binding.constant) return 'unknown';\n  const cacheKey = binding.path.node;\n  const cached = context.componentCache.get(cacheKey);\n  if (cached) return cached;\n\n  if (context.componentInProgress.has(cacheKey)) {\n    return 'unknown';\n  }\n\n  context.componentInProgress.add(cacheKey);\n\n  let classification: AncestorSummary;\n  if (binding.path.isFunctionDeclaration()) {\n    classification = analyzeFunctionComponent(binding.path, context);\n  } else if (binding.path.isVariableDeclarator()) {\n    classification = analyzeVariableDeclaratorComponent(binding.path, context);\n  } else {\n    classification = 'unknown';\n  }\n\n  context.componentInProgress.delete(cacheKey);\n  context.componentCache.set(cacheKey, classification);\n\n  return classification;\n}\n\nfunction analyzeVariableDeclaratorComponent(\n  path: NodePath<t.VariableDeclarator>,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  const initPath = path.get('init');\n  if (!initPath.node) return 'unknown';\n\n  if (initPath.isArrowFunctionExpression() || initPath.isFunctionExpression()) {\n    return analyzeFunctionComponent(initPath, context);\n  }\n\n  if (initPath.isCallExpression()) {\n    return analyzeCallWrappedComponent(initPath, context);\n  }\n\n  if (initPath.isMemberExpression()) {\n    const reference = getModuleReference(initPath, initPath.node);\n    return reference ? classifyModuleReference(reference, context) : 'unknown';\n  }\n\n  if (initPath.isIdentifier()) {\n    const aliasBinding = path.scope.getBinding(initPath.node.name);\n    if (!aliasBinding) return 'unknown';\n\n    return classifyBindingAsAncestor(aliasBinding, context);\n  }\n\n  return 'unknown';\n}\n\nfunction analyzeCallWrappedComponent(\n  path: NodePath<t.CallExpression>,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  const factory = getModuleReference(path, path.node.callee);\n  const animated =\n    factory &&\n    ((factory.source === 'react-native' && factory.members.join('.') === 'Animated.createAnimatedComponent') ||\n      (factory.source === 'react-native-reanimated' &&\n        (factory.members.join('.') === 'createAnimatedComponent' ||\n          factory.members.join('.') === 'default.createAnimatedComponent')));\n  if (!animated && !isReactMemoOrForwardRefCall(path)) return 'unknown';\n\n  const [firstArgumentPath] = path.get('arguments');\n  if (!firstArgumentPath?.node) return 'unknown';\n\n  if (firstArgumentPath.isArrowFunctionExpression() || firstArgumentPath.isFunctionExpression()) {\n    return analyzeFunctionComponent(firstArgumentPath, context);\n  }\n\n  if (firstArgumentPath.isIdentifier()) {\n    const wrappedComponentBinding = path.scope.getBinding(firstArgumentPath.node.name);\n    if (!wrappedComponentBinding) return 'unknown';\n\n    return classifyBindingAsAncestor(wrappedComponentBinding, context);\n  }\n\n  if (firstArgumentPath.isCallExpression()) {\n    return analyzeCallWrappedComponent(firstArgumentPath, context);\n  }\n\n  if (firstArgumentPath.isMemberExpression()) {\n    const reference = getModuleReference(firstArgumentPath, firstArgumentPath.node);\n    return reference ? classifyModuleReference(reference, context) : 'unknown';\n  }\n\n  return 'unknown';\n}\n\nfunction isReactMemoOrForwardRefCall(path: NodePath<t.CallExpression>): boolean {\n  const calleePath = path.get('callee');\n\n  if (calleePath.isIdentifier()) {\n    if (!isMemoOrForwardRefName(calleePath.node.name)) return false;\n\n    const binding = path.scope.getBinding(calleePath.node.name);\n    return isReactImportBinding(binding);\n  }\n\n  if (calleePath.isMemberExpression()) {\n    const objectPath = calleePath.get('object');\n    const propertyPath = calleePath.get('property');\n\n    if (!objectPath.isIdentifier() || !propertyPath.isIdentifier()) return false;\n    if (!isMemoOrForwardRefName(propertyPath.node.name)) return false;\n\n    const objectBinding = path.scope.getBinding(objectPath.node.name);\n    return isReactImportBinding(objectBinding);\n  }\n\n  return false;\n}\n\nfunction isMemoOrForwardRefName(name: string): boolean {\n  return name === 'memo' || name === 'forwardRef';\n}\n\nfunction isReactImportBinding(binding: ScopeBinding | undefined): binding is ScopeBinding {\n  if (!binding || binding.kind !== 'module') return false;\n\n  const importDeclaration = binding.path.parent;\n  return t.isImportDeclaration(importDeclaration) && importDeclaration.source.value === 'react';\n}\n\n// Classify direct `children` insertion points; other forms stay unknown.\nfunction analyzeFunctionComponent(\n  path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  const references = getChildrenReferences(path);\n  if (!references) return 'unknown';\n  if (references.length === 0) return 'safe';\n\n  let classification = classifyChildrenReference(references[0]!, path, context);\n  for (const reference of references.slice(1)) {\n    classification = mergeChildrenSummaries(classification, classifyChildrenReference(reference, path, context));\n  }\n  return classification;\n}\n\nfunction getChildrenReferences(\n  path: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>\n): NodePath<t.Node>[] | undefined {\n  const parameter = path.node.params[0];\n  if (!parameter) return path.isArrowFunctionExpression() ? [] : undefined;\n\n  if (t.isIdentifier(parameter)) {\n    const binding = path.scope.getBinding(parameter.name);\n    if (!binding?.constant) return;\n\n    const references: NodePath<t.Node>[] = [];\n    for (const reference of binding.referencePaths) {\n      const parent = reference.parentPath;\n      if (!parent?.isMemberExpression() && !parent?.isOptionalMemberExpression()) return;\n      if (parent.node.object !== reference.node) return;\n      if (isChildrenProperty(parent.node)) references.push(parent);\n      else if (parent.node.computed) return;\n    }\n    return references;\n  }\n\n  if (!t.isObjectPattern(parameter)) return;\n  const property = parameter.properties.find(\n    (item): item is t.ObjectProperty =>\n      t.isObjectProperty(item) &&\n      !item.computed &&\n      (t.isIdentifier(item.key, { name: 'children' }) || t.isStringLiteral(item.key, { value: 'children' }))\n  );\n  if (!property) {\n    return parameter.properties.some((item) => t.isRestElement(item) || (t.isObjectProperty(item) && item.computed))\n      ? undefined\n      : [];\n  }\n\n  const value = t.isAssignmentPattern(property.value) ? property.value.left : property.value;\n  if (!t.isIdentifier(value)) return;\n  const binding = path.scope.getBinding(value.name);\n  return binding?.constant ? binding.referencePaths : undefined;\n}\n\nfunction isChildrenProperty(expression: t.MemberExpression | t.OptionalMemberExpression): boolean {\n  return expression.computed\n    ? t.isStringLiteral(expression.property, { value: 'children' })\n    : t.isIdentifier(expression.property, { name: 'children' });\n}\n\nfunction classifyChildrenReference(\n  reference: NodePath<t.Node>,\n  component: NodePath<t.FunctionDeclaration | t.FunctionExpression | t.ArrowFunctionExpression>,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  if (reference.parentPath?.isReturnStatement() && reference.key === 'argument') return 'transparent';\n  if (component.isArrowFunctionExpression() && component.get('body').node === reference.node) return 'transparent';\n\n  const container = reference.parentPath;\n  if (!container?.isJSXExpressionContainer() || reference.key !== 'expression') return 'unknown';\n\n  let jsxPath = container.parentPath;\n  if (jsxPath?.isJSXAttribute()) {\n    if (!t.isJSXIdentifier(jsxPath.node.name, { name: 'children' })) return 'unknown';\n    const elementPath = jsxPath.parentPath?.parentPath;\n    if (!elementPath) return 'unknown';\n    jsxPath = elementPath;\n  }\n  if (!jsxPath?.isJSXElement() && !jsxPath?.isJSXFragment()) return 'unknown';\n\n  const ancestors: AncestorSummary[] = [];\n  while (jsxPath.isJSXElement() || jsxPath.isJSXFragment()) {\n    if (jsxPath.isJSXElement()) {\n      const classification = classifyJSXElementAsAncestor(jsxPath, context);\n      if (typeof classification === 'string') {\n        if (classification !== 'transparent') {\n          return ancestors.length === 0\n            ? classification\n            : { kind: 'ancestors', values: [...ancestors, classification] };\n        }\n      } else {\n        ancestors.push(classification);\n      }\n    }\n\n    const parent = jsxPath.parentPath;\n    if (parent?.isJSXElement() || parent?.isJSXFragment()) {\n      if (jsxPath.listKey !== 'children') return 'unknown';\n      jsxPath = parent;\n      continue;\n    }\n\n    const fallback =\n      parent?.node === component.node ||\n      (parent?.isReturnStatement() && jsxPath.key === 'argument' && parent.getFunctionParent()?.node === component.node)\n        ? 'transparent'\n        : 'unknown';\n    return ancestors.length === 0 ? fallback : { kind: 'ancestors', values: [...ancestors, fallback] };\n  }\n\n  return 'unknown';\n}\n\nfunction mergeChildrenSummaries(current: AncestorSummary, next: AncestorSummary): AncestorSummary {\n  if (current === 'unknown' || next === 'unknown') return 'unknown';\n  if (typeof current === 'string' && typeof next === 'string') return current === next ? current : 'context';\n  return { kind: 'branches', values: [current, next] };\n}\n\ntype ModuleReference = { source: string; members: string[] };\n\nfunction getModuleReference(path: NodePath, expression: t.Node): ModuleReference | undefined {\n  const members: string[] = [];\n  while (t.isJSXMemberExpression(expression) || t.isMemberExpression(expression)) {\n    if (t.isMemberExpression(expression) && expression.computed) return;\n    if (!t.isIdentifier(expression.property) && !t.isJSXIdentifier(expression.property)) return;\n    members.unshift(expression.property.name);\n    expression = expression.object;\n  }\n  if (!t.isIdentifier(expression) && !t.isJSXIdentifier(expression)) return;\n  const binding = path.scope.getBinding(expression.name);\n  if (!binding?.constant || binding.kind !== 'module') return;\n  const declaration = binding.path.parent;\n  if (!t.isImportDeclaration(declaration) || declaration.importKind === 'type') return;\n  if (t.isImportSpecifier(binding.path.node) && binding.path.node.importKind === 'type') return;\n  const imported = getBindingImportedName(binding);\n  if (imported) members.unshift(imported);\n  else if (!t.isImportNamespaceSpecifier(binding.path.node)) return;\n  return { source: declaration.source.value, members };\n}\n\nfunction classifyModuleReference(reference: ModuleReference, context: AncestorAnalysisContext): AncestorSummary {\n  const { source, members } = reference;\n  if (\n    (source === 'react-native' && members[0] === 'Animated') ||\n    (source === 'react-native-reanimated' && members[0] === 'default')\n  ) {\n    return members.length === 2 ? classifyAnimatedAncestor(members[1]!) : 'unknown';\n  }\n  return members.length === 1 ? classifyImportedAncestor(source, members[0]!, context) : 'unknown';\n}\n\nfunction classifyImportedAncestor(source: string, imported: string, context: AncestorAnalysisContext): AncestorSummary {\n  if (source === 'react-native') return classifyReactNativeAncestor(imported, context.platform);\n  // Reanimated's named exports are not members of its default Animated object.\n  if (source === 'react-native-reanimated') return 'unknown';\n  if (source === 'uniwind' && ['ScopedTheme', 'ScopedVariables', 'LayoutDirection'].includes(imported))\n    return 'transparent';\n  if (source === 'uniwind/components' || source.startsWith('uniwind/components/')) {\n    const component = source === 'uniwind/components' ? imported : source.slice('uniwind/components/'.length);\n    if (component === 'Text') return 'text';\n    if (component === 'View') return 'safe';\n  }\n  if (context.symbolic) return { kind: 'import', source, imported };\n\n  const key = `${source}\\0${imported}`;\n  const classification = context.imports?.[source]?.[imported] ?? 'unknown';\n  context.references?.set(key, { source, imported, classification });\n  return classification;\n}\n\nfunction getBindingImportedName(binding: ScopeBinding): string | undefined {\n  if (t.isImportDefaultSpecifier(binding.path.node)) return 'default';\n  if (t.isImportSpecifier(binding.path.node)) return getImportSpecifierImportedName(binding.path.node);\n  return undefined;\n}\n\nfunction getImportSpecifierImportedName(specifier: t.ImportSpecifier): string | undefined {\n  if (t.isIdentifier(specifier.imported)) {\n    return specifier.imported.name;\n  }\n\n  if (t.isStringLiteral(specifier.imported)) {\n    return specifier.imported.value;\n  }\n\n  return undefined;\n}\n\nexport function analyzeAncestorModule(path: NodePath<t.Program>): ModuleAncestorAnalysis {\n  const file = (path.hub as unknown as { file: HubFile }).file;\n  const context: AncestorAnalysisContext = {\n    platform: file.opts.caller?.platform,\n    componentCache: new WeakMap<t.Node, AncestorSummary>(),\n    componentInProgress: new WeakSet<t.Node>(),\n    symbolic: true,\n  };\n  const exports = Object.create(null) as Record<string, AncestorSummary>;\n  const exportAll: string[] = [];\n\n  for (const statementPath of path.get('body')) {\n    if (statementPath.isExportAllDeclaration()) {\n      if (statementPath.node.exportKind !== 'type') {\n        exportAll.push(statementPath.node.source.value);\n      }\n      continue;\n    }\n\n    if (statementPath.isExportDefaultDeclaration()) {\n      exports.default = classifyDefaultExport(statementPath.get('declaration'), path, context);\n      continue;\n    }\n\n    if (!statementPath.isExportNamedDeclaration() || statementPath.node.exportKind === 'type') continue;\n    const declarationPath = statementPath.get('declaration');\n    if (declarationPath.isFunctionDeclaration() && declarationPath.node.id) {\n      const name = declarationPath.node.id.name;\n      exports[name] = path.scope.getBinding(name)?.constant\n        ? analyzeFunctionComponent(declarationPath, context)\n        : 'unknown';\n    } else if (declarationPath.isVariableDeclaration()) {\n      for (const declarator of declarationPath.get('declarations')) {\n        for (const name of Object.keys(t.getBindingIdentifiers(declarator.node.id))) {\n          const binding = path.scope.getBinding(name);\n          exports[name] = binding ? classifyBindingAsAncestor(binding, context) : 'unknown';\n        }\n      }\n    } else if (declarationPath.isClassDeclaration() && declarationPath.node.id) {\n      exports[declarationPath.node.id.name] = 'unknown';\n    }\n\n    for (const specifier of statementPath.node.specifiers) {\n      if (!t.isExportSpecifier(specifier) || specifier.exportKind === 'type') continue;\n      const exported = getModuleExportName(specifier.exported);\n      const local = getModuleExportName(specifier.local);\n      if (!exported || !local) continue;\n      if (statementPath.node.source) {\n        exports[exported] = classifyImportedAncestor(statementPath.node.source.value, local, context);\n      } else {\n        const binding = path.scope.getBinding(local);\n        exports[exported] = binding ? classifyBindingAsAncestor(binding, context) : 'unknown';\n      }\n    }\n  }\n\n  return {\n    exports,\n    exportAll,\n    spreadExports: analyzeSpreadExports(path),\n    references: [...(file.__ancestorReferences?.values() ?? [])],\n  };\n}\n\nfunction classifyDefaultExport(\n  declarationPath: NodePath,\n  programPath: NodePath<t.Program>,\n  context: AncestorAnalysisContext\n): AncestorSummary {\n  if (declarationPath.isFunctionDeclaration()) {\n    return !declarationPath.node.id || programPath.scope.getBinding(declarationPath.node.id.name)?.constant\n      ? analyzeFunctionComponent(declarationPath, context)\n      : 'unknown';\n  }\n  if (declarationPath.isFunctionExpression() || declarationPath.isArrowFunctionExpression()) {\n    return analyzeFunctionComponent(declarationPath, context);\n  }\n  if (declarationPath.isIdentifier()) {\n    const binding = programPath.scope.getBinding(declarationPath.node.name);\n    return binding ? classifyBindingAsAncestor(binding, context) : 'unknown';\n  }\n  if (declarationPath.isCallExpression()) return analyzeCallWrappedComponent(declarationPath, context);\n  return 'unknown';\n}\n\nfunction getModuleExportName(node: t.Identifier | t.StringLiteral): string {\n  return t.isIdentifier(node) ? node.name : node.value;\n}\n\n/**\n * Checks whether the closest JSX element ancestor is expo-router Link with a truthy asChild prop.\n *\n * We only bail on Text optimization when Link is effectively slotting that Text as the clickable child.\n */\nexport const hasExpoRouterLinkParentWithAsChild = (path: NodePath<t.JSXOpeningElement>): boolean => {\n  const textElementPath = path.parentPath;\n  if (!textElementPath.isJSXElement()) return false;\n\n  let ancestorPath: NodePath<t.Node> | null = textElementPath.parentPath;\n\n  while (ancestorPath) {\n    if (ancestorPath.isJSXElement()) {\n      if (!isExpoRouterLinkElement(ancestorPath)) return false;\n\n      return hasTruthyAsChildAttribute(ancestorPath.node.openingElement.attributes);\n    }\n\n    ancestorPath = ancestorPath.parentPath;\n  }\n\n  return false;\n};\n\nfunction isExpoRouterLinkElement(path: NodePath<t.JSXElement>): boolean {\n  const openingElementName = path.node.openingElement.name;\n\n  if (t.isJSXIdentifier(openingElementName)) {\n    const binding = path.scope.getBinding(openingElementName.name);\n    if (!binding || binding.kind !== 'module') return false;\n    if (!t.isImportSpecifier(binding.path.node)) return false;\n\n    const importDeclaration = binding.path.parent;\n    if (!t.isImportDeclaration(importDeclaration) || importDeclaration.source.value !== 'expo-router') return false;\n\n    const imported = binding.path.node.imported;\n    return t.isIdentifier(imported, { name: 'Link' }) || (t.isStringLiteral(imported) && imported.value === 'Link');\n  }\n\n  if (t.isJSXMemberExpression(openingElementName)) {\n    if (!t.isJSXIdentifier(openingElementName.object)) return false;\n    if (!t.isJSXIdentifier(openingElementName.property, { name: 'Link' })) return false;\n\n    const namespaceBinding = path.scope.getBinding(openingElementName.object.name);\n    if (!namespaceBinding || namespaceBinding.kind !== 'module') return false;\n    if (!t.isImportNamespaceSpecifier(namespaceBinding.path.node)) return false;\n\n    const importDeclaration = namespaceBinding.path.parent;\n    return t.isImportDeclaration(importDeclaration) && importDeclaration.source.value === 'expo-router';\n  }\n\n  return false;\n}\n\nfunction hasTruthyAsChildAttribute(attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[]): boolean {\n  let asChildAttribute: t.JSXAttribute | undefined;\n\n  for (const attribute of attributes) {\n    if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'asChild' })) {\n      asChildAttribute = attribute;\n    }\n  }\n\n  if (!asChildAttribute) return false;\n\n  return isJSXAttributeValueTruthy(asChildAttribute.value);\n}\n\nfunction isJSXAttributeValueTruthy(value: t.JSXAttribute['value']): boolean {\n  if (!value) return true;\n  if (t.isStringLiteral(value)) return value.value.length > 0;\n  if (t.isJSXElement(value) || t.isJSXFragment(value)) return true;\n\n  if (t.isJSXExpressionContainer(value)) {\n    const staticTruthiness = getStaticExpressionTruthiness(value.expression);\n    return staticTruthiness ?? true;\n  }\n\n  return true;\n}\n\nfunction getStaticExpressionTruthiness(expression: t.Expression | t.JSXEmptyExpression): boolean | undefined {\n  if (t.isJSXEmptyExpression(expression)) return false;\n  if (t.isBooleanLiteral(expression)) return expression.value;\n  if (t.isNullLiteral(expression)) return false;\n  if (t.isStringLiteral(expression)) return expression.value.length > 0;\n  if (t.isNumericLiteral(expression)) return expression.value !== 0 && !Number.isNaN(expression.value);\n  if (t.isBigIntLiteral(expression)) return expression.value !== '0';\n  if (t.isIdentifier(expression, { name: 'undefined' })) return false;\n\n  if (t.isTemplateLiteral(expression) && expression.expressions.length === 0) {\n    return (expression.quasis[0]?.value.cooked ?? '').length > 0;\n  }\n\n  if (t.isUnaryExpression(expression, { operator: '!' })) {\n    const staticTruthiness = getStaticExpressionTruthiness(expression.argument);\n    return staticTruthiness === undefined ? undefined : !staticTruthiness;\n  }\n\n  return undefined;\n}\n\nexport type StyleOrigin = 'unistyles' | 'plain' | 'unknown';\n\n// Bounds the alias/array/wrapper recursion in `classifyStyleExpression`, which would otherwise loop\n// forever on a pathological const cycle (`const a = b; const b = a`). Past this depth the source is\n// undecidable, so it classifies as `'unknown'` (a safe bail).\nconst MAX_STYLE_RESOLUTION_DEPTH = 64;\n\n/**\n * Builds a lazily-memoized resolver for an element's direct `style` origin, shared by the `Text` and\n * `View` optimizers. Outside Unistyles mode it is a constant `'plain'` (no work). Inside, it classifies\n * on first call and caches — kept lazy so an element that bails on a cheaper check never pays the\n * classification cost.\n */\nexport const createStyleOriginResolver = (\n  path: NodePath<t.JSXOpeningElement>,\n  unistylesEnabled: boolean | undefined\n): (() => StyleOrigin) => {\n  if (!unistylesEnabled) return () => 'plain';\n\n  let styleOrigin: StyleOrigin | undefined;\n  return () => (styleOrigin ??= classifyStyleOrigin(path, extractStyleAttribute(path.node.attributes).styleExpr));\n};\n\n/**\n * Classifies where a JSX element's direct `style` value comes from, used to route an element in\n * \"Unistyles mode\". Resolution is **same-file only** — anything that would require following an import,\n * or that cannot be proven, is `'unknown'`.\n *\n * - `'plain'` — no `style`, an object literal, or a `StyleSheet.create(...)` imported from `react-native`:\n *   provably not a Unistyles style, so it is safe to optimize to Boost's own host as usual.\n * - `'unistyles'` — a `StyleSheet.create(...)` imported from `react-native-unistyles`, used directly or as\n *   any element of a style array: must be routed to Unistyles' lean host so its registration survives.\n * - `'unknown'` — a prop/param/call/conditional, an imported stylesheet, or any unresolvable reference:\n *   undecidable within one file, so it could be a Unistyles style arriving from elsewhere.\n */\nexport const classifyStyleOrigin = (\n  path: NodePath<t.JSXOpeningElement>,\n  styleExpr: t.Expression | undefined\n): StyleOrigin => {\n  if (!styleExpr) return 'plain';\n  return classifyStyleExpression(path, styleExpr);\n};\n\nfunction classifyStyleExpression(path: NodePath<t.JSXOpeningElement>, expr: t.Expression, depth = 0): StyleOrigin {\n  if (depth > MAX_STYLE_RESOLUTION_DEPTH) return 'unknown';\n\n  // TS-only and parenthesized wrappers do not change the runtime style value, so `styles.foo as TextStyle`,\n  // `styles.foo!`, `styles.foo satisfies …`, and `(styles.foo)` classify exactly like `styles.foo`.\n  if (\n    t.isTSAsExpression(expr) ||\n    t.isTSSatisfiesExpression(expr) ||\n    t.isTSNonNullExpression(expr) ||\n    t.isParenthesizedExpression(expr)\n  ) {\n    return classifyStyleExpression(path, expr.expression, depth + 1);\n  }\n\n  // An inline object literal could only carry Unistyles state by spreading one in — which strips that\n  // state anyway and is already broken under Unistyles — so a spread makes it unprovable; a plain\n  // literal is provably non-Unistyles.\n  if (t.isObjectExpression(expr)) {\n    return expr.properties.some((property) => t.isSpreadElement(property)) ? 'unknown' : 'plain';\n  }\n\n  if (t.isArrayExpression(expr)) {\n    let result: StyleOrigin = 'plain';\n    for (const element of expr.elements) {\n      if (element == null) continue; // hole → flattens away\n      if (t.isSpreadElement(element)) return 'unknown';\n      const elementOrigin = classifyStyleExpression(path, element, depth + 1);\n      // A single Unistyles element makes the whole array Unistyles-managed: routing the array by\n      // identity to the lean host preserves that element's registration regardless of its siblings.\n      if (elementOrigin === 'unistyles') return 'unistyles';\n      if (elementOrigin === 'unknown') result = 'unknown';\n    }\n    return result;\n  }\n\n  // `styles.foo` / `styles['foo']` / `styles?.foo` — classify by the `styles` container's origin.\n  if (t.isMemberExpression(expr) || t.isOptionalMemberExpression(expr)) {\n    if (!t.isIdentifier(expr.object)) return 'unknown';\n    return classifyStyleContainerBinding(path.scope.getBinding(expr.object.name));\n  }\n\n  // A local `const x = <style expr>` alias — follow it.\n  if (t.isIdentifier(expr)) {\n    const binding = path.scope.getBinding(expr.name);\n    if (!binding || !binding.constant || !binding.path.isVariableDeclarator()) return 'unknown';\n    const init = binding.path.node.init;\n    if (init && t.isExpression(init)) return classifyStyleExpression(path, init, depth + 1);\n    return 'unknown';\n  }\n\n  return 'unknown';\n}\n\n/**\n * Classifies the binding behind the `styles` in `styles.foo`: it must be a same-file, non-reassigned\n * `const styles = <StyleSheet>.create(...)` whose `StyleSheet` import source identifies the engine.\n */\nfunction classifyStyleContainerBinding(binding: ScopeBinding | undefined): StyleOrigin {\n  if (!binding || !binding.constant) return 'unknown';\n  if (binding.kind === 'module') return 'unknown'; // imported stylesheet → cross-file, out of scope\n  if (!binding.path.isVariableDeclarator()) return 'unknown';\n\n  const init = binding.path.node.init;\n  if (!init || !t.isCallExpression(init)) return 'unknown';\n\n  return classifyStyleSheetCreateCallee(binding.path.scope, init.callee);\n}\n\n/**\n * Classifies a `StyleSheet.create` callee by the import source of its `StyleSheet` object:\n * `react-native-unistyles` → `'unistyles'`, `react-native` → `'plain'`, anything else → `'unknown'`.\n */\nfunction classifyStyleSheetCreateCallee(\n  scope: NodePath<t.Node>['scope'],\n  callee: t.Expression | t.V8IntrinsicIdentifier\n): StyleOrigin {\n  if (!t.isMemberExpression(callee) || callee.computed) return 'unknown';\n  if (!t.isIdentifier(callee.property, { name: 'create' })) return 'unknown';\n  if (!t.isIdentifier(callee.object)) return 'unknown';\n\n  const binding = scope.getBinding(callee.object.name);\n  if (!binding || binding.kind !== 'module' || !t.isImportDeclaration(binding.path.parent)) return 'unknown';\n\n  const source = binding.path.parent.source.value;\n  if (source === UNISTYLES_MODULE_NAME) return 'unistyles';\n  if (source === 'react-native') return 'plain';\n  return 'unknown';\n}\n","import { NodePath, types as t } from '@babel/core';\nimport { addDefault, addNamed } from '@babel/helper-module-imports';\nimport { FileImportOptions, HubFile } from '../../types';\nimport { RUNTIME_MODULE_NAME, UNISTYLES_NATIVE_TEXT_MODULE, UNISTYLES_NATIVE_VIEW_MODULE } from '../constants';\nimport { markReactNativeComponent, ReactNativeComponentName } from './optimized-host';\n\n/**\n * Adds a hint to the file object to ensure that a specific import is added only once and cached on the file object.\n *\n * @param opts - Object containing the function arguments:\n *   - file: The Babel file object (e.g. HubFile)\n *   - nameHint: The name hint which also acts as the cache key to ensure the import is only added once (e.g. 'processTextAccessibilityProps')\n *   - path: The current Babel NodePath\n *   - importName: The named import string (e.g. 'processTextAccessibilityProps'), used when importType is 'named'\n *   - moduleName: The module to import from (e.g. 'react-native-boost/runtime')\n *   - importType: Either 'named' (default) or 'default' to determine the type of import to use.\n *\n * @returns The identifier returned by addNamed or addDefault.\n */\nexport function addFileImportHint({\n  file,\n  nameHint,\n  path,\n  importName,\n  moduleName,\n  importType = 'named',\n}: FileImportOptions): t.Identifier {\n  if (!file.__hasImports?.[nameHint]) {\n    file.__hasImports = file.__hasImports || {};\n    file.__hasImports[nameHint] =\n      importType === 'default'\n        ? addDefault(path, moduleName, { nameHint })\n        : addNamed(path, importName, moduleName, { nameHint });\n  }\n  return file.__hasImports[nameHint];\n}\n\n/**\n * Where to import an optimized element's replacement host from. Defaults to Boost's own runtime\n * (`react-native-boost/runtime`, named import). Unistyles mode overrides this to point at Unistyles'\n * lean host components, which are version-matched registering wrappers (e.g. `NativeView` is a default\n * export). A distinct `nameHint` keeps the import cache from colliding when a file uses both a Boost\n * host and a Unistyles host.\n */\nexport interface NativeComponentSource {\n  moduleName?: string;\n  importName?: string;\n  importType?: 'named' | 'default';\n  nameHint?: string;\n}\n\n/** The native hosts Boost rewrites elements into; the local-name basis for each injected import. */\ntype NativeComponentName = 'NativeText' | 'NativeView' | 'NativeImage' | 'NativeActivityIndicator';\n\n/** The public component whose render context each native host preserves. */\nconst COMPONENT_BY_HOST: Record<NativeComponentName, ReactNativeComponentName> = {\n  NativeText: 'Text',\n  NativeView: 'View',\n  NativeImage: 'Image',\n  NativeActivityIndicator: 'View',\n};\n\n/**\n * Import sources for Unistyles' own lean hosts, passed as the `source` override when an element's `style`\n * resolves to a Unistyles style.\n */\nexport const UNISTYLES_TEXT_HOST: NativeComponentSource = {\n  moduleName: UNISTYLES_NATIVE_TEXT_MODULE,\n  importName: 'NativeText',\n  nameHint: 'UnistylesNativeText',\n};\n\nexport const UNISTYLES_VIEW_HOST: NativeComponentSource = {\n  moduleName: UNISTYLES_NATIVE_VIEW_MODULE,\n  importType: 'default',\n  nameHint: 'UnistylesNativeView',\n};\n\n/**\n * Replaces a component with its native counterpart.\n * This function handles both the opening and closing tags.\n *\n * @param path - The path to the JSXOpeningElement.\n * @param parent - The parent JSX element.\n * @param file - The Babel file object.\n * @param nativeComponentName - The local-name basis for the injected import (and the default import name).\n * @param source - Optional override for where to import the host from (see {@link NativeComponentSource}).\n * @returns The identifier for the imported native component.\n */\nexport const replaceWithNativeComponent = (\n  path: NodePath<t.JSXOpeningElement>,\n  parent: t.JSXElement,\n  file: HubFile,\n  nativeComponentName: NativeComponentName,\n  source: NativeComponentSource = {}\n): t.Identifier => {\n  // Add native component import (cached on file) to prevent duplicate imports\n  const nativeIdentifier = addFileImportHint({\n    file,\n    nameHint: source.nameHint ?? nativeComponentName,\n    path,\n    importName: source.importName ?? nativeComponentName,\n    moduleName: source.moduleName ?? RUNTIME_MODULE_NAME,\n    importType: source.importType ?? 'named',\n  });\n\n  // Get the current name of the component, which may be aliased (i.e. Text -> RNText)\n  const currentName = (path.node.name as t.JSXIdentifier).name;\n\n  // Record what this element was optimized into so the ancestor walk can classify it once it becomes a\n  // descendant's ancestor (the injected import is not yet resolvable via scope this traversal).\n  markReactNativeComponent(path.node, COMPONENT_BY_HOST[nativeComponentName]);\n\n  // Replace the component with its native counterpart\n  const jsxName = path.node.name as t.JSXIdentifier;\n  jsxName.name = nativeIdentifier.name;\n\n  // If the element is not self-closing, update the closing element as well\n  if (\n    !path.node.selfClosing &&\n    parent.closingElement &&\n    t.isJSXIdentifier(parent.closingElement.name) &&\n    parent.closingElement.name.name === currentName\n  ) {\n    parent.closingElement.name.name = nativeIdentifier.name;\n  }\n\n  return nativeIdentifier;\n};\n","import { type NodePath, types as t } from '@babel/core';\nimport { isStaticLiteralTree } from './common/attributes';\n\nconst reservedKeys = new Set(['__proto__', 'key', 'ref']);\nconst attributeName = /^[a-zA-Z_$][a-zA-Z0-9_$-]*$/;\n\nexport function openLiteralSpreads(path: NodePath<t.JSXOpeningElement>): void {\n  if (!path.node.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute))) return;\n  const names = new Set<string>();\n  const attributes: t.JSXAttribute[] = [];\n  for (const attribute of path.node.attributes) {\n    if (t.isJSXAttribute(attribute)) {\n      if (!t.isJSXIdentifier(attribute.name)) return;\n      const name = attribute.name.name;\n      if (reservedKeys.has(name) || names.has(name)) return;\n      if (t.isJSXElement(attribute.value) || t.isJSXFragment(attribute.value)) return;\n      if (t.isJSXExpressionContainer(attribute.value)) {\n        const value = attribute.value.expression;\n        if (\n          !path.scope.isPure(value) &&\n          !(t.isIdentifier(value, { name: 'undefined' }) && !path.scope.getBinding('undefined'))\n        )\n          return;\n      }\n      names.add(name);\n      attributes.push(attribute);\n      continue;\n    }\n    if (!t.isObjectExpression(attribute.argument) || !isSafeLiteral(attribute.argument)) return;\n    for (const property of attribute.argument.properties as t.ObjectProperty[]) {\n      const name = t.isIdentifier(property.key) ? property.key.name : (property.key as t.StringLiteral).value;\n      if (!attributeName.test(name) || names.has(name)) return;\n      names.add(name);\n      // Keep string expressions in containers; JSX text normalization changes whitespace and entities.\n      attributes.push(t.jsxAttribute(t.jsxIdentifier(name), t.jsxExpressionContainer(property.value as t.Expression)));\n    }\n  }\n  path.node.attributes = attributes;\n}\n\nfunction isSafeLiteral(expression: t.ObjectExpression): boolean {\n  if (!isStaticLiteralTree(expression)) return false;\n  let safe = true;\n  t.traverseFast(expression, (node) => {\n    if (!t.isObjectExpression(node)) return;\n    const names = new Set<string>();\n    for (const property of node.properties as t.ObjectProperty[]) {\n      const name = t.isIdentifier(property.key) ? property.key.name : (property.key as t.StringLiteral).value;\n      if (reservedKeys.has(name) || names.has(name)) safe = false;\n      names.add(name);\n    }\n  });\n  return safe;\n}\n","import type { JSXOptimizer, OptimizationName, Optimizer, OptimizerContext, OptimizationState } from '../types';\nimport { isIgnoredLine, isReactNativeComponent } from './common/validation';\nimport { openLiteralSpreads } from './literal-spreads';\n\nconst spreadComponents: Partial<Record<OptimizationName, string>> = {\n  'native-text': 'Text',\n  'native-view': 'View',\n  'native-image': 'Image',\n  'native-activity-indicator': 'ActivityIndicator',\n};\n\nexport function createJSXOptimizer(\n  name: OptimizationName,\n  optimize: JSXOptimizer,\n  defaultState?: OptimizationState | ((context: OptimizerContext) => OptimizationState)\n): Optimizer {\n  return {\n    name,\n    defaultState,\n    visitor: {\n      JSXOpeningElement(path, state) {\n        if (!state.enabledOptimizations.has(name)) return;\n        const component = spreadComponents[name];\n        if (!component || !isReactNativeComponent(path, component) || isIgnoredLine(path)) {\n          optimize(path, state.optimizerContext);\n          return;\n        }\n        const originalAttributes = path.node.attributes;\n        const originalElement = path.parentPath.node;\n        const originalTag = 'name' in path.node.name ? path.node.name.name : undefined;\n        const { platform } = state.optimizerContext;\n        if (platform === 'ios' || platform === 'android') openLiteralSpreads(path);\n        optimize(path, state.optimizerContext);\n        // Restore rejected sites, including in the pre-Compiler pass; its disabled set prevents a retry.\n        if (\n          path.parentPath.node === originalElement &&\n          'name' in path.node.name &&\n          path.node.name.name === originalTag\n        ) {\n          path.node.attributes = originalAttributes;\n        }\n      },\n    },\n  };\n}\n","import { type NodePath, types as t } from '@babel/core';\nimport { buildPropertiesFromAttributes, makeAttribute } from './common/attributes';\n\ntype Primitive = string | number | boolean | null | undefined;\ntype Literal = Primitive | { [key: string]: Primitive } | string[];\ntype Props = Record<string, Literal>;\nconst unknown = Symbol('unknown');\nconst stateKeys = ['busy', 'checked', 'disabled', 'expanded', 'selected'];\nconst valueKeys = ['max', 'min', 'now', 'text'];\n\n// Only syntax-owned scalar fields qualify. Never follow bindings or invoke Babel's evaluator.\nfunction readLiteral(node: t.Node, path: NodePath<t.JSXOpeningElement>, object = true): Literal | typeof unknown {\n  if (t.isNullLiteral(node)) return null;\n  if (t.isStringLiteral(node) || t.isBooleanLiteral(node) || t.isNumericLiteral(node)) return node.value;\n  if (t.isIdentifier(node, { name: 'undefined' }) && !path.scope.getBinding('undefined')) return undefined;\n  if (t.isUnaryExpression(node) && t.isNumericLiteral(node.argument)) {\n    if (node.operator === '-') return -node.argument.value;\n    if (node.operator === 'void') return undefined;\n  }\n  if (object && t.isArrayExpression(node) && node.elements.every((element) => t.isStringLiteral(element)))\n    return node.elements.map((element) => (element as t.StringLiteral).value);\n  if (!object || !t.isObjectExpression(node)) return unknown;\n  const result: Record<string, Primitive> = {};\n  for (const property of node.properties) {\n    if (!t.isObjectProperty(property) || property.computed) return unknown;\n    const key = t.isIdentifier(property.key)\n      ? property.key.name\n      : t.isStringLiteral(property.key)\n        ? property.key.value\n        : undefined;\n    if (key === undefined || key === '__proto__' || Object.hasOwn(result, key)) return unknown;\n    const value = readLiteral(property.value, path, false);\n    if (value === unknown || (value !== null && typeof value === 'object')) return unknown;\n    result[key] = value;\n  }\n  return result;\n}\n\nfunction expression(value: Literal): t.Expression {\n  if (value === undefined) return t.unaryExpression('void', t.numericLiteral(0));\n  if (Array.isArray(value)) return t.arrayExpression(value.map((item) => t.stringLiteral(item)));\n  if (value !== null && typeof value === 'object') {\n    return t.objectExpression(\n      Object.entries(value).map(([key, field]) => t.objectProperty(t.stringLiteral(key), expression(field)))\n    );\n  }\n  return t.valueToNode(value);\n}\n\n/** Returns direct props only when the entire helper input is closed and its native target is known. */\nexport function foldAccessibility(\n  path: NodePath<t.JSXOpeningElement>,\n  attributes: t.JSXAttribute[],\n  component: 'Text' | 'View' | 'Image',\n  platform?: string,\n  minor?: number\n): t.JSXAttribute[] | undefined {\n  if ((platform !== 'ios' && platform !== 'android') || minor === undefined || minor < 83 || minor > 88) return;\n  const names = new Set<string>();\n  for (const attribute of path.node.attributes) {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name) || names.has(attribute.name.name)) return;\n    names.add(attribute.name.name);\n  }\n  if (\n    attributes.some(\n      (attribute) =>\n        attribute.value !== null &&\n        !t.isStringLiteral(attribute.value) &&\n        !(t.isJSXExpressionContainer(attribute.value) && t.isExpression(attribute.value.expression))\n    )\n  )\n    return;\n  const props: Props = {};\n  for (const property of buildPropertiesFromAttributes(attributes).properties) {\n    if (!t.isObjectProperty(property)) return;\n    const key = t.isIdentifier(property.key) ? property.key.name : (property.key as t.StringLiteral).value;\n    const value = readLiteral(property.value, path);\n    if (value === unknown) return;\n    if (Array.isArray(value)) {\n      if (key !== 'accessibilityLabelledBy') return;\n    } else if (\n      value !== null &&\n      typeof value === 'object' &&\n      key !== 'accessibilityState' &&\n      key !== 'accessibilityValue'\n    )\n      return;\n    if ((key === 'accessibilityState' || key === 'accessibilityValue') && value != null && typeof value !== 'object')\n      return;\n    props[key] = value;\n  }\n  const result =\n    component === 'Text'\n      ? textProps(props, platform, minor)\n      : component === 'Image'\n        ? imageProps(props, platform, minor)\n        : viewProps(props);\n  if (!result) return;\n  return Object.entries(result).map(([key, value]) => makeAttribute(key, expression(value)));\n}\n\nfunction merge(props: Props, name: string, keys: string[], prefix = 'aria-') {\n  const base = props[name] as Record<string, Primitive> | null | undefined;\n  return Object.fromEntries(keys.map((key) => [key, props[prefix + key] ?? base?.[key]])) as Record<string, Primitive>;\n}\n\nfunction textProps(props: Props, platform: string, minor: number): Props {\n  const result = { ...props };\n  for (const key of [\n    'accessibilityLabel',\n    'accessibilityState',\n    'accessible',\n    'disabled',\n    'aria-label',\n    'aria-hidden',\n    ...stateKeys.map((key) => 'aria-' + key),\n  ])\n    delete result[key];\n  let state = props.accessibilityState as Record<string, Primitive> | null | undefined;\n  const stateDisabled = props['aria-disabled'] ?? state?.disabled;\n  const resolvedDisabled = props.disabled ?? stateDisabled;\n  const needsStateUpdate =\n    resolvedDisabled !== stateDisabled &&\n    ((resolvedDisabled != null && resolvedDisabled !== false) || (stateDisabled != null && stateDisabled !== false));\n  if ((minor >= 88 && needsStateUpdate) || stateKeys.some((key) => props['aria-' + key] != null)) {\n    state =\n      state == null\n        ? (Object.fromEntries(stateKeys.map((key) => [key, props['aria-' + key]])) as Record<string, Primitive>)\n        : merge(props, 'accessibilityState', stateKeys);\n    if (minor >= 88) state.disabled = resolvedDisabled as Primitive;\n  }\n  const disabled = (minor >= 88 ? resolvedDisabled : (props.disabled ?? state?.disabled)) as Primitive;\n  if (\n    minor < 88 &&\n    disabled !== state?.disabled &&\n    ((disabled != null && disabled !== false) || (state?.disabled != null && state.disabled !== false))\n  )\n    state = { ...state, disabled };\n  if (minor >= 84) {\n    delete result.accessibilityRole;\n    delete result.role;\n    if (minor === 84 || props.accessibilityRole != null)\n      result.accessibilityRole = props.accessibilityRole ?? undefined;\n    if (minor === 84 || props.role !== undefined) result.role = props.role;\n  }\n  const label = props['aria-label'] ?? props.accessibilityLabel;\n  if (minor < 85 || label !== undefined) result.accessibilityLabel = label;\n  if (minor < 85 || state !== undefined) result.accessibilityState = state;\n  // The renderer can flatten state.disabled onto disabled; Text writes its reconciled prop last.\n  result.accessible = platform === 'ios' ? props.accessible !== false : (props.accessible ?? false);\n  result.disabled = disabled;\n  const hidden = props['aria-hidden'];\n  if (minor < 85 || hidden !== undefined)\n    result.accessibilityElementsHidden = minor < 85 ? (hidden ?? props.accessibilityElementsHidden) : hidden;\n  if (minor < 85 || hidden === true)\n    result.importantForAccessibility = hidden === true ? 'no-hide-descendants' : props.importantForAccessibility;\n  return result;\n}\n\nfunction viewProps(props: Props): Props | undefined {\n  const result = { ...props };\n  for (const key of Object.keys(result))\n    if (key.startsWith('aria-') || key === 'tabIndex' || key === 'accessibilityState' || key === 'accessibilityValue')\n      delete result[key];\n  const labelledBy = props['aria-labelledby'];\n  // Array output belongs to View's existing single-alias fast path.\n  if (labelledBy != null) return;\n  if (props['aria-label'] !== undefined) result.accessibilityLabel = props['aria-label'];\n  if (props['aria-live'] !== undefined)\n    result.accessibilityLiveRegion = props['aria-live'] === 'off' ? 'none' : props['aria-live'];\n  if (props['aria-hidden'] !== undefined) result.accessibilityElementsHidden = props['aria-hidden'];\n  if (props['aria-hidden'] === true) result.importantForAccessibility = 'no-hide-descendants';\n  if (props.tabIndex !== undefined) result.focusable = !props.tabIndex;\n  for (const [name, keys, prefix] of [\n    ['accessibilityState', stateKeys, 'aria-'],\n    ['accessibilityValue', valueKeys, 'aria-value'],\n  ] as const) {\n    if (props[name] != null || keys.some((key) => props[prefix + key] != null))\n      result[name] = merge(props, name, keys, prefix);\n  }\n  return result;\n}\n\nfunction imageProps(props: Props, platform: string, minor: number): Props {\n  const result = { ...props };\n  const legacy = minor < 85;\n  if (minor >= 88) {\n    for (const key of Object.keys(result))\n      if (key.startsWith('aria-') || key === 'alt' || key === 'accessibilityState') delete result[key];\n    if (props['aria-label'] != null) result.accessibilityLabel = props['aria-label'];\n    else if (props.alt != null && props.accessibilityLabel == null) result.accessibilityLabel = props.alt;\n    if (props['aria-labelledby'] != null) result.accessibilityLabelledBy = props['aria-labelledby'];\n    if (platform === 'ios' && props['aria-hidden'] === true) result.accessible = false;\n    else if (props.alt != null) result.accessible = true;\n    if (platform === 'android' && props['aria-hidden'] === true)\n      result.importantForAccessibility = 'no-hide-descendants';\n    if (props.accessibilityState != null || stateKeys.some((key) => props['aria-' + key] != null))\n      result.accessibilityState = merge(props, 'accessibilityState', stateKeys);\n    return result;\n  }\n  if (platform === 'android' && !legacy) {\n    for (const key of Object.keys(result))\n      if (\n        key.startsWith('aria-') ||\n        ['alt', 'accessible', 'accessibilityLabel', 'accessibilityLabelledBy', 'accessibilityState'].includes(key)\n      )\n        delete result[key];\n  } else if (platform === 'ios') {\n    for (const key of ['aria-hidden', ...stateKeys.map((key) => 'aria-' + key)]) delete result[key];\n  }\n  const label = props['aria-label'] ?? props.accessibilityLabel ?? props.alt;\n  const labelledBy = props['aria-labelledby'] ?? props.accessibilityLabelledBy;\n  if (platform === 'ios' || legacy || label != null) result.accessibilityLabel = label;\n  if (platform === 'android' && (legacy || labelledBy != null)) result.accessibilityLabelledBy = labelledBy;\n  if (platform === 'ios')\n    result.accessible = props['aria-hidden'] !== true && (props.alt === undefined ? props.accessible : true);\n  else if (legacy) result.accessible = props.alt === undefined ? props.accessible : true;\n  else if (props.alt != null || props.accessible != null)\n    result.accessible = props.alt == null ? props.accessible : true;\n  if (platform === 'android' && (legacy || props['aria-hidden'] === true))\n    result.importantForAccessibility =\n      props['aria-hidden'] === true ? 'no-hide-descendants' : props.importantForAccessibility;\n  if (platform === 'ios')\n    result.accessibilityState = Object.hasOwn(props, 'accessibilityState')\n      ? props.accessibilityState\n      : merge(props, 'accessibilityState', stateKeys);\n  else if (legacy || props.accessibilityState != null || stateKeys.some((key) => props['aria-' + key] != null))\n    result.accessibilityState = merge(props, 'accessibilityState', stateKeys);\n  return result;\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, JSXOptimizer, PluginLogger, ReactNativeColorNormalizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { BailoutCheck, getFirstBailoutReason } from '../../utils/helpers';\nimport {\n  addDefaultProperty,\n  addFileImportHint,\n  buildPropertiesFromAttributes,\n  hasAccessibilityProperty,\n  hasAmbiguousIdNativeID,\n  hasBlacklistedProperty,\n  hasBlacklistedPropertyInSpread,\n  isForcedLine,\n  isIgnoredLine,\n  isReactNativeComponent,\n  renameIdToNativeID,\n  replaceWithNativeComponent,\n  isPrimitiveChild,\n  hasExpoRouterLinkParentWithAsChild,\n  extractStyleAttribute,\n  extractSelectionColor,\n  extractStaticTextSelectable,\n  tryBuildStaticTextStyle,\n  isStaticLiteralTree,\n  ancestorBailoutChecks,\n  createStyleOriginResolver,\n  UNISTYLES_TEXT_HOST,\n} from '../../utils/common';\nimport { ACCESSIBILITY_PROPERTIES, RUNTIME_MODULE_NAME } from '../../utils/constants';\nimport { createJSXOptimizer } from '../../utils/optimizer';\nimport { foldAccessibility } from '../../utils/static-accessibility';\n\nexport const textBlacklistedProperties = new Set([\n  'onLongPress',\n  'onPress',\n  'onPressIn',\n  'onPressOut',\n  'onResponderGrant',\n  'onResponderMove',\n  'onResponderRelease',\n  'onResponderTerminate',\n  'onResponderTerminationRequest',\n  'onStartShouldSetResponder',\n  'pressRetentionOffset',\n  'suppressHighlighting',\n]);\n\n/**\n * Props handed off to `processTextAccessibilityProps` at runtime: the accessibility props plus `disabled`\n * (reconciled against `accessibilityState.disabled`) and the explicit `accessibilityElementsHidden` /\n * `importantForAccessibility` natives that `aria-hidden` reconciles against — collecting them lets the\n * helper own the `aria-hidden` precedence instead of leaving them as direct attributes that would\n * override the leading helper spread. They are collected into a single helper call and stripped from\n * the element so they are not also emitted verbatim.\n */\nconst NORMALIZED_PROPERTIES = new Set([\n  ...ACCESSIBILITY_PROPERTIES,\n  'disabled',\n  'accessibilityElementsHidden',\n  'importantForAccessibility',\n]);\n\n/**\n * Props the optimizer normalizes, translates, renames, or clamps for direct attributes but cannot reach\n * inside a spread. A spread that may carry any of these forces a bail — an unresolvable spread bails\n * unconditionally, a resolvable one bails only when its object literal contains a guarded key — deferring\n * to the wrapper, which handles them correctly. Mirrors View's `VIEW_SPREAD_GUARD_KEYS`.\n *\n * TODO: rather than bail, route a resolvable spread's contents through `processTextAccessibilityProps` /\n * `processTextStyle` (and the `numberOfLines` clamp) so these elements keep optimizing. Deferred because\n * it requires replicating RN's spread→direct merge precedence across the a11y merge, `disabled`\n * reconciliation, and style.\n */\nconst TEXT_SPREAD_GUARD_KEYS = new Set([\n  ...NORMALIZED_PROPERTIES,\n  'children',\n  'style',\n  'numberOfLines',\n  'id',\n  'nativeID',\n  'selectionColor',\n]);\n\n/**\n * Type guard for a direct JSX attribute whose name is in {@link NORMALIZED_PROPERTIES}.\n */\nconst isNormalizedProperty = (attribute: t.JSXAttribute | t.JSXSpreadAttribute): attribute is t.JSXAttribute =>\n  t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && NORMALIZED_PROPERTIES.has(attribute.name.name);\n\nconst optimizeNativeText: JSXOptimizer = (\n  path,\n  { logger, options, platform, unistylesEnabled, reactNativeMinor, normalizeColor }\n) => {\n  if (platform === 'web' && options?.integrations?.uniwind === 'on') return;\n  if (!isReactNativeComponent(path, 'Text')) return;\n\n  const parent = path.parent as t.JSXElement;\n  const forced = isForcedLine(path);\n\n  // In Unistyles mode, classify the direct `style` origin (lazily, once). A `style` carried by a spread\n  // is already guarded (`style` ∈ TEXT_SPREAD_GUARD_KEYS), so only the direct attribute is classified.\n  const getStyleOrigin = createStyleOriginResolver(path, unistylesEnabled);\n\n  const overridableChecks: BailoutCheck[] = [\n    {\n      reason: 'contains blacklisted props',\n      shouldBail: () => hasBlacklistedProperty(path, textBlacklistedProperties),\n    },\n    {\n      reason: 'has a spread that may carry a translated, normalized, or clamped prop',\n      shouldBail: () => hasBlacklistedPropertyInSpread(path, TEXT_SPREAD_GUARD_KEYS),\n    },\n    {\n      reason: 'disabled reconciliation may mutate caller state before React renders Text',\n      shouldBail: () =>\n        platform !== 'web' &&\n        options?.integrations?.uniwind !== 'on' &&\n        (reactNativeMinor === undefined || reactNativeMinor >= 85) &&\n        mayMutateCallerState(path) &&\n        foldAccessibility(\n          path,\n          path.node.attributes.filter(isNormalizedProperty),\n          'Text',\n          platform,\n          reactNativeMinor\n        ) === undefined,\n    },\n    {\n      reason: 'has an unresolved style source that may be a Unistyles style',\n      shouldBail: () => getStyleOrigin() === 'unknown',\n    },\n    {\n      reason: 'has both a dynamic `id` and a `nativeID` (ambiguous precedence)',\n      shouldBail: () => hasAmbiguousIdNativeID(path),\n    },\n    {\n      reason: 'is a direct child of expo-router Link with asChild',\n      shouldBail: () => hasExpoRouterLinkParentWithAsChild(path),\n    },\n    // The local children check runs before the ancestor checks because it is cheap and prunes the\n    // common nested-element `Text` before the unbounded ancestor walk those checks trigger.\n    {\n      reason: 'contains non-primitive children',\n      shouldBail: () => hasInvalidChildren(path, parent),\n    },\n    ...ancestorBailoutChecks(path, options?.assumptions?.unknownAncestorsDoNotRenderText === true),\n  ];\n\n  if (forced) {\n    const overriddenReason = getFirstBailoutReason(overridableChecks);\n\n    if (overriddenReason) {\n      logger.forced({ target: 'Text', path, reason: overriddenReason });\n    }\n  } else {\n    const skipReason = getFirstBailoutReason([\n      {\n        reason: 'line is marked with @boost-ignore',\n        shouldBail: () => isIgnoredLine(path),\n      },\n      ...overridableChecks,\n    ]);\n\n    if (skipReason) {\n      logger.skipped({ target: 'Text', path, reason: skipReason });\n      return;\n    }\n  }\n\n  const hub = path.hub as unknown;\n  const file = typeof hub === 'object' && hub !== null && 'file' in hub ? (hub.file as HubFile) : undefined;\n\n  if (!file) {\n    throw new PluginError('No file found in Babel hub');\n  }\n\n  if (options?.integrations?.uniwind === 'on' && getStyleOrigin() !== 'plain') {\n    logger.skipped({ target: 'Text', path, reason: 'Uniwind cannot flatten a Unistyles style' });\n    return;\n  }\n\n  logger.optimized({\n    target: 'Text',\n    path,\n  });\n\n  if (options?.integrations?.uniwind === 'on') {\n    replaceWithNativeComponent(path, parent, file, 'NativeText', { moduleName: 'react-native-boost/uniwind' });\n    return;\n  }\n\n  const routeToUnistyles = getStyleOrigin() === 'unistyles';\n\n  // Process props\n  fixNegativeNumberOfLines({ path, logger, file });\n  renameIdToNativeID(path);\n  addDefaultProperty(path, 'allowFontScaling', t.booleanLiteral(true));\n  addDefaultProperty(path, 'ellipsizeMode', t.stringLiteral('tail'));\n  processProps(path, file, platform, routeToUnistyles, reactNativeMinor, normalizeColor);\n\n  // A Unistyles-styled Text routes to Unistyles' lean host (a registering wrapper around `RCTText`); its\n  // `style` is passed by identity (see `processProps`) so the Unistyles native-state — and therefore the\n  // shadow-tree registration — survives. Plain text optimizes to Boost's own raw host as usual.\n  replaceWithNativeComponent(path, parent, file, 'NativeText', routeToUnistyles ? UNISTYLES_TEXT_HOST : undefined);\n};\n\nexport const nativeTextOptimizer = createJSXOptimizer('native-text', optimizeNativeText);\n\nfunction mayMutateCallerState(path: NodePath<t.JSXOpeningElement>): boolean {\n  const attributes = path.node.attributes.filter((attribute): attribute is t.JSXAttribute =>\n    t.isJSXAttribute(attribute)\n  );\n  const disabled = attributes.find((attribute) => t.isJSXIdentifier(attribute.name, { name: 'disabled' }));\n  const state = attributes.find((attribute) => t.isJSXIdentifier(attribute.name, { name: 'accessibilityState' }));\n  if (!disabled || !state) return false;\n  if (t.isJSXExpressionContainer(disabled.value) && t.isNullLiteral(disabled.value.expression)) return false;\n  if (t.isJSXExpressionContainer(state.value) && isStaticLiteralTree(state.value.expression)) return false;\n  // A definite ARIA state override makes RN copy the caller's state before reconciling disabled.\n  return !attributes.some(\n    (attribute) =>\n      t.isJSXIdentifier(attribute.name) &&\n      ['aria-busy', 'aria-checked', 'aria-disabled', 'aria-expanded', 'aria-selected'].includes(attribute.name.name) &&\n      (attribute.value === null ||\n        t.isStringLiteral(attribute.value) ||\n        (t.isJSXExpressionContainer(attribute.value) &&\n          (t.isBooleanLiteral(attribute.value.expression) ||\n            t.isStringLiteral(attribute.value.expression) ||\n            t.isNumericLiteral(attribute.value.expression))))\n  );\n}\n\n/**\n * Checks if the Text component has any invalid children or blacklisted properties.\n * This function combines the checks for both attribute-based children and JSX children.\n *\n * @param path - The path to the JSXOpeningElement.\n * @param parent - The parent JSX element.\n * @returns true if the component has invalid children or blacklisted properties.\n */\nfunction hasInvalidChildren(path: NodePath<t.JSXOpeningElement>, parent: t.JSXElement): boolean {\n  for (const attribute of path.node.attributes) {\n    if (t.isJSXSpreadAttribute(attribute)) continue; // Spread attributes are handled in hasBlacklistedProperty\n\n    if (\n      t.isJSXIdentifier(attribute.name) &&\n      attribute.value &&\n      // For a \"children\" attribute, optimization is allowed only if it is a provable primitive\n      attribute.name.name === 'children' &&\n      !isPrimitiveChild(path, attribute.value)\n    ) {\n      return true;\n    }\n  }\n\n  // Return true if any child is not a provably-primitive node\n  return !parent.children.every((child) => isPrimitiveChild(path, child));\n}\n\n/**\n * Replicates `Text`'s non-negative `numberOfLines` rule. A literal value is clamped at build time — a\n * negative becomes `0` with a compile-time warning, a non-negative is left untouched. A non-literal value\n * (its sign unknowable at build time) is wrapped in the runtime `clampNumberOfLines` helper, which mirrors\n * RN exactly (negative/`NaN` → `0`; `null`/`undefined` untouched).\n */\nfunction fixNegativeNumberOfLines({\n  path,\n  logger,\n  file,\n}: {\n  path: NodePath<t.JSXOpeningElement>;\n  logger: PluginLogger;\n  file: HubFile;\n}) {\n  for (const attribute of path.node.attributes) {\n    if (\n      !t.isJSXAttribute(attribute) ||\n      !t.isJSXIdentifier(attribute.name, { name: 'numberOfLines' }) ||\n      !attribute.value ||\n      !t.isJSXExpressionContainer(attribute.value) ||\n      !t.isExpression(attribute.value.expression)\n    ) {\n      continue;\n    }\n\n    const expression = attribute.value.expression;\n    const literalValue = staticNumberOfLines(expression);\n\n    if (literalValue !== undefined) {\n      if (literalValue < 0) {\n        logger.warning({\n          target: 'Text',\n          path,\n          message: `'numberOfLines' must be a non-negative number, received: ${literalValue}. The value will be set to 0.`,\n        });\n        attribute.value.expression = t.numericLiteral(0);\n      }\n      continue;\n    }\n\n    const clampIdentifier = addFileImportHint({\n      file,\n      nameHint: 'clampNumberOfLines',\n      path,\n      importName: 'clampNumberOfLines',\n      moduleName: RUNTIME_MODULE_NAME,\n    });\n    attribute.value.expression = t.callExpression(t.identifier(clampIdentifier.name), [expression]);\n  }\n}\n\n/**\n * The build-time numeric value of a `numberOfLines` expression when it is a numeric literal or a\n * unary-minus numeric literal; `undefined` for any other (non-literal) expression.\n */\nfunction staticNumberOfLines(expression: t.Expression): number | undefined {\n  if (t.isNumericLiteral(expression)) return expression.value;\n  if (t.isUnaryExpression(expression) && expression.operator === '-' && t.isNumericLiteral(expression.argument)) {\n    return -expression.argument.value;\n  }\n  return undefined;\n}\n\n/**\n * Processes style and accessibility attributes, replacing them with optimized versions.\n *\n * When `passStyleByIdentity` is set (Unistyles routing), the `style` attribute is left exactly as\n * written instead of being flattened/normalized through `processTextStyle` — flattening would strip the\n * Unistyles native-state the engine needs. Accessibility, `selectionColor`, and the `accessible` default\n * are still applied (they do not touch `style`). The skipped text normalizations (numeric `fontWeight`,\n * `verticalAlign`, `userSelect` → `selectable`) cannot be reproduced safely here: for a reactive style\n * Unistyles' C++ engine re-commits the raw parsed values on every update, overwriting any JS-side\n * normalization, so matching Unistyles' own lean-host semantics (raw pass-through) is the correct contract.\n */\nfunction processProps(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  platform?: string,\n  passStyleByIdentity = false,\n  reactNativeMinor?: number,\n  normalizeColor?: ReactNativeColorNormalizer\n) {\n  passStyleByIdentity ||= platform === 'web';\n  // Grab the up-to-date list of attributes\n  const currentAttributes = [...path.node.attributes];\n\n  const { styleExpr, styleAttribute } = extractStyleAttribute(currentAttributes);\n\n  // `Text` always resolves a platform-specific `accessible` default and reconciles `disabled` with\n  // `accessibilityState.disabled`. When any accessibility prop or `disabled` is present we hand the\n  // element off to `processTextAccessibilityProps` (which also performs the aria/label merges); otherwise\n  // only the `accessible` default is needed, so we inject it directly to keep the common path cheap.\n  const shouldNormalize =\n    hasAccessibilityProperty(path, currentAttributes) ||\n    currentAttributes.some(\n      (attribute) => t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'disabled' })\n    );\n\n  // ============================================\n  // 1. Prepare the accessibility & style transforms\n  // ============================================\n\n  let accessibilitySpread: t.JSXSpreadAttribute | undefined;\n  let accessibilityAttributes: t.JSXAttribute[] | undefined;\n\n  // --- Accessibility & `disabled` ---\n  if (shouldNormalize) {\n    const normalizedAttributes = currentAttributes.filter((attribute) => isNormalizedProperty(attribute));\n\n    accessibilityAttributes = foldAccessibility(\n      path,\n      currentAttributes.filter(\n        (attribute): attribute is t.JSXAttribute =>\n          t.isJSXAttribute(attribute) &&\n          t.isJSXIdentifier(attribute.name) &&\n          (NORMALIZED_PROPERTIES.has(attribute.name.name) ||\n            attribute.name.name === 'role' ||\n            attribute.name.name === 'accessibilityRole')\n      ),\n      'Text',\n      platform,\n      reactNativeMinor\n    );\n    if (!accessibilityAttributes) {\n      const normalizeIdentifier = addFileImportHint({\n        file,\n        nameHint: 'processTextAccessibilityProps',\n        path,\n        importName: 'processTextAccessibilityProps',\n        moduleName: RUNTIME_MODULE_NAME,\n      });\n\n      const accessibilityObject = buildPropertiesFromAttributes(normalizedAttributes);\n      const accessibilityExpr = t.callExpression(t.identifier(normalizeIdentifier.name), [accessibilityObject]);\n      accessibilitySpread = t.jsxSpreadAttribute(accessibilityExpr);\n    }\n  }\n\n  // --- Style ---\n  // `Text` lets a `userSelect` in the style override a direct `selectable` prop. When the style is static\n  // enough to read `userSelect` at build time we emit the derived `selectable` as a literal and drop the\n  // now-dead direct prop; when it is only knowable at runtime, the `processTextStyle` spread carries\n  // the override and is emitted last so it still wins over the direct prop.\n  let selectableAttribute: t.JSXAttribute | undefined;\n  let staticStyleAttribute: t.JSXAttribute | undefined;\n  let styleSpread: t.JSXSpreadAttribute | undefined;\n\n  // RN prepends `{ overflow: 'hidden' }` from 0.85. Use the build target when both its version and\n  // native platform are known. The runtime fallback preserves unknown-platform and Babel-only builds.\n  const emitsDefaultStyle = !passStyleByIdentity && platform !== 'web';\n  const resolvesDefaultStyleAtBuildTime =\n    emitsDefaultStyle && reactNativeMinor !== undefined && (platform === 'ios' || platform === 'android');\n  const buildDefaultTextStyleExpression = (): t.Expression | undefined => {\n    if (resolvesDefaultStyleAtBuildTime) {\n      if (reactNativeMinor < 85) return undefined;\n      const defaultStyleIdentifier = addFileImportHint({\n        file,\n        nameHint: 'textDefaultOverflowStyle',\n        path,\n        importName: 'textDefaultOverflowStyle',\n        moduleName: RUNTIME_MODULE_NAME,\n      });\n      return t.identifier(defaultStyleIdentifier.name);\n    }\n\n    const defaultStyleIdentifier = addFileImportHint({\n      file,\n      nameHint: 'getDefaultTextStyle',\n      path,\n      importName: 'getDefaultTextStyle',\n      moduleName: RUNTIME_MODULE_NAME,\n    });\n    return t.callExpression(t.identifier(defaultStyleIdentifier.name), []);\n  };\n\n  const withDefaultTextStyle = (style: t.Expression): t.Expression => {\n    const defaultStyle = emitsDefaultStyle ? buildDefaultTextStyleExpression() : undefined;\n    if (!defaultStyle) return style;\n    const composed = t.arrayExpression([t.cloneNode(defaultStyle), style]);\n    return resolvesDefaultStyleAtBuildTime\n      ? composed\n      : t.conditionalExpression(defaultStyle, composed, t.cloneNode(style, true));\n  };\n\n  // `passStyleByIdentity` (Unistyles routing) skips all style transforms — the original `style`\n  // attribute is left untouched in the collected attributes below so it reaches the native host intact.\n  if (styleExpr && !passStyleByIdentity) {\n    // An unknown platform can load the web runtime, which must receive the unmodified style.\n    const staticStyle = platform === undefined ? undefined : tryBuildStaticTextStyle(styleExpr);\n    const selectable = staticStyle ? extractStaticTextSelectable(styleExpr) : undefined;\n\n    if (selectable) {\n      selectableAttribute = t.jsxAttribute(\n        t.jsxIdentifier('selectable'),\n        t.jsxExpressionContainer(\n          selectable.value === undefined\n            ? t.unaryExpression('void', t.numericLiteral(0))\n            : t.booleanLiteral(selectable.value)\n        )\n      );\n    }\n\n    // Static styles skip runtime inspection, but keep the authored entries before RN's overrides.\n    if (staticStyle) {\n      staticStyleAttribute = t.jsxAttribute(\n        t.jsxIdentifier('style'),\n        t.jsxExpressionContainer(withDefaultTextStyle(staticStyle))\n      );\n    } else {\n      const flattenIdentifier = addFileImportHint({\n        file,\n        nameHint: 'processTextStyle',\n        path,\n        importName: 'processTextStyle',\n        moduleName: RUNTIME_MODULE_NAME,\n      });\n      const helperArguments = [styleExpr];\n      if (resolvesDefaultStyleAtBuildTime) {\n        helperArguments.push(t.booleanLiteral(reactNativeMinor >= 85));\n      }\n      const flattenedStyleExpr = t.callExpression(t.identifier(flattenIdentifier.name), helperArguments);\n      styleSpread = t.jsxSpreadAttribute(flattenedStyleExpr);\n    }\n  } else if (!styleAttribute && emitsDefaultStyle && (!resolvesDefaultStyleAtBuildTime || reactNativeMinor >= 85)) {\n    // No style at all still gets the wrapper's default. A style attribute without an extractable\n    // expression (e.g. `style=\"\"`) is left verbatim instead — emitting a second `style` would have the\n    // later attribute silently discard one of the two.\n    staticStyleAttribute = t.jsxAttribute(\n      t.jsxIdentifier('style'),\n      t.jsxExpressionContainer(withDefaultTextStyle(t.unaryExpression('void', t.numericLiteral(0))))\n    );\n  }\n\n  // --- selectionColor ---\n  const { selectionColorAttribute, selectionColorExpr } = extractSelectionColor(currentAttributes);\n  let selectionColorReplacement: t.JSXAttribute | t.JSXSpreadAttribute | undefined;\n  if (selectionColorExpr) {\n    const staticSelectionColor = processStaticSelectionColor(path, selectionColorExpr, platform, normalizeColor);\n    if (staticSelectionColor === undefined) {\n      const selectionColorIdentifier = addFileImportHint({\n        file,\n        nameHint: 'processSelectionColor',\n        path,\n        importName: 'processSelectionColor',\n        moduleName: RUNTIME_MODULE_NAME,\n      });\n      selectionColorReplacement = t.jsxSpreadAttribute(\n        t.callExpression(t.identifier(selectionColorIdentifier.name), [selectionColorExpr])\n      );\n    } else if (staticSelectionColor !== null) {\n      selectionColorReplacement = t.jsxAttribute(\n        t.jsxIdentifier('selectionColor'),\n        t.jsxExpressionContainer(t.numericLiteral(staticSelectionColor))\n      );\n    }\n  }\n\n  // ============================================\n  // 2. Collect the remaining (non-processed) attributes\n  // ============================================\n  const remainingAttributes: (t.JSXAttribute | t.JSXSpreadAttribute)[] = [];\n\n  for (const attribute of currentAttributes) {\n    // Skip the style attribute (we have replaced it with a `style` object or `processTextStyle` spread).\n    // When passing the style by identity (Unistyles routing) it is retained here, untouched.\n    if (!passStyleByIdentity && styleAttribute && attribute === styleAttribute) continue;\n\n    // Skip the props we routed through `processTextAccessibilityProps`\n    if (shouldNormalize && isNormalizedProperty(attribute)) continue;\n    if (\n      accessibilityAttributes &&\n      t.isJSXAttribute(attribute) &&\n      t.isJSXIdentifier(attribute.name) &&\n      (attribute.name.name === 'role' || attribute.name.name === 'accessibilityRole')\n    )\n      continue;\n\n    // Skip the selectionColor attribute after preparing its replacement.\n    if (selectionColorAttribute && attribute === selectionColorAttribute) continue;\n\n    // A build-time `userSelect`-derived `selectable` supersedes a direct `selectable` (RN's rule), so\n    // drop the now-dead direct prop instead of emitting it alongside the derived literal.\n    if (\n      selectableAttribute &&\n      t.isJSXAttribute(attribute) &&\n      t.isJSXIdentifier(attribute.name, { name: 'selectable' })\n    ) {\n      continue;\n    }\n\n    remainingAttributes.push(attribute);\n  }\n\n  // ============================================\n  // 3. `accessible` default for the common path\n  // ============================================\n  // With no accessibility/`disabled` prop the helper is skipped, but `Text` still applies a\n  // platform-specific `accessible` default. We build it explicitly (rather than via `addDefaultProperty`,\n  // which gives up when it hits the unresolvable `{...processTextStyle(...)}` spread and would silently\n  // drop the default on styled text). The cheap path guarantees no `accessible` is already set — any\n  // such prop would have set `shouldNormalize`, and unresolvable spreads bail before this point — so\n  // appending it unconditionally is safe.\n  const accessibleAttribute = shouldNormalize ? undefined : buildAccessibleDefault(path, file, platform);\n\n  // ============================================\n  // 4. Assemble the final attribute list\n  // ============================================\n  // `selectableAttribute` and `styleSpread` are emitted AFTER the remaining attributes so style-derived\n  // `userSelect` overrides direct or spread-carried `selectable`, mirroring `Text`'s late override.\n  // The selection color writes a disjoint key, so its position is free — it leads for readability.\n  path.node.attributes = [\n    selectionColorReplacement,\n    accessibilitySpread,\n    ...(accessibilityAttributes ?? []),\n    staticStyleAttribute,\n    ...remainingAttributes,\n    selectableAttribute,\n    styleSpread,\n    accessibleAttribute,\n  ].filter((attribute): attribute is t.JSXAttribute | t.JSXSpreadAttribute => attribute !== undefined);\n}\n\nfunction processStaticSelectionColor(\n  path: NodePath<t.JSXOpeningElement>,\n  expression: t.Expression,\n  platform: string | undefined,\n  normalizeColor: ReactNativeColorNormalizer | undefined,\n  resolved = new Set<string>()\n): number | null | undefined {\n  if ((platform !== 'ios' && platform !== 'android') || !normalizeColor) return undefined;\n\n  if (t.isIdentifier(expression)) {\n    if (expression.name === 'undefined' && !path.scope.getBinding('undefined')) return null;\n    if (resolved.has(expression.name)) return undefined;\n    const binding = path.scope.getBinding(expression.name);\n    if (\n      binding?.kind !== 'const' ||\n      !binding.constant ||\n      !t.isVariableDeclarator(binding.path.node) ||\n      !t.isExpression(binding.path.node.init) ||\n      binding.path.node.start == null ||\n      expression.start == null ||\n      binding.path.node.start > expression.start\n    ) {\n      return undefined;\n    }\n    resolved.add(expression.name);\n    return processStaticSelectionColor(path, binding.path.node.init, platform, normalizeColor, resolved);\n  }\n\n  let color: string | number;\n  if (t.isStringLiteral(expression) || t.isNumericLiteral(expression)) {\n    color = expression.value;\n  } else if (t.isTemplateLiteral(expression) && expression.expressions.length === 0) {\n    color = expression.quasis[0]!.value.cooked!;\n  } else if (\n    t.isUnaryExpression(expression) &&\n    expression.operator === '-' &&\n    t.isNumericLiteral(expression.argument)\n  ) {\n    color = -expression.argument.value;\n  } else if (t.isNullLiteral(expression) || t.isBooleanLiteral(expression)) {\n    return null;\n  } else {\n    return undefined;\n  }\n\n  let processedColor = normalizeColor(color);\n  if (typeof processedColor !== 'number') return null;\n  processedColor = ((processedColor << 24) | (processedColor >>> 8)) >>> 0;\n  return platform === 'android' && processedColor > 0x7f_ff_ff_ff ? processedColor - 0x1_00_00_00_00 : processedColor;\n}\n\n/**\n * Builds the `accessible` default attribute `Text` applies when the prop is omitted: `true` on iOS,\n * `false` on Android, omitted on web. Metro bundles per platform and reports the target on the Babel\n * caller, so a known platform is inlined as a literal; an unknown platform (non-Metro bundlers,\n * fixture tests) defers to the lightweight runtime resolver. Returns `undefined` when nothing should\n * be emitted.\n */\nfunction buildAccessibleDefault(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  platform?: string\n): t.JSXAttribute | undefined {\n  if (platform === 'web') return undefined;\n\n  let value: t.Expression;\n  if (platform === 'ios' || platform === 'android') {\n    value = t.booleanLiteral(platform === 'ios');\n  } else {\n    const accessibleIdentifier = addFileImportHint({\n      file,\n      nameHint: 'getDefaultTextAccessible',\n      path,\n      importName: 'getDefaultTextAccessible',\n      moduleName: RUNTIME_MODULE_NAME,\n    });\n    value = t.callExpression(t.identifier(accessibleIdentifier.name), []);\n  }\n\n  return t.jsxAttribute(t.jsxIdentifier('accessible'), t.jsxExpressionContainer(value));\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, JSXOptimizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { BailoutCheck, getFirstBailoutReason } from '../../utils/helpers';\nimport {\n  addFileImportHint,\n  buildPropertiesFromAttributes,\n  hasBlacklistedProperty,\n  hasBlacklistedPropertyInSpread,\n  isIgnoredLine,\n  isForcedLine,\n  isReactNativeComponent,\n  isStaticLiteralTree,\n  makeAttribute,\n  replaceWithNativeComponent,\n  ancestorBailoutChecks,\n  createStyleOriginResolver,\n  createTextContextSourceResolver,\n} from '../../utils/common';\nimport { RUNTIME_MODULE_NAME } from '../../utils/constants';\nimport { createJSXOptimizer } from '../../utils/optimizer';\nimport { foldAccessibility } from '../../utils/static-accessibility';\n\nconst IMAGE_LOAD_CALLBACKS = new Set(['onLoadStart', 'onLoad', 'onLoadEnd', 'onError']);\n\nconst IMAGE_BAILOUT_PROPS = new Set([\n  'aria-live',\n  'aria-valuemax',\n  'aria-valuemin',\n  'aria-valuenow',\n  'aria-valuetext',\n  'children',\n  'defaultSource',\n  'id',\n  'internal_analyticTag',\n  'loadingIndicatorSource',\n  'onPartialLoad',\n  'onProgress',\n  'ref',\n  'tabIndex',\n]);\n\nconst IMAGE_ARIA_STATE_PROPS = new Set([\n  'aria-busy',\n  'aria-checked',\n  'aria-disabled',\n  'aria-expanded',\n  'aria-selected',\n]);\n\nconst IMAGE_REQUEST_HEADER_PROPS = new Set(['crossOrigin', 'referrerPolicy']);\n\nconst IMAGE_SPREAD_GUARD_PROPS = new Set([\n  ...IMAGE_BAILOUT_PROPS,\n  ...IMAGE_LOAD_CALLBACKS,\n  ...IMAGE_REQUEST_HEADER_PROPS,\n  ...IMAGE_ARIA_STATE_PROPS,\n  'accessible',\n  'accessibilityLabel',\n  'accessibilityLabelledBy',\n  'accessibilityState',\n  'alt',\n  'aria-hidden',\n  'aria-label',\n  'aria-labelledby',\n  'height',\n  'importantForAccessibility',\n  'resizeMode',\n  'source',\n  'src',\n  'srcSet',\n  'style',\n  'tintColor',\n  'width',\n]);\n\nconst IMAGE_BASE_STYLE = t.objectExpression([t.objectProperty(t.identifier('overflow'), t.stringLiteral('hidden'))]);\n\nconst OBJECT_FIT_TO_RESIZE_MODE: Record<string, string> = {\n  'contain': 'contain',\n  'cover': 'cover',\n  'fill': 'stretch',\n  'none': 'none',\n  'scale-down': 'contain',\n};\n\nconst optimizeNativeImage: JSXOptimizer = (path, { logger, options, platform, unistylesEnabled, reactNativeMinor }) => {\n  if (platform === 'web') return;\n  if (!isReactNativeComponent(path, 'Image')) return;\n\n  if (platform !== 'ios' && platform !== 'android') {\n    logger.skipped({ target: 'Image', path, reason: 'target platform is unknown' });\n    return;\n  }\n\n  const parent = path.parent as t.JSXElement;\n  const forced = isForcedLine(path);\n  const loadCallbacks = path.node.attributes.filter(\n    (attribute): attribute is t.JSXAttribute =>\n      t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && IMAGE_LOAD_CALLBACKS.has(attribute.name.name)\n  );\n  const callbackKinds = loadCallbacks.map((attribute) =>\n    classifyLoadCallback(path, getAttributeValueExpression(attribute))\n  );\n  const getAncestor = createTextContextSourceResolver(path);\n\n  // Text-context assumptions do not prove that a parent cannot inspect or inject callbacks.\n  if (\n    !forced &&\n    loadCallbacks.length > 0 &&\n    (getAncestor() !== 'safe' ||\n      callbackKinds.includes(undefined) ||\n      (platform === 'android' && reactNativeMinor === undefined) ||\n      (options?.integrations?.uniwind === 'on' && callbackKinds.includes('nullish')) ||\n      findAttribute(path.node.attributes, 'shouldNotifyLoadEvents') ||\n      path.node.attributes.some(\n        (attribute) =>\n          t.isJSXSpreadAttribute(attribute) ||\n          (t.isJSXAttribute(attribute) &&\n            !loadCallbacks.includes(attribute) &&\n            t.isJSXExpressionContainer(attribute.value) &&\n            !path.scope.isPure(attribute.value.expression))\n      ) ||\n      getDirectAttributeNames(path.node.attributes).size !== path.node.attributes.length)\n  ) {\n    logger.skipped({\n      target: 'Image',\n      path,\n      reason: 'load callbacks require proved values, evaluation, and parent safety',\n    });\n    return;\n  }\n\n  // In Unistyles mode, classify the direct `style` origin (lazily, once). A `style` carried by a\n  // resolvable spread already bails (`style` is in {@link IMAGE_SPREAD_GUARD_PROPS}), as does an\n  // unresolvable spread. See {@link classifyStyleOrigin}.\n  const getStyleOrigin = createStyleOriginResolver(path, unistylesEnabled);\n  const srcSetAttribute = findAttribute(path.node.attributes, 'srcSet');\n  const staticSrcSetSource = srcSetAttribute\n    ? buildStaticSrcSetSource(path.node.attributes, platform, reactNativeMinor)\n    : undefined;\n\n  const bailoutChecks: BailoutCheck[] = [\n    {\n      reason: 'has an unresolved ancestor that may inspect or change children',\n      shouldBail: () => getAncestor() === 'unknown',\n    },\n    {\n      reason: 'has a Unistyles style and there is no lean Image host to route to',\n      shouldBail: () => getStyleOrigin() === 'unistyles',\n    },\n    {\n      reason: 'contains unsupported Image props',\n      shouldBail: () => hasBlacklistedProperty(path, IMAGE_BAILOUT_PROPS),\n    },\n    {\n      reason: 'has a spread that may carry Image wrapper props',\n      shouldBail: () => hasBlacklistedPropertyInSpread(path, IMAGE_SPREAD_GUARD_PROPS),\n    },\n    {\n      reason: 'contains non-empty children',\n      shouldBail: () => parent.children.some((child) => !t.isJSXText(child) || child.value.trim() !== ''),\n    },\n    {\n      reason: 'has an unsupported or dynamic srcSet',\n      shouldBail: () => srcSetAttribute !== undefined && staticSrcSetSource === undefined,\n    },\n    {\n      reason: 'has a dynamic style with srcSet',\n      shouldBail: () => srcSetAttribute !== undefined && buildStaticStyleInfo(path.node.attributes) === null,\n    },\n    {\n      reason: 'has an unsupported or dynamic source',\n      shouldBail: () => !hasImageSourceInput(path.node.attributes),\n    },\n    {\n      reason: 'has an unresolved style source that may be a Unistyles style',\n      shouldBail: () => getStyleOrigin() === 'unknown',\n    },\n    // Android through 0.84 selects its inline Image host from the inherited Text context.\n    ...(platform === 'android' && (reactNativeMinor === undefined || reactNativeMinor <= 84)\n      ? ancestorBailoutChecks(path, options?.assumptions?.unknownAncestorsDoNotRenderText === true)\n      : []),\n  ];\n\n  if (forced) {\n    const overriddenReason = getFirstBailoutReason(bailoutChecks);\n    if (overriddenReason) {\n      logger.forced({ target: 'Image', path, reason: overriddenReason });\n    }\n  } else {\n    const skipReason = getFirstBailoutReason([\n      {\n        reason: 'line is marked with @boost-ignore',\n        shouldBail: () => isIgnoredLine(path),\n      },\n      ...bailoutChecks,\n    ]);\n\n    if (skipReason) {\n      logger.skipped({ target: 'Image', path, reason: skipReason });\n      return;\n    }\n  }\n\n  const hub = path.hub as unknown;\n  const file = typeof hub === 'object' && hub !== null && 'file' in hub ? (hub.file as HubFile) : undefined;\n\n  if (!file) {\n    throw new PluginError('No file found in Babel hub');\n  }\n\n  if (options?.integrations?.uniwind === 'on') {\n    if (srcSetAttribute) {\n      logger.skipped({ target: 'Image', path, reason: 'Uniwind srcSet requires the Image wrapper' });\n      return;\n    }\n    logger.optimized({ target: 'Image', path });\n    replaceWithNativeComponent(path, parent, file, 'NativeImage', { moduleName: 'react-native-boost/uniwind' });\n    return;\n  }\n\n  const nativeSource = staticSrcSetSource ?? buildStaticNativeSource(path.node.attributes, platform, reactNativeMinor);\n  const styleInfo = buildStaticStyleInfo(path.node.attributes);\n\n  logger.optimized({ target: 'Image', path });\n\n  if (nativeSource && styleInfo !== null) {\n    processImageProps(path, file, nativeSource, styleInfo, platform, reactNativeMinor);\n  } else {\n    processRuntimeImageProps(path, file, platform, reactNativeMinor);\n  }\n  if (\n    platform === 'android' &&\n    (loadCallbacks.length > 0 || (reactNativeMinor !== undefined && reactNativeMinor <= 84))\n  ) {\n    const legacy = reactNativeMinor !== undefined && reactNativeMinor <= 84;\n    if (!legacy) {\n      path.node.attributes = path.node.attributes.filter((attribute) => {\n        const index = t.isJSXAttribute(attribute) ? loadCallbacks.indexOf(attribute) : -1;\n        return index < 0 || callbackKinds[index] !== 'nullish';\n      });\n    }\n    if (legacy || callbackKinds.includes('function')) {\n      path.node.attributes.push(\n        makeAttribute('shouldNotifyLoadEvents', t.booleanLiteral(callbackKinds.includes('function')))\n      );\n    }\n  }\n  replaceWithNativeComponent(path, parent, file, 'NativeImage');\n};\n\nfunction classifyLoadCallback(\n  path: NodePath<t.JSXOpeningElement>,\n  expression: t.Expression\n): 'function' | 'nullish' | undefined {\n  if (t.isNullLiteral(expression)) return 'nullish';\n  if (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression)) return 'function';\n  if (!t.isIdentifier(expression)) return;\n  const binding = path.scope.getBinding(expression.name);\n  if (expression.name === 'undefined' && !binding) return 'nullish';\n  if (!binding?.constant) return;\n  if (binding.path.isFunctionDeclaration()) return 'function';\n  if (binding.kind === 'const' && binding.path.isVariableDeclarator()) {\n    const initializer = binding.path.node.init;\n    if (t.isArrowFunctionExpression(initializer) || t.isFunctionExpression(initializer)) return 'function';\n  }\n}\n\nexport const nativeImageOptimizer = createJSXOptimizer('native-image', optimizeNativeImage);\n\ntype NativeSource = {\n  sourceAttributes: t.JSXAttribute[];\n  requestHeaderAttributes: t.JSXAttribute[];\n  sourceArray: t.ArrayExpression;\n  androidHeaders?: t.Expression;\n  width?: t.Expression;\n  height?: t.Expression;\n  /** `width`/`height` came from an ARRAY source whose dimension propagation varies by RN version. */\n  arraySourceDimensions?: boolean;\n  /** `androidHeaders` came from a plain OBJECT source whose header lift varies by RN version. */\n  objectSourceHeaders?: boolean;\n};\n\ntype StyleInfo = {\n  styleAttribute?: t.JSXAttribute;\n  styleExpression?: t.Expression;\n  objectFitResizeMode?: t.Expression;\n  styleResizeMode?: t.Expression;\n  tintColor?: t.Expression;\n} | null;\n\ntype ImageAccessibilityInfo = {\n  attributes: t.JSXAttribute[];\n  replacements: (t.JSXAttribute | t.JSXSpreadAttribute)[];\n};\n\ntype RuntimeImageInfo = {\n  attributes: t.JSXAttribute[];\n  spreadAttribute: t.JSXSpreadAttribute;\n};\n\nfunction processImageProps(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  nativeSource: NativeSource,\n  styleInfo: StyleInfo,\n  platform?: string,\n  reactNativeMinor?: number\n) {\n  const accessibilityInfo = buildImageAccessibilityInfo(path, file, platform, reactNativeMinor);\n  const consumed = new Set<t.JSXAttribute>([\n    ...nativeSource.sourceAttributes,\n    ...nativeSource.requestHeaderAttributes,\n    ...(accessibilityInfo?.attributes ?? []),\n  ]);\n  if (styleInfo?.styleAttribute) consumed.add(styleInfo.styleAttribute);\n\n  const remaining = path.node.attributes.filter((attribute) => {\n    if (!t.isJSXAttribute(attribute)) return true;\n    if (consumed.has(attribute)) return false;\n    const name = attribute.name.name;\n    if (name === 'width' || name === 'height')\n      return reactNativeMinor !== undefined && reactNativeMinor < (platform === 'ios' ? 88 : 85);\n    return name !== 'resizeMode' && name !== 'tintColor';\n  });\n\n  const explicitResizeMode = getAttributeExpression(path.node.attributes, 'resizeMode');\n  const explicitTintColor = getAttributeExpression(path.node.attributes, 'tintColor');\n  const tintColor = buildTintColor(explicitTintColor, styleInfo?.tintColor, platform);\n  const emitsAndroidProps = platform === 'android';\n\n  const hasArrayDimensions =\n    nativeSource.arraySourceDimensions === true &&\n    (nativeSource.width !== undefined || nativeSource.height !== undefined);\n  const resolvesArrayDimensionsAtRuntime = emitsAndroidProps && hasArrayDimensions && reactNativeMinor === undefined;\n  const includesDimensions =\n    nativeSource.arraySourceDimensions !== true || reactNativeMinor === undefined || reactNativeMinor >= 85;\n  const arrayDimensionsGate = resolvesArrayDimensionsAtRuntime\n    ? addRuntimeHelper(path, file, 'processImageArraySourceDimensions')\n    : undefined;\n\n  let androidHeaders: t.Expression | undefined;\n  if (emitsAndroidProps && nativeSource.androidHeaders) {\n    if (!nativeSource.objectSourceHeaders) {\n      androidHeaders = t.cloneNode(nativeSource.androidHeaders, true);\n    } else if (reactNativeMinor === undefined) {\n      androidHeaders = t.callExpression(addRuntimeHelper(path, file, 'processImageObjectSourceHeaders'), [\n        t.cloneNode(nativeSource.androidHeaders, true),\n      ]);\n    } else if (reactNativeMinor <= 84 || reactNativeMinor >= 87) {\n      androidHeaders = t.cloneNode(nativeSource.androidHeaders, true);\n    }\n  }\n\n  if (\n    t.isNullLiteral(androidHeaders) &&\n    (!nativeSource.objectSourceHeaders || (reactNativeMinor !== undefined && reactNativeMinor >= 85))\n  )\n    androidHeaders = undefined;\n\n  path.node.attributes = [\n    ...remaining,\n    ...(accessibilityInfo?.replacements ?? []),\n    makeAttribute('style', buildStyle(nativeSource, styleInfo, includesDimensions, arrayDimensionsGate)),\n    makeAttribute('source', hoistStaticImageSource(path, file, nativeSource.sourceArray)),\n    androidHeaders ? makeAttribute('headers', androidHeaders) : undefined,\n    makeAttribute('resizeMode', buildResizeMode(explicitResizeMode, styleInfo)),\n    tintColor ? makeAttribute('tintColor', tintColor) : undefined,\n  ].filter((attribute): attribute is t.JSXAttribute | t.JSXSpreadAttribute => attribute !== undefined);\n}\n\nfunction hoistStaticImageSource(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  source: t.ArrayExpression\n): t.Expression {\n  if (!isStaticLiteralTree(source)) return source;\n\n  const identifier = path.scope.getProgramParent().generateUidIdentifier('imageSource');\n  const declarator = t.variableDeclarator(identifier, source);\n\n  if (file.__staticImageSourceDeclaration) {\n    file.__staticImageSourceDeclaration.declarations.push(declarator);\n  } else {\n    const programPath = path.findParent((ancestor) => ancestor.isProgram());\n    if (!programPath?.isProgram()) throw new PluginError('No program found for static Image source');\n\n    const declaration = t.variableDeclaration('const', [declarator]);\n    const firstStatement = programPath.get('body').find((statement) => !statement.isImportDeclaration());\n    if (firstStatement) firstStatement.insertBefore(declaration);\n    else programPath.pushContainer('body', declaration);\n    file.__staticImageSourceDeclaration = declaration;\n  }\n\n  return t.cloneNode(identifier);\n}\n\nfunction addRuntimeHelper(path: NodePath<t.JSXOpeningElement>, file: HubFile, importName: string): t.Identifier {\n  return t.identifier(\n    addFileImportHint({ file, nameHint: importName, path, importName, moduleName: RUNTIME_MODULE_NAME }).name\n  );\n}\n\nfunction processRuntimeImageProps(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  platform?: string,\n  reactNativeMinor?: number\n) {\n  const accessibilityInfo = buildImageAccessibilityInfo(path, file, platform, reactNativeMinor);\n  const runtimeInfo = buildRuntimeImageInfo(path, file);\n  if (!runtimeInfo) return;\n\n  const consumed = new Set<t.JSXAttribute>([...runtimeInfo.attributes, ...(accessibilityInfo?.attributes ?? [])]);\n\n  const remaining = path.node.attributes.filter(\n    (attribute) => !t.isJSXAttribute(attribute) || !consumed.has(attribute)\n  );\n\n  path.node.attributes = [...remaining, ...(accessibilityInfo?.replacements ?? []), runtimeInfo.spreadAttribute].filter(\n    (attribute): attribute is t.JSXAttribute | t.JSXSpreadAttribute => attribute !== undefined\n  );\n}\n\nfunction buildImageAccessibilityInfo(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  platform?: string,\n  reactNativeMinor?: number\n): ImageAccessibilityInfo | undefined {\n  const groupNames = new Set([\n    ...IMAGE_ARIA_STATE_PROPS,\n    'alt',\n    'accessible',\n    'accessibilityLabel',\n    'accessibilityLabelledBy',\n    'accessibilityState',\n    'importantForAccessibility',\n    'aria-hidden',\n    'aria-label',\n    'aria-labelledby',\n  ]);\n  const group = path.node.attributes.filter(\n    (attribute): attribute is t.JSXAttribute =>\n      t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && groupNames.has(attribute.name.name)\n  );\n  if (group.length > 0) {\n    const folded = foldAccessibility(path, group, 'Image', platform, reactNativeMinor);\n    if (folded) return { attributes: group, replacements: folded };\n  }\n  const directNames = getDirectAttributeNames(path.node.attributes);\n  const hasAlt = directNames.has('alt');\n  const hasLabelTrigger = hasAlt || directNames.has('aria-label');\n  const hasHiddenTrigger = directNames.has('aria-hidden');\n  const hasLabelledByTrigger = directNames.has('aria-labelledby');\n  const hasStateTrigger =\n    [...IMAGE_ARIA_STATE_PROPS].some((name) => directNames.has(name)) ||\n    ((reactNativeMinor === undefined || reactNativeMinor >= 88) && directNames.has('accessibilityState'));\n  // Android 0.85–0.87 drops nullish `accessible`; keep the runtime gate for unknown targets.\n  const accessible = getAttributeExpression(path.node.attributes, 'accessible');\n  const hasNullableAccessible =\n    platform === 'android' &&\n    (reactNativeMinor === undefined || reactNativeMinor < 88) &&\n    accessible !== undefined &&\n    !isStaticNonNullishExpression(accessible);\n\n  if (!hasLabelTrigger && !hasHiddenTrigger && !hasLabelledByTrigger && !hasStateTrigger && !hasNullableAccessible) {\n    return undefined;\n  }\n\n  const helperNames = new Set<string>();\n  if (hasLabelTrigger) {\n    helperNames.add('alt');\n    helperNames.add('aria-label');\n    helperNames.add('accessibilityLabel');\n  }\n  if (hasAlt || hasNullableAccessible) {\n    helperNames.add('accessible');\n  }\n  if (hasHiddenTrigger) {\n    helperNames.add('aria-hidden');\n    helperNames.add('accessible');\n    helperNames.add('alt');\n    helperNames.add('importantForAccessibility');\n  }\n  if (hasLabelledByTrigger) {\n    helperNames.add('aria-labelledby');\n    helperNames.add('accessibilityLabelledBy');\n  }\n  if (hasStateTrigger) {\n    helperNames.add('accessibilityState');\n    for (const name of IMAGE_ARIA_STATE_PROPS) helperNames.add(name);\n  }\n\n  const attributes = path.node.attributes.filter(\n    (attribute): attribute is t.JSXAttribute =>\n      t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && helperNames.has(attribute.name.name)\n  );\n\n  if (attributes.length === 0) return undefined;\n\n  const helperIdentifier = addFileImportHint({\n    file,\n    nameHint: 'processImageAccessibilityProps',\n    path,\n    importName: 'processImageAccessibilityProps',\n    moduleName: RUNTIME_MODULE_NAME,\n  });\n\n  return {\n    attributes,\n    replacements: [\n      t.jsxSpreadAttribute(\n        t.callExpression(t.identifier(helperIdentifier.name), [buildPropertiesFromAttributes(attributes)])\n      ),\n    ],\n  };\n}\n\nfunction buildRuntimeImageInfo(path: NodePath<t.JSXOpeningElement>, file: HubFile): RuntimeImageInfo | undefined {\n  const attributes = [\n    findAttribute(path.node.attributes, 'source'),\n    findAttribute(path.node.attributes, 'src'),\n    findAttribute(path.node.attributes, 'width'),\n    findAttribute(path.node.attributes, 'height'),\n    findAttribute(path.node.attributes, 'crossOrigin'),\n    findAttribute(path.node.attributes, 'referrerPolicy'),\n    findAttribute(path.node.attributes, 'style'),\n    findAttribute(path.node.attributes, 'resizeMode'),\n    findAttribute(path.node.attributes, 'tintColor'),\n  ].filter((attribute): attribute is t.JSXAttribute => attribute !== undefined);\n\n  if (attributes.length === 0) return undefined;\n\n  const helperIdentifier = addFileImportHint({\n    file,\n    nameHint: 'processImageSourceProps',\n    path,\n    importName: 'processImageSourceProps',\n    moduleName: RUNTIME_MODULE_NAME,\n  });\n\n  return {\n    attributes,\n    spreadAttribute: t.jsxSpreadAttribute(\n      t.callExpression(t.identifier(helperIdentifier.name), [buildPropertiesFromAttributes(attributes)])\n    ),\n  };\n}\n\ntype StaticSrcSetEntry = {\n  uri: string;\n  scale: number;\n};\n\nfunction buildStaticSrcSetSource(\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  platform?: string,\n  reactNativeMinor?: number\n): NativeSource | undefined {\n  if (attributes.some((attribute) => t.isJSXSpreadAttribute(attribute))) return undefined;\n  if (findAttribute(attributes, 'source')) return undefined;\n\n  const srcSetAttribute = findAttribute(attributes, 'srcSet');\n  if (!srcSetAttribute) return undefined;\n\n  const srcSet = getAttributeValueExpression(srcSetAttribute);\n  if (!t.isStringLiteral(srcSet)) return undefined;\n\n  const entries = parseStaticSrcSet(srcSet.value, reactNativeMinor);\n  if (!entries) return undefined;\n\n  const srcAttribute = findAttribute(attributes, 'src');\n  let src: t.StringLiteral | undefined;\n  if (srcAttribute) {\n    const value = getAttributeValueExpression(srcAttribute);\n    if (!t.isStringLiteral(value)) return undefined;\n    src = value;\n  }\n\n  const width = getAttributeExpression(attributes, 'width');\n  const height = getAttributeExpression(attributes, 'height');\n  if (width && !isStaticSrcSetDimension(width)) return undefined;\n  if (height && !isStaticSrcSetDimension(height)) return undefined;\n\n  const requestHeaders = buildRequestHeaders(attributes);\n  if (!requestHeaders) return undefined;\n\n  if (src && !entries.some((entry) => entry.scale === 1)) {\n    entries.push({ uri: src.value, scale: 1 });\n  }\n\n  const sourceArray = t.arrayExpression(\n    entries.map((entry) =>\n      t.objectExpression([\n        t.objectProperty(t.identifier('headers'), t.cloneNode(requestHeaders.headers, true)),\n        t.objectProperty(t.identifier('scale'), t.numericLiteral(entry.scale)),\n        t.objectProperty(t.identifier('uri'), t.stringLiteral(entry.uri)),\n        ...(width ? [t.objectProperty(t.identifier('width'), t.cloneNode(width, true))] : []),\n        ...(height ? [t.objectProperty(t.identifier('height'), t.cloneNode(height, true))] : []),\n      ])\n    )\n  );\n  const emitsDimensions = platform === 'android' && entries.length === 1;\n\n  return {\n    sourceAttributes: [srcSetAttribute, srcAttribute].filter(\n      (attribute): attribute is t.JSXAttribute => attribute !== undefined\n    ),\n    requestHeaderAttributes: requestHeaders.attributes,\n    sourceArray,\n    androidHeaders: t.cloneNode(requestHeaders.headers, true),\n    width: emitsDimensions && width ? t.cloneNode(width, true) : undefined,\n    height: emitsDimensions && height ? t.cloneNode(height, true) : undefined,\n    arraySourceDimensions: true,\n  };\n}\n\nfunction parseStaticSrcSet(value: string, reactNativeMinor?: number): StaticSrcSetEntry[] | undefined {\n  if (reactNativeMinor === undefined || reactNativeMinor < 83) return undefined;\n\n  const modernParser = reactNativeMinor >= 87;\n  const sources = modernParser\n    ? value\n        .split(',')\n        .map((source) => source.trim())\n        .filter(Boolean)\n    : value.split(', ');\n  const entries: StaticSrcSetEntry[] = [];\n\n  for (const source of sources) {\n    const parts = source.split(modernParser ? /\\s+/ : ' ');\n    if (parts.length > 2) return undefined;\n\n    const [uri, descriptor = '1x'] = parts;\n    if (!uri || !/^(?:\\d+(?:\\.\\d+)?|\\.\\d+)x$/.test(descriptor)) return undefined;\n\n    const scale = modernParser\n      ? Number.parseFloat(descriptor.slice(0, -1))\n      : Number.parseInt(descriptor.split('x')[0]!, 10);\n    if (!Number.isFinite(scale) || scale <= 0) return undefined;\n    entries.push({ uri, scale });\n  }\n\n  return entries.length > 0 ? entries : undefined;\n}\n\nfunction isStaticSrcSetDimension(expression: t.Expression): boolean {\n  return (\n    t.isNumericLiteral(expression) ||\n    t.isNullLiteral(expression) ||\n    (t.isUnaryExpression(expression, { operator: '-' }) && t.isNumericLiteral(expression.argument))\n  );\n}\n\nfunction buildStaticNativeSource(\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  platform?: string,\n  reactNativeMinor?: number\n): NativeSource | undefined {\n  // Unknown targets need a runtime gate; dynamic dimensions must not be evaluated twice.\n  for (const name of ['width', 'height']) {\n    const value = getAttributeExpression(attributes, name);\n    if (\n      value &&\n      (reactNativeMinor === undefined ||\n        ((platform === 'android' || reactNativeMinor < 88) && !isStaticLiteralTree(value)))\n    )\n      return undefined;\n  }\n  const requestHeaders = buildRequestHeaders(attributes);\n  if (!requestHeaders) return undefined;\n\n  // Two Android-only wrapper behaviors vary across the supported RN range: propagating a single-entry\n  // ARRAY source's intrinsic dimensions into the layout style, and lifting a plain OBJECT source's\n  // inline headers to the top-level `headers` prop. The runtime gates remain only as an unknown-target fallback.\n  const emitsAndroidProps = platform === 'android';\n\n  const src = findAttribute(attributes, 'src');\n  if (src) {\n    const uri = getAttributeValueExpression(src);\n    if (!t.isStringLiteral(uri)) return undefined;\n    const source = findAttribute(attributes, 'source');\n    const width = getAttributeExpression(attributes, 'width');\n    const height = getAttributeExpression(attributes, 'height');\n    const headers = t.cloneNode(requestHeaders.headers, true);\n    return {\n      sourceAttributes: [src, source].filter((attribute): attribute is t.JSXAttribute => attribute !== undefined),\n      requestHeaderAttributes: requestHeaders.attributes,\n      sourceArray: t.arrayExpression([\n        t.objectExpression([\n          t.objectProperty(t.identifier('uri'), uri),\n          t.objectProperty(t.identifier('headers'), headers),\n          ...(width ? [t.objectProperty(t.identifier('width'), width)] : []),\n          ...(height ? [t.objectProperty(t.identifier('height'), height)] : []),\n        ]),\n      ]),\n      androidHeaders: t.cloneNode(requestHeaders.headers, true),\n      width: emitsAndroidProps && width ? t.cloneNode(width, true) : undefined,\n      height: emitsAndroidProps && height ? t.cloneNode(height, true) : undefined,\n      arraySourceDimensions: true,\n    };\n  }\n\n  const source = findAttribute(attributes, 'source');\n  if (!source || !t.isJSXExpressionContainer(source.value)) return undefined;\n  const sourceExpression = source.value.expression;\n  if (!t.isObjectExpression(sourceExpression) && !t.isArrayExpression(sourceExpression)) return undefined;\n  if (!isStaticLiteralTree(sourceExpression)) return undefined;\n\n  if (t.isArrayExpression(sourceExpression)) {\n    if (requestHeaders.attributes.length > 0) return undefined;\n    const singleEntry = sourceExpression.elements.length === 1 ? sourceExpression.elements[0] : undefined;\n    const dimensionSource = emitsAndroidProps && t.isObjectExpression(singleEntry) ? singleEntry : undefined;\n    return {\n      sourceAttributes: [source],\n      requestHeaderAttributes: requestHeaders.attributes,\n      sourceArray: t.cloneNode(sourceExpression, true),\n      androidHeaders: getFirstSourceHeaders(sourceExpression),\n      width: dimensionSource ? getObjectPropertyExpression(dimensionSource, 'width') : undefined,\n      height: dimensionSource ? getObjectPropertyExpression(dimensionSource, 'height') : undefined,\n      arraySourceDimensions: true,\n    };\n  }\n\n  const sourceObject = sourceExpression;\n  const sourceWidth = getObjectPropertyExpression(sourceObject, 'width');\n  const sourceHeight = getObjectPropertyExpression(sourceObject, 'height');\n  const width = getNullishFallback(sourceWidth, getAttributeExpression(attributes, 'width'));\n  const height = getNullishFallback(sourceHeight, getAttributeExpression(attributes, 'height'));\n  if (\n    reactNativeMinor === undefined &&\n    requestHeaders.headers.properties.length > 0 &&\n    hasObjectProperty(sourceObject, 'headers')\n  )\n    return undefined;\n  const sourceArrayObject = buildSourceObject(sourceObject, requestHeaders, reactNativeMinor);\n  // An object source with generated request headers and a truthy `uri` goes through ImageSourceUtils\n  // as a single-entry ARRAY source, so the width/height ?? prop fallback does not apply: only the\n  // source entry's own dimensions reach the style, and only on Android. Without generated headers it\n  // stays an OBJECT source, whose own dimensions always reach the style and whose inline `headers`\n  // are lifted only on the RN versions that do so — hence the gate.\n  const uri = getObjectPropertyExpression(sourceObject, 'uri');\n  const usesGeneratedHeaders =\n    requestHeaders.headers.properties.length > 0 && uri !== undefined && isStaticTruthyForLogicalOr(uri);\n  const arrayDimensionSource = usesGeneratedHeaders && emitsAndroidProps ? sourceArrayObject : undefined;\n\n  return {\n    sourceAttributes: [source],\n    requestHeaderAttributes: requestHeaders.attributes,\n    sourceArray: t.arrayExpression([sourceArrayObject]),\n    androidHeaders: getObjectPropertyExpression(sourceArrayObject, 'headers'),\n    objectSourceHeaders: !usesGeneratedHeaders,\n    width: usesGeneratedHeaders\n      ? arrayDimensionSource && getObjectPropertyExpression(arrayDimensionSource, 'width')\n      : width,\n    height: usesGeneratedHeaders\n      ? arrayDimensionSource && getObjectPropertyExpression(arrayDimensionSource, 'height')\n      : height,\n    arraySourceDimensions: usesGeneratedHeaders,\n  };\n}\n\ntype RequestHeaders = {\n  attributes: t.JSXAttribute[];\n  headers: t.ObjectExpression;\n};\n\nfunction buildRequestHeaders(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): RequestHeaders | undefined {\n  const crossOrigin = findAttribute(attributes, 'crossOrigin');\n  const referrerPolicy = findAttribute(attributes, 'referrerPolicy');\n  const headerAttributes = [crossOrigin, referrerPolicy].filter(\n    (attribute): attribute is t.JSXAttribute => attribute !== undefined\n  );\n\n  const headerProperties: t.ObjectProperty[] = [];\n\n  if (crossOrigin) {\n    const value = getAttributeValueExpression(crossOrigin);\n    if (!t.isStringLiteral(value)) return undefined;\n    if (value.value === 'use-credentials') {\n      headerProperties.push(\n        t.objectProperty(t.stringLiteral('Access-Control-Allow-Credentials'), t.stringLiteral('true'))\n      );\n    }\n  }\n\n  if (referrerPolicy) {\n    const value = getAttributeValueExpression(referrerPolicy);\n    if (!t.isStringLiteral(value)) return undefined;\n    headerProperties.push(t.objectProperty(t.stringLiteral('Referrer-Policy'), t.cloneNode(value, true)));\n  }\n\n  return {\n    attributes: headerAttributes,\n    headers: t.objectExpression(headerProperties),\n  };\n}\n\nfunction buildSourceObject(\n  sourceObject: t.ObjectExpression,\n  requestHeaders: RequestHeaders,\n  reactNativeMinor?: number\n): t.ObjectExpression {\n  if (requestHeaders.headers.properties.length === 0) return t.cloneNode(sourceObject, true);\n\n  const uri = getObjectPropertyExpression(sourceObject, 'uri');\n  if (!uri || !isStaticTruthyForLogicalOr(uri)) return t.cloneNode(sourceObject, true);\n\n  const nativeSource = t.cloneNode(sourceObject, true);\n  const headers = t.cloneNode(requestHeaders.headers, true);\n  const sourceHeaders = getObjectPropertyExpression(sourceObject, 'headers');\n  if (reactNativeMinor !== undefined && reactNativeMinor >= 88 && sourceHeaders && !isNullishExpression(sourceHeaders))\n    headers.properties.push(t.spreadElement(sourceHeaders));\n  nativeSource.properties.push(t.objectProperty(t.identifier('headers'), headers));\n  return nativeSource;\n}\n\nfunction buildStyle(\n  nativeSource: NativeSource,\n  styleInfo: StyleInfo,\n  includesDimensions: boolean,\n  arrayDimensionsGate?: t.Identifier\n): t.ArrayExpression {\n  const dimensions = t.objectExpression([\n    ...(includesDimensions && nativeSource.width\n      ? [t.objectProperty(t.identifier('width'), t.cloneNode(nativeSource.width, true))]\n      : []),\n    ...(includesDimensions && nativeSource.height\n      ? [t.objectProperty(t.identifier('height'), t.cloneNode(nativeSource.height, true))]\n      : []),\n  ]);\n\n  return t.arrayExpression([\n    arrayDimensionsGate ? t.callExpression(arrayDimensionsGate, [dimensions]) : dimensions,\n    t.cloneNode(IMAGE_BASE_STYLE, true),\n    ...(styleInfo?.styleExpression ? [styleInfo.styleExpression] : []),\n  ]);\n}\n\nfunction buildStaticStyleInfo(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): StyleInfo {\n  const styleAttribute = findAttribute(attributes, 'style');\n  if (!styleAttribute) return {};\n  const styleExpression = getAttributeValueExpression(styleAttribute);\n  if (!isStaticLiteralTree(styleExpression)) return null;\n\n  const flattened = flattenStaticStyle(styleExpression);\n  if (!flattened) return null;\n\n  const objectFit = flattened.get('objectFit');\n  const resizeModeFromObjectFit =\n    objectFit && t.isStringLiteral(objectFit) ? OBJECT_FIT_TO_RESIZE_MODE[objectFit.value] : undefined;\n\n  return {\n    styleAttribute,\n    styleExpression,\n    objectFitResizeMode: resizeModeFromObjectFit ? t.stringLiteral(resizeModeFromObjectFit) : undefined,\n    styleResizeMode: cloneMapValue(flattened, 'resizeMode'),\n    tintColor: cloneMapValue(flattened, 'tintColor'),\n  };\n}\n\nfunction flattenStaticStyle(styleExpression: t.Expression): Map<string, t.Expression> | undefined {\n  const objects: t.ObjectExpression[] = [];\n\n  const collect = (expression: t.Expression | t.SpreadElement): boolean => {\n    if (t.isObjectExpression(expression)) {\n      objects.push(expression);\n      return true;\n    }\n    if (t.isArrayExpression(expression)) {\n      return expression.elements.every((element) => element == null || (t.isExpression(element) && collect(element)));\n    }\n    if (\n      t.isNullLiteral(expression) ||\n      (t.isBooleanLiteral(expression) && expression.value === false) ||\n      (t.isNumericLiteral(expression) && expression.value === 0)\n    ) {\n      return true;\n    }\n    return false;\n  };\n\n  if (!collect(styleExpression)) return undefined;\n\n  const flattened = new Map<string, t.Expression>();\n  for (const object of objects) {\n    for (const property of object.properties) {\n      if (!t.isObjectProperty(property) || property.computed || !t.isExpression(property.value)) return undefined;\n      const key = t.isIdentifier(property.key)\n        ? property.key.name\n        : t.isStringLiteral(property.key)\n          ? property.key.value\n          : undefined;\n      if (!key) return undefined;\n      flattened.set(key, property.value);\n    }\n  }\n  return flattened;\n}\n\nfunction hasImageSourceInput(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): boolean {\n  return (\n    findAttribute(attributes, 'source') !== undefined ||\n    findAttribute(attributes, 'src') !== undefined ||\n    findAttribute(attributes, 'srcSet') !== undefined\n  );\n}\n\nfunction getAttributeExpression(\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  name: string\n): t.Expression | undefined {\n  const attribute = findAttribute(attributes, name);\n  return attribute ? getAttributeValueExpression(attribute) : undefined;\n}\n\nfunction getDirectAttributeNames(attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>): Set<string> {\n  const names = new Set<string>();\n  for (const attribute of attributes) {\n    if (t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name)) {\n      names.add(attribute.name.name);\n    }\n  }\n  return names;\n}\n\nfunction findAttribute(\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  name: string\n): t.JSXAttribute | undefined {\n  return attributes.find(\n    (attribute): attribute is t.JSXAttribute =>\n      t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name })\n  );\n}\n\nfunction getObjectPropertyExpression(object: t.ObjectExpression, name: string): t.Expression | undefined {\n  for (const property of object.properties.toReversed()) {\n    if (!t.isObjectProperty(property) || !t.isExpression(property.value)) continue;\n    if (t.isIdentifier(property.key, { name }) || (t.isStringLiteral(property.key) && property.key.value === name)) {\n      return t.cloneNode(property.value, true);\n    }\n  }\n  return undefined;\n}\n\nfunction hasObjectProperty(object: t.ObjectExpression, name: string): boolean {\n  return object.properties.some(\n    (property) =>\n      t.isObjectProperty(property) &&\n      (t.isIdentifier(property.key, { name }) || (t.isStringLiteral(property.key) && property.key.value === name))\n  );\n}\n\nfunction getFirstSourceHeaders(sourceArray: t.ArrayExpression): t.Expression | undefined {\n  const first = sourceArray.elements[0];\n  return first && t.isObjectExpression(first) ? getObjectPropertyExpression(first, 'headers') : undefined;\n}\n\nfunction getNullishFallback(\n  primary: t.Expression | undefined,\n  fallback: t.Expression | undefined\n): t.Expression | undefined {\n  return primary && !isNullishExpression(primary) ? primary : fallback;\n}\n\nfunction buildResizeMode(explicit: t.Expression | undefined, styleInfo: StyleInfo): t.Expression {\n  if (styleInfo?.objectFitResizeMode) return t.cloneNode(styleInfo.objectFitResizeMode, true);\n\n  const fallback =\n    styleInfo?.styleResizeMode && !isFalsyForLogicalOr(styleInfo.styleResizeMode)\n      ? t.cloneNode(styleInfo.styleResizeMode, true)\n      : t.stringLiteral('cover');\n  if (!explicit) return fallback;\n  if (isFalsyForLogicalOr(explicit)) return fallback;\n  if (isStaticTruthyForLogicalOr(explicit)) return t.cloneNode(explicit, true);\n  return t.logicalExpression('||', t.cloneNode(explicit, true), fallback);\n}\n\nfunction buildTintColor(\n  explicit: t.Expression | undefined,\n  styleTintColor: t.Expression | undefined,\n  platform?: string\n): t.Expression | undefined {\n  if (platform === 'android') {\n    return explicit && !t.isIdentifier(explicit, { name: 'undefined' }) ? t.cloneNode(explicit, true) : undefined;\n  }\n  if (!explicit) return styleTintColor ? t.cloneNode(styleTintColor, true) : undefined;\n  if (isNullishExpression(explicit)) return styleTintColor ? t.cloneNode(styleTintColor, true) : undefined;\n  if (isStaticNonNullishExpression(explicit)) return t.cloneNode(explicit, true);\n  return t.logicalExpression(\n    '??',\n    t.cloneNode(explicit, true),\n    styleTintColor ? t.cloneNode(styleTintColor, true) : t.identifier('undefined')\n  );\n}\n\nfunction isNullishExpression(expression: t.Expression): boolean {\n  return t.isNullLiteral(expression) || t.isIdentifier(expression, { name: 'undefined' });\n}\n\nfunction isFalsyForLogicalOr(expression: t.Expression): boolean {\n  return (\n    isNullishExpression(expression) ||\n    (t.isStringLiteral(expression) && expression.value === '') ||\n    (t.isBooleanLiteral(expression) && !expression.value) ||\n    (t.isNumericLiteral(expression) && expression.value === 0)\n  );\n}\n\nfunction isStaticTruthyForLogicalOr(expression: t.Expression): boolean {\n  return (\n    (t.isStringLiteral(expression) && expression.value !== '') ||\n    (t.isBooleanLiteral(expression) && expression.value) ||\n    (t.isNumericLiteral(expression) && expression.value !== 0)\n  );\n}\n\nfunction isStaticNonNullishExpression(expression: t.Expression): boolean {\n  return t.isStringLiteral(expression) || t.isNumericLiteral(expression) || t.isBooleanLiteral(expression);\n}\n\nfunction cloneMapValue(map: Map<string, t.Expression>, name: string): t.Expression | undefined {\n  const value = map.get(name);\n  return value ? t.cloneNode(value, true) : undefined;\n}\n\nfunction getAttributeValueExpression(attribute: t.JSXAttribute): t.Expression {\n  if (!attribute.value) return t.booleanLiteral(true);\n  if (t.isStringLiteral(attribute.value)) return attribute.value;\n  if (t.isJSXExpressionContainer(attribute.value)) {\n    return t.isJSXEmptyExpression(attribute.value.expression) ? t.booleanLiteral(true) : attribute.value.expression;\n  }\n  return t.nullLiteral();\n}\n","import { styleText } from 'node:util';\nimport {\n  HubFile,\n  LogLevel,\n  OptimizationLogPayload,\n  PluginLogger,\n  SkippedOptimizationLogPayload,\n  WarningLogPayload,\n} from '../types';\n\nconst LOG_PREFIX = '[react-native-boost]';\n\nexport const noopLogger: PluginLogger = {\n  optimized() {},\n  skipped() {},\n  forced() {},\n  warning() {},\n};\n\nexport const createLogger = (logLevel: LogLevel = 'info'): PluginLogger => {\n  if (logLevel === 'silent') return noopLogger;\n\n  return {\n    optimized(payload) {\n      if (logLevel === 'warn') return;\n      const note = payload.note ? ` (${payload.note})` : '';\n      writeLog('optimized', `Optimized ${payload.target} in ${formatPathLocation(payload.path)}${note}`);\n    },\n    skipped(payload) {\n      if (logLevel !== 'debug') return;\n      writeLog('skipped', `Skipped ${payload.target} in ${formatPathLocation(payload.path)} (${payload.reason})`);\n    },\n    forced(payload) {\n      writeLog(\n        'forced',\n        `Force-optimized ${payload.target} in ${formatPathLocation(payload.path)} (skipped bailout: ${payload.reason})`\n      );\n    },\n    warning(payload) {\n      const context = formatWarningContext(payload);\n      const message = context.length > 0 ? `${context}: ${payload.message}` : payload.message;\n      writeLog('warning', message);\n    },\n  };\n};\n\nfunction formatWarningContext(payload: WarningLogPayload): string {\n  const location = payload.path ? formatPathLocation(payload.path) : '';\n\n  if (payload.target && location.length > 0) {\n    return `${payload.target} in ${location}`;\n  }\n\n  if (payload.target) {\n    return payload.target;\n  }\n\n  return location;\n}\n\ntype LogCategory = 'optimized' | 'skipped' | 'forced' | 'warning';\n\nfunction writeLog(level: LogCategory, message: string): void {\n  const levelTag = formatLevel(level);\n  console.log(`${LOG_PREFIX} ${levelTag} ${message}`);\n}\n\nfunction formatLevel(level: LogCategory): string {\n  if (level === 'optimized') return styleText('green', '[optimized]');\n  if (level === 'skipped') return styleText('yellow', '[skipped]');\n  if (level === 'forced') return styleText('red', '[forced]');\n  return styleText('magenta', '[warning]');\n}\n\nfunction formatPathLocation(\n  payloadPath: OptimizationLogPayload['path'] | SkippedOptimizationLogPayload['path'] | undefined\n): string {\n  if (!payloadPath) return 'unknown file:unknown line';\n\n  const hub = payloadPath.hub as unknown;\n  const file = typeof hub === 'object' && hub !== null && 'file' in hub ? (hub.file as HubFile) : undefined;\n  const filename = file?.opts?.filename ?? 'unknown file';\n  const lineNumber = payloadPath.node.loc?.start.line ?? 'unknown line';\n\n  return `${filename}:${lineNumber}`;\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, JSXOptimizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { BailoutCheck, getFirstBailoutReason } from '../../utils/helpers';\nimport {\n  addFileImportHint,\n  buildPropertiesFromAttributes,\n  hasAmbiguousIdNativeID,\n  hasBlacklistedPropertyInSpread,\n  isForcedLine,\n  isIgnoredLine,\n  isReactNativeComponent,\n  replaceWithNativeComponent,\n  createTextContextSourceResolver,\n  createStyleOriginResolver,\n  makeAttribute,\n  UNISTYLES_VIEW_HOST,\n} from '../../utils/common';\nimport { RUNTIME_MODULE_NAME } from '../../utils/constants';\nimport { createJSXOptimizer } from '../../utils/optimizer';\nimport { foldAccessibility } from '../../utils/static-accessibility';\n\n/**\n * Props the `View` wrapper destructures and transforms before handing off to its native host. The\n * optimizer reproduces each translation for direct attributes, but it cannot reach inside a spread —\n * so a spread that might carry any of these forces a bail (an unresolvable spread bails\n * unconditionally). `nativeID` is intentionally absent: the wrapper does not destructure it (it passes\n * through verbatim), and the `id` → `nativeID` precedence is preserved by emitting the rename last.\n */\nconst VIEW_SPREAD_GUARD_KEYS = new Set([\n  'accessibilityState',\n  'accessibilityValue',\n  'aria-busy',\n  'aria-checked',\n  'aria-disabled',\n  'aria-expanded',\n  'aria-hidden',\n  'aria-label',\n  'aria-labelledby',\n  'aria-live',\n  'aria-selected',\n  'aria-valuemax',\n  'aria-valuemin',\n  'aria-valuenow',\n  'aria-valuetext',\n  'id',\n  'tabIndex',\n]);\n\n// In Unistyles mode a `style` arriving through a resolvable spread must also bail (it could be a\n// Unistyles style), so the guard set additionally includes `style`. Precomputed to avoid rebuilding it\n// per element.\nconst VIEW_SPREAD_GUARD_KEYS_UNISTYLES = new Set([...VIEW_SPREAD_GUARD_KEYS, 'style']);\nconst VIEW_CHILDREN_PROP = new Set(['children']);\n\n// ARIA siblings that trigger aggregation. Their presence routes the whole matching group (including a\n// passed `accessibilityState`/`accessibilityValue`) through the runtime helper, because the wrapper\n// merges them (`ariaX ?? source?.x`) and a partial literal translation could not reproduce that.\nconst ARIA_STATE_PROPERTIES = new Set(['aria-busy', 'aria-checked', 'aria-disabled', 'aria-expanded', 'aria-selected']);\nconst ARIA_VALUE_PROPERTIES = new Set(['aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext']);\n\nconst optimizeNativeView: JSXOptimizer = (path, { logger, options, unistylesEnabled, platform, reactNativeMinor }) => {\n  if (platform === 'web' && options?.integrations?.uniwind === 'on') return;\n  if (!isReactNativeComponent(path, 'View')) return;\n\n  const forced = isForcedLine(path);\n\n  // In Unistyles mode, classify the direct `style` origin (lazily, once). A `style` carried by a\n  // resolvable spread is guarded too (`style` is in the Unistyles spread keys); an unresolvable spread\n  // already bails. See {@link classifyStyleOrigin}.\n  const getStyleOrigin = createStyleOriginResolver(path, unistylesEnabled);\n\n  const spreadGuardKeys = unistylesEnabled ? VIEW_SPREAD_GUARD_KEYS_UNISTYLES : VIEW_SPREAD_GUARD_KEYS;\n  const getAncestor = createTextContextSourceResolver(path);\n  const hasVariableTextContext = () => getAncestor() === 'text' || getAncestor() === 'context';\n  const needsRuntimeTextContext = () =>\n    hasChildren(path) &&\n    (hasVariableTextContext() ||\n      (options?.assumptions?.unknownAncestorsDoNotRenderText !== true && getAncestor() === 'runtime'));\n\n  const overridableChecks: BailoutCheck[] = [\n    {\n      reason: 'has a spread that may carry a translated prop',\n      shouldBail: () => hasBlacklistedPropertyInSpread(path, spreadGuardKeys),\n    },\n    {\n      reason: 'contains an impure prop expression that cannot be safely reordered',\n      shouldBail: () =>\n        path.node.attributes.length > 1 &&\n        path.node.attributes.some(\n          (attribute) =>\n            t.isJSXAttribute(attribute) &&\n            t.isJSXIdentifier(attribute.name) &&\n            (attribute.name.name === 'id' ||\n              attribute.name.name === 'tabIndex' ||\n              (attribute.name.name.startsWith('aria-') && VIEW_SPREAD_GUARD_KEYS.has(attribute.name.name)))\n        ) &&\n        path.node.attributes.some(\n          (attribute) =>\n            (t.isJSXSpreadAttribute(attribute) && !path.scope.isPure(attribute.argument)) ||\n            (t.isJSXAttribute(attribute) &&\n              t.isJSXExpressionContainer(attribute.value) &&\n              t.isExpression(attribute.value.expression) &&\n              !path.scope.isPure(attribute.value.expression) &&\n              !(\n                t.isIdentifier(attribute.value.expression, { name: 'undefined' }) && !path.scope.getBinding('undefined')\n              ))\n        ),\n    },\n    {\n      reason: 'has an unresolved style source that may be a Unistyles style',\n      shouldBail: () => getStyleOrigin() === 'unknown',\n    },\n    {\n      reason: 'has both a dynamic `id` and a `nativeID` (ambiguous precedence)',\n      shouldBail: () => hasAmbiguousIdNativeID(path),\n    },\n    {\n      reason: 'has unresolved runtime parent that may render Text',\n      shouldBail: () => getStyleOrigin() === 'unistyles' && (hasVariableTextContext() || needsRuntimeTextContext()),\n    },\n    {\n      reason: 'has unresolved ancestor that may inspect or change children',\n      shouldBail: () => getAncestor() === 'unknown' && options?.assumptions?.unknownAncestorsDoNotRenderText !== true,\n    },\n  ];\n\n  if (forced) {\n    const overriddenReason = getFirstBailoutReason(overridableChecks);\n\n    if (overriddenReason) {\n      logger.forced({ target: 'View', path, reason: overriddenReason });\n    }\n  } else {\n    const skipReason = getFirstBailoutReason([\n      {\n        reason: 'line is marked with @boost-ignore',\n        shouldBail: () => isIgnoredLine(path),\n      },\n      ...overridableChecks,\n    ]);\n\n    if (skipReason) {\n      logger.skipped({ target: 'View', path, reason: skipReason });\n      return;\n    }\n  }\n\n  const hub = path.hub as unknown;\n  const file = typeof hub === 'object' && hub !== null && 'file' in hub ? (hub.file as HubFile) : undefined;\n\n  if (!file) {\n    throw new PluginError('No file found in Babel hub');\n  }\n\n  if (options?.integrations?.uniwind === 'on' && getStyleOrigin() !== 'plain') {\n    logger.skipped({ target: 'View', path, reason: 'Uniwind cannot flatten a Unistyles style' });\n    return;\n  }\n\n  const preservesTextContext = !forced && needsRuntimeTextContext();\n  logger.optimized({\n    target: 'View',\n    path,\n    note: preservesTextContext ? 'preserves runtime Text context' : undefined,\n  });\n\n  const parent = path.parent as t.JSXElement;\n\n  if (options?.integrations?.uniwind === 'on') {\n    const name = preservesTextContext ? 'NativeViewWithContext' : 'NativeView';\n    replaceWithNativeComponent(path, parent, file, 'NativeView', {\n      moduleName: 'react-native-boost/uniwind',\n      importName: name,\n      nameHint: `Uniwind${name}`,\n    });\n    return;\n  }\n\n  processViewProps(path, file, platform, reactNativeMinor);\n\n  // Keep Unistyles' host so its shadow-tree registration survives.\n  const viewHost =\n    getStyleOrigin() === 'unistyles'\n      ? UNISTYLES_VIEW_HOST\n      : preservesTextContext\n        ? { importName: 'NativeViewWithContext', nameHint: 'NativeViewWithContext' }\n        : undefined;\n  replaceWithNativeComponent(path, parent, file, 'NativeView', viewHost);\n};\n\nexport const nativeViewOptimizer = createJSXOptimizer('native-view', optimizeNativeView);\n\nfunction hasChildren(path: NodePath<t.JSXOpeningElement>): boolean {\n  if (\n    path.node.attributes.some(\n      (attribute) => t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'children' })\n    ) ||\n    hasBlacklistedPropertyInSpread(path, VIEW_CHILDREN_PROP)\n  )\n    return true;\n\n  const parent = path.parent;\n  return (\n    t.isJSXElement(parent) &&\n    parent.children.some(\n      (child) =>\n        (!t.isJSXText(child) || child.value.trim() !== '') &&\n        (!t.isJSXExpressionContainer(child) || !t.isJSXEmptyExpression(child.expression))\n    )\n  );\n}\n\n/**\n * Reproduces the `View` wrapper's ergonomic-prop translation for an optimized element: renames\n * `id` → `nativeID`, translates the ARIA cluster / `tabIndex` into their native counterparts, and\n * aggregates ARIA state/value fields. Static literals are translated at build time (no runtime call);\n * dynamic values and aggregated groups are routed through `processViewAccessibilityProps`.\n *\n * Translated props are emitted LAST so they win over any pass-through spread carrying the same native\n * key — mirroring the wrapper, which applies its translations on top of `...otherProps`.\n */\nfunction processViewProps(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  platform?: string,\n  reactNativeMinor?: number\n) {\n  const currentAttributes = [...path.node.attributes];\n\n  const stateGroupTriggered = currentAttributes.some((attribute) => isAriaStateAttribute(attribute));\n  const valueGroupTriggered = currentAttributes.some((attribute) => isAriaValueAttribute(attribute));\n\n  const literalReplacements: t.JSXAttribute[] = [];\n  const helperBag: t.JSXAttribute[] = [];\n  const consumed = new Set<t.JSXAttribute>();\n\n  for (const attribute of currentAttributes) {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) continue;\n    const name = attribute.name.name;\n\n    if (\n      (name === 'accessibilityState' && !stateGroupTriggered) ||\n      (name === 'accessibilityValue' && !valueGroupTriggered)\n    ) {\n      const folded = foldAccessibility(path, [attribute], 'View', platform, reactNativeMinor);\n      if (folded) {\n        literalReplacements.push(...folded);\n        consumed.add(attribute);\n      }\n      continue;\n    }\n\n    // An ARIA sibling requires the complete state/value group, including the native base prop.\n    if ((name === 'accessibilityState' || ARIA_STATE_PROPERTIES.has(name)) && stateGroupTriggered) {\n      helperBag.push(attribute);\n      consumed.add(attribute);\n      continue;\n    }\n    if ((name === 'accessibilityValue' || ARIA_VALUE_PROPERTIES.has(name)) && valueGroupTriggered) {\n      helperBag.push(attribute);\n      consumed.add(attribute);\n      continue;\n    }\n\n    // `id` → `nativeID`, emitted with the other translations (LAST) so it wins over a pass-through\n    // spread carrying `nativeID` — mirroring the wrapper's `if (id !== undefined) nativeID = id`. The\n    // `nativeID` target key then drops a colliding direct `nativeID` via the dedup below, so `id` wins.\n    if (name === 'id') {\n      literalReplacements.push(makeAttribute('nativeID', getAttributeValueExpression(attribute)));\n      consumed.add(attribute);\n      continue;\n    }\n\n    // `tabIndex` → `focusable = !tabIndex`. A static numeric/boolean literal folds to a constant; a\n    // dynamic value routes through the helper, which omits `focusable` when `tabIndex` is `undefined`\n    // (a build-time `!tabIndex` would wrongly emit `focusable={true}`, diverging from the wrapper).\n    if (name === 'tabIndex') {\n      const value = getAttributeValueExpression(attribute);\n      if (t.isNumericLiteral(value) || t.isBooleanLiteral(value)) {\n        literalReplacements.push(makeAttribute('focusable', t.booleanLiteral(!value.value)));\n      } else {\n        helperBag.push(attribute);\n      }\n      consumed.add(attribute);\n      continue;\n    }\n\n    // Remaining single-prop translations: literal fast path when static, else the runtime helper.\n    const literal = tryLiteralTranslate(name, attribute);\n    if (literal) {\n      literalReplacements.push(...literal);\n      consumed.add(attribute);\n      continue;\n    }\n    if (name === 'aria-label' || name === 'aria-live' || name === 'aria-hidden' || name === 'aria-labelledby') {\n      helperBag.push(attribute);\n      consumed.add(attribute);\n    }\n  }\n\n  const spreadAttributes: t.JSXSpreadAttribute[] = [];\n  const folded =\n    helperBag.length > 0 ? foldAccessibility(path, helperBag, 'View', platform, reactNativeMinor) : undefined;\n  if (folded) literalReplacements.push(...folded);\n  if (helperBag.length > 0 && !folded) {\n    const helperIdentifier = addFileImportHint({\n      file,\n      nameHint: 'processViewAccessibilityProps',\n      path,\n      importName: 'processViewAccessibilityProps',\n      moduleName: RUNTIME_MODULE_NAME,\n    });\n    const bag = buildPropertiesFromAttributes(helperBag);\n    spreadAttributes.push(t.jsxSpreadAttribute(t.callExpression(t.identifier(helperIdentifier.name), [bag])));\n  }\n\n  // A pass-through direct attribute whose key a literal translation also sets would be superseded by\n  // that translation (emitted last); drop it so the output carries no duplicate attribute.\n  const literalTargetKeys = new Set(literalReplacements.map((attribute) => (attribute.name as t.JSXIdentifier).name));\n\n  const remaining = currentAttributes.filter((attribute) => {\n    if (t.isJSXAttribute(attribute) && consumed.has(attribute)) return false;\n    if (\n      t.isJSXAttribute(attribute) &&\n      t.isJSXIdentifier(attribute.name) &&\n      literalTargetKeys.has(attribute.name.name)\n    ) {\n      return false;\n    }\n    return true;\n  });\n\n  path.node.attributes = [...remaining, ...literalReplacements, ...spreadAttributes];\n}\n\nconst isAriaStateAttribute = (attribute: t.JSXAttribute | t.JSXSpreadAttribute): attribute is t.JSXAttribute =>\n  t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && ARIA_STATE_PROPERTIES.has(attribute.name.name);\n\nconst isAriaValueAttribute = (attribute: t.JSXAttribute | t.JSXSpreadAttribute): attribute is t.JSXAttribute =>\n  t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name) && ARIA_VALUE_PROPERTIES.has(attribute.name.name);\n\n/**\n * Translates a single non-aggregated ARIA prop to its native counterpart when its value is a static\n * literal, returning the attribute(s) to emit. Returns `undefined` when the value is dynamic, so the\n * caller routes it through the runtime helper instead.\n */\nfunction tryLiteralTranslate(name: string, attribute: t.JSXAttribute): t.JSXAttribute[] | undefined {\n  const value = getAttributeValueExpression(attribute);\n\n  switch (name) {\n    case 'aria-label': {\n      if (t.isStringLiteral(value)) return [makeAttribute('accessibilityLabel', value)];\n      return undefined;\n    }\n    case 'aria-live': {\n      if (t.isStringLiteral(value)) {\n        const region = value.value === 'off' ? 'none' : value.value;\n        return [makeAttribute('accessibilityLiveRegion', t.stringLiteral(region))];\n      }\n      return undefined;\n    }\n    case 'aria-hidden': {\n      if (t.isBooleanLiteral(value)) {\n        const attributes = [makeAttribute('accessibilityElementsHidden', value)];\n        if (value.value === true) {\n          attributes.push(makeAttribute('importantForAccessibility', t.stringLiteral('no-hide-descendants')));\n        }\n        return attributes;\n      }\n      return undefined;\n    }\n    case 'aria-labelledby': {\n      if (t.isStringLiteral(value)) {\n        const parts = value.value.split(/\\s*,\\s*/g).map((part) => t.stringLiteral(part));\n        return [makeAttribute('accessibilityLabelledBy', t.arrayExpression(parts))];\n      }\n      return undefined;\n    }\n  }\n\n  return undefined;\n}\n\n/**\n * Resolves a JSX attribute's value to an expression: a shorthand attribute (or empty expression\n * container) becomes boolean `true`; a string literal and a non-empty expression container carry\n * through unchanged.\n */\nfunction getAttributeValueExpression(attribute: t.JSXAttribute): t.Expression {\n  if (!attribute.value) return t.booleanLiteral(true);\n  if (t.isStringLiteral(attribute.value)) return attribute.value;\n  if (t.isJSXExpressionContainer(attribute.value)) {\n    return t.isJSXEmptyExpression(attribute.value.expression) ? t.booleanLiteral(true) : attribute.value.expression;\n  }\n  return t.nullLiteral();\n}\n","import fs from 'node:fs';\nimport nodePath from 'node:path';\nimport { UNISTYLES_MODULE_NAME } from './constants';\n\nconst DEPENDENCY_FIELDS = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'] as const;\n\n/**\n * Whether the project being built declares `react-native-unistyles` as a dependency. Used to auto-enable\n * \"Unistyles mode\".\n *\n * Resolution walks up from Babel's config dirname (falling back to the process working directory) to the\n * nearest `package.json` and checks its dependency fields. This is deliberately stricter than a\n * `require.resolve` probe: in a monorepo (or with a hoisted/transitive copy) the package is often\n * resolvable from a project that does not actually use it, which would wrongly enable the mode and its\n * bailouts for unrelated packages. A declared dependency is the project's own signal that it uses\n * Unistyles. The result still only auto-enables the mode and emits a one-time hint to set the integration\n * to `on`, since a declared dependency does not prove Unistyles' own Babel plugin is active.\n */\nexport function isUnistylesInstalled(fromDirectory: string | undefined): boolean {\n  const packageJson = readNearestPackageJson(fromDirectory ?? process.cwd());\n  if (!packageJson) return false;\n\n  return DEPENDENCY_FIELDS.some((field) => {\n    const dependencies = packageJson[field];\n    return typeof dependencies === 'object' && dependencies !== null && UNISTYLES_MODULE_NAME in dependencies;\n  });\n}\n\nfunction readNearestPackageJson(fromDirectory: string): Record<string, unknown> | undefined {\n  let directory = nodePath.resolve(fromDirectory);\n\n  // Walk up to the nearest directory that has a `package.json`. An absent manifest means \"keep looking\";\n  // a present-but-unreadable/malformed one stops the walk and declines to auto-enable, rather than\n  // misattributing a parent workspace's dependencies to this project.\n  for (;;) {\n    const manifestPath = nodePath.join(directory, 'package.json');\n    if (fs.existsSync(manifestPath)) {\n      try {\n        return JSON.parse(fs.readFileSync(manifestPath, 'utf8'));\n      } catch {\n        return undefined;\n      }\n    }\n\n    const parent = nodePath.dirname(directory);\n    if (parent === directory) return undefined;\n    directory = parent;\n  }\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, JSXOptimizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { BailoutCheck, getFirstBailoutReason } from '../../utils/helpers';\nimport {\n  addFileImportHint,\n  createStyleOriginResolver,\n  isForcedLine,\n  isIgnoredLine,\n  isReactNativeComponent,\n  isStaticLiteralTree,\n  makeAttribute,\n  replaceWithNativeComponent,\n} from '../../utils/common';\nimport { RUNTIME_MODULE_NAME } from '../../utils/constants';\nimport { createJSXOptimizer } from '../../utils/optimizer';\n\nconst CONSUMED_PROPS = new Set([\n  'animating',\n  'children',\n  'color',\n  'hidesWhenStopped',\n  'key',\n  'onLayout',\n  'ref',\n  'size',\n  'style',\n]);\n\nconst optimizeNativeActivityIndicator: JSXOptimizer = (path, { logger, platform, unistylesEnabled, options }) => {\n  if (platform === 'web') return;\n  if (!isReactNativeComponent(path, 'ActivityIndicator')) return;\n\n  if (platform !== 'ios' && platform !== 'android') {\n    logger.skipped({ target: 'ActivityIndicator', path, reason: 'target platform is unknown' });\n    return;\n  }\n\n  const parent = path.parent as t.JSXElement;\n  const forced = isForcedLine(path);\n  const getStyleOrigin = createStyleOriginResolver(path, unistylesEnabled);\n\n  const bailoutChecks: BailoutCheck[] = [\n    {\n      reason: 'has a Unistyles style that cannot be moved to the generated outer host',\n      shouldBail: () => getStyleOrigin() === 'unistyles',\n    },\n    {\n      reason: 'has spread props',\n      shouldBail: () => path.node.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute)),\n    },\n    {\n      reason: 'contains children',\n      shouldBail: () =>\n        findAttribute(path.node.attributes, 'children') !== undefined ||\n        parent.children.some((child) => !t.isJSXText(child) || child.value.trim() !== ''),\n    },\n    {\n      reason: 'contains an impure prop expression that cannot be safely reordered',\n      shouldBail: () => hasImpureAttributeValue(path),\n    },\n    {\n      reason: 'has an unresolved style source that may be a Unistyles style',\n      shouldBail: () => getStyleOrigin() === 'unknown',\n    },\n  ];\n\n  if (forced) {\n    const overriddenReason = getFirstBailoutReason(bailoutChecks);\n    if (overriddenReason) logger.forced({ target: 'ActivityIndicator', path, reason: overriddenReason });\n  } else {\n    const skipReason = getFirstBailoutReason([\n      {\n        reason: 'line is marked with @boost-ignore',\n        shouldBail: () => isIgnoredLine(path),\n      },\n      ...bailoutChecks,\n    ]);\n    if (skipReason) {\n      logger.skipped({ target: 'ActivityIndicator', path, reason: skipReason });\n      return;\n    }\n  }\n\n  const hub = path.hub as unknown;\n  const file = typeof hub === 'object' && hub !== null && 'file' in hub ? (hub.file as HubFile) : undefined;\n  if (!file) throw new PluginError('No file found in Babel hub');\n\n  if (options?.integrations?.uniwind === 'on') {\n    replaceWithNativeComponent(path, parent, file, 'NativeActivityIndicator', {\n      moduleName: 'react-native-boost/uniwind',\n    });\n    logger.optimized({ target: 'ActivityIndicator', path });\n    return;\n  }\n\n  const view = addRuntimeImport(path, file, 'NativeView');\n  const styles = addRuntimeImport(path, file, 'activityIndicatorStyles');\n  const host = addRuntimeImport(path, file, 'NativeActivityIndicator');\n  const attributes = path.node.attributes;\n  const animating = buildDefaultedAttribute(path, file, attributes, 'animating', t.booleanLiteral(true));\n  const color = buildDefaultedAttribute(\n    path,\n    file,\n    attributes,\n    'color',\n    platform === 'ios' ? t.stringLiteral('#999999') : t.nullLiteral()\n  );\n  const hidesWhenStopped = buildDefaultedAttribute(path, file, attributes, 'hidesWhenStopped', t.booleanLiteral(true));\n  const sizeAttributes = buildSizeAttributes(path, file, attributes, styles);\n  const outerStyle = buildOuterStyle(path, file, attributes, styles);\n\n  const remaining = attributes\n    .filter(\n      (attribute) =>\n        !t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name) || !CONSUMED_PROPS.has(attribute.name.name)\n    )\n    .map((attribute) => t.cloneNode(attribute, true));\n\n  const ref = findAttribute(attributes, 'ref');\n  const onLayout = findAttribute(attributes, 'onLayout');\n  const key = findAttribute(attributes, 'key');\n\n  const innerAttributes: Array<t.JSXAttribute | t.JSXSpreadAttribute> = [\n    animating,\n    color,\n    hidesWhenStopped,\n    ...remaining,\n    ref ? t.cloneNode(ref, true) : undefined,\n    ...sizeAttributes,\n    platform === 'android' ? makeAttribute('styleAttr', t.stringLiteral('Normal')) : undefined,\n    platform === 'android' ? makeAttribute('indeterminate', t.booleanLiteral(true)) : undefined,\n  ].filter((attribute): attribute is t.JSXAttribute | t.JSXSpreadAttribute => attribute !== undefined);\n\n  const inner = t.jsxElement(t.jsxOpeningElement(t.jsxIdentifier(host.name), innerAttributes, true), null, [], true);\n  const outerAttributes = [\n    key ? t.cloneNode(key, true) : undefined,\n    onLayout ? t.cloneNode(onLayout, true) : undefined,\n    makeAttribute('style', outerStyle),\n  ].filter((attribute): attribute is t.JSXAttribute => attribute !== undefined);\n  const outer = t.jsxElement(\n    t.jsxOpeningElement(t.jsxIdentifier(view.name), outerAttributes, false),\n    t.jsxClosingElement(t.jsxIdentifier(view.name)),\n    [inner],\n    false\n  );\n\n  t.inheritsComments(outer, parent);\n  logger.optimized({ target: 'ActivityIndicator', path });\n  path.parentPath.replaceWith(outer);\n};\n\nexport const nativeActivityIndicatorOptimizer = createJSXOptimizer(\n  'native-activity-indicator',\n  optimizeNativeActivityIndicator\n);\n\nfunction addRuntimeImport(path: NodePath<t.JSXOpeningElement>, file: HubFile, importName: string): t.Identifier {\n  return addFileImportHint({\n    file,\n    nameHint: importName,\n    path,\n    importName,\n    moduleName: RUNTIME_MODULE_NAME,\n  });\n}\n\nfunction buildDefaultedAttribute(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  name: string,\n  fallback: t.Expression\n): t.JSXAttribute {\n  const attribute = findAttribute(attributes, name);\n  if (!attribute) return makeAttribute(name, fallback);\n\n  const value = getAttributeValueExpression(attribute);\n  if (isDefinitelyDefined(value)) return makeAttribute(name, t.cloneNode(value, true));\n\n  const resolver = addRuntimeImport(path, file, 'resolveActivityIndicatorDefault');\n  return makeAttribute(\n    name,\n    t.callExpression(t.identifier(resolver.name), [t.cloneNode(value, true), t.cloneNode(fallback, true)])\n  );\n}\n\nfunction buildSizeAttributes(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  styles: t.Identifier\n): Array<t.JSXAttribute | t.JSXSpreadAttribute> {\n  const attribute = findAttribute(attributes, 'size');\n  if (!attribute) return staticSizeAttributes('small', styles);\n\n  const value = getAttributeValueExpression(attribute);\n  if (isStaticLiteralTree(value)) {\n    if (t.isStringLiteral(value) && (value.value === 'small' || value.value === 'large')) {\n      return staticSizeAttributes(value.value, styles);\n    }\n    return [\n      makeAttribute(\n        'style',\n        t.objectExpression([\n          t.objectProperty(t.identifier('height'), t.cloneNode(value, true)),\n          t.objectProperty(t.identifier('width'), t.cloneNode(value, true)),\n        ])\n      ),\n    ];\n  }\n\n  const resolver = addRuntimeImport(path, file, 'processActivityIndicatorSize');\n  return [t.jsxSpreadAttribute(t.callExpression(t.identifier(resolver.name), [t.cloneNode(value, true)]))];\n}\n\nfunction staticSizeAttributes(size: 'small' | 'large', styles: t.Identifier): t.JSXAttribute[] {\n  return [\n    makeAttribute('style', t.memberExpression(t.identifier(styles.name), t.identifier(size))),\n    makeAttribute('size', t.stringLiteral(size)),\n  ];\n}\n\nfunction buildOuterStyle(\n  path: NodePath<t.JSXOpeningElement>,\n  file: HubFile,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  styles: t.Identifier\n): t.Expression {\n  const container = t.memberExpression(t.identifier(styles.name), t.identifier('container'));\n  const attribute = findAttribute(attributes, 'style');\n  if (!attribute) return container;\n\n  const value = getAttributeValueExpression(attribute);\n  const truthiness = getStaticTruthiness(value);\n  if (truthiness === false) return container;\n  if (truthiness === true) return t.arrayExpression([container, t.cloneNode(value, true)]);\n\n  const resolver = addRuntimeImport(path, file, 'processActivityIndicatorStyle');\n  return t.callExpression(t.identifier(resolver.name), [t.cloneNode(value, true)]);\n}\n\nfunction findAttribute(\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  name: string\n): t.JSXAttribute | undefined {\n  return attributes.findLast(\n    (attribute): attribute is t.JSXAttribute =>\n      t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name })\n  );\n}\n\nfunction getAttributeValueExpression(attribute: t.JSXAttribute): t.Expression {\n  if (!attribute.value) return t.booleanLiteral(true);\n  if (t.isStringLiteral(attribute.value)) return attribute.value;\n  if (t.isJSXExpressionContainer(attribute.value)) {\n    return t.isJSXEmptyExpression(attribute.value.expression) ? t.booleanLiteral(true) : attribute.value.expression;\n  }\n  return t.nullLiteral();\n}\n\nfunction isDefinitelyDefined(expression: t.Expression): boolean {\n  return (\n    isStaticLiteralTree(expression) ||\n    t.isArrowFunctionExpression(expression) ||\n    t.isFunctionExpression(expression) ||\n    t.isTemplateLiteral(expression)\n  );\n}\n\nfunction getStaticTruthiness(expression: t.Expression): boolean | undefined {\n  if (t.isNullLiteral(expression)) return false;\n  if (t.isBooleanLiteral(expression)) return expression.value;\n  if (t.isStringLiteral(expression)) return expression.value.length > 0;\n  if (t.isNumericLiteral(expression)) return expression.value !== 0 && !Number.isNaN(expression.value);\n  if (t.isUnaryExpression(expression) && expression.operator === '-' && t.isNumericLiteral(expression.argument)) {\n    return expression.argument.value !== 0;\n  }\n  if (t.isObjectExpression(expression) || t.isArrayExpression(expression)) return true;\n  return undefined;\n}\n\nfunction hasImpureAttributeValue(path: NodePath<t.JSXOpeningElement>): boolean {\n  return path.node.attributes.some((attribute) => {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXExpressionContainer(attribute.value)) return false;\n    if (t.isJSXEmptyExpression(attribute.value.expression)) return false;\n    return !path.scope.isPure(attribute.value.expression);\n  });\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, Optimizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { addFileImportHint, isIgnoredLine, isModuleImportBinding, isStaticLiteralTree } from '../../utils/common';\n\ntype AnimatedConstructor = 'Color' | 'Value' | 'ValueXY';\ntype ReactHook = 'useRef' | 'useState';\n\nconst HOOK_BY_CONSTRUCTOR: Record<AnimatedConstructor, string> = {\n  Color: 'useAnimatedColor',\n  Value: 'useAnimatedValue',\n  ValueXY: 'useAnimatedValueXY',\n};\n\nexport const animatedValueInitializationOptimizer: Optimizer = {\n  name: 'animated-value-initialization',\n  defaultState: ({ reactNativeMinor }) => (reactNativeMinor !== undefined && reactNativeMinor >= 83 ? 'on' : 'off'),\n  visitor: {\n    MemberExpression(path, state) {\n      if (!state.enabledOptimizations.has('animated-value-initialization')) return;\n      if (path.node.computed || !t.isIdentifier(path.node.property, { name: 'current' }) || !path.isReferenced())\n        return;\n\n      const call = path.node.object;\n      if (!t.isCallExpression(call) || !isReactHook(path, call.callee, 'useRef') || call.arguments.length !== 1) return;\n\n      const constructor = getAnimatedConstructor(path, call.arguments[0]);\n      if (!constructor) return;\n\n      const { logger, platform, reactNativeMinor } = state.optimizerContext;\n      const target = `Animated.${constructor.name}`;\n      if (platform !== 'ios' && platform !== 'android') {\n        logger.skipped({ target, path, reason: 'target platform is unknown' });\n        return;\n      }\n      if (!supportsHook(constructor.name, reactNativeMinor)) {\n        logger.skipped({ target, path, reason: 'React Native version does not export the matching hook' });\n        return;\n      }\n      if (isIgnoredLine(path)) return;\n\n      const file = (path.hub as unknown as { file?: HubFile }).file;\n      if (!file) throw new PluginError('No file found in Babel hub');\n\n      const hookName = HOOK_BY_CONSTRUCTOR[constructor.name];\n      const hook = addFileImportHint({\n        file,\n        nameHint: hookName,\n        path,\n        importName: hookName,\n        moduleName:\n          state.optimizerContext.options?.integrations?.uniwind === 'on'\n            ? 'react-native-boost/uniwind'\n            : 'react-native',\n      });\n      const replacement = t.callExpression(\n        hook,\n        constructor.expression.arguments.map((argument) => t.cloneNode(argument, true))\n      );\n      t.inheritsComments(replacement, path.node);\n      path.replaceWith(replacement);\n      logger.optimized({ target, path });\n    },\n    CallExpression(path, state) {\n      if (!state.enabledOptimizations.has('animated-value-initialization')) return;\n      if (!isReactHook(path, path.node.callee, 'useState') || path.node.arguments.length !== 1) return;\n\n      const constructor = getAnimatedConstructor(path, path.node.arguments[0]);\n      if (!constructor || isIgnoredLine(path)) return;\n\n      const { logger, platform } = state.optimizerContext;\n      const target = `Animated.${constructor.name}`;\n      if (platform !== 'ios' && platform !== 'android') {\n        logger.skipped({ target, path, reason: 'target platform is unknown' });\n        return;\n      }\n\n      const initializer = t.arrowFunctionExpression([], t.cloneNode(constructor.expression, true));\n      t.inheritsComments(initializer, constructor.expression);\n      path.node.arguments[0] = initializer;\n      logger.optimized({ target, path });\n    },\n  },\n};\n\nfunction getAnimatedConstructor(\n  path: NodePath,\n  node: t.Node | null | undefined\n): { expression: t.NewExpression; name: AnimatedConstructor } | undefined {\n  if (\n    !t.isNewExpression(node) ||\n    !t.isMemberExpression(node.callee) ||\n    node.callee.computed ||\n    !t.isIdentifier(node.callee.property) ||\n    !isAnimatedReference(path, node.callee.object)\n  ) {\n    return;\n  }\n\n  const name = node.callee.property.name;\n  if (!isAnimatedConstructor(name) || !hasStaticArguments(node, name)) return;\n  return { expression: node, name };\n}\n\nfunction isAnimatedConstructor(name: string): name is AnimatedConstructor {\n  return name === 'Value' || name === 'ValueXY' || name === 'Color';\n}\n\nfunction hasStaticArguments(expression: t.NewExpression, constructor: AnimatedConstructor): boolean {\n  const arguments_ = expression.arguments;\n  if (arguments_.length > 2 || arguments_.some((argument) => !t.isExpression(argument))) return false;\n  if (arguments_[1] && !isStaticConfig(arguments_[1] as t.Expression)) return false;\n\n  const initialValue = arguments_[0] as t.Expression | undefined;\n  if (constructor === 'Value') return initialValue !== undefined && isStaticNumber(initialValue);\n  if (constructor === 'ValueXY') return initialValue === undefined || isStaticValueXY(initialValue);\n  return initialValue === undefined || isStaticLiteralTree(initialValue);\n}\n\nfunction isStaticConfig(expression: t.Expression): boolean {\n  return t.isNullLiteral(expression) || (t.isObjectExpression(expression) && isStaticLiteralTree(expression));\n}\n\nfunction isStaticNumber(expression: t.Expression): boolean {\n  return (\n    t.isNumericLiteral(expression) ||\n    (t.isUnaryExpression(expression, { operator: '-' }) && t.isNumericLiteral(expression.argument))\n  );\n}\n\nfunction isStaticValueXY(expression: t.Expression): boolean {\n  if (!t.isObjectExpression(expression) || !isStaticLiteralTree(expression)) return false;\n\n  let x: t.Expression | undefined;\n  let y: t.Expression | undefined;\n  for (const property of expression.properties) {\n    if (!t.isObjectProperty(property) || !t.isExpression(property.value)) return false;\n    const name = t.isIdentifier(property.key) ? property.key.name : (property.key as t.StringLiteral).value;\n    if (name === 'x') x = property.value;\n    if (name === 'y') y = property.value;\n  }\n  return x !== undefined && y !== undefined && isStaticNumber(x) && isStaticNumber(y);\n}\n\nfunction supportsHook(constructor: AnimatedConstructor, reactNativeMinor?: number): boolean {\n  return reactNativeMinor !== undefined && reactNativeMinor >= (constructor === 'Value' ? 83 : 85);\n}\n\nfunction isReactHook(path: NodePath, expression: t.Node, hook: ReactHook): boolean {\n  if (t.isIdentifier(expression)) {\n    const binding = path.scope.getBinding(expression.name);\n    return isModuleImportBinding(binding, 'react', t.isImportSpecifier, hook);\n  }\n\n  if (\n    !t.isMemberExpression(expression) ||\n    expression.computed ||\n    !t.isIdentifier(expression.object) ||\n    !t.isIdentifier(expression.property, { name: hook })\n  ) {\n    return false;\n  }\n\n  const binding = path.scope.getBinding(expression.object.name);\n  return isModuleImportBinding(\n    binding,\n    'react',\n    (node) => t.isImportDefaultSpecifier(node) || t.isImportNamespaceSpecifier(node)\n  );\n}\n\nfunction isAnimatedReference(path: NodePath, expression: t.Node): boolean {\n  if (t.isIdentifier(expression)) {\n    const binding = path.scope.getBinding(expression.name);\n    return isModuleImportBinding(binding, 'react-native', t.isImportSpecifier, 'Animated');\n  }\n\n  if (\n    !t.isMemberExpression(expression) ||\n    expression.computed ||\n    !t.isIdentifier(expression.object) ||\n    !t.isIdentifier(expression.property, { name: 'Animated' })\n  ) {\n    return false;\n  }\n\n  const binding = path.scope.getBinding(expression.object.name);\n  return isModuleImportBinding(binding, 'react-native', t.isImportNamespaceSpecifier);\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { HubFile, JSXOptimizer } from '../../types';\nimport PluginError from '../../utils/plugin-error';\nimport { getFirstBailoutReason } from '../../utils/helpers';\nimport { createJSXOptimizer } from '../../utils/optimizer';\nimport {\n  addFileImportHint,\n  hasUnresolvedChildProps,\n  isForcedLine,\n  isIgnoredLine,\n  isStaticLiteralTree,\n  makeAttribute,\n  markReactNativeComponent,\n  tryFlattenStaticStyle,\n} from '../../utils/common';\n\ntype AnimatedComponent = 'Image' | 'ScrollView' | 'Text' | 'View';\n\nconst COMPONENTS = new Set<AnimatedComponent>(['Image', 'ScrollView', 'Text', 'View']);\nconst REF_PROPS = new Set(['innerViewRef', 'ref', 'scrollViewRef']);\n\nconst optimizeAnimatedWrapperRemoval: JSXOptimizer = (path, { logger, platform }) => {\n  const component = getAnimatedComponent(path);\n  if (!component) return;\n\n  const target = `Animated.${component}`;\n  if (platform !== 'ios' && platform !== 'android') {\n    logger.skipped({ target, path, reason: 'target platform is unknown' });\n    return;\n  }\n\n  const forced = isForcedLine(path);\n  const style = buildStaticStyle(path);\n  const bailoutChecks = [\n    {\n      reason: 'has spread props',\n      shouldBail: () => path.node.attributes.some((attribute) => t.isJSXSpreadAttribute(attribute)),\n    },\n    {\n      reason: 'has props that require the Animated wrapper',\n      shouldBail: () => hasUnsupportedAttribute(path, component),\n    },\n    {\n      reason: 'has children that may contain an Animated value',\n      shouldBail: () => !hasStaticChildren(path.parent as t.JSXElement, path),\n    },\n    { reason: 'has a dynamic style', shouldBail: () => style === undefined },\n    {\n      reason: 'has unresolved parents or element usage that may supply animated props',\n      shouldBail: () => hasUnresolvedChildProps(path),\n    },\n  ];\n\n  const overriddenReason = forced ? getFirstBailoutReason(bailoutChecks) : undefined;\n  if (forced) {\n    if (overriddenReason) logger.forced({ target, path, reason: overriddenReason });\n  } else {\n    const skipReason = getFirstBailoutReason([\n      { reason: 'line is marked with @boost-ignore', shouldBail: () => isIgnoredLine(path) },\n      ...bailoutChecks,\n    ]);\n    if (skipReason) {\n      logger.skipped({ target, path, reason: skipReason });\n      return;\n    }\n  }\n\n  const file = (path.hub as unknown as { file?: HubFile }).file;\n  if (!file) throw new PluginError('No file found in Babel hub');\n\n  const replacement = addFileImportHint({\n    file,\n    nameHint: `AnimatedWrapperRemoval${component}`,\n    path,\n    importName: component,\n    moduleName: 'react-native',\n  });\n\n  const preserveAuthoredStyle = overriddenReason !== undefined;\n  const attributes = path.node.attributes.filter(\n    (attribute) =>\n      !t.isJSXAttribute(attribute) ||\n      !t.isJSXIdentifier(attribute.name) ||\n      (attribute.name.name !== 'collapsable' && (preserveAuthoredStyle || attribute.name.name !== 'style'))\n  );\n\n  if (\n    component === 'ScrollView' &&\n    !attributes.some(\n      (attribute) => t.isJSXAttribute(attribute) && t.isJSXIdentifier(attribute.name, { name: 'scrollEventThrottle' })\n    )\n  ) {\n    attributes.push(makeAttribute('scrollEventThrottle', t.numericLiteral(0.0001)));\n  }\n\n  // Native Animated cannot target flattened views, so its wrapper always forces this value.\n  attributes.push(makeAttribute('collapsable', t.booleanLiteral(false)));\n  if (!preserveAuthoredStyle && style) attributes.push(makeAttribute('style', style));\n  path.node.attributes = attributes;\n  path.node.name = t.jsxIdentifier(replacement.name);\n\n  const parent = path.parent as t.JSXElement;\n  if (parent.closingElement) parent.closingElement.name = t.jsxIdentifier(replacement.name);\n\n  markReactNativeComponent(path.node, component);\n  logger.optimized({ target, path });\n};\n\nexport const animatedWrapperRemovalOptimizer = createJSXOptimizer(\n  'animated-wrapper-removal',\n  optimizeAnimatedWrapperRemoval,\n  ({ reactNativeMinor }) =>\n    reactNativeMinor !== undefined && reactNativeMinor >= 83 && reactNativeMinor <= 86 ? 'on' : 'off'\n);\n\nfunction getAnimatedComponent(path: NodePath<t.JSXOpeningElement>): AnimatedComponent | undefined {\n  const name = path.node.name;\n  if (\n    !t.isJSXMemberExpression(name) ||\n    !t.isJSXIdentifier(name.object) ||\n    !t.isJSXIdentifier(name.property) ||\n    !COMPONENTS.has(name.property.name as AnimatedComponent)\n  ) {\n    return;\n  }\n\n  const binding = path.scope.getBinding(name.object.name);\n  if (\n    binding?.kind !== 'module' ||\n    !t.isImportSpecifier(binding.path.node) ||\n    !t.isIdentifier(binding.path.node.imported, { name: 'Animated' }) ||\n    !t.isImportDeclaration(binding.path.parent) ||\n    binding.path.parent.source.value !== 'react-native'\n  ) {\n    return;\n  }\n\n  return name.property.name as AnimatedComponent;\n}\n\nfunction hasUnsupportedAttribute(path: NodePath<t.JSXOpeningElement>, component: AnimatedComponent): boolean {\n  const seen = new Set<string>();\n\n  for (const attribute of path.node.attributes) {\n    if (!t.isJSXAttribute(attribute) || !t.isJSXIdentifier(attribute.name)) return true;\n    const name = attribute.name.name;\n    if (seen.has(name)) return true;\n    seen.add(name);\n\n    if (REF_PROPS.has(name) || name === 'passthroughAnimatedPropExplicitValues') return true;\n    if (component === 'ScrollView' && name === 'refreshControl') return true;\n    if (name === 'key' || name === 'style') continue;\n    if (name === 'collapsable') {\n      if (!isStaticAttribute(attribute)) return true;\n      continue;\n    }\n    if (!isStaticAttribute(attribute) && !isFunctionAttribute(path, attribute)) return true;\n  }\n\n  return false;\n}\n\nfunction isStaticAttribute(attribute: t.JSXAttribute): boolean {\n  if (!attribute.value || t.isStringLiteral(attribute.value)) return true;\n  if (!t.isJSXExpressionContainer(attribute.value)) return false;\n  const expression = attribute.value.expression;\n  return t.isJSXEmptyExpression(expression) || (t.isExpression(expression) && isStaticLiteralTree(expression));\n}\n\nfunction isFunctionAttribute(path: NodePath<t.JSXOpeningElement>, attribute: t.JSXAttribute): boolean {\n  if (!t.isJSXExpressionContainer(attribute.value) || !t.isExpression(attribute.value.expression)) return false;\n  const expression = attribute.value.expression;\n  if (t.isArrowFunctionExpression(expression) || t.isFunctionExpression(expression)) return true;\n  return t.isIdentifier(expression) && isFunctionIdentifier(path, expression.name);\n}\n\nfunction hasStaticChildren(parent: t.JSXElement, path: NodePath<t.JSXOpeningElement>): boolean {\n  return parent.children.every((child) => {\n    if (t.isJSXText(child) || t.isJSXElement(child) || t.isJSXFragment(child)) return true;\n    if (!t.isJSXExpressionContainer(child)) return false;\n    if (t.isJSXEmptyExpression(child.expression)) return true;\n    if (t.isJSXElement(child.expression) || t.isJSXFragment(child.expression)) return true;\n    return (\n      t.isExpression(child.expression) &&\n      (isStaticLiteralTree(child.expression) ||\n        t.isArrowFunctionExpression(child.expression) ||\n        t.isFunctionExpression(child.expression) ||\n        (t.isIdentifier(child.expression) && isFunctionIdentifier(path, child.expression.name)))\n    );\n  });\n}\n\nfunction isFunctionIdentifier(path: NodePath<t.JSXOpeningElement>, name: string): boolean {\n  const binding = path.scope.getBinding(name);\n  if (binding?.path.isFunctionDeclaration()) return true;\n  return (\n    binding?.constant === true &&\n    binding.path.isVariableDeclarator() &&\n    (t.isArrowFunctionExpression(binding.path.node.init) || t.isFunctionExpression(binding.path.node.init))\n  );\n}\n\nfunction buildStaticStyle(path: NodePath<t.JSXOpeningElement>): t.Expression | undefined {\n  const attribute = path.node.attributes.find(\n    (candidate): candidate is t.JSXAttribute =>\n      t.isJSXAttribute(candidate) && t.isJSXIdentifier(candidate.name, { name: 'style' })\n  );\n  if (!attribute?.value || t.isStringLiteral(attribute.value)) return t.identifier('undefined');\n  if (!t.isJSXExpressionContainer(attribute.value) || t.isJSXEmptyExpression(attribute.value.expression)) {\n    return t.identifier('undefined');\n  }\n\n  const expression = attribute.value.expression;\n  if (t.isObjectExpression(expression) || t.isArrayExpression(expression)) {\n    const flattened = tryFlattenStaticStyle(expression, false);\n    if (!flattened) return undefined;\n    return t.objectExpression(\n      [...flattened].map(([name, value]) =>\n        t.objectProperty(t.isValidIdentifier(name, false) ? t.identifier(name) : t.stringLiteral(name), value)\n      )\n    );\n  }\n  if (isStaticLiteralTree(expression)) return t.identifier('undefined');\n  if (t.isIdentifier(expression, { name: 'undefined' }) && !path.scope.getBinding('undefined')) {\n    return t.identifier('undefined');\n  }\n  return undefined;\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { Optimizer } from '../../types';\nimport { isForcedLine, isIgnoredLine, isStaticLiteralTree, tryFlattenStaticStyle } from '../../utils/common';\n\ntype StyleSheetOperation = 'compose' | 'flatten';\n\nexport const stylesheetOperationsOptimizer: Optimizer = {\n  name: 'stylesheet-operations',\n  visitor: {\n    CallExpression(path, state) {\n      if (!state.enabledOptimizations.has('stylesheet-operations')) return;\n\n      const operation = getStyleSheetOperation(path);\n      if (!operation) return;\n\n      const { logger, platform } = state.optimizerContext;\n      const target = `StyleSheet.${operation}`;\n      if (platform !== 'ios' && platform !== 'android') {\n        logger.skipped({ target, path, reason: 'target platform is unknown' });\n        return;\n      }\n\n      const forced = isForcedLine(path);\n      if (!forced && isIgnoredLine(path)) {\n        logger.skipped({ target, path, reason: 'line is marked with @boost-ignore' });\n        return;\n      }\n\n      const staticReplacement = buildStaticReplacement(path, operation);\n      const replacement = staticReplacement ?? (forced ? buildForcedReplacement(path, operation) : undefined);\n      if (!replacement) {\n        const reason = forced ? 'call has unsupported arguments' : 'result cannot be resolved at build time';\n        logger.skipped({ target, path, reason });\n        return;\n      }\n      if (forced && !staticReplacement) {\n        logger.forced({ target, path, reason: 'result cannot be resolved at build time' });\n      }\n\n      const result = t.sequenceExpression([t.cloneNode(path.node.callee as t.MemberExpression, true), replacement]);\n      t.inheritsComments(result, path.node);\n      logger.optimized({ target, path });\n      path.replaceWith(result);\n    },\n  },\n};\n\nfunction getStyleSheetOperation(path: NodePath<t.CallExpression>): StyleSheetOperation | undefined {\n  const callee = path.node.callee;\n  if (\n    !t.isMemberExpression(callee) ||\n    callee.computed ||\n    !t.isIdentifier(callee.object) ||\n    !t.isIdentifier(callee.property) ||\n    (callee.property.name !== 'compose' && callee.property.name !== 'flatten')\n  ) {\n    return;\n  }\n\n  const binding = path.scope.getBinding(callee.object.name);\n  if (\n    binding?.kind !== 'module' ||\n    !t.isImportSpecifier(binding.path.node) ||\n    !t.isIdentifier(binding.path.node.imported, { name: 'StyleSheet' }) ||\n    !t.isImportDeclaration(binding.path.parent) ||\n    binding.path.parent.source.value !== 'react-native'\n  ) {\n    return;\n  }\n\n  return callee.property.name;\n}\n\nfunction buildStaticReplacement(\n  path: NodePath<t.CallExpression>,\n  operation: StyleSheetOperation\n): t.Expression | undefined {\n  const arguments_ = path.node.arguments;\n  if (operation === 'flatten') {\n    if (arguments_.length !== 1 || !t.isExpression(arguments_[0])) return;\n    return buildStaticFlatten(path, arguments_[0]);\n  }\n\n  if (arguments_.length !== 2 || !t.isExpression(arguments_[0]) || !t.isExpression(arguments_[1])) return;\n  const [first, second] = arguments_;\n  if (isStaticNullish(path, first)) return t.cloneNode(second, true);\n  if (isStaticNullish(path, second)) return t.cloneNode(first, true);\n  if (isStaticNonNullish(first) && isStaticNonNullish(second)) {\n    return t.arrayExpression([t.cloneNode(first, true), t.cloneNode(second, true)]);\n  }\n}\n\nfunction buildStaticFlatten(path: NodePath<t.CallExpression>, expression: t.Expression): t.Expression | undefined {\n  const flattened = tryFlattenStaticStyle(expression, path.scope.getBinding('undefined') === undefined);\n  if (flattened) {\n    return t.objectExpression(\n      [...flattened].map(([name, value]) =>\n        t.objectProperty(t.isValidIdentifier(name, false) ? t.identifier(name) : t.stringLiteral(name), value)\n      )\n    );\n  }\n\n  if (isStaticNullish(path, expression) || isStaticNonObjectLiteral(expression)) {\n    return t.unaryExpression('void', t.numericLiteral(0));\n  }\n}\n\nfunction buildForcedReplacement(\n  path: NodePath<t.CallExpression>,\n  operation: StyleSheetOperation\n): t.Expression | undefined {\n  const arguments_ = path.node.arguments;\n  if (operation === 'flatten') {\n    return arguments_.length === 1 && t.isExpression(arguments_[0]) ? t.cloneNode(arguments_[0], true) : undefined;\n  }\n  if (arguments_.length !== 2 || !t.isExpression(arguments_[0]) || !t.isExpression(arguments_[1])) return;\n  return t.arrayExpression([t.cloneNode(arguments_[0], true), t.cloneNode(arguments_[1], true)]);\n}\n\nfunction isStaticNullish(path: NodePath, expression: t.Expression): boolean {\n  return (\n    t.isNullLiteral(expression) ||\n    (t.isIdentifier(expression, { name: 'undefined' }) && path.scope.getBinding('undefined') === undefined) ||\n    (t.isUnaryExpression(expression, { operator: 'void' }) && t.isNumericLiteral(expression.argument))\n  );\n}\n\nfunction isStaticNonNullish(expression: t.Expression): boolean {\n  return !t.isNullLiteral(expression) && isStaticLiteralTree(expression);\n}\n\nfunction isStaticNonObjectLiteral(expression: t.Expression): boolean {\n  return isStaticNonNullish(expression) && !t.isObjectExpression(expression) && !t.isArrayExpression(expression);\n}\n","import { NodePath, types as t } from '@babel/core';\nimport type { Optimizer, OptimizerState, TargetPlatform } from '../../types';\nimport { isIgnoredLine, isModuleImportBinding, isStaticLiteralTree } from '../../utils/common';\n\nconst platformFoldingVisitor = {\n  CallExpression(path: NodePath<t.CallExpression>, state: OptimizerState) {\n    if (!isPlatformSelect(path)) return;\n\n    const { logger, platform } = state.optimizerContext;\n    if (!platform) {\n      logger.skipped({ target: 'Platform.select', path, reason: 'target platform is unknown' });\n      return;\n    }\n    if (isIgnoredLine(path)) return;\n\n    const replacement = buildSelectReplacement(path, platform);\n    if (!replacement) {\n      logger.skipped({ target: 'Platform.select', path, reason: 'select spec is not a plain object literal' });\n      return;\n    }\n\n    t.inheritsComments(replacement, path.node);\n    path.replaceWith(replacement);\n    logger.optimized({ target: 'Platform.select', path });\n  },\n  IfStatement(path: NodePath<t.IfStatement>, state: OptimizerState) {\n    const comparison = getPlatformComparison(path, path.node.test);\n    if (!comparison) return;\n\n    const platform = getTargetPlatform(path, state);\n    if (!platform) return;\n\n    const matches = platformMatches(comparison, platform);\n    const branch = path.get(matches ? 'consequent' : 'alternate');\n    const discarded = path.get(matches ? 'alternate' : 'consequent');\n    if (discarded.node && hasHoistedDeclaration(discarded as NodePath<t.Statement>)) {\n      path.skip();\n      return;\n    }\n\n    state.optimizerContext.logger.optimized({ target: 'Platform.OS', path });\n    if (branch.node) {\n      const replacement = t.cloneNode(branch.node, true);\n      t.inheritsComments(replacement, path.node);\n      path.replaceWith(replacement);\n    } else {\n      path.remove();\n    }\n  },\n  LogicalExpression(path: NodePath<t.LogicalExpression>, state: OptimizerState) {\n    if (path.node.operator !== '&&' && path.node.operator !== '||') return;\n    const comparison = getPlatformComparison(path, path.node.left);\n    if (!comparison) return;\n\n    const platform = getTargetPlatform(path, state);\n    if (!platform) return;\n\n    const left = platformMatches(comparison, platform);\n    const replacement = (path.node.operator === '&&' ? left : !left)\n      ? t.cloneNode(path.node.right, true)\n      : t.booleanLiteral(left);\n    t.inheritsComments(replacement, path.node);\n    state.optimizerContext.logger.optimized({ target: 'Platform.OS', path });\n    path.replaceWith(replacement);\n  },\n  ConditionalExpression(path: NodePath<t.ConditionalExpression>, state: OptimizerState) {\n    const comparison = getPlatformComparison(path, path.node.test);\n    if (!comparison) return;\n\n    const platform = getTargetPlatform(path, state);\n    if (!platform) return;\n\n    const replacement = t.cloneNode(\n      platformMatches(comparison, platform) ? path.node.consequent : path.node.alternate,\n      true\n    );\n    t.inheritsComments(replacement, path.node);\n    state.optimizerContext.logger.optimized({ target: 'Platform.OS', path });\n    path.replaceWith(replacement);\n  },\n  BinaryExpression(path: NodePath<t.BinaryExpression>, state: OptimizerState) {\n    const comparison = getPlatformComparison(path, path.node);\n    if (!comparison) return;\n\n    const platform = getTargetPlatform(path, state);\n    if (!platform) return;\n\n    state.optimizerContext.logger.optimized({ target: 'Platform.OS', path });\n    path.replaceWith(t.booleanLiteral(platformMatches(comparison, platform)));\n  },\n  MemberExpression(path: NodePath<t.MemberExpression>, state: OptimizerState) {\n    if (!isPlatformOSReference(path, path.node) || !isReadOnly(path)) return;\n\n    const platform = getTargetPlatform(path, state);\n    if (!platform) return;\n\n    state.optimizerContext.logger.optimized({ target: 'Platform.OS', path });\n    path.replaceWith(t.stringLiteral(platform));\n  },\n};\n\nexport const platformFoldingOptimizer: Optimizer = {\n  name: 'platform-folding',\n  visitor: {\n    Program(path, state) {\n      if (!state.enabledOptimizations.has('platform-folding')) return;\n      if (\n        !Object.values(path.scope.bindings).some(\n          (binding) =>\n            isModuleImportBinding(binding, 'react-native', t.isImportSpecifier, 'Platform') ||\n            isModuleImportBinding(binding, 'react-native', t.isImportNamespaceSpecifier)\n        )\n      )\n        return;\n      // Fold before JSXOpeningElement optimizers inspect their attributes and children.\n      path.traverse(platformFoldingVisitor, state);\n    },\n  },\n};\n\nfunction isPlatformSelect(path: NodePath<t.CallExpression>): boolean {\n  const callee = path.node.callee;\n  return (\n    t.isMemberExpression(callee) &&\n    !callee.computed &&\n    t.isIdentifier(callee.property, { name: 'select' }) &&\n    isPlatformReference(path, callee.object)\n  );\n}\n\ntype PlatformComparison = { operator: '===' | '!=='; value: string };\n\nfunction getPlatformComparison(path: NodePath, expression: t.Node): PlatformComparison | undefined {\n  if (!t.isBinaryExpression(expression) || (expression.operator !== '===' && expression.operator !== '!==')) return;\n\n  if (isPlatformOSReference(path, expression.left) && t.isStringLiteral(expression.right)) {\n    return { operator: expression.operator, value: expression.right.value };\n  }\n  if (isPlatformOSReference(path, expression.right) && t.isStringLiteral(expression.left)) {\n    return { operator: expression.operator, value: expression.left.value };\n  }\n}\n\nfunction platformMatches(comparison: PlatformComparison, platform: TargetPlatform): boolean {\n  return (comparison.value === platform) === (comparison.operator === '===');\n}\n\nfunction getTargetPlatform(path: NodePath, state: OptimizerState): TargetPlatform | undefined {\n  const { logger, platform } = state.optimizerContext;\n  if (!platform) {\n    logger.skipped({ target: 'Platform.OS', path, reason: 'target platform is unknown' });\n    return;\n  }\n  if (!isIgnoredLine(path)) return platform;\n}\n\nfunction buildSelectReplacement(path: NodePath<t.CallExpression>, platform: TargetPlatform): t.Expression | undefined {\n  const [argument] = path.node.arguments;\n  if (path.node.arguments.length !== 1 || !t.isObjectExpression(argument)) return;\n\n  const properties = new Map<string, t.ObjectProperty>();\n  for (const property of argument.properties) {\n    if (!t.isObjectProperty(property) || property.computed) return;\n\n    const name = getStaticPropertyName(property.key);\n    if (name === '__proto__') return;\n    if (name !== undefined) properties.set(name, property);\n  }\n\n  const selected = properties.get(platform) ?? properties.get('native') ?? properties.get('default');\n  const hasUnsafeDiscardedValue = argument.properties.some(\n    (property) => property !== selected && t.isObjectProperty(property) && !isStaticLiteralTree(property.value)\n  );\n  if (hasUnsafeDiscardedValue) {\n    const property = t.stringLiteral(selected ? getStaticPropertyName(selected.key)! : platform);\n    return t.memberExpression(t.cloneNode(argument, true), property, true);\n  }\n  if (selected) return t.cloneNode(selected.value, true) as t.Expression;\n  return t.unaryExpression('void', t.numericLiteral(0));\n}\n\nfunction isPlatformOSReference(path: NodePath, expression: t.Node): boolean {\n  return (\n    t.isMemberExpression(expression) &&\n    !expression.computed &&\n    t.isIdentifier(expression.property, { name: 'OS' }) &&\n    isPlatformReference(path, expression.object)\n  );\n}\n\nfunction hasHoistedDeclaration(path: NodePath<t.Statement>): boolean {\n  let found = t.isVariableDeclaration(path.node, { kind: 'var' }) || t.isFunctionDeclaration(path.node);\n  path.traverse({\n    Function(functionPath) {\n      if (functionPath.isFunctionDeclaration()) found = true;\n      functionPath.skip();\n    },\n    VariableDeclaration(variablePath) {\n      if (variablePath.node.kind === 'var') found = true;\n    },\n  });\n  return found;\n}\n\nfunction isReadOnly(path: NodePath<t.MemberExpression>): boolean {\n  const parent = path.parent;\n  if (!path.isReferenced()) return false;\n  if (path.key === 'value' && t.isObjectProperty(parent) && t.isObjectPattern(path.parentPath.parent)) return false;\n  if (t.isUpdateExpression(parent) || (t.isUnaryExpression(parent) && parent.operator === 'delete')) return false;\n  if ((t.isForInStatement(parent) || t.isForOfStatement(parent)) && parent.left === path.node) return false;\n  return true;\n}\n\nfunction isPlatformReference(path: NodePath, expression: t.Node): boolean {\n  if (t.isIdentifier(expression)) {\n    const binding = path.scope.getBinding(expression.name);\n    return isModuleImportBinding(binding, 'react-native', t.isImportSpecifier, 'Platform');\n  }\n\n  if (\n    !t.isMemberExpression(expression) ||\n    expression.computed ||\n    !t.isIdentifier(expression.object) ||\n    !t.isIdentifier(expression.property, { name: 'Platform' })\n  ) {\n    return false;\n  }\n\n  const binding = path.scope.getBinding(expression.object.name);\n  return isModuleImportBinding(binding, 'react-native', t.isImportNamespaceSpecifier);\n}\n\nfunction getStaticPropertyName(key: t.Node): string | undefined {\n  if (t.isIdentifier(key)) return key.name;\n  if (t.isStringLiteral(key)) return key.value;\n  return;\n}\n","import type { IntegrationState, LogLevel, OptimizationState, PluginOptions } from '../types';\nimport PluginError from './plugin-error';\n\nconst optionKeys = [\n  'crossFileAncestorResolution',\n  'optimizations',\n  'assumptions',\n  'integrations',\n  'ignores',\n  'logLevel',\n  'target',\n];\nconst optimizationKeys = [\n  'native-text',\n  'native-view',\n  'native-image',\n  'native-activity-indicator',\n  'animated-value-initialization',\n  'animated-wrapper-removal',\n  'stylesheet-operations',\n  'platform-folding',\n];\nconst assumptionKeys = ['unknownAncestorsDoNotRenderText'];\nconst integrationKeys = ['unistyles', 'uniwind'];\nconst optimizationStates: OptimizationState[] = ['on', 'off'];\nconst integrationStates: IntegrationState[] = ['auto', 'on', 'off'];\nconst logLevels: LogLevel[] = ['silent', 'warn', 'info', 'debug'];\n\nconst legacyPluginOptions: Record<string, string> = {\n  verbose: 'Use `logLevel` instead.',\n  silent: 'Use `logLevel` instead.',\n  unistyles: 'Use `integrations.unistyles` instead.',\n  dangerouslyOptimizeViewWithUnknownAncestors: 'Use `assumptions.unknownAncestorsDoNotRenderText` instead.',\n  dangerouslyOptimizeTextWithUnknownAncestors: 'Use `assumptions.unknownAncestorsDoNotRenderText` instead.',\n  dangerouslyOptimizeImageWithUnknownAncestors: 'Use `assumptions.unknownAncestorsDoNotRenderText` instead.',\n  dangerouslyOptimizeActivityIndicatorWithUnknownAncestors:\n    'Use `assumptions.unknownAncestorsDoNotRenderText` instead.',\n};\n\nconst legacyOptimizations: Record<string, string> = {\n  text: 'Use `native-text` instead.',\n  view: 'Use `native-view` instead.',\n  image: 'Use `native-image` instead.',\n  activityIndicator: 'Use `native-activity-indicator` instead.',\n};\n\nexport function validatePluginOptions(rawOptions: unknown): PluginOptions {\n  const options = validateOptions(rawOptions, optionKeys);\n  if (options.crossFileAncestorResolution !== undefined && typeof options.crossFileAncestorResolution !== 'boolean') {\n    throw new PluginError('`crossFileAncestorResolution` must be a boolean.');\n  }\n  if (options.target !== undefined) validateTarget(options.target);\n  return options as PluginOptions;\n}\n\nfunction validateOptions(rawOptions: unknown, keys: string[]): Record<string, unknown> {\n  const options = readObject(rawOptions, 'Plugin options');\n  validateKeys(options, keys, 'plugin option', legacyPluginOptions);\n\n  if (options.logLevel !== undefined && !logLevels.some((level) => level === options.logLevel)) {\n    throw new PluginError('`logLevel` must be one of `silent`, `warn`, `info`, or `debug`.');\n  }\n\n  if (\n    options.ignores !== undefined &&\n    (!Array.isArray(options.ignores) || options.ignores.some((pattern) => typeof pattern !== 'string'))\n  ) {\n    throw new PluginError('`ignores` must be an array of strings.');\n  }\n\n  if (options.optimizations !== undefined) {\n    const optimizations = readObject(options.optimizations, '`optimizations`');\n    validateKeys(optimizations, optimizationKeys, 'optimization', legacyOptimizations);\n    for (const [name, state] of Object.entries(optimizations)) {\n      if (state !== undefined && !optimizationStates.some((candidate) => candidate === state)) {\n        throw new PluginError(`Optimization \\`${name}\\` must be \\`on\\` or \\`off\\`.`);\n      }\n    }\n  }\n\n  if (options.assumptions !== undefined) {\n    const assumptions = readObject(options.assumptions, '`assumptions`');\n    validateKeys(assumptions, assumptionKeys, 'assumption');\n    if (\n      assumptions.unknownAncestorsDoNotRenderText !== undefined &&\n      typeof assumptions.unknownAncestorsDoNotRenderText !== 'boolean'\n    ) {\n      throw new PluginError('`assumptions.unknownAncestorsDoNotRenderText` must be a boolean.');\n    }\n  }\n\n  if (options.integrations !== undefined) {\n    const integrations = readObject(options.integrations, '`integrations`');\n    validateKeys(integrations, integrationKeys, 'integration');\n    for (const name of integrationKeys) {\n      if (integrations[name] !== undefined && !integrationStates.some((state) => state === integrations[name])) {\n        throw new PluginError(`\\`integrations.${name}\\` must be \\`auto\\`, \\`on\\`, or \\`off\\`.`);\n      }\n    }\n  }\n\n  return options;\n}\n\nfunction validateTarget(value: unknown): void {\n  const target = readObject(value, '`target`');\n  validateKeys(target, ['reactNative'], 'target');\n  if (target.reactNative === undefined) return;\n\n  const reactNative = readObject(target.reactNative, '`target.reactNative`');\n  validateKeys(reactNative, ['packageJson'], '`target.reactNative` option');\n  if (typeof reactNative.packageJson !== 'string' || reactNative.packageJson.length === 0) {\n    throw new PluginError('`target.reactNative.packageJson` must be a non-empty string.');\n  }\n}\n\nfunction readObject(value: unknown, name: string): Record<string, unknown> {\n  if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n    throw new PluginError(`${name} must be an object.`);\n  }\n  return value as Record<string, unknown>;\n}\n\nfunction validateKeys(\n  value: Record<string, unknown>,\n  allowedKeys: string[],\n  label: string,\n  replacements: Record<string, string> = {}\n): void {\n  for (const key of Object.keys(value)) {\n    if (allowedKeys.includes(key)) continue;\n    const replacement = replacements[key];\n    if (replacement) throw new PluginError(`The \\`${key}\\` ${label} was removed. ${replacement}`);\n    throw new PluginError(`Unknown ${label} \\`${key}\\`.`);\n  }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type { AncestorSnapshot } from '../../ancestor-types';\n\nlet cachedMtime: bigint | undefined;\nlet cachedPath: string | undefined;\nlet cachedSnapshot: AncestorSnapshot | undefined;\n\nexport function readModuleImports(\n  snapshotPath: string | undefined,\n  projectRoot: string | undefined,\n  filename: string,\n  platform: string | undefined\n) {\n  if (!snapshotPath || !projectRoot) return;\n\n  try {\n    const mtime = fs.statSync(snapshotPath, { bigint: true }).mtimeNs;\n    if (cachedPath !== snapshotPath || cachedMtime !== mtime) {\n      cachedPath = snapshotPath;\n      cachedMtime = mtime;\n      cachedSnapshot = JSON.parse(fs.readFileSync(snapshotPath, 'utf8')) as AncestorSnapshot;\n    }\n  } catch {\n    return;\n  }\n\n  if (cachedSnapshot?.version !== 1) return;\n  const absoluteFilename = path.resolve(projectRoot, filename);\n  return {\n    ancestors: cachedSnapshot.platforms[platform ?? '']?.[absoluteFilename],\n    spreads: cachedSnapshot.spreadPlatforms?.[platform ?? '']?.[absoluteFilename],\n  };\n}\n","import { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { ReactNativeColorNormalizer, ReactNativeTargetOption } from '../types';\n\nexport interface ResolvedReactNativeTarget {\n  version: string;\n  packageJson: string;\n  fingerprint: string;\n}\n\nexport interface ReactNativeTargetResolution {\n  target?: ResolvedReactNativeTarget;\n  versions: string[];\n}\n\nexport function resolveReactNativeTarget(\n  configuredTarget: ReactNativeTargetOption | undefined,\n  locations: Array<string | undefined>\n): ReactNativeTargetResolution {\n  if (configuredTarget) {\n    const target = readReactNativeTarget(resolvePath(configuredTarget.packageJson, locations));\n    return { target, versions: target ? [target.version] : [] };\n  }\n\n  const packageJsonPaths = new Set<string>();\n  const targets: ResolvedReactNativeTarget[] = [];\n  for (const location of locations) {\n    const packageJson = resolveReactNativePackageJson(location);\n    if (!packageJson || packageJsonPaths.has(packageJson)) continue;\n    packageJsonPaths.add(packageJson);\n    const target = readReactNativeTarget(packageJson);\n    if (target) targets.push(target);\n  }\n\n  if (targets.length === 0) return { versions: [] };\n\n  const counts = new Map<string, number>();\n  for (const target of targets) counts.set(target.version, (counts.get(target.version) ?? 0) + 1);\n  let selected = targets[0]!;\n  for (const target of targets.slice(1)) {\n    if ((counts.get(target.version) ?? 0) > (counts.get(selected.version) ?? 0)) selected = target;\n  }\n\n  return { target: selected, versions: [...new Set(targets.map((target) => target.version))] };\n}\n\nexport function getReactNativeMinor(version: string | undefined): number | undefined {\n  const match = version ? /^(\\d+)\\.(\\d+)\\./.exec(version) : null;\n  if (!match) return undefined;\n  return Number(match[1]) === 0 ? Number(match[2]) : Number.MAX_SAFE_INTEGER;\n}\n\nexport function loadReactNativeColorNormalizer(\n  packageJson: string | undefined\n): ReactNativeColorNormalizer | undefined {\n  if (!packageJson) return undefined;\n\n  try {\n    const normalizeColor = createRequire(packageJson)('@react-native/normalize-colors') as unknown;\n    return typeof normalizeColor === 'function' ? (normalizeColor as ReactNativeColorNormalizer) : undefined;\n  } catch {\n    return undefined;\n  }\n}\n\nfunction resolvePath(packageJson: string, locations: Array<string | undefined>): string {\n  if (path.isAbsolute(packageJson)) return packageJson;\n  const origin = locations.find(Boolean);\n  return path.resolve(origin ? path.dirname(origin) : process.cwd(), packageJson);\n}\n\nfunction resolveReactNativePackageJson(origin: string | undefined): string | undefined {\n  if (!origin) return undefined;\n\n  try {\n    return fs.realpathSync(createRequire(path.resolve(origin)).resolve('react-native/package.json'));\n  } catch {\n    return undefined;\n  }\n}\n\nfunction readReactNativeTarget(packageJson: string): ResolvedReactNativeTarget | undefined {\n  try {\n    const contents = fs.readFileSync(packageJson, 'utf8');\n    const { version } = JSON.parse(contents) as { version?: unknown };\n    if (typeof version !== 'string' || !isReactNativeVersion(version)) return undefined;\n    return { version, packageJson: fs.realpathSync(packageJson), fingerprint: hash(contents) };\n  } catch {\n    return undefined;\n  }\n}\n\nfunction isReactNativeVersion(version: string): boolean {\n  return /^\\d+\\.\\d+\\.\\d+(?:-|$)/.test(version);\n}\n\nfunction hash(value: string): string {\n  return createHash('sha256').update(value).digest('hex');\n}\n","import path from 'node:path';\nimport { traverse, type BabelFile, type PluginObj } from '@babel/core';\nimport { declare } from '@babel/helper-plugin-utils';\nimport { nativeTextOptimizer } from './optimizers/native-text';\nimport { nativeImageOptimizer } from './optimizers/native-image';\nimport type {\n  HubFile,\n  OptimizationName,\n  Optimizer,\n  OptimizerContext,\n  OptimizerState,\n  PluginOptions,\n  TargetPlatform,\n} from './types';\nimport { createLogger } from './utils/logger';\nimport { nativeViewOptimizer } from './optimizers/native-view';\nimport { analyzeAncestorModule, createFileIgnoreMatcher } from './utils/common';\nimport { isUnistylesInstalled } from './utils/unistyles';\nimport { nativeActivityIndicatorOptimizer } from './optimizers/native-activity-indicator';\nimport { animatedValueInitializationOptimizer } from './optimizers/animated-value-initialization';\nimport { animatedWrapperRemovalOptimizer } from './optimizers/animated-wrapper-removal';\nimport { stylesheetOperationsOptimizer } from './optimizers/stylesheet-operations';\nimport { platformFoldingOptimizer } from './optimizers/platform-folding';\nimport { validatePluginOptions } from './utils/options';\nimport PluginError from './utils/plugin-error';\nimport { readModuleImports } from './utils/ancestor-snapshot';\nimport {\n  getReactNativeMinor,\n  loadReactNativeColorNormalizer,\n  resolveReactNativeTarget,\n  type ReactNativeTargetResolution,\n} from './utils/react-native-target';\n\nexport type {\n  IntegrationState,\n  LogLevel,\n  OptimizationSetting,\n  OptimizationState,\n  PluginAssumptions,\n  PluginIntegrationOptions,\n  PluginOptimizationOptions,\n  PluginOptions,\n  ReactNativeTargetOption,\n} from './types';\n\nconst warnings = new Set<string>();\n\nconst ancestorOptimizers: Optimizer[] = [\n  animatedWrapperRemovalOptimizer,\n  nativeTextOptimizer,\n  nativeViewOptimizer,\n  nativeImageOptimizer,\n  nativeActivityIndicatorOptimizer,\n];\nconst ancestorVisitor = traverse.visitors.merge(ancestorOptimizers.map((optimizer) => optimizer.visitor));\nconst optimizers: Optimizer[] = [\n  platformFoldingOptimizer,\n  animatedValueInitializationOptimizer,\n  ...ancestorOptimizers,\n  stylesheetOperationsOptimizer,\n];\n\nexport default declare((api, rawOptions, dirname?: string) => {\n  api.assertVersion(7);\n\n  const injectionId = readInternalString(rawOptions, '__reactNativeBoost');\n  const snapshotPath = readInternalString(rawOptions, '__reactNativeBoostSnapshot');\n  const projectRoot = readInternalString(rawOptions, '__reactNativeBoostProjectRoot');\n  const callerData = api.caller((caller) =>\n    JSON.stringify({\n      bundler: (caller as { bundler?: unknown } | undefined)?.bundler,\n      platform: (caller as { platform?: unknown } | undefined)?.platform,\n    })\n  ) as string;\n  const caller = JSON.parse(callerData) as { bundler?: unknown; platform?: unknown };\n  if (!injectionId && caller.bundler === 'metro') {\n    warnOnce(\n      createLogger('warn'),\n      'React Native Boost 2 must be configured through Metro. Move your options to withBoostConfig in metro.config.js and remove react-native-boost/plugin from babel.config.js.'\n    );\n    return { name: 'react-native-boost', visitor: {} };\n  }\n\n  const options = validatePluginOptions(stripInternalOptions(rawOptions ?? {}));\n  const logger = createLogger(options.logLevel ?? 'info');\n  const isIgnoredFile = createFileIgnoreMatcher(options.ignores ?? []);\n  const platform = normalizeTargetPlatform(caller.platform);\n  const configuredTarget = options.target?.reactNative;\n  let targetResolution: ReactNativeTargetResolution | undefined = configuredTarget\n    ? resolveReactNativeTarget(configuredTarget, getRequireOrigins(dirname))\n    : injectionId\n      ? { versions: [] }\n      : undefined;\n  if (targetResolution?.target?.packageJson) {\n    (api as typeof api & { addExternalDependency?: (file: string) => void }).addExternalDependency?.(\n      targetResolution.target.packageJson\n    );\n  }\n\n  const unistylesMode = options.integrations?.unistyles ?? 'auto';\n  const autoDetectedUnistyles = unistylesMode === 'auto' && isUnistylesInstalled(dirname);\n  const unistylesEnabled = unistylesMode === 'on' || autoDetectedUnistyles;\n\n  if (autoDetectedUnistyles) {\n    logger.warning({\n      message:\n        'react-native-unistyles was detected, so Unistyles mode was enabled automatically. Set ' +\n        \"`integrations: { unistyles: 'on' }` to make this explicit, or set it to `off` to opt out.\",\n    });\n  }\n\n  let colorNormalizerResolved = false;\n  let normalizeColor: OptimizerContext['normalizeColor'];\n\n  const resolveReactNativeMinor = (file: HubFile): number | undefined => {\n    if (!targetResolution) {\n      const fileOptions = file.opts as HubFile['opts'] & { cwd?: string };\n      targetResolution = resolveReactNativeTarget(undefined, [\n        fileOptions.filename,\n        fileOptions.cwd ? path.join(fileOptions.cwd, 'package.json') : undefined,\n        ...getRequireOrigins(dirname),\n      ]);\n      const versions = targetResolution.versions.join(', ');\n      if (targetResolution.target && !injectionId) {\n        warnOnce(\n          logger,\n          `Using best-effort React Native ${targetResolution.target.version} detection${versions.includes(',') ? ` from versions ${versions}` : ''}.`\n        );\n      }\n    }\n\n    if (!targetResolution.target && !injectionId) {\n      warnOnce(logger, 'React Native could not be detected. Version-dependent optimizations will be skipped.');\n    }\n\n    return getReactNativeMinor(targetResolution.target?.version);\n  };\n\n  const plugin: PluginObj<OptimizerState> = {\n    name: 'react-native-boost',\n    pre(file) {\n      if (injectionId) (file.metadata as Record<string, unknown>).reactNativeBoost = { injectionId };\n\n      const hubFile = file as unknown as HubFile;\n      const ignored = isIgnoredFile(hubFile);\n      if (snapshotPath && !ignored) {\n        const imports = readModuleImports(snapshotPath, projectRoot, hubFile.opts.filename, platform);\n        hubFile.__ancestorImports = imports?.ancestors;\n        hubFile.__spreadImports = imports?.spreads;\n        hubFile.__ancestorReferences = new Map();\n        hubFile.__spreadReferences = new Map();\n      }\n      const reactNativeMinor = ignored ? undefined : resolveReactNativeMinor(hubFile);\n      if (!ignored && !colorNormalizerResolved) {\n        normalizeColor = loadReactNativeColorNormalizer(targetResolution?.target?.packageJson);\n        colorNormalizerResolved = true;\n      }\n      this.optimizerContext = { logger, options, platform, unistylesEnabled, reactNativeMinor, normalizeColor };\n      this.enabledOptimizations = ignored ? new Set() : getEnabledOptimizations(options, this.optimizerContext);\n\n      configureReactCompilerPass(file, this, snapshotPath !== undefined);\n    },\n    visitor: traverse.visitors.merge([\n      ...optimizers.map((optimizer) => optimizer.visitor),\n      {\n        Program: {\n          enter(path) {\n            if (!snapshotPath) return;\n            const file = (path.hub as unknown as { file: HubFile }).file;\n            file.__ancestorAnalysis ??= analyzeAncestorModule(path);\n          },\n          exit(path, state) {\n            if (!snapshotPath) return;\n            const file = (path.hub as unknown as { file: HubFile & { metadata: unknown } }).file;\n            const metadata = file.metadata as Record<string, unknown>;\n            const boostMetadata = metadata.reactNativeBoost as Record<string, unknown>;\n            boostMetadata.analysis = {\n              ...file.__ancestorAnalysis,\n              ...(state.ancestorSources && {\n                sources: Object.fromEntries(\n                  [...state.ancestorSources].map(([source, statement]) => [source, statement.source!.value])\n                ),\n              }),\n              references: [...(file.__ancestorReferences?.values() ?? [])],\n              spreadReferences: [...(file.__spreadReferences?.values() ?? [])],\n            };\n          },\n        },\n      },\n    ]),\n  };\n\n  return plugin as unknown as PluginObj;\n});\n\nfunction configureReactCompilerPass(file: BabelFile, state: OptimizerState, analyzeExports: boolean): void {\n  const hubFile = file as unknown as HubFile;\n  const wrapVisitor = file.opts.wrapPluginVisitorMethod;\n  file.opts.wrapPluginVisitorMethod = (key, phase, visitor) => {\n    const wrapped = wrapVisitor ? wrapVisitor(key, phase, visitor) : visitor;\n    if (key !== 'react-forget' || phase !== 'enter') return wrapped;\n    return function (this: unknown, path, visitorState) {\n      if (path.isProgram()) {\n        path.scope.crawl();\n        if (analyzeExports) {\n          hubFile.__ancestorAnalysis = analyzeAncestorModule(path);\n          state.ancestorSources = new Map();\n          for (const statement of path.node.body) {\n            if ('source' in statement && statement.source) {\n              state.ancestorSources.set(statement.source.value, statement);\n            }\n          }\n        }\n        // Decide before compiler hoisting hides parents; never retry failed JSX after lowering.\n        path.traverse(ancestorVisitor, state);\n        for (const optimizer of ancestorOptimizers) state.enabledOptimizations.delete(optimizer.name);\n      }\n      return wrapped.call(this, path, visitorState);\n    };\n  };\n}\n\nfunction getEnabledOptimizations(options: PluginOptions, context: OptimizerContext): Set<OptimizationName> {\n  return new Set(\n    optimizers\n      .filter((optimizer) => {\n        const defaultState =\n          typeof optimizer.defaultState === 'function'\n            ? optimizer.defaultState(context)\n            : (optimizer.defaultState ?? 'on');\n        const setting = options.optimizations?.[optimizer.name];\n        return ((Array.isArray(setting) ? setting[0] : setting) ?? defaultState) === 'on';\n      })\n      .map((optimizer) => optimizer.name)\n  );\n}\n\nfunction normalizeTargetPlatform(platform: unknown): TargetPlatform | undefined {\n  return platform === 'ios' || platform === 'android' || platform === 'web' ? platform : undefined;\n}\n\nfunction getRequireOrigins(dirname?: string): Array<string | undefined> {\n  return [dirname ? path.join(dirname, 'package.json') : undefined, path.join(process.cwd(), 'package.json')];\n}\n\nfunction readInternalString(rawOptions: unknown, key: string): string | undefined {\n  const value =\n    typeof rawOptions === 'object' && rawOptions !== null && !Array.isArray(rawOptions)\n      ? (rawOptions as Record<string, unknown>)[key]\n      : undefined;\n  if (value === undefined) return;\n  if (typeof value !== 'string' || value.length === 0) throw new PluginError(`The internal ${key} option is invalid.`);\n  return value;\n}\n\nfunction stripInternalOptions(rawOptions: unknown): unknown {\n  if (typeof rawOptions !== 'object' || rawOptions === null || Array.isArray(rawOptions)) return rawOptions;\n  const { __reactNativeBoost, __reactNativeBoostProjectRoot, __reactNativeBoostSnapshot, ...options } =\n    rawOptions as Record<string, unknown>;\n  void __reactNativeBoost;\n  void __reactNativeBoostProjectRoot;\n  void __reactNativeBoostSnapshot;\n  return options;\n}\n\nfunction warnOnce(logger: ReturnType<typeof createLogger>, message: string): void {\n  if (warnings.has(message)) return;\n  warnings.add(message);\n  logger.warning({ message });\n}\n"],"names":["t","declaration","nodePath","binding","key","_a","defaultStyleIdentifier","getAttributeValueExpression","findAttribute","uri","source","width","height","folded","caller","path","_b","_c","_d"],"mappings":"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"}