@tamagui/static 1.0.0-beta.9 → 1.0.1-beta.101
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/cjs/extractor/accessSafe.js +0 -2
- package/dist/cjs/extractor/accessSafe.js.map +1 -1
- package/dist/cjs/extractor/babelParse.js +15 -16
- package/dist/cjs/extractor/babelParse.js.map +2 -2
- package/dist/cjs/extractor/buildClassName.js +0 -2
- package/dist/cjs/extractor/buildClassName.js.map +1 -1
- package/dist/cjs/extractor/createEvaluator.js +9 -7
- package/dist/cjs/extractor/createEvaluator.js.map +2 -2
- package/dist/cjs/extractor/createExtractor.js +318 -145
- package/dist/cjs/extractor/createExtractor.js.map +2 -2
- package/dist/cjs/extractor/ensureImportingConcat.js +0 -2
- package/dist/cjs/extractor/ensureImportingConcat.js.map +1 -1
- package/dist/cjs/extractor/evaluateAstNode.js +0 -2
- package/dist/cjs/extractor/evaluateAstNode.js.map +1 -1
- package/dist/cjs/extractor/extractHelpers.js +11 -16
- package/dist/cjs/extractor/extractHelpers.js.map +1 -1
- package/dist/cjs/extractor/extractMediaStyle.js +3 -8
- package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
- package/dist/cjs/extractor/extractToClassNames.js +27 -42
- package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
- package/dist/cjs/extractor/findTopmostFunction.js +1 -3
- package/dist/cjs/extractor/findTopmostFunction.js.map +1 -1
- package/dist/cjs/extractor/generatedUid.js +0 -2
- package/dist/cjs/extractor/generatedUid.js.map +1 -1
- package/dist/cjs/extractor/getPrefixLogs.js +0 -2
- package/dist/cjs/extractor/getPrefixLogs.js.map +1 -1
- package/dist/cjs/extractor/getPropValueFromAttributes.js +0 -2
- package/dist/cjs/extractor/getPropValueFromAttributes.js.map +1 -1
- package/dist/cjs/extractor/getSourceModule.js +0 -2
- package/dist/cjs/extractor/getSourceModule.js.map +1 -1
- package/dist/cjs/extractor/getStaticBindingsForScope.js +1 -5
- package/dist/cjs/extractor/getStaticBindingsForScope.js.map +1 -1
- package/dist/cjs/extractor/hoistClassNames.js +0 -3
- package/dist/cjs/extractor/hoistClassNames.js.map +1 -1
- package/dist/cjs/extractor/literalToAst.js +0 -4
- package/dist/cjs/extractor/literalToAst.js.map +1 -1
- package/dist/cjs/extractor/loadTamagui.js +43 -10
- package/dist/cjs/extractor/loadTamagui.js.map +2 -2
- package/dist/cjs/extractor/logLines.js +2 -3
- package/dist/cjs/extractor/logLines.js.map +1 -1
- package/dist/cjs/extractor/normalizeTernaries.js +0 -2
- package/dist/cjs/extractor/normalizeTernaries.js.map +1 -1
- package/dist/cjs/extractor/removeUnusedHooks.js +2 -4
- package/dist/cjs/extractor/removeUnusedHooks.js.map +1 -1
- package/dist/cjs/extractor/timer.js +2 -3
- package/dist/cjs/extractor/timer.js.map +1 -1
- package/dist/cjs/extractor/validHTMLAttributes.js +51 -0
- package/dist/cjs/extractor/validHTMLAttributes.js.map +2 -2
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/extractor/accessSafe.js +0 -3
- package/dist/esm/extractor/accessSafe.js.map +1 -1
- package/dist/esm/extractor/babelParse.js +15 -17
- package/dist/esm/extractor/babelParse.js.map +2 -2
- package/dist/esm/extractor/buildClassName.js +0 -3
- package/dist/esm/extractor/buildClassName.js.map +1 -1
- package/dist/esm/extractor/createEvaluator.js +9 -8
- package/dist/esm/extractor/createEvaluator.js.map +2 -2
- package/dist/esm/extractor/createExtractor.js +405 -195
- package/dist/esm/extractor/createExtractor.js.map +2 -2
- package/dist/esm/extractor/ensureImportingConcat.js +0 -3
- package/dist/esm/extractor/ensureImportingConcat.js.map +1 -1
- package/dist/esm/extractor/evaluateAstNode.js +0 -3
- package/dist/esm/extractor/evaluateAstNode.js.map +1 -1
- package/dist/esm/extractor/extractHelpers.js +11 -17
- package/dist/esm/extractor/extractHelpers.js.map +1 -1
- package/dist/esm/extractor/extractMediaStyle.js +29 -20
- package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
- package/dist/esm/extractor/extractToClassNames.js +53 -52
- package/dist/esm/extractor/extractToClassNames.js.map +2 -2
- package/dist/esm/extractor/findTopmostFunction.js +1 -4
- package/dist/esm/extractor/findTopmostFunction.js.map +1 -1
- package/dist/esm/extractor/generatedUid.js +0 -3
- package/dist/esm/extractor/generatedUid.js.map +1 -1
- package/dist/esm/extractor/getPrefixLogs.js +1 -5
- package/dist/esm/extractor/getPrefixLogs.js.map +1 -1
- package/dist/esm/extractor/getPropValueFromAttributes.js +0 -3
- package/dist/esm/extractor/getPropValueFromAttributes.js.map +1 -1
- package/dist/esm/extractor/getSourceModule.js +0 -3
- package/dist/esm/extractor/getSourceModule.js.map +1 -1
- package/dist/esm/extractor/getStaticBindingsForScope.js +1 -6
- package/dist/esm/extractor/getStaticBindingsForScope.js.map +1 -1
- package/dist/esm/extractor/hoistClassNames.js +0 -4
- package/dist/esm/extractor/hoistClassNames.js.map +1 -1
- package/dist/esm/extractor/literalToAst.js +21 -11
- package/dist/esm/extractor/literalToAst.js.map +1 -1
- package/dist/esm/extractor/loadTamagui.js +44 -11
- package/dist/esm/extractor/loadTamagui.js.map +2 -2
- package/dist/esm/extractor/logLines.js +2 -4
- package/dist/esm/extractor/logLines.js.map +1 -1
- package/dist/esm/extractor/normalizeTernaries.js +35 -9
- package/dist/esm/extractor/normalizeTernaries.js.map +1 -1
- package/dist/esm/extractor/removeUnusedHooks.js +5 -9
- package/dist/esm/extractor/removeUnusedHooks.js.map +1 -1
- package/dist/esm/extractor/timer.js +2 -4
- package/dist/esm/extractor/timer.js.map +1 -1
- package/dist/esm/extractor/validHTMLAttributes.js +50 -0
- package/dist/esm/extractor/validHTMLAttributes.js.map +2 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +2 -2
- package/dist/jsx/constants.js +1 -0
- package/dist/jsx/constants.js.map +7 -0
- package/dist/jsx/extractor/accessSafe.js +1 -3
- package/dist/jsx/extractor/accessSafe.js.map +7 -0
- package/dist/jsx/extractor/babelParse.js +16 -17
- package/dist/jsx/extractor/babelParse.js.map +7 -0
- package/dist/jsx/extractor/buildClassName.js +1 -3
- package/dist/jsx/extractor/buildClassName.js.map +7 -0
- package/dist/jsx/extractor/createEvaluator.js +10 -8
- package/dist/jsx/extractor/createEvaluator.js.map +7 -0
- package/dist/jsx/extractor/createExtractor.js +325 -150
- package/dist/jsx/extractor/createExtractor.js.map +7 -0
- package/dist/jsx/extractor/ensureImportingConcat.js +1 -3
- package/dist/jsx/extractor/ensureImportingConcat.js.map +7 -0
- package/dist/jsx/extractor/evaluateAstNode.js +1 -3
- package/dist/jsx/extractor/evaluateAstNode.js.map +7 -0
- package/dist/jsx/extractor/extractHelpers.js +12 -17
- package/dist/jsx/extractor/extractHelpers.js.map +7 -0
- package/dist/jsx/extractor/extractMediaStyle.js +4 -9
- package/dist/jsx/extractor/extractMediaStyle.js.map +7 -0
- package/dist/jsx/extractor/extractToClassNames.js +31 -43
- package/dist/jsx/extractor/extractToClassNames.js.map +7 -0
- package/dist/jsx/extractor/findTopmostFunction.js +2 -4
- package/dist/jsx/extractor/findTopmostFunction.js.map +7 -0
- package/dist/jsx/extractor/generatedUid.js +1 -3
- package/dist/jsx/extractor/generatedUid.js.map +7 -0
- package/dist/jsx/extractor/getPrefixLogs.js +1 -3
- package/dist/jsx/extractor/getPrefixLogs.js.map +7 -0
- package/dist/jsx/extractor/getPropValueFromAttributes.js +1 -3
- package/dist/jsx/extractor/getPropValueFromAttributes.js.map +7 -0
- package/dist/jsx/extractor/getSourceModule.js +1 -3
- package/dist/jsx/extractor/getSourceModule.js.map +7 -0
- package/dist/jsx/extractor/getStaticBindingsForScope.js +2 -6
- package/dist/jsx/extractor/getStaticBindingsForScope.js.map +7 -0
- package/dist/jsx/extractor/hoistClassNames.js +1 -4
- package/dist/jsx/extractor/hoistClassNames.js.map +7 -0
- package/dist/jsx/extractor/literalToAst.js +1 -5
- package/dist/jsx/extractor/literalToAst.js.map +7 -0
- package/dist/jsx/extractor/loadTamagui.js +30 -11
- package/dist/jsx/extractor/loadTamagui.js.map +7 -0
- package/dist/jsx/extractor/logLines.js +3 -4
- package/dist/jsx/extractor/logLines.js.map +7 -0
- package/dist/jsx/extractor/normalizeTernaries.js +1 -3
- package/dist/jsx/extractor/normalizeTernaries.js.map +7 -0
- package/dist/jsx/extractor/removeUnusedHooks.js +3 -5
- package/dist/jsx/extractor/removeUnusedHooks.js.map +7 -0
- package/dist/jsx/extractor/timer.js +3 -4
- package/dist/jsx/extractor/timer.js.map +7 -0
- package/dist/jsx/extractor/validHTMLAttributes.js +51 -0
- package/dist/jsx/extractor/validHTMLAttributes.js.map +7 -0
- package/dist/jsx/index.js +3 -1
- package/dist/jsx/index.js.map +7 -0
- package/dist/jsx/types.js +1 -0
- package/dist/jsx/types.js.map +7 -0
- package/package.json +28 -20
- package/src/constants.ts +13 -0
- package/src/extractor/accessSafe.ts +18 -0
- package/src/extractor/babelParse.ts +27 -0
- package/src/extractor/buildClassName.ts +61 -0
- package/src/extractor/createEvaluator.ts +75 -0
- package/src/extractor/createExtractor.ts +1928 -0
- package/src/extractor/ensureImportingConcat.ts +39 -0
- package/src/extractor/evaluateAstNode.ts +121 -0
- package/src/extractor/extractHelpers.ts +119 -0
- package/src/extractor/extractMediaStyle.ts +192 -0
- package/src/extractor/extractToClassNames.ts +393 -0
- package/src/extractor/findTopmostFunction.ts +22 -0
- package/src/extractor/generatedUid.ts +43 -0
- package/src/extractor/getPrefixLogs.ts +6 -0
- package/src/extractor/getPropValueFromAttributes.ts +92 -0
- package/src/extractor/getSourceModule.ts +101 -0
- package/src/extractor/getStaticBindingsForScope.ts +183 -0
- package/src/extractor/hoistClassNames.ts +45 -0
- package/src/extractor/literalToAst.ts +84 -0
- package/src/extractor/loadTamagui.ts +145 -0
- package/src/extractor/logLines.ts +16 -0
- package/src/extractor/normalizeTernaries.ts +63 -0
- package/src/extractor/removeUnusedHooks.ts +76 -0
- package/src/extractor/timer.ts +18 -0
- package/src/extractor/validHTMLAttributes.ts +99 -0
- package/src/index.ts +10 -0
- package/src/types.ts +96 -0
- package/types/constants.d.ts +0 -0
- package/types/constants.d.ts.map +0 -0
- package/types/extractor/accessSafe.d.ts +0 -0
- package/types/extractor/accessSafe.d.ts.map +0 -0
- package/types/extractor/babelParse.d.ts +0 -0
- package/types/extractor/babelParse.d.ts.map +1 -1
- package/types/extractor/buildClassName.d.ts +0 -0
- package/types/extractor/buildClassName.d.ts.map +0 -0
- package/types/extractor/createEvaluator.d.ts +1 -1
- package/types/extractor/createEvaluator.d.ts.map +1 -1
- package/types/extractor/createExtractor.d.ts +3 -4
- package/types/extractor/createExtractor.d.ts.map +1 -1
- package/types/extractor/ensureImportingConcat.d.ts +0 -0
- package/types/extractor/ensureImportingConcat.d.ts.map +0 -0
- package/types/extractor/evaluateAstNode.d.ts +0 -0
- package/types/extractor/evaluateAstNode.d.ts.map +0 -0
- package/types/extractor/extractHelpers.d.ts +1 -1
- package/types/extractor/extractHelpers.d.ts.map +1 -1
- package/types/extractor/extractMediaStyle.d.ts +0 -0
- package/types/extractor/extractMediaStyle.d.ts.map +1 -1
- package/types/extractor/extractToClassNames.d.ts +1 -6
- package/types/extractor/extractToClassNames.d.ts.map +1 -1
- package/types/extractor/findTopmostFunction.d.ts +0 -0
- package/types/extractor/findTopmostFunction.d.ts.map +0 -0
- package/types/extractor/generatedUid.d.ts +0 -0
- package/types/extractor/generatedUid.d.ts.map +0 -0
- package/types/extractor/getPrefixLogs.d.ts +0 -0
- package/types/extractor/getPrefixLogs.d.ts.map +0 -0
- package/types/extractor/getPropValueFromAttributes.d.ts +0 -0
- package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -0
- package/types/extractor/getSourceModule.d.ts +0 -0
- package/types/extractor/getSourceModule.d.ts.map +0 -0
- package/types/extractor/getStaticBindingsForScope.d.ts +0 -0
- package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -0
- package/types/extractor/hoistClassNames.d.ts +0 -0
- package/types/extractor/hoistClassNames.d.ts.map +0 -0
- package/types/extractor/literalToAst.d.ts +0 -0
- package/types/extractor/literalToAst.d.ts.map +0 -0
- package/types/extractor/loadTamagui.d.ts +10 -4
- package/types/extractor/loadTamagui.d.ts.map +1 -1
- package/types/extractor/logLines.d.ts +0 -0
- package/types/extractor/logLines.d.ts.map +0 -0
- package/types/extractor/normalizeTernaries.d.ts +0 -0
- package/types/extractor/normalizeTernaries.d.ts.map +0 -0
- package/types/extractor/removeUnusedHooks.d.ts +0 -0
- package/types/extractor/removeUnusedHooks.d.ts.map +0 -0
- package/types/extractor/timer.d.ts +0 -0
- package/types/extractor/timer.d.ts.map +0 -0
- package/types/extractor/validHTMLAttributes.d.ts +49 -0
- package/types/extractor/validHTMLAttributes.d.ts.map +1 -1
- package/types/index.d.ts +2 -1
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +6 -7
- package/types/types.d.ts.map +1 -1
- package/dist/cjs/patchReactNativeWeb.js +0 -167
- package/dist/cjs/patchReactNativeWeb.js.map +0 -7
- package/dist/esm/patchReactNativeWeb.js +0 -142
- package/dist/esm/patchReactNativeWeb.js.map +0 -7
- package/dist/jsx/patchReactNativeWeb.js +0 -141
- package/types/patchReactNativeWeb.d.ts +0 -2
- package/types/patchReactNativeWeb.d.ts.map +0 -1
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
1
|
const prefix = " ";
|
|
4
|
-
const logLines =
|
|
2
|
+
const logLines = (str, singleLine = false) => {
|
|
5
3
|
if (singleLine) {
|
|
6
4
|
return prefix + str.split(" ").join(`
|
|
7
5
|
${prefix}`);
|
|
@@ -15,7 +13,8 @@ ${prefix}`);
|
|
|
15
13
|
lines[lines.length - 1] += item + " ";
|
|
16
14
|
}
|
|
17
15
|
return lines.map((line, i) => prefix + (i == 0 ? "" : " ") + line.trim()).join("\n");
|
|
18
|
-
}
|
|
16
|
+
};
|
|
19
17
|
export {
|
|
20
18
|
logLines
|
|
21
19
|
};
|
|
20
|
+
//# sourceMappingURL=logLines.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 let 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
|
+
"mappings": "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,MAAI,QAAkB,CAAC,EAAE;AACzB,QAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,MAAM,MAAM,SAAS,GAAG,SAAS,IAAI;AACrD,YAAM,KAAK,EAAE;AAAA,IACf;AACA,UAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EACpC;AACA,SAAO,MAAM,IAAI,CAAC,MAAM,MAAM,SAAU,MAAK,IAAI,KAAK,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI;AACrF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
1
|
import generate from "@babel/generator";
|
|
4
2
|
import * as t from "@babel/types";
|
|
5
3
|
import invariant from "invariant";
|
|
@@ -46,7 +44,7 @@ function normalizeTernaries(ternaries) {
|
|
|
46
44
|
});
|
|
47
45
|
return ternaryExpression;
|
|
48
46
|
}
|
|
49
|
-
__name(normalizeTernaries, "normalizeTernaries");
|
|
50
47
|
export {
|
|
51
48
|
normalizeTernaries
|
|
52
49
|
};
|
|
50
|
+
//# sourceMappingURL=normalizeTernaries.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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'\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 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;AANzD;AAOE,YACE,MAAM,QAAQ,SAAS,GACvB,oEACF;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,WAAW,SAAS,UAAU;AAEnE,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;AAEA,UAAM,MAAM,SAAS,WAAW,EAAE;AAElC,QAAI,CAAC,eAAe,MAAM;AACxB,qBAAe,OAAO;AAAA,QACpB,GAAG;AAAA,QACH,WAAW,CAAC;AAAA,QACZ,YAAY,CAAC;AAAA,QACb,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,UAAM,WAAY,mBAAa,aAAa,cAA1B,YAAwC,CAAC;AAC3D,UAAM,YAAa,mBAAa,YAAY,eAAzB,YAAwC,CAAC;AAC5D,WAAO,OAAO,eAAe,KAAK,WAAY,QAAQ;AACtD,WAAO,OAAO,eAAe,KAAK,YAAa,SAAS;AAAA,EAC1D;AAEA,QAAM,oBAAoB,OAAO,KAAK,cAAc,EAAE,IAAI,CAAC,QAAQ;AACjE,WAAO,eAAe;AAAA,EACxB,CAAC;AAED,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
1
|
import * as t from "@babel/types";
|
|
4
2
|
const hooks = {
|
|
5
3
|
useMedia: true,
|
|
@@ -32,10 +30,10 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
32
30
|
if (!Array.isArray(declarations)) {
|
|
33
31
|
continue;
|
|
34
32
|
}
|
|
35
|
-
const isBindingReferenced =
|
|
33
|
+
const isBindingReferenced = (name) => {
|
|
36
34
|
var _a2;
|
|
37
35
|
return !!((_a2 = statement.scope.getBinding(name)) == null ? void 0 : _a2.referenced);
|
|
38
|
-
}
|
|
36
|
+
};
|
|
39
37
|
for (const declarator of declarations) {
|
|
40
38
|
const id = declarator.get("id");
|
|
41
39
|
const init = declarator.node.init;
|
|
@@ -73,7 +71,7 @@ function removeUnusedHooks(compFn, shouldPrintDebug) {
|
|
|
73
71
|
}
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
|
-
__name(removeUnusedHooks, "removeUnusedHooks");
|
|
77
74
|
export {
|
|
78
75
|
removeUnusedHooks
|
|
79
76
|
};
|
|
77
|
+
//# sourceMappingURL=removeUnusedHooks.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 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;AACZ;AAEO,2BAA2B,QAAuB,kBAAuC;AARhG;AASE,SAAO,MAAM,MAAM;AAEnB,MAAI,iBAAiB,iCAAQ,IAAI;AACjC,MAAI,CAAC,gBAAgB;AACnB,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;AAnClD;AAoCM,aAAO,CAAC,CAAC,kBAAU,MAAM,WAAW,IAAI,MAA/B,oBAAkC;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,eAAgB,OAAM;AAC1B,cAAM,SACJ,EAAE,iBAAiB,IAAI,KAAK,EAAE,aAAa,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO;AAC/E,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;AACpB,kBAAQ,IAAI,yBAAkB,SAAG,KAAK,YAAR,YAAmB,IAAI;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
const timer = /* @__PURE__ */ __name(() => {
|
|
1
|
+
const timer = () => {
|
|
4
2
|
const start = Date.now();
|
|
5
3
|
let last = start;
|
|
6
4
|
return {
|
|
@@ -17,7 +15,8 @@ const timer = /* @__PURE__ */ __name(() => {
|
|
|
17
15
|
}
|
|
18
16
|
}
|
|
19
17
|
};
|
|
20
|
-
}
|
|
18
|
+
};
|
|
21
19
|
export {
|
|
22
20
|
timer
|
|
23
21
|
};
|
|
22
|
+
//# sourceMappingURL=timer.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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 console.log(`Time ${name}: ${took}ms`)\n }\n },\n done: (print = false) => {\n if (print) {\n console.log(`Total time: ${Date.now() - start}ms`)\n }\n },\n }\n}\n"],
|
|
5
|
+
"mappings": "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;AAChB,gBAAQ,IAAI,QAAQ,SAAS,QAAQ;AAAA,MACvC;AAAA,IACF;AAAA,IACA,MAAM,CAAC,QAAQ,UAAU;AACvB,UAAI,OAAO;AACT,gBAAQ,IAAI,eAAe,KAAK,IAAI,IAAI,SAAS;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -46,6 +46,57 @@ const validHTMLAttributes = {
|
|
|
46
46
|
"aria-selected": true,
|
|
47
47
|
"aria-sort": true
|
|
48
48
|
};
|
|
49
|
+
const validAccessibilityAttributes = {
|
|
50
|
+
accessibilityRole: true,
|
|
51
|
+
accessibilityActiveDescendant: true,
|
|
52
|
+
accessibilityAtomic: true,
|
|
53
|
+
accessibilityAutoComplete: true,
|
|
54
|
+
accessibilityBusy: true,
|
|
55
|
+
accessibilityChecked: true,
|
|
56
|
+
accessibilityColumnCount: true,
|
|
57
|
+
accessibilityColumnIndex: true,
|
|
58
|
+
accessibilityColumnSpan: true,
|
|
59
|
+
accessibilityControls: true,
|
|
60
|
+
accessibilityCurrent: true,
|
|
61
|
+
accessibilityDescribedBy: true,
|
|
62
|
+
accessibilityDetails: true,
|
|
63
|
+
disabled: true,
|
|
64
|
+
accessibilityErrorMessage: true,
|
|
65
|
+
accessibilityExpanded: true,
|
|
66
|
+
accessibilityFlowTo: true,
|
|
67
|
+
accessibilityHasPopup: true,
|
|
68
|
+
accessibilityHidden: true,
|
|
69
|
+
accessibilityInvalid: true,
|
|
70
|
+
accessibilityKeyShortcuts: true,
|
|
71
|
+
accessibilityLabel: true,
|
|
72
|
+
accessibilityLabelledBy: true,
|
|
73
|
+
accessibilityLevel: true,
|
|
74
|
+
accessibilityLiveRegion: true,
|
|
75
|
+
accessibilityModal: true,
|
|
76
|
+
accessibilityMultiline: true,
|
|
77
|
+
accessibilityMultiSelectable: true,
|
|
78
|
+
accessibilityOrientation: true,
|
|
79
|
+
accessibilityOwns: true,
|
|
80
|
+
accessibilityPlaceholder: true,
|
|
81
|
+
accessibilityPosInSet: true,
|
|
82
|
+
accessibilityPressed: true,
|
|
83
|
+
accessibilityReadOnly: true,
|
|
84
|
+
accessibilityRequired: true,
|
|
85
|
+
accessibilityRoleDescription: true,
|
|
86
|
+
accessibilityRowCount: true,
|
|
87
|
+
accessibilityRowIndex: true,
|
|
88
|
+
accessibilityRowSpan: true,
|
|
89
|
+
accessibilitySelected: true,
|
|
90
|
+
accessibilitySetSize: true,
|
|
91
|
+
accessibilitySort: true,
|
|
92
|
+
accessibilityValueMax: true,
|
|
93
|
+
accessibilityValueMin: true,
|
|
94
|
+
accessibilityValueNow: true,
|
|
95
|
+
accessibilityValueText: true,
|
|
96
|
+
nativeID: true
|
|
97
|
+
};
|
|
49
98
|
export {
|
|
99
|
+
validAccessibilityAttributes,
|
|
50
100
|
validHTMLAttributes
|
|
51
101
|
};
|
|
102
|
+
//# sourceMappingURL=validHTMLAttributes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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
|
+
"mappings": "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
|
+
"names": []
|
|
7
|
+
}
|
package/dist/jsx/index.js
CHANGED
|
@@ -5,9 +5,11 @@ import { literalToAst } from "./extractor/literalToAst";
|
|
|
5
5
|
export * from "./constants";
|
|
6
6
|
export * from "./extractor/extractToClassNames";
|
|
7
7
|
export * from "./extractor/extractHelpers";
|
|
8
|
-
export * from "
|
|
8
|
+
export * from "@tamagui/patch-rnw";
|
|
9
|
+
export * from "./extractor/loadTamagui";
|
|
9
10
|
export {
|
|
10
11
|
TamaguiOptions,
|
|
11
12
|
createExtractor,
|
|
12
13
|
literalToAst
|
|
13
14
|
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["process.env.TAMAGUI_COMPILE_PROCESS = '1'\n\nexport { TamaguiOptions } from './types'\nexport { createExtractor } from './extractor/createExtractor'\nexport { literalToAst } from './extractor/literalToAst'\nexport * from './constants'\nexport * from './extractor/extractToClassNames'\nexport * from './extractor/extractHelpers'\nexport * from '@tamagui/patch-rnw'\nexport * from './extractor/loadTamagui'\n"],
|
|
5
|
+
"mappings": "AAAA,QAAQ,IAAI,0BAA0B;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/jsx/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/static",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1-beta.101",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
|
-
"
|
|
5
|
+
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
7
7
|
"module": "dist/esm",
|
|
8
8
|
"module:jsx": "dist/jsx",
|
|
9
9
|
"files": [
|
|
10
|
+
"patches",
|
|
11
|
+
"src",
|
|
10
12
|
"types",
|
|
11
13
|
"dist"
|
|
12
14
|
],
|
|
@@ -16,6 +18,8 @@
|
|
|
16
18
|
"clean": "tamagui-build clean",
|
|
17
19
|
"clean:build": "tamagui-build clean:build",
|
|
18
20
|
"test": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 jest --forceExit",
|
|
21
|
+
"test:output": "TAMAGUI_TARGET=web node -r esbuild-register test-output.tsx",
|
|
22
|
+
"test:babel": "DISABLE_PRE_TEST=true yarn test tests/babel-test.tsx",
|
|
19
23
|
"test:debug": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 DEBUG_FILE=extract-specs.tsx DEBUG=1 yarn test",
|
|
20
24
|
"test:watch": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 yarn test --watch",
|
|
21
25
|
"test:update-snapshots": "NODE_ENV=test jest --updateSnapshot"
|
|
@@ -33,42 +37,46 @@
|
|
|
33
37
|
"@babel/helper-plugin-utils": "^7.14.5",
|
|
34
38
|
"@babel/parser": "^7.15.7",
|
|
35
39
|
"@babel/traverse": "^7.15.4",
|
|
36
|
-
"@expo/match-media": "^0.
|
|
37
|
-
"@tamagui/build": "^1.0.
|
|
38
|
-
"@tamagui/core-node": "^1.0.
|
|
39
|
-
"@tamagui/fake-react-native": "^1.0.
|
|
40
|
-
"@tamagui/helpers": "^1.0.
|
|
41
|
-
"@tamagui/
|
|
40
|
+
"@expo/match-media": "^0.3.0",
|
|
41
|
+
"@tamagui/build": "^1.0.1-beta.101",
|
|
42
|
+
"@tamagui/core-node": "^1.0.1-beta.101",
|
|
43
|
+
"@tamagui/fake-react-native": "^1.0.1-beta.101",
|
|
44
|
+
"@tamagui/helpers": "^1.0.1-beta.101",
|
|
45
|
+
"@tamagui/patch-rnw": "^1.0.1-beta.101",
|
|
46
|
+
"@tamagui/proxy-worm": "^1.0.1-beta.101",
|
|
42
47
|
"babel-literal-to-ast": "^2.1.0",
|
|
43
|
-
"esbuild": "^0.14.
|
|
48
|
+
"esbuild": "^0.14.48",
|
|
44
49
|
"esbuild-register": "^3.3.2",
|
|
45
50
|
"find-cache-dir": "^3.3.2",
|
|
46
|
-
"fs-extra": "^
|
|
51
|
+
"fs-extra": "^10.1.0",
|
|
47
52
|
"invariant": "^2.2.4",
|
|
48
53
|
"lodash": "^4.17.21",
|
|
49
|
-
"tamagui": "^1.0.
|
|
54
|
+
"tamagui": "^1.0.1-beta.101"
|
|
50
55
|
},
|
|
51
56
|
"devDependencies": {
|
|
52
57
|
"@babel/plugin-syntax-typescript": "^7.14.5",
|
|
53
58
|
"@babel/types": "^7.15.6",
|
|
54
59
|
"@dish/babel-preset": "^0.0.6",
|
|
55
|
-
"@testing-library/
|
|
60
|
+
"@testing-library/jest-dom": "^5.16.4",
|
|
61
|
+
"@testing-library/react": "^13.3.0",
|
|
56
62
|
"@types/jest": "*",
|
|
57
63
|
"@types/node": "^16.11.9",
|
|
58
|
-
"@types/react-native": "^0.
|
|
64
|
+
"@types/react-native": "^0.69.2",
|
|
59
65
|
"@types/webpack": "^4.41.26",
|
|
60
66
|
"babel-loader": "^8.2.5",
|
|
61
67
|
"css-loader": "^5.2.4",
|
|
62
|
-
"esbuild-loader": "^2.
|
|
63
|
-
"jest": "^
|
|
68
|
+
"esbuild-loader": "^2.19.0",
|
|
69
|
+
"jest": "^28.1.1",
|
|
70
|
+
"jest-dom": "^4.0.0",
|
|
71
|
+
"jest-environment-jsdom": "^28.1.1",
|
|
64
72
|
"null-loader": "^4.0.1",
|
|
65
73
|
"react": "*",
|
|
66
74
|
"react-dom": "*",
|
|
67
|
-
"react-native-web": "^0.
|
|
68
|
-
"react-test-renderer": "^18.
|
|
69
|
-
"style-loader": "^3.3.
|
|
70
|
-
"typescript": "^4.
|
|
71
|
-
"webpack": "^5.
|
|
75
|
+
"react-native-web": "^0.18.3",
|
|
76
|
+
"react-test-renderer": "^18.2.0",
|
|
77
|
+
"style-loader": "^3.3.1",
|
|
78
|
+
"typescript": "^4.7.4",
|
|
79
|
+
"webpack": "^5.73.0"
|
|
72
80
|
},
|
|
73
81
|
"peerDependencies": {
|
|
74
82
|
"react-native-web": "*"
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import findCacheDir from 'find-cache-dir'
|
|
2
|
+
|
|
3
|
+
export const CSS_FILE_NAME = '__snack.css'
|
|
4
|
+
|
|
5
|
+
// ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS
|
|
6
|
+
// SEE matching one in concatClassName
|
|
7
|
+
export const MEDIA_SEP = '_'
|
|
8
|
+
|
|
9
|
+
// ensure cache dir
|
|
10
|
+
export const cacheDir = findCacheDir({ name: 'tamagui', create: true })
|
|
11
|
+
|
|
12
|
+
export const FAILED_EVAL = Symbol('failed_style_eval')
|
|
13
|
+
export const CONCAT_CLASSNAME_IMPORT = 'concatClassName'
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as t from '@babel/types'
|
|
2
|
+
|
|
3
|
+
// accessSafe wraps memberExpressions in object/null checks
|
|
4
|
+
// TODO: inject this as a function? this gets pretty repetitive
|
|
5
|
+
export function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {
|
|
6
|
+
return t.logicalExpression(
|
|
7
|
+
'&&',
|
|
8
|
+
t.logicalExpression(
|
|
9
|
+
'&&',
|
|
10
|
+
// typeof obj === 'object
|
|
11
|
+
t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),
|
|
12
|
+
// obj !== null
|
|
13
|
+
t.binaryExpression('!==', obj, t.nullLiteral())
|
|
14
|
+
),
|
|
15
|
+
// obj.member
|
|
16
|
+
t.memberExpression(obj, t.identifier(member), false)
|
|
17
|
+
)
|
|
18
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as babelParser from '@babel/parser'
|
|
2
|
+
|
|
3
|
+
const plugins: babelParser.ParserPlugin[] = [
|
|
4
|
+
'asyncGenerators',
|
|
5
|
+
'classProperties',
|
|
6
|
+
'dynamicImport',
|
|
7
|
+
'functionBind',
|
|
8
|
+
'jsx',
|
|
9
|
+
'numericSeparator',
|
|
10
|
+
'objectRestSpread',
|
|
11
|
+
'optionalCatchBinding',
|
|
12
|
+
'decorators-legacy',
|
|
13
|
+
'typescript',
|
|
14
|
+
'optionalChaining',
|
|
15
|
+
'nullishCoalescingOperator',
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
export const parserOptions: babelParser.ParserOptions = Object.freeze({
|
|
19
|
+
plugins,
|
|
20
|
+
sourceType: 'module',
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
const parser = babelParser.parse.bind(babelParser)
|
|
24
|
+
|
|
25
|
+
export function babelParse(code: string | Buffer): any {
|
|
26
|
+
return parser(code.toString(), parserOptions)
|
|
27
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as t from '@babel/types'
|
|
2
|
+
|
|
3
|
+
import { ClassNameObject } from '../types'
|
|
4
|
+
|
|
5
|
+
export function buildClassName(
|
|
6
|
+
classNameObjects: ClassNameObject[]
|
|
7
|
+
): t.Expression | t.StringLiteral | null {
|
|
8
|
+
return classNameObjects.reduce<t.Expression | null>((acc, val) => {
|
|
9
|
+
if (acc == null) {
|
|
10
|
+
if (
|
|
11
|
+
// pass conditional expressions through
|
|
12
|
+
t.isConditionalExpression(val) ||
|
|
13
|
+
// pass non-null literals through
|
|
14
|
+
t.isStringLiteral(val) ||
|
|
15
|
+
t.isNumericLiteral(val)
|
|
16
|
+
) {
|
|
17
|
+
return val
|
|
18
|
+
}
|
|
19
|
+
return t.logicalExpression('||', val, t.stringLiteral(''))
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let inner: t.Expression
|
|
23
|
+
if (t.isStringLiteral(val)) {
|
|
24
|
+
if (t.isStringLiteral(acc)) {
|
|
25
|
+
// join adjacent string literals
|
|
26
|
+
return t.stringLiteral(`${acc.value} ${val.value}`)
|
|
27
|
+
}
|
|
28
|
+
inner = t.stringLiteral(` ${val.value}`)
|
|
29
|
+
} else if (t.isLiteral(val)) {
|
|
30
|
+
inner = t.binaryExpression('+', t.stringLiteral(' '), val)
|
|
31
|
+
} else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {
|
|
32
|
+
if (t.isStringLiteral(acc)) {
|
|
33
|
+
return t.binaryExpression('+', t.stringLiteral(`${acc.value} `), val)
|
|
34
|
+
}
|
|
35
|
+
inner = t.binaryExpression('+', t.stringLiteral(' '), val)
|
|
36
|
+
} else if (t.isIdentifier(val) || t.isMemberExpression(val)) {
|
|
37
|
+
// identifiers and member expressions make for reasonable ternaries
|
|
38
|
+
inner = t.conditionalExpression(
|
|
39
|
+
val,
|
|
40
|
+
t.binaryExpression('+', t.stringLiteral(' '), val),
|
|
41
|
+
t.stringLiteral('')
|
|
42
|
+
)
|
|
43
|
+
} else {
|
|
44
|
+
if (t.isStringLiteral(acc)) {
|
|
45
|
+
return t.binaryExpression(
|
|
46
|
+
'+',
|
|
47
|
+
t.stringLiteral(`${acc.value} `),
|
|
48
|
+
t.logicalExpression('||', val, t.stringLiteral(''))
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
// use a logical expression for more complex prop values
|
|
52
|
+
inner = t.binaryExpression(
|
|
53
|
+
'+',
|
|
54
|
+
t.stringLiteral(' '),
|
|
55
|
+
t.logicalExpression('||', val, t.stringLiteral(''))
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return t.binaryExpression('+', acc, inner)
|
|
60
|
+
}, null)
|
|
61
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import vm from 'vm'
|
|
2
|
+
|
|
3
|
+
import generate from '@babel/generator'
|
|
4
|
+
import { NodePath } from '@babel/traverse'
|
|
5
|
+
import * as t from '@babel/types'
|
|
6
|
+
import type { TamaguiConfig } from '@tamagui/core'
|
|
7
|
+
import { createCSSVariable } from '@tamagui/core-node'
|
|
8
|
+
import esbuild from 'esbuild'
|
|
9
|
+
|
|
10
|
+
import { FAILED_EVAL } from '../constants'
|
|
11
|
+
import { evaluateAstNode } from './evaluateAstNode'
|
|
12
|
+
import { isValidThemeHook } from './extractHelpers'
|
|
13
|
+
|
|
14
|
+
export function createEvaluator({
|
|
15
|
+
tamaguiConfig,
|
|
16
|
+
staticNamespace,
|
|
17
|
+
sourcePath,
|
|
18
|
+
traversePath,
|
|
19
|
+
shouldPrintDebug,
|
|
20
|
+
}: {
|
|
21
|
+
tamaguiConfig: TamaguiConfig
|
|
22
|
+
staticNamespace: Record<string, any>
|
|
23
|
+
sourcePath: string
|
|
24
|
+
traversePath?: NodePath<t.JSXElement>
|
|
25
|
+
shouldPrintDebug: boolean | 'verbose'
|
|
26
|
+
}) {
|
|
27
|
+
// called when evaluateAstNode encounters a dynamic-looking prop
|
|
28
|
+
const evalFn = (n: t.Node) => {
|
|
29
|
+
// themes
|
|
30
|
+
if (
|
|
31
|
+
t.isMemberExpression(n) &&
|
|
32
|
+
t.isIdentifier(n.property) &&
|
|
33
|
+
traversePath &&
|
|
34
|
+
isValidThemeHook(traversePath, n, sourcePath)
|
|
35
|
+
) {
|
|
36
|
+
const key = n.property.name
|
|
37
|
+
if (shouldPrintDebug) {
|
|
38
|
+
console.log(' > found theme prop', key)
|
|
39
|
+
}
|
|
40
|
+
console.log('SHOULD FIND THEME (NESTED NOW)', key) // tamaguiConfig.themes)
|
|
41
|
+
// if (!themeKeys.has(key)) {
|
|
42
|
+
// throw new Error(` > accessing non-existent theme key: ${key}`)
|
|
43
|
+
// }
|
|
44
|
+
return createCSSVariable(key)
|
|
45
|
+
}
|
|
46
|
+
// variable
|
|
47
|
+
if (t.isIdentifier(n) && staticNamespace.hasOwnProperty(n.name)) {
|
|
48
|
+
return staticNamespace[n.name]
|
|
49
|
+
}
|
|
50
|
+
const evalContext = vm.createContext(staticNamespace)
|
|
51
|
+
const codeWithTypescriptAnnotations = `(${generate(n as any).code})`
|
|
52
|
+
const code = esbuild
|
|
53
|
+
.transformSync(codeWithTypescriptAnnotations, { loader: 'tsx' })
|
|
54
|
+
.code.replace(/;\n$/, '')
|
|
55
|
+
|
|
56
|
+
if (shouldPrintDebug) {
|
|
57
|
+
console.log('evaluating', code)
|
|
58
|
+
}
|
|
59
|
+
return vm.runInContext(code, evalContext)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return (n: t.Node) => {
|
|
63
|
+
return evaluateAstNode(n, evalFn)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function createSafeEvaluator(attemptEval: (n: t.Node) => any) {
|
|
68
|
+
return (n: t.Node) => {
|
|
69
|
+
try {
|
|
70
|
+
return attemptEval(n)
|
|
71
|
+
} catch (err) {
|
|
72
|
+
return FAILED_EVAL
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|