@hanzogui/static 8.3.1 → 8.3.2

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 (377) hide show
  1. package/dist/cjs/check-dep-versions.js +438 -0
  2. package/dist/cjs/check-dep-versions.js.map +1 -0
  3. package/dist/cjs/checkDeps.js +343 -0
  4. package/dist/cjs/checkDeps.js.map +1 -0
  5. package/dist/cjs/constants.js +13 -0
  6. package/dist/cjs/constants.js.map +1 -0
  7. package/dist/cjs/exports.js +27 -0
  8. package/dist/cjs/exports.js.map +1 -0
  9. package/dist/cjs/extractor/accessSafe.js +17 -0
  10. package/dist/cjs/extractor/accessSafe.js.map +1 -0
  11. package/dist/cjs/extractor/babelParse.js +27 -0
  12. package/dist/cjs/extractor/babelParse.js.map +1 -0
  13. package/dist/cjs/extractor/buildClassName.js +65 -0
  14. package/dist/cjs/extractor/buildClassName.js.map +1 -0
  15. package/dist/cjs/extractor/bundle.js +257 -0
  16. package/dist/cjs/extractor/bundle.js.map +1 -0
  17. package/dist/cjs/extractor/bundleConfig.js +794 -0
  18. package/dist/cjs/extractor/bundleConfig.js.map +1 -0
  19. package/dist/cjs/extractor/concatClassName.js +101 -0
  20. package/dist/cjs/extractor/concatClassName.js.map +1 -0
  21. package/dist/cjs/extractor/createEvaluator.js +56 -0
  22. package/dist/cjs/extractor/createEvaluator.js.map +1 -0
  23. package/dist/cjs/extractor/createExtractor.js +2285 -0
  24. package/dist/cjs/extractor/createExtractor.js.map +1 -0
  25. package/dist/cjs/extractor/createLogger.js +34 -0
  26. package/dist/cjs/extractor/createLogger.js.map +1 -0
  27. package/dist/cjs/extractor/detectModuleFormat.js +41 -0
  28. package/dist/cjs/extractor/detectModuleFormat.js.map +1 -0
  29. package/dist/cjs/extractor/ensureImportingConcat.js +23 -0
  30. package/dist/cjs/extractor/ensureImportingConcat.js.map +1 -0
  31. package/dist/cjs/extractor/errors.js +7 -0
  32. package/dist/cjs/extractor/errors.js.map +1 -0
  33. package/dist/cjs/extractor/esbuildAliasPlugin.js +43 -0
  34. package/dist/cjs/extractor/esbuildAliasPlugin.js.map +1 -0
  35. package/dist/cjs/extractor/esbuildTsconfigPaths.js +68 -0
  36. package/dist/cjs/extractor/esbuildTsconfigPaths.js.map +1 -0
  37. package/dist/cjs/extractor/evaluateAstNode.js +107 -0
  38. package/dist/cjs/extractor/evaluateAstNode.js.map +1 -0
  39. package/dist/cjs/extractor/extractHelpers.js +183 -0
  40. package/dist/cjs/extractor/extractHelpers.js.map +1 -0
  41. package/dist/cjs/extractor/extractMediaStyle.js +143 -0
  42. package/dist/cjs/extractor/extractMediaStyle.js.map +1 -0
  43. package/dist/cjs/extractor/extractToClassNames.js +541 -0
  44. package/dist/cjs/extractor/extractToClassNames.js.map +1 -0
  45. package/dist/cjs/extractor/extractToNative.js +404 -0
  46. package/dist/cjs/extractor/extractToNative.js.map +1 -0
  47. package/dist/cjs/extractor/extractablePath.js +89 -0
  48. package/dist/cjs/extractor/extractablePath.js.map +1 -0
  49. package/dist/cjs/extractor/findTopmostFunction.js +17 -0
  50. package/dist/cjs/extractor/findTopmostFunction.js.map +1 -0
  51. package/dist/cjs/extractor/generatedUid.js +35 -0
  52. package/dist/cjs/extractor/generatedUid.js.map +1 -0
  53. package/dist/cjs/extractor/getGuiConfigPathFromOptionsConfig.js +21 -0
  54. package/dist/cjs/extractor/getGuiConfigPathFromOptionsConfig.js.map +1 -0
  55. package/dist/cjs/extractor/getPrefixLogs.js +9 -0
  56. package/dist/cjs/extractor/getPrefixLogs.js.map +1 -0
  57. package/dist/cjs/extractor/getPropValueFromAttributes.js +75 -0
  58. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +1 -0
  59. package/dist/cjs/extractor/getSourceModule.js +81 -0
  60. package/dist/cjs/extractor/getSourceModule.js.map +1 -0
  61. package/dist/cjs/extractor/getStaticBindingsForScope.js +212 -0
  62. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +1 -0
  63. package/dist/cjs/extractor/hasTopLevelAwait.js +29 -0
  64. package/dist/cjs/extractor/hasTopLevelAwait.js.map +1 -0
  65. package/dist/cjs/extractor/hoistClassNames.js +47 -0
  66. package/dist/cjs/extractor/hoistClassNames.js.map +1 -0
  67. package/dist/cjs/extractor/literalToAst.js +83 -0
  68. package/dist/cjs/extractor/literalToAst.js.map +1 -0
  69. package/dist/cjs/extractor/loadFile.js +24 -0
  70. package/dist/cjs/extractor/loadFile.js.map +1 -0
  71. package/dist/cjs/extractor/loadGui.js +414 -0
  72. package/dist/cjs/extractor/loadGui.js.map +1 -0
  73. package/dist/cjs/extractor/logLines.js +20 -0
  74. package/dist/cjs/extractor/logLines.js.map +1 -0
  75. package/dist/cjs/extractor/normalizeTernaries.js +60 -0
  76. package/dist/cjs/extractor/normalizeTernaries.js.map +1 -0
  77. package/dist/cjs/extractor/propsToFontFamilyCache.js +20 -0
  78. package/dist/cjs/extractor/propsToFontFamilyCache.js.map +1 -0
  79. package/dist/cjs/extractor/regenerateConfig.js +151 -0
  80. package/dist/cjs/extractor/regenerateConfig.js.map +1 -0
  81. package/dist/cjs/extractor/removeUnusedHooks.js +84 -0
  82. package/dist/cjs/extractor/removeUnusedHooks.js.map +1 -0
  83. package/dist/cjs/extractor/timer.js +30 -0
  84. package/dist/cjs/extractor/timer.js.map +1 -0
  85. package/dist/cjs/extractor/validHTMLAttributes.js +56 -0
  86. package/dist/cjs/extractor/validHTMLAttributes.js.map +1 -0
  87. package/dist/cjs/extractor/watchGuiConfig.js +56 -0
  88. package/dist/cjs/extractor/watchGuiConfig.js.map +1 -0
  89. package/dist/cjs/getPragmaOptions.js +52 -0
  90. package/dist/cjs/getPragmaOptions.js.map +1 -0
  91. package/dist/cjs/helpers/memoize.js +24 -0
  92. package/dist/cjs/helpers/memoize.js.map +1 -0
  93. package/dist/cjs/helpers/nativeEntry.js +87 -0
  94. package/dist/cjs/helpers/nativeEntry.js.map +1 -0
  95. package/dist/cjs/helpers/requireGuiCore.js +25 -0
  96. package/dist/cjs/helpers/requireGuiCore.js.map +1 -0
  97. package/dist/cjs/here.js +8 -0
  98. package/dist/cjs/here.js.map +1 -0
  99. package/dist/cjs/index.js +8 -0
  100. package/dist/cjs/index.js.map +1 -0
  101. package/dist/cjs/package.json +1 -0
  102. package/dist/cjs/registerRequire.js +263 -0
  103. package/dist/cjs/registerRequire.js.map +1 -0
  104. package/dist/cjs/server.js +41 -0
  105. package/dist/cjs/server.js.map +1 -0
  106. package/dist/cjs/setup.js +2 -0
  107. package/dist/cjs/setup.js.map +1 -0
  108. package/dist/cjs/types.js +3 -0
  109. package/dist/cjs/types.js.map +1 -0
  110. package/dist/cjs/worker.js +95 -0
  111. package/dist/cjs/worker.js.map +1 -0
  112. package/dist/esm/check-dep-versions.js +433 -0
  113. package/dist/esm/check-dep-versions.js.map +1 -0
  114. package/dist/esm/checkDeps.js +339 -0
  115. package/dist/esm/checkDeps.js.map +1 -0
  116. package/dist/esm/constants.js +9 -0
  117. package/dist/esm/constants.js.map +1 -0
  118. package/dist/esm/exports.js +18 -0
  119. package/dist/esm/exports.js.map +1 -0
  120. package/dist/esm/extractor/accessSafe.js +13 -0
  121. package/dist/esm/extractor/accessSafe.js.map +1 -0
  122. package/dist/esm/extractor/babelParse.js +22 -0
  123. package/dist/esm/extractor/babelParse.js.map +1 -0
  124. package/dist/esm/extractor/buildClassName.js +59 -0
  125. package/dist/esm/extractor/buildClassName.js.map +1 -0
  126. package/dist/esm/extractor/bundle.js +252 -0
  127. package/dist/esm/extractor/bundle.js.map +1 -0
  128. package/dist/esm/extractor/bundleConfig.js +781 -0
  129. package/dist/esm/extractor/bundleConfig.js.map +1 -0
  130. package/dist/esm/extractor/concatClassName.js +98 -0
  131. package/dist/esm/extractor/concatClassName.js.map +1 -0
  132. package/dist/esm/extractor/createEvaluator.js +51 -0
  133. package/dist/esm/extractor/createEvaluator.js.map +1 -0
  134. package/dist/esm/extractor/createExtractor.js +2281 -0
  135. package/dist/esm/extractor/createExtractor.js.map +1 -0
  136. package/dist/esm/extractor/createLogger.js +31 -0
  137. package/dist/esm/extractor/createLogger.js.map +1 -0
  138. package/dist/esm/extractor/detectModuleFormat.js +37 -0
  139. package/dist/esm/extractor/detectModuleFormat.js.map +1 -0
  140. package/dist/esm/extractor/ensureImportingConcat.js +19 -0
  141. package/dist/esm/extractor/ensureImportingConcat.js.map +1 -0
  142. package/dist/esm/extractor/errors.js +3 -0
  143. package/dist/esm/extractor/errors.js.map +1 -0
  144. package/dist/esm/extractor/esbuildAliasPlugin.js +39 -0
  145. package/dist/esm/extractor/esbuildAliasPlugin.js.map +1 -0
  146. package/dist/esm/extractor/esbuildTsconfigPaths.js +63 -0
  147. package/dist/esm/extractor/esbuildTsconfigPaths.js.map +1 -0
  148. package/dist/esm/extractor/evaluateAstNode.js +103 -0
  149. package/dist/esm/extractor/evaluateAstNode.js.map +1 -0
  150. package/dist/esm/extractor/extractHelpers.js +166 -0
  151. package/dist/esm/extractor/extractHelpers.js.map +1 -0
  152. package/dist/esm/extractor/extractMediaStyle.js +138 -0
  153. package/dist/esm/extractor/extractMediaStyle.js.map +1 -0
  154. package/dist/esm/extractor/extractToClassNames.js +537 -0
  155. package/dist/esm/extractor/extractToClassNames.js.map +1 -0
  156. package/dist/esm/extractor/extractToNative.js +398 -0
  157. package/dist/esm/extractor/extractToNative.js.map +1 -0
  158. package/dist/esm/extractor/extractablePath.js +84 -0
  159. package/dist/esm/extractor/extractablePath.js.map +1 -0
  160. package/dist/esm/extractor/findTopmostFunction.js +14 -0
  161. package/dist/esm/extractor/findTopmostFunction.js.map +1 -0
  162. package/dist/esm/extractor/generatedUid.js +31 -0
  163. package/dist/esm/extractor/generatedUid.js.map +1 -0
  164. package/dist/esm/extractor/getGuiConfigPathFromOptionsConfig.js +18 -0
  165. package/dist/esm/extractor/getGuiConfigPathFromOptionsConfig.js.map +1 -0
  166. package/dist/esm/extractor/getPrefixLogs.js +6 -0
  167. package/dist/esm/extractor/getPrefixLogs.js.map +1 -0
  168. package/dist/esm/extractor/getPropValueFromAttributes.js +71 -0
  169. package/dist/esm/extractor/getPropValueFromAttributes.js.map +1 -0
  170. package/dist/esm/extractor/getSourceModule.js +77 -0
  171. package/dist/esm/extractor/getSourceModule.js.map +1 -0
  172. package/dist/esm/extractor/getStaticBindingsForScope.js +207 -0
  173. package/dist/esm/extractor/getStaticBindingsForScope.js.map +1 -0
  174. package/dist/esm/extractor/hasTopLevelAwait.js +25 -0
  175. package/dist/esm/extractor/hasTopLevelAwait.js.map +1 -0
  176. package/dist/esm/extractor/hoistClassNames.js +43 -0
  177. package/dist/esm/extractor/hoistClassNames.js.map +1 -0
  178. package/dist/esm/extractor/literalToAst.js +78 -0
  179. package/dist/esm/extractor/literalToAst.js.map +1 -0
  180. package/dist/esm/extractor/loadFile.js +22 -0
  181. package/dist/esm/extractor/loadFile.js.map +1 -0
  182. package/dist/esm/extractor/loadGui.js +402 -0
  183. package/dist/esm/extractor/loadGui.js.map +1 -0
  184. package/dist/esm/extractor/logLines.js +16 -0
  185. package/dist/esm/extractor/logLines.js.map +1 -0
  186. package/dist/esm/extractor/normalizeTernaries.js +56 -0
  187. package/dist/esm/extractor/normalizeTernaries.js.map +1 -0
  188. package/dist/esm/extractor/propsToFontFamilyCache.js +15 -0
  189. package/dist/esm/extractor/propsToFontFamilyCache.js.map +1 -0
  190. package/dist/esm/extractor/regenerateConfig.js +145 -0
  191. package/dist/esm/extractor/regenerateConfig.js.map +1 -0
  192. package/dist/esm/extractor/removeUnusedHooks.js +80 -0
  193. package/dist/esm/extractor/removeUnusedHooks.js.map +1 -0
  194. package/dist/esm/extractor/timer.js +26 -0
  195. package/dist/esm/extractor/timer.js.map +1 -0
  196. package/dist/esm/extractor/validHTMLAttributes.js +53 -0
  197. package/dist/esm/extractor/validHTMLAttributes.js.map +1 -0
  198. package/dist/esm/extractor/watchGuiConfig.js +53 -0
  199. package/dist/esm/extractor/watchGuiConfig.js.map +1 -0
  200. package/dist/esm/getPragmaOptions.js +49 -0
  201. package/dist/esm/getPragmaOptions.js.map +1 -0
  202. package/dist/esm/helpers/memoize.js +21 -0
  203. package/dist/esm/helpers/memoize.js.map +1 -0
  204. package/dist/esm/helpers/nativeEntry.js +82 -0
  205. package/dist/esm/helpers/nativeEntry.js.map +1 -0
  206. package/dist/esm/helpers/requireGuiCore.js +22 -0
  207. package/dist/esm/helpers/requireGuiCore.js.map +1 -0
  208. package/dist/esm/here.js +7 -0
  209. package/dist/esm/here.js.map +1 -0
  210. package/dist/esm/index.js +5 -0
  211. package/dist/esm/index.js.map +1 -0
  212. package/dist/esm/registerRequire.js +256 -0
  213. package/dist/esm/registerRequire.js.map +1 -0
  214. package/dist/esm/server.js +37 -0
  215. package/dist/esm/server.js.map +1 -0
  216. package/dist/esm/setup.js +2 -0
  217. package/dist/esm/setup.js.map +1 -0
  218. package/dist/esm/types.js +2 -0
  219. package/dist/esm/types.js.map +1 -0
  220. package/dist/esm/worker.js +92 -0
  221. package/dist/esm/worker.js.map +1 -0
  222. package/package.json +82 -56
  223. package/src/check-dep-versions.ts +2 -1
  224. package/src/checkDeps.ts +1 -1
  225. package/src/exports.ts +17 -17
  226. package/src/extractor/babelParse.ts +2 -11
  227. package/src/extractor/buildClassName.ts +1 -1
  228. package/src/extractor/bundle.ts +13 -9
  229. package/src/extractor/bundleConfig.ts +25 -21
  230. package/src/extractor/createEvaluator.ts +3 -3
  231. package/src/extractor/createExtractor.ts +59 -77
  232. package/src/extractor/createLogger.ts +2 -2
  233. package/src/extractor/esbuildTsconfigPaths.ts +55 -120
  234. package/src/extractor/evaluateAstNode.ts +2 -2
  235. package/src/extractor/extractHelpers.ts +3 -3
  236. package/src/extractor/extractMediaStyle.ts +3 -3
  237. package/src/extractor/extractToClassNames.ts +12 -12
  238. package/src/extractor/extractToNative.ts +20 -22
  239. package/src/extractor/findTopmostFunction.ts +5 -13
  240. package/src/extractor/getGuiConfigPathFromOptionsConfig.ts +1 -1
  241. package/src/extractor/getPrefixLogs.ts +1 -1
  242. package/src/extractor/getPropValueFromAttributes.ts +2 -2
  243. package/src/extractor/getStaticBindingsForScope.ts +6 -6
  244. package/src/extractor/hasTopLevelAwait.ts +1 -1
  245. package/src/extractor/literalToAst.ts +2 -2
  246. package/src/extractor/loadFile.ts +6 -1
  247. package/src/extractor/loadGui.ts +16 -12
  248. package/src/extractor/normalizeTernaries.ts +3 -3
  249. package/src/extractor/regenerateConfig.ts +10 -6
  250. package/src/extractor/watchGuiConfig.ts +7 -3
  251. package/src/helpers/nativeEntry.ts +92 -0
  252. package/src/helpers/requireGuiCore.ts +8 -3
  253. package/src/here.cjs.ts +6 -0
  254. package/src/here.ts +8 -0
  255. package/src/index.ts +2 -2
  256. package/src/registerRequire.ts +30 -14
  257. package/src/server.ts +1 -1
  258. package/src/types.ts +1 -1
  259. package/src/worker.ts +7 -7
  260. package/types/check-dep-versions.d.ts.map +1 -1
  261. package/types/constants.d.ts +1 -1
  262. package/types/constants.d.ts.map +1 -1
  263. package/types/exports.d.ts +17 -17
  264. package/types/exports.d.ts.map +1 -1
  265. package/types/extractor/babelParse.d.ts.map +1 -1
  266. package/types/extractor/buildClassName.d.ts +1 -1
  267. package/types/extractor/buildClassName.d.ts.map +1 -1
  268. package/types/extractor/bundle.d.ts +66 -66
  269. package/types/extractor/bundle.d.ts.map +1 -1
  270. package/types/extractor/bundleConfig.d.ts +2 -2
  271. package/types/extractor/bundleConfig.d.ts.map +1 -1
  272. package/types/extractor/createEvaluator.d.ts +1 -1
  273. package/types/extractor/createEvaluator.d.ts.map +1 -1
  274. package/types/extractor/createExtractor.d.ts +4 -4
  275. package/types/extractor/createExtractor.d.ts.map +1 -1
  276. package/types/extractor/createLogger.d.ts +1 -1
  277. package/types/extractor/createLogger.d.ts.map +1 -1
  278. package/types/extractor/esbuildAliasPlugin.d.ts.map +1 -1
  279. package/types/extractor/esbuildTsconfigPaths.d.ts +4 -9
  280. package/types/extractor/esbuildTsconfigPaths.d.ts.map +1 -1
  281. package/types/extractor/extractHelpers.d.ts +1 -1
  282. package/types/extractor/extractHelpers.d.ts.map +1 -1
  283. package/types/extractor/extractMediaStyle.d.ts +2 -3
  284. package/types/extractor/extractMediaStyle.d.ts.map +1 -1
  285. package/types/extractor/extractToClassNames.d.ts +2 -2
  286. package/types/extractor/extractToClassNames.d.ts.map +1 -1
  287. package/types/extractor/extractToNative.d.ts +4 -4
  288. package/types/extractor/extractToNative.d.ts.map +1 -1
  289. package/types/extractor/findTopmostFunction.d.ts +1 -1
  290. package/types/extractor/findTopmostFunction.d.ts.map +1 -1
  291. package/types/extractor/getGuiConfigPathFromOptionsConfig.d.ts +1 -1
  292. package/types/extractor/getGuiConfigPathFromOptionsConfig.d.ts.map +1 -1
  293. package/types/extractor/getPrefixLogs.d.ts +1 -1
  294. package/types/extractor/getPrefixLogs.d.ts.map +1 -1
  295. package/types/extractor/loadFile.d.ts +1 -0
  296. package/types/extractor/loadGui.d.ts +1 -1
  297. package/types/extractor/loadGui.d.ts.map +1 -1
  298. package/types/extractor/logLines.d.ts.map +1 -1
  299. package/types/extractor/normalizeTernaries.d.ts +1 -1
  300. package/types/extractor/normalizeTernaries.d.ts.map +1 -1
  301. package/types/extractor/regenerateConfig.d.ts +1 -1
  302. package/types/extractor/regenerateConfig.d.ts.map +1 -1
  303. package/types/extractor/timer.d.ts.map +1 -1
  304. package/types/extractor/validHTMLAttributes.d.ts.map +1 -1
  305. package/types/extractor/watchGuiConfig.d.ts.map +1 -1
  306. package/types/getPragmaOptions.d.ts +1 -1
  307. package/types/helpers/memoize.d.ts +1 -1
  308. package/types/helpers/memoize.d.ts.map +1 -1
  309. package/types/helpers/nativeEntry.d.ts +16 -0
  310. package/types/helpers/nativeEntry.d.ts.map +1 -0
  311. package/types/helpers/requireGuiCore.d.ts +1 -1
  312. package/types/helpers/requireGuiCore.d.ts.map +1 -1
  313. package/types/here.d.ts +3 -0
  314. package/types/here.d.ts.map +1 -0
  315. package/types/index.d.ts +2 -2
  316. package/types/index.d.ts.map +1 -1
  317. package/types/registerRequire.d.ts +1 -1
  318. package/types/registerRequire.d.ts.map +1 -1
  319. package/types/server.d.ts +1 -1
  320. package/types/server.d.ts.map +1 -1
  321. package/types/types.d.ts +1 -1
  322. package/types/types.d.ts.map +1 -1
  323. package/types/worker.d.ts +4 -4
  324. package/types/worker.d.ts.map +1 -1
  325. package/dist/check-dep-versions.cjs +0 -372
  326. package/dist/checkDeps.cjs +0 -271
  327. package/dist/constants.cjs +0 -51
  328. package/dist/exports.cjs +0 -49
  329. package/dist/extractor/accessSafe.cjs +0 -48
  330. package/dist/extractor/babelParse.cjs +0 -56
  331. package/dist/extractor/buildClassName.cjs +0 -86
  332. package/dist/extractor/bundle.cjs +0 -234
  333. package/dist/extractor/bundleConfig.cjs +0 -729
  334. package/dist/extractor/concatClassName.cjs +0 -121
  335. package/dist/extractor/createEvaluator.cjs +0 -88
  336. package/dist/extractor/createExtractor.cjs +0 -1935
  337. package/dist/extractor/createLogger.cjs +0 -50
  338. package/dist/extractor/detectModuleFormat.cjs +0 -55
  339. package/dist/extractor/ensureImportingConcat.cjs +0 -54
  340. package/dist/extractor/errors.cjs +0 -28
  341. package/dist/extractor/esbuildAliasPlugin.cjs +0 -56
  342. package/dist/extractor/esbuildTsconfigPaths.cjs +0 -126
  343. package/dist/extractor/evaluateAstNode.cjs +0 -128
  344. package/dist/extractor/extractHelpers.cjs +0 -182
  345. package/dist/extractor/extractMediaStyle.cjs +0 -169
  346. package/dist/extractor/extractToClassNames.cjs +0 -476
  347. package/dist/extractor/extractToNative.cjs +0 -369
  348. package/dist/extractor/extractablePath.cjs +0 -51
  349. package/dist/extractor/findTopmostFunction.cjs +0 -43
  350. package/dist/extractor/generatedUid.cjs +0 -58
  351. package/dist/extractor/getGuiConfigPathFromOptionsConfig.cjs +0 -41
  352. package/dist/extractor/getPrefixLogs.cjs +0 -31
  353. package/dist/extractor/getPropValueFromAttributes.cjs +0 -85
  354. package/dist/extractor/getSourceModule.cjs +0 -100
  355. package/dist/extractor/getStaticBindingsForScope.cjs +0 -213
  356. package/dist/extractor/hasTopLevelAwait.cjs +0 -62
  357. package/dist/extractor/hoistClassNames.cjs +0 -76
  358. package/dist/extractor/literalToAst.cjs +0 -109
  359. package/dist/extractor/loadFile.cjs +0 -17
  360. package/dist/extractor/loadGui.cjs +0 -373
  361. package/dist/extractor/logLines.cjs +0 -43
  362. package/dist/extractor/normalizeTernaries.cjs +0 -95
  363. package/dist/extractor/propsToFontFamilyCache.cjs +0 -42
  364. package/dist/extractor/regenerateConfig.cjs +0 -178
  365. package/dist/extractor/removeUnusedHooks.cjs +0 -108
  366. package/dist/extractor/timer.cjs +0 -52
  367. package/dist/extractor/validHTMLAttributes.cjs +0 -79
  368. package/dist/extractor/watchGuiConfig.cjs +0 -70
  369. package/dist/getPragmaOptions.cjs +0 -73
  370. package/dist/helpers/memoize.cjs +0 -45
  371. package/dist/helpers/requireGuiCore.cjs +0 -40
  372. package/dist/index.cjs +0 -42
  373. package/dist/registerRequire.cjs +0 -209
  374. package/dist/server.cjs +0 -82
  375. package/dist/setup.cjs +0 -0
  376. package/dist/types.cjs +0 -18
  377. package/dist/worker.cjs +0 -111
@@ -0,0 +1,781 @@
1
+ import generate from '@babel/generator';
2
+ import traverse from '@babel/traverse';
3
+ import * as t from '@babel/types';
4
+ import { createHash } from 'node:crypto';
5
+ import { existsSync, readFileSync, unlinkSync } from 'node:fs';
6
+ import { basename, dirname, extname, join, relative, sep } from 'node:path';
7
+ import { createRequire } from 'node:module';
8
+ import { load, url } from '../here.js';
9
+ const need = createRequire(url);
10
+ // @ts-ignore why
11
+ import { Color, colorLog } from '@hanzogui/cli-color';
12
+ import esbuild from 'esbuild';
13
+ import FS from 'fs-extra';
14
+ import { readFile } from 'node:fs/promises';
15
+ import { registerRequire, setRequireResult } from '../registerRequire.js';
16
+ import { babelParse } from './babelParse.js';
17
+ import { esbuildLoaderConfig, esbundleGuiConfig } from './bundle.js';
18
+ import { getGuiConfigPathFromOptionsConfig } from './getGuiConfigPathFromOptionsConfig.js';
19
+ import { hasTopLevelAwait } from './hasTopLevelAwait.js';
20
+ import { requireGuiCore } from '../helpers/requireGuiCore.js';
21
+ import { detectModuleFormat } from './detectModuleFormat.js';
22
+ // track temp files for cleanup on exit
23
+ const activeTempFiles = new Set();
24
+ function getDynamicEvalOutfile(name, format, contents) {
25
+ const ext = format === 'esm' ? 'mjs' : 'cjs';
26
+ const hash = createHash('sha1')
27
+ .update(name)
28
+ .update('\0')
29
+ .update(format)
30
+ .update('\0')
31
+ .update(contents)
32
+ .digest('hex')
33
+ .slice(0, 10);
34
+ return join(process.cwd(), '.hanzogui', `dynamic-eval-${hash}-${basename(name)}.${ext}`);
35
+ }
36
+ function getEsbuildStdinLoader(filePath) {
37
+ if (filePath.endsWith('.tsx'))
38
+ return 'tsx';
39
+ if (filePath.endsWith('.ts'))
40
+ return 'ts';
41
+ if (filePath.endsWith('.jsx'))
42
+ return 'jsx';
43
+ return 'js';
44
+ }
45
+ function resolvePackageEntry(packageName, format) {
46
+ if (format === 'cjs') {
47
+ return need.resolve(packageName);
48
+ }
49
+ const packageJsonPath = need.resolve(`${packageName}/package.json`);
50
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
51
+ const packageRoot = dirname(packageJsonPath);
52
+ const exportEntry = packageJson.exports?.['.'];
53
+ const esmEntry = exportEntry?.import ||
54
+ exportEntry?.module ||
55
+ exportEntry?.browser ||
56
+ packageJson.module;
57
+ if (typeof esmEntry === 'string') {
58
+ return join(packageRoot, esmEntry);
59
+ }
60
+ return need.resolve(packageName);
61
+ }
62
+ function cleanupTempFiles() {
63
+ for (const f of activeTempFiles) {
64
+ try {
65
+ unlinkSync(f);
66
+ }
67
+ catch { }
68
+ }
69
+ activeTempFiles.clear();
70
+ }
71
+ process.on('exit', cleanupTempFiles);
72
+ process.on('SIGINT', () => {
73
+ cleanupTempFiles();
74
+ process.exit();
75
+ });
76
+ process.on('SIGTERM', () => {
77
+ cleanupTempFiles();
78
+ process.exit();
79
+ });
80
+ const external = [
81
+ '@hanzogui/core',
82
+ '@hanzogui/web',
83
+ 'react',
84
+ 'react-dom',
85
+ 'react-native-svg',
86
+ ];
87
+ const esbuildExtraOptions = {
88
+ define: {
89
+ __DEV__: `${process.env.NODE_ENV === 'development'}`,
90
+ },
91
+ };
92
+ // plugin to handle ESM-only features when bundling to CJS
93
+ const handleEsmFeaturesPlugin = {
94
+ name: 'handle-esm-features',
95
+ setup(build) {
96
+ // only apply transforms for CJS output - ESM supports these natively
97
+ const isCjs = build.initialOptions.format === 'cjs' || !build.initialOptions.format;
98
+ build.onLoad({ filter: /\.(ts|tsx|js|jsx|mjs)$/ }, (args) => {
99
+ // skip if ESM output - import.meta and top-level await work natively
100
+ if (!isCjs) {
101
+ return null;
102
+ }
103
+ // skip most node_modules
104
+ if (args.path.includes('node_modules') && !args.path.includes('@hanzogui')) {
105
+ return null;
106
+ }
107
+ let contents = readFileSync(args.path, 'utf8');
108
+ let modified = false;
109
+ // transform import.meta.env -> process.env (Vite-style env vars)
110
+ if (contents.includes('import.meta.env')) {
111
+ contents = contents.replace(/import\.meta\.env/g, 'process.env');
112
+ modified = true;
113
+ }
114
+ // transform import.meta.url -> "" (not needed for static extraction)
115
+ if (contents.includes('import.meta.url')) {
116
+ contents = contents.replace(/import\.meta\.url/g, '""');
117
+ modified = true;
118
+ }
119
+ // transform import.meta.main -> false
120
+ if (contents.includes('import.meta.main')) {
121
+ contents = contents.replace(/import\.meta\.main/g, 'false');
122
+ modified = true;
123
+ }
124
+ // stub files with top-level await - they're typically runtime-only
125
+ if (hasTopLevelAwait(contents, args.path)) {
126
+ if (process.env.DEBUG?.startsWith('hanzogui')) {
127
+ console.info(`[hanzogui] stubbing file with top-level await: ${args.path}`);
128
+ }
129
+ return {
130
+ // Keep this as an ESM-shaped stub so esbuild doesn't inline a top-level
131
+ // `module.exports = {}` into the parent bundle and wipe its exports.
132
+ contents: `// stubbed - contains top-level await\nexport default {}`,
133
+ loader: 'js',
134
+ };
135
+ }
136
+ if (modified) {
137
+ return {
138
+ contents,
139
+ loader: args.path.endsWith('.tsx')
140
+ ? 'tsx'
141
+ : args.path.endsWith('.ts')
142
+ ? 'ts'
143
+ : args.path.endsWith('.jsx')
144
+ ? 'jsx'
145
+ : 'js',
146
+ };
147
+ }
148
+ return null;
149
+ });
150
+ },
151
+ };
152
+ // base options for transformSync (no plugins)
153
+ const esbuildTransformOptions = {
154
+ target: 'es2022',
155
+ format: 'cjs',
156
+ jsx: 'automatic',
157
+ platform: 'node',
158
+ ...esbuildExtraOptions,
159
+ };
160
+ // options for buildSync - NO plugins (buildSync doesn't support plugins)
161
+ export const esbuildOptions = {
162
+ ...esbuildTransformOptions,
163
+ };
164
+ // options for async build (with plugins)
165
+ export const esbuildOptionsWithPlugins = {
166
+ ...esbuildTransformOptions,
167
+ plugins: [handleEsmFeaturesPlugin],
168
+ };
169
+ // will use cached one if watching
170
+ let currentBundle = null;
171
+ let currentBundleKey = '';
172
+ let isBundling = false;
173
+ let lastBundle = null;
174
+ const waitForBundle = new Set();
175
+ export function hasBundledConfigChanged() {
176
+ if (lastBundle === currentBundle) {
177
+ return false;
178
+ }
179
+ lastBundle = currentBundle;
180
+ return true;
181
+ }
182
+ let loadedConfig = null;
183
+ export const getLoadedConfig = () => loadedConfig;
184
+ function getBundleKey(props) {
185
+ return JSON.stringify({
186
+ components: props.components,
187
+ config: props.config,
188
+ platform: props.platform,
189
+ });
190
+ }
191
+ export async function getBundledConfig(props, rebuild = false) {
192
+ const bundleKey = getBundleKey(props);
193
+ if (isBundling) {
194
+ await new Promise((res) => {
195
+ waitForBundle.add(res);
196
+ });
197
+ }
198
+ if (!currentBundle || currentBundleKey !== bundleKey || rebuild) {
199
+ return await bundleConfig(props);
200
+ }
201
+ return currentBundle;
202
+ }
203
+ global.hanzoguiLastLoaded || (global.hanzoguiLastLoaded = 0);
204
+ function updateLastLoaded(config, bundleKey) {
205
+ global.hanzoguiLastLoaded = Date.now();
206
+ global.hanzoguiLastBundledConfig = config;
207
+ global.hanzoguiLastBundledConfigKey = bundleKey;
208
+ }
209
+ let hasBundledOnce = false;
210
+ // use global to dedupe logging - this works within a single process
211
+ // but may log multiple times if worker threads are recreated
212
+ // that's acceptable - better than nothing
213
+ let hasLoggedBuild = false;
214
+ export async function bundleConfig(props) {
215
+ const bundleKey = getBundleKey(props);
216
+ // webpack is calling this a ton for no reason
217
+ if (global.hanzoguiLastBundledConfig &&
218
+ global.hanzoguiLastBundledConfigKey === bundleKey &&
219
+ Date.now() - global.hanzoguiLastLoaded < 3000) {
220
+ // just loaded recently
221
+ return global.hanzoguiLastBundledConfig;
222
+ }
223
+ try {
224
+ isBundling = true;
225
+ const configEntry = props.config
226
+ ? getGuiConfigPathFromOptionsConfig(props.config)
227
+ : '';
228
+ const tmpDir = join(process.cwd(), '.hanzogui');
229
+ // detect module format from config entry point
230
+ const configFormat = configEntry ? detectModuleFormat(configEntry) : 'cjs';
231
+ const configExt = configFormat === 'esm' ? '.mjs' : '.cjs';
232
+ const configOutPath = join(tmpDir, `hanzogui.config${configExt}`);
233
+ const baseComponents = (props.components || []).filter((x) => x !== '@hanzogui/core');
234
+ // detect format per component module
235
+ const componentFormats = baseComponents.map((mod) => {
236
+ try {
237
+ const pkgJson = need.resolve(mod + '/package.json');
238
+ const pkg = JSON.parse(readFileSync(pkgJson, 'utf-8'));
239
+ return pkg.type === 'module' ? 'esm' : 'cjs';
240
+ }
241
+ catch {
242
+ return 'cjs';
243
+ }
244
+ });
245
+ const componentOutPaths = baseComponents.map((componentModule, i) => {
246
+ const ext = componentFormats[i] === 'esm' ? '.mjs' : '.cjs';
247
+ return join(tmpDir, `${componentModule
248
+ .split(sep)
249
+ .join('-')
250
+ .replace(/[^a-z0-9]+/gi, '')}-components.config${ext}`);
251
+ });
252
+ if (process.env.NODE_ENV === 'development' &&
253
+ process.env.DEBUG?.startsWith('hanzogui')) {
254
+ console.info(`Building config entry`, configEntry);
255
+ }
256
+ // check if ALL output files (config + components) already exist and are recent
257
+ // (built by another worker) - this prevents duplicate builds across worker threads
258
+ // we must check ALL files, not just the config, to avoid a race where another
259
+ // worker has written the config but not yet finished writing component files
260
+ let shouldBuild = !props.disableInitialBuild;
261
+ if (shouldBuild && props.config) {
262
+ const allOutFiles = [configOutPath, ...componentOutPaths];
263
+ try {
264
+ const stats = await Promise.all(allOutFiles.map((f) => FS.stat(f).catch(() => null)));
265
+ const allExistAndRecent = stats.every((s) => s !== null && Date.now() - s.mtimeMs < 3000);
266
+ if (allExistAndRecent) {
267
+ shouldBuild = false;
268
+ }
269
+ }
270
+ catch {
271
+ // something went wrong checking files, just build
272
+ }
273
+ }
274
+ if (shouldBuild) {
275
+ // build them to node-compat versions
276
+ try {
277
+ await FS.ensureDir(tmpDir);
278
+ }
279
+ catch {
280
+ //
281
+ }
282
+ const start = Date.now();
283
+ await Promise.all([
284
+ props.config
285
+ ? esbundleGuiConfig({
286
+ entryPoints: [configEntry],
287
+ external,
288
+ outfile: configOutPath,
289
+ target: 'node24',
290
+ format: configFormat,
291
+ ...esbuildExtraOptions,
292
+ }, props.platform || 'web')
293
+ : null,
294
+ ...baseComponents.map((componentModule, i) => {
295
+ return esbundleGuiConfig({
296
+ entryPoints: [componentModule],
297
+ resolvePlatformSpecificEntries: true,
298
+ external,
299
+ outfile: componentOutPaths[i],
300
+ target: 'node24',
301
+ format: componentFormats[i],
302
+ ...esbuildExtraOptions,
303
+ }, props.platform || 'web');
304
+ }),
305
+ ]);
306
+ // only log once per process to avoid duplicate messages
307
+ // also skip if _skipBuildLog is set (used during worker recycle warmup)
308
+ if (!hasLoggedBuild && !props['_skipBuildLog']) {
309
+ hasLoggedBuild = true;
310
+ colorLog(Color.FgYellow, `
311
+ ➡ [hanzogui] built config, components, prompt (${Date.now() - start}ms)`);
312
+ if (process.env.DEBUG?.startsWith('hanzogui')) {
313
+ colorLog(Color.Dim, `
314
+ Config .${sep}${relative(process.cwd(), configOutPath)}
315
+ Components ${componentOutPaths.map((p) => `.${sep}${relative(process.cwd(), p)}`).join('\n ')}
316
+ `);
317
+ }
318
+ }
319
+ }
320
+ // clear specific output file caches so we pick up the fresh (or newly discovered) build
321
+ // only clear the built output files - not all require.cache entries, since that breaks
322
+ // external requires like @hanzogui/config/v3 that are externalized in the bundled CJS
323
+ if (hasBundledOnce) {
324
+ try {
325
+ delete need.cache[need.resolve(configOutPath)];
326
+ }
327
+ catch {
328
+ // file may not exist yet
329
+ }
330
+ for (const p of componentOutPaths) {
331
+ try {
332
+ delete need.cache[need.resolve(p)];
333
+ }
334
+ catch {
335
+ // file may not exist yet
336
+ }
337
+ }
338
+ }
339
+ else {
340
+ hasBundledOnce = true;
341
+ }
342
+ let out;
343
+ if (configFormat === 'esm') {
344
+ // use file:// URL for proper ESM resolution
345
+ out = await load(configOutPath);
346
+ }
347
+ else {
348
+ out = need(configOutPath);
349
+ }
350
+ // try and find .config, even if on .default
351
+ let config = out.default || out || out.config;
352
+ if (config && config.config && !config.tokens) {
353
+ config = config.config;
354
+ }
355
+ if (!config) {
356
+ throw new Error(`No config: ${config}`);
357
+ }
358
+ // check for ProxyWorm - indicates a module loading error
359
+ if (config._isProxyWorm) {
360
+ throw new Error(`Got a proxied config - likely a module loading error. Set DEBUG=hanzogui for details.`);
361
+ }
362
+ loadedConfig = config;
363
+ if (!config.parsed) {
364
+ const { createGui } = requireGuiCore(props.platform || 'web');
365
+ // need to create it
366
+ config = createGui(config);
367
+ }
368
+ if (props.outputCSS) {
369
+ await writeGuiCSS(props.outputCSS, config);
370
+ }
371
+ let components = await loadComponents({
372
+ ...props,
373
+ components: componentOutPaths,
374
+ });
375
+ if (!components) {
376
+ throw new Error(`No components found: ${componentOutPaths.join(', ')}`);
377
+ }
378
+ // map from built back to original module names
379
+ for (const component of components) {
380
+ component.moduleName =
381
+ baseComponents[componentOutPaths.indexOf(component.moduleName)] ||
382
+ component.moduleName;
383
+ if (!component.moduleName) {
384
+ if (process.env.DEBUG?.includes('hanzogui') || process.env.IS_GUI_DEV) {
385
+ console.warn(`⚠️ no module name found: ${component.moduleName} ${JSON.stringify(baseComponents)} in ${JSON.stringify(componentOutPaths)}`);
386
+ }
387
+ }
388
+ }
389
+ if (process.env.NODE_ENV === 'development' &&
390
+ process.env.DEBUG?.startsWith('hanzogui')) {
391
+ console.info('Loaded components', components);
392
+ }
393
+ const res = {
394
+ components,
395
+ nameToPaths: {},
396
+ hanzoguiConfig: config,
397
+ };
398
+ currentBundle = res;
399
+ currentBundleKey = bundleKey;
400
+ updateLastLoaded(res, bundleKey);
401
+ return res;
402
+ }
403
+ catch (err) {
404
+ console.error(`Error bundling hanzogui config: ${err?.message} (run with DEBUG=hanzogui to see stack)`);
405
+ if (process.env.DEBUG?.includes('hanzogui')) {
406
+ console.error(err.stack);
407
+ }
408
+ }
409
+ finally {
410
+ isBundling = false;
411
+ waitForBundle.forEach((cb) => cb());
412
+ waitForBundle.clear();
413
+ }
414
+ }
415
+ export async function writeGuiCSS(outputCSS, config) {
416
+ const flush = async () => {
417
+ colorLog(Color.FgYellow, ` ➡ [hanzogui] output css: ${outputCSS}`);
418
+ await FS.writeFile(outputCSS, css);
419
+ };
420
+ const css = config.getCSS();
421
+ if (typeof css !== 'string') {
422
+ throw new Error(`Invalid CSS: ${typeof css} ${css}`);
423
+ }
424
+ try {
425
+ if (existsSync(outputCSS) && (await readFile(outputCSS, 'utf8')) === css) {
426
+ // no change
427
+ }
428
+ else {
429
+ await flush();
430
+ }
431
+ }
432
+ catch (err) {
433
+ console.info('Error writing themes', err);
434
+ }
435
+ }
436
+ export async function loadComponents(props, forceExports = false) {
437
+ const coreComponents = getCoreComponentsSync(props);
438
+ const otherComponents = await loadComponentsInner(props, forceExports);
439
+ return [...coreComponents, ...(otherComponents || [])];
440
+ }
441
+ export function loadComponentsSync(props, forceExports = false) {
442
+ const coreComponents = getCoreComponentsSync(props);
443
+ const otherComponents = loadComponentsInnerSync(props, forceExports);
444
+ return [...coreComponents, ...(otherComponents || [])];
445
+ }
446
+ function getCoreComponentsSync(props) {
447
+ const loaded = loadComponentsInnerSync({
448
+ ...props,
449
+ components: ['@hanzogui/core'],
450
+ });
451
+ if (!loaded) {
452
+ throw new Error(`Core should always load`);
453
+ }
454
+ // always load core so we can optimize if directly importing
455
+ return [
456
+ {
457
+ ...loaded[0],
458
+ moduleName: '@hanzogui/core',
459
+ },
460
+ ];
461
+ }
462
+ export async function loadComponentsInner(props, forceExports = false) {
463
+ const componentsModules = props.components || [];
464
+ const key = componentsModules.join('\0');
465
+ if (!forceExports && cacheComponents[key]) {
466
+ return cacheComponents[key];
467
+ }
468
+ const { unregister } = registerRequire(props.platform || 'web', {
469
+ proxyWormImports: forceExports,
470
+ });
471
+ try {
472
+ const results = [];
473
+ for (const name of componentsModules) {
474
+ const extension = extname(name);
475
+ const isLocal = Boolean(extension);
476
+ const isDynamic = isLocal && forceExports;
477
+ const format = isLocal ? detectModuleFormat(name) : 'cjs';
478
+ const fileContents = isDynamic ? readFileSync(name, 'utf-8') : '';
479
+ let loadModule = name;
480
+ let writtenContents = fileContents;
481
+ let didBabel = false;
482
+ const attemptLoad = async ({ forceExports = false } = {}) => {
483
+ if (isDynamic) {
484
+ writtenContents = forceExports
485
+ ? transformAddExports(babelParse(esbuildit(fileContents, 'modern'), name))
486
+ : fileContents;
487
+ loadModule = getDynamicEvalOutfile(name, format, writtenContents);
488
+ FS.ensureDirSync(dirname(loadModule));
489
+ activeTempFiles.add(loadModule);
490
+ await esbuild.build({
491
+ ...esbuildOptionsWithPlugins,
492
+ format,
493
+ outfile: loadModule,
494
+ stdin: {
495
+ contents: writtenContents,
496
+ resolveDir: dirname(name),
497
+ sourcefile: name,
498
+ loader: getEsbuildStdinLoader(name),
499
+ },
500
+ alias: {
501
+ 'react-native': resolvePackageEntry('@hanzogui/react-native-web-lite', format),
502
+ '@hanzogui/react-native-web-lite': resolvePackageEntry('@hanzogui/react-native-web-lite', format),
503
+ '@hanzogui/react-native-web-internals': resolvePackageEntry('@hanzogui/react-native-web-internals', format),
504
+ },
505
+ bundle: true,
506
+ packages: 'external',
507
+ allowOverwrite: true,
508
+ sourcemap: false,
509
+ loader: esbuildLoaderConfig,
510
+ });
511
+ }
512
+ if (process.env.DEBUG === 'hanzogui') {
513
+ console.info(`loadModule`, loadModule, format);
514
+ }
515
+ let moduleResult;
516
+ if (format === 'esm') {
517
+ // use file:// URL for proper ESM resolution
518
+ moduleResult = await load(loadModule);
519
+ }
520
+ else {
521
+ moduleResult = need(loadModule);
522
+ }
523
+ if (!forceExports) {
524
+ setRequireResult(name, moduleResult);
525
+ }
526
+ const nameToInfo = getComponentStaticConfigByName(name, interopDefaultExport(moduleResult));
527
+ return {
528
+ moduleName: name,
529
+ nameToInfo,
530
+ };
531
+ };
532
+ const dispose = () => {
533
+ if (isDynamic) {
534
+ FS.removeSync(loadModule);
535
+ activeTempFiles.delete(loadModule);
536
+ }
537
+ };
538
+ let loaded;
539
+ try {
540
+ loaded = await attemptLoad({ forceExports: true });
541
+ didBabel = true;
542
+ }
543
+ catch (err) {
544
+ console.info('babel err', err, writtenContents);
545
+ writtenContents = fileContents;
546
+ if (process.env.DEBUG?.startsWith('hanzogui')) {
547
+ console.info(`Error parsing babel likely`, err);
548
+ }
549
+ try {
550
+ loaded = await attemptLoad({ forceExports: false });
551
+ }
552
+ catch (err2) {
553
+ if (process.env.GUI_ENABLE_WARN_DYNAMIC_LOAD) {
554
+ console.info(`\nGui attempted but failed to dynamically optimize components in:\n ${name}\n`);
555
+ console.info(err2);
556
+ console.info(`At: ${loadModule}`, `\ndidBabel: ${didBabel}`, `\nIn:`, writtenContents, `\nisDynamic: `, isDynamic);
557
+ }
558
+ loaded = [];
559
+ }
560
+ }
561
+ finally {
562
+ dispose();
563
+ }
564
+ if (Array.isArray(loaded)) {
565
+ results.push(...loaded);
566
+ }
567
+ else if (loaded) {
568
+ results.push(loaded);
569
+ }
570
+ }
571
+ cacheComponents[key] = results;
572
+ return results;
573
+ }
574
+ catch (err) {
575
+ console.info(`Gui error bundling components`, err.message, err.stack);
576
+ return null;
577
+ }
578
+ finally {
579
+ unregister();
580
+ }
581
+ }
582
+ // sync version - uses cjs format for buildSync (no plugin support)
583
+ export function loadComponentsInnerSync(props, forceExports = false) {
584
+ const componentsModules = props.components || [];
585
+ const key = componentsModules.join('\0');
586
+ if (!forceExports && cacheComponents[key]) {
587
+ return cacheComponents[key];
588
+ }
589
+ const { unregister } = registerRequire(props.platform || 'web', {
590
+ proxyWormImports: forceExports,
591
+ });
592
+ try {
593
+ const info = componentsModules.flatMap((name) => {
594
+ const extension = extname(name);
595
+ const isLocal = Boolean(extension);
596
+ const isDynamic = isLocal && forceExports;
597
+ const fileContents = isDynamic ? readFileSync(name, 'utf-8') : '';
598
+ let loadModule = name;
599
+ let writtenContents = fileContents;
600
+ let didBabel = false;
601
+ function attemptLoad({ forceExports = false } = {}) {
602
+ if (isDynamic) {
603
+ writtenContents = forceExports
604
+ ? transformAddExports(babelParse(esbuildit(fileContents, 'modern'), name))
605
+ : fileContents;
606
+ loadModule = getDynamicEvalOutfile(name, 'cjs', writtenContents);
607
+ FS.ensureDirSync(dirname(loadModule));
608
+ activeTempFiles.add(loadModule);
609
+ esbuild.buildSync({
610
+ ...esbuildOptions,
611
+ outfile: loadModule,
612
+ stdin: {
613
+ contents: writtenContents,
614
+ resolveDir: dirname(name),
615
+ sourcefile: name,
616
+ loader: getEsbuildStdinLoader(name),
617
+ },
618
+ alias: {
619
+ 'react-native': resolvePackageEntry('@hanzogui/react-native-web-lite', 'esm'),
620
+ '@hanzogui/react-native-web-lite': resolvePackageEntry('@hanzogui/react-native-web-lite', 'esm'),
621
+ '@hanzogui/react-native-web-internals': resolvePackageEntry('@hanzogui/react-native-web-internals', 'esm'),
622
+ },
623
+ bundle: true,
624
+ packages: 'external',
625
+ allowOverwrite: true,
626
+ sourcemap: false,
627
+ loader: esbuildLoaderConfig,
628
+ });
629
+ }
630
+ if (process.env.DEBUG === 'hanzogui') {
631
+ console.info(`loadModule`, loadModule, need.resolve(loadModule));
632
+ }
633
+ const moduleResult = need(loadModule);
634
+ if (!forceExports) {
635
+ setRequireResult(name, moduleResult);
636
+ }
637
+ const nameToInfo = getComponentStaticConfigByName(name, interopDefaultExport(moduleResult));
638
+ return {
639
+ moduleName: name,
640
+ nameToInfo,
641
+ };
642
+ }
643
+ const dispose = () => {
644
+ if (isDynamic) {
645
+ FS.removeSync(loadModule);
646
+ activeTempFiles.delete(loadModule);
647
+ }
648
+ };
649
+ try {
650
+ const res = attemptLoad({ forceExports: true });
651
+ didBabel = true;
652
+ return res;
653
+ }
654
+ catch (err) {
655
+ console.info('babel err', err, writtenContents);
656
+ writtenContents = fileContents;
657
+ if (process.env.DEBUG?.startsWith('hanzogui')) {
658
+ console.info(`Error parsing babel likely`, err);
659
+ }
660
+ }
661
+ finally {
662
+ dispose();
663
+ }
664
+ try {
665
+ return attemptLoad({ forceExports: false });
666
+ }
667
+ catch (err) {
668
+ if (process.env.GUI_ENABLE_WARN_DYNAMIC_LOAD) {
669
+ console.info(`\nGui attempted but failed to dynamically optimize components in:\n ${name}\n`);
670
+ console.info(err);
671
+ console.info(`At: ${loadModule}`, `\ndidBabel: ${didBabel}`, `\nIn:`, writtenContents, `\nisDynamic: `, isDynamic);
672
+ }
673
+ return [];
674
+ }
675
+ finally {
676
+ dispose();
677
+ }
678
+ });
679
+ cacheComponents[key] = info;
680
+ return info;
681
+ }
682
+ catch (err) {
683
+ console.info(`Gui error bundling components`, err.message, err.stack);
684
+ return null;
685
+ }
686
+ finally {
687
+ unregister();
688
+ }
689
+ }
690
+ const esbuildit = (src, target) => {
691
+ return esbuild.transformSync(src, {
692
+ ...esbuildTransformOptions,
693
+ ...(target === 'modern' && {
694
+ target: 'es2022',
695
+ jsx: 'automatic',
696
+ loader: 'tsx',
697
+ platform: 'neutral',
698
+ format: 'esm',
699
+ }),
700
+ }).code;
701
+ };
702
+ function getComponentStaticConfigByName(name, exported) {
703
+ const components = {};
704
+ try {
705
+ if (!exported || typeof exported !== 'object' || Array.isArray(exported)) {
706
+ throw new Error(`Invalid export from package ${name}: ${typeof exported}`);
707
+ }
708
+ for (const key in exported) {
709
+ const found = getGuiComponent(key, exported[key]);
710
+ if (found) {
711
+ // remove non-stringifyable
712
+ const { Component, ...sc } = found.staticConfig;
713
+ components[key] = { staticConfig: sc };
714
+ }
715
+ }
716
+ }
717
+ catch (err) {
718
+ if (process.env.GUI_ENABLE_WARN_DYNAMIC_LOAD) {
719
+ console.error(`Gui failed getting components from ${name} (Disable error by setting environment variable GUI_ENABLE_WARN_DYNAMIC_LOAD=1)`);
720
+ console.error(err);
721
+ }
722
+ }
723
+ return components;
724
+ }
725
+ function getGuiComponent(name, Component) {
726
+ if (name[0].toUpperCase() !== name[0]) {
727
+ return;
728
+ }
729
+ const staticConfig = Component?.staticConfig;
730
+ if (staticConfig) {
731
+ return Component;
732
+ }
733
+ }
734
+ function interopDefaultExport(mod) {
735
+ return mod?.default ?? mod;
736
+ }
737
+ const cacheComponents = {};
738
+ function transformAddExports(ast) {
739
+ const usedNames = new Set();
740
+ // avoid clobbering
741
+ // @ts-ignore
742
+ traverse(ast, {
743
+ ExportNamedDeclaration(nodePath) {
744
+ if (nodePath.node.specifiers) {
745
+ for (const spec of nodePath.node.specifiers) {
746
+ usedNames.add(t.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value);
747
+ }
748
+ }
749
+ },
750
+ });
751
+ // @ts-ignore
752
+ traverse(ast, {
753
+ VariableDeclaration(nodePath) {
754
+ // top level only
755
+ if (!t.isProgram(nodePath.parent))
756
+ return;
757
+ const decs = nodePath.node.declarations;
758
+ if (decs.length > 1)
759
+ return;
760
+ const [dec] = decs;
761
+ if (!t.isIdentifier(dec.id))
762
+ return;
763
+ if (!dec.init)
764
+ return;
765
+ if (usedNames.has(dec.id.name))
766
+ return;
767
+ usedNames.add(dec.id.name);
768
+ nodePath.replaceWith(t.exportNamedDeclaration(t.variableDeclaration('let', [dec]), [
769
+ t.exportSpecifier(t.identifier(dec.id.name), t.identifier(dec.id.name)),
770
+ ]));
771
+ },
772
+ });
773
+ // @ts-ignore
774
+ return generate(ast, {
775
+ concise: false,
776
+ filename: 'test.tsx',
777
+ retainLines: false,
778
+ sourceMaps: false,
779
+ }).code;
780
+ }
781
+ //# sourceMappingURL=bundleConfig.js.map