@tamagui/static 1.15.14 → 1.15.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/cjs/constants.js.map +0 -1
  2. package/dist/cjs/extractor/accessSafe.js.map +0 -1
  3. package/dist/cjs/extractor/babelParse.js.map +0 -1
  4. package/dist/cjs/extractor/buildClassName.js.map +0 -1
  5. package/dist/cjs/extractor/bundle.js.map +0 -1
  6. package/dist/cjs/extractor/bundleConfig.js.map +0 -1
  7. package/dist/cjs/extractor/createEvaluator.js.map +0 -1
  8. package/dist/cjs/extractor/createExtractor.js.map +0 -1
  9. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -1
  10. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -1
  11. package/dist/cjs/extractor/extractHelpers.js.map +0 -1
  12. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -1
  13. package/dist/cjs/extractor/extractToClassNames.js.map +0 -1
  14. package/dist/cjs/extractor/findTopmostFunction.js.map +0 -1
  15. package/dist/cjs/extractor/generateTamaguiConfig.js.map +0 -1
  16. package/dist/cjs/extractor/generatedUid.js.map +0 -1
  17. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -1
  18. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -1
  19. package/dist/cjs/extractor/getSourceModule.js.map +0 -1
  20. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -1
  21. package/dist/cjs/extractor/hoistClassNames.js.map +0 -1
  22. package/dist/cjs/extractor/literalToAst.js.map +0 -1
  23. package/dist/cjs/extractor/loadFile.js.map +0 -1
  24. package/dist/cjs/extractor/loadTamagui.js.map +0 -1
  25. package/dist/cjs/extractor/logLines.js.map +0 -1
  26. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -1
  27. package/dist/cjs/extractor/removeUnusedHooks.js.map +0 -1
  28. package/dist/cjs/extractor/timer.js.map +0 -1
  29. package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -1
  30. package/dist/cjs/getPragmaOptions.js.map +0 -1
  31. package/dist/cjs/helpers/memoize.js.map +0 -1
  32. package/dist/cjs/index.js.map +0 -1
  33. package/dist/cjs/require.js.map +0 -1
  34. package/dist/cjs/types.js.map +0 -1
  35. package/dist/cjs/webpackPlugin.js.map +0 -1
  36. package/dist/esm/constants.js.map +0 -1
  37. package/dist/esm/constants.mjs.map +0 -1
  38. package/dist/esm/extractor/accessSafe.js.map +0 -1
  39. package/dist/esm/extractor/accessSafe.mjs.map +0 -1
  40. package/dist/esm/extractor/babelParse.js.map +0 -1
  41. package/dist/esm/extractor/babelParse.mjs.map +0 -1
  42. package/dist/esm/extractor/buildClassName.js.map +0 -1
  43. package/dist/esm/extractor/buildClassName.mjs.map +0 -1
  44. package/dist/esm/extractor/bundle.js.map +0 -1
  45. package/dist/esm/extractor/bundle.mjs.map +0 -1
  46. package/dist/esm/extractor/bundleConfig.js.map +0 -1
  47. package/dist/esm/extractor/bundleConfig.mjs.map +0 -1
  48. package/dist/esm/extractor/createEvaluator.js.map +0 -1
  49. package/dist/esm/extractor/createEvaluator.mjs.map +0 -1
  50. package/dist/esm/extractor/createExtractor.js.map +0 -1
  51. package/dist/esm/extractor/createExtractor.mjs.map +0 -1
  52. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -1
  53. package/dist/esm/extractor/ensureImportingConcat.mjs.map +0 -1
  54. package/dist/esm/extractor/evaluateAstNode.js.map +0 -1
  55. package/dist/esm/extractor/evaluateAstNode.mjs.map +0 -1
  56. package/dist/esm/extractor/extractHelpers.js.map +0 -1
  57. package/dist/esm/extractor/extractHelpers.mjs.map +0 -1
  58. package/dist/esm/extractor/extractMediaStyle.js.map +0 -1
  59. package/dist/esm/extractor/extractMediaStyle.mjs.map +0 -1
  60. package/dist/esm/extractor/extractToClassNames.js.map +0 -1
  61. package/dist/esm/extractor/extractToClassNames.mjs.map +0 -1
  62. package/dist/esm/extractor/findTopmostFunction.js.map +0 -1
  63. package/dist/esm/extractor/findTopmostFunction.mjs.map +0 -1
  64. package/dist/esm/extractor/generateTamaguiConfig.js.map +0 -1
  65. package/dist/esm/extractor/generateTamaguiConfig.mjs.map +0 -1
  66. package/dist/esm/extractor/generatedUid.js.map +0 -1
  67. package/dist/esm/extractor/generatedUid.mjs.map +0 -1
  68. package/dist/esm/extractor/getPrefixLogs.js.map +0 -1
  69. package/dist/esm/extractor/getPrefixLogs.mjs.map +0 -1
  70. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -1
  71. package/dist/esm/extractor/getPropValueFromAttributes.mjs.map +0 -1
  72. package/dist/esm/extractor/getSourceModule.js.map +0 -1
  73. package/dist/esm/extractor/getSourceModule.mjs.map +0 -1
  74. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -1
  75. package/dist/esm/extractor/getStaticBindingsForScope.mjs.map +0 -1
  76. package/dist/esm/extractor/hoistClassNames.js.map +0 -1
  77. package/dist/esm/extractor/hoistClassNames.mjs.map +0 -1
  78. package/dist/esm/extractor/literalToAst.js.map +0 -1
  79. package/dist/esm/extractor/literalToAst.mjs.map +0 -1
  80. package/dist/esm/extractor/loadFile.js.map +0 -1
  81. package/dist/esm/extractor/loadFile.mjs.map +0 -1
  82. package/dist/esm/extractor/loadTamagui.js.map +0 -1
  83. package/dist/esm/extractor/loadTamagui.mjs.map +0 -1
  84. package/dist/esm/extractor/logLines.js.map +0 -1
  85. package/dist/esm/extractor/logLines.mjs.map +0 -1
  86. package/dist/esm/extractor/normalizeTernaries.js.map +0 -1
  87. package/dist/esm/extractor/normalizeTernaries.mjs.map +0 -1
  88. package/dist/esm/extractor/removeUnusedHooks.js.map +0 -1
  89. package/dist/esm/extractor/removeUnusedHooks.mjs.map +0 -1
  90. package/dist/esm/extractor/timer.js.map +0 -1
  91. package/dist/esm/extractor/timer.mjs.map +0 -1
  92. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -1
  93. package/dist/esm/extractor/validHTMLAttributes.mjs.map +0 -1
  94. package/dist/esm/getPragmaOptions.js.map +0 -1
  95. package/dist/esm/getPragmaOptions.mjs.map +0 -1
  96. package/dist/esm/helpers/memoize.js.map +0 -1
  97. package/dist/esm/helpers/memoize.mjs.map +0 -1
  98. package/dist/esm/index.js.map +0 -1
  99. package/dist/esm/index.mjs.map +0 -1
  100. package/dist/esm/require.js.map +0 -1
  101. package/dist/esm/require.mjs.map +0 -1
  102. package/dist/esm/types.js.map +0 -1
  103. package/dist/esm/types.mjs.map +0 -1
  104. package/dist/esm/webpackPlugin.js.map +0 -1
  105. package/dist/esm/webpackPlugin.mjs.map +0 -1
  106. package/package.json +14 -14
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/generateTamaguiConfig.ts"],
4
- "sourcesContent": ["import { getVariableValue } from '@tamagui/core-node'\nimport { CLIResolvedOptions } from '@tamagui/types'\nimport fs, { ensureDir } from 'fs-extra'\n\nimport { bundleConfig } from './bundleConfig.js'\n\nasync function getTamaguiConfig(options: CLIResolvedOptions) {\n return bundleConfig(options.tamaguiOptions)\n}\n\nexport async function generateTamaguiConfig(options: CLIResolvedOptions) {\n await ensureDir(options.paths.dotDir)\n const config = await getTamaguiConfig(options)\n const { components, nameToPaths } = config\n const { themes, tokens } = config.tamaguiConfig\n\n // reduce down to usable, smaller json\n\n // slim themes, add name\n for (const key in themes) {\n const theme = themes[key]\n // @ts-ignore\n theme.id = key\n for (const tkey in theme) {\n theme[tkey] = getVariableValue(theme[tkey])\n }\n }\n\n // flatten variables\n for (const key in tokens) {\n const token = tokens[key]\n for (const tkey in token) {\n token[tkey] = getVariableValue(token[tkey])\n }\n }\n\n // remove bulky stuff in components\n for (const component of components) {\n for (const _ in component.nameToInfo) {\n delete component.nameToInfo[_].staticConfig['validStyles']\n delete component.nameToInfo[_].staticConfig['parentStaticConfig']\n }\n }\n\n // set to array\n for (const key in nameToPaths) {\n // @ts-ignore\n nameToPaths[key] = [...nameToPaths[key]]\n }\n\n // remove stuff we dont need to send\n const { fontsParsed, getCSS, tokensParsed, themeConfig, ...cleanedConfig } =\n config.tamaguiConfig\n\n await fs.writeJSON(\n options.paths.conf,\n {\n ...config,\n tamaguiConfig: cleanedConfig,\n },\n {\n spaces: 2,\n }\n )\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiC;AAEjC,sBAA8B;AAE9B,0BAA6B;AAE7B,eAAe,iBAAiB,SAA6B;AAC3D,aAAO,kCAAa,QAAQ,cAAc;AAC5C;AAEA,eAAsB,sBAAsB,SAA6B;AACvE,YAAM,2BAAU,QAAQ,MAAM,MAAM;AACpC,QAAM,SAAS,MAAM,iBAAiB,OAAO;AAC7C,QAAM,EAAE,YAAY,YAAY,IAAI;AACpC,QAAM,EAAE,QAAQ,OAAO,IAAI,OAAO;AAKlC,aAAW,OAAO,QAAQ;AACxB,UAAM,QAAQ,OAAO,GAAG;AAExB,UAAM,KAAK;AACX,eAAW,QAAQ,OAAO;AACxB,YAAM,IAAI,QAAI,mCAAiB,MAAM,IAAI,CAAC;AAAA,IAC5C;AAAA,EACF;AAGA,aAAW,OAAO,QAAQ;AACxB,UAAM,QAAQ,OAAO,GAAG;AACxB,eAAW,QAAQ,OAAO;AACxB,YAAM,IAAI,QAAI,mCAAiB,MAAM,IAAI,CAAC;AAAA,IAC5C;AAAA,EACF;AAGA,aAAW,aAAa,YAAY;AAClC,eAAW,KAAK,UAAU,YAAY;AACpC,aAAO,UAAU,WAAW,CAAC,EAAE,aAAa,aAAa;AACzD,aAAO,UAAU,WAAW,CAAC,EAAE,aAAa,oBAAoB;AAAA,IAClE;AAAA,EACF;AAGA,aAAW,OAAO,aAAa;AAE7B,gBAAY,GAAG,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;AAAA,EACzC;AAGA,QAAM,EAAE,aAAa,QAAQ,cAAc,aAAa,GAAG,cAAc,IACvE,OAAO;AAET,QAAM,gBAAAA,QAAG;AAAA,IACP,QAAQ,MAAM;AAAA,IACd;AAAA,MACE,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,IACV;AAAA,EACF;AACF;",
6
5
  "names": ["fs"]
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/generatedUid.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\nimport invariant from 'invariant'\n\n// TODO: open a PR upstream\ndeclare module '@babel/types' {\n export function toIdentifier(input: string): string\n}\n\n// A clone of path.scope.generateUid that doesn't prepend underscores\nexport function generateUid(scope: any, name: string): string {\n if (!(typeof scope === 'object'))\n throw 'generateUid expects a scope object as its first parameter'\n if (!(typeof name === 'string' && name !== ''))\n throw 'generateUid expects a valid name as its second parameter'\n\n name = t\n .toIdentifier(name)\n .replace(/^_+/, '')\n .replace(/[0-9]+$/g, '')\n\n let uid\n let i = 0\n do {\n if (i > 1) {\n uid = name + i\n } else {\n uid = name\n }\n i++\n } while (\n scope.hasLabel(uid) ||\n scope.hasBinding(uid) ||\n scope.hasGlobal(uid) ||\n scope.hasReference(uid)\n )\n\n const program = scope.getProgramParent()\n program.references[uid] = true\n program.uids[uid] = true\n\n return uid\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AASZ,SAAS,YAAY,OAAY,MAAsB;AAC5D,MAAI,EAAE,OAAO,UAAU;AACrB,UAAM;AACR,MAAI,EAAE,OAAO,SAAS,YAAY,SAAS;AACzC,UAAM;AAER,SAAO,EACJ,aAAa,IAAI,EACjB,QAAQ,OAAO,EAAE,EACjB,QAAQ,YAAY,EAAE;AAEzB,MAAI;AACJ,MAAI,IAAI;AACR,KAAG;AACD,QAAI,IAAI,GAAG;AACT,YAAM,OAAO;AAAA,IACf,OAAO;AACL,YAAM;AAAA,IACR;AACA;AAAA,EACF,SACE,MAAM,SAAS,GAAG,KAClB,MAAM,WAAW,GAAG,KACpB,MAAM,UAAU,GAAG,KACnB,MAAM,aAAa,GAAG;AAGxB,QAAM,UAAU,MAAM,iBAAiB;AACvC,UAAQ,WAAW,GAAG,IAAI;AAC1B,UAAQ,KAAK,GAAG,IAAI;AAEpB,SAAO;AACT;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPrefixLogs.ts"],
4
- "sourcesContent": ["import { TamaguiOptions } from '../types.js'\n\nexport function getPrefixLogs(options?: TamaguiOptions) {\n const { TAMAGUI_TARGET } = process.env\n return options?.prefixLogs ?? ` ${TAMAGUI_TARGET} | `\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,cAAc,SAA0B;AACtD,QAAM,EAAE,eAAe,IAAI,QAAQ;AACnC,UAAO,mCAAS,eAAc,IAAI;AACpC;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPropValueFromAttributes.ts"],
4
- "sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\n\nimport { accessSafe } from './accessSafe.js'\n\n/**\n * getPropValueFromAttributes gets a prop by name from a list of attributes and accounts for potential spread operators.\n * Here's an example. Given this component:\n * ```\n * <Block coolProp=\"wow\" {...spread1} neatProp=\"ok\" {...spread2} />```\n * getPropValueFromAttributes will return the following:\n * - for propName `coolProp`:\n * ```\n * accessSafe(spread1, 'coolProp') || accessSafe(spread2, 'coolProp') || 'wow'```\n * - for propName `neatProp`:\n * ```\n * accessSafe(spread2, 'neatProp') || 'ok'```\n * - for propName `notPresent`: `null`\n *\n * The returned value should (obviously) be placed after spread operators.\n */\nexport function getPropValueFromAttributes(\n propName: string,\n attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): t.Expression | null {\n let propIndex = -1\n let jsxAttr: t.JSXAttribute | null = null\n for (let idx = -1, len = attrs.length; ++idx < len; ) {\n const attr = attrs[idx]\n if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {\n propIndex = idx\n jsxAttr = attr\n break\n }\n }\n\n if (!jsxAttr || jsxAttr.value == null) {\n return null\n }\n\n let propValue:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | t.JSXEmptyExpression\n | t.Expression = jsxAttr.value\n\n if (t.isJSXExpressionContainer(propValue)) {\n propValue = propValue.expression\n }\n\n // TODO how to handle this??\n if (t.isJSXEmptyExpression(propValue)) {\n // eslint-disable-next-line no-console\n console.error('encountered JSXEmptyExpression')\n return null\n }\n\n // filter out spread props that occur before propValue\n const applicableSpreads = attrs\n .filter(\n // 1. idx is greater than propValue prop index\n // 2. attr is a spread operator\n (attr, idx): attr is t.JSXSpreadAttribute => {\n if (t.isJSXSpreadAttribute(attr)) {\n if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {\n return idx > propIndex\n }\n if (t.isLogicalExpression(attr.argument)) {\n return false\n }\n throw new Error(\n `unsupported spread of type \"${attr.argument.type}\": ${\n // @ts-ignore\n generate(attr as any).code\n }`\n )\n }\n return false\n }\n )\n .map((attr) => attr.argument)\n\n // if spread operators occur after propValue, create a binary expression for each operator\n // i.e. before1.propValue || before2.propValue || propValue\n // TODO: figure out how to do this without all the extra parens\n if (applicableSpreads.length > 0) {\n propValue = applicableSpreads.reduce<t.Expression>(\n (acc, val) => t.logicalExpression('||', accessSafe(val, propName), acc),\n propValue\n )\n }\n\n return propValue\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,QAAmB;AAEnB,wBAA2B;AAkBpB,SAAS,2BACd,UACA,OACqB;AACrB,MAAI,YAAY;AAChB,MAAI,UAAiC;AACrC,WAAS,MAAM,IAAI,MAAM,MAAM,QAAQ,EAAE,MAAM,OAAO;AACpD,UAAM,OAAO,MAAM,GAAG;AACtB,QAAI,EAAE,eAAe,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,UAAU;AACtE,kBAAY;AACZ,gBAAU;AACV;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW,QAAQ,SAAS,MAAM;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,YAMe,QAAQ;AAE3B,MAAI,EAAE,yBAAyB,SAAS,GAAG;AACzC,gBAAY,UAAU;AAAA,EACxB;AAGA,MAAI,EAAE,qBAAqB,SAAS,GAAG;AAErC,YAAQ,MAAM,gCAAgC;AAC9C,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,MACvB;AAAA;AAAA;AAAA,IAGC,CAAC,MAAM,QAAsC;AAC3C,UAAI,EAAE,qBAAqB,IAAI,GAAG;AAChC,YAAI,EAAE,aAAa,KAAK,QAAQ,KAAK,EAAE,mBAAmB,KAAK,QAAQ,GAAG;AACxE,iBAAO,MAAM;AAAA,QACf;AACA,YAAI,EAAE,oBAAoB,KAAK,QAAQ,GAAG;AACxC,iBAAO;AAAA,QACT;AACA,cAAM,IAAI;AAAA,UACR,+BAA+B,KAAK,SAAS;AAAA,cAE3C,iBAAAA,SAAS,IAAW,EAAE;AAAA,QAE1B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF,EACC,IAAI,CAAC,SAAS,KAAK,QAAQ;AAK9B,MAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAY,kBAAkB;AAAA,MAC5B,CAAC,KAAK,QAAQ,EAAE,kBAAkB,UAAM,8BAAW,KAAK,QAAQ,GAAG,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
5
  "names": ["generate"]
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getSourceModule.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\nexport interface SourceModule {\n sourceModule?: string\n imported?: string\n local?: string\n destructured?: boolean\n usesImportSyntax: boolean\n}\n\nexport function getSourceModule(\n itemName: string,\n itemBinding: {\n constant?: boolean\n path: { node: t.Node; parent: any }\n }\n): SourceModule | null {\n // TODO: deal with reassignment\n if (!itemBinding.constant) {\n return null\n }\n\n let sourceModule: string | undefined\n let imported: string | undefined\n let local: string | undefined\n let destructured: boolean | undefined\n let usesImportSyntax = false\n\n const itemNode = itemBinding.path.node\n\n if (\n // import x from 'y';\n t.isImportDefaultSpecifier(itemNode) ||\n // import {x} from 'y';\n t.isImportSpecifier(itemNode)\n ) {\n if (t.isImportDeclaration(itemBinding.path.parent)) {\n sourceModule = itemBinding.path.parent.source.value\n local = itemNode.local.name\n usesImportSyntax = true\n if (t.isImportSpecifier(itemNode)) {\n imported = itemNode.imported['name']\n destructured = true\n } else {\n imported = itemNode.local.name\n destructured = false\n }\n }\n } else if (\n t.isVariableDeclarator(itemNode) &&\n itemNode.init != null &&\n t.isCallExpression(itemNode.init) &&\n t.isIdentifier(itemNode.init.callee) &&\n itemNode.init.callee.name === 'require' &&\n itemNode.init.arguments.length === 1\n ) {\n const firstArg = itemNode.init.arguments[0]\n if (!t.isStringLiteral(firstArg)) {\n return null\n }\n sourceModule = firstArg.value\n\n if (t.isIdentifier(itemNode.id)) {\n local = itemNode.id.name\n imported = itemNode.id.name\n destructured = false\n } else if (t.isObjectPattern(itemNode.id)) {\n for (const objProp of itemNode.id.properties) {\n if (\n t.isObjectProperty(objProp) &&\n t.isIdentifier(objProp.value) &&\n objProp.value.name === itemName\n ) {\n local = objProp.value.name\n // @ts-ignore TODO remove this is only an issue on CI\n imported = objProp.key.name\n destructured = true\n break\n }\n }\n\n if (!local || !imported) {\n // eslint-disable-next-line no-console\n console.error('could not find prop with value `%s`', itemName)\n return null\n }\n } else {\n // eslint-disable-next-line no-console\n console.error('Unhandled id type: %s', itemNode.id.type)\n return null\n }\n } else {\n return null\n }\n\n return {\n destructured,\n imported,\n local,\n sourceModule,\n usesImportSyntax,\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AAUZ,SAAS,gBACd,UACA,aAIqB;AAErB,MAAI,CAAC,YAAY,UAAU;AACzB,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,mBAAmB;AAEvB,QAAM,WAAW,YAAY,KAAK;AAElC;AAAA;AAAA,IAEE,EAAE,yBAAyB,QAAQ;AAAA,IAEnC,EAAE,kBAAkB,QAAQ;AAAA,IAC5B;AACA,QAAI,EAAE,oBAAoB,YAAY,KAAK,MAAM,GAAG;AAClD,qBAAe,YAAY,KAAK,OAAO,OAAO;AAC9C,cAAQ,SAAS,MAAM;AACvB,yBAAmB;AACnB,UAAI,EAAE,kBAAkB,QAAQ,GAAG;AACjC,mBAAW,SAAS,SAAS,MAAM;AACnC,uBAAe;AAAA,MACjB,OAAO;AACL,mBAAW,SAAS,MAAM;AAC1B,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,WACE,EAAE,qBAAqB,QAAQ,KAC/B,SAAS,QAAQ,QACjB,EAAE,iBAAiB,SAAS,IAAI,KAChC,EAAE,aAAa,SAAS,KAAK,MAAM,KACnC,SAAS,KAAK,OAAO,SAAS,aAC9B,SAAS,KAAK,UAAU,WAAW,GACnC;AACA,UAAM,WAAW,SAAS,KAAK,UAAU,CAAC;AAC1C,QAAI,CAAC,EAAE,gBAAgB,QAAQ,GAAG;AAChC,aAAO;AAAA,IACT;AACA,mBAAe,SAAS;AAExB,QAAI,EAAE,aAAa,SAAS,EAAE,GAAG;AAC/B,cAAQ,SAAS,GAAG;AACpB,iBAAW,SAAS,GAAG;AACvB,qBAAe;AAAA,IACjB,WAAW,EAAE,gBAAgB,SAAS,EAAE,GAAG;AACzC,iBAAW,WAAW,SAAS,GAAG,YAAY;AAC5C,YACE,EAAE,iBAAiB,OAAO,KAC1B,EAAE,aAAa,QAAQ,KAAK,KAC5B,QAAQ,MAAM,SAAS,UACvB;AACA,kBAAQ,QAAQ,MAAM;AAEtB,qBAAW,QAAQ,IAAI;AACvB,yBAAe;AACf;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,SAAS,CAAC,UAAU;AAEvB,gBAAQ,MAAM,uCAAuC,QAAQ;AAC7D,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AAEL,cAAQ,MAAM,yBAAyB,SAAS,GAAG,IAAI;AACvD,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getStaticBindingsForScope.ts"],
4
- "sourcesContent": ["import { ChildProcess, fork } from 'child_process'\nimport { dirname, extname, join, resolve } from 'path'\n\nimport { Binding, NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nimport { evaluateAstNode } from './evaluateAstNode.js'\nimport { getSourceModule } from './getSourceModule.js'\n\nconst isLocalImport = (path: string) => path.startsWith('.') || path.startsWith('/')\n\nfunction resolveImportPath(sourcePath: string, path: string) {\n const sourceDir = dirname(sourcePath)\n if (isLocalImport(path)) {\n if (extname(path) === '') {\n path += '.js'\n }\n return resolve(sourceDir, path)\n }\n return path\n}\n\nconst cache = new Map()\nconst pending = new Map<string, Promise<any>>()\n\nconst loadCmd = `${join(__dirname, 'loadFile.js')}`\n\nlet exited = false\n\nlet child: ChildProcess | null = null\n\nfunction forkChild() {\n child = fork(loadCmd, [], {\n execArgv: ['-r', 'esbuild-register'],\n detached: false,\n stdio: 'ignore',\n })\n}\n\nexport function cleanupBeforeExit() {\n if (exited) return\n if (!child) return\n child.removeAllListeners()\n child.unref()\n child.disconnect()\n child.kill()\n exited = true\n}\n\nprocess.once('SIGTERM', cleanupBeforeExit)\nprocess.once('SIGINT', cleanupBeforeExit)\nprocess.once('beforeExit', cleanupBeforeExit)\n\nfunction importModule(path: string) {\n if (!child) {\n forkChild()\n }\n if (pending.has(path)) {\n return pending.get(path)\n }\n const promise = new Promise((res, rej) => {\n if (!child) return\n if (cache.size > 2000) {\n cache.clear()\n }\n if (cache.has(path)) {\n return cache.get(path)\n }\n const listener = (msg: any) => {\n if (!child) return\n if (!msg) return\n if (typeof msg !== 'string') return\n if (msg[0] === '-') {\n rej(new Error(msg.slice(1)))\n return\n }\n child.removeListener('message', listener)\n const val = JSON.parse(msg)\n cache.set(path, val)\n res(val)\n }\n child.once('message', listener)\n child.send(`${path.replace('.js', '')}`)\n })\n pending.set(path, promise)\n return promise\n}\n\nexport async function getStaticBindingsForScope(\n scope: NodePath<t.JSXElement>['scope'],\n whitelist: string[] = [],\n sourcePath: string,\n bindingCache: Record<string, string | null>,\n shouldPrintDebug: boolean | 'verbose'\n): Promise<Record<string, any>> {\n const bindings: Record<string, Binding> = scope.getAllBindings() as any\n const ret: Record<string, any> = {}\n\n if (\n shouldPrintDebug\n ) {\n // prettier-ignore\n // console.log(' ', Object.keys(bindings).length, 'variables in scope')\n // .map(x => bindings[x].identifier?.name).join(', ')\n }\n\n // on react native at least it doesnt find some bindings? not sure why\n // lets add in whitelisted imports if they exist\n const program = scope.getProgramParent().block as t.Program\n for (const node of program.body) {\n if (t.isImportDeclaration(node)) {\n const importPath = node.source.value\n if (!node.specifiers.length) continue\n if (!isLocalImport(importPath)) {\n continue\n }\n const moduleName = resolveImportPath(sourcePath, importPath)\n const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test))\n if (!isOnWhitelist) continue\n try {\n const src = await importModule(moduleName)\n if (!src) continue\n for (const specifier of node.specifiers) {\n if (t.isImportSpecifier(specifier) && t.isIdentifier(specifier.imported)) {\n if (typeof src[specifier.imported.name] !== 'undefined') {\n const val = src[specifier.local.name]\n ret[specifier.local.name] = val\n }\n }\n }\n } catch (err: any) {\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.warn(\n ` | Skipping partial evaluation of constant file: ${moduleName} (DEBUG=tamagui for more)`\n )\n } else if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Error in partial evaluation`, err.message, err.stack)\n }\n }\n }\n }\n\n if (!bindingCache) {\n throw new Error('BindingCache is a required param')\n }\n\n for (const k in bindings) {\n const binding = bindings[k]\n\n // check to see if the item is a module\n const sourceModule = getSourceModule(k, binding)\n if (sourceModule) {\n if (!sourceModule.sourceModule) {\n continue\n }\n\n const moduleName = resolveImportPath(sourcePath, sourceModule.sourceModule)\n const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test))\n\n // TODO we could cache this at the file level.. and check if its been touched since\n\n if (isOnWhitelist) {\n const src = importModule(moduleName)\n if (!src) {\n // eslint-disable-next-line no-console\n console.log(\n ` | \u26A0\uFE0F Missing file ${moduleName} via ${sourcePath} import ${sourceModule.sourceModule}?`\n )\n return {}\n }\n if (sourceModule.destructured) {\n if (sourceModule.imported) {\n ret[k] = src[sourceModule.imported]\n }\n } else {\n ret[k] = src\n }\n }\n continue\n }\n\n const { parent } = binding.path\n\n if (!t.isVariableDeclaration(parent) || parent.kind !== 'const') {\n continue\n }\n\n // pick out the right variable declarator\n const dec = parent.declarations.find((d) => t.isIdentifier(d.id) && d.id.name === k)\n\n // if init is not set, there's nothing to evaluate\n // TODO: handle spread syntax\n if (!dec || !dec.init) {\n continue\n }\n\n // missing start/end will break caching\n if (typeof dec.id.start !== 'number' || typeof dec.id.end !== 'number') {\n // eslint-disable-next-line no-console\n console.error('dec.id.start/end is not a number')\n continue\n }\n\n if (!t.isIdentifier(dec.id)) {\n // eslint-disable-next-line no-console\n console.error('dec is not an identifier')\n continue\n }\n\n const cacheKey = `${dec.id.name}_${dec.id.start}-${dec.id.end}`\n\n // retrieve value from cache\n if (Object.hasOwnProperty.call(bindingCache, cacheKey)) {\n ret[k] = bindingCache[cacheKey]\n continue\n }\n // retrieve value from cache\n if (Object.hasOwnProperty.call(bindingCache, cacheKey)) {\n ret[k] = bindingCache[cacheKey]\n continue\n }\n\n // evaluate\n try {\n ret[k] = evaluateAstNode(dec.init, undefined, shouldPrintDebug)\n bindingCache[cacheKey] = ret[k]\n continue\n } catch {\n // skip\n }\n }\n\n return ret\n}\n"],
5
4
  "mappings": "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",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/hoistClassNames.ts"],
4
- "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nexport function hoistClassNames(\n path: NodePath<t.JSXElement>,\n existing: { [key: string]: t.Identifier },\n expr: t.Expression\n) {\n const hoist = hoistClassNames.bind(null, path, existing)\n if (t.isStringLiteral(expr)) {\n if (expr.value.trim() === '') {\n return expr\n }\n if (existing[expr.value]) {\n return existing[expr.value]\n }\n const identifier = replaceStringWithVariable(expr)\n existing[expr.value] = identifier\n return identifier\n }\n if (t.isBinaryExpression(expr)) {\n return t.binaryExpression(expr.operator, hoist(expr.left), hoist(expr.right))\n }\n if (t.isLogicalExpression(expr)) {\n return t.logicalExpression(expr.operator, hoist(expr.left), hoist(expr.right))\n }\n if (t.isConditionalExpression(expr)) {\n return t.conditionalExpression(expr.test, hoist(expr.consequent), hoist(expr.alternate))\n }\n return expr\n\n function replaceStringWithVariable(str: t.StringLiteral): t.Identifier {\n // hoist outside fn!\n const uid = path.scope.generateUidIdentifier('cn')\n const parent = path.findParent((path) => path.isProgram())\n if (!parent) throw new Error(`no program?`)\n const variable = t.variableDeclaration('const', [\n // adding a space for extra safety\n t.variableDeclarator(uid, t.stringLiteral(` ${str.value}`)),\n ])\n // @ts-ignore\n parent.unshiftContainer('body', variable)\n return uid\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,QAAmB;AAEZ,SAAS,gBACd,MACA,UACA,MACA;AACA,QAAM,QAAQ,gBAAgB,KAAK,MAAM,MAAM,QAAQ;AACvD,MAAI,EAAE,gBAAgB,IAAI,GAAG;AAC3B,QAAI,KAAK,MAAM,KAAK,MAAM,IAAI;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,SAAS,KAAK,KAAK,GAAG;AACxB,aAAO,SAAS,KAAK,KAAK;AAAA,IAC5B;AACA,UAAM,aAAa,0BAA0B,IAAI;AACjD,aAAS,KAAK,KAAK,IAAI;AACvB,WAAO;AAAA,EACT;AACA,MAAI,EAAE,mBAAmB,IAAI,GAAG;AAC9B,WAAO,EAAE,iBAAiB,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,EAC9E;AACA,MAAI,EAAE,oBAAoB,IAAI,GAAG;AAC/B,WAAO,EAAE,kBAAkB,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,EAC/E;AACA,MAAI,EAAE,wBAAwB,IAAI,GAAG;AACnC,WAAO,EAAE,sBAAsB,KAAK,MAAM,MAAM,KAAK,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC;AAAA,EACzF;AACA,SAAO;AAEP,WAAS,0BAA0B,KAAoC;AAErE,UAAM,MAAM,KAAK,MAAM,sBAAsB,IAAI;AACjD,UAAM,SAAS,KAAK,WAAW,CAACA,UAASA,MAAK,UAAU,CAAC;AACzD,QAAI,CAAC;AAAQ,YAAM,IAAI,MAAM,aAAa;AAC1C,UAAM,WAAW,EAAE,oBAAoB,SAAS;AAAA;AAAA,MAE9C,EAAE,mBAAmB,KAAK,EAAE,cAAc,IAAI,IAAI,OAAO,CAAC;AAAA,IAC5D,CAAC;AAED,WAAO,iBAAiB,QAAQ,QAAQ;AACxC,WAAO;AAAA,EACT;AACF;",
6
5
  "names": ["path"]
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/literalToAst.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\nexport function literalToAst(literal: any): t.Expression {\n if (literal === null) {\n return t.nullLiteral()\n }\n switch (typeof literal) {\n case 'function':\n throw new Error('Unsupported')\n case 'number':\n return t.numericLiteral(literal)\n case 'string':\n return t.stringLiteral(literal)\n case 'boolean':\n return t.booleanLiteral(literal)\n case 'undefined':\n return t.unaryExpression('void', t.numericLiteral(0), true)\n default:\n if (Array.isArray(literal)) {\n return t.arrayExpression(literal.map(literalToAst))\n }\n return t.objectExpression(\n Object.keys(literal)\n .filter((k) => {\n return typeof literal[k] !== 'undefined'\n })\n .map((k) => {\n return t.objectProperty(t.stringLiteral(k), literalToAst(literal[k]))\n })\n )\n }\n}\n\nconst easyPeasies = ['BooleanLiteral', 'StringLiteral', 'NumericLiteral']\n\nexport function astToLiteral(node: any) {\n if (!node) {\n return\n }\n if (easyPeasies.includes(node.type)) {\n return node.value\n }\n if (node.name === 'undefined' && !node.value) {\n return undefined\n }\n if (t.isNullLiteral(node)) {\n return null\n }\n if (t.isObjectExpression(node)) {\n return computeProps(node.properties)\n }\n if (t.isArrayExpression(node)) {\n return node.elements.reduce(\n // @ts-ignore\n (acc, element) => [\n ...acc,\n ...(element?.type === 'SpreadElement'\n ? astToLiteral(element.argument)\n : [astToLiteral(element)]),\n ],\n []\n )\n }\n}\n\nfunction computeProps(props) {\n return props.reduce((acc, prop) => {\n if (prop.type === 'SpreadElement') {\n return {\n ...acc,\n ...astToLiteral(prop.argument),\n }\n } else if (prop.type !== 'ObjectMethod') {\n const val = astToLiteral(prop.value)\n if (val !== undefined) {\n return {\n ...acc,\n [prop.key.name]: val,\n }\n }\n }\n return acc\n }, {})\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AAEZ,SAAS,aAAa,SAA4B;AACvD,MAAI,YAAY,MAAM;AACpB,WAAO,EAAE,YAAY;AAAA,EACvB;AACA,UAAQ,OAAO,SAAS;AAAA,IACtB,KAAK;AACH,YAAM,IAAI,MAAM,aAAa;AAAA,IAC/B,KAAK;AACH,aAAO,EAAE,eAAe,OAAO;AAAA,IACjC,KAAK;AACH,aAAO,EAAE,cAAc,OAAO;AAAA,IAChC,KAAK;AACH,aAAO,EAAE,eAAe,OAAO;AAAA,IACjC,KAAK;AACH,aAAO,EAAE,gBAAgB,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI;AAAA,IAC5D;AACE,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,eAAO,EAAE,gBAAgB,QAAQ,IAAI,YAAY,CAAC;AAAA,MACpD;AACA,aAAO,EAAE;AAAA,QACP,OAAO,KAAK,OAAO,EAChB,OAAO,CAAC,MAAM;AACb,iBAAO,OAAO,QAAQ,CAAC,MAAM;AAAA,QAC/B,CAAC,EACA,IAAI,CAAC,MAAM;AACV,iBAAO,EAAE,eAAe,EAAE,cAAc,CAAC,GAAG,aAAa,QAAQ,CAAC,CAAC,CAAC;AAAA,QACtE,CAAC;AAAA,MACL;AAAA,EACJ;AACF;AAEA,MAAM,cAAc,CAAC,kBAAkB,iBAAiB,gBAAgB;AAEjE,SAAS,aAAa,MAAW;AACtC,MAAI,CAAC,MAAM;AACT;AAAA,EACF;AACA,MAAI,YAAY,SAAS,KAAK,IAAI,GAAG;AACnC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,SAAS,eAAe,CAAC,KAAK,OAAO;AAC5C,WAAO;AAAA,EACT;AACA,MAAI,EAAE,cAAc,IAAI,GAAG;AACzB,WAAO;AAAA,EACT;AACA,MAAI,EAAE,mBAAmB,IAAI,GAAG;AAC9B,WAAO,aAAa,KAAK,UAAU;AAAA,EACrC;AACA,MAAI,EAAE,kBAAkB,IAAI,GAAG;AAC7B,WAAO,KAAK,SAAS;AAAA;AAAA,MAEnB,CAAC,KAAK,YAAY;AAAA,QAChB,GAAG;AAAA,QACH,IAAI,mCAAS,UAAS,kBAClB,aAAa,QAAQ,QAAQ,IAC7B,CAAC,aAAa,OAAO,CAAC;AAAA,MAC5B;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,MAAM,OAAO,CAAC,KAAK,SAAS;AACjC,QAAI,KAAK,SAAS,iBAAiB;AACjC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG,aAAa,KAAK,QAAQ;AAAA,MAC/B;AAAA,IACF,WAAW,KAAK,SAAS,gBAAgB;AACvC,YAAM,MAAM,aAAa,KAAK,KAAK;AACnC,UAAI,QAAQ,QAAW;AACrB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,IAAI,IAAI,GAAG;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/loadFile.ts"],
4
- "sourcesContent": ["process.on('message', (path) => {\n if (typeof path !== 'string') {\n throw new Error(`Not a string: ${path}`)\n }\n try {\n const out = require(path)\n process.send?.(JSON.stringify(out))\n } catch (err) {\n if (err instanceof Error) {\n process.send?.(`-${err.message}\\n${err.stack}`)\n } else {\n process.send?.(`-${err}`)\n }\n }\n})\n\nsetInterval(() => {}, 1000)\n"],
5
4
  "mappings": ";AAAA,QAAQ,GAAG,WAAW,CAAC,SAAS;AAAhC;AACE,MAAI,OAAO,SAAS,UAAU;AAC5B,UAAM,IAAI,MAAM,iBAAiB,MAAM;AAAA,EACzC;AACA,MAAI;AACF,UAAM,MAAM,QAAQ,IAAI;AACxB,kBAAQ,SAAR,iCAAe,KAAK,UAAU,GAAG;AAAA,EACnC,SAAS,KAAP;AACA,QAAI,eAAe,OAAO;AACxB,oBAAQ,SAAR,iCAAe,IAAI,IAAI;AAAA,EAAY,IAAI;AAAA,IACzC,OAAO;AACL,oBAAQ,SAAR,iCAAe,IAAI;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAED,YAAY,MAAM;AAAC,GAAG,GAAI;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/loadTamagui.ts"],
4
- "sourcesContent": ["import { basename, dirname, extname, join, resolve } from 'path'\n\nimport { getDefaultTamaguiConfig } from '@tamagui/config-default-node'\nimport { createTamagui } from '@tamagui/core-node'\nimport { CLIResolvedOptions, CLIUserOptions } from '@tamagui/types'\nimport type { TamaguiInternalConfig } from '@tamagui/web'\nimport esbuild from 'esbuild'\nimport fs, { existsSync, pathExists, readJSON } from 'fs-extra'\n\nimport { SHOULD_DEBUG } from '../constants.js'\nimport { getNameToPaths, registerRequire, unregisterRequire } from '../require.js'\nimport { TamaguiOptions } from '../types.js'\nimport {\n Props,\n TamaguiProjectInfo,\n bundleConfig,\n esbuildOptions,\n loadComponents,\n} from './bundleConfig.js'\nimport { generateTamaguiConfig } from './generateTamaguiConfig.js'\n\nconst cache = {}\n\nexport async function loadTamagui(props: Props): Promise<TamaguiProjectInfo> {\n const key = JSON.stringify(props)\n if (cache[key]) {\n if (cache[key] instanceof Promise) {\n return await cache[key]\n }\n return cache[key]\n }\n\n let resolver: Function = () => {}\n cache[key] = new Promise((res) => {\n resolver = res\n })\n\n try {\n registerRequire()\n const bundleInfo = await bundleConfig(props)\n\n cache[key] = bundleInfo\n\n // init core-node\n createTamagui(cache[key].tamaguiConfig)\n\n resolver(cache[key])\n\n return cache[key]\n } finally {\n unregisterRequire()\n }\n}\n\nexport function resolveWebOrNativeSpecificEntry(entry: string) {\n const workspaceRoot = resolve()\n const resolved = require.resolve(entry, { paths: [workspaceRoot] })\n const ext = extname(resolved)\n const fileName = basename(resolved).replace(ext, '')\n const specificExt = process.env.TAMAGUI_TARGET === 'web' ? 'web' : 'native'\n const specificFile = join(dirname(resolved), fileName + '.' + specificExt + ext)\n if (existsSync(specificFile)) {\n return specificFile\n }\n return entry\n}\n\n// loads in-process using esbuild-register\nexport function loadTamaguiSync(props: Props): TamaguiProjectInfo {\n const key = JSON.stringify(props)\n if (cache[key]) {\n return cache[key]\n }\n\n const { unregister } = require('esbuild-register/dist/node').register(esbuildOptions)\n\n try {\n registerRequire()\n\n // lets shim require and avoid importing react-native + react-native-web\n // we just need to read the config around them\n process.env.IS_STATIC = 'is_static'\n const devValueOG = globalThis['__DEV__' as any]\n globalThis['__DEV__' as any] = process.env.NODE_ENV === 'development'\n\n try {\n // config\n let tamaguiConfig: TamaguiInternalConfig | null = null\n if (props.config) {\n const configPath = join(process.cwd(), props.config)\n const exp = require(configPath)\n tamaguiConfig = (exp['default'] || exp) as TamaguiInternalConfig\n if (!tamaguiConfig || !tamaguiConfig.parsed) {\n const confPath = require.resolve(configPath)\n throw new Error(`Can't find valid config in ${confPath}:\n \n Be sure you \"export default\" the config.`)\n }\n }\n\n // components\n const components = loadComponents(props)\n if (!components) {\n throw new Error(`No components loaded`)\n }\n if (process.env.DEBUG === 'tamagui') {\n console.log(`components`, components)\n }\n\n // undo shims\n process.env.IS_STATIC = undefined\n globalThis['__DEV__' as any] = devValueOG\n\n // set up core-node\n if (props.config && tamaguiConfig) {\n createTamagui(tamaguiConfig as any)\n }\n\n cache[key] = {\n components,\n tamaguiConfig,\n nameToPaths: getNameToPaths(),\n }\n } catch (err) {\n if (err instanceof Error) {\n console.warn(\n `Error loading tamagui.config.ts (set DEBUG=tamagui to see full stack), running tamagui without custom config`\n )\n console.log(`\\n\\n ${err.message}\\n\\n`)\n if (SHOULD_DEBUG) {\n console.log(err.stack)\n }\n } else {\n console.error(`Error loading tamagui.config.ts`, err)\n }\n return {\n components: [],\n tamaguiConfig: getDefaultTamaguiConfig(),\n nameToPaths: {},\n }\n }\n\n return cache[key]\n } finally {\n unregister()\n unregisterRequire()\n }\n}\n\nexport async function getOptions({\n root = process.cwd(),\n tsconfigPath = 'tsconfig.json',\n tamaguiOptions,\n host,\n debug,\n}: Partial<CLIUserOptions> = {}): Promise<CLIResolvedOptions> {\n const tsConfigFilePath = join(root, tsconfigPath)\n if (!(await fs.pathExists(tsConfigFilePath)))\n throw new Error(`No tsconfig found: ${tsConfigFilePath}`)\n const dotDir = join(root, '.tamagui')\n const pkgJson = await readJSON(join(root, 'package.json'))\n\n return {\n mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',\n root,\n host: host || '127.0.0.1',\n pkgJson,\n debug,\n tsconfigPath,\n tamaguiOptions: {\n components: ['tamagui'],\n config: await getDefaultTamaguiConfigPath(),\n ...tamaguiOptions,\n },\n paths: {\n dotDir,\n conf: join(dotDir, 'tamagui.config.json'),\n types: join(dotDir, 'types.json'),\n },\n }\n}\n\nexport async function watchTamaguiConfig(tamaguiOptions: TamaguiOptions) {\n if (process.env.TAMAGUI_ENABLE_STUDIO !== '1') {\n return\n }\n\n try {\n const options = await getOptions({ tamaguiOptions })\n\n if (!options.tamaguiOptions.config) return\n\n await generateTamaguiConfig(options)\n const context = await esbuild.context({\n entryPoints: [options.tamaguiOptions.config],\n sourcemap: false,\n // dont output just use esbuild as a watcher\n write: false,\n\n plugins: [\n {\n name: `on-rebuild`,\n setup({ onEnd }) {\n onEnd((res) => {\n generateTamaguiConfig(options)\n })\n },\n },\n ],\n })\n\n await context.watch()\n } catch (err) {\n console.warn(\n `Warning watching config error, you may need to restart on config changes: ${err}`\n )\n }\n}\n\nconst defaultPaths = ['tamagui.config.ts', join('src', 'tamagui.config.ts')]\nlet cachedPath = ''\n\nasync function getDefaultTamaguiConfigPath() {\n if (cachedPath) return cachedPath\n const existingPaths = await Promise.all(defaultPaths.map((path) => pathExists(path)))\n const existing = existingPaths.findIndex((x) => !!x)\n const found = defaultPaths[existing]\n if (!found) {\n throw new Error(`No found tamagui.config.ts`)\n }\n cachedPath = found\n return found\n}\n\nexport { TamaguiProjectInfo }\n"],
5
4
  "mappings": "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",
6
5
  "names": ["fs", "esbuild"]
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/logLines.ts"],
4
- "sourcesContent": ["const prefix = ' '\n\nexport const logLines = (str: string, singleLine = false) => {\n if (singleLine) {\n return prefix + str.split(' ').join(`\\n${prefix}`)\n }\n const lines: string[] = ['']\n const items = str.split(' ')\n for (const item of items) {\n if (item.length + lines[lines.length - 1].length > 85) {\n lines.push('')\n }\n lines[lines.length - 1] += item + ' '\n }\n return lines.map((line, i) => prefix + (i == 0 ? '' : ' ') + line.trim()).join('\\n')\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,SAAS;AAER,MAAM,WAAW,CAAC,KAAa,aAAa,UAAU;AAC3D,MAAI,YAAY;AACd,WAAO,SAAS,IAAI,MAAM,GAAG,EAAE,KAAK;AAAA,EAAK,QAAQ;AAAA,EACnD;AACA,QAAM,QAAkB,CAAC,EAAE;AAC3B,QAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,IAAI;AACrD,YAAM,KAAK,EAAE;AAAA,IACf;AACA,UAAM,MAAM,SAAS,CAAC,KAAK,OAAO;AAAA,EACpC;AACA,SAAO,MAAM,IAAI,CAAC,MAAM,MAAM,UAAU,KAAK,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI;AACrF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/normalizeTernaries.ts"],
4
- "sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport invariant from 'invariant'\n\nimport { Ternary } from '../types.js'\n\nexport function normalizeTernaries(ternaries: Ternary[]) {\n invariant(\n Array.isArray(ternaries),\n 'extractStaticTernaries expects param 1 to be an array of ternaries'\n )\n\n if (ternaries.length === 0) {\n return []\n }\n\n const ternariesByKey: { [key: string]: Ternary } = {}\n\n for (let idx = -1, len = ternaries.length; ++idx < len; ) {\n const { test, consequent, alternate, remove, ...rest } = ternaries[idx]\n\n let ternaryTest = test\n\n // strip parens\n if (t.isExpressionStatement(test)) {\n ternaryTest = (test as any).expression\n }\n\n // convert `!thing` to `thing` with swapped consequent and alternate\n let shouldSwap = false\n if (t.isUnaryExpression(test) && test.operator === '!') {\n ternaryTest = test.argument\n shouldSwap = true\n } else if (t.isBinaryExpression(test)) {\n if (test.operator === '!==' || test.operator === '!=') {\n ternaryTest = t.binaryExpression(test.operator, test.left, test.right)\n shouldSwap = true\n }\n }\n\n // @ts-ignore\n const key = generate(ternaryTest as any).code\n\n if (!ternariesByKey[key]) {\n ternariesByKey[key] = {\n ...rest,\n alternate: {},\n consequent: {},\n test: ternaryTest,\n remove,\n }\n }\n const altStyle = (shouldSwap ? consequent : alternate) ?? {}\n const consStyle = (shouldSwap ? alternate : consequent) ?? {}\n Object.assign(ternariesByKey[key].alternate!, altStyle)\n Object.assign(ternariesByKey[key].consequent!, consStyle)\n }\n\n const ternaryExpression = Object.keys(ternariesByKey).map((key) => {\n return ternariesByKey[key]\n })\n\n return ternaryExpression\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAqB;AACrB,QAAmB;AACnB,uBAAsB;AAIf,SAAS,mBAAmB,WAAsB;AACvD,uBAAAA;AAAA,IACE,MAAM,QAAQ,SAAS;AAAA,IACvB;AAAA,EACF;AAEA,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,iBAA6C,CAAC;AAEpD,WAAS,MAAM,IAAI,MAAM,UAAU,QAAQ,EAAE,MAAM,OAAO;AACxD,UAAM,EAAE,MAAM,YAAY,WAAW,QAAQ,GAAG,KAAK,IAAI,UAAU,GAAG;AAEtE,QAAI,cAAc;AAGlB,QAAI,EAAE,sBAAsB,IAAI,GAAG;AACjC,oBAAe,KAAa;AAAA,IAC9B;AAGA,QAAI,aAAa;AACjB,QAAI,EAAE,kBAAkB,IAAI,KAAK,KAAK,aAAa,KAAK;AACtD,oBAAc,KAAK;AACnB,mBAAa;AAAA,IACf,WAAW,EAAE,mBAAmB,IAAI,GAAG;AACrC,UAAI,KAAK,aAAa,SAAS,KAAK,aAAa,MAAM;AACrD,sBAAc,EAAE,iBAAiB,KAAK,UAAU,KAAK,MAAM,KAAK,KAAK;AACrE,qBAAa;AAAA,MACf;AAAA,IACF;AAGA,UAAM,UAAM,iBAAAC,SAAS,WAAkB,EAAE;AAEzC,QAAI,CAAC,eAAe,GAAG,GAAG;AACxB,qBAAe,GAAG,IAAI;AAAA,QACpB,GAAG;AAAA,QACH,WAAW,CAAC;AAAA,QACZ,YAAY,CAAC;AAAA,QACb,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,UAAM,YAAY,aAAa,aAAa,cAAc,CAAC;AAC3D,UAAM,aAAa,aAAa,YAAY,eAAe,CAAC;AAC5D,WAAO,OAAO,eAAe,GAAG,EAAE,WAAY,QAAQ;AACtD,WAAO,OAAO,eAAe,GAAG,EAAE,YAAa,SAAS;AAAA,EAC1D;AAEA,QAAM,oBAAoB,OAAO,KAAK,cAAc,EAAE,IAAI,CAAC,QAAQ;AACjE,WAAO,eAAe,GAAG;AAAA,EAC3B,CAAC;AAED,SAAO;AACT;",
6
5
  "names": ["invariant", "generate"]
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/removeUnusedHooks.ts"],
4
- "sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nconst hooks = {\n useMedia: true,\n useTheme: true,\n}\n\nexport function removeUnusedHooks(compFn: NodePath<any>, shouldPrintDebug: boolean | 'verbose') {\n compFn.scope.crawl()\n // check the top level statements\n let bodyStatements = compFn?.get('body')\n if (!bodyStatements) {\n // eslint-disable-next-line no-console\n console.log('no body statemnts?', compFn)\n return\n }\n if (!Array.isArray(bodyStatements)) {\n if (bodyStatements.isFunctionExpression()) {\n bodyStatements = bodyStatements.scope.path.get('body')\n } else {\n bodyStatements = bodyStatements.get('body')\n }\n }\n if (!bodyStatements || !Array.isArray(bodyStatements)) {\n return\n }\n const statements = bodyStatements as NodePath<any>[]\n for (const statement of statements) {\n if (!statement.isVariableDeclaration()) {\n continue\n }\n const declarations = statement.get('declarations')\n if (!Array.isArray(declarations)) {\n continue\n }\n const isBindingReferenced = (name: string) => {\n return !!statement.scope.getBinding(name)?.referenced\n }\n for (const declarator of declarations) {\n const id = declarator.get('id')\n const init = declarator.node.init\n if (Array.isArray(id) || Array.isArray(init)) {\n continue\n }\n const shouldRemove = (() => {\n const isHook =\n t.isCallExpression(init) && t.isIdentifier(init.callee) && hooks[init.callee.name]\n if (!isHook) {\n return false\n }\n if (t.isIdentifier(id.node)) {\n // remove \"const media = useMedia()\"\n const name = id.node.name\n return !isBindingReferenced(name)\n } else if (t.isObjectPattern(id.node)) {\n // remove \"const { sm } = useMedia()\"\n const propPaths = id.get('properties') as NodePath<any>[]\n return propPaths.every((prop) => {\n if (!prop.isObjectProperty()) return false\n const value = prop.get('value')\n if (Array.isArray(value) || !value.isIdentifier()) return false\n const name = value.node.name\n return !isBindingReferenced(name)\n })\n }\n return false\n })()\n if (shouldRemove) {\n declarator.remove()\n if (shouldPrintDebug) {\n // eslint-disable-next-line no-console\n console.log(` [\uD83E\uDE9D] removed ${id.node['name'] ?? ''}`)\n }\n }\n }\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,QAAmB;AAEnB,MAAM,QAAQ;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,SAAS,kBAAkB,QAAuB,kBAAuC;AAC9F,SAAO,MAAM,MAAM;AAEnB,MAAI,iBAAiB,iCAAQ,IAAI;AACjC,MAAI,CAAC,gBAAgB;AAEnB,YAAQ,IAAI,sBAAsB,MAAM;AACxC;AAAA,EACF;AACA,MAAI,CAAC,MAAM,QAAQ,cAAc,GAAG;AAClC,QAAI,eAAe,qBAAqB,GAAG;AACzC,uBAAiB,eAAe,MAAM,KAAK,IAAI,MAAM;AAAA,IACvD,OAAO;AACL,uBAAiB,eAAe,IAAI,MAAM;AAAA,IAC5C;AAAA,EACF;AACA,MAAI,CAAC,kBAAkB,CAAC,MAAM,QAAQ,cAAc,GAAG;AACrD;AAAA,EACF;AACA,QAAM,aAAa;AACnB,aAAW,aAAa,YAAY;AAClC,QAAI,CAAC,UAAU,sBAAsB,GAAG;AACtC;AAAA,IACF;AACA,UAAM,eAAe,UAAU,IAAI,cAAc;AACjD,QAAI,CAAC,MAAM,QAAQ,YAAY,GAAG;AAChC;AAAA,IACF;AACA,UAAM,sBAAsB,CAAC,SAAiB;AApClD;AAqCM,aAAO,CAAC,GAAC,eAAU,MAAM,WAAW,IAAI,MAA/B,mBAAkC;AAAA,IAC7C;AACA,eAAW,cAAc,cAAc;AACrC,YAAM,KAAK,WAAW,IAAI,IAAI;AAC9B,YAAM,OAAO,WAAW,KAAK;AAC7B,UAAI,MAAM,QAAQ,EAAE,KAAK,MAAM,QAAQ,IAAI,GAAG;AAC5C;AAAA,MACF;AACA,YAAM,gBAAgB,MAAM;AAC1B,cAAM,SACJ,EAAE,iBAAiB,IAAI,KAAK,EAAE,aAAa,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI;AACnF,YAAI,CAAC,QAAQ;AACX,iBAAO;AAAA,QACT;AACA,YAAI,EAAE,aAAa,GAAG,IAAI,GAAG;AAE3B,gBAAM,OAAO,GAAG,KAAK;AACrB,iBAAO,CAAC,oBAAoB,IAAI;AAAA,QAClC,WAAW,EAAE,gBAAgB,GAAG,IAAI,GAAG;AAErC,gBAAM,YAAY,GAAG,IAAI,YAAY;AACrC,iBAAO,UAAU,MAAM,CAAC,SAAS;AAC/B,gBAAI,CAAC,KAAK,iBAAiB;AAAG,qBAAO;AACrC,kBAAM,QAAQ,KAAK,IAAI,OAAO;AAC9B,gBAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,aAAa;AAAG,qBAAO;AAC1D,kBAAM,OAAO,MAAM,KAAK;AACxB,mBAAO,CAAC,oBAAoB,IAAI;AAAA,UAClC,CAAC;AAAA,QACH;AACA,eAAO;AAAA,MACT,GAAG;AACH,UAAI,cAAc;AAChB,mBAAW,OAAO;AAClB,YAAI,kBAAkB;AAEpB,kBAAQ,IAAI,yBAAkB,GAAG,KAAK,MAAM,KAAK,IAAI;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/timer.ts"],
4
- "sourcesContent": ["export const timer = () => {\n const start = Date.now()\n let last = start\n return {\n mark: (name: string, print = false) => {\n if (print) {\n const took = Date.now() - last\n last = Date.now()\n // eslint-disable-next-line no-console\n console.log(`Time ${name}: ${took}ms`)\n if (took > 10) {\n // eslint-disable-next-line no-console\n console.log(' long timer')\n }\n }\n },\n done: (print = false) => {\n if (print) {\n const total = Date.now() - start\n // eslint-disable-next-line no-console\n console.log(`Total time: ${total}ms`)\n if (total > 50) {\n // eslint-disable-next-line no-console\n console.log(' long timer')\n }\n }\n },\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,QAAQ,MAAM;AACzB,QAAM,QAAQ,KAAK,IAAI;AACvB,MAAI,OAAO;AACX,SAAO;AAAA,IACL,MAAM,CAAC,MAAc,QAAQ,UAAU;AACrC,UAAI,OAAO;AACT,cAAM,OAAO,KAAK,IAAI,IAAI;AAC1B,eAAO,KAAK,IAAI;AAEhB,gBAAQ,IAAI,QAAQ,SAAS,QAAQ;AACrC,YAAI,OAAO,IAAI;AAEb,kBAAQ,IAAI,cAAc;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,CAAC,QAAQ,UAAU;AACvB,UAAI,OAAO;AACT,cAAM,QAAQ,KAAK,IAAI,IAAI;AAE3B,gBAAQ,IAAI,eAAe,SAAS;AACpC,YAAI,QAAQ,IAAI;AAEd,kBAAQ,IAAI,cAAc;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/validHTMLAttributes.ts"],
4
- "sourcesContent": ["export const validHTMLAttributes = {\n autocomplete: true,\n border: true,\n contenteditable: true,\n crossorigin: true,\n dir: true,\n draggable: true,\n enctype: true,\n formenctype: true,\n formmethod: true,\n formtarget: true,\n inputmode: true,\n kind: true,\n link: true,\n method: true,\n preload: true,\n referrerpolicy: true,\n rel: true,\n rev: true,\n role: true,\n sandbox: true,\n shape: true,\n spellcheck: true,\n target: true,\n translate: true,\n type: true,\n wrap: true,\n 'aria-autocomplete': true,\n 'aria-busy': true,\n 'aria-checked': true,\n 'aria-current': true,\n 'aria-disabled': true,\n 'aria-expanded': true,\n 'aria-haspopup': true,\n 'aria-hidden': true,\n 'aria-invalid': true,\n 'aria-polite': true,\n 'aria-modal': true,\n 'aria-multiline': true,\n 'aria-multiselectable': true,\n 'aria-orientation': true,\n 'aria-pressed': true,\n 'aria-readonly': true,\n 'aria-relevant': true,\n 'aria-required': true,\n 'aria-selected': true,\n 'aria-sort': true,\n}\n\n// for moving off react-native-web eventually (unused atm)\nexport const validAccessibilityAttributes = {\n accessibilityRole: true,\n accessibilityActiveDescendant: true,\n accessibilityAtomic: true,\n accessibilityAutoComplete: true,\n accessibilityBusy: true,\n accessibilityChecked: true,\n accessibilityColumnCount: true,\n accessibilityColumnIndex: true,\n accessibilityColumnSpan: true,\n accessibilityControls: true,\n accessibilityCurrent: true,\n accessibilityDescribedBy: true,\n accessibilityDetails: true,\n disabled: true,\n accessibilityErrorMessage: true,\n accessibilityExpanded: true,\n accessibilityFlowTo: true,\n accessibilityHasPopup: true,\n accessibilityHidden: true,\n accessibilityInvalid: true,\n accessibilityKeyShortcuts: true,\n accessibilityLabel: true,\n accessibilityLabelledBy: true,\n accessibilityLevel: true,\n accessibilityLiveRegion: true,\n accessibilityModal: true,\n accessibilityMultiline: true,\n accessibilityMultiSelectable: true,\n accessibilityOrientation: true,\n accessibilityOwns: true,\n accessibilityPlaceholder: true,\n accessibilityPosInSet: true,\n accessibilityPressed: true,\n accessibilityReadOnly: true,\n accessibilityRequired: true,\n accessibilityRoleDescription: true,\n accessibilityRowCount: true,\n accessibilityRowIndex: true,\n accessibilityRowSpan: true,\n accessibilitySelected: true,\n accessibilitySetSize: true,\n accessibilitySort: true,\n accessibilityValueMax: true,\n accessibilityValueMin: true,\n accessibilityValueNow: true,\n accessibilityValueText: true,\n nativeID: true,\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,sBAAsB;AAAA,EACjC,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,qBAAqB;AAAA,EACrB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,aAAa;AACf;AAGO,MAAM,+BAA+B;AAAA,EAC1C,mBAAmB;AAAA,EACnB,+BAA+B;AAAA,EAC/B,qBAAqB;AAAA,EACrB,2BAA2B;AAAA,EAC3B,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,sBAAsB;AAAA,EACtB,UAAU;AAAA,EACV,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,2BAA2B;AAAA,EAC3B,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,oBAAoB;AAAA,EACpB,wBAAwB;AAAA,EACxB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,8BAA8B;AAAA,EAC9B,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,UAAU;AACZ;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/getPragmaOptions.ts"],
4
- "sourcesContent": ["export function getPragmaOptions({\n source,\n path,\n disableCommentCheck,\n}: {\n source: string\n path: string\n disableCommentCheck?: boolean\n}) {\n if (!disableCommentCheck && !source.startsWith('//') && !source.startsWith('/*')) {\n return {\n shouldPrintDebug: false,\n shouldDisable: false,\n }\n }\n\n let shouldPrintDebug: boolean | 'verbose' = false\n let shouldDisable = false\n\n // try and avoid too much parsing but sometimes esbuild adds helpers above..\n const firstLine = source.slice(0, 800).split('\\n')[0]\n\n if (firstLine.includes('tamagui-ignore')) {\n shouldDisable = true\n }\n\n if (firstLine.includes('debug')) {\n shouldPrintDebug = true\n }\n\n if (firstLine.includes('debug-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n if (process.env.TAMAGUI_DEBUG_FILE) {\n if (path.includes(process.env.TAMAGUI_DEBUG_FILE)) {\n shouldPrintDebug = 'verbose'\n }\n }\n\n if (process.env.DEBUG?.includes('tamagui')) {\n shouldPrintDebug = true\n }\n\n if (process.env.DEBUG?.includes('tamagui-verbose')) {\n shouldPrintDebug = 'verbose'\n }\n\n return {\n shouldPrintDebug,\n shouldDisable,\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AARH;AASE,MAAI,CAAC,uBAAuB,CAAC,OAAO,WAAW,IAAI,KAAK,CAAC,OAAO,WAAW,IAAI,GAAG;AAChF,WAAO;AAAA,MACL,kBAAkB;AAAA,MAClB,eAAe;AAAA,IACjB;AAAA,EACF;AAEA,MAAI,mBAAwC;AAC5C,MAAI,gBAAgB;AAGpB,QAAM,YAAY,OAAO,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;AAEpD,MAAI,UAAU,SAAS,gBAAgB,GAAG;AACxC,oBAAgB;AAAA,EAClB;AAEA,MAAI,UAAU,SAAS,OAAO,GAAG;AAC/B,uBAAmB;AAAA,EACrB;AAEA,MAAI,UAAU,SAAS,eAAe,GAAG;AACvC,uBAAmB;AAAA,EACrB;AAEA,MAAI,QAAQ,IAAI,oBAAoB;AAClC,QAAI,KAAK,SAAS,QAAQ,IAAI,kBAAkB,GAAG;AACjD,yBAAmB;AAAA,IACrB;AAAA,EACF;AAEA,OAAI,aAAQ,IAAI,UAAZ,mBAAmB,SAAS,YAAY;AAC1C,uBAAmB;AAAA,EACrB;AAEA,OAAI,aAAQ,IAAI,UAAZ,mBAAmB,SAAS,oBAAoB;AAClD,uBAAmB;AAAA,EACrB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/memoize.ts"],
4
- "sourcesContent": ["// @ts-nocheck\nexport function memoize(func?: Function, resolver?: any) {\n if (typeof func !== 'function' || (resolver != null && typeof resolver !== 'function')) {\n throw new TypeError('Expected a function')\n }\n const memoized = function (...args) {\n const key = resolver ? resolver.apply(this, args) : args[0]\n const cache = memoized.cache\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = func.apply(this, args)\n memoized.cache = cache.set(key, result) || cache\n return result\n }\n memoized.cache = new (memoize.Cache || Map)()\n return memoized\n}\n\nmemoize.Cache = Map\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,QAAQ,MAAiB,UAAgB;AACvD,MAAI,OAAO,SAAS,cAAe,YAAY,QAAQ,OAAO,aAAa,YAAa;AACtF,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC3C;AACA,QAAM,WAAW,YAAa,MAAM;AAClC,UAAM,MAAM,WAAW,SAAS,MAAM,MAAM,IAAI,IAAI,KAAK,CAAC;AAC1D,UAAM,QAAQ,SAAS;AAEvB,QAAI,MAAM,IAAI,GAAG,GAAG;AAClB,aAAO,MAAM,IAAI,GAAG;AAAA,IACtB;AACA,UAAM,SAAS,KAAK,MAAM,MAAM,IAAI;AACpC,aAAS,QAAQ,MAAM,IAAI,KAAK,MAAM,KAAK;AAC3C,WAAO;AAAA,EACT;AACA,WAAS,QAAQ,KAAK,QAAQ,SAAS,KAAK;AAC5C,SAAO;AACT;AAEA,QAAQ,QAAQ;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["process.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport { TamaguiOptions } from './types.js'\nexport { createExtractor } from './extractor/createExtractor.js'\nexport { literalToAst } from './extractor/literalToAst.js'\nexport * from './constants.js'\nexport * from './extractor/extractToClassNames.js'\nexport * from './extractor/extractHelpers.js'\nexport * from './extractor/loadTamagui.js'\nexport * from './require.js'\nexport * from './getPragmaOptions.js'\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA+B;AAC/B,6BAAgC;AAChC,0BAA6B;AAC7B,wBAAc,2BALd;AAMA,wBAAc,+CANd;AAOA,wBAAc,0CAPd;AAQA,wBAAc,uCARd;AASA,wBAAc,yBATd;AAUA,wBAAc,kCAVd;AAAA,QAAQ,IAAI,0BAA0B;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/require.ts"],
4
- "sourcesContent": ["import { relative, sep } from 'path'\n\nimport { SHOULD_DEBUG } from './constants.js'\n\nconst nameToPaths = {}\nconst Module = require('module')\nconst og = Module.prototype.require\nglobalThis['ogRequire'] = og\n\nexport const getNameToPaths = () => nameToPaths\n\nexport function registerRequire() {\n if (Module.prototype.require !== globalThis['ogRequire']) {\n // eslint-disable-next-line no-console\n console.warn('didnt unregister before re-registering')\n process.exit(1)\n }\n\n const proxyWorm = require('@tamagui/proxy-worm')\n // TODO can swap with react-native-web-lite\n const rnw = require('react-native-web')\n const core = require('@tamagui/core-node')\n\n Module.prototype.require = function (path: string) {\n if (/\\.(gif|jpe?g|png|svg|ttf|otf|woff2?|bmp|webp)$/.test(path)) {\n return {}\n }\n if (\n path === '@gorhom/bottom-sheet' ||\n path.startsWith('react-native-reanimated') ||\n path === 'expo-linear-gradient' ||\n path === '@expo/vector-icons'\n ) {\n return proxyWorm\n }\n if (\n path.startsWith('react-native') &&\n // allow our rnw.tsx imports through\n !path.startsWith('react-native-web/dist/cjs/exports'.replace(/\\//g, sep))\n ) {\n return rnw\n }\n if (path === '@tamagui/core' || path === '@tamagui/web') {\n return core\n }\n try {\n const out = og.apply(this, arguments)\n // only for studio disable for now\n // if (!nameToPaths[path]) {\n // if (out && typeof out === 'object') {\n // for (const key in out) {\n // try {\n // const conf = out[key]?.staticConfig as StaticConfig\n // if (conf) {\n // if (conf.componentName) {\n // nameToPaths[conf.componentName] ??= new Set()\n // const fullName = path.startsWith('.')\n // ? join(`${this.path.replace(/dist(\\/cjs)?/, 'src')}`, path)\n // : path\n // nameToPaths[conf.componentName].add(fullName)\n // } else {\n // // console.log('no name component', path)\n // }\n // }\n // } catch {\n // // ok\n // }\n // }\n // }\n // }\n return out\n } catch (err: any) {\n /**\n * Allow errors to happen, we're just reading config and components but sometimes external modules cause problems\n * We can't fix every problem, so just swap them out with proxyWorm which is a sort of generic object that can be read.\n */\n\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.error(\n `Tamagui failed loading the pre-built tamagui.config.ts\n \n ${err.message}\n ${err.stack}\n \n You can see if it loads in the node repl:\n \n require(\"./${relative(process.cwd(), path)}\").default\n \n `\n )\n }\n\n return proxyWorm\n }\n }\n\n return Module.prototype.require\n}\n\nexport function unregisterRequire() {\n Module.prototype.require = og\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA8B;AAI9B,MAAM,cAAc,CAAC;AACrB,MAAM,SAAS,QAAQ,QAAQ;AAC/B,MAAM,KAAK,OAAO,UAAU;AAC5B,WAAW,WAAW,IAAI;AAEnB,MAAM,iBAAiB,MAAM;AAE7B,SAAS,kBAAkB;AAChC,MAAI,OAAO,UAAU,YAAY,WAAW,WAAW,GAAG;AAExD,YAAQ,KAAK,wCAAwC;AACrD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,YAAY,QAAQ,qBAAqB;AAE/C,QAAM,MAAM,QAAQ,kBAAkB;AACtC,QAAM,OAAO,QAAQ,oBAAoB;AAEzC,SAAO,UAAU,UAAU,SAAU,MAAc;AAvBrD;AAwBI,QAAI,iDAAiD,KAAK,IAAI,GAAG;AAC/D,aAAO,CAAC;AAAA,IACV;AACA,QACE,SAAS,0BACT,KAAK,WAAW,yBAAyB,KACzC,SAAS,0BACT,SAAS,sBACT;AACA,aAAO;AAAA,IACT;AACA,QACE,KAAK,WAAW,cAAc;AAAA,IAE9B,CAAC,KAAK,WAAW,oCAAoC,QAAQ,OAAO,eAAG,CAAC,GACxE;AACA,aAAO;AAAA,IACT;AACA,QAAI,SAAS,mBAAmB,SAAS,gBAAgB;AACvD,aAAO;AAAA,IACT;AACA,QAAI;AACF,YAAM,MAAM,GAAG,MAAM,MAAM,SAAS;AAwBpC,aAAO;AAAA,IACT,SAAS,KAAP;AAMA,WAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,gBAAQ;AAAA,UACN;AAAA;AAAA,IAEN,IAAI;AAAA,IACJ,IAAI;AAAA;AAAA;AAAA;AAAA,qBAIS,sBAAS,QAAQ,IAAI,GAAG,IAAI;AAAA;AAAA;AAAA,QAGrC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,OAAO,UAAU;AAC1B;AAEO,SAAS,oBAAoB;AAClC,SAAO,UAAU,UAAU;AAC7B;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/types.ts"],
4
- "sourcesContent": ["import type { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { PseudoStyles, StaticConfig } from '@tamagui/core-node'\nimport type { StyleObject } from '@tamagui/helpers'\nimport type { TamaguiOptions } from '@tamagui/types'\nimport type { ViewStyle } from 'react-native'\nimport { LoadedComponents } from './extractor/bundleConfig'\n\n\n// @ts-ignore\nexport type { TamaguiOptions } from '@tamagui/types'\n\nexport type { StyleObject } from '@tamagui/helpers'\n\nexport type ClassNameObject = t.StringLiteral | t.Expression\n\nexport interface CacheObject {\n [key: string]: any\n}\n\nexport interface LogOptions {\n clear?: boolean\n timestamp?: boolean\n error?: Error | null\n}\n\nexport interface Logger {\n info(msg: string, options?: LogOptions): void\n warn(msg: string, options?: LogOptions): void\n error(msg: string, options?: LogOptions): void\n}\n\nexport type ExtractorOptions = {\n logger?: Logger\n}\n\nexport type ExtractedAttrAttr = {\n type: 'attr'\n value: t.JSXAttribute | t.JSXSpreadAttribute\n}\n\nexport type ExtractedAttrStyle = {\n type: 'style'\n value: ViewStyle & PseudoStyles\n attr?: t.JSXAttribute | t.JSXSpreadAttribute\n name?: string\n}\n\nexport type ExtractedAttr =\n | ExtractedAttrAttr\n | { type: 'ternary'; value: Ternary }\n | ExtractedAttrStyle\n\nexport type ExtractTagProps = {\n parserProps: TamaguiOptionsWithFileInfo\n attrs: ExtractedAttr[]\n node: t.JSXOpeningElement\n attemptEval: (exprNode: t.Node, evalFn?: ((node: t.Node) => any) | undefined) => any\n jsxPath: NodePath<t.JSXElement>\n programPath: NodePath<t.Program>\n originalNodeName: string\n lineNumbers: string\n filePath: string\n isFlattened: boolean\n completeProps: Record<string, any>\n staticConfig: StaticConfig\n}\n\nexport type TamaguiOptionsWithFileInfo = TamaguiOptions & {\n sourcePath?: string\n allLoadedComponents: LoadedComponents[]\n}\n\nexport type ExtractorParseProps = Omit<\n TamaguiOptionsWithFileInfo,\n 'allLoadedComponents'\n> & {\n target: 'native' | 'html'\n shouldPrintDebug?: boolean | 'verbose'\n onExtractTag: (props: ExtractTagProps) => void\n getFlattenedNode?: (props: { isTextView: boolean; tag: string }) => string\n extractStyledDefinitions?: boolean\n // identifer, rule\n onStyleRule?: (identifier: string, rules: string[]) => void\n}\n\nexport interface Ternary {\n test: t.Expression\n // shorthand props that don't use hooks\n inlineMediaQuery?: string\n remove: Function\n consequent: Object | null\n alternate: Object | null\n}\n\nexport type ClassNameToStyleObj = {\n [key: string]: StyleObject\n}\n\nexport interface PluginContext {\n write: (path: string, rules: { [key: string]: string }) => any\n}"],
5
4
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/webpackPlugin.ts"],
4
- "sourcesContent": ["const pluginName = 'TamaguiWebpackPlugin'\n\nexport class TamaguiWebpackPlugin {\n apply(compiler) {\n compiler.hooks.run.tap(pluginName, (compilation) => {\n // console.log('The webpack build process is starting!');\n })\n }\n}\n"],
5
4
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,aAAa;AAEZ,MAAM,qBAAqB;AAAA,EAChC,MAAM,UAAU;AACd,aAAS,MAAM,IAAI,IAAI,YAAY,CAAC,gBAAgB;AAAA,IAEpD,CAAC;AAAA,EACH;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.ts"],
4
- "sourcesContent": ["import findCacheDir from 'find-cache-dir'\n\nexport const CSS_FILE_NAME = '__snack.css'\n\n// ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS\nexport const MEDIA_SEP = '_'\n\n// ensure cache dir\nexport const cacheDir = findCacheDir({ name: 'tamagui', create: true })\n\nexport const FAILED_EVAL = Symbol('failed_style_eval')\n\nexport const SHOULD_DEBUG = process.env.DEBUG === '*' || process.env.DEBUG?.startsWith('tamagui')\n"],
5
4
  "mappings": "AAAA;AAAA,OAAO,kBAAkB;AAElB,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAGlB,MAAM,WAAW,aAAa,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAE/D,MAAM,cAAc,OAAO,mBAAmB;AAE9C,MAAM,eAAe,QAAQ,IAAI,UAAU,SAAO,aAAQ,IAAI,UAAZ,mBAAmB,WAAW;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.ts"],
4
- "sourcesContent": ["import findCacheDir from 'find-cache-dir'\n\nexport const CSS_FILE_NAME = '__snack.css'\n\n// ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS\nexport const MEDIA_SEP = '_'\n\n// ensure cache dir\nexport const cacheDir = findCacheDir({ name: 'tamagui', create: true })\n\nexport const FAILED_EVAL = Symbol('failed_style_eval')\n\nexport const SHOULD_DEBUG = process.env.DEBUG === '*' || process.env.DEBUG?.startsWith('tamagui')\n"],
5
4
  "mappings": "AAAA;AAAA,OAAO,kBAAkB;AAElB,MAAM,gBAAgB;AAGtB,MAAM,YAAY;AAGlB,MAAM,WAAW,aAAa,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAE/D,MAAM,cAAc,OAAO,mBAAmB;AAE9C,MAAM,eAAe,QAAQ,IAAI,UAAU,SAAO,aAAQ,IAAI,UAAZ,mBAAmB,WAAW;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/accessSafe.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\n// accessSafe wraps memberExpressions in object/null checks\n// TODO: inject this as a function? this gets pretty repetitive\nexport function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {\n return t.logicalExpression(\n '&&',\n t.logicalExpression(\n '&&',\n // typeof obj === 'object\n t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),\n // obj !== null\n t.binaryExpression('!==', obj, t.nullLiteral())\n ),\n // obj.member\n t.memberExpression(obj, t.identifier(member), false)\n )\n}\n"],
5
4
  "mappings": "AAAA,YAAY,OAAO;AAIZ,SAAS,WAAW,KAAmB,QAAqC;AACjF,SAAO,EAAE;AAAA,IACP;AAAA,IACA,EAAE;AAAA,MACA;AAAA;AAAA,MAEA,EAAE,iBAAiB,OAAO,EAAE,gBAAgB,UAAU,GAAG,GAAG,EAAE,cAAc,QAAQ,CAAC;AAAA;AAAA,MAErF,EAAE,iBAAiB,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,IAChD;AAAA;AAAA,IAEA,EAAE,iBAAiB,KAAK,EAAE,WAAW,MAAM,GAAG,KAAK;AAAA,EACrD;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/accessSafe.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\n// accessSafe wraps memberExpressions in object/null checks\n// TODO: inject this as a function? this gets pretty repetitive\nexport function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {\n return t.logicalExpression(\n '&&',\n t.logicalExpression(\n '&&',\n // typeof obj === 'object\n t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),\n // obj !== null\n t.binaryExpression('!==', obj, t.nullLiteral())\n ),\n // obj.member\n t.memberExpression(obj, t.identifier(member), false)\n )\n}\n"],
5
4
  "mappings": "AAAA,YAAY,OAAO;AAIZ,SAAS,WAAW,KAAmB,QAAqC;AACjF,SAAO,EAAE;AAAA,IACP;AAAA,IACA,EAAE;AAAA,MACA;AAAA;AAAA,MAEA,EAAE,iBAAiB,OAAO,EAAE,gBAAgB,UAAU,GAAG,GAAG,EAAE,cAAc,QAAQ,CAAC;AAAA;AAAA,MAErF,EAAE,iBAAiB,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,IAChD;AAAA;AAAA,IAEA,EAAE,iBAAiB,KAAK,EAAE,WAAW,MAAM,GAAG,KAAK;AAAA,EACrD;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/babelParse.ts"],
4
- "sourcesContent": ["import * as babelParser from '@babel/parser'\nimport * as t from '@babel/types'\n\nconst plugins: babelParser.ParserPlugin[] = [\n 'asyncGenerators',\n 'classProperties',\n 'dynamicImport',\n 'functionBind',\n 'jsx',\n 'numericSeparator',\n 'objectRestSpread',\n 'optionalCatchBinding',\n 'decorators-legacy',\n 'typescript',\n 'optionalChaining',\n 'nullishCoalescingOperator',\n]\n\nexport const parserOptions: babelParser.ParserOptions = Object.freeze({\n plugins,\n sourceType: 'module',\n})\n\nconst parser = babelParser.parse.bind(babelParser)\n\nexport function babelParse(code: string | Buffer): t.File {\n try {\n return parser(code.toString(), parserOptions) as any\n } catch (err) {\n throw new Error(`Error parsing babel: ${err} in code`)\n }\n}\n"],
5
4
  "mappings": "AAAA,YAAY,iBAAiB;AAG7B,MAAM,UAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,gBAA2C,OAAO,OAAO;AAAA,EACpE;AAAA,EACA,YAAY;AACd,CAAC;AAED,MAAM,SAAS,YAAY,MAAM,KAAK,WAAW;AAE1C,SAAS,WAAW,MAA+B;AACxD,MAAI;AACF,WAAO,OAAO,KAAK,SAAS,GAAG,aAAa;AAAA,EAC9C,SAAS,KAAP;AACA,UAAM,IAAI,MAAM,wBAAwB,aAAa;AAAA,EACvD;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/babelParse.ts"],
4
- "sourcesContent": ["import * as babelParser from '@babel/parser'\nimport * as t from '@babel/types'\n\nconst plugins: babelParser.ParserPlugin[] = [\n 'asyncGenerators',\n 'classProperties',\n 'dynamicImport',\n 'functionBind',\n 'jsx',\n 'numericSeparator',\n 'objectRestSpread',\n 'optionalCatchBinding',\n 'decorators-legacy',\n 'typescript',\n 'optionalChaining',\n 'nullishCoalescingOperator',\n]\n\nexport const parserOptions: babelParser.ParserOptions = Object.freeze({\n plugins,\n sourceType: 'module',\n})\n\nconst parser = babelParser.parse.bind(babelParser)\n\nexport function babelParse(code: string | Buffer): t.File {\n try {\n return parser(code.toString(), parserOptions) as any\n } catch (err) {\n throw new Error(`Error parsing babel: ${err} in code`)\n }\n}\n"],
5
4
  "mappings": "AAAA,YAAY,iBAAiB;AAG7B,MAAM,UAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,gBAA2C,OAAO,OAAO;AAAA,EACpE;AAAA,EACA,YAAY;AACd,CAAC;AAED,MAAM,SAAS,YAAY,MAAM,KAAK,WAAW;AAE1C,SAAS,WAAW,MAA+B;AACxD,MAAI;AACF,WAAO,OAAO,KAAK,SAAS,GAAG,aAAa;AAAA,EAC9C,SAAS,KAAP;AACA,UAAM,IAAI,MAAM,wBAAwB,aAAa;AAAA,EACvD;AACF;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/buildClassName.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\nimport type { ClassNameObject } from '../types.js'\n\ntype Builder = (\n objects: ClassNameObject[],\n extras?: string\n) => t.Expression | t.StringLiteral | null\n\nexport const buildClassName: Builder = (objectsIn, extras = '') => {\n let objects = buildClassNameLogic(objectsIn)\n if (!objects) return null\n if (t.isStringLiteral(objects)) {\n // objects.value = objects.value\n objects.value = `${extras} ${objects.value}`\n } else {\n objects = t.binaryExpression('+', t.stringLiteral(extras), objects)\n }\n return objects\n}\n\nexport const buildClassNameLogic: Builder = (objects) => {\n return objects.reduce<t.Expression | null>((acc, val) => {\n if (acc == null) {\n if (\n // pass conditional expressions through\n t.isConditionalExpression(val) ||\n // pass non-null literals through\n t.isStringLiteral(val) ||\n t.isNumericLiteral(val)\n ) {\n return val\n }\n return t.logicalExpression('||', val, t.stringLiteral(''))\n }\n\n let inner: t.Expression\n if (t.isStringLiteral(val)) {\n if (t.isStringLiteral(acc)) {\n // join adjacent string literals\n return t.stringLiteral(`${acc.value} ${val.value}`)\n }\n inner = t.stringLiteral(` ${val.value}`)\n } else if (t.isLiteral(val)) {\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression('+', t.stringLiteral(`${acc.value} `), val)\n }\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isIdentifier(val) || t.isMemberExpression(val)) {\n // identifiers and member expressions make for reasonable ternaries\n inner = t.conditionalExpression(\n val,\n t.binaryExpression('+', t.stringLiteral(' '), val),\n t.stringLiteral('')\n )\n } else {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression(\n '+',\n t.stringLiteral(`${acc.value} `),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n // use a logical expression for more complex prop values\n inner = t.binaryExpression(\n '+',\n t.stringLiteral(' '),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n\n return t.binaryExpression('+', acc, inner)\n }, null)\n}\n"],
5
4
  "mappings": "AAAA,YAAY,OAAO;AASZ,MAAM,iBAA0B,CAAC,WAAW,SAAS,OAAO;AACjE,MAAI,UAAU,oBAAoB,SAAS;AAC3C,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,EAAE,gBAAgB,OAAO,GAAG;AAE9B,YAAQ,QAAQ,GAAG,UAAU,QAAQ;AAAA,EACvC,OAAO;AACL,cAAU,EAAE,iBAAiB,KAAK,EAAE,cAAc,MAAM,GAAG,OAAO;AAAA,EACpE;AACA,SAAO;AACT;AAEO,MAAM,sBAA+B,CAAC,YAAY;AACvD,SAAO,QAAQ,OAA4B,CAAC,KAAK,QAAQ;AACvD,QAAI,OAAO,MAAM;AACf;AAAA;AAAA,QAEE,EAAE,wBAAwB,GAAG;AAAA,QAE7B,EAAE,gBAAgB,GAAG,KACrB,EAAE,iBAAiB,GAAG;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AACA,aAAO,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,IAC3D;AAEA,QAAI;AACJ,QAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAE1B,eAAO,EAAE,cAAc,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,MACpD;AACA,cAAQ,EAAE,cAAc,IAAI,IAAI,OAAO;AAAA,IACzC,WAAW,EAAE,UAAU,GAAG,GAAG;AAC3B,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,wBAAwB,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AACtE,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,IAAI,QAAQ,GAAG,GAAG;AAAA,MACtE;AACA,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,aAAa,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AAE3D,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,QACjD,EAAE,cAAc,EAAE;AAAA,MACpB;AAAA,IACF,OAAO;AACL,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE;AAAA,UACP;AAAA,UACA,EAAE,cAAc,GAAG,IAAI,QAAQ;AAAA,UAC/B,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,cAAc,GAAG;AAAA,QACnB,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,WAAO,EAAE,iBAAiB,KAAK,KAAK,KAAK;AAAA,EAC3C,GAAG,IAAI;AACT;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/buildClassName.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\nimport type { ClassNameObject } from '../types.js'\n\ntype Builder = (\n objects: ClassNameObject[],\n extras?: string\n) => t.Expression | t.StringLiteral | null\n\nexport const buildClassName: Builder = (objectsIn, extras = '') => {\n let objects = buildClassNameLogic(objectsIn)\n if (!objects) return null\n if (t.isStringLiteral(objects)) {\n // objects.value = objects.value\n objects.value = `${extras} ${objects.value}`\n } else {\n objects = t.binaryExpression('+', t.stringLiteral(extras), objects)\n }\n return objects\n}\n\nexport const buildClassNameLogic: Builder = (objects) => {\n return objects.reduce<t.Expression | null>((acc, val) => {\n if (acc == null) {\n if (\n // pass conditional expressions through\n t.isConditionalExpression(val) ||\n // pass non-null literals through\n t.isStringLiteral(val) ||\n t.isNumericLiteral(val)\n ) {\n return val\n }\n return t.logicalExpression('||', val, t.stringLiteral(''))\n }\n\n let inner: t.Expression\n if (t.isStringLiteral(val)) {\n if (t.isStringLiteral(acc)) {\n // join adjacent string literals\n return t.stringLiteral(`${acc.value} ${val.value}`)\n }\n inner = t.stringLiteral(` ${val.value}`)\n } else if (t.isLiteral(val)) {\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression('+', t.stringLiteral(`${acc.value} `), val)\n }\n inner = t.binaryExpression('+', t.stringLiteral(' '), val)\n } else if (t.isIdentifier(val) || t.isMemberExpression(val)) {\n // identifiers and member expressions make for reasonable ternaries\n inner = t.conditionalExpression(\n val,\n t.binaryExpression('+', t.stringLiteral(' '), val),\n t.stringLiteral('')\n )\n } else {\n if (t.isStringLiteral(acc)) {\n return t.binaryExpression(\n '+',\n t.stringLiteral(`${acc.value} `),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n // use a logical expression for more complex prop values\n inner = t.binaryExpression(\n '+',\n t.stringLiteral(' '),\n t.logicalExpression('||', val, t.stringLiteral(''))\n )\n }\n\n return t.binaryExpression('+', acc, inner)\n }, null)\n}\n"],
5
4
  "mappings": "AAAA,YAAY,OAAO;AASZ,MAAM,iBAA0B,CAAC,WAAW,SAAS,OAAO;AACjE,MAAI,UAAU,oBAAoB,SAAS;AAC3C,MAAI,CAAC;AAAS,WAAO;AACrB,MAAI,EAAE,gBAAgB,OAAO,GAAG;AAE9B,YAAQ,QAAQ,GAAG,UAAU,QAAQ;AAAA,EACvC,OAAO;AACL,cAAU,EAAE,iBAAiB,KAAK,EAAE,cAAc,MAAM,GAAG,OAAO;AAAA,EACpE;AACA,SAAO;AACT;AAEO,MAAM,sBAA+B,CAAC,YAAY;AACvD,SAAO,QAAQ,OAA4B,CAAC,KAAK,QAAQ;AACvD,QAAI,OAAO,MAAM;AACf;AAAA;AAAA,QAEE,EAAE,wBAAwB,GAAG;AAAA,QAE7B,EAAE,gBAAgB,GAAG,KACrB,EAAE,iBAAiB,GAAG;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AACA,aAAO,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,IAC3D;AAEA,QAAI;AACJ,QAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAE1B,eAAO,EAAE,cAAc,GAAG,IAAI,SAAS,IAAI,OAAO;AAAA,MACpD;AACA,cAAQ,EAAE,cAAc,IAAI,IAAI,OAAO;AAAA,IACzC,WAAW,EAAE,UAAU,GAAG,GAAG;AAC3B,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,wBAAwB,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AACtE,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,IAAI,QAAQ,GAAG,GAAG;AAAA,MACtE;AACA,cAAQ,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,IAC3D,WAAW,EAAE,aAAa,GAAG,KAAK,EAAE,mBAAmB,GAAG,GAAG;AAE3D,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,iBAAiB,KAAK,EAAE,cAAc,GAAG,GAAG,GAAG;AAAA,QACjD,EAAE,cAAc,EAAE;AAAA,MACpB;AAAA,IACF,OAAO;AACL,UAAI,EAAE,gBAAgB,GAAG,GAAG;AAC1B,eAAO,EAAE;AAAA,UACP;AAAA,UACA,EAAE,cAAc,GAAG,IAAI,QAAQ;AAAA,UAC/B,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,cAAQ,EAAE;AAAA,QACR;AAAA,QACA,EAAE,cAAc,GAAG;AAAA,QACnB,EAAE,kBAAkB,MAAM,KAAK,EAAE,cAAc,EAAE,CAAC;AAAA,MACpD;AAAA,IACF;AAEA,WAAO,EAAE,iBAAiB,KAAK,KAAK,KAAK;AAAA,EAC3C,GAAG,IAAI;AACT;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/bundle.ts"],
4
- "sourcesContent": ["import { basename, dirname, join } from 'path'\n\nimport esbuild from 'esbuild'\nimport { pathExists, stat, writeFile } from 'fs-extra'\n\nimport { resolveWebOrNativeSpecificEntry } from './loadTamagui.js'\n\n/**\n * For internal loading of new files\n */\n\ntype Props = Omit<Partial<esbuild.BuildOptions>, 'entryPoints'> & {\n outfile: string\n entryPoints: string[]\n resolvePlatformSpecificEntries?: boolean\n}\n\nfunction getESBuildConfig(\n { entryPoints, resolvePlatformSpecificEntries, ...options }: Props,\n aliases?: Record<string, string>\n) {\n const alias = require('@tamagui/core-node').aliasPlugin\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Building`, entryPoints)\n }\n const tsconfig = join(__dirname, '..', '..', '..', 'tamagui.tsconfig.json')\n\n const resolvedEntryPoints = !resolvePlatformSpecificEntries\n ? entryPoints\n : entryPoints.map(resolveWebOrNativeSpecificEntry)\n\n const res: esbuild.BuildOptions = {\n bundle: true,\n entryPoints: resolvedEntryPoints,\n format: 'cjs',\n target: 'node18',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n keepNames: true,\n platform: 'node',\n tsconfig,\n loader: {\n '.js': 'jsx',\n },\n logLevel: 'warning',\n plugins: [\n {\n name: 'external',\n setup(build) {\n build.onResolve({ filter: /@tamagui\\/core/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /@tamagui\\/web/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /^(react-native|react-native\\/.*)$/ }, (args) => {\n return {\n path: 'react-native-web-lite',\n external: true,\n }\n })\n },\n },\n alias({\n ...aliases,\n }),\n ],\n ...options,\n }\n\n return res\n}\n\nexport async function bundle(props: Props, aliases?: Record<string, string>) {\n await asyncLock(props)\n return esbuild.build(getESBuildConfig(props, aliases))\n}\n\nexport function bundleSync(props: Props, aliases?: Record<string, string>) {\n return esbuild.buildSync(getESBuildConfig(props, aliases))\n}\n\n// until i do fancier things w plugins:\nasync function asyncLock(props: Props) {\n const lockFile = join(dirname(props.outfile), basename(props.outfile, '.lock'))\n const lockStat = await stat(lockFile).catch(() => {\n /* ok */\n })\n const lockedMsAgo = !lockStat\n ? Infinity\n : new Date().getTime() - new Date(lockStat.mtime).getTime()\n if (lockedMsAgo < 500) {\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Waiting for existing build`, props.entryPoints)\n }\n let tries = 5\n while (tries--) {\n if (await pathExists(props.outfile)) {\n return\n } else {\n await new Promise((res) => setTimeout(res, 50))\n }\n }\n }\n void writeFile(lockFile, '')\n}\n"],
5
4
  "mappings": "AAAA,SAAS,UAAU,SAAS,YAAY;AAExC,OAAO,aAAa;AACpB,SAAS,YAAY,MAAM,iBAAiB;AAE5C,SAAS,uCAAuC;AAYhD,SAAS,iBACP,EAAE,aAAa,gCAAgC,GAAG,QAAQ,GAC1D,SACA;AApBF;AAqBE,QAAM,QAAQ,QAAQ,oBAAoB,EAAE;AAC5C,OAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,YAAQ,IAAI,YAAY,WAAW;AAAA,EACrC;AACA,QAAM,WAAW,KAAK,WAAW,MAAM,MAAM,MAAM,uBAAuB;AAE1E,QAAM,sBAAsB,CAAC,iCACzB,cACA,YAAY,IAAI,+BAA+B;AAEnD,QAAM,MAA4B;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,OAAO;AACX,gBAAM,UAAU,EAAE,QAAQ,iBAAiB,GAAG,CAAC,SAAS;AACtD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,gBAAgB,GAAG,CAAC,SAAS;AACrD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,oCAAoC,GAAG,CAAC,SAAS;AACzE,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAO;AACT;AAEA,eAAsB,OAAO,OAAc,SAAkC;AAC3E,QAAM,UAAU,KAAK;AACrB,SAAO,QAAQ,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACvD;AAEO,SAAS,WAAW,OAAc,SAAkC;AACzE,SAAO,QAAQ,UAAU,iBAAiB,OAAO,OAAO,CAAC;AAC3D;AAGA,eAAe,UAAU,OAAc;AA7FvC;AA8FE,QAAM,WAAW,KAAK,QAAQ,MAAM,OAAO,GAAG,SAAS,MAAM,SAAS,OAAO,CAAC;AAC9E,QAAM,WAAW,MAAM,KAAK,QAAQ,EAAE,MAAM,MAAM;AAAA,EAElD,CAAC;AACD,QAAM,cAAc,CAAC,WACjB,YACA,oBAAI,KAAK,GAAE,QAAQ,IAAI,IAAI,KAAK,SAAS,KAAK,EAAE,QAAQ;AAC5D,MAAI,cAAc,KAAK;AACrB,SAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,cAAQ,IAAI,8BAA8B,MAAM,WAAW;AAAA,IAC7D;AACA,QAAI,QAAQ;AACZ,WAAO,SAAS;AACd,UAAI,MAAM,WAAW,MAAM,OAAO,GAAG;AACnC;AAAA,MACF,OAAO;AACL,cAAM,IAAI,QAAQ,CAAC,QAAQ,WAAW,KAAK,EAAE,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,OAAK,UAAU,UAAU,EAAE;AAC7B;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/bundle.ts"],
4
- "sourcesContent": ["import { basename, dirname, join } from 'path'\n\nimport esbuild from 'esbuild'\nimport { pathExists, stat, writeFile } from 'fs-extra'\n\nimport { resolveWebOrNativeSpecificEntry } from './loadTamagui.js'\n\n/**\n * For internal loading of new files\n */\n\ntype Props = Omit<Partial<esbuild.BuildOptions>, 'entryPoints'> & {\n outfile: string\n entryPoints: string[]\n resolvePlatformSpecificEntries?: boolean\n}\n\nfunction getESBuildConfig(\n { entryPoints, resolvePlatformSpecificEntries, ...options }: Props,\n aliases?: Record<string, string>\n) {\n const alias = require('@tamagui/core-node').aliasPlugin\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Building`, entryPoints)\n }\n const tsconfig = join(__dirname, '..', '..', '..', 'tamagui.tsconfig.json')\n\n const resolvedEntryPoints = !resolvePlatformSpecificEntries\n ? entryPoints\n : entryPoints.map(resolveWebOrNativeSpecificEntry)\n\n const res: esbuild.BuildOptions = {\n bundle: true,\n entryPoints: resolvedEntryPoints,\n format: 'cjs',\n target: 'node18',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n keepNames: true,\n platform: 'node',\n tsconfig,\n loader: {\n '.js': 'jsx',\n },\n logLevel: 'warning',\n plugins: [\n {\n name: 'external',\n setup(build) {\n build.onResolve({ filter: /@tamagui\\/core/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /@tamagui\\/web/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /^(react-native|react-native\\/.*)$/ }, (args) => {\n return {\n path: 'react-native-web-lite',\n external: true,\n }\n })\n },\n },\n alias({\n ...aliases,\n }),\n ],\n ...options,\n }\n\n return res\n}\n\nexport async function bundle(props: Props, aliases?: Record<string, string>) {\n await asyncLock(props)\n return esbuild.build(getESBuildConfig(props, aliases))\n}\n\nexport function bundleSync(props: Props, aliases?: Record<string, string>) {\n return esbuild.buildSync(getESBuildConfig(props, aliases))\n}\n\n// until i do fancier things w plugins:\nasync function asyncLock(props: Props) {\n const lockFile = join(dirname(props.outfile), basename(props.outfile, '.lock'))\n const lockStat = await stat(lockFile).catch(() => {\n /* ok */\n })\n const lockedMsAgo = !lockStat\n ? Infinity\n : new Date().getTime() - new Date(lockStat.mtime).getTime()\n if (lockedMsAgo < 500) {\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(`Waiting for existing build`, props.entryPoints)\n }\n let tries = 5\n while (tries--) {\n if (await pathExists(props.outfile)) {\n return\n } else {\n await new Promise((res) => setTimeout(res, 50))\n }\n }\n }\n void writeFile(lockFile, '')\n}\n"],
5
4
  "mappings": "AAAA,SAAS,UAAU,SAAS,YAAY;AAExC,OAAO,aAAa;AACpB,SAAS,YAAY,MAAM,iBAAiB;AAE5C,SAAS,uCAAuC;AAYhD,SAAS,iBACP,EAAE,aAAa,gCAAgC,GAAG,QAAQ,GAC1D,SACA;AApBF;AAqBE,QAAM,QAAQ,QAAQ,oBAAoB,EAAE;AAC5C,OAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,YAAQ,IAAI,YAAY,WAAW;AAAA,EACrC;AACA,QAAM,WAAW,KAAK,WAAW,MAAM,MAAM,MAAM,uBAAuB;AAE1E,QAAM,sBAAsB,CAAC,iCACzB,cACA,YAAY,IAAI,+BAA+B;AAEnD,QAAM,MAA4B;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA,QAAQ;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,OAAO;AACX,gBAAM,UAAU,EAAE,QAAQ,iBAAiB,GAAG,CAAC,SAAS;AACtD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,gBAAgB,GAAG,CAAC,SAAS;AACrD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,oCAAoC,GAAG,CAAC,SAAS;AACzE,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAO;AACT;AAEA,eAAsB,OAAO,OAAc,SAAkC;AAC3E,QAAM,UAAU,KAAK;AACrB,SAAO,QAAQ,MAAM,iBAAiB,OAAO,OAAO,CAAC;AACvD;AAEO,SAAS,WAAW,OAAc,SAAkC;AACzE,SAAO,QAAQ,UAAU,iBAAiB,OAAO,OAAO,CAAC;AAC3D;AAGA,eAAe,UAAU,OAAc;AA7FvC;AA8FE,QAAM,WAAW,KAAK,QAAQ,MAAM,OAAO,GAAG,SAAS,MAAM,SAAS,OAAO,CAAC;AAC9E,QAAM,WAAW,MAAM,KAAK,QAAQ,EAAE,MAAM,MAAM;AAAA,EAElD,CAAC;AACD,QAAM,cAAc,CAAC,WACjB,YACA,oBAAI,KAAK,GAAE,QAAQ,IAAI,IAAI,KAAK,SAAS,KAAK,EAAE,QAAQ;AAC5D,MAAI,cAAc,KAAK;AACrB,SAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAE5C,cAAQ,IAAI,8BAA8B,MAAM,WAAW;AAAA,IAC7D;AACA,QAAI,QAAQ;AACZ,WAAO,SAAS;AACd,UAAI,MAAM,WAAW,MAAM,OAAO,GAAG;AACnC;AAAA,MACF,OAAO;AACL,cAAM,IAAI,QAAQ,CAAC,QAAQ,WAAW,KAAK,EAAE,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,OAAK,UAAU,UAAU,EAAE;AAC7B;",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/bundleConfig.ts"],
4
- "sourcesContent": ["import { readFileSync } from 'fs'\nimport path, { basename, dirname, extname, join, relative, sep } from 'path'\n\nimport generate from '@babel/generator'\nimport traverse from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { Color, colorLog } from '@tamagui/cli-color'\nimport type { StaticConfigParsed, TamaguiInternalConfig } from '@tamagui/web'\nimport esbuild from 'esbuild'\nimport { ensureDir, removeSync, writeFileSync } from 'fs-extra'\n\nimport { babelParse } from './babelParse.js'\nimport { bundle } from './bundle.js'\n\nlet loggedOutputInfo = false\n\ntype NameToPaths = {\n [key: string]: Set<string>\n}\n\nexport type LoadedComponents = {\n moduleName: string\n nameToInfo: Record<\n string,\n {\n staticConfig: StaticConfigParsed\n }\n >\n}\n\nexport type TamaguiProjectInfo = {\n components: LoadedComponents[]\n tamaguiConfig: TamaguiInternalConfig\n nameToPaths: NameToPaths\n}\n\nexport type Props = {\n components: string[]\n config?: string\n forceExports?: boolean\n}\n\nconst external = [\n '@tamagui/core',\n '@tamagui/web',\n '@tamagui/core-node',\n 'react',\n 'react-dom',\n 'react-native-svg',\n]\n\nexport const esbuildOptions = {\n loader: 'tsx',\n target: 'es2018',\n format: 'cjs',\n jsx: 'transform',\n platform: 'node',\n} as const\n\nexport async function bundleConfig(props: Props) {\n const configEntry = props.config ? join(process.cwd(), props.config) : ''\n const tmpDir = join(process.cwd(), '.tamagui')\n const configOutPath = join(tmpDir, `tamagui.config.cjs`)\n const baseComponents = props.components.filter((x) => x !== '@tamagui/core')\n const componentOutPaths = baseComponents.map((componentModule) =>\n join(\n tmpDir,\n `${componentModule\n .split(sep)\n .join('-')\n .replace(/[^a-z0-9]+/gi, '')}-components.config.cjs`\n )\n )\n\n if (\n process.env.NODE_ENV === 'development' &&\n process.env.DEBUG?.startsWith('tamagui')\n ) {\n console.log(`Building config entry`, configEntry)\n }\n\n // build them to node-compat versions\n try {\n await ensureDir(tmpDir)\n } catch {\n //\n }\n\n if (!loggedOutputInfo) {\n loggedOutputInfo = true\n colorLog(\n Color.FgYellow,\n `\n Tamagui built config and components:`\n )\n colorLog(\n Color.Dim,\n `\n Config .${sep}${relative(process.cwd(), configOutPath)}\n Components ${[\n ...componentOutPaths.map((p) => `.${sep}${relative(process.cwd(), p)}`),\n ].join('\\n ')}\n `\n )\n }\n\n await Promise.all([\n props.config\n ? bundle({\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return bundle({\n entryPoints: [componentModule],\n resolvePlatformSpecificEntries: true,\n external,\n outfile: componentOutPaths[i],\n })\n }),\n ])\n\n // get around node.js's module cache to get the new config...\n delete require.cache[path.resolve(configOutPath)]\n\n const out = require(configOutPath)\n\n const config = out.default || out\n if (!config) {\n throw new Error(`No config: ${config}`)\n }\n\n let components = loadComponents({\n ...props,\n components: componentOutPaths,\n })\n\n if (!components) {\n throw new Error(`No components found: ${componentOutPaths.join(', ')}`)\n }\n\n // map from built back to original module names\n for (const component of components) {\n component.moduleName = baseComponents[componentOutPaths.indexOf(component.moduleName)]\n\n // if (!component.moduleName) {\n // throw new Error(`Tamagui internal err`)\n // }\n }\n\n // always load core so we can optimize if directly importing\n const coreComponents = loadComponents({\n ...props,\n components: ['@tamagui/core-node'],\n })\n if (coreComponents) {\n coreComponents[0].moduleName = '@tamagui/core'\n components = [...components, ...coreComponents]\n }\n\n if (\n process.env.NODE_ENV === 'development' &&\n process.env.DEBUG?.startsWith('tamagui')\n ) {\n console.log('Loaded components', components)\n }\n return {\n components,\n nameToPaths: {},\n tamaguiConfig: config,\n }\n}\n\nexport function loadComponents(props: Props): null | LoadedComponents[] {\n const componentsModules = props.components\n const key = componentsModules.join('')\n if (cacheComponents[key]) {\n return cacheComponents[key]\n }\n try {\n const info: LoadedComponents[] = componentsModules.flatMap((name) => {\n const extension = extname(name)\n const isLocal = Boolean(extension)\n // during props.config pass we are passing in pre-bundled stuff\n const isDynamic = isLocal && !props.config\n\n if (isDynamic && !process.env.TAMAGUI_ENABLE_DYNAMIC_LOAD) {\n return []\n }\n\n const fileContents = isDynamic ? readFileSync(name, 'utf-8') : ''\n const loadModule = isDynamic\n ? join(dirname(name), `.tamagui-dynamic-eval-${basename(name)}.tsx`)\n : name\n let writtenContents = fileContents\n let didBabel = false\n\n function attemptLoad({ forceExports = false } = {}) {\n // need to write to tsx to enable reading it properly (:/ esbuild-register)\n if (isDynamic) {\n writtenContents = forceExports\n ? esbuildit(\n transformAddExports(babelParse(esbuildit(fileContents, 'modern')))\n )\n : esbuildit(fileContents)\n\n writeFileSync(loadModule, writtenContents)\n }\n\n if (process.env.DEBUG === 'tamagui') {\n console.log(`loadModule`, loadModule, require.resolve(loadModule))\n }\n\n return {\n moduleName: name,\n nameToInfo: getComponentStaticConfigByName(\n name,\n interopDefaultExport(require(loadModule))\n ),\n }\n }\n\n const dispose = () => {\n isDynamic && removeSync(loadModule)\n }\n\n try {\n const res = attemptLoad({\n forceExports: true,\n })\n didBabel = true\n return res\n } catch (err) {\n console.log('babel err', err, writtenContents)\n // ok\n writtenContents = fileContents\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Error parsing babel likely`, err)\n }\n } finally {\n dispose()\n }\n\n try {\n return attemptLoad({\n forceExports: false,\n })\n } catch (err) {\n if (!process.env.TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD) {\n console.log(`\n\nTamagui attempted but failed to dynamically load components in:\n ${name}\n\nThis will leave some styled() tags unoptimized.\nDisable this file (or dynamic loading altogether):\n\n disableExtractFoundComponents: ['${name}'] | true\n\nQuiet this warning with environment variable:\n \n TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD=1\n\n`)\n console.log(err)\n console.log(\n `At: ${loadModule}`,\n `\\ndidBabel: ${didBabel}`,\n `\\nIn:`,\n writtenContents,\n `\\nisDynamic: `,\n isDynamic\n )\n }\n return []\n } finally {\n dispose()\n }\n })\n cacheComponents[key] = info\n return info\n } catch (err: any) {\n console.log(`Tamagui error bundling components`, err.message, err.stack)\n return null\n }\n}\n\nconst esbuildit = (src: string, target?: 'modern') => {\n return esbuild.transformSync(src, {\n ...esbuildOptions,\n ...(target === 'modern' && {\n target: 'es2022',\n jsx: 'transform',\n loader: 'tsx',\n platform: 'neutral',\n format: 'esm',\n }),\n }).code\n}\n\nfunction getComponentStaticConfigByName(name: string, exported: any) {\n const components: Record<string, { staticConfig: StaticConfigParsed }> = {}\n try {\n if (!exported || typeof exported !== 'object' || Array.isArray(exported)) {\n throw new Error(`Invalid export from package ${name}: ${typeof exported}`)\n }\n for (const key in exported) {\n const found = getTamaguiComponent(key, exported[key])\n if (found) {\n // remove non-stringifyable\n const { Component, ...sc } = found.staticConfig\n components[key] = { staticConfig: sc }\n }\n }\n } catch (err) {\n if (process.env.TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD !== '1') {\n console.error(\n `Tamagui failed getting from ${name} (Disable error by setting environment variable TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD=1)`\n )\n console.error(err)\n }\n }\n return components\n}\n\nfunction getTamaguiComponent(\n name: string,\n Component: any\n): undefined | { staticConfig: StaticConfigParsed } {\n if (name[0].toUpperCase() !== name[0]) {\n return\n }\n const staticConfig = Component?.staticConfig as StaticConfigParsed | undefined\n if (staticConfig) {\n return Component\n }\n}\n\nfunction interopDefaultExport(mod: any) {\n return mod?.default ?? mod\n}\n\nconst cacheComponents: Record<string, LoadedComponents[]> = {}\n\nfunction transformAddExports(ast: t.File) {\n const usedNames = new Set<string>()\n\n // avoid clobbering\n // @ts-ignore\n traverse(ast, {\n ExportNamedDeclaration(nodePath) {\n if (nodePath.node.specifiers) {\n for (const spec of nodePath.node.specifiers) {\n usedNames.add(\n t.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value\n )\n }\n }\n },\n })\n\n // @ts-ignore\n traverse(ast, {\n VariableDeclaration(nodePath) {\n // top level only\n if (!t.isProgram(nodePath.parent)) return\n const decs = nodePath.node.declarations\n if (decs.length > 1) return\n const [dec] = decs\n if (!t.isIdentifier(dec.id)) return\n if (!dec.init) return\n if (usedNames.has(dec.id.name)) return\n usedNames.add(dec.id.name)\n nodePath.replaceWith(\n t.exportNamedDeclaration(t.variableDeclaration('let', [dec]), [\n t.exportSpecifier(t.identifier(dec.id.name), t.identifier(dec.id.name)),\n ])\n )\n },\n })\n\n // @ts-ignore\n return generate(ast as any, {\n concise: false,\n filename: 'test.tsx',\n retainLines: false,\n sourceMaps: false,\n }).code\n}\n"],
5
4
  "mappings": "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",
6
5
  "names": []
7
6
  }
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/bundleConfig.ts"],
4
- "sourcesContent": ["import { readFileSync } from 'fs'\nimport path, { basename, dirname, extname, join, relative, sep } from 'path'\n\nimport generate from '@babel/generator'\nimport traverse from '@babel/traverse'\nimport * as t from '@babel/types'\nimport { Color, colorLog } from '@tamagui/cli-color'\nimport type { StaticConfigParsed, TamaguiInternalConfig } from '@tamagui/web'\nimport esbuild from 'esbuild'\nimport { ensureDir, removeSync, writeFileSync } from 'fs-extra'\n\nimport { babelParse } from './babelParse.js'\nimport { bundle } from './bundle.js'\n\nlet loggedOutputInfo = false\n\ntype NameToPaths = {\n [key: string]: Set<string>\n}\n\nexport type LoadedComponents = {\n moduleName: string\n nameToInfo: Record<\n string,\n {\n staticConfig: StaticConfigParsed\n }\n >\n}\n\nexport type TamaguiProjectInfo = {\n components: LoadedComponents[]\n tamaguiConfig: TamaguiInternalConfig\n nameToPaths: NameToPaths\n}\n\nexport type Props = {\n components: string[]\n config?: string\n forceExports?: boolean\n}\n\nconst external = [\n '@tamagui/core',\n '@tamagui/web',\n '@tamagui/core-node',\n 'react',\n 'react-dom',\n 'react-native-svg',\n]\n\nexport const esbuildOptions = {\n loader: 'tsx',\n target: 'es2018',\n format: 'cjs',\n jsx: 'transform',\n platform: 'node',\n} as const\n\nexport async function bundleConfig(props: Props) {\n const configEntry = props.config ? join(process.cwd(), props.config) : ''\n const tmpDir = join(process.cwd(), '.tamagui')\n const configOutPath = join(tmpDir, `tamagui.config.cjs`)\n const baseComponents = props.components.filter((x) => x !== '@tamagui/core')\n const componentOutPaths = baseComponents.map((componentModule) =>\n join(\n tmpDir,\n `${componentModule\n .split(sep)\n .join('-')\n .replace(/[^a-z0-9]+/gi, '')}-components.config.cjs`\n )\n )\n\n if (\n process.env.NODE_ENV === 'development' &&\n process.env.DEBUG?.startsWith('tamagui')\n ) {\n console.log(`Building config entry`, configEntry)\n }\n\n // build them to node-compat versions\n try {\n await ensureDir(tmpDir)\n } catch {\n //\n }\n\n if (!loggedOutputInfo) {\n loggedOutputInfo = true\n colorLog(\n Color.FgYellow,\n `\n Tamagui built config and components:`\n )\n colorLog(\n Color.Dim,\n `\n Config .${sep}${relative(process.cwd(), configOutPath)}\n Components ${[\n ...componentOutPaths.map((p) => `.${sep}${relative(process.cwd(), p)}`),\n ].join('\\n ')}\n `\n )\n }\n\n await Promise.all([\n props.config\n ? bundle({\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return bundle({\n entryPoints: [componentModule],\n resolvePlatformSpecificEntries: true,\n external,\n outfile: componentOutPaths[i],\n })\n }),\n ])\n\n // get around node.js's module cache to get the new config...\n delete require.cache[path.resolve(configOutPath)]\n\n const out = require(configOutPath)\n\n const config = out.default || out\n if (!config) {\n throw new Error(`No config: ${config}`)\n }\n\n let components = loadComponents({\n ...props,\n components: componentOutPaths,\n })\n\n if (!components) {\n throw new Error(`No components found: ${componentOutPaths.join(', ')}`)\n }\n\n // map from built back to original module names\n for (const component of components) {\n component.moduleName = baseComponents[componentOutPaths.indexOf(component.moduleName)]\n\n // if (!component.moduleName) {\n // throw new Error(`Tamagui internal err`)\n // }\n }\n\n // always load core so we can optimize if directly importing\n const coreComponents = loadComponents({\n ...props,\n components: ['@tamagui/core-node'],\n })\n if (coreComponents) {\n coreComponents[0].moduleName = '@tamagui/core'\n components = [...components, ...coreComponents]\n }\n\n if (\n process.env.NODE_ENV === 'development' &&\n process.env.DEBUG?.startsWith('tamagui')\n ) {\n console.log('Loaded components', components)\n }\n return {\n components,\n nameToPaths: {},\n tamaguiConfig: config,\n }\n}\n\nexport function loadComponents(props: Props): null | LoadedComponents[] {\n const componentsModules = props.components\n const key = componentsModules.join('')\n if (cacheComponents[key]) {\n return cacheComponents[key]\n }\n try {\n const info: LoadedComponents[] = componentsModules.flatMap((name) => {\n const extension = extname(name)\n const isLocal = Boolean(extension)\n // during props.config pass we are passing in pre-bundled stuff\n const isDynamic = isLocal && !props.config\n\n if (isDynamic && !process.env.TAMAGUI_ENABLE_DYNAMIC_LOAD) {\n return []\n }\n\n const fileContents = isDynamic ? readFileSync(name, 'utf-8') : ''\n const loadModule = isDynamic\n ? join(dirname(name), `.tamagui-dynamic-eval-${basename(name)}.tsx`)\n : name\n let writtenContents = fileContents\n let didBabel = false\n\n function attemptLoad({ forceExports = false } = {}) {\n // need to write to tsx to enable reading it properly (:/ esbuild-register)\n if (isDynamic) {\n writtenContents = forceExports\n ? esbuildit(\n transformAddExports(babelParse(esbuildit(fileContents, 'modern')))\n )\n : esbuildit(fileContents)\n\n writeFileSync(loadModule, writtenContents)\n }\n\n if (process.env.DEBUG === 'tamagui') {\n console.log(`loadModule`, loadModule, require.resolve(loadModule))\n }\n\n return {\n moduleName: name,\n nameToInfo: getComponentStaticConfigByName(\n name,\n interopDefaultExport(require(loadModule))\n ),\n }\n }\n\n const dispose = () => {\n isDynamic && removeSync(loadModule)\n }\n\n try {\n const res = attemptLoad({\n forceExports: true,\n })\n didBabel = true\n return res\n } catch (err) {\n console.log('babel err', err, writtenContents)\n // ok\n writtenContents = fileContents\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Error parsing babel likely`, err)\n }\n } finally {\n dispose()\n }\n\n try {\n return attemptLoad({\n forceExports: false,\n })\n } catch (err) {\n if (!process.env.TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD) {\n console.log(`\n\nTamagui attempted but failed to dynamically load components in:\n ${name}\n\nThis will leave some styled() tags unoptimized.\nDisable this file (or dynamic loading altogether):\n\n disableExtractFoundComponents: ['${name}'] | true\n\nQuiet this warning with environment variable:\n \n TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD=1\n\n`)\n console.log(err)\n console.log(\n `At: ${loadModule}`,\n `\\ndidBabel: ${didBabel}`,\n `\\nIn:`,\n writtenContents,\n `\\nisDynamic: `,\n isDynamic\n )\n }\n return []\n } finally {\n dispose()\n }\n })\n cacheComponents[key] = info\n return info\n } catch (err: any) {\n console.log(`Tamagui error bundling components`, err.message, err.stack)\n return null\n }\n}\n\nconst esbuildit = (src: string, target?: 'modern') => {\n return esbuild.transformSync(src, {\n ...esbuildOptions,\n ...(target === 'modern' && {\n target: 'es2022',\n jsx: 'transform',\n loader: 'tsx',\n platform: 'neutral',\n format: 'esm',\n }),\n }).code\n}\n\nfunction getComponentStaticConfigByName(name: string, exported: any) {\n const components: Record<string, { staticConfig: StaticConfigParsed }> = {}\n try {\n if (!exported || typeof exported !== 'object' || Array.isArray(exported)) {\n throw new Error(`Invalid export from package ${name}: ${typeof exported}`)\n }\n for (const key in exported) {\n const found = getTamaguiComponent(key, exported[key])\n if (found) {\n // remove non-stringifyable\n const { Component, ...sc } = found.staticConfig\n components[key] = { staticConfig: sc }\n }\n }\n } catch (err) {\n if (process.env.TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD !== '1') {\n console.error(\n `Tamagui failed getting from ${name} (Disable error by setting environment variable TAMAGUI_DISABLE_WARN_DYNAMIC_LOAD=1)`\n )\n console.error(err)\n }\n }\n return components\n}\n\nfunction getTamaguiComponent(\n name: string,\n Component: any\n): undefined | { staticConfig: StaticConfigParsed } {\n if (name[0].toUpperCase() !== name[0]) {\n return\n }\n const staticConfig = Component?.staticConfig as StaticConfigParsed | undefined\n if (staticConfig) {\n return Component\n }\n}\n\nfunction interopDefaultExport(mod: any) {\n return mod?.default ?? mod\n}\n\nconst cacheComponents: Record<string, LoadedComponents[]> = {}\n\nfunction transformAddExports(ast: t.File) {\n const usedNames = new Set<string>()\n\n // avoid clobbering\n // @ts-ignore\n traverse(ast, {\n ExportNamedDeclaration(nodePath) {\n if (nodePath.node.specifiers) {\n for (const spec of nodePath.node.specifiers) {\n usedNames.add(\n t.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value\n )\n }\n }\n },\n })\n\n // @ts-ignore\n traverse(ast, {\n VariableDeclaration(nodePath) {\n // top level only\n if (!t.isProgram(nodePath.parent)) return\n const decs = nodePath.node.declarations\n if (decs.length > 1) return\n const [dec] = decs\n if (!t.isIdentifier(dec.id)) return\n if (!dec.init) return\n if (usedNames.has(dec.id.name)) return\n usedNames.add(dec.id.name)\n nodePath.replaceWith(\n t.exportNamedDeclaration(t.variableDeclaration('let', [dec]), [\n t.exportSpecifier(t.identifier(dec.id.name), t.identifier(dec.id.name)),\n ])\n )\n },\n })\n\n // @ts-ignore\n return generate(ast as any, {\n concise: false,\n filename: 'test.tsx',\n retainLines: false,\n sourceMaps: false,\n }).code\n}\n"],
5
4
  "mappings": "AAAA,SAAS,oBAAoB;AAC7B,OAAO,QAAQ,UAAU,SAAS,SAAS,MAAM,UAAU,WAAW;AAEtE,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,YAAY,OAAO;AACnB,SAAS,OAAO,gBAAgB;AAEhC,OAAO,aAAa;AACpB,SAAS,WAAW,YAAY,qBAAqB;AAErD,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEvB,IAAI,mBAAmB;AA4BvB,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,MAAM,iBAAiB;AAAA,EAC5B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AACZ;AAEA,eAAsB,aAAa,OAAc;AA3DjD;AA4DE,QAAM,cAAc,MAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,MAAM,MAAM,IAAI;AACvE,QAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,UAAU;AAC7C,QAAM,gBAAgB,KAAK,QAAQ,oBAAoB;AACvD,QAAM,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe;AAC3E,QAAM,oBAAoB,eAAe;AAAA,IAAI,CAAC,oBAC5C;AAAA,MACE;AAAA,MACA,GAAG,gBACA,MAAM,GAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE;AAAA,IAC/B;AAAA,EACF;AAEA,MACE,QAAQ,IAAI,aAAa,mBACzB,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,aAC9B;AACA,YAAQ,IAAI,yBAAyB,WAAW;AAAA,EAClD;AAGA,MAAI;AACF,UAAM,UAAU,MAAM;AAAA,EACxB,QAAE;AAAA,EAEF;AAEA,MAAI,CAAC,kBAAkB;AACrB,uBAAmB;AACnB;AAAA,MACE,MAAM;AAAA,MACN;AAAA;AAAA,IAEF;AACA;AAAA,MACE,MAAM;AAAA,MACN;AAAA,sBACgB,MAAM,SAAS,QAAQ,IAAI,GAAG,aAAa;AAAA,qBAC5C;AAAA,QACX,GAAG,kBAAkB,IAAI,CAAC,MAAM,IAAI,MAAM,SAAS,QAAQ,IAAI,GAAG,CAAC,GAAG;AAAA,MACxE,EAAE,KAAK,iBAAiB;AAAA;AAAA,IAE5B;AAAA,EACF;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,MAAM,SACF,OAAO;AAAA,MACL,aAAa,CAAC,WAAW;AAAA,MACzB;AAAA,MACA,SAAS;AAAA,IACX,CAAC,IACD;AAAA,IACJ,GAAG,eAAe,IAAI,CAAC,iBAAiB,MAAM;AAC5C,aAAO,OAAO;AAAA,QACZ,aAAa,CAAC,eAAe;AAAA,QAC7B,gCAAgC;AAAA,QAChC;AAAA,QACA,SAAS,kBAAkB,CAAC;AAAA,MAC9B,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAGD,SAAO,QAAQ,MAAM,KAAK,QAAQ,aAAa,CAAC;AAEhD,QAAM,MAAM,QAAQ,aAAa;AAEjC,QAAM,SAAS,IAAI,WAAW;AAC9B,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,cAAc,QAAQ;AAAA,EACxC;AAEA,MAAI,aAAa,eAAe;AAAA,IAC9B,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AAED,MAAI,CAAC,YAAY;AACf,UAAM,IAAI,MAAM,wBAAwB,kBAAkB,KAAK,IAAI,GAAG;AAAA,EACxE;AAGA,aAAW,aAAa,YAAY;AAClC,cAAU,aAAa,eAAe,kBAAkB,QAAQ,UAAU,UAAU,CAAC;AAAA,EAKvF;AAGA,QAAM,iBAAiB,eAAe;AAAA,IACpC,GAAG;AAAA,IACH,YAAY,CAAC,oBAAoB;AAAA,EACnC,CAAC;AACD,MAAI,gBAAgB;AAClB,mBAAe,CAAC,EAAE,aAAa;AAC/B,iBAAa,CAAC,GAAG,YAAY,GAAG,cAAc;AAAA,EAChD;AAEA,MACE,QAAQ,IAAI,aAAa,mBACzB,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,aAC9B;AACA,YAAQ,IAAI,qBAAqB,UAAU;AAAA,EAC7C;AACA,SAAO;AAAA,IACL;AAAA,IACA,aAAa,CAAC;AAAA,IACd,eAAe;AAAA,EACjB;AACF;AAEO,SAAS,eAAe,OAAyC;AACtE,QAAM,oBAAoB,MAAM;AAChC,QAAM,MAAM,kBAAkB,KAAK,EAAE;AACrC,MAAI,gBAAgB,GAAG,GAAG;AACxB,WAAO,gBAAgB,GAAG;AAAA,EAC5B;AACA,MAAI;AACF,UAAM,OAA2B,kBAAkB,QAAQ,CAAC,SAAS;AAtLzE;AAuLM,YAAM,YAAY,QAAQ,IAAI;AAC9B,YAAM,UAAU,QAAQ,SAAS;AAEjC,YAAM,YAAY,WAAW,CAAC,MAAM;AAEpC,UAAI,aAAa,CAAC,QAAQ,IAAI,6BAA6B;AACzD,eAAO,CAAC;AAAA,MACV;AAEA,YAAM,eAAe,YAAY,aAAa,MAAM,OAAO,IAAI;AAC/D,YAAM,aAAa,YACf,KAAK,QAAQ,IAAI,GAAG,yBAAyB,SAAS,IAAI,OAAO,IACjE;AACJ,UAAI,kBAAkB;AACtB,UAAI,WAAW;AAEf,eAAS,YAAY,EAAE,eAAe,MAAM,IAAI,CAAC,GAAG;AAElD,YAAI,WAAW;AACb,4BAAkB,eACd;AAAA,YACE,oBAAoB,WAAW,UAAU,cAAc,QAAQ,CAAC,CAAC;AAAA,UACnE,IACA,UAAU,YAAY;AAE1B,wBAAc,YAAY,eAAe;AAAA,QAC3C;AAEA,YAAI,QAAQ,IAAI,UAAU,WAAW;AACnC,kBAAQ,IAAI,cAAc,YAAY,QAAQ,QAAQ,UAAU,CAAC;AAAA,QACnE;AAEA,eAAO;AAAA,UACL,YAAY;AAAA,UACZ,YAAY;AAAA,YACV;AAAA,YACA,qBAAqB,QAAQ,UAAU,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAEA,YAAM,UAAU,MAAM;AACpB,qBAAa,WAAW,UAAU;AAAA,MACpC;AAEA,UAAI;AACF,cAAM,MAAM,YAAY;AAAA,UACtB,cAAc;AAAA,QAChB,CAAC;AACD,mBAAW;AACX,eAAO;AAAA,MACT,SAAS,KAAP;AACA,gBAAQ,IAAI,aAAa,KAAK,eAAe;AAE7C,0BAAkB;AAClB,aAAI,aAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,kBAAQ,IAAI,8BAA8B,GAAG;AAAA,QAC/C;AAAA,MACF,UAAE;AACA,gBAAQ;AAAA,MACV;AAEA,UAAI;AACF,eAAO,YAAY;AAAA,UACjB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,SAAS,KAAP;AACA,YAAI,CAAC,QAAQ,IAAI,mCAAmC;AAClD,kBAAQ,IAAI;AAAA;AAAA;AAAA,IAGlB;AAAA;AAAA;AAAA;AAAA;AAAA,qCAKiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAMpC;AACS,kBAAQ,IAAI,GAAG;AACf,kBAAQ;AAAA,YACN,OAAO;AAAA,YACP;AAAA,YAAe;AAAA,YACf;AAAA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YACA;AAAA,UACF;AAAA,QACF;AACA,eAAO,CAAC;AAAA,MACV,UAAE;AACA,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,oBAAgB,GAAG,IAAI;AACvB,WAAO;AAAA,EACT,SAAS,KAAP;AACA,YAAQ,IAAI,qCAAqC,IAAI,SAAS,IAAI,KAAK;AACvE,WAAO;AAAA,EACT;AACF;AAEA,MAAM,YAAY,CAAC,KAAa,WAAsB;AACpD,SAAO,QAAQ,cAAc,KAAK;AAAA,IAChC,GAAG;AAAA,IACH,GAAI,WAAW,YAAY;AAAA,MACzB,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,EACF,CAAC,EAAE;AACL;AAEA,SAAS,+BAA+B,MAAc,UAAe;AACnE,QAAM,aAAmE,CAAC;AAC1E,MAAI;AACF,QAAI,CAAC,YAAY,OAAO,aAAa,YAAY,MAAM,QAAQ,QAAQ,GAAG;AACxE,YAAM,IAAI,MAAM,+BAA+B,SAAS,OAAO,UAAU;AAAA,IAC3E;AACA,eAAW,OAAO,UAAU;AAC1B,YAAM,QAAQ,oBAAoB,KAAK,SAAS,GAAG,CAAC;AACpD,UAAI,OAAO;AAET,cAAM,EAAE,WAAW,GAAG,GAAG,IAAI,MAAM;AACnC,mBAAW,GAAG,IAAI,EAAE,cAAc,GAAG;AAAA,MACvC;AAAA,IACF;AAAA,EACF,SAAS,KAAP;AACA,QAAI,QAAQ,IAAI,sCAAsC,KAAK;AACzD,cAAQ;AAAA,QACN,+BAA+B;AAAA,MACjC;AACA,cAAQ,MAAM,GAAG;AAAA,IACnB;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBACP,MACA,WACkD;AAClD,MAAI,KAAK,CAAC,EAAE,YAAY,MAAM,KAAK,CAAC,GAAG;AACrC;AAAA,EACF;AACA,QAAM,eAAe,uCAAW;AAChC,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AACF;AAEA,SAAS,qBAAqB,KAAU;AACtC,UAAO,2BAAK,YAAW;AACzB;AAEA,MAAM,kBAAsD,CAAC;AAE7D,SAAS,oBAAoB,KAAa;AACxC,QAAM,YAAY,oBAAI,IAAY;AAIlC,WAAS,KAAK;AAAA,IACZ,uBAAuB,UAAU;AAC/B,UAAI,SAAS,KAAK,YAAY;AAC5B,mBAAW,QAAQ,SAAS,KAAK,YAAY;AAC3C,oBAAU;AAAA,YACR,EAAE,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,OAAO,KAAK,SAAS;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAGD,WAAS,KAAK;AAAA,IACZ,oBAAoB,UAAU;AAE5B,UAAI,CAAC,EAAE,UAAU,SAAS,MAAM;AAAG;AACnC,YAAM,OAAO,SAAS,KAAK;AAC3B,UAAI,KAAK,SAAS;AAAG;AACrB,YAAM,CAAC,GAAG,IAAI;AACd,UAAI,CAAC,EAAE,aAAa,IAAI,EAAE;AAAG;AAC7B,UAAI,CAAC,IAAI;AAAM;AACf,UAAI,UAAU,IAAI,IAAI,GAAG,IAAI;AAAG;AAChC,gBAAU,IAAI,IAAI,GAAG,IAAI;AACzB,eAAS;AAAA,QACP,EAAE,uBAAuB,EAAE,oBAAoB,OAAO,CAAC,GAAG,CAAC,GAAG;AAAA,UAC5D,EAAE,gBAAgB,EAAE,WAAW,IAAI,GAAG,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,CAAC;AAAA,QACxE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAGD,SAAO,SAAS,KAAY;AAAA,IAC1B,SAAS;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,EACd,CAAC,EAAE;AACL;",
6
5
  "names": []
7
6
  }