@tamagui/static 1.0.1-beta.99 → 1.0.1-rc.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 (269) hide show
  1. package/dist/{cjs/constants.js → constants.js} +9 -4
  2. package/dist/constants.js.map +7 -0
  3. package/dist/{cjs/extractor → extractor}/accessSafe.js +14 -2
  4. package/dist/{esm/extractor → extractor}/accessSafe.js.map +2 -2
  5. package/dist/{cjs/extractor → extractor}/babelParse.js +5 -1
  6. package/dist/extractor/babelParse.js.map +7 -0
  7. package/dist/{cjs/extractor → extractor}/buildClassName.js +40 -9
  8. package/dist/extractor/buildClassName.js.map +7 -0
  9. package/dist/extractor/bundle.js +117 -0
  10. package/dist/extractor/bundle.js.map +7 -0
  11. package/dist/{cjs/extractor → extractor}/createEvaluator.js +11 -8
  12. package/dist/extractor/createEvaluator.js.map +7 -0
  13. package/dist/extractor/createExtractor.js +1623 -0
  14. package/dist/extractor/createExtractor.js.map +7 -0
  15. package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +18 -6
  16. package/dist/extractor/ensureImportingConcat.js.map +7 -0
  17. package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +14 -4
  18. package/dist/extractor/evaluateAstNode.js.map +7 -0
  19. package/dist/{cjs/extractor → extractor}/extractHelpers.js +83 -12
  20. package/dist/extractor/extractHelpers.js.map +7 -0
  21. package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +46 -42
  22. package/dist/extractor/extractMediaStyle.js.map +7 -0
  23. package/dist/{cjs/extractor → extractor}/extractToClassNames.js +144 -73
  24. package/dist/extractor/extractToClassNames.js.map +7 -0
  25. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +1 -0
  26. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js.map +2 -2
  27. package/dist/{cjs/extractor → extractor}/generatedUid.js +9 -2
  28. package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
  29. package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +1 -0
  30. package/dist/extractor/getPrefixLogs.js.map +7 -0
  31. package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +24 -13
  32. package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
  33. package/dist/{cjs/extractor → extractor}/getSourceModule.js +5 -1
  34. package/dist/{esm/extractor → extractor}/getSourceModule.js.map +3 -3
  35. package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +89 -35
  36. package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
  37. package/dist/{cjs/extractor → extractor}/hoistClassNames.js +5 -1
  38. package/dist/{jsx/extractor → extractor}/hoistClassNames.js.map +3 -3
  39. package/dist/{cjs/extractor → extractor}/literalToAst.js +26 -30
  40. package/dist/{jsx/extractor → extractor}/literalToAst.js.map +2 -2
  41. package/dist/extractor/loadFile.js +21 -0
  42. package/dist/extractor/loadFile.js.map +7 -0
  43. package/dist/extractor/loadTamagui.js +427 -0
  44. package/dist/extractor/loadTamagui.js.map +7 -0
  45. package/dist/{cjs/extractor → extractor}/logLines.js +2 -1
  46. package/dist/extractor/logLines.js.map +7 -0
  47. package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +13 -34
  48. package/dist/extractor/normalizeTernaries.js.map +7 -0
  49. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +5 -1
  50. package/dist/extractor/removeUnusedHooks.js.map +7 -0
  51. package/dist/{cjs/extractor → extractor}/timer.js +9 -1
  52. package/dist/extractor/timer.js.map +7 -0
  53. package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +1 -0
  54. package/dist/{jsx/extractor → extractor}/validHTMLAttributes.js.map +2 -2
  55. package/dist/getPragmaOptions.js +68 -0
  56. package/dist/getPragmaOptions.js.map +7 -0
  57. package/dist/helpers/memoize.js +46 -0
  58. package/dist/helpers/memoize.js.map +7 -0
  59. package/dist/{cjs/index.js → index.js} +10 -8
  60. package/dist/index.js.map +7 -0
  61. package/dist/require.js +86 -0
  62. package/dist/require.js.map +7 -0
  63. package/dist/{cjs/types.js → types.js} +1 -0
  64. package/dist/types.js.map +7 -0
  65. package/dist/webpackPlugin.js +35 -0
  66. package/dist/webpackPlugin.js.map +7 -0
  67. package/package.json +40 -36
  68. package/src/constants.ts +2 -1
  69. package/src/extractor/babelParse.ts +3 -2
  70. package/src/extractor/buildClassName.ts +21 -5
  71. package/src/extractor/bundle.ts +110 -0
  72. package/src/extractor/createEvaluator.ts +10 -12
  73. package/src/extractor/createExtractor.ts +1702 -1523
  74. package/src/extractor/ensureImportingConcat.ts +4 -11
  75. package/src/extractor/evaluateAstNode.ts +1 -1
  76. package/src/extractor/extractHelpers.ts +93 -10
  77. package/src/extractor/extractMediaStyle.ts +18 -11
  78. package/src/extractor/extractToClassNames.ts +104 -47
  79. package/src/extractor/getPrefixLogs.ts +1 -1
  80. package/src/extractor/getPropValueFromAttributes.ts +4 -3
  81. package/src/extractor/getSourceModule.ts +2 -0
  82. package/src/extractor/getStaticBindingsForScope.ts +90 -46
  83. package/src/extractor/loadFile.ts +17 -0
  84. package/src/extractor/loadTamagui.ts +448 -103
  85. package/src/extractor/logLines.ts +1 -1
  86. package/src/extractor/normalizeTernaries.ts +2 -2
  87. package/src/extractor/removeUnusedHooks.ts +2 -0
  88. package/src/extractor/timer.ts +12 -1
  89. package/src/getPragmaOptions.ts +53 -0
  90. package/src/helpers/memoize.ts +21 -0
  91. package/src/index.ts +9 -8
  92. package/src/require.ts +103 -0
  93. package/src/types.ts +33 -31
  94. package/src/webpackPlugin.ts +9 -0
  95. package/tamagui.tsconfig.json +5 -0
  96. package/types/constants.d.ts +6 -0
  97. package/types/extractor/accessSafe.d.ts +3 -0
  98. package/types/extractor/babelParse.d.ts +6 -0
  99. package/types/extractor/buildClassName.d.ts +5 -2
  100. package/types/extractor/bundle.d.ts +13 -0
  101. package/types/extractor/createEvaluator.d.ts +3 -3
  102. package/types/extractor/createExtractor.d.ts +25 -9
  103. package/types/extractor/ensureImportingConcat.d.ts +4 -0
  104. package/types/extractor/evaluateAstNode.d.ts +3 -0
  105. package/types/extractor/extractHelpers.d.ts +15 -3
  106. package/types/extractor/extractMediaStyle.d.ts +3 -3
  107. package/types/extractor/extractToClassNames.d.ts +5 -4
  108. package/types/extractor/findTopmostFunction.d.ts +4 -0
  109. package/types/extractor/generatedUid.d.ts +5 -0
  110. package/types/extractor/getPrefixLogs.d.ts +1 -1
  111. package/types/extractor/getPropValueFromAttributes.d.ts +19 -0
  112. package/types/extractor/getSourceModule.d.ts +16 -0
  113. package/types/extractor/getStaticBindingsForScope.d.ts +5 -0
  114. package/types/extractor/hoistClassNames.d.ts +6 -0
  115. package/types/extractor/literalToAst.d.ts +4 -0
  116. package/types/extractor/loadFile.d.ts +1 -0
  117. package/types/extractor/loadTamagui.d.ts +15 -5
  118. package/types/extractor/logLines.d.ts +2 -0
  119. package/types/extractor/normalizeTernaries.d.ts +1 -1
  120. package/types/extractor/removeUnusedHooks.d.ts +3 -0
  121. package/types/extractor/timer.d.ts +5 -0
  122. package/types/extractor/validHTMLAttributes.d.ts +98 -0
  123. package/types/getPragmaOptions.d.ts +9 -0
  124. package/types/helpers/memoize.d.ts +8 -0
  125. package/types/index.d.ts +9 -8
  126. package/types/require.d.ts +4 -0
  127. package/types/types.d.ts +28 -27
  128. package/types/webpackPlugin.d.ts +4 -0
  129. package/dist/cjs/constants.js.map +0 -7
  130. package/dist/cjs/extractor/accessSafe.js.map +0 -7
  131. package/dist/cjs/extractor/babelParse.js.map +0 -7
  132. package/dist/cjs/extractor/buildClassName.js.map +0 -7
  133. package/dist/cjs/extractor/createEvaluator.js.map +0 -7
  134. package/dist/cjs/extractor/createExtractor.js +0 -1394
  135. package/dist/cjs/extractor/createExtractor.js.map +0 -7
  136. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
  137. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
  138. package/dist/cjs/extractor/extractHelpers.js.map +0 -7
  139. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
  140. package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
  141. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
  142. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
  143. package/dist/cjs/extractor/getSourceModule.js.map +0 -7
  144. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
  145. package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
  146. package/dist/cjs/extractor/literalToAst.js.map +0 -7
  147. package/dist/cjs/extractor/loadTamagui.js +0 -139
  148. package/dist/cjs/extractor/loadTamagui.js.map +0 -7
  149. package/dist/cjs/extractor/logLines.js.map +0 -7
  150. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
  151. package/dist/cjs/extractor/removeUnusedHooks.js.map +0 -7
  152. package/dist/cjs/extractor/timer.js.map +0 -7
  153. package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -7
  154. package/dist/cjs/index.js.map +0 -7
  155. package/dist/cjs/types.js.map +0 -7
  156. package/dist/esm/constants.js +0 -14
  157. package/dist/esm/constants.js.map +0 -7
  158. package/dist/esm/extractor/accessSafe.js +0 -8
  159. package/dist/esm/extractor/babelParse.js +0 -28
  160. package/dist/esm/extractor/babelParse.js.map +0 -7
  161. package/dist/esm/extractor/buildClassName.js +0 -37
  162. package/dist/esm/extractor/buildClassName.js.map +0 -7
  163. package/dist/esm/extractor/createEvaluator.js +0 -53
  164. package/dist/esm/extractor/createEvaluator.js.map +0 -7
  165. package/dist/esm/extractor/createExtractor.js +0 -1379
  166. package/dist/esm/extractor/createExtractor.js.map +0 -7
  167. package/dist/esm/extractor/ensureImportingConcat.js +0 -21
  168. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
  169. package/dist/esm/extractor/evaluateAstNode.js +0 -91
  170. package/dist/esm/extractor/evaluateAstNode.js.map +0 -7
  171. package/dist/esm/extractor/extractHelpers.js +0 -97
  172. package/dist/esm/extractor/extractHelpers.js.map +0 -7
  173. package/dist/esm/extractor/extractMediaStyle.js +0 -161
  174. package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
  175. package/dist/esm/extractor/extractToClassNames.js +0 -294
  176. package/dist/esm/extractor/extractToClassNames.js.map +0 -7
  177. package/dist/esm/extractor/findTopmostFunction.js +0 -20
  178. package/dist/esm/extractor/findTopmostFunction.js.map +0 -7
  179. package/dist/esm/extractor/generatedUid.js +0 -25
  180. package/dist/esm/extractor/generatedUid.js.map +0 -7
  181. package/dist/esm/extractor/getPrefixLogs.js +0 -8
  182. package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
  183. package/dist/esm/extractor/getPropValueFromAttributes.js +0 -46
  184. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
  185. package/dist/esm/extractor/getSourceModule.js +0 -66
  186. package/dist/esm/extractor/getStaticBindingsForScope.js +0 -132
  187. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
  188. package/dist/esm/extractor/hoistClassNames.js +0 -40
  189. package/dist/esm/extractor/hoistClassNames.js.map +0 -7
  190. package/dist/esm/extractor/literalToAst.js +0 -90
  191. package/dist/esm/extractor/literalToAst.js.map +0 -7
  192. package/dist/esm/extractor/loadTamagui.js +0 -117
  193. package/dist/esm/extractor/loadTamagui.js.map +0 -7
  194. package/dist/esm/extractor/logLines.js +0 -20
  195. package/dist/esm/extractor/logLines.js.map +0 -7
  196. package/dist/esm/extractor/normalizeTernaries.js +0 -79
  197. package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
  198. package/dist/esm/extractor/removeUnusedHooks.js +0 -76
  199. package/dist/esm/extractor/removeUnusedHooks.js.map +0 -7
  200. package/dist/esm/extractor/timer.js +0 -22
  201. package/dist/esm/extractor/timer.js.map +0 -7
  202. package/dist/esm/extractor/validHTMLAttributes.js +0 -102
  203. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
  204. package/dist/esm/index.js +0 -15
  205. package/dist/esm/index.js.map +0 -7
  206. package/dist/esm/types.js +0 -1
  207. package/dist/esm/types.js.map +0 -7
  208. package/dist/jsx/constants.js +0 -14
  209. package/dist/jsx/constants.js.map +0 -7
  210. package/dist/jsx/extractor/accessSafe.js +0 -8
  211. package/dist/jsx/extractor/accessSafe.js.map +0 -7
  212. package/dist/jsx/extractor/babelParse.js +0 -28
  213. package/dist/jsx/extractor/babelParse.js.map +0 -7
  214. package/dist/jsx/extractor/buildClassName.js +0 -37
  215. package/dist/jsx/extractor/buildClassName.js.map +0 -7
  216. package/dist/jsx/extractor/createEvaluator.js +0 -53
  217. package/dist/jsx/extractor/createEvaluator.js.map +0 -7
  218. package/dist/jsx/extractor/createExtractor.js +0 -1343
  219. package/dist/jsx/extractor/createExtractor.js.map +0 -7
  220. package/dist/jsx/extractor/ensureImportingConcat.js +0 -21
  221. package/dist/jsx/extractor/ensureImportingConcat.js.map +0 -7
  222. package/dist/jsx/extractor/evaluateAstNode.js +0 -91
  223. package/dist/jsx/extractor/evaluateAstNode.js.map +0 -7
  224. package/dist/jsx/extractor/extractHelpers.js +0 -97
  225. package/dist/jsx/extractor/extractHelpers.js.map +0 -7
  226. package/dist/jsx/extractor/extractMediaStyle.js +0 -146
  227. package/dist/jsx/extractor/extractMediaStyle.js.map +0 -7
  228. package/dist/jsx/extractor/extractToClassNames.js +0 -280
  229. package/dist/jsx/extractor/extractToClassNames.js.map +0 -7
  230. package/dist/jsx/extractor/findTopmostFunction.js +0 -20
  231. package/dist/jsx/extractor/findTopmostFunction.js.map +0 -7
  232. package/dist/jsx/extractor/generatedUid.js +0 -25
  233. package/dist/jsx/extractor/generatedUid.js.map +0 -7
  234. package/dist/jsx/extractor/getPrefixLogs.js +0 -9
  235. package/dist/jsx/extractor/getPrefixLogs.js.map +0 -7
  236. package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -46
  237. package/dist/jsx/extractor/getPropValueFromAttributes.js.map +0 -7
  238. package/dist/jsx/extractor/getSourceModule.js +0 -66
  239. package/dist/jsx/extractor/getSourceModule.js.map +0 -7
  240. package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -132
  241. package/dist/jsx/extractor/getStaticBindingsForScope.js.map +0 -7
  242. package/dist/jsx/extractor/hoistClassNames.js +0 -40
  243. package/dist/jsx/extractor/literalToAst.js +0 -75
  244. package/dist/jsx/extractor/loadTamagui.js +0 -102
  245. package/dist/jsx/extractor/loadTamagui.js.map +0 -7
  246. package/dist/jsx/extractor/logLines.js +0 -20
  247. package/dist/jsx/extractor/logLines.js.map +0 -7
  248. package/dist/jsx/extractor/normalizeTernaries.js +0 -50
  249. package/dist/jsx/extractor/normalizeTernaries.js.map +0 -7
  250. package/dist/jsx/extractor/removeUnusedHooks.js +0 -77
  251. package/dist/jsx/extractor/removeUnusedHooks.js.map +0 -7
  252. package/dist/jsx/extractor/timer.js +0 -22
  253. package/dist/jsx/extractor/timer.js.map +0 -7
  254. package/dist/jsx/extractor/validHTMLAttributes.js +0 -102
  255. package/dist/jsx/index.js +0 -15
  256. package/dist/jsx/index.js.map +0 -7
  257. package/dist/jsx/types.js +0 -1
  258. package/dist/jsx/types.js.map +0 -7
  259. package/types/extractor/buildClassName.d.ts.map +0 -1
  260. package/types/extractor/createEvaluator.d.ts.map +0 -1
  261. package/types/extractor/createExtractor.d.ts.map +0 -1
  262. package/types/extractor/extractHelpers.d.ts.map +0 -1
  263. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  264. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  265. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  266. package/types/extractor/loadTamagui.d.ts.map +0 -1
  267. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  268. package/types/index.d.ts.map +0 -1
  269. package/types/types.d.ts.map +0 -1
@@ -0,0 +1,53 @@
1
+ export function getPragmaOptions({
2
+ source,
3
+ path,
4
+ disableCommentCheck,
5
+ }: {
6
+ source: string
7
+ path: string
8
+ disableCommentCheck?: boolean
9
+ }) {
10
+ if (!disableCommentCheck && !source.startsWith('//') && !source.startsWith('/*')) {
11
+ return {
12
+ shouldPrintDebug: false,
13
+ shouldDisable: false,
14
+ }
15
+ }
16
+
17
+ let shouldPrintDebug: boolean | 'verbose' = false
18
+ let shouldDisable = false
19
+
20
+ // try and avoid too much parsing but sometimes esbuild adds helpers above..
21
+ const firstLine = source.slice(0, 800).split('\n')[0]
22
+
23
+ if (firstLine.includes('tamagui-ignore')) {
24
+ shouldDisable = true
25
+ }
26
+
27
+ if (firstLine.includes('debug')) {
28
+ shouldPrintDebug = true
29
+ }
30
+
31
+ if (firstLine.includes('debug-verbose')) {
32
+ shouldPrintDebug = 'verbose'
33
+ }
34
+
35
+ if (process.env.TAMAGUI_DEBUG_FILE) {
36
+ if (path.includes(process.env.TAMAGUI_DEBUG_FILE)) {
37
+ shouldPrintDebug = 'verbose'
38
+ }
39
+ }
40
+
41
+ if (process.env.DEBUG?.includes('tamagui')) {
42
+ shouldPrintDebug = true
43
+ }
44
+
45
+ if (process.env.DEBUG?.includes('tamagui-verbose')) {
46
+ shouldPrintDebug = 'verbose'
47
+ }
48
+
49
+ return {
50
+ shouldPrintDebug,
51
+ shouldDisable,
52
+ }
53
+ }
@@ -0,0 +1,21 @@
1
+ // @ts-nocheck
2
+ export function memoize(func?: Function, resolver?: any) {
3
+ if (typeof func !== 'function' || (resolver != null && typeof resolver !== 'function')) {
4
+ throw new TypeError('Expected a function')
5
+ }
6
+ const memoized = function (...args) {
7
+ const key = resolver ? resolver.apply(this, args) : args[0]
8
+ const cache = memoized.cache
9
+
10
+ if (cache.has(key)) {
11
+ return cache.get(key)
12
+ }
13
+ const result = func.apply(this, args)
14
+ memoized.cache = cache.set(key, result) || cache
15
+ return result
16
+ }
17
+ memoized.cache = new (memoize.Cache || Map)()
18
+ return memoized
19
+ }
20
+
21
+ memoize.Cache = Map
package/src/index.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  process.env.TAMAGUI_COMPILE_PROCESS = '1'
2
2
 
3
- export { TamaguiOptions } from './types'
4
- export { createExtractor } from './extractor/createExtractor'
5
- export { literalToAst } from './extractor/literalToAst'
6
- export * from './constants'
7
- export * from './extractor/extractToClassNames'
8
- export * from './extractor/extractHelpers'
9
- export * from '@tamagui/patch-rnw'
10
- export * from './extractor/loadTamagui'
3
+ export { TamaguiOptions } from './types.js'
4
+ export { createExtractor } from './extractor/createExtractor.js'
5
+ export { literalToAst } from './extractor/literalToAst.js'
6
+ export * from './constants.js'
7
+ export * from './extractor/extractToClassNames.js'
8
+ export * from './extractor/extractHelpers.js'
9
+ export * from './extractor/loadTamagui.js'
10
+ export * from './require.js'
11
+ export * from './getPragmaOptions.js'
package/src/require.ts ADDED
@@ -0,0 +1,103 @@
1
+ import { relative, sep } from 'path'
2
+
3
+ import { SHOULD_DEBUG } from './constants.js'
4
+
5
+ const nameToPaths = {}
6
+ const Module = require('module')
7
+ const og = Module.prototype.require
8
+ globalThis['ogRequire'] = og
9
+
10
+ export const getNameToPaths = () => nameToPaths
11
+
12
+ export function registerRequire() {
13
+ if (Module.prototype.require !== globalThis['ogRequire']) {
14
+ // eslint-disable-next-line no-console
15
+ console.warn('didnt unregister before re-registering')
16
+ process.exit(1)
17
+ }
18
+
19
+ const proxyWorm = require('@tamagui/proxy-worm')
20
+ // TODO can swap with react-native-web-lite
21
+ const rnw = require('react-native-web')
22
+ const core = require('@tamagui/core-node')
23
+
24
+ Module.prototype.require = function (path: string) {
25
+ if (/\.(gif|jpe?g|png|svg|ttf|otf|woff2?|bmp|webp)$/.test(path)) {
26
+ return {}
27
+ }
28
+ if (
29
+ path === '@gorhom/bottom-sheet' ||
30
+ path.startsWith('react-native-reanimated') ||
31
+ path === 'expo-linear-gradient' ||
32
+ path === '@expo/vector-icons'
33
+ ) {
34
+ return proxyWorm
35
+ }
36
+ if (
37
+ path.startsWith('react-native') &&
38
+ // allow our rnw.tsx imports through
39
+ !path.startsWith('react-native-web/dist/cjs/exports'.replace(/\//g, sep))
40
+ ) {
41
+ return rnw
42
+ }
43
+ if (path === '@tamagui/core') {
44
+ return core
45
+ }
46
+ try {
47
+ const out = og.apply(this, arguments)
48
+ // only for studio disable for now
49
+ // if (!nameToPaths[path]) {
50
+ // if (out && typeof out === 'object') {
51
+ // for (const key in out) {
52
+ // try {
53
+ // const conf = out[key]?.staticConfig as StaticConfig
54
+ // if (conf) {
55
+ // if (conf.componentName) {
56
+ // nameToPaths[conf.componentName] ??= new Set()
57
+ // const fullName = path.startsWith('.')
58
+ // ? join(`${this.path.replace(/dist(\/cjs)?/, 'src')}`, path)
59
+ // : path
60
+ // nameToPaths[conf.componentName].add(fullName)
61
+ // } else {
62
+ // // console.log('no name component', path)
63
+ // }
64
+ // }
65
+ // } catch {
66
+ // // ok
67
+ // }
68
+ // }
69
+ // }
70
+ // }
71
+ return out
72
+ } catch (err: any) {
73
+ /**
74
+ * Allow errors to happen, we're just reading config and components but sometimes external modules cause problems
75
+ * We can't fix every problem, so just swap them out with proxyWorm which is a sort of generic object that can be read.
76
+ */
77
+
78
+ if (process.env.DEBUG?.startsWith('tamagui')) {
79
+ // eslint-disable-next-line no-console
80
+ console.error(
81
+ `Tamagui failed loading the pre-built tamagui.config.ts
82
+
83
+ ${err.message}
84
+ ${err.stack}
85
+
86
+ You can see if it loads in the node repl:
87
+
88
+ require("./${relative(process.cwd(), path)}").default
89
+
90
+ `
91
+ )
92
+ }
93
+
94
+ return proxyWorm
95
+ }
96
+ }
97
+
98
+ return Module.prototype.require
99
+ }
100
+
101
+ export function unregisterRequire() {
102
+ Module.prototype.require = og
103
+ }
package/src/types.ts CHANGED
@@ -1,8 +1,13 @@
1
- import { NodePath } from '@babel/traverse'
1
+ import type { NodePath } from '@babel/traverse'
2
2
  import * as t from '@babel/types'
3
- import { PseudoStyles } from '@tamagui/core-node'
4
- import { StyleObject } from '@tamagui/core-node'
5
- import { ViewStyle } from 'react-native'
3
+ import type { PseudoStyles, StaticConfig } from '@tamagui/core-node'
4
+ import type { StyleObject } from '@tamagui/helpers'
5
+ import type { TamaguiOptions } from '@tamagui/helpers-node'
6
+ import type { ViewStyle } from 'react-native'
7
+
8
+ import { LoadedComponents } from './index'
9
+
10
+ export type { TamaguiOptions } from '@tamagui/helpers-node'
6
11
 
7
12
  export type { StyleObject } from '@tamagui/helpers'
8
13
 
@@ -12,30 +17,20 @@ export interface CacheObject {
12
17
  [key: string]: any
13
18
  }
14
19
 
15
- export interface TamaguiOptions {
16
- // module paths you want to compile with tamagui (for example ['tamagui'])
17
- components: string[]
18
- // your tamagui.config.ts
19
- config?: string
20
- evaluateVars?: boolean
21
- importsWhitelist?: string[]
22
- disable?: boolean
23
- disableExtraction?: boolean
24
- disableDebugAttr?: boolean
25
- disableExtractInlineMedia?: boolean
26
- disableExtractVariables?: boolean
27
- excludeReactNativeWebExports?: string[]
28
- exclude?: RegExp
29
- logTimings?: boolean
30
- prefixLogs?: string
31
-
32
- // probably non user options
33
- cssPath?: string
34
- cssData?: any
35
- deoptProps?: Set<string>
36
- excludeProps?: Set<string>
37
- inlineProps?: Set<string>
38
- forceExtractStyleDefinitions?: boolean
20
+ export interface LogOptions {
21
+ clear?: boolean
22
+ timestamp?: boolean
23
+ error?: Error | null
24
+ }
25
+
26
+ export interface Logger {
27
+ info(msg: string, options?: LogOptions): void
28
+ warn(msg: string, options?: LogOptions): void
29
+ error(msg: string, options?: LogOptions): void
30
+ }
31
+
32
+ export type ExtractorOptions = {
33
+ logger?: Logger
39
34
  }
40
35
 
41
36
  export type ExtractedAttrAttr = {
@@ -56,6 +51,7 @@ export type ExtractedAttr =
56
51
  | ExtractedAttrStyle
57
52
 
58
53
  export type ExtractTagProps = {
54
+ parserProps: TamaguiOptionsWithFileInfo
59
55
  attrs: ExtractedAttr[]
60
56
  node: t.JSXOpeningElement
61
57
  attemptEval: (exprNode: t.Node, evalFn?: ((node: t.Node) => any) | undefined) => any
@@ -65,14 +61,20 @@ export type ExtractTagProps = {
65
61
  lineNumbers: string
66
62
  filePath: string
67
63
  isFlattened: boolean
64
+ completeProps: Record<string, any>
65
+ staticConfig: StaticConfig
66
+ }
67
+
68
+ export type TamaguiOptionsWithFileInfo = TamaguiOptions & {
69
+ sourcePath: string
70
+ allLoadedComponents: LoadedComponents[]
68
71
  }
69
72
 
70
- export type ExtractorParseProps = TamaguiOptions & {
73
+ export type ExtractorParseProps = Omit<TamaguiOptionsWithFileInfo, 'allLoadedComponents'> & {
71
74
  target: 'native' | 'html'
72
- sourcePath?: string
73
75
  shouldPrintDebug?: boolean | 'verbose'
74
76
  onExtractTag: (props: ExtractTagProps) => void
75
- getFlattenedNode: (props: { isTextView: boolean; tag: string }) => string
77
+ getFlattenedNode?: (props: { isTextView: boolean; tag: string }) => string
76
78
  extractStyledDefinitions?: boolean
77
79
  // identifer, rule
78
80
  onStyleRule?: (identifier: string, rules: string[]) => void
@@ -0,0 +1,9 @@
1
+ const pluginName = 'TamaguiWebpackPlugin'
2
+
3
+ export class TamaguiWebpackPlugin {
4
+ apply(compiler) {
5
+ compiler.hooks.run.tap(pluginName, (compilation) => {
6
+ // console.log('The webpack build process is starting!');
7
+ })
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "compilerOptions": {
3
+ "jsx": "react-jsx"
4
+ }
5
+ }
@@ -0,0 +1,6 @@
1
+ export declare const CSS_FILE_NAME = "__snack.css";
2
+ export declare const MEDIA_SEP = "_";
3
+ export declare const cacheDir: any;
4
+ export declare const FAILED_EVAL: unique symbol;
5
+ export declare const SHOULD_DEBUG: boolean | undefined;
6
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1,3 @@
1
+ import * as t from '@babel/types';
2
+ export declare function accessSafe(obj: t.Expression, member: string): t.LogicalExpression;
3
+ //# sourceMappingURL=accessSafe.d.ts.map
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import * as babelParser from '@babel/parser';
3
+ import * as t from '@babel/types';
4
+ export declare const parserOptions: babelParser.ParserOptions;
5
+ export declare function babelParse(code: string | Buffer): t.File;
6
+ //# sourceMappingURL=babelParse.d.ts.map
@@ -1,4 +1,7 @@
1
1
  import * as t from '@babel/types';
2
- import { ClassNameObject } from '../types';
3
- export declare function buildClassName(classNameObjects: ClassNameObject[]): t.Expression | t.StringLiteral | null;
2
+ import type { ClassNameObject } from '../types.js';
3
+ declare type Builder = (objects: ClassNameObject[], extras?: string) => t.Expression | t.StringLiteral | null;
4
+ export declare const buildClassName: Builder;
5
+ export declare const buildClassNameLogic: Builder;
6
+ export {};
4
7
  //# sourceMappingURL=buildClassName.d.ts.map
@@ -0,0 +1,13 @@
1
+ import esbuild from 'esbuild';
2
+ /**
3
+ * For internal loading of new files
4
+ */
5
+ declare type Props = Omit<Partial<esbuild.BuildOptions>, 'entryPoints'> & {
6
+ outfile: string;
7
+ entryPoints: string[];
8
+ resolvePlatformSpecificEntries?: boolean;
9
+ };
10
+ export declare function bundle(props: Props, aliases?: Record<string, string>): Promise<esbuild.BuildResult>;
11
+ export declare function bundleSync(props: Props, aliases?: Record<string, string>): esbuild.BuildResult;
12
+ export {};
13
+ //# sourceMappingURL=bundle.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- import type { TamaguiConfig } from '@tamagui/core';
4
- export declare function createEvaluator({ tamaguiConfig, staticNamespace, sourcePath, traversePath, shouldPrintDebug, }: {
5
- tamaguiConfig: TamaguiConfig;
3
+ import { TamaguiOptionsWithFileInfo } from '../types.js';
4
+ export declare function createEvaluator({ props, staticNamespace, sourcePath, traversePath, shouldPrintDebug, }: {
5
+ props: TamaguiOptionsWithFileInfo;
6
6
  staticNamespace: Record<string, any>;
7
7
  sourcePath: string;
8
8
  traversePath?: NodePath<t.JSXElement>;
@@ -1,28 +1,44 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- import { TamaguiInternalConfig } from '@tamagui/core-node';
4
- import { ExtractorParseProps } from '../types';
3
+ import type { ExtractorOptions, ExtractorParseProps, TamaguiOptions } from '../types.js';
4
+ import { cleanupBeforeExit } from './getStaticBindingsForScope.js';
5
+ import { TamaguiProjectInfo } from './loadTamagui.js';
5
6
  export declare type Extractor = ReturnType<typeof createExtractor>;
6
- export declare function createExtractor(): {
7
- getTamagui(): TamaguiInternalConfig<import("@tamagui/core-node").CreateTokens<import("@tamagui/core-node").VariableVal>, {
7
+ declare type FileOrPath = NodePath<t.Program> | t.File;
8
+ export declare function createExtractor({ logger }?: ExtractorOptions): {
9
+ options: {
10
+ logger: import("../types.js").Logger;
11
+ };
12
+ cleanupBeforeExit: typeof cleanupBeforeExit;
13
+ loadTamagui: (props: TamaguiOptions) => Promise<TamaguiProjectInfo>;
14
+ loadTamaguiSync: (props: TamaguiOptions) => TamaguiProjectInfo;
15
+ getTamagui(): import("@tamagui/core-node").TamaguiInternalConfig<import("@tamagui/core-node").CreateTokens<import("@tamagui/core-node").VariableVal>, {
8
16
  [key: string]: Partial<import("@tamagui/core-node").TamaguiBaseTheme> & {
9
17
  [key: string]: import("@tamagui/core-node").VariableVal;
10
18
  };
11
- }, {}, {
12
- [x: string]: {
19
+ }, import("@tamagui/core-node").GenericShorthands, {
20
+ [key: string]: {
13
21
  [key: string]: string | number;
14
22
  };
15
23
  }, {
16
- [key: string]: string | {
24
+ [key: string]: string | any[] | {
17
25
  [key: string]: any;
18
26
  };
19
- }, import("@tamagui/core-node").GenericFonts>;
20
- parse: (fileOrPath: NodePath<t.Program> | t.File, { config, importsWhitelist, evaluateVars, shouldPrintDebug, sourcePath, onExtractTag, onStyleRule, getFlattenedNode, disable, disableExtraction, disableExtractInlineMedia, disableExtractVariables, disableDebugAttr, extractStyledDefinitions, prefixLogs, excludeProps, target, ...props }: ExtractorParseProps) => {
27
+ }, import("@tamagui/core-node").GenericFonts> | undefined;
28
+ parseSync: (f: FileOrPath, props: ExtractorParseProps) => {
21
29
  styled: number;
22
30
  flattened: number;
23
31
  optimized: number;
24
32
  modified: number;
25
33
  found: number;
26
34
  } | null;
35
+ parse: (f: FileOrPath, props: ExtractorParseProps) => Promise<{
36
+ styled: number;
37
+ flattened: number;
38
+ optimized: number;
39
+ modified: number;
40
+ found: number;
41
+ } | null>;
27
42
  };
43
+ export {};
28
44
  //# sourceMappingURL=createExtractor.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { NodePath } from '@babel/traverse';
2
+ import * as t from '@babel/types';
3
+ export declare function ensureImportingConcat(path: NodePath<t.Program>): void;
4
+ //# sourceMappingURL=ensureImportingConcat.d.ts.map
@@ -0,0 +1,3 @@
1
+ import * as t from '@babel/types';
2
+ export declare function evaluateAstNode(exprNode: t.Node | undefined | null, evalFn?: (node: t.Node) => any, shouldPrintDebug?: boolean | 'verbose'): any;
3
+ //# sourceMappingURL=evaluateAstNode.d.ts.map
@@ -1,12 +1,24 @@
1
1
  import type { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- import { ExtractedAttr, Ternary } from '../types';
3
+ import type { ExtractedAttr, TamaguiOptionsWithFileInfo, Ternary } from '../types.js';
4
4
  export declare function isPresent<T extends Object>(input: null | void | undefined | T): input is T;
5
5
  export declare function isSimpleSpread(node: t.JSXSpreadAttribute): boolean;
6
6
  export declare const attrStr: (attr?: ExtractedAttr) => string | t.JSXIdentifier;
7
7
  export declare const objToStr: (obj: any, spacer?: string) => any;
8
8
  export declare const ternaryStr: (x: Ternary) => string;
9
9
  export declare function findComponentName(scope: any): string | undefined;
10
- export declare function isValidThemeHook(jsxPath: NodePath<t.JSXElement>, n: t.MemberExpression, sourcePath: string): boolean;
11
- export declare const isInsideTamagui: (srcName: string) => boolean;
10
+ export declare function isValidThemeHook(props: TamaguiOptionsWithFileInfo, jsxPath: NodePath<t.JSXElement>, n: t.MemberExpression, sourcePath: string): boolean;
11
+ export declare const isInsideComponentPackage: (props: TamaguiOptionsWithFileInfo, moduleName: string) => any;
12
+ export declare const isComponentPackage: (props: TamaguiOptionsWithFileInfo, srcName: string) => any;
13
+ export declare function getValidComponent(props: TamaguiOptionsWithFileInfo, moduleName: string, componentName: string): false | {
14
+ staticConfig: import("@tamagui/core-node").StaticConfigParsed;
15
+ } | null;
16
+ export declare const isValidModule: (props: TamaguiOptionsWithFileInfo, moduleName: string) => {
17
+ isLocal: boolean;
18
+ isValid: any;
19
+ };
20
+ export declare const getValidImport: (props: TamaguiOptionsWithFileInfo, moduleName: string, componentName?: string) => {
21
+ staticConfig: import("@tamagui/core-node").StaticConfigParsed;
22
+ } | null;
23
+ export declare const isValidImport: (props: TamaguiOptionsWithFileInfo, moduleName: string, componentName?: string) => any;
12
24
  //# sourceMappingURL=extractHelpers.d.ts.map
@@ -1,10 +1,10 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
3
  import { TamaguiInternalConfig } from '@tamagui/core-node';
4
- import { StyleObject, Ternary } from '../types';
5
- export declare function extractMediaStyle(ternary: Ternary, jsxPath: NodePath<t.JSXElement>, tamaguiConfig: TamaguiInternalConfig, sourcePath: string, importance?: number, shouldPrintDebug?: boolean | 'verbose'): {
4
+ import type { TamaguiOptionsWithFileInfo, Ternary } from '../types.js';
5
+ export declare function extractMediaStyle(props: TamaguiOptionsWithFileInfo, ternary: Ternary, jsxPath: NodePath<t.JSXElement>, tamaguiConfig: TamaguiInternalConfig, sourcePath: string, importance?: number, shouldPrintDebug?: boolean | 'verbose'): {
6
6
  mediaStyles: StyleObject[];
7
7
  ternaryWithoutMedia: Ternary | null;
8
8
  } | null;
9
- export declare function isValidMediaCall(jsxPath: NodePath<t.JSXElement>, init: t.Expression, sourcePath: string): boolean;
9
+ export declare function isValidMediaCall(props: TamaguiOptionsWithFileInfo, jsxPath: NodePath<t.JSXElement>, init: t.Expression, sourcePath: string): boolean;
10
10
  //# sourceMappingURL=extractMediaStyle.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import * as t from '@babel/types';
3
- import { TamaguiOptions } from '../types';
4
- import { Extractor } from './createExtractor';
3
+ import type { TamaguiOptions } from '../types.js';
4
+ import { Extractor } from './createExtractor.js';
5
5
  export declare type ExtractedResponse = {
6
6
  js: string | Buffer;
7
7
  styles: string;
@@ -9,11 +9,12 @@ export declare type ExtractedResponse = {
9
9
  ast: t.File;
10
10
  map: any;
11
11
  };
12
- export declare function extractToClassNames({ extractor, source, sourcePath, options, shouldPrintDebug, }: {
12
+ export declare type ExtractToClassNamesProps = {
13
13
  extractor: Extractor;
14
14
  source: string | Buffer;
15
15
  sourcePath: string;
16
16
  options: TamaguiOptions;
17
17
  shouldPrintDebug: boolean | 'verbose';
18
- }): ExtractedResponse | null;
18
+ };
19
+ export declare function extractToClassNames({ extractor, source, sourcePath, options, shouldPrintDebug, }: ExtractToClassNamesProps): Promise<ExtractedResponse | null>;
19
20
  //# sourceMappingURL=extractToClassNames.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { NodePath } from '@babel/traverse';
2
+ import * as t from '@babel/types';
3
+ export declare function findTopmostFunction(jsxPath: NodePath<t.JSXElement>): NodePath<any> | null;
4
+ //# sourceMappingURL=findTopmostFunction.d.ts.map
@@ -0,0 +1,5 @@
1
+ declare module '@babel/types' {
2
+ function toIdentifier(input: string): string;
3
+ }
4
+ export declare function generateUid(scope: any, name: string): string;
5
+ //# sourceMappingURL=generatedUid.d.ts.map
@@ -1,3 +1,3 @@
1
- import { TamaguiOptions } from '../types';
1
+ import { TamaguiOptions } from '../types.js';
2
2
  export declare function getPrefixLogs(options?: TamaguiOptions): string;
3
3
  //# sourceMappingURL=getPrefixLogs.d.ts.map
@@ -0,0 +1,19 @@
1
+ import * as t from '@babel/types';
2
+ /**
3
+ * getPropValueFromAttributes gets a prop by name from a list of attributes and accounts for potential spread operators.
4
+ * Here's an example. Given this component:
5
+ * ```
6
+ * <Block coolProp="wow" {...spread1} neatProp="ok" {...spread2} />```
7
+ * getPropValueFromAttributes will return the following:
8
+ * - for propName `coolProp`:
9
+ * ```
10
+ * accessSafe(spread1, 'coolProp') || accessSafe(spread2, 'coolProp') || 'wow'```
11
+ * - for propName `neatProp`:
12
+ * ```
13
+ * accessSafe(spread2, 'neatProp') || 'ok'```
14
+ * - for propName `notPresent`: `null`
15
+ *
16
+ * The returned value should (obviously) be placed after spread operators.
17
+ */
18
+ export declare function getPropValueFromAttributes(propName: string, attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]): t.Expression | null;
19
+ //# sourceMappingURL=getPropValueFromAttributes.d.ts.map
@@ -0,0 +1,16 @@
1
+ import * as t from '@babel/types';
2
+ export interface SourceModule {
3
+ sourceModule?: string;
4
+ imported?: string;
5
+ local?: string;
6
+ destructured?: boolean;
7
+ usesImportSyntax: boolean;
8
+ }
9
+ export declare function getSourceModule(itemName: string, itemBinding: {
10
+ constant?: boolean;
11
+ path: {
12
+ node: t.Node;
13
+ parent: any;
14
+ };
15
+ }): SourceModule | null;
16
+ //# sourceMappingURL=getSourceModule.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { NodePath } from '@babel/traverse';
2
+ import * as t from '@babel/types';
3
+ export declare function cleanupBeforeExit(): void;
4
+ export declare function getStaticBindingsForScope(scope: NodePath<t.JSXElement>['scope'], whitelist: string[] | undefined, sourcePath: string, bindingCache: Record<string, string | null>, shouldPrintDebug: boolean | 'verbose'): Promise<Record<string, any>>;
5
+ //# sourceMappingURL=getStaticBindingsForScope.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { NodePath } from '@babel/traverse';
2
+ import * as t from '@babel/types';
3
+ export declare function hoistClassNames(path: NodePath<t.JSXElement>, existing: {
4
+ [key: string]: t.Identifier;
5
+ }, expr: t.Expression): any;
6
+ //# sourceMappingURL=hoistClassNames.d.ts.map
@@ -0,0 +1,4 @@
1
+ import * as t from '@babel/types';
2
+ export declare function literalToAst(literal: any): t.Expression;
3
+ export declare function astToLiteral(node: any): any;
4
+ //# sourceMappingURL=literalToAst.d.ts.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=loadFile.d.ts.map
@@ -1,15 +1,25 @@
1
- import type { TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core';
1
+ import type { StaticConfigParsed, TamaguiInternalConfig } from '@tamagui/core-node';
2
2
  declare type NameToPaths = {
3
3
  [key: string]: Set<string>;
4
4
  };
5
+ export declare type LoadedComponents = {
6
+ moduleName: string;
7
+ nameToInfo: Record<string, {
8
+ staticConfig: StaticConfigParsed;
9
+ }>;
10
+ };
5
11
  export declare type TamaguiProjectInfo = {
6
- components: Record<string, TamaguiComponent>;
12
+ components: LoadedComponents[];
7
13
  tamaguiConfig: TamaguiInternalConfig;
8
14
  nameToPaths: NameToPaths;
9
15
  };
10
- export declare function loadTamagui(props: {
16
+ declare type Props = {
11
17
  components: string[];
12
- config: string;
13
- }): TamaguiProjectInfo;
18
+ config?: string;
19
+ forceExports?: boolean;
20
+ };
21
+ export declare function loadTamagui(props: Props): Promise<TamaguiProjectInfo>;
22
+ export declare function resolveWebOrNativeSpecificEntry(entry: string): string;
23
+ export declare function loadTamaguiSync(props: Props): TamaguiProjectInfo;
14
24
  export {};
15
25
  //# sourceMappingURL=loadTamagui.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const logLines: (str: string, singleLine?: boolean) => string;
2
+ //# sourceMappingURL=logLines.d.ts.map
@@ -1,3 +1,3 @@
1
- import { Ternary } from '../types';
1
+ import { Ternary } from '../types.js';
2
2
  export declare function normalizeTernaries(ternaries: Ternary[]): Ternary[];
3
3
  //# sourceMappingURL=normalizeTernaries.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { NodePath } from '@babel/traverse';
2
+ export declare function removeUnusedHooks(compFn: NodePath<any>, shouldPrintDebug: boolean | 'verbose'): void;
3
+ //# sourceMappingURL=removeUnusedHooks.d.ts.map
@@ -0,0 +1,5 @@
1
+ export declare const timer: () => {
2
+ mark: (name: string, print?: boolean) => void;
3
+ done: (print?: boolean) => void;
4
+ };
5
+ //# sourceMappingURL=timer.d.ts.map