@tamagui/static 1.0.1-beta.18 → 1.0.1-beta.181

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 (250) hide show
  1. package/dist/{cjs/constants.js → constants.js} +9 -1
  2. package/dist/constants.js.map +7 -0
  3. package/dist/{cjs/extractor → extractor}/accessSafe.js +14 -4
  4. package/dist/{esm/extractor → extractor}/accessSafe.js.map +2 -2
  5. package/dist/{cjs/extractor → extractor}/babelParse.js +20 -17
  6. package/dist/extractor/babelParse.js.map +7 -0
  7. package/dist/{cjs/extractor → extractor}/buildClassName.js +20 -6
  8. package/dist/extractor/buildClassName.js.map +7 -0
  9. package/dist/{cjs/extractor → extractor}/createEvaluator.js +17 -12
  10. package/dist/extractor/createEvaluator.js.map +7 -0
  11. package/dist/extractor/createExtractor.js +1560 -0
  12. package/dist/extractor/createExtractor.js.map +7 -0
  13. package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +22 -8
  14. package/dist/extractor/ensureImportingConcat.js.map +7 -0
  15. package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +14 -6
  16. package/dist/{esm/extractor → extractor}/evaluateAstNode.js.map +2 -2
  17. package/dist/{cjs/extractor → extractor}/extractHelpers.js +20 -19
  18. package/dist/extractor/extractHelpers.js.map +7 -0
  19. package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +38 -39
  20. package/dist/extractor/extractMediaStyle.js.map +7 -0
  21. package/dist/{cjs/extractor → extractor}/extractToClassNames.js +164 -101
  22. package/dist/extractor/extractToClassNames.js.map +7 -0
  23. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +2 -3
  24. package/dist/{esm/extractor → extractor}/findTopmostFunction.js.map +2 -2
  25. package/dist/{cjs/extractor → extractor}/generatedUid.js +9 -4
  26. package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
  27. package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +1 -2
  28. package/dist/extractor/getPrefixLogs.js.map +7 -0
  29. package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +24 -15
  30. package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
  31. package/dist/{cjs/extractor → extractor}/getSourceModule.js +5 -3
  32. package/dist/{esm/extractor → extractor}/getSourceModule.js.map +2 -2
  33. package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +88 -38
  34. package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
  35. package/dist/{cjs/extractor → extractor}/hoistClassNames.js +5 -4
  36. package/dist/{esm/extractor → extractor}/hoistClassNames.js.map +3 -3
  37. package/dist/{cjs/extractor → extractor}/literalToAst.js +26 -34
  38. package/dist/{cjs/extractor → extractor}/literalToAst.js.map +2 -2
  39. package/dist/extractor/loadFile.js +21 -0
  40. package/dist/extractor/loadFile.js.map +7 -0
  41. package/dist/extractor/loadTamagui.js +327 -0
  42. package/dist/extractor/loadTamagui.js.map +7 -0
  43. package/dist/{cjs/extractor → extractor}/logLines.js +3 -3
  44. package/dist/{cjs/extractor → extractor}/logLines.js.map +2 -2
  45. package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +13 -36
  46. package/dist/extractor/normalizeTernaries.js.map +7 -0
  47. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +7 -5
  48. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js.map +2 -2
  49. package/dist/{cjs/extractor → extractor}/timer.js +11 -4
  50. package/dist/extractor/timer.js.map +7 -0
  51. package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +52 -0
  52. package/dist/extractor/validHTMLAttributes.js.map +7 -0
  53. package/dist/getPragmaOptions.js +68 -0
  54. package/dist/getPragmaOptions.js.map +7 -0
  55. package/dist/{cjs/index.js → index.js} +11 -7
  56. package/dist/index.js.map +7 -0
  57. package/dist/require.js +95 -0
  58. package/dist/require.js.map +7 -0
  59. package/dist/{cjs/types.js → types.js} +1 -0
  60. package/dist/types.js.map +7 -0
  61. package/dist/webpackPlugin.js +35 -0
  62. package/dist/webpackPlugin.js.map +7 -0
  63. package/package.json +44 -35
  64. package/src/constants.ts +15 -0
  65. package/src/extractor/accessSafe.ts +18 -0
  66. package/src/extractor/babelParse.ts +27 -0
  67. package/src/extractor/buildClassName.ts +61 -0
  68. package/src/extractor/createEvaluator.ts +73 -0
  69. package/src/extractor/createExtractor.ts +2032 -0
  70. package/src/extractor/ensureImportingConcat.ts +39 -0
  71. package/src/extractor/evaluateAstNode.ts +121 -0
  72. package/src/extractor/extractHelpers.ts +120 -0
  73. package/src/extractor/extractMediaStyle.ts +192 -0
  74. package/src/extractor/extractToClassNames.ts +456 -0
  75. package/src/extractor/findTopmostFunction.ts +22 -0
  76. package/src/extractor/generatedUid.ts +43 -0
  77. package/src/extractor/getPrefixLogs.ts +6 -0
  78. package/src/extractor/getPropValueFromAttributes.ts +92 -0
  79. package/src/extractor/getSourceModule.ts +101 -0
  80. package/src/extractor/getStaticBindingsForScope.ts +227 -0
  81. package/src/extractor/hoistClassNames.ts +45 -0
  82. package/src/extractor/literalToAst.ts +84 -0
  83. package/src/extractor/loadFile.ts +17 -0
  84. package/src/extractor/loadTamagui.ts +377 -0
  85. package/src/extractor/logLines.ts +16 -0
  86. package/src/extractor/normalizeTernaries.ts +63 -0
  87. package/src/extractor/removeUnusedHooks.ts +76 -0
  88. package/src/extractor/timer.ts +29 -0
  89. package/src/extractor/validHTMLAttributes.ts +99 -0
  90. package/src/getPragmaOptions.ts +52 -0
  91. package/src/index.ts +12 -0
  92. package/src/require.ts +112 -0
  93. package/src/types.ts +91 -0
  94. package/src/webpackPlugin.ts +9 -0
  95. package/tamagui.tsconfig.json +5 -0
  96. package/types/constants.d.ts +1 -0
  97. package/types/extractor/buildClassName.d.ts +1 -1
  98. package/types/extractor/createEvaluator.d.ts +2 -2
  99. package/types/extractor/createExtractor.d.ts +25 -10
  100. package/types/extractor/extractHelpers.d.ts +2 -2
  101. package/types/extractor/extractMediaStyle.d.ts +1 -1
  102. package/types/extractor/extractToClassNames.d.ts +4 -9
  103. package/types/extractor/findTopmostFunction.d.ts +1 -1
  104. package/types/extractor/getPrefixLogs.d.ts +1 -1
  105. package/types/extractor/getPropValueFromAttributes.d.ts +16 -0
  106. package/types/extractor/getStaticBindingsForScope.d.ts +2 -1
  107. package/types/extractor/loadFile.d.ts +1 -0
  108. package/types/extractor/loadTamagui.d.ts +15 -5
  109. package/types/extractor/normalizeTernaries.d.ts +1 -1
  110. package/types/extractor/validHTMLAttributes.d.ts +49 -0
  111. package/types/getPragmaOptions.d.ts +9 -0
  112. package/types/index.d.ts +10 -7
  113. package/types/require.d.ts +4 -0
  114. package/types/types.d.ts +25 -30
  115. package/types/webpackPlugin.d.ts +4 -0
  116. package/dist/cjs/constants.js.map +0 -7
  117. package/dist/cjs/extractor/accessSafe.js.map +0 -7
  118. package/dist/cjs/extractor/babelParse.js.map +0 -7
  119. package/dist/cjs/extractor/buildClassName.js.map +0 -7
  120. package/dist/cjs/extractor/createEvaluator.js.map +0 -7
  121. package/dist/cjs/extractor/createExtractor.js +0 -1221
  122. package/dist/cjs/extractor/createExtractor.js.map +0 -7
  123. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
  124. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
  125. package/dist/cjs/extractor/extractHelpers.js.map +0 -7
  126. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
  127. package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
  128. package/dist/cjs/extractor/findTopmostFunction.js.map +0 -7
  129. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
  130. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
  131. package/dist/cjs/extractor/getSourceModule.js.map +0 -7
  132. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
  133. package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
  134. package/dist/cjs/extractor/loadTamagui.js +0 -106
  135. package/dist/cjs/extractor/loadTamagui.js.map +0 -7
  136. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
  137. package/dist/cjs/extractor/timer.js.map +0 -7
  138. package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -7
  139. package/dist/cjs/index.js.map +0 -7
  140. package/dist/cjs/patchReactNativeWeb.js +0 -167
  141. package/dist/cjs/patchReactNativeWeb.js.map +0 -7
  142. package/dist/cjs/types.js.map +0 -7
  143. package/dist/esm/constants.js +0 -14
  144. package/dist/esm/constants.js.map +0 -7
  145. package/dist/esm/extractor/accessSafe.js +0 -11
  146. package/dist/esm/extractor/babelParse.js +0 -30
  147. package/dist/esm/extractor/babelParse.js.map +0 -7
  148. package/dist/esm/extractor/buildClassName.js +0 -40
  149. package/dist/esm/extractor/buildClassName.js.map +0 -7
  150. package/dist/esm/extractor/createEvaluator.js +0 -52
  151. package/dist/esm/extractor/createEvaluator.js.map +0 -7
  152. package/dist/esm/extractor/createExtractor.js +0 -1169
  153. package/dist/esm/extractor/createExtractor.js.map +0 -7
  154. package/dist/esm/extractor/ensureImportingConcat.js +0 -24
  155. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
  156. package/dist/esm/extractor/evaluateAstNode.js +0 -94
  157. package/dist/esm/extractor/extractHelpers.js +0 -103
  158. package/dist/esm/extractor/extractHelpers.js.map +0 -7
  159. package/dist/esm/extractor/extractMediaStyle.js +0 -152
  160. package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
  161. package/dist/esm/extractor/extractToClassNames.js +0 -293
  162. package/dist/esm/extractor/extractToClassNames.js.map +0 -7
  163. package/dist/esm/extractor/findTopmostFunction.js +0 -23
  164. package/dist/esm/extractor/generatedUid.js +0 -28
  165. package/dist/esm/extractor/generatedUid.js.map +0 -7
  166. package/dist/esm/extractor/getPrefixLogs.js +0 -12
  167. package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
  168. package/dist/esm/extractor/getPropValueFromAttributes.js +0 -49
  169. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
  170. package/dist/esm/extractor/getSourceModule.js +0 -69
  171. package/dist/esm/extractor/getStaticBindingsForScope.js +0 -137
  172. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
  173. package/dist/esm/extractor/hoistClassNames.js +0 -44
  174. package/dist/esm/extractor/literalToAst.js +0 -80
  175. package/dist/esm/extractor/literalToAst.js.map +0 -7
  176. package/dist/esm/extractor/loadTamagui.js +0 -84
  177. package/dist/esm/extractor/loadTamagui.js.map +0 -7
  178. package/dist/esm/extractor/logLines.js +0 -22
  179. package/dist/esm/extractor/logLines.js.map +0 -7
  180. package/dist/esm/extractor/normalizeTernaries.js +0 -53
  181. package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
  182. package/dist/esm/extractor/removeUnusedHooks.js +0 -80
  183. package/dist/esm/extractor/removeUnusedHooks.js.map +0 -7
  184. package/dist/esm/extractor/timer.js +0 -24
  185. package/dist/esm/extractor/timer.js.map +0 -7
  186. package/dist/esm/extractor/validHTMLAttributes.js +0 -52
  187. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
  188. package/dist/esm/index.js +0 -14
  189. package/dist/esm/index.js.map +0 -7
  190. package/dist/esm/patchReactNativeWeb.js +0 -142
  191. package/dist/esm/patchReactNativeWeb.js.map +0 -7
  192. package/dist/esm/types.js +0 -1
  193. package/dist/esm/types.js.map +0 -7
  194. package/dist/jsx/constants.js +0 -13
  195. package/dist/jsx/extractor/accessSafe.js +0 -10
  196. package/dist/jsx/extractor/babelParse.js +0 -29
  197. package/dist/jsx/extractor/buildClassName.js +0 -39
  198. package/dist/jsx/extractor/createEvaluator.js +0 -51
  199. package/dist/jsx/extractor/createExtractor.js +0 -1168
  200. package/dist/jsx/extractor/ensureImportingConcat.js +0 -23
  201. package/dist/jsx/extractor/evaluateAstNode.js +0 -93
  202. package/dist/jsx/extractor/extractHelpers.js +0 -102
  203. package/dist/jsx/extractor/extractMediaStyle.js +0 -151
  204. package/dist/jsx/extractor/extractToClassNames.js +0 -292
  205. package/dist/jsx/extractor/findTopmostFunction.js +0 -22
  206. package/dist/jsx/extractor/generatedUid.js +0 -27
  207. package/dist/jsx/extractor/getPrefixLogs.js +0 -11
  208. package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -48
  209. package/dist/jsx/extractor/getSourceModule.js +0 -68
  210. package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -136
  211. package/dist/jsx/extractor/hoistClassNames.js +0 -43
  212. package/dist/jsx/extractor/literalToAst.js +0 -79
  213. package/dist/jsx/extractor/loadTamagui.js +0 -83
  214. package/dist/jsx/extractor/logLines.js +0 -21
  215. package/dist/jsx/extractor/normalizeTernaries.js +0 -52
  216. package/dist/jsx/extractor/removeUnusedHooks.js +0 -79
  217. package/dist/jsx/extractor/timer.js +0 -23
  218. package/dist/jsx/extractor/validHTMLAttributes.js +0 -51
  219. package/dist/jsx/index.js +0 -13
  220. package/dist/jsx/patchReactNativeWeb.js +0 -141
  221. package/dist/jsx/types.js +0 -0
  222. package/types/constants.d.ts.map +0 -1
  223. package/types/extractor/accessSafe.d.ts.map +0 -1
  224. package/types/extractor/babelParse.d.ts.map +0 -1
  225. package/types/extractor/buildClassName.d.ts.map +0 -1
  226. package/types/extractor/createEvaluator.d.ts.map +0 -1
  227. package/types/extractor/createExtractor.d.ts.map +0 -1
  228. package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
  229. package/types/extractor/evaluateAstNode.d.ts.map +0 -1
  230. package/types/extractor/extractHelpers.d.ts.map +0 -1
  231. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  232. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  233. package/types/extractor/findTopmostFunction.d.ts.map +0 -1
  234. package/types/extractor/generatedUid.d.ts.map +0 -1
  235. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  236. package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
  237. package/types/extractor/getSourceModule.d.ts.map +0 -1
  238. package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
  239. package/types/extractor/hoistClassNames.d.ts.map +0 -1
  240. package/types/extractor/literalToAst.d.ts.map +0 -1
  241. package/types/extractor/loadTamagui.d.ts.map +0 -1
  242. package/types/extractor/logLines.d.ts.map +0 -1
  243. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  244. package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
  245. package/types/extractor/timer.d.ts.map +0 -1
  246. package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
  247. package/types/index.d.ts.map +0 -1
  248. package/types/patchReactNativeWeb.d.ts +0 -2
  249. package/types/patchReactNativeWeb.d.ts.map +0 -1
  250. package/types/types.d.ts.map +0 -1
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ process.env.TAMAGUI_COMPILE_PROCESS = '1'
2
+
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 '@tamagui/patch-rnw'
10
+ export * from './extractor/loadTamagui.js'
11
+ export * from './require.js'
12
+ export * from './getPragmaOptions.js'
package/src/require.ts ADDED
@@ -0,0 +1,112 @@
1
+ import { 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
+ // just for catching egregious amounts of errors in a tight loop
13
+ let tries = 0
14
+ setInterval(() => {
15
+ tries = 0
16
+ }, 50)
17
+
18
+ export function registerRequire(bubbleErrors?: boolean) {
19
+ if (Module.prototype.require !== globalThis['ogRequire']) {
20
+ // eslint-disable-next-line no-console
21
+ console.warn('didnt unregister before re-registering')
22
+ process.exit(1)
23
+ }
24
+
25
+ const proxyWorm = require('@tamagui/proxy-worm')
26
+ // TODO can swap with react-native-web-lite
27
+ const rnw = require('react-native-web')
28
+ const core = require('@tamagui/core-node')
29
+
30
+ Module.prototype.require = function (path: string) {
31
+ if (SHOULD_DEBUG) {
32
+ // eslint-disable-next-line no-console
33
+ console.log('tamagui:require', path)
34
+ }
35
+ if (path.endsWith('.css') || path.endsWith('.json') || path.endsWith('.ttf')) {
36
+ return {}
37
+ }
38
+ if (
39
+ path === '@gorhom/bottom-sheet' ||
40
+ path.startsWith('react-native-reanimated') ||
41
+ path === 'expo-linear-gradient' ||
42
+ path === '@expo/vector-icons'
43
+ ) {
44
+ return proxyWorm
45
+ }
46
+ if (
47
+ path.startsWith('react-native') &&
48
+ // allow our rnw.tsx imports through
49
+ !path.startsWith('react-native-web/dist/cjs/exports'.replace(/\//g, sep))
50
+ ) {
51
+ return rnw
52
+ }
53
+ if (path === '@tamagui/core') {
54
+ return core
55
+ }
56
+ try {
57
+ const out = og.apply(this, arguments)
58
+ // only for studio disable for now
59
+ // if (!nameToPaths[path]) {
60
+ // if (out && typeof out === 'object') {
61
+ // for (const key in out) {
62
+ // try {
63
+ // const conf = out[key]?.staticConfig as StaticConfig
64
+ // if (conf) {
65
+ // if (conf.componentName) {
66
+ // nameToPaths[conf.componentName] ??= new Set()
67
+ // const fullName = path.startsWith('.')
68
+ // ? join(`${this.path.replace(/dist(\/cjs)?/, 'src')}`, path)
69
+ // : path
70
+ // nameToPaths[conf.componentName].add(fullName)
71
+ // } else {
72
+ // // console.log('no name component', path)
73
+ // }
74
+ // }
75
+ // } catch {
76
+ // // ok
77
+ // }
78
+ // }
79
+ // }
80
+ // }
81
+ return out
82
+ } catch (err: any) {
83
+ if (bubbleErrors) {
84
+ throw err
85
+ }
86
+
87
+ // eslint-disable-next-line no-console
88
+ console.error(
89
+ `Tamagui failed requiring ${path} from your tamagui.config.ts file, ignoring\n`,
90
+ err.message,
91
+ err.stack
92
+ )
93
+ const max = process.env.TAMAGUI_MAX_ERRORS ? +process.env.TAMAGUI_MAX_ERRORS : 200
94
+ if (++tries > max) {
95
+ // eslint-disable-next-line no-console
96
+ console.log(
97
+ `Too many errors loading design system, exiting (set TAMAGUI_MAX_ERRORS to override)..`
98
+ )
99
+ // avoid infinite loops
100
+ process.exit(1)
101
+ }
102
+ // return proxyWorm by default
103
+ return proxyWorm
104
+ }
105
+ }
106
+
107
+ return Module.prototype.require
108
+ }
109
+
110
+ export function unregisterRequire() {
111
+ Module.prototype.require = og
112
+ }
package/src/types.ts ADDED
@@ -0,0 +1,91 @@
1
+ import type { NodePath } from '@babel/traverse'
2
+ import * as t from '@babel/types'
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
+ export type { TamaguiOptions } from '@tamagui/helpers-node'
9
+
10
+ export type { StyleObject } from '@tamagui/helpers'
11
+
12
+ export type ClassNameObject = t.StringLiteral | t.Expression
13
+
14
+ export interface CacheObject {
15
+ [key: string]: any
16
+ }
17
+
18
+ export interface LogOptions {
19
+ clear?: boolean
20
+ timestamp?: boolean
21
+ error?: Error | null
22
+ }
23
+
24
+ export interface Logger {
25
+ info(msg: string, options?: LogOptions): void
26
+ warn(msg: string, options?: LogOptions): void
27
+ error(msg: string, options?: LogOptions): void
28
+ }
29
+
30
+ export type ExtractorOptions = {
31
+ logger?: Logger
32
+ }
33
+
34
+ export type ExtractedAttrAttr = {
35
+ type: 'attr'
36
+ value: t.JSXAttribute | t.JSXSpreadAttribute
37
+ }
38
+
39
+ export type ExtractedAttrStyle = {
40
+ type: 'style'
41
+ value: ViewStyle & PseudoStyles
42
+ attr?: t.JSXAttribute | t.JSXSpreadAttribute
43
+ name?: string
44
+ }
45
+
46
+ export type ExtractedAttr =
47
+ | ExtractedAttrAttr
48
+ | { type: 'ternary'; value: Ternary }
49
+ | ExtractedAttrStyle
50
+
51
+ export type ExtractTagProps = {
52
+ attrs: ExtractedAttr[]
53
+ node: t.JSXOpeningElement
54
+ attemptEval: (exprNode: t.Node, evalFn?: ((node: t.Node) => any) | undefined) => any
55
+ jsxPath: NodePath<t.JSXElement>
56
+ programPath: NodePath<t.Program>
57
+ originalNodeName: string
58
+ lineNumbers: string
59
+ filePath: string
60
+ isFlattened: boolean
61
+ completeProps: Record<string, any>
62
+ staticConfig: StaticConfig
63
+ }
64
+
65
+ export type ExtractorParseProps = TamaguiOptions & {
66
+ target: 'native' | 'html'
67
+ sourcePath?: string
68
+ shouldPrintDebug?: boolean | 'verbose'
69
+ onExtractTag: (props: ExtractTagProps) => void
70
+ getFlattenedNode?: (props: { isTextView: boolean; tag: string }) => string
71
+ extractStyledDefinitions?: boolean
72
+ // identifer, rule
73
+ onStyleRule?: (identifier: string, rules: string[]) => void
74
+ }
75
+
76
+ export interface Ternary {
77
+ test: t.Expression
78
+ // shorthand props that don't use hooks
79
+ inlineMediaQuery?: string
80
+ remove: Function
81
+ consequent: Object | null
82
+ alternate: Object | null
83
+ }
84
+
85
+ export type ClassNameToStyleObj = {
86
+ [key: string]: StyleObject
87
+ }
88
+
89
+ export interface PluginContext {
90
+ write: (path: string, rules: { [key: string]: string }) => any
91
+ }
@@ -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
+ }
@@ -3,4 +3,5 @@ export declare const MEDIA_SEP = "_";
3
3
  export declare const cacheDir: any;
4
4
  export declare const FAILED_EVAL: unique symbol;
5
5
  export declare const CONCAT_CLASSNAME_IMPORT = "concatClassName";
6
+ export declare const SHOULD_DEBUG: boolean | undefined;
6
7
  //# sourceMappingURL=constants.d.ts.map
@@ -1,4 +1,4 @@
1
1
  import * as t from '@babel/types';
2
- import { ClassNameObject } from '../types';
2
+ import type { ClassNameObject } from '../types.js';
3
3
  export declare function buildClassName(classNameObjects: ClassNameObject[]): t.Expression | t.StringLiteral | null;
4
4
  //# sourceMappingURL=buildClassName.d.ts.map
@@ -1,11 +1,11 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- import type { TamaguiConfig } from '@tamagui/core';
3
+ import type { TamaguiConfig } from '@tamagui/core-node';
4
4
  export declare function createEvaluator({ tamaguiConfig, staticNamespace, sourcePath, traversePath, shouldPrintDebug, }: {
5
5
  tamaguiConfig: TamaguiConfig;
6
6
  staticNamespace: Record<string, any>;
7
7
  sourcePath: string;
8
- traversePath: NodePath<t.JSXElement>;
8
+ traversePath?: NodePath<t.JSXElement>;
9
9
  shouldPrintDebug: boolean | 'verbose';
10
10
  }): (n: t.Node) => any;
11
11
  export declare function createSafeEvaluator(attemptEval: (n: t.Node) => any): (n: t.Node) => any;
@@ -1,29 +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
19
  }, {}, {
12
- [x: string]: {
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
- }, {
20
- [key: string]: import("@tamagui/core-node").GenericFont<string | number>;
21
- }>;
22
- parse: (fileOrPath: NodePath<t.Program> | t.File, { config, importsWhitelist, evaluateVars, shouldPrintDebug, sourcePath, onExtractTag, getFlattenedNode, disable, disableExtraction, disableExtractInlineMedia, disableExtractVariables, disableDebugAttr, prefixLogs, excludeProps, ...props }: ExtractorParseProps) => {
27
+ }, import("@tamagui/core-node").GenericFonts> | undefined;
28
+ parseSync: (f: FileOrPath, props: ExtractorParseProps) => {
29
+ styled: number;
23
30
  flattened: number;
24
31
  optimized: number;
25
32
  modified: number;
26
33
  found: number;
27
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>;
28
42
  };
43
+ export {};
29
44
  //# sourceMappingURL=createExtractor.d.ts.map
@@ -1,9 +1,9 @@
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, 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
- export declare const attrStr: (attr?: ExtractedAttr | undefined) => string | t.JSXIdentifier;
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;
@@ -1,7 +1,7 @@
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';
4
+ import type { Ternary } from '../types.js';
5
5
  export declare function extractMediaStyle(ternary: Ternary, jsxPath: NodePath<t.JSXElement>, tamaguiConfig: TamaguiInternalConfig, sourcePath: string, importance?: number, shouldPrintDebug?: boolean | 'verbose'): {
6
6
  mediaStyles: StyleObject[];
7
7
  ternaryWithoutMedia: Ternary | null;
@@ -1,8 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import * as t from '@babel/types';
3
- import { LoaderContext } from 'webpack';
4
- import { TamaguiOptions } from '../types';
5
- import { Extractor } from './createExtractor';
3
+ import type { TamaguiOptions } from '../types.js';
4
+ import { Extractor } from './createExtractor.js';
6
5
  export declare type ExtractedResponse = {
7
6
  js: string | Buffer;
8
7
  styles: string;
@@ -10,15 +9,11 @@ export declare type ExtractedResponse = {
10
9
  ast: t.File;
11
10
  map: any;
12
11
  };
13
- export declare function extractToClassNames({ loader, extractor, source, sourcePath, options, shouldPrintDebug, cssLoaderPath, threaded, cssPath, }: {
14
- loader: LoaderContext<any>;
15
- cssLoaderPath: string;
12
+ export declare function extractToClassNames({ extractor, source, sourcePath, options, shouldPrintDebug, }: {
16
13
  extractor: Extractor;
17
14
  source: string | Buffer;
18
15
  sourcePath: string;
19
16
  options: TamaguiOptions;
20
17
  shouldPrintDebug: boolean | 'verbose';
21
- cssPath: string;
22
- threaded?: boolean;
23
- }): ExtractedResponse | null;
18
+ }): Promise<ExtractedResponse | null>;
24
19
  //# sourceMappingURL=extractToClassNames.d.ts.map
@@ -1,4 +1,4 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- export declare function findTopmostFunction(jsxPath: NodePath<t.JSXElement>): NodePath<any> | null;
3
+ export declare function findTopmostFunction(jsxPath: NodePath<t.JSXElement>): any;
4
4
  //# sourceMappingURL=findTopmostFunction.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
@@ -1,3 +1,19 @@
1
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
+ */
2
18
  export declare function getPropValueFromAttributes(propName: string, attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]): t.Expression | null;
3
19
  //# sourceMappingURL=getPropValueFromAttributes.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import { NodePath } from '@babel/traverse';
2
2
  import * as t from '@babel/types';
3
- export declare function getStaticBindingsForScope(scope: NodePath<t.JSXElement>['scope'], whitelist: string[] | undefined, sourcePath: string, bindingCache: Record<string, string | null>, shouldPrintDebug: boolean | 'verbose'): Record<string, any>;
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>>;
4
5
  //# sourceMappingURL=getStaticBindingsForScope.d.ts.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=loadFile.d.ts.map
@@ -1,9 +1,19 @@
1
- import type { TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core';
2
- export declare function loadTamagui(props: {
3
- components: string[];
4
- config: string;
5
- }): {
1
+ import type { TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core-node';
2
+ declare type NameToPaths = {
3
+ [key: string]: Set<string>;
4
+ };
5
+ export declare type TamaguiProjectInfo = {
6
6
  components: Record<string, TamaguiComponent>;
7
7
  tamaguiConfig: TamaguiInternalConfig;
8
+ nameToPaths: NameToPaths;
9
+ };
10
+ declare type Props = {
11
+ components: string[];
12
+ config?: string;
13
+ forceExports?: boolean;
14
+ bubbleErrors?: boolean;
8
15
  };
16
+ export declare function loadTamagui(props: Props): Promise<TamaguiProjectInfo>;
17
+ export declare function loadTamaguiSync(props: Props): TamaguiProjectInfo;
18
+ export {};
9
19
  //# sourceMappingURL=loadTamagui.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
@@ -46,4 +46,53 @@ export declare const validHTMLAttributes: {
46
46
  'aria-selected': boolean;
47
47
  'aria-sort': boolean;
48
48
  };
49
+ export declare const validAccessibilityAttributes: {
50
+ accessibilityRole: boolean;
51
+ accessibilityActiveDescendant: boolean;
52
+ accessibilityAtomic: boolean;
53
+ accessibilityAutoComplete: boolean;
54
+ accessibilityBusy: boolean;
55
+ accessibilityChecked: boolean;
56
+ accessibilityColumnCount: boolean;
57
+ accessibilityColumnIndex: boolean;
58
+ accessibilityColumnSpan: boolean;
59
+ accessibilityControls: boolean;
60
+ accessibilityCurrent: boolean;
61
+ accessibilityDescribedBy: boolean;
62
+ accessibilityDetails: boolean;
63
+ disabled: boolean;
64
+ accessibilityErrorMessage: boolean;
65
+ accessibilityExpanded: boolean;
66
+ accessibilityFlowTo: boolean;
67
+ accessibilityHasPopup: boolean;
68
+ accessibilityHidden: boolean;
69
+ accessibilityInvalid: boolean;
70
+ accessibilityKeyShortcuts: boolean;
71
+ accessibilityLabel: boolean;
72
+ accessibilityLabelledBy: boolean;
73
+ accessibilityLevel: boolean;
74
+ accessibilityLiveRegion: boolean;
75
+ accessibilityModal: boolean;
76
+ accessibilityMultiline: boolean;
77
+ accessibilityMultiSelectable: boolean;
78
+ accessibilityOrientation: boolean;
79
+ accessibilityOwns: boolean;
80
+ accessibilityPlaceholder: boolean;
81
+ accessibilityPosInSet: boolean;
82
+ accessibilityPressed: boolean;
83
+ accessibilityReadOnly: boolean;
84
+ accessibilityRequired: boolean;
85
+ accessibilityRoleDescription: boolean;
86
+ accessibilityRowCount: boolean;
87
+ accessibilityRowIndex: boolean;
88
+ accessibilityRowSpan: boolean;
89
+ accessibilitySelected: boolean;
90
+ accessibilitySetSize: boolean;
91
+ accessibilitySort: boolean;
92
+ accessibilityValueMax: boolean;
93
+ accessibilityValueMin: boolean;
94
+ accessibilityValueNow: boolean;
95
+ accessibilityValueText: boolean;
96
+ nativeID: boolean;
97
+ };
49
98
  //# sourceMappingURL=validHTMLAttributes.d.ts.map
@@ -0,0 +1,9 @@
1
+ export declare function getPragmaOptions({ source, path, disableCommentCheck, }: {
2
+ source: string;
3
+ path: string;
4
+ disableCommentCheck?: boolean;
5
+ }): {
6
+ shouldPrintDebug: boolean | "verbose";
7
+ shouldDisable: boolean;
8
+ };
9
+ //# sourceMappingURL=getPragmaOptions.d.ts.map
package/types/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- export { TamaguiOptions } from './types';
2
- export { createExtractor } from './extractor/createExtractor';
3
- export { literalToAst } from './extractor/literalToAst';
4
- export * from './constants';
5
- export * from './extractor/extractToClassNames';
6
- export * from './extractor/extractHelpers';
7
- export * from './patchReactNativeWeb';
1
+ export { TamaguiOptions } from './types.js';
2
+ export { createExtractor } from './extractor/createExtractor.js';
3
+ export { literalToAst } from './extractor/literalToAst.js';
4
+ export * from './constants.js';
5
+ export * from './extractor/extractToClassNames.js';
6
+ export * from './extractor/extractHelpers.js';
7
+ export * from '@tamagui/patch-rnw';
8
+ export * from './extractor/loadTamagui.js';
9
+ export * from './require.js';
10
+ export * from './getPragmaOptions.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ export declare const getNameToPaths: () => {};
2
+ export declare function registerRequire(bubbleErrors?: boolean): any;
3
+ export declare function unregisterRequire(): void;
4
+ //# sourceMappingURL=require.d.ts.map
package/types/types.d.ts CHANGED
@@ -1,31 +1,28 @@
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 { 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
+ export type { TamaguiOptions } from '@tamagui/helpers-node';
8
+ export type { StyleObject } from '@tamagui/helpers';
5
9
  export declare type ClassNameObject = t.StringLiteral | t.Expression;
6
10
  export interface CacheObject {
7
11
  [key: string]: any;
8
12
  }
9
- export interface TamaguiOptions {
10
- components: string[];
11
- config?: string;
12
- evaluateVars?: boolean;
13
- importsWhitelist?: string[];
14
- disable?: boolean;
15
- disableExtraction?: boolean;
16
- disableDebugAttr?: boolean;
17
- disableExtractInlineMedia?: boolean;
18
- disableExtractVariables?: boolean;
19
- excludeReactNativeWebExports?: string[];
20
- exclude?: RegExp;
21
- logTimings?: boolean;
22
- prefixLogs?: string;
23
- cssPath?: string;
24
- cssData?: any;
25
- deoptProps?: Set<string>;
26
- excludeProps?: Set<string>;
27
- inlineProps?: Set<string>;
13
+ export interface LogOptions {
14
+ clear?: boolean;
15
+ timestamp?: boolean;
16
+ error?: Error | null;
28
17
  }
18
+ export interface Logger {
19
+ info(msg: string, options?: LogOptions): void;
20
+ warn(msg: string, options?: LogOptions): void;
21
+ error(msg: string, options?: LogOptions): void;
22
+ }
23
+ export declare type ExtractorOptions = {
24
+ logger?: Logger;
25
+ };
29
26
  export declare type ExtractedAttrAttr = {
30
27
  type: 'attr';
31
28
  value: t.JSXAttribute | t.JSXSpreadAttribute;
@@ -50,15 +47,20 @@ export declare type ExtractTagProps = {
50
47
  lineNumbers: string;
51
48
  filePath: string;
52
49
  isFlattened: boolean;
50
+ completeProps: Record<string, any>;
51
+ staticConfig: StaticConfig;
53
52
  };
54
53
  export declare type ExtractorParseProps = TamaguiOptions & {
54
+ target: 'native' | 'html';
55
55
  sourcePath?: string;
56
56
  shouldPrintDebug?: boolean | 'verbose';
57
57
  onExtractTag: (props: ExtractTagProps) => void;
58
- getFlattenedNode: (props: {
58
+ getFlattenedNode?: (props: {
59
59
  isTextView: boolean;
60
60
  tag: string;
61
61
  }) => string;
62
+ extractStyledDefinitions?: boolean;
63
+ onStyleRule?: (identifier: string, rules: string[]) => void;
62
64
  };
63
65
  export interface Ternary {
64
66
  test: t.Expression;
@@ -67,13 +69,6 @@ export interface Ternary {
67
69
  consequent: Object | null;
68
70
  alternate: Object | null;
69
71
  }
70
- export declare type StyleObject = {
71
- property: string;
72
- value: string;
73
- className: string;
74
- identifier: string;
75
- rules: string[];
76
- };
77
72
  export declare type ClassNameToStyleObj = {
78
73
  [key: string]: StyleObject;
79
74
  };
@@ -0,0 +1,4 @@
1
+ export declare class TamaguiWebpackPlugin {
2
+ apply(compiler: any): void;
3
+ }
4
+ //# sourceMappingURL=webpackPlugin.d.ts.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/constants.ts"],
4
- "sourcesContent": ["import findCacheDir from 'find-cache-dir'\n\nexport const CSS_FILE_NAME = '__snack.css'\n\n// ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS\n// SEE matching one in concatClassName\nexport const MEDIA_SEP = '_'\n\n// ensure cache dir\nexport const cacheDir = findCacheDir({ name: 'tamagui', create: true })\n\nexport const FAILED_EVAL = Symbol('failed_style_eval')\nexport const CONCAT_CLASSNAME_IMPORT = 'concatClassName'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAyB;AAElB,MAAM,gBAAgB;AAItB,MAAM,YAAY;AAGlB,MAAM,WAAW,mCAAa,EAAE,MAAM,WAAW,QAAQ,KAAK,CAAC;AAE/D,MAAM,cAAc,OAAO,mBAAmB;AAC9C,MAAM,0BAA0B;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extractor/accessSafe.ts"],
4
- "sourcesContent": ["import * as t from '@babel/types'\n\n// accessSafe wraps memberExpressions in object/null checks\n// TODO: inject this as a function? this gets pretty repetitive\nexport function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {\n return t.logicalExpression(\n '&&',\n t.logicalExpression(\n '&&',\n // typeof obj === 'object\n t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),\n // obj !== null\n t.binaryExpression('!==', obj, t.nullLiteral())\n ),\n // obj.member\n t.memberExpression(obj, t.identifier(member), false)\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAAmB;AAIZ,oBAAoB,KAAmB,QAAqC;AACjF,SAAO,EAAE,kBACP,MACA,EAAE,kBACA,MAEA,EAAE,iBAAiB,OAAO,EAAE,gBAAgB,UAAU,GAAG,GAAG,EAAE,cAAc,QAAQ,CAAC,GAErF,EAAE,iBAAiB,OAAO,KAAK,EAAE,YAAY,CAAC,CAChD,GAEA,EAAE,iBAAiB,KAAK,EAAE,WAAW,MAAM,GAAG,KAAK,CACrD;AACF;AAbgB;",
6
- "names": []
7
- }