@tamagui/static 1.0.1-beta.20 → 1.0.1-beta.201

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 (260) 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 -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 +40 -11
  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 +19 -14
  12. package/dist/extractor/createEvaluator.js.map +7 -0
  13. package/dist/extractor/createExtractor.js +1650 -0
  14. package/dist/extractor/createExtractor.js.map +7 -0
  15. package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +18 -8
  16. package/dist/extractor/ensureImportingConcat.js.map +7 -0
  17. package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +14 -6
  18. package/dist/{esm/extractor → extractor}/evaluateAstNode.js.map +2 -2
  19. package/dist/{cjs/extractor → extractor}/extractHelpers.js +91 -27
  20. package/dist/extractor/extractHelpers.js.map +7 -0
  21. package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +49 -50
  22. package/dist/extractor/extractMediaStyle.js.map +7 -0
  23. package/dist/{cjs/extractor → extractor}/extractToClassNames.js +161 -109
  24. package/dist/extractor/extractToClassNames.js.map +7 -0
  25. package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +2 -3
  26. package/dist/{esm/extractor → extractor}/findTopmostFunction.js.map +2 -2
  27. package/dist/{cjs/extractor → extractor}/generatedUid.js +9 -4
  28. package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
  29. package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +1 -2
  30. package/dist/extractor/getPrefixLogs.js.map +7 -0
  31. package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +24 -15
  32. package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
  33. package/dist/{cjs/extractor → extractor}/getSourceModule.js +5 -3
  34. package/dist/{esm/extractor → extractor}/getSourceModule.js.map +2 -2
  35. package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +88 -38
  36. package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
  37. package/dist/{cjs/extractor → extractor}/hoistClassNames.js +5 -4
  38. package/dist/{esm/extractor → extractor}/hoistClassNames.js.map +3 -3
  39. package/dist/{cjs/extractor → extractor}/literalToAst.js +26 -34
  40. package/dist/{cjs/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 +421 -0
  44. package/dist/extractor/loadTamagui.js.map +7 -0
  45. package/dist/{cjs/extractor → extractor}/logLines.js +3 -3
  46. package/dist/{cjs/extractor → extractor}/logLines.js.map +2 -2
  47. package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +13 -36
  48. package/dist/extractor/normalizeTernaries.js.map +7 -0
  49. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +7 -5
  50. package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js.map +2 -2
  51. package/dist/{cjs/extractor → extractor}/timer.js +11 -4
  52. package/dist/extractor/timer.js.map +7 -0
  53. package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +52 -0
  54. package/dist/extractor/validHTMLAttributes.js.map +7 -0
  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 -7
  60. package/dist/index.js.map +7 -0
  61. package/dist/require.js +90 -0
  62. package/dist/require.js.map +7 -0
  63. package/dist/tamagui-node/tamagui.config.js +6781 -0
  64. package/dist/{jsx/types.js → tamagui-node/tamaguicore-components.config.js} +0 -0
  65. package/dist/tamagui-node/tamaguitestdesignsystem-components.config.js +31 -0
  66. package/dist/{cjs/types.js → types.js} +1 -0
  67. package/dist/types.js.map +7 -0
  68. package/dist/webpackPlugin.js +35 -0
  69. package/dist/webpackPlugin.js.map +7 -0
  70. package/package.json +47 -35
  71. package/src/constants.ts +14 -0
  72. package/src/extractor/accessSafe.ts +18 -0
  73. package/src/extractor/babelParse.ts +28 -0
  74. package/src/extractor/buildClassName.ts +77 -0
  75. package/src/extractor/bundle.ts +110 -0
  76. package/src/extractor/createEvaluator.ts +73 -0
  77. package/src/extractor/createExtractor.ts +2147 -0
  78. package/src/extractor/ensureImportingConcat.ts +32 -0
  79. package/src/extractor/evaluateAstNode.ts +121 -0
  80. package/src/extractor/extractHelpers.ts +201 -0
  81. package/src/extractor/extractMediaStyle.ts +199 -0
  82. package/src/extractor/extractToClassNames.ts +445 -0
  83. package/src/extractor/findTopmostFunction.ts +22 -0
  84. package/src/extractor/generatedUid.ts +43 -0
  85. package/src/extractor/getPrefixLogs.ts +6 -0
  86. package/src/extractor/getPropValueFromAttributes.ts +92 -0
  87. package/src/extractor/getSourceModule.ts +101 -0
  88. package/src/extractor/getStaticBindingsForScope.ts +227 -0
  89. package/src/extractor/hoistClassNames.ts +45 -0
  90. package/src/extractor/literalToAst.ts +84 -0
  91. package/src/extractor/loadFile.ts +17 -0
  92. package/src/extractor/loadTamagui.ts +478 -0
  93. package/src/extractor/logLines.ts +16 -0
  94. package/src/extractor/normalizeTernaries.ts +63 -0
  95. package/src/extractor/removeUnusedHooks.ts +76 -0
  96. package/src/extractor/timer.ts +29 -0
  97. package/src/extractor/validHTMLAttributes.ts +99 -0
  98. package/src/getPragmaOptions.ts +53 -0
  99. package/src/helpers/memoize.ts +21 -0
  100. package/src/index.ts +11 -0
  101. package/src/require.ts +107 -0
  102. package/src/types.ts +98 -0
  103. package/src/webpackPlugin.ts +9 -0
  104. package/tamagui.tsconfig.json +5 -0
  105. package/types/constants.d.ts +1 -1
  106. package/types/extractor/babelParse.d.ts +2 -1
  107. package/types/extractor/buildClassName.d.ts +5 -2
  108. package/types/extractor/bundle.d.ts +13 -0
  109. package/types/extractor/createEvaluator.d.ts +4 -4
  110. package/types/extractor/createExtractor.d.ts +26 -11
  111. package/types/extractor/extractHelpers.d.ts +16 -4
  112. package/types/extractor/extractMediaStyle.d.ts +3 -3
  113. package/types/extractor/extractToClassNames.d.ts +5 -9
  114. package/types/extractor/getPrefixLogs.d.ts +1 -1
  115. package/types/extractor/getPropValueFromAttributes.d.ts +16 -0
  116. package/types/extractor/getStaticBindingsForScope.d.ts +2 -1
  117. package/types/extractor/loadFile.d.ts +1 -0
  118. package/types/extractor/loadTamagui.d.ts +22 -6
  119. package/types/extractor/normalizeTernaries.d.ts +1 -1
  120. package/types/extractor/validHTMLAttributes.d.ts +49 -0
  121. package/types/getPragmaOptions.d.ts +9 -0
  122. package/types/helpers/memoize.d.ts +8 -0
  123. package/types/index.d.ts +9 -7
  124. package/types/require.d.ts +4 -0
  125. package/types/types.d.ts +32 -32
  126. package/types/webpackPlugin.d.ts +4 -0
  127. package/dist/cjs/constants.js.map +0 -7
  128. package/dist/cjs/extractor/accessSafe.js.map +0 -7
  129. package/dist/cjs/extractor/babelParse.js.map +0 -7
  130. package/dist/cjs/extractor/buildClassName.js.map +0 -7
  131. package/dist/cjs/extractor/createEvaluator.js.map +0 -7
  132. package/dist/cjs/extractor/createExtractor.js +0 -1221
  133. package/dist/cjs/extractor/createExtractor.js.map +0 -7
  134. package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
  135. package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
  136. package/dist/cjs/extractor/extractHelpers.js.map +0 -7
  137. package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
  138. package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
  139. package/dist/cjs/extractor/findTopmostFunction.js.map +0 -7
  140. package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
  141. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
  142. package/dist/cjs/extractor/getSourceModule.js.map +0 -7
  143. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
  144. package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
  145. package/dist/cjs/extractor/loadTamagui.js +0 -106
  146. package/dist/cjs/extractor/loadTamagui.js.map +0 -7
  147. package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
  148. package/dist/cjs/extractor/timer.js.map +0 -7
  149. package/dist/cjs/extractor/validHTMLAttributes.js.map +0 -7
  150. package/dist/cjs/index.js.map +0 -7
  151. package/dist/cjs/patchReactNativeWeb.js +0 -167
  152. package/dist/cjs/patchReactNativeWeb.js.map +0 -7
  153. package/dist/cjs/types.js.map +0 -7
  154. package/dist/esm/constants.js +0 -14
  155. package/dist/esm/constants.js.map +0 -7
  156. package/dist/esm/extractor/accessSafe.js +0 -11
  157. package/dist/esm/extractor/babelParse.js +0 -30
  158. package/dist/esm/extractor/babelParse.js.map +0 -7
  159. package/dist/esm/extractor/buildClassName.js +0 -40
  160. package/dist/esm/extractor/buildClassName.js.map +0 -7
  161. package/dist/esm/extractor/createEvaluator.js +0 -52
  162. package/dist/esm/extractor/createEvaluator.js.map +0 -7
  163. package/dist/esm/extractor/createExtractor.js +0 -1169
  164. package/dist/esm/extractor/createExtractor.js.map +0 -7
  165. package/dist/esm/extractor/ensureImportingConcat.js +0 -24
  166. package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
  167. package/dist/esm/extractor/evaluateAstNode.js +0 -94
  168. package/dist/esm/extractor/extractHelpers.js +0 -103
  169. package/dist/esm/extractor/extractHelpers.js.map +0 -7
  170. package/dist/esm/extractor/extractMediaStyle.js +0 -152
  171. package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
  172. package/dist/esm/extractor/extractToClassNames.js +0 -293
  173. package/dist/esm/extractor/extractToClassNames.js.map +0 -7
  174. package/dist/esm/extractor/findTopmostFunction.js +0 -23
  175. package/dist/esm/extractor/generatedUid.js +0 -28
  176. package/dist/esm/extractor/generatedUid.js.map +0 -7
  177. package/dist/esm/extractor/getPrefixLogs.js +0 -12
  178. package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
  179. package/dist/esm/extractor/getPropValueFromAttributes.js +0 -49
  180. package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
  181. package/dist/esm/extractor/getSourceModule.js +0 -69
  182. package/dist/esm/extractor/getStaticBindingsForScope.js +0 -137
  183. package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
  184. package/dist/esm/extractor/hoistClassNames.js +0 -44
  185. package/dist/esm/extractor/literalToAst.js +0 -80
  186. package/dist/esm/extractor/literalToAst.js.map +0 -7
  187. package/dist/esm/extractor/loadTamagui.js +0 -84
  188. package/dist/esm/extractor/loadTamagui.js.map +0 -7
  189. package/dist/esm/extractor/logLines.js +0 -22
  190. package/dist/esm/extractor/logLines.js.map +0 -7
  191. package/dist/esm/extractor/normalizeTernaries.js +0 -53
  192. package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
  193. package/dist/esm/extractor/removeUnusedHooks.js +0 -80
  194. package/dist/esm/extractor/removeUnusedHooks.js.map +0 -7
  195. package/dist/esm/extractor/timer.js +0 -24
  196. package/dist/esm/extractor/timer.js.map +0 -7
  197. package/dist/esm/extractor/validHTMLAttributes.js +0 -52
  198. package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
  199. package/dist/esm/index.js +0 -14
  200. package/dist/esm/index.js.map +0 -7
  201. package/dist/esm/patchReactNativeWeb.js +0 -142
  202. package/dist/esm/patchReactNativeWeb.js.map +0 -7
  203. package/dist/esm/types.js +0 -1
  204. package/dist/esm/types.js.map +0 -7
  205. package/dist/jsx/constants.js +0 -13
  206. package/dist/jsx/extractor/accessSafe.js +0 -10
  207. package/dist/jsx/extractor/babelParse.js +0 -29
  208. package/dist/jsx/extractor/buildClassName.js +0 -39
  209. package/dist/jsx/extractor/createEvaluator.js +0 -51
  210. package/dist/jsx/extractor/createExtractor.js +0 -1168
  211. package/dist/jsx/extractor/ensureImportingConcat.js +0 -23
  212. package/dist/jsx/extractor/evaluateAstNode.js +0 -93
  213. package/dist/jsx/extractor/extractHelpers.js +0 -102
  214. package/dist/jsx/extractor/extractMediaStyle.js +0 -151
  215. package/dist/jsx/extractor/extractToClassNames.js +0 -292
  216. package/dist/jsx/extractor/findTopmostFunction.js +0 -22
  217. package/dist/jsx/extractor/generatedUid.js +0 -27
  218. package/dist/jsx/extractor/getPrefixLogs.js +0 -11
  219. package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -48
  220. package/dist/jsx/extractor/getSourceModule.js +0 -68
  221. package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -136
  222. package/dist/jsx/extractor/hoistClassNames.js +0 -43
  223. package/dist/jsx/extractor/literalToAst.js +0 -79
  224. package/dist/jsx/extractor/loadTamagui.js +0 -83
  225. package/dist/jsx/extractor/logLines.js +0 -21
  226. package/dist/jsx/extractor/normalizeTernaries.js +0 -52
  227. package/dist/jsx/extractor/removeUnusedHooks.js +0 -79
  228. package/dist/jsx/extractor/timer.js +0 -23
  229. package/dist/jsx/extractor/validHTMLAttributes.js +0 -51
  230. package/dist/jsx/index.js +0 -13
  231. package/dist/jsx/patchReactNativeWeb.js +0 -141
  232. package/types/constants.d.ts.map +0 -1
  233. package/types/extractor/accessSafe.d.ts.map +0 -1
  234. package/types/extractor/babelParse.d.ts.map +0 -1
  235. package/types/extractor/buildClassName.d.ts.map +0 -1
  236. package/types/extractor/createEvaluator.d.ts.map +0 -1
  237. package/types/extractor/createExtractor.d.ts.map +0 -1
  238. package/types/extractor/ensureImportingConcat.d.ts.map +0 -1
  239. package/types/extractor/evaluateAstNode.d.ts.map +0 -1
  240. package/types/extractor/extractHelpers.d.ts.map +0 -1
  241. package/types/extractor/extractMediaStyle.d.ts.map +0 -1
  242. package/types/extractor/extractToClassNames.d.ts.map +0 -1
  243. package/types/extractor/findTopmostFunction.d.ts.map +0 -1
  244. package/types/extractor/generatedUid.d.ts.map +0 -1
  245. package/types/extractor/getPrefixLogs.d.ts.map +0 -1
  246. package/types/extractor/getPropValueFromAttributes.d.ts.map +0 -1
  247. package/types/extractor/getSourceModule.d.ts.map +0 -1
  248. package/types/extractor/getStaticBindingsForScope.d.ts.map +0 -1
  249. package/types/extractor/hoistClassNames.d.ts.map +0 -1
  250. package/types/extractor/literalToAst.d.ts.map +0 -1
  251. package/types/extractor/loadTamagui.d.ts.map +0 -1
  252. package/types/extractor/logLines.d.ts.map +0 -1
  253. package/types/extractor/normalizeTernaries.d.ts.map +0 -1
  254. package/types/extractor/removeUnusedHooks.d.ts.map +0 -1
  255. package/types/extractor/timer.d.ts.map +0 -1
  256. package/types/extractor/validHTMLAttributes.d.ts.map +0 -1
  257. package/types/index.d.ts.map +0 -1
  258. package/types/patchReactNativeWeb.d.ts +0 -2
  259. package/types/patchReactNativeWeb.d.ts.map +0 -1
  260. package/types/types.d.ts.map +0 -1
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
4
+
5
+ // ../test-design-system/dist/cjs/index.js
6
+ var __defProp2 = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = /* @__PURE__ */ __name((target, all) => {
11
+ for (var name in all)
12
+ __defProp2(target, name, { get: all[name], enumerable: true });
13
+ }, "__export");
14
+ var __copyProps = /* @__PURE__ */ __name((to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ }, "__copyProps");
22
+ var __toCommonJS = /* @__PURE__ */ __name((mod) => __copyProps(__defProp2({}, "__esModule", { value: true }), mod), "__toCommonJS");
23
+ var src_exports = {};
24
+ __export(src_exports, {
25
+ MyStack: () => MyStack
26
+ });
27
+ module.exports = __toCommonJS(src_exports);
28
+ var import_core = require("@tamagui/core-node");
29
+ var MyStack = (0, import_core.styled)(import_core.Stack, {
30
+ backgroundColor: "green"
31
+ });
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/types.ts"],
4
+ "sourcesContent": ["import type { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\nimport type { PseudoStyles, StaticConfig } from '@tamagui/core-node'\nimport type { StyleObject } from '@tamagui/helpers'\nimport type { TamaguiOptions } from '@tamagui/helpers-node'\nimport type { ViewStyle } from 'react-native'\n\nimport { LoadedComponents } from './index'\n\nexport type { TamaguiOptions } from '@tamagui/helpers-node'\n\nexport type { StyleObject } from '@tamagui/helpers'\n\nexport type ClassNameObject = t.StringLiteral | t.Expression\n\nexport interface CacheObject {\n [key: string]: any\n}\n\nexport interface LogOptions {\n clear?: boolean\n timestamp?: boolean\n error?: Error | null\n}\n\nexport interface Logger {\n info(msg: string, options?: LogOptions): void\n warn(msg: string, options?: LogOptions): void\n error(msg: string, options?: LogOptions): void\n}\n\nexport type ExtractorOptions = {\n logger?: Logger\n}\n\nexport type ExtractedAttrAttr = {\n type: 'attr'\n value: t.JSXAttribute | t.JSXSpreadAttribute\n}\n\nexport type ExtractedAttrStyle = {\n type: 'style'\n value: ViewStyle & PseudoStyles\n attr?: t.JSXAttribute | t.JSXSpreadAttribute\n name?: string\n}\n\nexport type ExtractedAttr =\n | ExtractedAttrAttr\n | { type: 'ternary'; value: Ternary }\n | ExtractedAttrStyle\n\nexport type ExtractTagProps = {\n parserProps: TamaguiOptionsWithFileInfo\n attrs: ExtractedAttr[]\n node: t.JSXOpeningElement\n attemptEval: (exprNode: t.Node, evalFn?: ((node: t.Node) => any) | undefined) => any\n jsxPath: NodePath<t.JSXElement>\n programPath: NodePath<t.Program>\n originalNodeName: string\n lineNumbers: string\n filePath: string\n isFlattened: boolean\n completeProps: Record<string, any>\n staticConfig: StaticConfig\n}\n\nexport type TamaguiOptionsWithFileInfo = TamaguiOptions & {\n sourcePath: string\n allLoadedComponents: LoadedComponents[]\n}\n\nexport type ExtractorParseProps = Omit<TamaguiOptionsWithFileInfo, 'allLoadedComponents'> & {\n target: 'native' | 'html'\n shouldPrintDebug?: boolean | 'verbose'\n onExtractTag: (props: ExtractTagProps) => void\n getFlattenedNode?: (props: { isTextView: boolean; tag: string }) => string\n extractStyledDefinitions?: boolean\n // identifer, rule\n onStyleRule?: (identifier: string, rules: string[]) => void\n}\n\nexport interface Ternary {\n test: t.Expression\n // shorthand props that don't use hooks\n inlineMediaQuery?: string\n remove: Function\n consequent: Object | null\n alternate: Object | null\n}\n\nexport type ClassNameToStyleObj = {\n [key: string]: StyleObject\n}\n\nexport interface PluginContext {\n write: (path: string, rules: { [key: string]: string }) => any\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var webpackPlugin_exports = {};
20
+ __export(webpackPlugin_exports, {
21
+ TamaguiWebpackPlugin: () => TamaguiWebpackPlugin
22
+ });
23
+ module.exports = __toCommonJS(webpackPlugin_exports);
24
+ const pluginName = "TamaguiWebpackPlugin";
25
+ class TamaguiWebpackPlugin {
26
+ apply(compiler) {
27
+ compiler.hooks.run.tap(pluginName, (compilation) => {
28
+ });
29
+ }
30
+ }
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ TamaguiWebpackPlugin
34
+ });
35
+ //# sourceMappingURL=webpackPlugin.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/webpackPlugin.ts"],
4
+ "sourcesContent": ["const pluginName = 'TamaguiWebpackPlugin'\n\nexport class TamaguiWebpackPlugin {\n apply(compiler) {\n compiler.hooks.run.tap(pluginName, (compilation) => {\n // console.log('The webpack build process is starting!');\n })\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAM,aAAa;AAEZ,MAAM,qBAAqB;AAAA,EAChC,MAAM,UAAU;AACd,aAAS,MAAM,IAAI,IAAI,YAAY,CAAC,gBAAgB;AAAA,IAEpD,CAAC;AAAA,EACH;AACF;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@tamagui/static",
3
- "version": "1.0.1-beta.20",
3
+ "version": "1.0.1-beta.201",
4
4
  "source": "src/index.ts",
5
- "typings": "types",
6
- "main": "dist/cjs",
7
- "module": "dist/esm",
8
- "module:jsx": "dist/jsx",
5
+ "types": "./types/index.d.ts",
6
+ "main": "dist",
9
7
  "files": [
8
+ "tamagui.tsconfig.json",
9
+ "src",
10
10
  "types",
11
11
  "dist"
12
12
  ],
@@ -15,10 +15,10 @@
15
15
  "watch": "tamagui-build --watch",
16
16
  "clean": "tamagui-build clean",
17
17
  "clean:build": "tamagui-build clean:build",
18
- "test": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 jest --forceExit",
19
- "test:debug": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 DEBUG_FILE=extract-specs.tsx DEBUG=1 yarn test",
20
- "test:watch": "NODE_ENV=test TAMAGUI_COMPILE_PROCESS=1 yarn test --watch",
21
- "test:update-snapshots": "NODE_ENV=test jest --updateSnapshot"
18
+ "lint": "eslint",
19
+ "lint:fix": "yarn lint --fix",
20
+ "pretest": "node -r esbuild-register ./tests/lib/preTest.js",
21
+ "test": "yarn pretest && vitest --config ../vite-plugin-internal/src/vite.config.ts --run --dom"
22
22
  },
23
23
  "tests": {
24
24
  "parallel": true
@@ -28,47 +28,59 @@
28
28
  },
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@babel/core": "^7.15.5",
32
- "@babel/generator": "^7.15.4",
33
- "@babel/helper-plugin-utils": "^7.14.5",
34
- "@babel/parser": "^7.15.7",
35
- "@babel/traverse": "^7.15.4",
31
+ "@babel/core": "^7.19.6",
32
+ "@babel/generator": "^7.19.6",
33
+ "@babel/helper-plugin-utils": "^7.19.0",
34
+ "@babel/parser": "^7.19.6",
35
+ "@babel/plugin-transform-react-jsx": "^7.19.0",
36
+ "@babel/runtime": "^7.19.4",
37
+ "@babel/traverse": "^7.19.6",
36
38
  "@expo/match-media": "^0.3.0",
37
- "@tamagui/build": "^1.0.1-beta.20",
38
- "@tamagui/core-node": "^1.0.1-beta.20",
39
- "@tamagui/fake-react-native": "^1.0.1-beta.20",
40
- "@tamagui/helpers": "^1.0.1-beta.20",
41
- "@tamagui/proxy-worm": "^1.0.1-beta.20",
39
+ "@tamagui/build": "^1.0.1-beta.201",
40
+ "@tamagui/cli-color": "^1.0.1-beta.201",
41
+ "@tamagui/config-default-node": "^1.0.1-beta.201",
42
+ "@tamagui/core-node": "^1.0.1-beta.201",
43
+ "@tamagui/fake-react-native": "^1.0.1-beta.201",
44
+ "@tamagui/helpers": "^1.0.1-beta.201",
45
+ "@tamagui/helpers-node": "^1.0.1-beta.201",
46
+ "@tamagui/proxy-worm": "^1.0.1-beta.201",
47
+ "@tamagui/shorthands": "^1.0.1-beta.201",
42
48
  "babel-literal-to-ast": "^2.1.0",
43
- "esbuild": "^0.14.36",
44
- "esbuild-register": "^3.3.2",
49
+ "esbuild": "^0.15.11",
50
+ "esbuild-register": "^3.3.3",
45
51
  "find-cache-dir": "^3.3.2",
46
- "fs-extra": "^9.1.0",
52
+ "find-root": "^1.1.0",
53
+ "fs-extra": "^10.1.0",
47
54
  "invariant": "^2.2.4",
48
55
  "lodash": "^4.17.21",
49
- "tamagui": "^1.0.1-beta.20"
56
+ "react-native-web-internals": "^1.0.1-beta.201",
57
+ "react-native-web-lite": "^1.0.1-beta.201"
50
58
  },
51
59
  "devDependencies": {
52
- "@babel/plugin-syntax-typescript": "^7.14.5",
53
- "@babel/types": "^7.15.6",
60
+ "@babel/plugin-syntax-typescript": "^7.18.6",
61
+ "@babel/types": "^7.19.4",
54
62
  "@dish/babel-preset": "^0.0.6",
55
- "@testing-library/react": "13.0.0-alpha.4",
56
- "@types/jest": "*",
63
+ "@tamagui/test-design-system": "^1.0.1-beta.201",
64
+ "@testing-library/react": "^13.3.0",
65
+ "@types/babel__generator": "^7.6.4",
66
+ "@types/babel__traverse": "^7.18.2",
67
+ "@types/find-root": "^1.1.2",
57
68
  "@types/node": "^16.11.9",
58
- "@types/react-native": "^0.67.3",
69
+ "@types/react-native": "^0.69.2",
59
70
  "@types/webpack": "^4.41.26",
60
71
  "babel-loader": "^8.2.5",
61
72
  "css-loader": "^5.2.4",
62
- "esbuild-loader": "^2.18.0",
63
- "jest": "^27.3.1",
73
+ "dedent": "^0.7.0",
74
+ "esbuild-loader": "^2.19.0",
64
75
  "null-loader": "^4.0.1",
65
76
  "react": "*",
66
77
  "react-dom": "*",
67
- "react-native-web": "^0.17.5",
68
- "react-test-renderer": "^18.1.0",
69
- "style-loader": "^3.3.0",
70
- "typescript": "^4.5.2",
71
- "webpack": "^5.72.0"
78
+ "react-native-web": "^0.18.3",
79
+ "react-test-renderer": "^18.2.0",
80
+ "style-loader": "^3.3.1",
81
+ "typescript": "^4.7.4",
82
+ "vitest": "^0.24.3",
83
+ "webpack": "^5.74.0"
72
84
  },
73
85
  "peerDependencies": {
74
86
  "react-native-web": "*"
@@ -0,0 +1,14 @@
1
+ import findCacheDir from 'find-cache-dir'
2
+
3
+ export const CSS_FILE_NAME = '__snack.css'
4
+
5
+ // ENSURE THIS ISNT THE SAME AS THE SEPARATOR USED FOR STYLE KEYS
6
+ // SEE matching one in concatClassName
7
+ export const MEDIA_SEP = '_'
8
+
9
+ // ensure cache dir
10
+ export const cacheDir = findCacheDir({ name: 'tamagui', create: true })
11
+
12
+ export const FAILED_EVAL = Symbol('failed_style_eval')
13
+
14
+ export const SHOULD_DEBUG = process.env.DEBUG === '*' || process.env.DEBUG?.startsWith('tamagui')
@@ -0,0 +1,18 @@
1
+ import * as t from '@babel/types'
2
+
3
+ // accessSafe wraps memberExpressions in object/null checks
4
+ // TODO: inject this as a function? this gets pretty repetitive
5
+ export function accessSafe(obj: t.Expression, member: string): t.LogicalExpression {
6
+ return t.logicalExpression(
7
+ '&&',
8
+ t.logicalExpression(
9
+ '&&',
10
+ // typeof obj === 'object
11
+ t.binaryExpression('===', t.unaryExpression('typeof', obj), t.stringLiteral('object')),
12
+ // obj !== null
13
+ t.binaryExpression('!==', obj, t.nullLiteral())
14
+ ),
15
+ // obj.member
16
+ t.memberExpression(obj, t.identifier(member), false)
17
+ )
18
+ }
@@ -0,0 +1,28 @@
1
+ import * as babelParser from '@babel/parser'
2
+ import * as t from '@babel/types'
3
+
4
+ const plugins: babelParser.ParserPlugin[] = [
5
+ 'asyncGenerators',
6
+ 'classProperties',
7
+ 'dynamicImport',
8
+ 'functionBind',
9
+ 'jsx',
10
+ 'numericSeparator',
11
+ 'objectRestSpread',
12
+ 'optionalCatchBinding',
13
+ 'decorators-legacy',
14
+ 'typescript',
15
+ 'optionalChaining',
16
+ 'nullishCoalescingOperator',
17
+ ]
18
+
19
+ export const parserOptions: babelParser.ParserOptions = Object.freeze({
20
+ plugins,
21
+ sourceType: 'module',
22
+ })
23
+
24
+ const parser = babelParser.parse.bind(babelParser)
25
+
26
+ export function babelParse(code: string | Buffer): t.File {
27
+ return parser(code.toString(), parserOptions) as any
28
+ }
@@ -0,0 +1,77 @@
1
+ import * as t from '@babel/types'
2
+ import { concatClassName } from '@tamagui/helpers'
3
+
4
+ import type { ClassNameObject } from '../types.js'
5
+
6
+ type Builder = (
7
+ objects: ClassNameObject[],
8
+ extras?: string
9
+ ) => t.Expression | t.StringLiteral | null
10
+
11
+ export const buildClassName: Builder = (objectsIn, extras = '') => {
12
+ let objects = buildClassNameLogic(objectsIn)
13
+ if (!objects) return null
14
+ if (t.isStringLiteral(objects)) {
15
+ objects.value = concatClassName(objects.value)
16
+ objects.value = `${extras} ${objects.value}`
17
+ } else {
18
+ objects = t.binaryExpression('+', t.stringLiteral(extras), objects)
19
+ }
20
+ return objects
21
+ }
22
+
23
+ export const buildClassNameLogic: Builder = (objects) => {
24
+ return objects.reduce<t.Expression | null>((acc, val) => {
25
+ if (acc == null) {
26
+ if (
27
+ // pass conditional expressions through
28
+ t.isConditionalExpression(val) ||
29
+ // pass non-null literals through
30
+ t.isStringLiteral(val) ||
31
+ t.isNumericLiteral(val)
32
+ ) {
33
+ return val
34
+ }
35
+ return t.logicalExpression('||', val, t.stringLiteral(''))
36
+ }
37
+
38
+ let inner: t.Expression
39
+ if (t.isStringLiteral(val)) {
40
+ if (t.isStringLiteral(acc)) {
41
+ // join adjacent string literals
42
+ return t.stringLiteral(`${acc.value} ${val.value}`)
43
+ }
44
+ inner = t.stringLiteral(` ${val.value}`)
45
+ } else if (t.isLiteral(val)) {
46
+ inner = t.binaryExpression('+', t.stringLiteral(' '), val)
47
+ } else if (t.isConditionalExpression(val) || t.isBinaryExpression(val)) {
48
+ if (t.isStringLiteral(acc)) {
49
+ return t.binaryExpression('+', t.stringLiteral(`${acc.value} `), val)
50
+ }
51
+ inner = t.binaryExpression('+', t.stringLiteral(' '), val)
52
+ } else if (t.isIdentifier(val) || t.isMemberExpression(val)) {
53
+ // identifiers and member expressions make for reasonable ternaries
54
+ inner = t.conditionalExpression(
55
+ val,
56
+ t.binaryExpression('+', t.stringLiteral(' '), val),
57
+ t.stringLiteral('')
58
+ )
59
+ } else {
60
+ if (t.isStringLiteral(acc)) {
61
+ return t.binaryExpression(
62
+ '+',
63
+ t.stringLiteral(`${acc.value} `),
64
+ t.logicalExpression('||', val, t.stringLiteral(''))
65
+ )
66
+ }
67
+ // use a logical expression for more complex prop values
68
+ inner = t.binaryExpression(
69
+ '+',
70
+ t.stringLiteral(' '),
71
+ t.logicalExpression('||', val, t.stringLiteral(''))
72
+ )
73
+ }
74
+
75
+ return t.binaryExpression('+', acc, inner)
76
+ }, null)
77
+ }
@@ -0,0 +1,110 @@
1
+ import { basename, dirname, join } from 'path'
2
+
3
+ import esbuild from 'esbuild'
4
+ import { pathExists, stat, writeFile } from 'fs-extra'
5
+
6
+ import { resolveWebOrNativeSpecificEntry } from './loadTamagui'
7
+
8
+ /**
9
+ * For internal loading of new files
10
+ */
11
+
12
+ type Props = Omit<Partial<esbuild.BuildOptions>, 'entryPoints'> & {
13
+ outfile: string
14
+ entryPoints: string[]
15
+ resolvePlatformSpecificEntries?: boolean
16
+ }
17
+
18
+ function getESBuildConfig(
19
+ { entryPoints, resolvePlatformSpecificEntries, ...options }: Props,
20
+ aliases?: Record<string, string>
21
+ ) {
22
+ const alias = require('@tamagui/core-node').aliasPlugin
23
+ if (process.env.DEBUG?.startsWith('tamagui')) {
24
+ // eslint-disable-next-line no-console
25
+ console.log(`Building`, entryPoints)
26
+ }
27
+ const tsconfig = join(__dirname, '..', '..', 'tamagui.tsconfig.json')
28
+
29
+ const resolvedEntryPoints = !resolvePlatformSpecificEntries
30
+ ? entryPoints
31
+ : entryPoints.map(resolveWebOrNativeSpecificEntry)
32
+
33
+ const res: esbuild.BuildOptions = {
34
+ bundle: true,
35
+ entryPoints: resolvedEntryPoints,
36
+ format: 'cjs',
37
+ target: 'node18',
38
+ jsx: 'transform',
39
+ jsxFactory: 'react',
40
+ allowOverwrite: true,
41
+ keepNames: true,
42
+ platform: 'node',
43
+ tsconfig,
44
+ loader: {
45
+ '.js': 'jsx',
46
+ },
47
+ logLevel: 'warning',
48
+ plugins: [
49
+ {
50
+ name: 'external',
51
+ setup(build) {
52
+ build.onResolve({ filter: /@tamagui\/core/ }, (args) => {
53
+ return {
54
+ path: '@tamagui/core-node',
55
+ external: true,
56
+ }
57
+ })
58
+
59
+ build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
60
+ return {
61
+ path: 'react-native-web-lite',
62
+ external: true,
63
+ }
64
+ })
65
+ },
66
+ },
67
+ alias({
68
+ ...aliases,
69
+ }),
70
+ ],
71
+ ...options,
72
+ }
73
+
74
+ return res
75
+ }
76
+
77
+ export async function bundle(props: Props, aliases?: Record<string, string>) {
78
+ await asyncLock(props)
79
+ return esbuild.build(getESBuildConfig(props, aliases))
80
+ }
81
+
82
+ export function bundleSync(props: Props, aliases?: Record<string, string>) {
83
+ return esbuild.buildSync(getESBuildConfig(props, aliases))
84
+ }
85
+
86
+ // until i do fancier things w plugins:
87
+ async function asyncLock(props: Props) {
88
+ const lockFile = join(dirname(props.outfile), basename(props.outfile, '.lock'))
89
+ const lockStat = await stat(lockFile).catch(() => {
90
+ /* ok */
91
+ })
92
+ const lockedMsAgo = !lockStat
93
+ ? Infinity
94
+ : new Date().getTime() - new Date(lockStat.mtime).getTime()
95
+ if (lockedMsAgo < 500) {
96
+ if (process.env.DEBUG?.startsWith('tamagui')) {
97
+ // eslint-disable-next-line no-console
98
+ console.log(`Waiting for existing build`, props.entryPoints)
99
+ }
100
+ let tries = 5
101
+ while (tries--) {
102
+ if (await pathExists(props.outfile)) {
103
+ return
104
+ } else {
105
+ await new Promise((res) => setTimeout(res, 50))
106
+ }
107
+ }
108
+ }
109
+ void writeFile(lockFile, '')
110
+ }
@@ -0,0 +1,73 @@
1
+ import vm from 'vm'
2
+
3
+ import generate from '@babel/generator'
4
+ import { NodePath } from '@babel/traverse'
5
+ import * as t from '@babel/types'
6
+ import { createCSSVariable } from '@tamagui/core-node'
7
+ import esbuild from 'esbuild'
8
+
9
+ import { FAILED_EVAL } from '../constants.js'
10
+ import { TamaguiOptionsWithFileInfo } from '../types.js'
11
+ import { evaluateAstNode } from './evaluateAstNode.js'
12
+ import { isValidThemeHook } from './extractHelpers.js'
13
+
14
+ export function createEvaluator({
15
+ props,
16
+ staticNamespace,
17
+ sourcePath,
18
+ traversePath,
19
+ shouldPrintDebug,
20
+ }: {
21
+ props: TamaguiOptionsWithFileInfo
22
+ staticNamespace: Record<string, any>
23
+ sourcePath: string
24
+ traversePath?: NodePath<t.JSXElement>
25
+ shouldPrintDebug: boolean | 'verbose'
26
+ }) {
27
+ // called when evaluateAstNode encounters a dynamic-looking prop
28
+ const evalFn = (n: t.Node) => {
29
+ // themes
30
+ if (
31
+ t.isMemberExpression(n) &&
32
+ t.isIdentifier(n.property) &&
33
+ traversePath &&
34
+ isValidThemeHook(props, traversePath, n, sourcePath)
35
+ ) {
36
+ const key = n.property.name
37
+ if (shouldPrintDebug) {
38
+ // eslint-disable-next-line no-console
39
+ console.log(' > found theme prop', key)
40
+ }
41
+ return createCSSVariable(key)
42
+ }
43
+ // variable
44
+ if (t.isIdentifier(n) && typeof staticNamespace[n.name] !== 'undefined') {
45
+ return staticNamespace[n.name]
46
+ }
47
+ const evalContext = vm.createContext(staticNamespace)
48
+ const codeWithTypescriptAnnotations = `(${generate(n as any).code})`
49
+ const code = esbuild
50
+ .transformSync(codeWithTypescriptAnnotations, { loader: 'tsx' })
51
+ .code.replace(/;\n$/, '')
52
+
53
+ if (shouldPrintDebug) {
54
+ // eslint-disable-next-line no-console
55
+ console.log('evaluating', code)
56
+ }
57
+ return vm.runInContext(code, evalContext)
58
+ }
59
+
60
+ return (n: t.Node) => {
61
+ return evaluateAstNode(n, evalFn)
62
+ }
63
+ }
64
+
65
+ export function createSafeEvaluator(attemptEval: (n: t.Node) => any) {
66
+ return (n: t.Node) => {
67
+ try {
68
+ return attemptEval(n)
69
+ } catch (err) {
70
+ return FAILED_EVAL
71
+ }
72
+ }
73
+ }