@tamagui/static 1.0.0-alpha.35 → 1.0.0-alpha.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/extractor/createExtractor.js +22 -15
- package/dist/esm/extractor/createExtractor.js.map +1 -1
- package/dist/esm/extractor/extractHelpers.js +5 -3
- package/dist/esm/extractor/extractHelpers.js.map +1 -1
- package/dist/esm/extractor/extractMediaStyle.js +3 -2
- package/dist/esm/extractor/extractMediaStyle.js.map +1 -1
- package/dist/esm/extractor/extractToClassNames.js +5 -3
- package/dist/esm/extractor/extractToClassNames.js.map +1 -1
- package/dist/esm/extractor/normalizeTernaries.js +3 -2
- package/dist/esm/extractor/normalizeTernaries.js.map +1 -1
- package/dist/esm/extractor/removeUnusedHooks.js +5 -3
- package/dist/esm/extractor/removeUnusedHooks.js.map +1 -1
- package/dist/jsx/extractor/createExtractor.js +22 -15
- package/dist/jsx/extractor/extractHelpers.js +5 -3
- package/dist/jsx/extractor/extractMediaStyle.js +3 -2
- package/dist/jsx/extractor/extractToClassNames.js +5 -3
- package/dist/jsx/extractor/normalizeTernaries.js +3 -2
- package/dist/jsx/extractor/removeUnusedHooks.js +5 -3
- package/package.json +7 -7
|
@@ -70,7 +70,10 @@ function createExtractor() {
|
|
|
70
70
|
const isInternalImport = /* @__PURE__ */ __name((importStr) => {
|
|
71
71
|
return isInsideTamagui(sourcePath) && importStr[0] === ".";
|
|
72
72
|
}, "isInternalImport");
|
|
73
|
-
const validComponents = Object.keys(components).filter((key) =>
|
|
73
|
+
const validComponents = Object.keys(components).filter((key) => {
|
|
74
|
+
var _a;
|
|
75
|
+
return key[0].toUpperCase() === key[0] && !!((_a = components[key]) == null ? void 0 : _a.staticConfig);
|
|
76
|
+
}).reduce((obj, name) => {
|
|
74
77
|
obj[name] = components[name];
|
|
75
78
|
return obj;
|
|
76
79
|
}, {});
|
|
@@ -115,11 +118,12 @@ function createExtractor() {
|
|
|
115
118
|
}
|
|
116
119
|
},
|
|
117
120
|
JSXElement(traversePath) {
|
|
121
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
118
122
|
const node = traversePath.node.openingElement;
|
|
119
123
|
const ogAttributes = node.attributes;
|
|
120
124
|
const componentName = findComponentName(traversePath.scope);
|
|
121
125
|
const closingElement = traversePath.node.closingElement;
|
|
122
|
-
if (t.isJSXMemberExpression(closingElement
|
|
126
|
+
if (t.isJSXMemberExpression(closingElement == null ? void 0 : closingElement.name) || !t.isJSXIdentifier(node.name)) {
|
|
123
127
|
return;
|
|
124
128
|
}
|
|
125
129
|
const binding = traversePath.scope.getBinding(node.name.name);
|
|
@@ -160,8 +164,8 @@ function createExtractor() {
|
|
|
160
164
|
}
|
|
161
165
|
const { staticConfig } = component;
|
|
162
166
|
const isTextView = staticConfig.isText || false;
|
|
163
|
-
const validStyles = staticConfig
|
|
164
|
-
let tagName = staticConfig.defaultProps
|
|
167
|
+
const validStyles = (_a = staticConfig == null ? void 0 : staticConfig.validStyles) != null ? _a : {};
|
|
168
|
+
let tagName = (_c = (_b = staticConfig.defaultProps) == null ? void 0 : _b.tag) != null ? _c : isTextView ? "span" : "div";
|
|
165
169
|
traversePath.get("openingElement").get("attributes").forEach((path) => {
|
|
166
170
|
const attr = path.node;
|
|
167
171
|
if (t.isJSXSpreadAttribute(attr))
|
|
@@ -175,10 +179,10 @@ function createExtractor() {
|
|
|
175
179
|
});
|
|
176
180
|
const flatNode = getFlattenedNode({ isTextView, tag: tagName });
|
|
177
181
|
const deoptProps = new Set([
|
|
178
|
-
...props.deoptProps
|
|
179
|
-
...staticConfig.deoptProps
|
|
182
|
+
...(_d = props.deoptProps) != null ? _d : [],
|
|
183
|
+
...(_e = staticConfig.deoptProps) != null ? _e : []
|
|
180
184
|
]);
|
|
181
|
-
const excludeProps = new Set(props.excludeProps
|
|
185
|
+
const excludeProps = new Set((_f = props.excludeProps) != null ? _f : []);
|
|
182
186
|
const isExcludedProp = /* @__PURE__ */ __name((name) => {
|
|
183
187
|
const res2 = excludeProps.has(name);
|
|
184
188
|
if (res2 && shouldPrintDebug)
|
|
@@ -278,7 +282,8 @@ function createExtractor() {
|
|
|
278
282
|
}
|
|
279
283
|
}).flat(4).filter(isPresent);
|
|
280
284
|
function isStaticAttributeName(name) {
|
|
281
|
-
|
|
285
|
+
var _a2, _b2;
|
|
286
|
+
return !!(!!validStyles[name] || ((_a2 = staticConfig.validPropsExtra) == null ? void 0 : _a2[name]) || !!pseudos[name] || ((_b2 = staticConfig.variants) == null ? void 0 : _b2[name]) || tamaguiConfig.shorthands[name] || (name[0] === "$" ? !!mediaQueryConfig[name.slice(1)] : false));
|
|
282
287
|
}
|
|
283
288
|
__name(isStaticAttributeName, "isStaticAttributeName");
|
|
284
289
|
function isExtractable(obj) {
|
|
@@ -389,7 +394,7 @@ function createExtractor() {
|
|
|
389
394
|
if (UNTOUCHED_PROPS[name]) {
|
|
390
395
|
return attr;
|
|
391
396
|
}
|
|
392
|
-
if (name[0] === "$" && t.isJSXExpressionContainer(attribute
|
|
397
|
+
if (name[0] === "$" && t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
393
398
|
if (disableExtractInlineMedia) {
|
|
394
399
|
return attr;
|
|
395
400
|
}
|
|
@@ -410,7 +415,7 @@ function createExtractor() {
|
|
|
410
415
|
}
|
|
411
416
|
}
|
|
412
417
|
const [value, valuePath] = (() => {
|
|
413
|
-
if (t.isJSXExpressionContainer(attribute
|
|
418
|
+
if (t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
414
419
|
return [attribute.value.expression, path.get("value")];
|
|
415
420
|
} else {
|
|
416
421
|
return [attribute.value, path.get("value")];
|
|
@@ -652,12 +657,13 @@ function createExtractor() {
|
|
|
652
657
|
const shouldFlatten = !shouldDeopt && inlinePropCount === 0 && !hasSpread && staticConfig.neverFlatten !== true && (staticConfig.neverFlatten === "jsx" ? hasOnlyStringChildren : true);
|
|
653
658
|
if (!shouldFlatten) {
|
|
654
659
|
attrs = attrs.reduce((acc, cur) => {
|
|
660
|
+
var _a2, _b2;
|
|
655
661
|
if (cur.type === "style") {
|
|
656
662
|
for (const key in cur.value) {
|
|
657
|
-
const shouldEnsureOverridden = !!staticConfig.ensureOverriddenProp
|
|
663
|
+
const shouldEnsureOverridden = !!((_a2 = staticConfig.ensureOverriddenProp) == null ? void 0 : _a2[key]);
|
|
658
664
|
const isSetInAttrsAlready = attrs.some((x) => x.type === "attr" && x.value.type === "JSXAttribute" && x.value.name.name === key);
|
|
659
665
|
if (!isSetInAttrsAlready) {
|
|
660
|
-
const isVariant = !!staticConfig.variants
|
|
666
|
+
const isVariant = !!((_b2 = staticConfig.variants) == null ? void 0 : _b2[cur.name || ""]);
|
|
661
667
|
if (isVariant || shouldEnsureOverridden) {
|
|
662
668
|
acc.push({
|
|
663
669
|
type: "attr",
|
|
@@ -695,7 +701,7 @@ function createExtractor() {
|
|
|
695
701
|
let prev = null;
|
|
696
702
|
attrs = attrs.reduce((acc, cur) => {
|
|
697
703
|
if (cur.type === "style") {
|
|
698
|
-
if (prev
|
|
704
|
+
if ((prev == null ? void 0 : prev.type) === "style") {
|
|
699
705
|
Object.assign(prev.value, cur.value);
|
|
700
706
|
return acc;
|
|
701
707
|
}
|
|
@@ -708,6 +714,7 @@ function createExtractor() {
|
|
|
708
714
|
console.log(" - attrs (combined \u{1F500}): \n", logLines(attrs.map(attrStr).join(", ")));
|
|
709
715
|
}
|
|
710
716
|
const getStyles = /* @__PURE__ */ __name((props2) => {
|
|
717
|
+
var _a2;
|
|
711
718
|
if (!props2)
|
|
712
719
|
return;
|
|
713
720
|
if (!!excludeProps.size) {
|
|
@@ -717,7 +724,7 @@ function createExtractor() {
|
|
|
717
724
|
}
|
|
718
725
|
}
|
|
719
726
|
const out = postProcessStyles(props2, staticConfig, defaultTheme);
|
|
720
|
-
const next = out
|
|
727
|
+
const next = (_a2 = out == null ? void 0 : out.style) != null ? _a2 : props2;
|
|
721
728
|
if (shouldPrintDebug) {
|
|
722
729
|
console.log(" getStyles props >>\n", logLines(objToStr(props2)));
|
|
723
730
|
console.log(" getStyles next >>\n", logLines(objToStr(next)));
|
|
@@ -773,7 +780,7 @@ function createExtractor() {
|
|
|
773
780
|
if (key in stylePropsTransform) {
|
|
774
781
|
next["transform"] = completeStylesProcessed["transform"];
|
|
775
782
|
} else {
|
|
776
|
-
next[key] = completeStylesProcessed[key]
|
|
783
|
+
next[key] = (_g = completeStylesProcessed[key]) != null ? _g : attr.value[key];
|
|
777
784
|
}
|
|
778
785
|
}
|
|
779
786
|
attr.value = next;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/createExtractor.ts"],
|
|
4
4
|
"sourcesContent": ["import traverse, { NodePath, Visitor } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { StaticConfigParsed, TamaguiInternalConfig } from '@tamagui/core'\nimport * as CoreNode from '@tamagui/core-node'\nimport { stylePropsTransform } from '@tamagui/helpers'\nimport { difference, pick } from 'lodash'\n\nimport { ExtractedAttr, ExtractedAttrAttr, ExtractorParseProps, Ternary } from '../types'\nimport { createEvaluator, createSafeEvaluator } from './createEvaluator'\nimport { evaluateAstNode } from './evaluateAstNode'\nimport { attrStr, findComponentName, isInsideTamagui, isPresent, objToStr } from './extractHelpers'\nimport { findTopmostFunction } from './findTopmostFunction'\nimport { getStaticBindingsForScope } from './getStaticBindingsForScope'\nimport { literalToAst } from './literalToAst'\nimport { loadTamagui } from './loadTamagui'\nimport { logLines } from './logLines'\nimport { normalizeTernaries } from './normalizeTernaries'\nimport { removeUnusedHooks } from './removeUnusedHooks'\n\nconst { mediaQueryConfig, postProcessStyles, pseudos } = CoreNode\n\nexport const FAILED_EVAL = Symbol('failed_style_eval')\nconst UNTOUCHED_PROPS = {\n key: true,\n style: true,\n className: true,\n}\n\nconst isAttr = (x: ExtractedAttr): x is ExtractedAttrAttr => x.type === 'attr'\n\nconst validHooks = {\n useMedia: true,\n useTheme: true,\n}\n\nexport type Extractor = ReturnType<typeof createExtractor>\n\nconst createTernary = (x: Ternary) => x\n\nexport function createExtractor() {\n const shouldAddDebugProp =\n // really basic disable this for next.js because it messes with ssr\n !process.env.npm_package_dependencies_next &&\n process.env.TAMAGUI_TARGET !== 'native' &&\n process.env.IDENTIFY_TAGS !== 'false' &&\n (process.env.NODE_ENV === 'development' || process.env.DEBUG || process.env.IDENTIFY_TAGS)\n\n // ts imports\n require('esbuild-register/dist/node').register({\n target: 'es2019',\n format: 'cjs',\n })\n\n let loadedTamaguiConfig: TamaguiInternalConfig\n let hasLogged = false\n\n return {\n getTamagui() {\n return loadedTamaguiConfig\n },\n parse: (\n fileOrPath: NodePath<t.Program> | t.File,\n {\n config = 'tamagui.config.ts',\n importsWhitelist = ['constants.js'],\n evaluateVars = true,\n shouldPrintDebug = false,\n sourcePath = '',\n onExtractTag,\n getFlattenedNode,\n disableExtraction,\n disableExtractInlineMedia,\n disableExtractVariables,\n disableDebugAttr,\n ...props\n }: ExtractorParseProps\n ) => {\n if (sourcePath === '') {\n throw new Error(`Must provide a source file name`)\n }\n if (!Array.isArray(props.components)) {\n throw new Error(`Must provide components array with list of Tamagui component modules`)\n }\n\n // we require it after parse because we need to set some global/env stuff before importing\n // otherwise we'd import `rnw` and cause it to evaluate react-native-web which causes errors\n const { components, tamaguiConfig } = loadTamagui({\n config,\n components: props.components || ['tamagui'],\n })\n\n loadedTamaguiConfig = tamaguiConfig\n\n const defaultTheme = tamaguiConfig.themes[Object.keys(tamaguiConfig.themes)[0]]\n const body = fileOrPath.type === 'Program' ? fileOrPath.get('body') : fileOrPath.program.body\n\n /**\n * Step 1: Determine if importing any statically extractable components\n */\n const isInternalImport = (importStr: string) => {\n return isInsideTamagui(sourcePath) && importStr[0] === '.'\n }\n\n const validComponents: { [key: string]: any } = Object.keys(components)\n // check if uppercase to avoid hitting media query proxy before init\n .filter((key) => key[0].toUpperCase() === key[0] && !!components[key]?.staticConfig)\n .reduce((obj, name) => {\n obj[name] = components[name]\n return obj\n }, {})\n\n let doesUseValidImport = false\n\n for (const bodyPath of body) {\n if (bodyPath.type !== 'ImportDeclaration') continue\n const node = ('node' in bodyPath ? bodyPath.node : bodyPath) as any\n const from = node.source.value\n if (props.components.includes(from) || isInternalImport(from)) {\n if (\n node.specifiers.some((specifier) => {\n const name = specifier.local.name\n return validComponents[name] || validHooks[name]\n })\n ) {\n doesUseValidImport = true\n break\n }\n }\n }\n\n if (shouldPrintDebug) {\n console.log(sourcePath, { doesUseValidImport })\n }\n\n if (!doesUseValidImport) {\n return null\n }\n\n let couldntParse = false\n const modifiedComponents = new Set<NodePath<any>>()\n\n // only keeping a cache around per-file, reset it if it changes\n const bindingCache: Record<string, string | null> = {}\n\n const callTraverse = (a: Visitor<{}>) => {\n return fileOrPath.type === 'File' ? traverse(fileOrPath, a) : fileOrPath.traverse(a)\n }\n\n /**\n * Step 2: Statically extract from JSX < /> nodes\n */\n let programPath: NodePath<t.Program>\n\n const res = {\n flattened: 0,\n optimized: 0,\n modified: 0,\n }\n\n callTraverse({\n Program: {\n enter(path) {\n programPath = path\n },\n },\n JSXElement(traversePath) {\n const node = traversePath.node.openingElement\n const ogAttributes = node.attributes\n const componentName = findComponentName(traversePath.scope)\n const closingElement = traversePath.node.closingElement\n\n // skip non-identifier opening elements (member expressions, etc.)\n if (t.isJSXMemberExpression(closingElement?.name) || !t.isJSXIdentifier(node.name)) {\n return\n }\n\n // validate its a proper import from tamagui (or internally inside tamagui)\n const binding = traversePath.scope.getBinding(node.name.name)\n\n if (binding) {\n if (!t.isImportDeclaration(binding.path.parent)) {\n return\n }\n const source = binding.path.parent.source\n if (!props.components.includes(source.value) && !isInternalImport(source.value)) {\n return\n }\n if (!validComponents[binding.identifier.name]) {\n return\n }\n }\n\n const component = validComponents[node.name.name] as { staticConfig?: StaticConfigParsed }\n if (!component || !component.staticConfig) {\n return\n }\n\n const originalNodeName = node.name.name\n\n if (shouldPrintDebug) {\n console.log(`\\n<${originalNodeName} />`)\n }\n\n const filePath = sourcePath.replace(process.cwd(), '.')\n const lineNumbers = node.loc\n ? node.loc.start.line +\n (node.loc.start.line !== node.loc.end.line ? `-${node.loc.end.line}` : '')\n : ''\n\n // add data-is\n if (shouldAddDebugProp && !disableDebugAttr) {\n const preName = componentName ? `${componentName}:` : ''\n res.modified++\n node.attributes.unshift(\n t.jsxAttribute(\n t.jsxIdentifier('data-is'),\n t.stringLiteral(\n ` ${preName}${node.name.name} ${filePath.replace('./', '')}:${lineNumbers} `\n )\n )\n )\n }\n\n if (disableExtraction) {\n if (!hasLogged) {\n console.log('\uD83E\uDD5A Tamagui disableExtraction set: no CSS or optimizations will be run')\n hasLogged = true\n }\n return\n }\n\n const { staticConfig } = component\n const isTextView = staticConfig.isText || false\n const validStyles = staticConfig?.validStyles ?? {}\n\n // find tag=\"a\" tag=\"main\" etc dom indicators\n let tagName = staticConfig.defaultProps?.tag ?? (isTextView ? 'span' : 'div')\n traversePath\n .get('openingElement')\n .get('attributes')\n .forEach((path) => {\n const attr = path.node\n if (t.isJSXSpreadAttribute(attr)) return\n if (attr.name.name !== 'tag') return\n const val = attr.value\n if (!t.isStringLiteral(val)) return\n tagName = val.value\n })\n\n const flatNode = getFlattenedNode({ isTextView, tag: tagName })\n\n const deoptProps = new Set([\n ...(props.deoptProps ?? []),\n ...(staticConfig.deoptProps ?? []),\n ])\n const excludeProps = new Set(props.excludeProps ?? [])\n const isExcludedProp = (name: string) => {\n const res = excludeProps.has(name)\n if (res && shouldPrintDebug) console.log(` excluding ${name}`)\n return res\n }\n\n const isDeoptedProp = (name: string) => {\n const res = deoptProps.has(name)\n if (res && shouldPrintDebug) console.log(` deopting ${name}`)\n return res\n }\n\n // Generate scope object at this level\n const staticNamespace = getStaticBindingsForScope(\n traversePath.scope,\n importsWhitelist,\n sourcePath,\n bindingCache,\n shouldPrintDebug\n )\n\n const attemptEval = !evaluateVars\n ? evaluateAstNode\n : createEvaluator({\n tamaguiConfig,\n staticNamespace,\n sourcePath,\n traversePath,\n shouldPrintDebug,\n })\n const attemptEvalSafe = createSafeEvaluator(attemptEval)\n\n if (shouldPrintDebug) {\n console.log(' staticNamespace', Object.keys(staticNamespace).join(', '))\n }\n\n //\n // SPREADS SETUP\n //\n\n // TODO restore\n const hasDeopt = (obj: Object) => {\n return Object.keys(obj).some(isDeoptedProp)\n }\n\n // flatten any easily evaluatable spreads\n const flattenedAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n traversePath\n .get('openingElement')\n .get('attributes')\n .forEach((path) => {\n const attr = path.node\n if (!t.isJSXSpreadAttribute(attr)) {\n flattenedAttrs.push(attr)\n return\n }\n let arg: any\n try {\n arg = attemptEval(attr.argument)\n } catch (e: any) {\n if (shouldPrintDebug) {\n console.log(' couldnt parse spread', e.message)\n }\n flattenedAttrs.push(attr)\n return\n }\n if (typeof arg !== 'undefined') {\n try {\n if (typeof arg !== 'object' || arg == null) {\n if (shouldPrintDebug) {\n console.log(' non object or null arg', arg)\n }\n flattenedAttrs.push(attr)\n } else {\n for (const k in arg) {\n const value = arg[k]\n // this is a null prop:\n if (!value && typeof value === 'object') {\n console.log('shouldnt we handle this?', k, value, arg)\n continue\n }\n flattenedAttrs.push(\n t.jsxAttribute(\n t.jsxIdentifier(k),\n t.jsxExpressionContainer(literalToAst(value))\n )\n )\n }\n }\n } catch (err) {\n console.warn('cant parse spread, caught err', err)\n couldntParse = true\n }\n }\n })\n\n if (couldntParse) {\n return\n }\n\n // set flattened\n node.attributes = flattenedAttrs\n\n // add in default props\n if (staticConfig.defaultProps) {\n for (const key in staticConfig.defaultProps) {\n const serialize = require('babel-literal-to-ast')\n const val = staticConfig.defaultProps[key]\n node.attributes.unshift(\n t.jsxAttribute(\n t.jsxIdentifier(key),\n typeof val === 'string'\n ? t.stringLiteral(val)\n : t.jsxExpressionContainer(serialize(val))\n )\n )\n }\n }\n\n let attrs: ExtractedAttr[] = []\n let shouldDeopt = false\n let inlinePropCount = 0\n let isFlattened = false\n\n // RUN first pass\n\n // normalize all conditionals so we can evaluate away easier later\n // at the same time lets normalize shorthand media queries into spreads:\n // that way we can parse them with the same logic later on\n //\n // {...media.sm && { color: x ? 'red' : 'blue' }}\n // => {...media.sm && x && { color: 'red' }}\n // => {...media.sm && !x && { color: 'blue' }}\n //\n // $sm={{ color: 'red' }}\n // => {...media.sm && { color: 'red' }}\n //\n // $sm={{ color: x ? 'red' : 'blue' }}\n // => {...media.sm && x && { color: 'red' }}\n // => {...media.sm && !x && { color: 'blue' }}\n\n attrs = traversePath\n .get('openingElement')\n .get('attributes')\n .flatMap((path) => {\n try {\n const res = evaluateAttribute(path)\n if (!res) {\n path.remove()\n }\n return res\n } catch (err: any) {\n console.log('Error extracting attribute', err.message, err.stack)\n console.log('node', path.node)\n return {\n type: 'attr',\n value: path.node,\n } as const\n }\n })\n .flat(4)\n .filter(isPresent)\n\n function isStaticAttributeName(name: string) {\n return !!(\n !!validStyles[name] ||\n staticConfig.validPropsExtra?.[name] ||\n !!pseudos[name] ||\n staticConfig.variants?.[name] ||\n tamaguiConfig.shorthands[name] ||\n (name[0] === '$' ? !!mediaQueryConfig[name.slice(1)] : false)\n )\n }\n\n function isExtractable(obj: t.Node): obj is t.ObjectExpression {\n return (\n t.isObjectExpression(obj) &&\n obj.properties.every((prop) => {\n if (!t.isObjectProperty(prop)) {\n console.log('not object prop', prop)\n return false\n }\n const propName = prop.key['name']\n if (!isStaticAttributeName(propName) && propName !== 'tag') {\n if (shouldPrintDebug) {\n console.log(' not a valid style prop!', propName)\n }\n return false\n }\n return true\n })\n )\n }\n\n // side <= { color: 'red', background: x ? 'red' : 'green' }\n // | => Ternary<test, { color: 'red' }, null>\n // | => Ternary<test && x, { background: 'red' }, null>\n // | => Ternary<test && !x, { background: 'green' }, null>\n function createTernariesFromObjectProperties(\n test: t.Expression,\n side: t.Expression | null,\n ternaryPartial: Partial<Ternary> = {}\n ): null | Ternary[] {\n if (!side) {\n return null\n }\n if (!isExtractable(side)) {\n throw new Error('not extractable')\n }\n return side.properties.flatMap((property) => {\n if (!t.isObjectProperty(property)) {\n throw new Error('expected object property')\n }\n // this could be a recurse here if we want to get fancy\n if (t.isConditionalExpression(property.value)) {\n // merge up into the parent conditional, split into two\n const [truthy, falsy] = [\n t.objectExpression([t.objectProperty(property.key, property.value.consequent)]),\n t.objectExpression([t.objectProperty(property.key, property.value.alternate)]),\n ].map((x) => attemptEval(x))\n return [\n createTernary({\n remove() {},\n ...ternaryPartial,\n test: t.logicalExpression('&&', test, property.value.test),\n consequent: truthy,\n alternate: null,\n }),\n createTernary({\n ...ternaryPartial,\n test: t.logicalExpression(\n '&&',\n test,\n t.unaryExpression('!', property.value.test)\n ),\n consequent: falsy,\n alternate: null,\n remove() {},\n }),\n ]\n }\n const obj = t.objectExpression([t.objectProperty(property.key, property.value)])\n const consequent = attemptEval(obj)\n return createTernary({\n remove() {},\n ...ternaryPartial,\n test,\n consequent,\n alternate: null,\n })\n })\n }\n\n // START function evaluateAttribute\n function evaluateAttribute(\n path: NodePath<t.JSXAttribute | t.JSXSpreadAttribute>\n ): ExtractedAttr | ExtractedAttr[] | null {\n const attribute = path.node\n const attr: ExtractedAttr = { type: 'attr', value: attribute }\n // ...spreads\n if (t.isJSXSpreadAttribute(attribute)) {\n const arg = attribute.argument\n const conditional = t.isConditionalExpression(arg)\n ? // <YStack {...isSmall ? { color: 'red } : { color: 'blue }}\n ([arg.test, arg.consequent, arg.alternate] as const)\n : t.isLogicalExpression(arg) && arg.operator === '&&'\n ? // <YStack {...isSmall && { color: 'red }}\n ([arg.left, arg.right, null] as const)\n : null\n\n if (conditional) {\n const [test, alt, cons] = conditional\n if (!test) throw new Error(`no test`)\n if ([alt, cons].some((side) => side && !isExtractable(side))) {\n if (shouldPrintDebug) {\n console.log('not extractable', alt, cons)\n }\n return attr\n }\n // split into individual ternaries per object property\n return [\n ...(createTernariesFromObjectProperties(test, alt) || []),\n ...((cons &&\n createTernariesFromObjectProperties(t.unaryExpression('!', test), cons)) ||\n []),\n ].map((ternary) => ({\n type: 'ternary',\n value: ternary,\n }))\n }\n }\n // END ...spreads\n\n // directly keep these\n // couldn't evaluate spread, undefined name, or name is not string\n if (\n t.isJSXSpreadAttribute(attribute) ||\n !attribute.name ||\n typeof attribute.name.name !== 'string'\n ) {\n inlinePropCount++\n return attr\n }\n\n const name = attribute.name.name\n\n if (isExcludedProp(name)) {\n return null\n }\n\n // can still optimize the object... see hoverStyle on native\n if (isDeoptedProp(name)) {\n if (shouldPrintDebug) {\n console.log(' ! inlining, deopt prop', name)\n }\n inlinePropCount++\n return attr\n }\n\n // pass className, key, and style props through untouched\n if (UNTOUCHED_PROPS[name]) {\n return attr\n }\n\n // shorthand media queries\n if (name[0] === '$' && t.isJSXExpressionContainer(attribute?.value)) {\n // allow disabling this extraction\n if (disableExtractInlineMedia) {\n return attr\n }\n\n const shortname = name.slice(1)\n if (mediaQueryConfig[shortname]) {\n const expression = attribute.value.expression\n if (!t.isJSXEmptyExpression(expression)) {\n const ternaries = createTernariesFromObjectProperties(\n t.stringLiteral(shortname),\n expression,\n {\n inlineMediaQuery: shortname,\n }\n )\n if (ternaries) {\n return ternaries.map((value) => ({\n type: 'ternary',\n value,\n }))\n }\n }\n }\n }\n\n const [value, valuePath] = (() => {\n if (t.isJSXExpressionContainer(attribute?.value)) {\n return [attribute.value.expression!, path.get('value')!] as const\n } else {\n return [attribute.value!, path.get('value')!] as const\n }\n })()\n\n const remove = () => {\n Array.isArray(valuePath) ? valuePath.map((p) => p.remove()) : valuePath.remove()\n }\n\n if (name === 'ref') {\n if (shouldPrintDebug) {\n console.log(' ! inlining, ref', name)\n }\n inlinePropCount++\n return attr\n }\n\n if (name === 'tag') {\n return {\n type: 'attr',\n value: path.node,\n }\n }\n\n // native shouldn't extract variables\n if (disableExtractVariables) {\n if (value) {\n if (value.type === 'StringLiteral' && value.value[0] === '$') {\n if (shouldPrintDebug) {\n console.log(' native, disable extract var', value.value)\n }\n inlinePropCount++\n return attr\n }\n }\n }\n\n // if value can be evaluated, extract it and filter it out\n const styleValue = attemptEvalSafe(value)\n\n // never flatten if a prop isn't a valid static attribute\n // only post prop-mapping\n if (!isStaticAttributeName(name)) {\n let keys = [name]\n if (staticConfig.propMapper) {\n // for now passing empty props {}, a bit odd, need to at least document\n // for now we don't expose custom components so just noting behavior\n const out = staticConfig.propMapper(\n name,\n styleValue,\n defaultTheme,\n staticConfig.defaultProps\n )\n if (out) {\n keys = Object.keys(out)\n }\n }\n if (keys.some((k) => !isStaticAttributeName(k) && k !== 'tag')) {\n if (shouldPrintDebug) {\n console.log(' ! inlining, not static attribute name', name)\n }\n inlinePropCount++\n return attr\n }\n }\n\n // FAILED = dynamic or ternary, keep going\n if (styleValue !== FAILED_EVAL) {\n return {\n type: 'style',\n value: { [name]: styleValue },\n name,\n attr: path.node,\n }\n }\n\n // ternaries!\n\n // binary ternary, we can eventually make this smarter but step 1\n // basically for the common use case of:\n // opacity={(conditional ? 0 : 1) * scale}\n if (t.isBinaryExpression(value)) {\n const { operator, left, right } = value\n // if one side is a ternary, and the other side is evaluatable, we can maybe extract\n const lVal = attemptEvalSafe(left)\n const rVal = attemptEvalSafe(right)\n if (shouldPrintDebug) {\n console.log(` evalBinaryExpression lVal ${String(lVal)}, rVal ${String(rVal)}`)\n }\n if (lVal !== FAILED_EVAL && t.isConditionalExpression(right)) {\n const ternary = addBinaryConditional(operator, left, right)\n if (ternary) return ternary\n }\n if (rVal !== FAILED_EVAL && t.isConditionalExpression(left)) {\n const ternary = addBinaryConditional(operator, right, left)\n if (ternary) return ternary\n }\n if (shouldPrintDebug) {\n console.log(` evalBinaryExpression cant extract`)\n }\n inlinePropCount++\n return attr\n }\n\n const staticConditional = getStaticConditional(value)\n if (staticConditional) {\n return { type: 'ternary', value: staticConditional }\n }\n\n const staticLogical = getStaticLogical(value)\n if (staticLogical) {\n return { type: 'ternary', value: staticLogical }\n }\n\n if (shouldPrintDebug) {\n console.log(' ! inline prop via no match', name, value.type)\n }\n // if we've made it this far, the prop stays inline\n inlinePropCount++\n\n //\n // RETURN ATTR\n //\n return attr\n\n // attr helpers:\n function addBinaryConditional(\n operator: any,\n staticExpr: any,\n cond: t.ConditionalExpression\n ): ExtractedAttr | null {\n if (getStaticConditional(cond)) {\n const alt = attemptEval(t.binaryExpression(operator, staticExpr, cond.alternate))\n const cons = attemptEval(t.binaryExpression(operator, staticExpr, cond.consequent))\n if (shouldPrintDebug) {\n console.log(' binaryConditional', cond.test, cons, alt)\n }\n return {\n type: 'ternary',\n value: {\n test: cond.test,\n remove,\n alternate: { [name]: alt },\n consequent: { [name]: cons },\n },\n }\n }\n return null\n }\n\n function getStaticConditional(value: t.Node): Ternary | null {\n if (t.isConditionalExpression(value)) {\n try {\n if (shouldPrintDebug) {\n console.log('attempt', value.alternate, value.consequent)\n }\n const aVal = attemptEval(value.alternate)\n const cVal = attemptEval(value.consequent)\n if (shouldPrintDebug) {\n const type = value.test.type\n console.log(' static ternary', type, cVal, aVal)\n }\n return {\n test: value.test,\n remove,\n consequent: { [name]: cVal },\n alternate: { [name]: aVal },\n }\n } catch (err: any) {\n if (shouldPrintDebug) {\n console.log(' cant eval ternary', err.message)\n }\n }\n }\n return null\n }\n\n function getStaticLogical(value: t.Node): Ternary | null {\n if (t.isLogicalExpression(value)) {\n if (value.operator === '&&') {\n try {\n const val = attemptEval(value.right)\n if (shouldPrintDebug) {\n console.log(' staticLogical', value.left, name, val)\n }\n return {\n test: value.left,\n remove,\n consequent: { [name]: val },\n alternate: null,\n }\n } catch (err) {\n if (shouldPrintDebug) {\n console.log(' cant static eval logical', err)\n }\n }\n }\n }\n return null\n }\n } // END function evaluateAttribute\n\n // see if we can filter them\n if (shouldPrintDebug) {\n console.log(' - attrs (before):\\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n // now update to new values\n node.attributes = attrs.filter(isAttr).map((x) => x.value)\n\n if (couldntParse) {\n if (shouldPrintDebug) {\n console.log(` cancel:`, { couldntParse, shouldDeopt })\n }\n node.attributes = ogAttributes\n return\n }\n\n // before deopt, can still optimize\n const parentFn = findTopmostFunction(traversePath)\n if (parentFn) {\n modifiedComponents.add(parentFn)\n }\n\n // combine ternaries\n let ternaries: Ternary[] = []\n attrs = attrs\n .reduce<(ExtractedAttr | ExtractedAttr[])[]>((out, cur) => {\n const next = attrs[attrs.indexOf(cur) + 1]\n if (cur.type === 'ternary') {\n ternaries.push(cur.value)\n }\n if ((!next || next.type !== 'ternary') && ternaries.length) {\n // finish, process\n const normalized = normalizeTernaries(ternaries).map(\n ({ alternate, consequent, ...rest }) => {\n return {\n type: 'ternary' as const,\n value: {\n ...rest,\n alternate: alternate || null,\n consequent: consequent || null,\n },\n }\n }\n )\n try {\n return [...out, ...normalized]\n } finally {\n if (shouldPrintDebug) {\n console.log(\n ` normalizeTernaries (${ternaries.length} => ${normalized.length})`\n )\n }\n ternaries = []\n }\n }\n if (cur.type === 'ternary') {\n return out\n }\n out.push(cur)\n return out\n }, [])\n .flat()\n\n // evaluates all static attributes into a simple object\n const completeStaticProps = {\n ...Object.keys(attrs).reduce((acc, index) => {\n const cur = attrs[index] as ExtractedAttr\n if (cur.type === 'style') {\n Object.assign(acc, cur.value)\n }\n if (cur.type === 'attr') {\n if (t.isJSXSpreadAttribute(cur.value)) {\n return acc\n }\n if (!t.isJSXIdentifier(cur.value.name)) {\n return acc\n }\n const key = cur.value.name.name\n // undefined = boolean true\n const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true))\n if (value === FAILED_EVAL) {\n return acc\n }\n acc[key] = value\n }\n return acc\n }, {}),\n }\n\n // flatten logic!\n // fairly simple check to see if all children are text\n const hasSpread = node.attributes.some((x) => t.isJSXSpreadAttribute(x))\n const hasOnlyStringChildren =\n !hasSpread &&\n (node.selfClosing ||\n (traversePath.node.children &&\n traversePath.node.children.every((x) => x.type === 'JSXText')))\n const shouldFlatten =\n !shouldDeopt &&\n inlinePropCount === 0 &&\n !hasSpread &&\n staticConfig.neverFlatten !== true &&\n (staticConfig.neverFlatten === 'jsx' ? hasOnlyStringChildren : true)\n\n // insert overrides - this inserts null props for things that are set in classNames\n // only when not flattening, so the downstream component can skip applying those styles\n if (!shouldFlatten) {\n attrs = attrs.reduce<ExtractedAttr[]>((acc, cur) => {\n if (cur.type === 'style') {\n // TODO need to loop over initial props not just style props\n for (const key in cur.value) {\n const shouldEnsureOverridden = !!staticConfig.ensureOverriddenProp?.[key]\n const isSetInAttrsAlready = attrs.some(\n (x) =>\n x.type === 'attr' &&\n x.value.type === 'JSXAttribute' &&\n x.value.name.name === key\n )\n\n if (!isSetInAttrsAlready) {\n const isVariant = !!staticConfig.variants?.[cur.name || '']\n if (isVariant || shouldEnsureOverridden) {\n acc.push({\n type: 'attr',\n value:\n cur.attr ||\n t.jsxAttribute(\n t.jsxIdentifier(key),\n t.jsxExpressionContainer(t.nullLiteral())\n ),\n })\n }\n }\n }\n }\n acc.push(cur)\n return acc\n }, [])\n }\n\n if (shouldPrintDebug) {\n console.log(' - attrs (flattened): \\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n // evaluate away purely style props\n attrs = attrs.reduce<ExtractedAttr[]>((acc, cur) => {\n if (\n cur.type !== 'attr' ||\n !t.isJSXAttribute(cur.value) ||\n typeof cur.value.name.name !== 'string'\n ) {\n if (cur.type === 'style') {\n const key = Object.keys(cur.value)[0]\n if (!validStyles[key] && !pseudos[key]) {\n if (shouldPrintDebug) {\n console.log(' \u274C excluding', key)\n }\n // we've already expanded shorthands, now we can remove them\n return acc\n }\n }\n }\n acc.push(cur)\n return acc\n }, [])\n\n if (shouldPrintDebug) {\n console.log(' - attrs (evaluated styles): \\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n // combine styles, leave undefined values\n let prev: ExtractedAttr | null = null\n attrs = attrs.reduce<ExtractedAttr[]>((acc, cur) => {\n if (cur.type === 'style') {\n if (prev?.type === 'style') {\n Object.assign(prev.value, cur.value)\n return acc\n }\n }\n acc.push(cur)\n prev = cur\n return acc\n }, [])\n\n if (shouldPrintDebug) {\n console.log(' - attrs (combined \uD83D\uDD00): \\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n // post process\n const getStyles = (props: Object | null) => {\n if (!props) return\n if (!!excludeProps.size) {\n for (const key in props) {\n if (isExcludedProp(key)) delete props[key]\n }\n }\n\n const out = postProcessStyles(props, staticConfig, defaultTheme)\n const next = out?.style ?? props\n if (shouldPrintDebug) {\n console.log(' getStyles props >>\\n', logLines(objToStr(props)))\n console.log(' getStyles next >>\\n', logLines(objToStr(next)))\n console.log(' getStyles style >>\\n', logLines(objToStr(out.style)))\n console.log(' getStyles viewp >>\\n', logLines(objToStr(out.viewProps)))\n }\n if (staticConfig.validStyles) {\n for (const key in next) {\n if (!staticConfig.validStyles[key] && !pseudos[key]) {\n delete next[key]\n }\n }\n }\n return next\n }\n\n // used to ensure we pass the entire prop bundle to getStyles\n const completeStylesProcessed = getStyles({\n ...staticConfig.defaultProps,\n ...completeStaticProps,\n })\n\n // any extra styles added in postprocess should be added to first group as they wont be overriden\n const stylesToAddToInitialGroup = difference(\n Object.keys(completeStylesProcessed),\n Object.keys(completeStaticProps)\n )\n\n if (stylesToAddToInitialGroup.length) {\n const toAdd = pick(completeStylesProcessed, ...stylesToAddToInitialGroup)\n const firstGroup = attrs.find((x) => x.type === 'style')\n if (shouldPrintDebug) {\n console.log(' stylesToAddToInitialGroup', stylesToAddToInitialGroup.join(', '))\n console.log(' toAdd', objToStr(toAdd))\n }\n if (!firstGroup) {\n attrs.unshift({ type: 'style', value: toAdd })\n } else {\n Object.assign(firstGroup.value, toAdd)\n }\n }\n\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' completeStaticProps\\n', logLines(objToStr(completeStaticProps)))\n // prettier-ignore\n console.log(' completeStylesProcessed\\n', logLines(objToStr(completeStylesProcessed)))\n }\n\n for (const attr of attrs) {\n try {\n switch (attr.type) {\n case 'ternary':\n const a = getStyles(attr.value.alternate)\n const c = getStyles(attr.value.consequent)\n attr.value.alternate = a\n attr.value.consequent = c\n if (shouldPrintDebug) {\n console.log(' => tern ', attrStr(attr))\n }\n break\n case 'style':\n const next = {}\n for (const key in attr.value) {\n if (key in stylePropsTransform) {\n // TODO this logic needs to be a bit more right, because could have spread in between transforms...\n next['transform'] = completeStylesProcessed['transform']\n } else {\n next[key] = completeStylesProcessed[key] ?? attr.value[key]\n }\n }\n attr.value = next\n break\n }\n } catch (err) {\n // any error de-opt\n if (shouldPrintDebug) {\n console.log(' postprocessing error, deopt', err)\n node.attributes = ogAttributes\n return node\n }\n }\n }\n\n if (shouldPrintDebug) {\n console.log(' - attrs (after):\\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n if (shouldFlatten) {\n // DO FLATTEN\n if (shouldPrintDebug) {\n console.log(' [\u2705] flattening', originalNodeName, flatNode)\n }\n isFlattened = true\n node.name.name = flatNode\n res.flattened++\n if (closingElement) {\n closingElement.name.name = flatNode\n }\n }\n\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' [\u274A] inline props ', inlinePropCount, shouldDeopt ? ' deopted' : '', hasSpread ? ' spread' : '', '!flatten', staticConfig.neverFlatten)\n console.log(' - attrs (end):\\n', logLines(attrs.map(attrStr).join(', ')))\n }\n\n res.optimized++\n\n onExtractTag({\n attrs,\n node,\n lineNumbers,\n filePath,\n attemptEval,\n jsxPath: traversePath,\n originalNodeName,\n isFlattened,\n programPath,\n })\n },\n })\n\n /**\n * Step 3: Remove dead code from removed media query / theme hooks\n */\n if (modifiedComponents.size) {\n const all = Array.from(modifiedComponents)\n if (shouldPrintDebug) {\n console.log(' [\uD83E\uDE9D] hook check', all.length)\n }\n for (const comp of all) {\n removeUnusedHooks(comp, shouldPrintDebug)\n }\n }\n\n return res\n },\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -30,6 +30,7 @@ const ternaryStr = /* @__PURE__ */ __name((x) => {
|
|
|
30
30
|
].flat().join("");
|
|
31
31
|
}, "ternaryStr");
|
|
32
32
|
function findComponentName(scope) {
|
|
33
|
+
var _a;
|
|
33
34
|
let componentName = "";
|
|
34
35
|
let cur = scope.path;
|
|
35
36
|
while (cur.parentPath && !t.isProgram(cur.parentPath.parent)) {
|
|
@@ -46,17 +47,18 @@ function findComponentName(scope) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
if (t.isFunctionDeclaration(node)) {
|
|
49
|
-
return node.id
|
|
50
|
+
return (_a = node.id) == null ? void 0 : _a.name;
|
|
50
51
|
}
|
|
51
52
|
return componentName;
|
|
52
53
|
}
|
|
53
54
|
__name(findComponentName, "findComponentName");
|
|
54
55
|
function isValidThemeHook(jsxPath, n, sourcePath) {
|
|
56
|
+
var _a;
|
|
55
57
|
if (!t.isIdentifier(n.object) || !t.isIdentifier(n.property))
|
|
56
58
|
return false;
|
|
57
59
|
const bindings = jsxPath.scope.getAllBindings();
|
|
58
60
|
const binding = bindings[n.object.name];
|
|
59
|
-
if (!binding
|
|
61
|
+
if (!(binding == null ? void 0 : binding.path))
|
|
60
62
|
return false;
|
|
61
63
|
if (!binding.path.isVariableDeclarator())
|
|
62
64
|
return false;
|
|
@@ -67,7 +69,7 @@ function isValidThemeHook(jsxPath, n, sourcePath) {
|
|
|
67
69
|
return false;
|
|
68
70
|
if (init.callee.name !== "useTheme")
|
|
69
71
|
return false;
|
|
70
|
-
const importNode = binding.scope.getBinding("useTheme")
|
|
72
|
+
const importNode = (_a = binding.scope.getBinding("useTheme")) == null ? void 0 : _a.path.parent;
|
|
71
73
|
if (!t.isImportDeclaration(importNode))
|
|
72
74
|
return false;
|
|
73
75
|
if (importNode.source.value !== "tamagui") {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/extractHelpers.ts"],
|
|
4
4
|
"sourcesContent": ["import type { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nimport { ExtractedAttr, Ternary } from '../types'\n\nexport function isPresent<T extends Object>(input: null | void | undefined | T): input is T {\n return input != null\n}\n\nexport function isSimpleSpread(node: t.JSXSpreadAttribute) {\n return t.isIdentifier(node.argument) || t.isMemberExpression(node.argument)\n}\n\nexport const attrStr = (attr: ExtractedAttr) => {\n return attr.type === 'attr'\n ? getNameAttr(attr.value)\n : attr.type === 'ternary'\n ? `...${ternaryStr(attr.value)}`\n : `${attr.type}(${objToStr(attr.value)})`\n}\n\nexport const objToStr = (obj: any) => {\n return Object.entries(obj)\n .map(\n ([k, v]) =>\n `${k}:${Array.isArray(v) ? `[...]` : v && typeof v === 'object' ? `{${objToStr(v)}}` : v}`\n )\n .join(', ')\n}\n\nconst getNameAttr = (attr: t.JSXAttribute | t.JSXSpreadAttribute) => {\n if (t.isJSXSpreadAttribute(attr)) {\n return `...${attr.argument['name']}`\n }\n return 'name' in attr ? attr.name.name : `unknown-${attr['type']}`\n}\n\nexport const ternaryStr = (x: Ternary) => {\n return [\n 'ternary:',\n t.isIdentifier(x.test)\n ? x.test.name\n : t.isMemberExpression(x.test)\n ? [x.test.object['name'], x.test.property['name']]\n : x.test,\n x.consequent ? ` ? ${objToStr(x.consequent)}` : ' ? \u26AB\uFE0F',\n x.alternate ? ` : ${objToStr(x.alternate)}` : ' : \u26AB\uFE0F',\n ]\n .flat()\n .join('')\n}\n\nexport function findComponentName(scope) {\n let componentName = ''\n let cur = scope.path\n while (cur.parentPath && !t.isProgram(cur.parentPath.parent)) {\n cur = cur.parentPath\n }\n let node = cur.parent\n if (t.isExportNamedDeclaration(node)) {\n node = node.declaration\n }\n if (t.isVariableDeclaration(node)) {\n const [dec] = node.declarations\n if (t.isVariableDeclarator(dec) && t.isIdentifier(dec.id)) {\n return dec.id.name\n }\n }\n if (t.isFunctionDeclaration(node)) {\n return node.id?.name\n }\n return componentName\n}\n\nexport function isValidThemeHook(\n jsxPath: NodePath<t.JSXElement>,\n n: t.MemberExpression,\n sourcePath: string\n) {\n if (!t.isIdentifier(n.object) || !t.isIdentifier(n.property)) return false\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[n.object.name]\n if (!binding?.path) return false\n if (!binding.path.isVariableDeclarator()) return false\n const init = binding.path.node.init\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useTheme by looking up import first\n if (init.callee.name !== 'useTheme') return false\n const importNode = binding.scope.getBinding('useTheme')?.path.parent\n if (!t.isImportDeclaration(importNode)) return false\n if (importNode.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n\nexport const isInsideTamagui = (srcName: string) => {\n return srcName.includes('/dist/jsx') || srcName.includes('/core/src')\n}\n"],
|
|
5
|
-
"mappings": ";;AACA;AAIO,mBAAqC,OAAgD;AAC1F,SAAO,SAAS;AAAA;AADF;AAIT,wBAAwB,MAA4B;AACzD,SAAO,EAAE,aAAa,KAAK,aAAa,EAAE,mBAAmB,KAAK;AAAA;AADpD;AAIT,MAAM,UAAU,wBAAC,SAAwB;AAC9C,SAAO,KAAK,SAAS,SACjB,YAAY,KAAK,SACjB,KAAK,SAAS,YACd,MAAM,WAAW,KAAK,WACtB,GAAG,KAAK,QAAQ,SAAS,KAAK;AAAA,GALb;AAQhB,MAAM,WAAW,wBAAC,QAAa;AACpC,SAAO,OAAO,QAAQ,KACnB,IACC,CAAC,CAAC,GAAG,OACH,GAAG,KAAK,MAAM,QAAQ,KAAK,UAAU,KAAK,OAAO,MAAM,WAAW,IAAI,SAAS,QAAQ,KAE1F,KAAK;AAAA,GANc;AASxB,MAAM,cAAc,wBAAC,SAAgD;AACnE,MAAI,EAAE,qBAAqB,OAAO;AAChC,WAAO,MAAM,KAAK,SAAS;AAAA;AAE7B,SAAO,UAAU,OAAO,KAAK,KAAK,OAAO,WAAW,KAAK;AAAA,GAJvC;AAOb,MAAM,aAAa,wBAAC,MAAe;AACxC,SAAO;AAAA,IACL;AAAA,IACA,EAAE,aAAa,EAAE,QACb,EAAE,KAAK,OACP,EAAE,mBAAmB,EAAE,QACvB,CAAC,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,SAAS,WACxC,EAAE;AAAA,IACN,EAAE,aAAa,OAAO,SAAS,EAAE,gBAAgB;AAAA,IACjD,EAAE,YAAY,OAAO,SAAS,EAAE,eAAe;AAAA,IAE9C,OACA,KAAK;AAAA,GAZgB;AAenB,2BAA2B,OAAO;
|
|
5
|
+
"mappings": ";;AACA;AAIO,mBAAqC,OAAgD;AAC1F,SAAO,SAAS;AAAA;AADF;AAIT,wBAAwB,MAA4B;AACzD,SAAO,EAAE,aAAa,KAAK,aAAa,EAAE,mBAAmB,KAAK;AAAA;AADpD;AAIT,MAAM,UAAU,wBAAC,SAAwB;AAC9C,SAAO,KAAK,SAAS,SACjB,YAAY,KAAK,SACjB,KAAK,SAAS,YACd,MAAM,WAAW,KAAK,WACtB,GAAG,KAAK,QAAQ,SAAS,KAAK;AAAA,GALb;AAQhB,MAAM,WAAW,wBAAC,QAAa;AACpC,SAAO,OAAO,QAAQ,KACnB,IACC,CAAC,CAAC,GAAG,OACH,GAAG,KAAK,MAAM,QAAQ,KAAK,UAAU,KAAK,OAAO,MAAM,WAAW,IAAI,SAAS,QAAQ,KAE1F,KAAK;AAAA,GANc;AASxB,MAAM,cAAc,wBAAC,SAAgD;AACnE,MAAI,EAAE,qBAAqB,OAAO;AAChC,WAAO,MAAM,KAAK,SAAS;AAAA;AAE7B,SAAO,UAAU,OAAO,KAAK,KAAK,OAAO,WAAW,KAAK;AAAA,GAJvC;AAOb,MAAM,aAAa,wBAAC,MAAe;AACxC,SAAO;AAAA,IACL;AAAA,IACA,EAAE,aAAa,EAAE,QACb,EAAE,KAAK,OACP,EAAE,mBAAmB,EAAE,QACvB,CAAC,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK,SAAS,WACxC,EAAE;AAAA,IACN,EAAE,aAAa,OAAO,SAAS,EAAE,gBAAgB;AAAA,IACjD,EAAE,YAAY,OAAO,SAAS,EAAE,eAAe;AAAA,IAE9C,OACA,KAAK;AAAA,GAZgB;AAenB,2BAA2B,OAAO;AApDzC;AAqDE,MAAI,gBAAgB;AACpB,MAAI,MAAM,MAAM;AAChB,SAAO,IAAI,cAAc,CAAC,EAAE,UAAU,IAAI,WAAW,SAAS;AAC5D,UAAM,IAAI;AAAA;AAEZ,MAAI,OAAO,IAAI;AACf,MAAI,EAAE,yBAAyB,OAAO;AACpC,WAAO,KAAK;AAAA;AAEd,MAAI,EAAE,sBAAsB,OAAO;AACjC,UAAM,CAAC,OAAO,KAAK;AACnB,QAAI,EAAE,qBAAqB,QAAQ,EAAE,aAAa,IAAI,KAAK;AACzD,aAAO,IAAI,GAAG;AAAA;AAAA;AAGlB,MAAI,EAAE,sBAAsB,OAAO;AACjC,WAAO,WAAK,OAAL,mBAAS;AAAA;AAElB,SAAO;AAAA;AAnBO;AAsBT,0BACL,SACA,GACA,YACA;AA9EF;AA+EE,MAAI,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE;AAAW,WAAO;AACrE,QAAM,WAAW,QAAQ,MAAM;AAC/B,QAAM,UAAU,SAAS,EAAE,OAAO;AAClC,MAAI,CAAC,oCAAS;AAAM,WAAO;AAC3B,MAAI,CAAC,QAAQ,KAAK;AAAwB,WAAO;AACjD,QAAM,OAAO,QAAQ,KAAK,KAAK;AAC/B,MAAI,CAAC,EAAE,iBAAiB;AAAO,WAAO;AACtC,MAAI,CAAC,EAAE,aAAa,KAAK;AAAS,WAAO;AAEzC,MAAI,KAAK,OAAO,SAAS;AAAY,WAAO;AAC5C,QAAM,aAAa,cAAQ,MAAM,WAAW,gBAAzB,mBAAsC,KAAK;AAC9D,MAAI,CAAC,EAAE,oBAAoB;AAAa,WAAO;AAC/C,MAAI,WAAW,OAAO,UAAU,WAAW;AACzC,QAAI,CAAC,gBAAgB,aAAa;AAChC,aAAO;AAAA;AAAA;AAGX,SAAO;AAAA;AAtBO;AAyBT,MAAM,kBAAkB,wBAAC,YAAoB;AAClD,SAAO,QAAQ,SAAS,gBAAgB,QAAQ,SAAS;AAAA,GAD5B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -90,6 +90,7 @@ function getMediaQueryTernary(ternary, jsxPath, sourcePath) {
|
|
|
90
90
|
}
|
|
91
91
|
__name(getMediaQueryTernary, "getMediaQueryTernary");
|
|
92
92
|
function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery) {
|
|
93
|
+
var _a, _b, _c;
|
|
93
94
|
if (inlineMediaQuery) {
|
|
94
95
|
return {
|
|
95
96
|
key: inlineMediaQuery,
|
|
@@ -103,7 +104,7 @@ function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery)
|
|
|
103
104
|
const binding = bindings[name];
|
|
104
105
|
if (!binding)
|
|
105
106
|
return false;
|
|
106
|
-
const bindingNode = binding.path
|
|
107
|
+
const bindingNode = (_a = binding.path) == null ? void 0 : _a.node;
|
|
107
108
|
if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init)
|
|
108
109
|
return false;
|
|
109
110
|
if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath))
|
|
@@ -112,7 +113,7 @@ function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery)
|
|
|
112
113
|
}
|
|
113
114
|
if (t.isIdentifier(test)) {
|
|
114
115
|
const key = test.name;
|
|
115
|
-
const node = jsxPath.scope.getBinding(test.name)
|
|
116
|
+
const node = (_c = (_b = jsxPath.scope.getBinding(test.name)) == null ? void 0 : _b.path) == null ? void 0 : _c.node;
|
|
116
117
|
if (!t.isVariableDeclarator(node))
|
|
117
118
|
return false;
|
|
118
119
|
if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath))
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/extractMediaStyle.ts"],
|
|
4
4
|
"sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { TamaguiInternalConfig } from '@tamagui/core'\nimport { getStylesAtomic, mediaObjectToString } from '@tamagui/core-node'\nimport { ViewStyle } from 'react-native'\n\nimport { MEDIA_SEP } from '../constants'\nimport { StyleObject, Ternary } from '../types'\nimport { isInsideTamagui, isPresent } from './extractHelpers'\n\nexport function extractMediaStyle(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n tamaguiConfig: TamaguiInternalConfig,\n sourcePath: string,\n importance = 0,\n shouldPrintDebug = false\n) {\n const mt = getMediaQueryTernary(ternary, jsxPath, sourcePath)\n if (!mt) {\n return null\n }\n const { key } = mt\n const mq = tamaguiConfig.media[key]\n if (!mq) {\n console.error(`Media query \"${key}\" not found: ${Object.keys(tamaguiConfig.media)}`)\n return null\n }\n const getStyleObj = (styleObj: ViewStyle | null, negate = false) => {\n return styleObj ? { styleObj, negate } : null\n }\n const styleOpts = [\n getStyleObj(ternary.consequent, false),\n getStyleObj(ternary.alternate, true),\n ].filter(isPresent)\n if (shouldPrintDebug && !styleOpts.length) {\n console.log(' media query, no styles?')\n return null\n }\n // for now order first strongest\n const mediaKeys = Object.keys(tamaguiConfig.media)\n const mediaKeyPrecendence = mediaKeys.reduce((acc, cur, i) => {\n acc[cur] = new Array(importance + 1).fill(':root').join('')\n return acc\n }, {})\n let mediaStyles: StyleObject[] = []\n for (const { styleObj, negate } of styleOpts) {\n const styles = getStylesAtomic(styleObj)\n const singleMediaStyles = styles.map((style) => {\n const negKey = negate ? '0' : ''\n const ogPrefix = style.identifier.slice(0, style.identifier.indexOf('-') + 1)\n // adds an extra separator before and after to detect later in concatClassName\n // so it goes from: \"_f-[hash]\"\n // to: \"_f-_sm0_[hash]\" or \"_f-_sm_[hash]\"\n const identifier = `${style.identifier.replace(\n ogPrefix,\n `${ogPrefix}${MEDIA_SEP}${key}${negKey}${MEDIA_SEP}`\n )}`\n const className = `.${identifier}`\n const mediaSelector = mediaObjectToString(tamaguiConfig.media[key])\n const screenStr = negate ? 'not all' : 'screen'\n const mediaQuery = `${screenStr} and ${mediaSelector}`\n const precendencePrefix = mediaKeyPrecendence[key]\n const styleInner = style.rules[0].replace(style.identifier, identifier)\n // combines media queries if they already exist\n let styleRule = ''\n if (styleInner.includes('@media')) {\n // combine\n styleRule = styleInner.replace('{', ` and ${mediaQuery} {`)\n } else {\n styleRule = `@media ${mediaQuery} { ${precendencePrefix} ${styleInner} }`\n }\n return {\n ...style,\n identifier,\n className,\n rules: [styleRule],\n }\n })\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' media styles:', importance, singleMediaStyles.map(x => x.identifier).join(', '))\n }\n // add to output\n mediaStyles = [...mediaStyles, ...singleMediaStyles]\n }\n // filter out\n ternary.remove()\n return { mediaStyles, ternaryWithoutMedia: mt.ternaryWithoutMedia }\n}\n\nfunction getMediaQueryTernary(\n ternary: Ternary,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string\n): null | {\n key: string\n bindingName: string\n ternaryWithoutMedia: Ternary | null\n} {\n // this handles unwrapping logical && media query ternarys\n // first, unwrap if it has media logicalExpression\n if (t.isLogicalExpression(ternary.test) && ternary.test.operator === '&&') {\n // *should* be normalized to always be on left side, TODO verify\n const mediaLeft = getMediaInfoFromExpression(\n ternary.test.left,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (mediaLeft) {\n return {\n ...mediaLeft,\n ternaryWithoutMedia: {\n ...ternary,\n test: ternary.test.right,\n },\n }\n }\n }\n // const media = useMedia()\n // ... media.sm\n const result = getMediaInfoFromExpression(\n ternary.test,\n jsxPath,\n sourcePath,\n ternary.inlineMediaQuery\n )\n if (result) {\n return {\n ...result,\n ternaryWithoutMedia: null,\n }\n }\n return null\n}\n\nfunction getMediaInfoFromExpression(\n test: t.Expression,\n jsxPath: NodePath<t.JSXElement>,\n sourcePath: string,\n inlineMediaQuery?: string\n) {\n if (inlineMediaQuery) {\n return {\n key: inlineMediaQuery,\n bindingName: inlineMediaQuery,\n }\n }\n if (t.isMemberExpression(test) && t.isIdentifier(test.object) && t.isIdentifier(test.property)) {\n const name = test.object['name']\n const key = test.property['name']\n const bindings = jsxPath.scope.getAllBindings()\n const binding = bindings[name]\n if (!binding) return false\n const bindingNode = binding.path?.node\n if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init) return false\n if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath)) return false\n return { key, bindingName: name }\n }\n if (t.isIdentifier(test)) {\n const key = test.name\n const node = jsxPath.scope.getBinding(test.name)?.path?.node\n if (!t.isVariableDeclarator(node)) return false\n if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath)) return false\n return { key, bindingName: key }\n }\n return null\n}\n\nexport function isValidMediaCall(\n jsxPath: NodePath<t.JSXElement>,\n init: t.Expression,\n sourcePath: string\n) {\n if (!t.isCallExpression(init)) return false\n if (!t.isIdentifier(init.callee)) return false\n // TODO could support renaming useMedia by looking up import first\n if (init.callee.name !== 'useMedia') return false\n const bindings = jsxPath.scope.getAllBindings()\n const mediaBinding = bindings['useMedia']\n if (!mediaBinding) return false\n const useMediaImport = mediaBinding.path.parent\n if (!t.isImportDeclaration(useMediaImport)) return false\n if (useMediaImport.source.value !== 'tamagui') {\n if (!isInsideTamagui(sourcePath)) {\n return false\n }\n }\n return true\n}\n"],
|
|
5
|
-
"mappings": ";;AACA;AAEA;AAGA;AAEA;AAEO,2BACL,SACA,SACA,eACA,YACA,aAAa,GACb,mBAAmB,OACnB;AACA,QAAM,KAAK,qBAAqB,SAAS,SAAS;AAClD,MAAI,CAAC,IAAI;AACP,WAAO;AAAA;AAET,QAAM,EAAE,QAAQ;AAChB,QAAM,KAAK,cAAc,MAAM;AAC/B,MAAI,CAAC,IAAI;AACP,YAAQ,MAAM,gBAAgB,mBAAmB,OAAO,KAAK,cAAc;AAC3E,WAAO;AAAA;AAET,QAAM,cAAc,wBAAC,UAA4B,SAAS,UAAU;AAClE,WAAO,WAAW,EAAE,UAAU,WAAW;AAAA,KADvB;AAGpB,QAAM,YAAY;AAAA,IAChB,YAAY,QAAQ,YAAY;AAAA,IAChC,YAAY,QAAQ,WAAW;AAAA,IAC/B,OAAO;AACT,MAAI,oBAAoB,CAAC,UAAU,QAAQ;AACzC,YAAQ,IAAI;AACZ,WAAO;AAAA;AAGT,QAAM,YAAY,OAAO,KAAK,cAAc;AAC5C,QAAM,sBAAsB,UAAU,OAAO,CAAC,KAAK,KAAK,MAAM;AAC5D,QAAI,OAAO,IAAI,MAAM,aAAa,GAAG,KAAK,SAAS,KAAK;AACxD,WAAO;AAAA,KACN;AACH,MAAI,cAA6B;AACjC,aAAW,EAAE,UAAU,YAAY,WAAW;AAC5C,UAAM,SAAS,gBAAgB;AAC/B,UAAM,oBAAoB,OAAO,IAAI,CAAC,UAAU;AAC9C,YAAM,SAAS,SAAS,MAAM;AAC9B,YAAM,WAAW,MAAM,WAAW,MAAM,GAAG,MAAM,WAAW,QAAQ,OAAO;AAI3E,YAAM,aAAa,GAAG,MAAM,WAAW,QACrC,UACA,GAAG,WAAW,YAAY,MAAM,SAAS;AAE3C,YAAM,YAAY,IAAI;AACtB,YAAM,gBAAgB,oBAAoB,cAAc,MAAM;AAC9D,YAAM,YAAY,SAAS,YAAY;AACvC,YAAM,aAAa,GAAG,iBAAiB;AACvC,YAAM,oBAAoB,oBAAoB;AAC9C,YAAM,aAAa,MAAM,MAAM,GAAG,QAAQ,MAAM,YAAY;AAE5D,UAAI,YAAY;AAChB,UAAI,WAAW,SAAS,WAAW;AAEjC,oBAAY,WAAW,QAAQ,KAAK,QAAQ;AAAA,aACvC;AACL,oBAAY,UAAU,gBAAgB,qBAAqB;AAAA;AAE7D,aAAO;AAAA,WACF;AAAA,QACH;AAAA,QACA;AAAA,QACA,OAAO,CAAC;AAAA;AAAA;AAGZ,QAAI,kBAAkB;AAEpB,cAAQ,IAAI,mBAAmB,YAAY,kBAAkB,IAAI,OAAK,EAAE,YAAY,KAAK;AAAA;AAG3F,kBAAc,CAAC,GAAG,aAAa,GAAG;AAAA;AAGpC,UAAQ;AACR,SAAO,EAAE,aAAa,qBAAqB,GAAG;AAAA;AA9EhC;AAiFhB,8BACE,SACA,SACA,YAKA;AAGA,MAAI,EAAE,oBAAoB,QAAQ,SAAS,QAAQ,KAAK,aAAa,MAAM;AAEzE,UAAM,YAAY,2BAChB,QAAQ,KAAK,MACb,SACA,YACA,QAAQ;AAEV,QAAI,WAAW;AACb,aAAO;AAAA,WACF;AAAA,QACH,qBAAqB;AAAA,aAChB;AAAA,UACH,MAAM,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA;AAO3B,QAAM,SAAS,2BACb,QAAQ,MACR,SACA,YACA,QAAQ;AAEV,MAAI,QAAQ;AACV,WAAO;AAAA,SACF;AAAA,MACH,qBAAqB;AAAA;AAAA;AAGzB,SAAO;AAAA;AA3CA;AA8CT,oCACE,MACA,SACA,YACA,kBACA;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -33,11 +33,12 @@ function extractToClassNames({
|
|
|
33
33
|
threaded,
|
|
34
34
|
cssPath
|
|
35
35
|
}) {
|
|
36
|
+
var _a;
|
|
36
37
|
if (typeof source !== "string") {
|
|
37
38
|
throw new Error("`source` must be a string of javascript");
|
|
38
39
|
}
|
|
39
40
|
invariant(typeof sourcePath === "string" && path.isAbsolute(sourcePath), "`sourcePath` must be an absolute path to a .js file");
|
|
40
|
-
const shouldLogTiming = options.logTimings
|
|
41
|
+
const shouldLogTiming = (_a = options.logTimings) != null ? _a : true;
|
|
41
42
|
const start = Date.now();
|
|
42
43
|
const mem = shouldLogTiming ? process.memoryUsage() : null;
|
|
43
44
|
let ast;
|
|
@@ -74,13 +75,14 @@ function extractToClassNames({
|
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
const ensureNeededPrevStyle = /* @__PURE__ */ __name((style) => {
|
|
78
|
+
var _a2;
|
|
77
79
|
const keys = Object.keys(style);
|
|
78
80
|
if (!keys.some((key) => mergeStyleGroups[key])) {
|
|
79
81
|
return style;
|
|
80
82
|
}
|
|
81
83
|
for (const k in mergeStyleGroups) {
|
|
82
84
|
if (k in viewStyles) {
|
|
83
|
-
style[k] = style[k]
|
|
85
|
+
style[k] = (_a2 = style[k]) != null ? _a2 : viewStyles[k];
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
return style;
|
|
@@ -144,7 +146,7 @@ function extractToClassNames({
|
|
|
144
146
|
continue;
|
|
145
147
|
}
|
|
146
148
|
}
|
|
147
|
-
const ternary = mediaExtraction
|
|
149
|
+
const ternary = (mediaExtraction == null ? void 0 : mediaExtraction.ternaryWithoutMedia) || attr.value;
|
|
148
150
|
const consInfo = addStyles(ternary.consequent);
|
|
149
151
|
const altInfo = addStyles(ternary.alternate);
|
|
150
152
|
const cCN = consInfo.map((x) => x.identifier).join(" ");
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/extractToClassNames.ts"],
|
|
4
4
|
"sourcesContent": ["import * as path from 'path'\nimport { basename } from 'path'\nimport * as util from 'util'\n\nimport generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport { getStylesAtomic } from '@tamagui/core-node'\nimport { concatClassName } from '@tamagui/helpers'\nimport invariant from 'invariant'\nimport { getRemainingRequest } from 'loader-utils'\nimport { ViewStyle } from 'react-native'\n\nimport { ClassNameObject, StyleObject, TamaguiOptions } from '../types'\nimport { babelParse } from './babelParse'\nimport { buildClassName } from './buildClassName'\nimport { Extractor } from './createExtractor'\nimport { ensureImportingConcat } from './ensureImportingConcat'\nimport { isSimpleSpread } from './extractHelpers'\nimport { extractMediaStyle } from './extractMediaStyle'\nimport { hoistClassNames } from './hoistClassNames'\nimport { logLines } from './logLines'\n\nexport const CONCAT_CLASSNAME_IMPORT = 'concatClassName'\n\nconst mergeStyleGroups = {\n shadowOpacity: true,\n shadowRadius: true,\n shadowColor: true,\n shadowOffset: true,\n}\n\nexport function extractToClassNames({\n loader,\n extractor,\n source,\n sourcePath,\n options,\n shouldPrintDebug,\n threaded,\n cssPath,\n}: {\n loader: any\n extractor: Extractor\n source: string | Buffer\n sourcePath: string\n options: TamaguiOptions\n shouldPrintDebug: boolean\n cssPath: string\n threaded?: boolean\n}): null | {\n js: string | Buffer\n styles: string\n stylesPath?: string\n ast: t.File\n map: any // RawSourceMap from 'source-map'\n} {\n if (typeof source !== 'string') {\n throw new Error('`source` must be a string of javascript')\n }\n invariant(\n typeof sourcePath === 'string' && path.isAbsolute(sourcePath),\n '`sourcePath` must be an absolute path to a .js file'\n )\n\n const shouldLogTiming = options.logTimings ?? true\n const start = Date.now()\n const mem = shouldLogTiming ? process.memoryUsage() : null\n\n // Using a map for (officially supported) guaranteed insertion order\n let ast: t.File\n\n try {\n // @ts-ignore\n ast = babelParse(source)\n } catch (err) {\n console.error('babel parse error:', sourcePath)\n throw err\n }\n\n const cssMap = new Map<string, { css: string; commentTexts: string[] }>()\n const existingHoists: { [key: string]: t.Identifier } = {}\n\n const res = extractor.parse(ast, {\n sourcePath,\n shouldPrintDebug,\n ...options,\n getFlattenedNode: ({ tag }) => tag,\n onExtractTag: ({\n attrs,\n node,\n attemptEval,\n jsxPath,\n originalNodeName,\n filePath,\n lineNumbers,\n programPath,\n }) => {\n let finalClassNames: ClassNameObject[] = []\n let finalAttrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = []\n let finalStyles: StyleObject[] = []\n\n const viewStyles = {}\n for (const attr of attrs) {\n if (attr.type === 'style') {\n Object.assign(viewStyles, attr.value)\n }\n }\n\n const ensureNeededPrevStyle = (style: ViewStyle) => {\n // ensure all group keys are merged\n const keys = Object.keys(style)\n if (!keys.some((key) => mergeStyleGroups[key])) {\n return style\n }\n for (const k in mergeStyleGroups) {\n if (k in viewStyles) {\n style[k] = style[k] ?? viewStyles[k]\n }\n }\n return style\n }\n\n const addStyles = (style: ViewStyle | null) => {\n if (!style) return []\n const styleWithPrev = ensureNeededPrevStyle(style)\n const res = getStylesAtomic(styleWithPrev)\n if (res.length) {\n finalStyles = [...finalStyles, ...res]\n }\n return res\n }\n\n // 1 to start above any :hover styles\n let lastMediaImportance = 1\n for (const attr of attrs) {\n switch (attr.type) {\n case 'style':\n const styles = addStyles(attr.value)\n const newClassNames = concatClassName(styles.map((x) => x.identifier).join(' '))\n // prettier-ignore\n const existing = finalClassNames.find((x) => x.type == 'StringLiteral') as t.StringLiteral | null\n if (existing) {\n existing.value = `${existing.value} ${newClassNames}`\n } else {\n finalClassNames = [...finalClassNames, t.stringLiteral(newClassNames)]\n }\n if (shouldPrintDebug) {\n // prettier-ignore\n console.log(' classnames (after)\\n', logLines(finalClassNames.map(x => x['value']).join(' ')))\n }\n break\n case 'attr':\n const val = attr.value\n if (t.isJSXSpreadAttribute(val)) {\n if (isSimpleSpread(val)) {\n finalClassNames.push(\n t.logicalExpression(\n '&&',\n val.argument,\n t.memberExpression(val.argument, t.identifier('className'))\n )\n )\n }\n } else if (val.name.name === 'className') {\n const value = val.value\n if (value) {\n try {\n const evaluatedValue = attemptEval(value)\n finalClassNames.push(t.stringLiteral(evaluatedValue))\n } catch (e) {\n finalClassNames.push(value['expression'])\n }\n }\n continue\n }\n finalAttrs.push(val)\n break\n case 'ternary':\n const mediaExtraction = extractMediaStyle(\n attr.value,\n jsxPath,\n extractor.getTamagui(),\n sourcePath,\n lastMediaImportance,\n shouldPrintDebug\n )\n if (mediaExtraction) {\n lastMediaImportance++\n finalStyles = [...finalStyles, ...mediaExtraction.mediaStyles]\n finalClassNames = [\n ...finalClassNames,\n ...mediaExtraction.mediaStyles.map((x) => t.stringLiteral(x.identifier)),\n ]\n if (!mediaExtraction.ternaryWithoutMedia) {\n continue\n }\n }\n const ternary = mediaExtraction?.ternaryWithoutMedia || attr.value\n const consInfo = addStyles(ternary.consequent)\n const altInfo = addStyles(ternary.alternate)\n const cCN = consInfo.map((x) => x.identifier).join(' ')\n const aCN = altInfo.map((x) => x.identifier).join(' ')\n if (consInfo.length && altInfo.length) {\n finalClassNames.push(\n t.conditionalExpression(ternary.test, t.stringLiteral(cCN), t.stringLiteral(aCN))\n )\n } else {\n finalClassNames.push(\n t.conditionalExpression(\n ternary.test,\n t.stringLiteral(' ' + cCN),\n t.stringLiteral(' ' + aCN)\n )\n )\n }\n break\n }\n }\n\n node.attributes = finalAttrs\n\n if (finalClassNames.length) {\n // inserts the _cn variable and uses it for className\n const names = buildClassName(finalClassNames)\n const nameExpr = names ? hoistClassNames(jsxPath, existingHoists, names) : null\n let expr = nameExpr\n\n // if has some spreads, use concat helper\n if (nameExpr && !t.isIdentifier(nameExpr)) {\n ensureImportingConcat(programPath)\n const simpleSpreads = attrs.filter(\n (x) => t.isJSXSpreadAttribute(x.value) && isSimpleSpread(x.value)\n )\n expr = t.callExpression(t.identifier(CONCAT_CLASSNAME_IMPORT), [\n expr,\n ...simpleSpreads.map((val) => val.value['argument']),\n ])\n }\n\n node.attributes.push(\n t.jsxAttribute(t.jsxIdentifier('className'), t.jsxExpressionContainer(expr))\n )\n }\n\n const comment = util.format('/* %s:%s (%s) */', filePath, lineNumbers, originalNodeName)\n\n for (const { className, rules } of finalStyles) {\n if (cssMap.has(className)) {\n if (comment) {\n const val = cssMap.get(className)!\n val.commentTexts.push(comment)\n cssMap.set(className, val)\n }\n } else if (rules.length) {\n if (rules.length > 1) {\n console.log(' rules error', { rules })\n throw new Error(`Shouldn't have more than one rule`)\n }\n cssMap.set(className, {\n css: rules[0],\n commentTexts: [comment],\n })\n }\n }\n },\n })\n\n if (!res || (!res.modified && !res.optimized && !res.flattened)) {\n if (shouldPrintDebug) {\n console.log('no res or none modified', res)\n }\n return null\n }\n\n const styles = Array.from(cssMap.values())\n .map((x) => x.css)\n .join('\\n')\n .trim()\n\n if (styles) {\n const cssQuery = threaded\n ? `cssData=${Buffer.from(styles).toString('base64')}`\n : `cssPath=${cssPath}`\n const remReq = getRemainingRequest(loader)\n const importPath = `${cssPath}!=!tamagui-loader?${cssQuery}!${remReq}`\n ast.program.body.unshift(t.importDeclaration([], t.stringLiteral(importPath)))\n }\n\n const result = generate(\n ast,\n {\n concise: false,\n filename: sourcePath,\n retainLines: false,\n sourceFileName: sourcePath,\n sourceMaps: true,\n },\n source\n )\n\n if (shouldPrintDebug) {\n console.log(\n '\\n -------- output code ------- \\n\\n',\n result.code\n .split('\\n')\n .filter((x) => !x.startsWith('//'))\n .join('\\n')\n )\n console.log('\\n -------- output style -------- \\n\\n', styles)\n }\n\n if (shouldLogTiming) {\n const memUsed = mem\n ? Math.round(((process.memoryUsage().heapUsed - mem.heapUsed) / 1024 / 1204) * 10) / 10\n : 0\n const timing = `${Date.now() - start}`.padStart(3)\n const path = basename(sourcePath).padStart(40)\n const numOptimized = `${res.optimized}`.padStart(4)\n const memory = memUsed > 10 ? `used ${memUsed}MB` : ''\n console.log(\n ` \uD83E\uDD5A ${path} ${timing}ms \u05C1\u00B7 ${numOptimized} optimized \u00B7 ${res.flattened} flattened ${memory}`\n )\n }\n\n return {\n ast,\n styles,\n js: result.code,\n map: result.map,\n }\n}\n"],
|
|
5
|
-
"mappings": ";;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEO,MAAM,0BAA0B;AAEvC,MAAM,mBAAmB;AAAA,EACvB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,aAAa;AAAA,EACb,cAAc;AAAA;AAGT,6BAA6B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,GAgBA;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -4,6 +4,7 @@ import generate from "@babel/generator";
|
|
|
4
4
|
import * as t from "@babel/types";
|
|
5
5
|
import invariant from "invariant";
|
|
6
6
|
function normalizeTernaries(ternaries) {
|
|
7
|
+
var _a, _b;
|
|
7
8
|
invariant(Array.isArray(ternaries), "extractStaticTernaries expects param 1 to be an array of ternaries");
|
|
8
9
|
if (ternaries.length === 0) {
|
|
9
10
|
return [];
|
|
@@ -35,8 +36,8 @@ function normalizeTernaries(ternaries) {
|
|
|
35
36
|
remove
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
|
-
const altStyle = (shouldSwap ? consequent : alternate)
|
|
39
|
-
const consStyle = (shouldSwap ? alternate : consequent)
|
|
39
|
+
const altStyle = (_a = shouldSwap ? consequent : alternate) != null ? _a : {};
|
|
40
|
+
const consStyle = (_b = shouldSwap ? alternate : consequent) != null ? _b : {};
|
|
40
41
|
Object.assign(ternariesByKey[key].alternate, altStyle);
|
|
41
42
|
Object.assign(ternariesByKey[key].consequent, consStyle);
|
|
42
43
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/normalizeTernaries.ts"],
|
|
4
4
|
"sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\nimport invariant from 'invariant'\n\nimport { Ternary } from '../types'\n\nexport function normalizeTernaries(ternaries: Ternary[]) {\n invariant(Array.isArray(ternaries), 'extractStaticTernaries expects param 1 to be an array of ternaries')\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 const key = generate(ternaryTest).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
|
-
"mappings": ";;AAAA;AACA;AACA;AAIO,4BAA4B,WAAsB;
|
|
5
|
+
"mappings": ";;AAAA;AACA;AACA;AAIO,4BAA4B,WAAsB;AANzD;AAOE,YAAU,MAAM,QAAQ,YAAY;AAEpC,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO;AAAA;AAGT,QAAM,iBAA6C;AAEnD,WAAS,MAAM,IAAI,MAAM,UAAU,QAAQ,EAAE,MAAM,OAAO;AACxD,UAAM,EAAE,MAAM,YAAY,WAAW,WAAW,SAAS,UAAU;AAEnE,QAAI,cAAc;AAGlB,QAAI,EAAE,sBAAsB,OAAO;AACjC,oBAAe,KAAa;AAAA;AAI9B,QAAI,aAAa;AACjB,QAAI,EAAE,kBAAkB,SAAS,KAAK,aAAa,KAAK;AACtD,oBAAc,KAAK;AACnB,mBAAa;AAAA,eACJ,EAAE,mBAAmB,OAAO;AACrC,UAAI,KAAK,aAAa,SAAS,KAAK,aAAa,MAAM;AACrD,sBAAc,EAAE,iBAAiB,KAAK,UAAU,KAAK,MAAM,KAAK;AAChE,qBAAa;AAAA;AAAA;AAIjB,UAAM,MAAM,SAAS,aAAa;AAElC,QAAI,CAAC,eAAe,MAAM;AACxB,qBAAe,OAAO;AAAA,WACjB;AAAA,QACH,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,MAAM;AAAA,QACN;AAAA;AAAA;AAGJ,UAAM,WAAY,mBAAa,aAAa,cAA1B,YAAwC;AAC1D,UAAM,YAAa,mBAAa,YAAY,eAAzB,YAAwC;AAC3D,WAAO,OAAO,eAAe,KAAK,WAAW;AAC7C,WAAO,OAAO,eAAe,KAAK,YAAY;AAAA;AAGhD,QAAM,oBAAoB,OAAO,KAAK,gBAAgB,IAAI,CAAC,QAAQ;AACjE,WAAO,eAAe;AAAA;AAGxB,SAAO;AAAA;AApDO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -6,8 +6,9 @@ const hooks = {
|
|
|
6
6
|
useTheme: true
|
|
7
7
|
};
|
|
8
8
|
function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
9
|
+
var _a;
|
|
9
10
|
compFn.scope.crawl();
|
|
10
|
-
let bodyStatements = compFn
|
|
11
|
+
let bodyStatements = compFn == null ? void 0 : compFn.get("body");
|
|
11
12
|
if (!bodyStatements) {
|
|
12
13
|
console.log("no body statemnts?", compFn);
|
|
13
14
|
return;
|
|
@@ -32,7 +33,8 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
32
33
|
continue;
|
|
33
34
|
}
|
|
34
35
|
const isBindingReferenced = /* @__PURE__ */ __name((name) => {
|
|
35
|
-
|
|
36
|
+
var _a2;
|
|
37
|
+
return !!((_a2 = statement.scope.getBinding(name)) == null ? void 0 : _a2.referenced);
|
|
36
38
|
}, "isBindingReferenced");
|
|
37
39
|
for (const declarator of declarations) {
|
|
38
40
|
const id = declarator.get("id");
|
|
@@ -65,7 +67,7 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
65
67
|
if (shouldRemove) {
|
|
66
68
|
declarator.remove();
|
|
67
69
|
if (shouldPrintDebug) {
|
|
68
|
-
console.log(` [\u{1FA9D}] removed ${id.node["name"]
|
|
70
|
+
console.log(` [\u{1FA9D}] removed ${(_a = id.node["name"]) != null ? _a : ""}`);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/extractor/removeUnusedHooks.ts"],
|
|
4
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) {\n compFn.scope.crawl()\n // check the top level statements\n let bodyStatements = compFn?.get('body')\n if (!bodyStatements) {\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 console.log(` [\uD83E\uDE9D] removed ${id.node['name'] ?? ''}`)\n }\n }\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";;AACA;AAEA,MAAM,QAAQ;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA;AAGL,2BAA2B,QAAuB,kBAA2B;
|
|
5
|
+
"mappings": ";;AACA;AAEA,MAAM,QAAQ;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA;AAGL,2BAA2B,QAAuB,kBAA2B;AARpF;AASE,SAAO,MAAM;AAEb,MAAI,iBAAiB,iCAAQ,IAAI;AACjC,MAAI,CAAC,gBAAgB;AACnB,YAAQ,IAAI,sBAAsB;AAClC;AAAA;AAEF,MAAI,CAAC,MAAM,QAAQ,iBAAiB;AAClC,QAAI,eAAe,wBAAwB;AACzC,uBAAiB,eAAe,MAAM,KAAK,IAAI;AAAA,WAC1C;AACL,uBAAiB,eAAe,IAAI;AAAA;AAAA;AAGxC,MAAI,CAAC,kBAAkB,CAAC,MAAM,QAAQ,iBAAiB;AACrD;AAAA;AAEF,QAAM,aAAa;AACnB,aAAW,aAAa,YAAY;AAClC,QAAI,CAAC,UAAU,yBAAyB;AACtC;AAAA;AAEF,UAAM,eAAe,UAAU,IAAI;AACnC,QAAI,CAAC,MAAM,QAAQ,eAAe;AAChC;AAAA;AAEF,UAAM,sBAAsB,wBAAC,SAAiB;AAnClD;AAoCM,aAAO,CAAC,CAAC,kBAAU,MAAM,WAAW,UAA3B,oBAAkC;AAAA,OADjB;AAG5B,eAAW,cAAc,cAAc;AACrC,YAAM,KAAK,WAAW,IAAI;AAC1B,YAAM,OAAO,WAAW,KAAK;AAC7B,UAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,OAAO;AAC5C;AAAA;AAEF,YAAM,eAAgB,OAAM;AAC1B,cAAM,SACJ,EAAE,iBAAiB,SAAS,EAAE,aAAa,KAAK,WAAW,MAAM,KAAK,OAAO;AAC/E,YAAI,CAAC,QAAQ;AACX,iBAAO;AAAA;AAET,YAAI,EAAE,aAAa,GAAG,OAAO;AAE3B,gBAAM,OAAO,GAAG,KAAK;AACrB,iBAAO,CAAC,oBAAoB;AAAA,mBACnB,EAAE,gBAAgB,GAAG,OAAO;AAErC,gBAAM,YAAY,GAAG,IAAI;AACzB,iBAAO,UAAU,MAAM,CAAC,SAAS;AAC/B,gBAAI,CAAC,KAAK;AAAoB,qBAAO;AACrC,kBAAM,QAAQ,KAAK,IAAI;AACvB,gBAAI,MAAM,QAAQ,UAAU,CAAC,MAAM;AAAgB,qBAAO;AAC1D,kBAAM,OAAO,MAAM,KAAK;AACxB,mBAAO,CAAC,oBAAoB;AAAA;AAAA;AAGhC,eAAO;AAAA;AAET,UAAI,cAAc;AAChB,mBAAW;AACX,YAAI,kBAAkB;AACpB,kBAAQ,IAAI,yBAAkB,SAAG,KAAK,YAAR,YAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AA9D3C;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -70,7 +70,10 @@ function createExtractor() {
|
|
|
70
70
|
const isInternalImport = /* @__PURE__ */ __name((importStr) => {
|
|
71
71
|
return isInsideTamagui(sourcePath) && importStr[0] === ".";
|
|
72
72
|
}, "isInternalImport");
|
|
73
|
-
const validComponents = Object.keys(components).filter((key) =>
|
|
73
|
+
const validComponents = Object.keys(components).filter((key) => {
|
|
74
|
+
var _a;
|
|
75
|
+
return key[0].toUpperCase() === key[0] && !!((_a = components[key]) == null ? void 0 : _a.staticConfig);
|
|
76
|
+
}).reduce((obj, name) => {
|
|
74
77
|
obj[name] = components[name];
|
|
75
78
|
return obj;
|
|
76
79
|
}, {});
|
|
@@ -115,11 +118,12 @@ function createExtractor() {
|
|
|
115
118
|
}
|
|
116
119
|
},
|
|
117
120
|
JSXElement(traversePath) {
|
|
121
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
118
122
|
const node = traversePath.node.openingElement;
|
|
119
123
|
const ogAttributes = node.attributes;
|
|
120
124
|
const componentName = findComponentName(traversePath.scope);
|
|
121
125
|
const closingElement = traversePath.node.closingElement;
|
|
122
|
-
if (t.isJSXMemberExpression(closingElement
|
|
126
|
+
if (t.isJSXMemberExpression(closingElement == null ? void 0 : closingElement.name) || !t.isJSXIdentifier(node.name)) {
|
|
123
127
|
return;
|
|
124
128
|
}
|
|
125
129
|
const binding = traversePath.scope.getBinding(node.name.name);
|
|
@@ -160,8 +164,8 @@ function createExtractor() {
|
|
|
160
164
|
}
|
|
161
165
|
const { staticConfig } = component;
|
|
162
166
|
const isTextView = staticConfig.isText || false;
|
|
163
|
-
const validStyles = staticConfig
|
|
164
|
-
let tagName = staticConfig.defaultProps
|
|
167
|
+
const validStyles = (_a = staticConfig == null ? void 0 : staticConfig.validStyles) != null ? _a : {};
|
|
168
|
+
let tagName = (_c = (_b = staticConfig.defaultProps) == null ? void 0 : _b.tag) != null ? _c : isTextView ? "span" : "div";
|
|
165
169
|
traversePath.get("openingElement").get("attributes").forEach((path) => {
|
|
166
170
|
const attr = path.node;
|
|
167
171
|
if (t.isJSXSpreadAttribute(attr))
|
|
@@ -175,10 +179,10 @@ function createExtractor() {
|
|
|
175
179
|
});
|
|
176
180
|
const flatNode = getFlattenedNode({ isTextView, tag: tagName });
|
|
177
181
|
const deoptProps = new Set([
|
|
178
|
-
...props.deoptProps
|
|
179
|
-
...staticConfig.deoptProps
|
|
182
|
+
...(_d = props.deoptProps) != null ? _d : [],
|
|
183
|
+
...(_e = staticConfig.deoptProps) != null ? _e : []
|
|
180
184
|
]);
|
|
181
|
-
const excludeProps = new Set(props.excludeProps
|
|
185
|
+
const excludeProps = new Set((_f = props.excludeProps) != null ? _f : []);
|
|
182
186
|
const isExcludedProp = /* @__PURE__ */ __name((name) => {
|
|
183
187
|
const res2 = excludeProps.has(name);
|
|
184
188
|
if (res2 && shouldPrintDebug)
|
|
@@ -278,7 +282,8 @@ function createExtractor() {
|
|
|
278
282
|
}
|
|
279
283
|
}).flat(4).filter(isPresent);
|
|
280
284
|
function isStaticAttributeName(name) {
|
|
281
|
-
|
|
285
|
+
var _a2, _b2;
|
|
286
|
+
return !!(!!validStyles[name] || ((_a2 = staticConfig.validPropsExtra) == null ? void 0 : _a2[name]) || !!pseudos[name] || ((_b2 = staticConfig.variants) == null ? void 0 : _b2[name]) || tamaguiConfig.shorthands[name] || (name[0] === "$" ? !!mediaQueryConfig[name.slice(1)] : false));
|
|
282
287
|
}
|
|
283
288
|
__name(isStaticAttributeName, "isStaticAttributeName");
|
|
284
289
|
function isExtractable(obj) {
|
|
@@ -389,7 +394,7 @@ function createExtractor() {
|
|
|
389
394
|
if (UNTOUCHED_PROPS[name]) {
|
|
390
395
|
return attr;
|
|
391
396
|
}
|
|
392
|
-
if (name[0] === "$" && t.isJSXExpressionContainer(attribute
|
|
397
|
+
if (name[0] === "$" && t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
393
398
|
if (disableExtractInlineMedia) {
|
|
394
399
|
return attr;
|
|
395
400
|
}
|
|
@@ -410,7 +415,7 @@ function createExtractor() {
|
|
|
410
415
|
}
|
|
411
416
|
}
|
|
412
417
|
const [value, valuePath] = (() => {
|
|
413
|
-
if (t.isJSXExpressionContainer(attribute
|
|
418
|
+
if (t.isJSXExpressionContainer(attribute == null ? void 0 : attribute.value)) {
|
|
414
419
|
return [attribute.value.expression, path.get("value")];
|
|
415
420
|
} else {
|
|
416
421
|
return [attribute.value, path.get("value")];
|
|
@@ -652,12 +657,13 @@ function createExtractor() {
|
|
|
652
657
|
const shouldFlatten = !shouldDeopt && inlinePropCount === 0 && !hasSpread && staticConfig.neverFlatten !== true && (staticConfig.neverFlatten === "jsx" ? hasOnlyStringChildren : true);
|
|
653
658
|
if (!shouldFlatten) {
|
|
654
659
|
attrs = attrs.reduce((acc, cur) => {
|
|
660
|
+
var _a2, _b2;
|
|
655
661
|
if (cur.type === "style") {
|
|
656
662
|
for (const key in cur.value) {
|
|
657
|
-
const shouldEnsureOverridden = !!staticConfig.ensureOverriddenProp
|
|
663
|
+
const shouldEnsureOverridden = !!((_a2 = staticConfig.ensureOverriddenProp) == null ? void 0 : _a2[key]);
|
|
658
664
|
const isSetInAttrsAlready = attrs.some((x) => x.type === "attr" && x.value.type === "JSXAttribute" && x.value.name.name === key);
|
|
659
665
|
if (!isSetInAttrsAlready) {
|
|
660
|
-
const isVariant = !!staticConfig.variants
|
|
666
|
+
const isVariant = !!((_b2 = staticConfig.variants) == null ? void 0 : _b2[cur.name || ""]);
|
|
661
667
|
if (isVariant || shouldEnsureOverridden) {
|
|
662
668
|
acc.push({
|
|
663
669
|
type: "attr",
|
|
@@ -695,7 +701,7 @@ function createExtractor() {
|
|
|
695
701
|
let prev = null;
|
|
696
702
|
attrs = attrs.reduce((acc, cur) => {
|
|
697
703
|
if (cur.type === "style") {
|
|
698
|
-
if (prev
|
|
704
|
+
if ((prev == null ? void 0 : prev.type) === "style") {
|
|
699
705
|
Object.assign(prev.value, cur.value);
|
|
700
706
|
return acc;
|
|
701
707
|
}
|
|
@@ -708,6 +714,7 @@ function createExtractor() {
|
|
|
708
714
|
console.log(" - attrs (combined \u{1F500}): \n", logLines(attrs.map(attrStr).join(", ")));
|
|
709
715
|
}
|
|
710
716
|
const getStyles = /* @__PURE__ */ __name((props2) => {
|
|
717
|
+
var _a2;
|
|
711
718
|
if (!props2)
|
|
712
719
|
return;
|
|
713
720
|
if (!!excludeProps.size) {
|
|
@@ -717,7 +724,7 @@ function createExtractor() {
|
|
|
717
724
|
}
|
|
718
725
|
}
|
|
719
726
|
const out = postProcessStyles(props2, staticConfig, defaultTheme);
|
|
720
|
-
const next = out
|
|
727
|
+
const next = (_a2 = out == null ? void 0 : out.style) != null ? _a2 : props2;
|
|
721
728
|
if (shouldPrintDebug) {
|
|
722
729
|
console.log(" getStyles props >>\n", logLines(objToStr(props2)));
|
|
723
730
|
console.log(" getStyles next >>\n", logLines(objToStr(next)));
|
|
@@ -773,7 +780,7 @@ function createExtractor() {
|
|
|
773
780
|
if (key in stylePropsTransform) {
|
|
774
781
|
next["transform"] = completeStylesProcessed["transform"];
|
|
775
782
|
} else {
|
|
776
|
-
next[key] = completeStylesProcessed[key]
|
|
783
|
+
next[key] = (_g = completeStylesProcessed[key]) != null ? _g : attr.value[key];
|
|
777
784
|
}
|
|
778
785
|
}
|
|
779
786
|
attr.value = next;
|
|
@@ -30,6 +30,7 @@ const ternaryStr = /* @__PURE__ */ __name((x) => {
|
|
|
30
30
|
].flat().join("");
|
|
31
31
|
}, "ternaryStr");
|
|
32
32
|
function findComponentName(scope) {
|
|
33
|
+
var _a;
|
|
33
34
|
let componentName = "";
|
|
34
35
|
let cur = scope.path;
|
|
35
36
|
while (cur.parentPath && !t.isProgram(cur.parentPath.parent)) {
|
|
@@ -46,17 +47,18 @@ function findComponentName(scope) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
if (t.isFunctionDeclaration(node)) {
|
|
49
|
-
return node.id
|
|
50
|
+
return (_a = node.id) == null ? void 0 : _a.name;
|
|
50
51
|
}
|
|
51
52
|
return componentName;
|
|
52
53
|
}
|
|
53
54
|
__name(findComponentName, "findComponentName");
|
|
54
55
|
function isValidThemeHook(jsxPath, n, sourcePath) {
|
|
56
|
+
var _a;
|
|
55
57
|
if (!t.isIdentifier(n.object) || !t.isIdentifier(n.property))
|
|
56
58
|
return false;
|
|
57
59
|
const bindings = jsxPath.scope.getAllBindings();
|
|
58
60
|
const binding = bindings[n.object.name];
|
|
59
|
-
if (!binding
|
|
61
|
+
if (!(binding == null ? void 0 : binding.path))
|
|
60
62
|
return false;
|
|
61
63
|
if (!binding.path.isVariableDeclarator())
|
|
62
64
|
return false;
|
|
@@ -67,7 +69,7 @@ function isValidThemeHook(jsxPath, n, sourcePath) {
|
|
|
67
69
|
return false;
|
|
68
70
|
if (init.callee.name !== "useTheme")
|
|
69
71
|
return false;
|
|
70
|
-
const importNode = binding.scope.getBinding("useTheme")
|
|
72
|
+
const importNode = (_a = binding.scope.getBinding("useTheme")) == null ? void 0 : _a.path.parent;
|
|
71
73
|
if (!t.isImportDeclaration(importNode))
|
|
72
74
|
return false;
|
|
73
75
|
if (importNode.source.value !== "tamagui") {
|
|
@@ -90,6 +90,7 @@ function getMediaQueryTernary(ternary, jsxPath, sourcePath) {
|
|
|
90
90
|
}
|
|
91
91
|
__name(getMediaQueryTernary, "getMediaQueryTernary");
|
|
92
92
|
function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery) {
|
|
93
|
+
var _a, _b, _c;
|
|
93
94
|
if (inlineMediaQuery) {
|
|
94
95
|
return {
|
|
95
96
|
key: inlineMediaQuery,
|
|
@@ -103,7 +104,7 @@ function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery)
|
|
|
103
104
|
const binding = bindings[name];
|
|
104
105
|
if (!binding)
|
|
105
106
|
return false;
|
|
106
|
-
const bindingNode = binding.path
|
|
107
|
+
const bindingNode = (_a = binding.path) == null ? void 0 : _a.node;
|
|
107
108
|
if (!t.isVariableDeclarator(bindingNode) || !bindingNode.init)
|
|
108
109
|
return false;
|
|
109
110
|
if (!isValidMediaCall(jsxPath, bindingNode.init, sourcePath))
|
|
@@ -112,7 +113,7 @@ function getMediaInfoFromExpression(test, jsxPath, sourcePath, inlineMediaQuery)
|
|
|
112
113
|
}
|
|
113
114
|
if (t.isIdentifier(test)) {
|
|
114
115
|
const key = test.name;
|
|
115
|
-
const node = jsxPath.scope.getBinding(test.name)
|
|
116
|
+
const node = (_c = (_b = jsxPath.scope.getBinding(test.name)) == null ? void 0 : _b.path) == null ? void 0 : _c.node;
|
|
116
117
|
if (!t.isVariableDeclarator(node))
|
|
117
118
|
return false;
|
|
118
119
|
if (!node.init || !isValidMediaCall(jsxPath, node.init, sourcePath))
|
|
@@ -33,11 +33,12 @@ function extractToClassNames({
|
|
|
33
33
|
threaded,
|
|
34
34
|
cssPath
|
|
35
35
|
}) {
|
|
36
|
+
var _a;
|
|
36
37
|
if (typeof source !== "string") {
|
|
37
38
|
throw new Error("`source` must be a string of javascript");
|
|
38
39
|
}
|
|
39
40
|
invariant(typeof sourcePath === "string" && path.isAbsolute(sourcePath), "`sourcePath` must be an absolute path to a .js file");
|
|
40
|
-
const shouldLogTiming = options.logTimings
|
|
41
|
+
const shouldLogTiming = (_a = options.logTimings) != null ? _a : true;
|
|
41
42
|
const start = Date.now();
|
|
42
43
|
const mem = shouldLogTiming ? process.memoryUsage() : null;
|
|
43
44
|
let ast;
|
|
@@ -74,13 +75,14 @@ function extractToClassNames({
|
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
const ensureNeededPrevStyle = /* @__PURE__ */ __name((style) => {
|
|
78
|
+
var _a2;
|
|
77
79
|
const keys = Object.keys(style);
|
|
78
80
|
if (!keys.some((key) => mergeStyleGroups[key])) {
|
|
79
81
|
return style;
|
|
80
82
|
}
|
|
81
83
|
for (const k in mergeStyleGroups) {
|
|
82
84
|
if (k in viewStyles) {
|
|
83
|
-
style[k] = style[k]
|
|
85
|
+
style[k] = (_a2 = style[k]) != null ? _a2 : viewStyles[k];
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
88
|
return style;
|
|
@@ -144,7 +146,7 @@ function extractToClassNames({
|
|
|
144
146
|
continue;
|
|
145
147
|
}
|
|
146
148
|
}
|
|
147
|
-
const ternary = mediaExtraction
|
|
149
|
+
const ternary = (mediaExtraction == null ? void 0 : mediaExtraction.ternaryWithoutMedia) || attr.value;
|
|
148
150
|
const consInfo = addStyles(ternary.consequent);
|
|
149
151
|
const altInfo = addStyles(ternary.alternate);
|
|
150
152
|
const cCN = consInfo.map((x) => x.identifier).join(" ");
|
|
@@ -4,6 +4,7 @@ import generate from "@babel/generator";
|
|
|
4
4
|
import * as t from "@babel/types";
|
|
5
5
|
import invariant from "invariant";
|
|
6
6
|
function normalizeTernaries(ternaries) {
|
|
7
|
+
var _a, _b;
|
|
7
8
|
invariant(Array.isArray(ternaries), "extractStaticTernaries expects param 1 to be an array of ternaries");
|
|
8
9
|
if (ternaries.length === 0) {
|
|
9
10
|
return [];
|
|
@@ -35,8 +36,8 @@ function normalizeTernaries(ternaries) {
|
|
|
35
36
|
remove
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
|
-
const altStyle = (shouldSwap ? consequent : alternate)
|
|
39
|
-
const consStyle = (shouldSwap ? alternate : consequent)
|
|
39
|
+
const altStyle = (_a = shouldSwap ? consequent : alternate) != null ? _a : {};
|
|
40
|
+
const consStyle = (_b = shouldSwap ? alternate : consequent) != null ? _b : {};
|
|
40
41
|
Object.assign(ternariesByKey[key].alternate, altStyle);
|
|
41
42
|
Object.assign(ternariesByKey[key].consequent, consStyle);
|
|
42
43
|
}
|
|
@@ -6,8 +6,9 @@ const hooks = {
|
|
|
6
6
|
useTheme: true
|
|
7
7
|
};
|
|
8
8
|
function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
9
|
+
var _a;
|
|
9
10
|
compFn.scope.crawl();
|
|
10
|
-
let bodyStatements = compFn
|
|
11
|
+
let bodyStatements = compFn == null ? void 0 : compFn.get("body");
|
|
11
12
|
if (!bodyStatements) {
|
|
12
13
|
console.log("no body statemnts?", compFn);
|
|
13
14
|
return;
|
|
@@ -32,7 +33,8 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
32
33
|
continue;
|
|
33
34
|
}
|
|
34
35
|
const isBindingReferenced = /* @__PURE__ */ __name((name) => {
|
|
35
|
-
|
|
36
|
+
var _a2;
|
|
37
|
+
return !!((_a2 = statement.scope.getBinding(name)) == null ? void 0 : _a2.referenced);
|
|
36
38
|
}, "isBindingReferenced");
|
|
37
39
|
for (const declarator of declarations) {
|
|
38
40
|
const id = declarator.get("id");
|
|
@@ -65,7 +67,7 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
65
67
|
if (shouldRemove) {
|
|
66
68
|
declarator.remove();
|
|
67
69
|
if (shouldPrintDebug) {
|
|
68
|
-
console.log(` [\u{1FA9D}] removed ${id.node["name"]
|
|
70
|
+
console.log(` [\u{1FA9D}] removed ${(_a = id.node["name"]) != null ? _a : ""}`);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/static",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.36",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"typings": "types",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
"@babel/traverse": "^7.15.4",
|
|
54
54
|
"@dish/babel-preset": "^0.0.6",
|
|
55
55
|
"@expo/match-media": "^0.1.0",
|
|
56
|
-
"@tamagui/build": "^1.0.0-alpha.
|
|
57
|
-
"@tamagui/core": "^1.0.0-alpha.
|
|
58
|
-
"@tamagui/core-node": "^1.0.0-alpha.
|
|
56
|
+
"@tamagui/build": "^1.0.0-alpha.36",
|
|
57
|
+
"@tamagui/core": "^1.0.0-alpha.36",
|
|
58
|
+
"@tamagui/core-node": "^1.0.0-alpha.36",
|
|
59
59
|
"@tamagui/fake-react-native": "^1.0.0-alpha.17",
|
|
60
|
-
"@tamagui/helpers": "^1.0.0-alpha.
|
|
60
|
+
"@tamagui/helpers": "^1.0.0-alpha.36",
|
|
61
61
|
"babel-literal-to-ast": "^2.1.0",
|
|
62
62
|
"esbuild": "^0.13.12",
|
|
63
63
|
"esbuild-register": "^3.1.2",
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
"invariant": "^2.2.4",
|
|
67
67
|
"loader-utils": "^2.0.0",
|
|
68
68
|
"lodash": "^4.17.21",
|
|
69
|
-
"tamagui": "^1.0.0-alpha.
|
|
69
|
+
"tamagui": "^1.0.0-alpha.36"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"react-native-web": "*"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "d5b75feefe9694ee2f107b69c1be98a5f107eada"
|
|
75
75
|
}
|