@tamagui/static 1.0.0-alpha.9 → 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/README.md +3 -19
  2. package/dist/cjs/constants.js +44 -0
  3. package/dist/cjs/constants.js.map +7 -0
  4. package/dist/cjs/extractor/accessSafe.js +36 -0
  5. package/dist/cjs/extractor/accessSafe.js.map +7 -0
  6. package/dist/cjs/extractor/babelParse.js +56 -0
  7. package/dist/cjs/extractor/babelParse.js.map +7 -0
  8. package/dist/cjs/extractor/buildClassName.js +65 -0
  9. package/dist/cjs/extractor/buildClassName.js.map +7 -0
  10. package/dist/cjs/extractor/createEvaluator.js +78 -0
  11. package/dist/cjs/extractor/createEvaluator.js.map +7 -0
  12. package/dist/cjs/extractor/createExtractor.js +1221 -0
  13. package/dist/cjs/extractor/createExtractor.js.map +7 -0
  14. package/dist/cjs/extractor/ensureImportingConcat.js +49 -0
  15. package/dist/cjs/extractor/ensureImportingConcat.js.map +7 -0
  16. package/dist/cjs/extractor/evaluateAstNode.js +119 -0
  17. package/dist/cjs/extractor/evaluateAstNode.js.map +7 -0
  18. package/dist/cjs/extractor/extractHelpers.js +135 -0
  19. package/dist/cjs/extractor/extractHelpers.js.map +7 -0
  20. package/dist/cjs/extractor/extractMediaStyle.js +191 -0
  21. package/dist/cjs/extractor/extractMediaStyle.js.map +7 -0
  22. package/dist/cjs/extractor/extractToClassNames.js +333 -0
  23. package/dist/cjs/extractor/extractToClassNames.js.map +7 -0
  24. package/dist/cjs/extractor/findTopmostFunction.js +45 -0
  25. package/dist/cjs/extractor/findTopmostFunction.js.map +7 -0
  26. package/dist/cjs/extractor/generatedUid.js +53 -0
  27. package/dist/cjs/extractor/generatedUid.js.map +7 -0
  28. package/dist/cjs/extractor/getPrefixLogs.js +33 -0
  29. package/dist/cjs/extractor/getPrefixLogs.js.map +7 -0
  30. package/dist/cjs/extractor/getPropValueFromAttributes.js +74 -0
  31. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +7 -0
  32. package/dist/cjs/extractor/getSourceModule.js +94 -0
  33. package/dist/cjs/extractor/getSourceModule.js.map +7 -0
  34. package/dist/cjs/extractor/getStaticBindingsForScope.js +162 -0
  35. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +7 -0
  36. package/dist/cjs/extractor/hoistClassNames.js +69 -0
  37. package/dist/cjs/extractor/hoistClassNames.js.map +7 -0
  38. package/dist/cjs/extractor/literalToAst.js +119 -0
  39. package/dist/cjs/extractor/literalToAst.js.map +7 -0
  40. package/dist/cjs/extractor/loadTamagui.js +103 -0
  41. package/dist/cjs/extractor/loadTamagui.js.map +7 -0
  42. package/dist/cjs/extractor/logLines.js +44 -0
  43. package/dist/cjs/extractor/logLines.js.map +7 -0
  44. package/dist/cjs/extractor/normalizeTernaries.js +105 -0
  45. package/dist/cjs/extractor/normalizeTernaries.js.map +7 -0
  46. package/dist/cjs/extractor/removeUnusedHooks.js +104 -0
  47. package/dist/cjs/extractor/removeUnusedHooks.js.map +7 -0
  48. package/dist/cjs/extractor/timer.js +46 -0
  49. package/dist/cjs/extractor/timer.js.map +7 -0
  50. package/dist/cjs/extractor/validHTMLAttributes.js +75 -0
  51. package/dist/cjs/extractor/validHTMLAttributes.js.map +7 -0
  52. package/dist/cjs/index.js +40 -0
  53. package/dist/cjs/index.js.map +7 -0
  54. package/dist/cjs/patchReactNativeWeb.js +167 -0
  55. package/dist/cjs/patchReactNativeWeb.js.map +7 -0
  56. package/dist/cjs/types.js +16 -0
  57. package/dist/cjs/types.js.map +7 -0
  58. package/dist/{constants.js → esm/constants.js} +4 -0
  59. package/dist/{constants.js.map → esm/constants.js.map} +3 -3
  60. package/dist/{extractor → esm/extractor}/accessSafe.js +0 -0
  61. package/dist/{extractor → esm/extractor}/accessSafe.js.map +2 -2
  62. package/dist/{extractor → esm/extractor}/babelParse.js +0 -0
  63. package/dist/{extractor → esm/extractor}/babelParse.js.map +3 -3
  64. package/dist/{extractor → esm/extractor}/buildClassName.js +0 -0
  65. package/dist/{extractor → esm/extractor}/buildClassName.js.map +2 -2
  66. package/dist/{extractor → esm/extractor}/createEvaluator.js +3 -2
  67. package/dist/esm/extractor/createEvaluator.js.map +7 -0
  68. package/dist/esm/extractor/createExtractor.js +1169 -0
  69. package/dist/esm/extractor/createExtractor.js.map +7 -0
  70. package/dist/{extractor → esm/extractor}/ensureImportingConcat.js +1 -1
  71. package/dist/esm/extractor/ensureImportingConcat.js.map +7 -0
  72. package/dist/{extractor → esm/extractor}/evaluateAstNode.js +0 -0
  73. package/dist/esm/extractor/evaluateAstNode.js.map +7 -0
  74. package/dist/{extractor → esm/extractor}/extractHelpers.js +20 -11
  75. package/dist/esm/extractor/extractHelpers.js.map +7 -0
  76. package/dist/{extractor → esm/extractor}/extractMediaStyle.js +5 -4
  77. package/dist/esm/extractor/extractMediaStyle.js.map +7 -0
  78. package/dist/{extractor → esm/extractor}/extractToClassNames.js +106 -46
  79. package/dist/esm/extractor/extractToClassNames.js.map +7 -0
  80. package/dist/{extractor → esm/extractor}/findTopmostFunction.js +0 -0
  81. package/dist/{extractor → esm/extractor}/findTopmostFunction.js.map +2 -2
  82. package/dist/{extractor → esm/extractor}/generatedUid.js +0 -0
  83. package/dist/{extractor → esm/extractor}/generatedUid.js.map +2 -2
  84. package/dist/esm/extractor/getPrefixLogs.js +12 -0
  85. package/dist/esm/extractor/getPrefixLogs.js.map +7 -0
  86. package/dist/{extractor → esm/extractor}/getPropValueFromAttributes.js +0 -0
  87. package/dist/{extractor → esm/extractor}/getPropValueFromAttributes.js.map +2 -2
  88. package/dist/{extractor → esm/extractor}/getSourceModule.js +0 -0
  89. package/dist/{extractor → esm/extractor}/getSourceModule.js.map +2 -2
  90. package/dist/{extractor → esm/extractor}/getStaticBindingsForScope.js +10 -1
  91. package/dist/esm/extractor/getStaticBindingsForScope.js.map +7 -0
  92. package/dist/{extractor → esm/extractor}/hoistClassNames.js +0 -0
  93. package/dist/{extractor → esm/extractor}/hoistClassNames.js.map +2 -2
  94. package/dist/esm/extractor/literalToAst.js +80 -0
  95. package/dist/esm/extractor/literalToAst.js.map +7 -0
  96. package/dist/esm/extractor/loadTamagui.js +81 -0
  97. package/dist/esm/extractor/loadTamagui.js.map +7 -0
  98. package/dist/{extractor → esm/extractor}/logLines.js +8 -3
  99. package/dist/esm/extractor/logLines.js.map +7 -0
  100. package/dist/{extractor → esm/extractor}/normalizeTernaries.js +3 -2
  101. package/dist/esm/extractor/normalizeTernaries.js.map +7 -0
  102. package/dist/{extractor → esm/extractor}/removeUnusedHooks.js +5 -3
  103. package/dist/esm/extractor/removeUnusedHooks.js.map +7 -0
  104. package/dist/esm/extractor/timer.js +24 -0
  105. package/dist/esm/extractor/timer.js.map +7 -0
  106. package/dist/esm/extractor/validHTMLAttributes.js +52 -0
  107. package/dist/esm/extractor/validHTMLAttributes.js.map +7 -0
  108. package/dist/{index.js → esm/index.js} +0 -0
  109. package/dist/{index.js.map → esm/index.js.map} +1 -1
  110. package/dist/{patchReactNativeWeb.js → esm/patchReactNativeWeb.js} +49 -14
  111. package/dist/esm/patchReactNativeWeb.js.map +7 -0
  112. package/dist/{types.js → esm/types.js} +0 -0
  113. package/dist/{types.js.map → esm/types.js.map} +0 -0
  114. package/dist/jsx/constants.js +13 -0
  115. package/dist/jsx/extractor/accessSafe.js +10 -0
  116. package/dist/jsx/extractor/babelParse.js +29 -0
  117. package/dist/jsx/extractor/buildClassName.js +39 -0
  118. package/dist/jsx/extractor/createEvaluator.js +51 -0
  119. package/dist/jsx/extractor/createExtractor.js +1168 -0
  120. package/dist/jsx/extractor/ensureImportingConcat.js +23 -0
  121. package/dist/jsx/extractor/evaluateAstNode.js +93 -0
  122. package/dist/jsx/extractor/extractHelpers.js +102 -0
  123. package/dist/jsx/extractor/extractMediaStyle.js +151 -0
  124. package/dist/jsx/extractor/extractToClassNames.js +292 -0
  125. package/dist/jsx/extractor/findTopmostFunction.js +22 -0
  126. package/dist/jsx/extractor/generatedUid.js +27 -0
  127. package/dist/jsx/extractor/getPrefixLogs.js +11 -0
  128. package/dist/jsx/extractor/getPropValueFromAttributes.js +48 -0
  129. package/dist/jsx/extractor/getSourceModule.js +68 -0
  130. package/dist/jsx/extractor/getStaticBindingsForScope.js +136 -0
  131. package/dist/jsx/extractor/hoistClassNames.js +43 -0
  132. package/dist/jsx/extractor/literalToAst.js +79 -0
  133. package/dist/jsx/extractor/loadTamagui.js +80 -0
  134. package/dist/jsx/extractor/logLines.js +21 -0
  135. package/dist/jsx/extractor/normalizeTernaries.js +52 -0
  136. package/dist/jsx/extractor/removeUnusedHooks.js +79 -0
  137. package/dist/jsx/extractor/timer.js +23 -0
  138. package/dist/jsx/extractor/validHTMLAttributes.js +51 -0
  139. package/dist/jsx/index.js +13 -0
  140. package/dist/jsx/patchReactNativeWeb.js +141 -0
  141. package/dist/jsx/types.js +0 -0
  142. package/package.json +40 -37
  143. package/types/constants.d.ts +6 -0
  144. package/types/constants.d.ts.map +1 -0
  145. package/types/extractor/accessSafe.d.ts +3 -0
  146. package/types/extractor/accessSafe.d.ts.map +1 -0
  147. package/types/extractor/babelParse.d.ts +5 -0
  148. package/types/extractor/babelParse.d.ts.map +1 -0
  149. package/types/extractor/buildClassName.d.ts +4 -0
  150. package/types/extractor/buildClassName.d.ts.map +1 -0
  151. package/types/extractor/createEvaluator.d.ts +12 -0
  152. package/types/extractor/createEvaluator.d.ts.map +1 -0
  153. package/types/extractor/createExtractor.d.ts +29 -0
  154. package/types/extractor/createExtractor.d.ts.map +1 -0
  155. package/types/extractor/ensureImportingConcat.d.ts +4 -0
  156. package/types/extractor/ensureImportingConcat.d.ts.map +1 -0
  157. package/types/extractor/evaluateAstNode.d.ts +3 -0
  158. package/types/extractor/evaluateAstNode.d.ts.map +1 -0
  159. package/types/extractor/extractHelpers.d.ts +12 -0
  160. package/types/extractor/extractHelpers.d.ts.map +1 -0
  161. package/types/extractor/extractMediaStyle.d.ts +10 -0
  162. package/types/extractor/extractMediaStyle.d.ts.map +1 -0
  163. package/types/extractor/extractToClassNames.d.ts +24 -0
  164. package/types/extractor/extractToClassNames.d.ts.map +1 -0
  165. package/types/extractor/findTopmostFunction.d.ts +4 -0
  166. package/types/extractor/findTopmostFunction.d.ts.map +1 -0
  167. package/types/extractor/generatedUid.d.ts +5 -0
  168. package/types/extractor/generatedUid.d.ts.map +1 -0
  169. package/types/extractor/getPrefixLogs.d.ts +3 -0
  170. package/types/extractor/getPrefixLogs.d.ts.map +1 -0
  171. package/types/extractor/getPropValueFromAttributes.d.ts +3 -0
  172. package/types/extractor/getPropValueFromAttributes.d.ts.map +1 -0
  173. package/types/extractor/getSourceModule.d.ts +16 -0
  174. package/types/extractor/getSourceModule.d.ts.map +1 -0
  175. package/types/extractor/getStaticBindingsForScope.d.ts +4 -0
  176. package/types/extractor/getStaticBindingsForScope.d.ts.map +1 -0
  177. package/types/extractor/hoistClassNames.d.ts +6 -0
  178. package/types/extractor/hoistClassNames.d.ts.map +1 -0
  179. package/types/extractor/literalToAst.d.ts +4 -0
  180. package/types/extractor/literalToAst.d.ts.map +1 -0
  181. package/types/extractor/loadTamagui.d.ts +9 -0
  182. package/types/extractor/loadTamagui.d.ts.map +1 -0
  183. package/types/extractor/logLines.d.ts +2 -0
  184. package/types/extractor/logLines.d.ts.map +1 -0
  185. package/types/extractor/normalizeTernaries.d.ts +3 -0
  186. package/types/extractor/normalizeTernaries.d.ts.map +1 -0
  187. package/types/extractor/removeUnusedHooks.d.ts +3 -0
  188. package/types/extractor/removeUnusedHooks.d.ts.map +1 -0
  189. package/types/extractor/timer.d.ts +5 -0
  190. package/types/extractor/timer.d.ts.map +1 -0
  191. package/types/extractor/validHTMLAttributes.d.ts +49 -0
  192. package/types/extractor/validHTMLAttributes.d.ts.map +1 -0
  193. package/types/index.d.ts +8 -0
  194. package/types/index.d.ts.map +1 -0
  195. package/types/patchReactNativeWeb.d.ts +2 -0
  196. package/types/patchReactNativeWeb.d.ts.map +1 -0
  197. package/types/types.d.ts +85 -0
  198. package/types/types.d.ts.map +1 -0
  199. package/LICENSE +0 -21
  200. package/dist/extractor/createEvaluator.js.map +0 -7
  201. package/dist/extractor/createExtractor.js +0 -828
  202. package/dist/extractor/createExtractor.js.map +0 -7
  203. package/dist/extractor/ensureImportingConcat.js.map +0 -7
  204. package/dist/extractor/evaluateAstNode.js.map +0 -7
  205. package/dist/extractor/extractHelpers.js.map +0 -7
  206. package/dist/extractor/extractMediaStyle.js.map +0 -7
  207. package/dist/extractor/extractToClassNames.js.map +0 -7
  208. package/dist/extractor/getStaticBindingsForScope.js.map +0 -7
  209. package/dist/extractor/literalToAst.js +0 -34
  210. package/dist/extractor/literalToAst.js.map +0 -7
  211. package/dist/extractor/loadTamagui.js +0 -41
  212. package/dist/extractor/loadTamagui.js.map +0 -7
  213. package/dist/extractor/logLines.js.map +0 -7
  214. package/dist/extractor/normalizeTernaries.js.map +0 -7
  215. package/dist/extractor/removeUnusedHooks.js.map +0 -7
  216. package/dist/index.cjs +0 -2126
  217. package/dist/index.cjs.map +0 -7
  218. package/dist/patchReactNativeWeb.js.map +0 -7
  219. package/src/constants.ts +0 -10
  220. package/src/extractor/accessSafe.ts +0 -18
  221. package/src/extractor/babelParse.ts +0 -27
  222. package/src/extractor/buildClassName.ts +0 -61
  223. package/src/extractor/createEvaluator.ts +0 -68
  224. package/src/extractor/createExtractor.ts +0 -1138
  225. package/src/extractor/ensureImportingConcat.ts +0 -33
  226. package/src/extractor/evaluateAstNode.ts +0 -121
  227. package/src/extractor/extractHelpers.ts +0 -102
  228. package/src/extractor/extractMediaStyle.ts +0 -191
  229. package/src/extractor/extractToClassNames.ts +0 -323
  230. package/src/extractor/findTopmostFunction.ts +0 -22
  231. package/src/extractor/generatedUid.ts +0 -43
  232. package/src/extractor/getPropValueFromAttributes.ts +0 -92
  233. package/src/extractor/getSourceModule.ts +0 -101
  234. package/src/extractor/getStaticBindingsForScope.ts +0 -173
  235. package/src/extractor/hoistClassNames.ts +0 -45
  236. package/src/extractor/literalToAst.ts +0 -32
  237. package/src/extractor/loadTamagui.ts +0 -61
  238. package/src/extractor/logLines.ts +0 -11
  239. package/src/extractor/normalizeTernaries.ts +0 -60
  240. package/src/extractor/removeUnusedHooks.ts +0 -76
  241. package/src/index.ts +0 -9
  242. package/src/patchReactNativeWeb.ts +0 -123
  243. package/src/types.ts +0 -89
  244. package/types.d.ts +0 -219
@@ -0,0 +1,81 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { join } from "path";
4
+ import { createTamagui } from "@tamagui/core-node";
5
+ let loadedTamagui = null;
6
+ function loadTamagui(props) {
7
+ if (loadedTamagui) {
8
+ return loadedTamagui;
9
+ }
10
+ const configPath = join(process.cwd(), props.config);
11
+ const { unregister } = require("esbuild-register/dist/node").register({
12
+ target: "es2019",
13
+ format: "cjs"
14
+ });
15
+ try {
16
+ process.env.IS_STATIC = "is_static";
17
+ const proxyWorm = require("@tamagui/proxy-worm");
18
+ const rnw = require("react-native-web");
19
+ const Mod = require("module");
20
+ const og = Mod.prototype.require;
21
+ Mod.prototype.require = function(path) {
22
+ if (path.endsWith(".css")) {
23
+ return {};
24
+ }
25
+ if (path === "@gorhom/bottom-sheet" || path.startsWith("react-native-reanimated")) {
26
+ return proxyWorm;
27
+ }
28
+ if (path.startsWith("react-native") && !path.startsWith("react-native-web/dist/cjs/exports")) {
29
+ return rnw;
30
+ }
31
+ try {
32
+ return og.apply(this, arguments);
33
+ } catch (err) {
34
+ console.error("Tamagui error loading file:\n");
35
+ console.log(" ", path, "\n");
36
+ console.log(err.message);
37
+ console.log(err.stack);
38
+ process.exit(1);
39
+ }
40
+ };
41
+ const exp = require(configPath);
42
+ const tamaguiConfig = exp["default"] || exp;
43
+ if (!tamaguiConfig || !tamaguiConfig.parsed) {
44
+ try {
45
+ const confPath = require.resolve(configPath);
46
+ console.log(`Received:`, tamaguiConfig);
47
+ throw new Error(`Can't find valid config in ${confPath}`);
48
+ } catch (err) {
49
+ throw err;
50
+ }
51
+ }
52
+ const components = {};
53
+ for (const moduleName of props.components) {
54
+ const exported = require(moduleName);
55
+ for (const Name in exported) {
56
+ const val = exported[Name];
57
+ const staticConfig = val == null ? void 0 : val.staticConfig;
58
+ if (staticConfig) {
59
+ Object.assign(components, { [Name]: { staticConfig } });
60
+ }
61
+ }
62
+ }
63
+ process.env.IS_STATIC = void 0;
64
+ Mod.prototype.require = og;
65
+ createTamagui(tamaguiConfig);
66
+ loadedTamagui = {
67
+ components,
68
+ tamaguiConfig
69
+ };
70
+ return loadedTamagui;
71
+ } catch (err) {
72
+ throw err;
73
+ } finally {
74
+ unregister();
75
+ }
76
+ }
77
+ __name(loadTamagui, "loadTamagui");
78
+ export {
79
+ loadTamagui
80
+ };
81
+ //# sourceMappingURL=loadTamagui.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/extractor/loadTamagui.ts"],
4
+ "sourcesContent": ["import { join } from 'path'\n\nimport type { TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core'\nimport { createTamagui } from '@tamagui/core-node'\n\nlet loadedTamagui: any = null\n\nexport function loadTamagui(props: { components: string[]; config: string }): {\n components: Record<string, TamaguiComponent>\n tamaguiConfig: TamaguiInternalConfig\n} {\n if (loadedTamagui) {\n return loadedTamagui\n }\n\n const configPath = join(process.cwd(), props.config)\n\n // threaded caching avoiding 1s loading of large configs every save\n // const cachePath = join(cacheDir, 'tamagui-conf-cached.json')\n // const confStat = statSync(configPath)\n\n // // TODO may want to disable, its pretty optimistic at caching...\n // try {\n // const confCache = readFileSync(cachePath, 'utf-8')\n // const confParsed = JSON.parse(confCache)\n // if (confParsed && confParsed.mtime === confStat.mtime) {\n // return confParsed.value\n // }\n // } catch {\n // // ok, no cache\n // }\n\n const { unregister } = require('esbuild-register/dist/node').register({\n target: 'es2019',\n format: 'cjs',\n })\n\n try {\n // lets shim require and avoid importing react-native + react-native-web\n // we just need to read the config around them\n process.env.IS_STATIC = 'is_static'\n const proxyWorm = require('@tamagui/proxy-worm')\n const rnw = require('react-native-web')\n const Mod = require('module')\n const og = Mod.prototype.require\n Mod.prototype.require = function (path: string) {\n if (path.endsWith('.css')) {\n return {}\n }\n if (path === '@gorhom/bottom-sheet' || path.startsWith('react-native-reanimated')) {\n return proxyWorm\n }\n if (\n path.startsWith('react-native') &&\n // allow our rnw.tsx imports through\n !path.startsWith('react-native-web/dist/cjs/exports')\n ) {\n return rnw\n }\n try {\n return og.apply(this, arguments)\n } catch (err: any) {\n console.error('Tamagui error loading file:\\n')\n console.log(' ', path, '\\n')\n console.log(err.message)\n console.log(err.stack)\n // avoid infinite loops\n process.exit(1)\n }\n }\n\n // import config\n const exp = require(configPath)\n const tamaguiConfig = (exp['default'] || exp) as TamaguiInternalConfig\n\n if (!tamaguiConfig || !tamaguiConfig.parsed) {\n try {\n const confPath = require.resolve(configPath)\n console.log(`Received:`, tamaguiConfig)\n throw new Error(`Can't find valid config in ${confPath}`)\n } catch (err) {\n throw err\n }\n }\n\n // import components\n const components = {}\n for (const moduleName of props.components) {\n const exported = require(moduleName)\n for (const Name in exported) {\n const val = exported[Name]\n const staticConfig = val?.staticConfig\n if (staticConfig) {\n Object.assign(components, { [Name]: { staticConfig } })\n }\n }\n }\n\n // undo shims\n process.env.IS_STATIC = undefined\n Mod.prototype.require = og\n\n // set up core-node\n createTamagui(tamaguiConfig as any)\n\n loadedTamagui = {\n components,\n tamaguiConfig,\n }\n\n // save cache\n // try {\n // writeFileSync(\n // cachePath,\n // JSON.stringify({\n // value: loadedTamagui,\n // mtime: confStat.mtime,\n // })\n // )\n // } catch (err: any) {\n // console.log(`Error: tamagui config not stringifiable, caching disabled \"${err.message}\"`)\n // }\n\n return loadedTamagui\n } catch (err) {\n throw err\n } finally {\n unregister()\n }\n}\n"],
5
+ "mappings": ";;AAAA;AAGA;AAEA,IAAI,gBAAqB;AAElB,qBAAqB,OAG1B;AACA,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,KAAK,QAAQ,IAAI,GAAG,MAAM,MAAM;AAiBnD,QAAM,EAAE,eAAe,QAAQ,4BAA4B,EAAE,SAAS;AAAA,IACpE,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAED,MAAI;AAGF,YAAQ,IAAI,YAAY;AACxB,UAAM,YAAY,QAAQ,qBAAqB;AAC/C,UAAM,MAAM,QAAQ,kBAAkB;AACtC,UAAM,MAAM,QAAQ,QAAQ;AAC5B,UAAM,KAAK,IAAI,UAAU;AACzB,QAAI,UAAU,UAAU,SAAU,MAAc;AAC9C,UAAI,KAAK,SAAS,MAAM,GAAG;AACzB,eAAO,CAAC;AAAA,MACV;AACA,UAAI,SAAS,0BAA0B,KAAK,WAAW,yBAAyB,GAAG;AACjF,eAAO;AAAA,MACT;AACA,UACE,KAAK,WAAW,cAAc,KAE9B,CAAC,KAAK,WAAW,mCAAmC,GACpD;AACA,eAAO;AAAA,MACT;AACA,UAAI;AACF,eAAO,GAAG,MAAM,MAAM,SAAS;AAAA,MACjC,SAAS,KAAP;AACA,gBAAQ,MAAM,+BAA+B;AAC7C,gBAAQ,IAAI,OAAO,MAAM,IAAI;AAC7B,gBAAQ,IAAI,IAAI,OAAO;AACvB,gBAAQ,IAAI,IAAI,KAAK;AAErB,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAGA,UAAM,MAAM,QAAQ,UAAU;AAC9B,UAAM,gBAAiB,IAAI,cAAc;AAEzC,QAAI,CAAC,iBAAiB,CAAC,cAAc,QAAQ;AAC3C,UAAI;AACF,cAAM,WAA2B,AAAhB,QAAQ,QAAQ;AACjC,gBAAQ,IAAI,aAAa,aAAa;AACtC,cAAM,IAAI,MAAM,8BAA8B,UAAU;AAAA,MAC1D,SAAS,KAAP;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAGA,UAAM,aAAa,CAAC;AACpB,eAAW,cAAc,MAAM,YAAY;AACzC,YAAM,WAAW,QAAQ,UAAU;AACnC,iBAAW,QAAQ,UAAU;AAC3B,cAAM,MAAM,SAAS;AACrB,cAAM,eAAe,2BAAK;AAC1B,YAAI,cAAc;AAChB,iBAAO,OAAO,YAAY,GAAG,OAAO,EAAE,aAAa,EAAE,CAAC;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAGA,YAAQ,IAAI,YAAY;AACxB,QAAI,UAAU,UAAU;AAGxB,kBAAc,aAAoB;AAElC,oBAAgB;AAAA,MACd;AAAA,MACA;AAAA,IACF;AAeA,WAAO;AAAA,EACT,SAAS,KAAP;AACA,UAAM;AAAA,EACR,UAAE;AACA,eAAW;AAAA,EACb;AACF;AA1HgB;",
6
+ "names": []
7
+ }
@@ -1,15 +1,20 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- const logLines = /* @__PURE__ */ __name((str) => {
3
+ const prefix = " ";
4
+ const logLines = /* @__PURE__ */ __name((str, singleLine = false) => {
5
+ if (singleLine) {
6
+ return prefix + str.split(" ").join(`
7
+ ${prefix}`);
8
+ }
4
9
  let lines = [""];
5
10
  const items = str.split(" ");
6
11
  for (const item of items) {
7
- if (item.length + lines[lines.length - 1].length > 100) {
12
+ if (item.length + lines[lines.length - 1].length > 85) {
8
13
  lines.push("");
9
14
  }
10
15
  lines[lines.length - 1] += item + " ";
11
16
  }
12
- return lines.map((line, i) => " " + (i == 0 ? "" : " ") + line.trim()).join("\n");
17
+ return lines.map((line, i) => prefix + (i == 0 ? "" : " ") + line.trim()).join("\n");
13
18
  }, "logLines");
14
19
  export {
15
20
  logLines
@@ -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,wBAAC,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,GAbwB;",
6
+ "names": []
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
  }
@@ -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,WACjB;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;AAxDgB;",
6
+ "names": []
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?.get("body");
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
- return !!statement.scope.getBinding(name)?.referenced;
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
  }
@@ -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,wBAAC,SAAiB;AAnClD;AAoCM,aAAO,CAAC,CAAC,kBAAU,MAAM,WAAW,IAAI,MAA/B,oBAAkC;AAAA,IAC7C,GAF4B;AAG5B,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;AAnEgB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,24 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const timer = /* @__PURE__ */ __name(() => {
4
+ const start = Date.now();
5
+ let last = start;
6
+ return {
7
+ mark: (name, print = false) => {
8
+ if (print) {
9
+ const took = Date.now() - last;
10
+ last = Date.now();
11
+ console.log(`Time ${name}: ${took}ms`);
12
+ }
13
+ },
14
+ done: (print = false) => {
15
+ if (print) {
16
+ console.log(`Total time: ${Date.now() - start}ms`);
17
+ }
18
+ }
19
+ };
20
+ }, "timer");
21
+ export {
22
+ timer
23
+ };
24
+ //# 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,6BAAM;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,GAjBqB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,52 @@
1
+ const validHTMLAttributes = {
2
+ autocomplete: true,
3
+ border: true,
4
+ contenteditable: true,
5
+ crossorigin: true,
6
+ dir: true,
7
+ draggable: true,
8
+ enctype: true,
9
+ formenctype: true,
10
+ formmethod: true,
11
+ formtarget: true,
12
+ inputmode: true,
13
+ kind: true,
14
+ link: true,
15
+ method: true,
16
+ preload: true,
17
+ referrerpolicy: true,
18
+ rel: true,
19
+ rev: true,
20
+ role: true,
21
+ sandbox: true,
22
+ shape: true,
23
+ spellcheck: true,
24
+ target: true,
25
+ translate: true,
26
+ type: true,
27
+ wrap: true,
28
+ "aria-autocomplete": true,
29
+ "aria-busy": true,
30
+ "aria-checked": true,
31
+ "aria-current": true,
32
+ "aria-disabled": true,
33
+ "aria-expanded": true,
34
+ "aria-haspopup": true,
35
+ "aria-hidden": true,
36
+ "aria-invalid": true,
37
+ "aria-polite": true,
38
+ "aria-modal": true,
39
+ "aria-multiline": true,
40
+ "aria-multiselectable": true,
41
+ "aria-orientation": true,
42
+ "aria-pressed": true,
43
+ "aria-readonly": true,
44
+ "aria-relevant": true,
45
+ "aria-required": true,
46
+ "aria-selected": true,
47
+ "aria-sort": true
48
+ };
49
+ export {
50
+ validHTMLAttributes
51
+ };
52
+ //# 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"],
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;",
6
+ "names": []
7
+ }
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts"],
3
+ "sources": ["../../src/index.ts"],
4
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 './patchReactNativeWeb'\n"],
5
5
  "mappings": "AAAA,QAAQ,IAAI,0BAA0B;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;",
6
6
  "names": []
@@ -1,27 +1,62 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import * as fs from "fs";
4
3
  import path from "path";
4
+ import * as fs from "fs-extra";
5
5
  function patchReactNativeWeb() {
6
6
  const rootDir = require.resolve("react-native-web").replace(/\/dist.*/, "");
7
7
  const modulePath = path.join(rootDir, "dist", "tamagui-exports.js");
8
8
  const cjsPath = path.join(rootDir, "dist", "cjs", "tamagui-exports.js");
9
- const isEqual = (() => {
10
- let res = false;
11
- try {
12
- res = fs.readFileSync(modulePath, "utf-8") === moduleExports && fs.readFileSync(cjsPath, "utf-8") == cjsExports;
13
- } catch {
14
- res = false;
15
- }
16
- return res;
17
- })();
18
- if (!isEqual) {
19
- console.log("\u{1F95A} Tamagui patching react-native-web to share atomic styling primitives");
20
- console.log(" > adding", modulePath);
21
- console.log(" > adding", cjsPath);
9
+ const shouldPatchExports = fs.existsSync(modulePath) && fs.readFileSync(modulePath, "utf-8") === moduleExports && fs.existsSync(cjsPath) && fs.readFileSync(cjsPath, "utf-8") === cjsExports;
10
+ if (!shouldPatchExports) {
11
+ console.log(" | patch " + path.relative(rootDir, modulePath));
12
+ console.log(" | patch " + path.relative(rootDir, cjsPath));
22
13
  fs.writeFileSync(modulePath, moduleExports);
23
14
  fs.writeFileSync(cjsPath, cjsExports);
24
15
  }
16
+ const patches = [
17
+ {
18
+ id: "dom-props",
19
+ filePath: ["modules", "createDOMProps", "index.js"],
20
+ replacee: ` if (dataSet != null) {`,
21
+ replacer: `
22
+ if (props.dataSet && props.dataSet.className) {
23
+ const { className, ...dataSetRest } = props.dataSet
24
+ classList = className
25
+ dataSet = dataSetRest
26
+ }
27
+ if (props.dataSet && props.dataSet.id) {
28
+ domProps['id'] = props.dataSet.id
29
+ }
30
+ if (dataSet != null) {`
31
+ },
32
+ {
33
+ id: "forward-props",
34
+ filePath: ["modules", "forwardedProps", "index.js"],
35
+ replacee: `dataSet: true,`,
36
+ replacer: `id: true, dataSet: true,`
37
+ }
38
+ ];
39
+ for (const { filePath, replacee, replacer } of patches) {
40
+ const files = [
41
+ path.join(rootDir, "dist", ...filePath),
42
+ path.join(rootDir, "dist", "cjs", ...filePath)
43
+ ];
44
+ for (const file of files) {
45
+ const contents = fs.readFileSync(file, "utf-8");
46
+ if (contents.includes(replacer)) {
47
+ continue;
48
+ }
49
+ if (!contents.includes(replacee)) {
50
+ console.warn(`\u26A0\uFE0F Error: couldn't apply className patch! Maybe using incompatible react-native-web version.`, {
51
+ replacee,
52
+ contents
53
+ });
54
+ continue;
55
+ }
56
+ console.log(" | patch " + path.relative(rootDir, file));
57
+ fs.writeFileSync(file, contents.replace(replacee, replacer));
58
+ }
59
+ }
25
60
  const moduleEntry = path.join(rootDir, "dist", "index.js");
26
61
  const moduleEntrySrc = fs.readFileSync(moduleEntry, "utf-8");
27
62
  if (!moduleEntrySrc.includes("// tamagui-patch-v4")) {
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/patchReactNativeWeb.ts"],
4
+ "sourcesContent": ["import path from 'path'\n\nimport * as fs from 'fs-extra'\n\n// were patching react-native-web so we can use some internal methods\n// we do it this way because we need to rely on webpack or bundler config to determine cjs vs esm\n// so we can't just require it all directly\n// would be nice in the future to be able to eject from react-native-web entirely optionally\n\n// keep it sync\nexport function patchReactNativeWeb() {\n const rootDir = require.resolve('react-native-web').replace(/\\/dist.*/, '')\n const modulePath = path.join(rootDir, 'dist', 'tamagui-exports.js')\n const cjsPath = path.join(rootDir, 'dist', 'cjs', 'tamagui-exports.js')\n const shouldPatchExports =\n fs.existsSync(modulePath) &&\n fs.readFileSync(modulePath, 'utf-8') === moduleExports &&\n fs.existsSync(cjsPath) &&\n fs.readFileSync(cjsPath, 'utf-8') === cjsExports\n if (!shouldPatchExports) {\n console.log(' | patch ' + path.relative(rootDir, modulePath))\n console.log(' | patch ' + path.relative(rootDir, cjsPath))\n fs.writeFileSync(modulePath, moduleExports)\n fs.writeFileSync(cjsPath, cjsExports)\n }\n\n // patch to allow className prop\n const patches = [\n {\n id: 'dom-props',\n filePath: ['modules', 'createDOMProps', 'index.js'],\n replacee: ` if (dataSet != null) {`,\n replacer: `\n if (props.dataSet && props.dataSet.className) {\n const { className, ...dataSetRest } = props.dataSet\n classList = className\n dataSet = dataSetRest\n }\n if (props.dataSet && props.dataSet.id) {\n domProps['id'] = props.dataSet.id\n }\n if (dataSet != null) {`,\n },\n {\n id: 'forward-props',\n filePath: ['modules', 'forwardedProps', 'index.js'],\n replacee: `dataSet: true,`,\n replacer: `id: true, dataSet: true,`,\n },\n ]\n\n for (const { filePath, replacee, replacer } of patches) {\n const files = [\n path.join(rootDir, 'dist', ...filePath),\n path.join(rootDir, 'dist', 'cjs', ...filePath),\n ]\n for (const file of files) {\n const contents = fs.readFileSync(file, 'utf-8')\n if (contents.includes(replacer)) {\n continue\n }\n if (!contents.includes(replacee)) {\n console.warn(\n `\u26A0\uFE0F Error: couldn't apply className patch! Maybe using incompatible react-native-web version.`,\n {\n replacee,\n contents,\n }\n )\n continue\n }\n console.log(' | patch ' + path.relative(rootDir, file))\n fs.writeFileSync(file, contents.replace(replacee, replacer))\n }\n }\n\n // if entry files not patched, patch them:\n const moduleEntry = path.join(rootDir, 'dist', 'index.js')\n const moduleEntrySrc = fs.readFileSync(moduleEntry, 'utf-8')\n if (!moduleEntrySrc.includes('// tamagui-patch-v4')) {\n fs.writeFileSync(\n moduleEntry,\n `${removePatch(moduleEntrySrc)}\n\n// tamagui-patch-v4\nimport * as TExports from './tamagui-exports'\nexport const TamaguiExports = TExports\n// tamagui-patch-end\n`\n )\n }\n const cjsEntry = path.join(rootDir, 'dist', 'cjs', 'index.js')\n const cjsEntrySrc = fs.readFileSync(cjsEntry, 'utf-8')\n if (!cjsEntrySrc.includes('// tamagui-patch-v4')) {\n fs.writeFileSync(\n cjsEntry,\n `${removePatch(cjsEntrySrc)}\n\n// tamagui-patch-v4\nexports.TamaguiExports = _interopRequireDefault(require(\"./tamagui-exports\"));\n// tamagui-patch-end\n`\n )\n }\n}\n\nfunction removePatch(source: string) {\n return source.replace(/\\/\\/ tamagui-patch([.\\s\\S]*)/g, '')\n}\n\n// view exports/View.ts\nconst forwardedPropsObj = `{\n ...fwdProps.defaultProps,\n ...fwdProps.accessibilityProps,\n ...fwdProps.clickProps,\n ...fwdProps.focusProps,\n ...fwdProps.keyboardProps,\n ...fwdProps.mouseProps,\n ...fwdProps.touchProps,\n ...fwdProps.styleProps,\n href: true,\n lang: true,\n onScroll: true,\n onWheel: true,\n pointerEvents: true\n}\n`\n\nconst moduleExports = `\nexport { atomic } from './exports/StyleSheet/compile'\nexport { default as createCompileableStyle } from './exports/StyleSheet/createCompileableStyle'\nexport { default as createReactDOMStyle } from './exports/StyleSheet/createReactDOMStyle'\nexport { default as i18Style } from './exports/StyleSheet/i18nStyle'\nexport { default as createDOMProps } from './modules/createDOMProps'\nexport { default as AccessibilityUtil } from './modules/AccessibilityUtil'\nexport { default as createElement } from './exports/createElement'\nexport { default as css } from './exports/StyleSheet/css'\nexport { default as TextAncestorContext } from './exports/Text/TextAncestorContext'\nexport { default as pick } from './modules/pick'\nexport { default as useElementLayout } from './modules/useElementLayout'\nexport { default as useMergeRefs } from './modules/useMergeRefs'\nexport { default as usePlatformMethods } from './modules/usePlatformMethods'\nexport { default as useResponderEvents } from './modules/useResponderEvents'\nimport * as fwdProps from './modules/forwardedProps'\nexport const forwardedProps = ${forwardedPropsObj}\n`\n\nconst cjsExports = `\nexports.atomic = require('./exports/StyleSheet/compile').atomic\nexports.createCompileableStyle = require('./exports/StyleSheet/createCompileableStyle')\nexports.createReactDOMStyle = require('./exports/StyleSheet/createReactDOMStyle')\nexports.i18Style = require('./exports/StyleSheet/i18nStyle')\nexports.createDOMProps = require('./modules/createDOMProps')\nexports.AccessibilityUtil = require('./modules/AccessibilityUtil')\nexports.createElement = require('./exports/createElement')\nexports.css = require('./exports/StyleSheet/css')\nexports.TextAncestorContext = require('./exports/Text/TextAncestorContext')\nexports.pick = require('./modules/pick')\nexports.useElementLayout = require('./modules/useElementLayout')\nexports.useMergeRefs = require('./modules/useMergeRefs')\nexports.usePlatformMethods = require('./modules/usePlatformMethods')\nexports.useResponderEvents = require('./modules/useResponderEvents')\nconst fwdProps = require('./modules/forwardedProps')\nexports.forwardedProps = ${forwardedPropsObj}\n`\n"],
5
+ "mappings": ";;AAAA;AAEA;AAQO,+BAA+B;AACpC,QAAM,UAAU,AAAgB,oCAAoB,QAAQ,YAAY,EAAE;AAC1E,QAAM,aAAa,KAAK,KAAK,SAAS,QAAQ,oBAAoB;AAClE,QAAM,UAAU,KAAK,KAAK,SAAS,QAAQ,OAAO,oBAAoB;AACtE,QAAM,qBACJ,GAAG,WAAW,UAAU,KACxB,GAAG,aAAa,YAAY,OAAO,MAAM,iBACzC,GAAG,WAAW,OAAO,KACrB,GAAG,aAAa,SAAS,OAAO,MAAM;AACxC,MAAI,CAAC,oBAAoB;AACvB,YAAQ,IAAI,mBAAmB,KAAK,SAAS,SAAS,UAAU,CAAC;AACjE,YAAQ,IAAI,mBAAmB,KAAK,SAAS,SAAS,OAAO,CAAC;AAC9D,OAAG,cAAc,YAAY,aAAa;AAC1C,OAAG,cAAc,SAAS,UAAU;AAAA,EACtC;AAGA,QAAM,UAAU;AAAA,IACd;AAAA,MACE,IAAI;AAAA,MACJ,UAAU,CAAC,WAAW,kBAAkB,UAAU;AAAA,MAClD,UAAU;AAAA,MACV,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUZ;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,UAAU,CAAC,WAAW,kBAAkB,UAAU;AAAA,MAClD,UAAU;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,aAAW,EAAE,UAAU,UAAU,cAAc,SAAS;AACtD,UAAM,QAAQ;AAAA,MACZ,KAAK,KAAK,SAAS,QAAQ,GAAG,QAAQ;AAAA,MACtC,KAAK,KAAK,SAAS,QAAQ,OAAO,GAAG,QAAQ;AAAA,IAC/C;AACA,eAAW,QAAQ,OAAO;AACxB,YAAM,WAAW,GAAG,aAAa,MAAM,OAAO;AAC9C,UAAI,SAAS,SAAS,QAAQ,GAAG;AAC/B;AAAA,MACF;AACA,UAAI,CAAC,SAAS,SAAS,QAAQ,GAAG;AAChC,gBAAQ,KACN,0GACA;AAAA,UACE;AAAA,UACA;AAAA,QACF,CACF;AACA;AAAA,MACF;AACA,cAAQ,IAAI,mBAAmB,KAAK,SAAS,SAAS,IAAI,CAAC;AAC3D,SAAG,cAAc,MAAM,SAAS,QAAQ,UAAU,QAAQ,CAAC;AAAA,IAC7D;AAAA,EACF;AAGA,QAAM,cAAc,KAAK,KAAK,SAAS,QAAQ,UAAU;AACzD,QAAM,iBAAiB,GAAG,aAAa,aAAa,OAAO;AAC3D,MAAI,CAAC,eAAe,SAAS,qBAAqB,GAAG;AACnD,OAAG,cACD,aACA,GAAG,YAAY,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAO/B;AAAA,EACF;AACA,QAAM,WAAW,KAAK,KAAK,SAAS,QAAQ,OAAO,UAAU;AAC7D,QAAM,cAAc,GAAG,aAAa,UAAU,OAAO;AACrD,MAAI,CAAC,YAAY,SAAS,qBAAqB,GAAG;AAChD,OAAG,cACD,UACA,GAAG,YAAY,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,CAM5B;AAAA,EACF;AACF;AA9FgB;AAgGhB,qBAAqB,QAAgB;AACnC,SAAO,OAAO,QAAQ,iCAAiC,EAAE;AAC3D;AAFS;AAKT,MAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB1B,MAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAgBU;AAAA;AAGhC,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAgBQ;AAAA;",
6
+ "names": []
7
+ }
File without changes
File without changes
@@ -0,0 +1,13 @@
1
+ import findCacheDir from "find-cache-dir";
2
+ const CSS_FILE_NAME = "__snack.css";
3
+ const MEDIA_SEP = "_";
4
+ const cacheDir = findCacheDir({ name: "tamagui", create: true });
5
+ const FAILED_EVAL = Symbol("failed_style_eval");
6
+ const CONCAT_CLASSNAME_IMPORT = "concatClassName";
7
+ export {
8
+ CONCAT_CLASSNAME_IMPORT,
9
+ CSS_FILE_NAME,
10
+ FAILED_EVAL,
11
+ MEDIA_SEP,
12
+ cacheDir
13
+ };
@@ -0,0 +1,10 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import * as t from "@babel/types";
4
+ function accessSafe(obj, member) {
5
+ return t.logicalExpression("&&", t.logicalExpression("&&", t.binaryExpression("===", t.unaryExpression("typeof", obj), t.stringLiteral("object")), t.binaryExpression("!==", obj, t.nullLiteral())), t.memberExpression(obj, t.identifier(member), false));
6
+ }
7
+ __name(accessSafe, "accessSafe");
8
+ export {
9
+ accessSafe
10
+ };
@@ -0,0 +1,29 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import * as babelParser from "@babel/parser";
4
+ const parserOptions = Object.freeze({
5
+ plugins: [
6
+ "asyncGenerators",
7
+ "classProperties",
8
+ "dynamicImport",
9
+ "functionBind",
10
+ "jsx",
11
+ "numericSeparator",
12
+ "objectRestSpread",
13
+ "optionalCatchBinding",
14
+ "decorators-legacy",
15
+ "typescript",
16
+ "optionalChaining",
17
+ "nullishCoalescingOperator"
18
+ ],
19
+ sourceType: "module"
20
+ });
21
+ const parser = babelParser.parse.bind(babelParser);
22
+ function babelParse(code) {
23
+ return parser(code.toString(), parserOptions);
24
+ }
25
+ __name(babelParse, "babelParse");
26
+ export {
27
+ babelParse,
28
+ parserOptions
29
+ };
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import * as t from "@babel/types";
4
+ function buildClassName(classNameObjects) {
5
+ return classNameObjects.reduce((acc, val) => {
6
+ if (acc == null) {
7
+ if (t.isConditionalExpression(val) || t.isStringLiteral(val) || t.isNumericLiteral(val)) {
8
+ return val;
9
+ }
10
+ return t.logicalExpression("||", val, t.stringLiteral(""));
11
+ }
12
+ let inner;
13
+ if (t.isStringLiteral(val)) {
14
+ if (t.isStringLiteral(acc)) {
15
+ return t.stringLiteral(`${acc.value} ${val.value}`);
16
+ }
17
+ inner = t.stringLiteral(` ${val.value}`);
18
+ } else if (t.isLiteral(val)) {
19
+ inner = t.binaryExpression("+", t.stringLiteral(" "), val);
20
+ } else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {
21
+ if (t.isStringLiteral(acc)) {
22
+ return t.binaryExpression("+", t.stringLiteral(`${acc.value} `), val);
23
+ }
24
+ inner = t.binaryExpression("+", t.stringLiteral(" "), val);
25
+ } else if (t.isIdentifier(val) || t.isMemberExpression(val)) {
26
+ inner = t.conditionalExpression(val, t.binaryExpression("+", t.stringLiteral(" "), val), t.stringLiteral(""));
27
+ } else {
28
+ if (t.isStringLiteral(acc)) {
29
+ return t.binaryExpression("+", t.stringLiteral(`${acc.value} `), t.logicalExpression("||", val, t.stringLiteral("")));
30
+ }
31
+ inner = t.binaryExpression("+", t.stringLiteral(" "), t.logicalExpression("||", val, t.stringLiteral("")));
32
+ }
33
+ return t.binaryExpression("+", acc, inner);
34
+ }, null);
35
+ }
36
+ __name(buildClassName, "buildClassName");
37
+ export {
38
+ buildClassName
39
+ };
@@ -0,0 +1,51 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import vm from "vm";
4
+ import generate from "@babel/generator";
5
+ import * as t from "@babel/types";
6
+ import { createCSSVariable } from "@tamagui/core-node";
7
+ import { FAILED_EVAL } from "../constants";
8
+ import { evaluateAstNode } from "./evaluateAstNode";
9
+ import { isValidThemeHook } from "./extractHelpers";
10
+ function createEvaluator({
11
+ tamaguiConfig,
12
+ staticNamespace,
13
+ sourcePath,
14
+ traversePath,
15
+ shouldPrintDebug
16
+ }) {
17
+ const evalFn = /* @__PURE__ */ __name((n) => {
18
+ if (t.isMemberExpression(n) && t.isIdentifier(n.property) && isValidThemeHook(traversePath, n, sourcePath)) {
19
+ const key = n.property.name;
20
+ if (shouldPrintDebug) {
21
+ console.log(" > found theme prop", key);
22
+ }
23
+ console.log("SHOULD FIND THEME (NESTED NOW)", key);
24
+ return createCSSVariable(key);
25
+ }
26
+ if (t.isIdentifier(n) && staticNamespace.hasOwnProperty(n.name)) {
27
+ return staticNamespace[n.name];
28
+ }
29
+ const evalContext = vm.createContext(staticNamespace);
30
+ const code = `(${generate(n).code})`;
31
+ return vm.runInContext(code, evalContext);
32
+ }, "evalFn");
33
+ return (n) => {
34
+ return evaluateAstNode(n, evalFn);
35
+ };
36
+ }
37
+ __name(createEvaluator, "createEvaluator");
38
+ function createSafeEvaluator(attemptEval) {
39
+ return (n) => {
40
+ try {
41
+ return attemptEval(n);
42
+ } catch (err) {
43
+ return FAILED_EVAL;
44
+ }
45
+ };
46
+ }
47
+ __name(createSafeEvaluator, "createSafeEvaluator");
48
+ export {
49
+ createEvaluator,
50
+ createSafeEvaluator
51
+ };