@wyw-in-js/transform 1.1.0 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -29
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +3 -6
  178. package/types/index.js +24 -82
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +2 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +0 -23
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -23
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewriteBarrelImports.js","names":["generate","t","EventEmitter","shaker","TransformCacheCollection","Entrypoint","analyzeBarrelFile","createAnalysisServices","services","cache","barrelManifests","exports","eventEmitter","dummy","addBinding","manifest","exported","binding","explicitExports","existing","has","kind","isSameBinding","reason","addBlockedExport","buildResolvedDependencyMap","resolvedImports","Map","map","dependency","source","cloneExportedName","name","isValidIdentifier","identifier","stringLiteral","cloneImportedName","left","right","imported","createAnalysisEntrypoint","filename","loadedCode","createRoot","getUniqueSources","raw","Array","from","Set","reexports","reexport","exportAll","buildImportsForResolve","getReexportResolutionMap","resolved","isBarrelEntry","entry","isRawBarrelManifest","shouldUseDirectExports","getModuleName","node","isIdentifier","value","canEmitNamedReexport","collectOptimizedImports","ast","imports","addImport","set","get","includes","push","program","statement","body","isImportDeclaration","isStringLiteral","specifiers","length","specifier","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isExportNamedDeclaration","isExportNamespaceSpecifier","isExportDefaultSpecifier","isExportSpecifier","local","isExportAllDeclaration","groupImportSpecifiers","optimized","grouped","defaults","named","bucket","importDefaultSpecifier","importSpecifier","declarations","importDeclaration","defaultSpecifier","slice","groupExportSpecifiers","exportNamespaceSpecifier","exportSpecifier","entries","exportNamedDeclaration","createImportFallback","fallbackSpecifiers","createExportFallback","emitRewriteSkipped","action","single","file","entrypoint","getManifestExport","getNamedBinding","analysisServices","targetResolved","stack","targetManifest","getOrBuildBarrelManifest","call","complete","getStarCandidates","candidates","Object","filter","getExportsForFile","getNext","undefined","cached","status","loadedAndParsed","loadAndParseFn","log","evaluator","ignoredEntry","add","customEntry","analyzed","resolveEntrypoint","code","manifestDependencies","flatMap","resolutionMap","nextStack","namespaceBinding","getNamespaceBinding","exportAllSource","candidate","setCacheDependencies","getResolvedDependency","dependencies","rewriteImportDeclaration","generatedSources","mode","statements","fallback","rewritten","fallbackDeclaration","rewriteExportNamedDeclaration","rewriteExportAllDeclaration","hasUnrewritableExport","rewriteOptimizedBarrelImports","nextBody","optimizedCount","sourceModes","skippedCount","recordSourceMode","statementChanged","rewrittenCode","preResolvedImports","only","fullyRewrittenSources","partialFallbackSources"],"sources":["../../../src/transform/generators/rewriteBarrelImports.ts"],"sourcesContent":["/* eslint-disable no-continue, @typescript-eslint/no-use-before-define, @typescript-eslint/no-explicit-any, no-param-reassign, prefer-destructuring */\nimport generate from '@babel/generator';\nimport * as t from '@babel/types';\n\nimport { EventEmitter } from '../../utils/EventEmitter';\nimport { shaker } from '../../shaker';\nimport { TransformCacheCollection } from '../../cache';\nimport { Entrypoint } from '../Entrypoint';\nimport {\n analyzeBarrelFile,\n type BarrelBlockedReason,\n type BarrelManifest,\n type BarrelManifestCacheEntry,\n type BarrelManifestExport,\n type BarrelResolvedBinding,\n type RawBarrelManifest,\n} from '../barrelManifest';\nimport type { IEntrypointDependency } from '../Entrypoint.types';\nimport type { Services, ITransformAction } from '../types';\n\ntype RewriteResult = {\n ast: t.File;\n code: string;\n fullyRewrittenSources: string[];\n imports: Map<string, string[]> | null;\n optimizedCount: number;\n partialFallbackSources: string[];\n preResolvedImports: IEntrypointDependency[];\n skippedCount: number;\n};\n\ntype RewriteMode = 'full' | 'partial' | 'unchanged';\n\ntype StatementRewriteResult = {\n generatedSources: string[];\n mode: RewriteMode;\n statements: t.Statement[];\n};\n\ntype ResolvedDependencyMap = Map<string, IEntrypointDependency>;\n\ntype StarCandidate = {\n binding: BarrelResolvedBinding;\n exported: string;\n};\n\ntype RewrittenImportSpecifier =\n | {\n kind: 'default';\n local: t.Identifier;\n source: string;\n }\n | {\n imported: string;\n kind: 'named';\n local: t.Identifier;\n source: string;\n };\n\ntype RewrittenExportSpecifier =\n | {\n exported: string;\n imported: string;\n kind: 'named';\n source: string;\n }\n | {\n exported: string;\n kind: 'namespace';\n source: string;\n };\n\ntype IneligibleBarrelEntry = Exclude<BarrelManifestCacheEntry, BarrelManifest>;\n\nconst createAnalysisServices = (services: Services): Services => ({\n ...services,\n cache: new TransformCacheCollection({\n barrelManifests: services.cache.barrelManifests,\n exports: services.cache.exports,\n }),\n eventEmitter: EventEmitter.dummy,\n});\n\nconst addBinding = (\n manifest: Record<string, BarrelManifestExport>,\n exported: string,\n binding: BarrelResolvedBinding,\n explicitExports: Set<string>\n) => {\n const existing = manifest[exported];\n if (explicitExports.has(exported)) {\n return;\n }\n\n if (!existing) {\n manifest[exported] = binding;\n return;\n }\n\n if (existing.kind === 'blocked') {\n return;\n }\n\n if (!isSameBinding(existing, binding)) {\n manifest[exported] = {\n kind: 'blocked',\n reason: 'ambiguous',\n };\n }\n};\n\nconst addBlockedExport = (\n manifest: Record<string, BarrelManifestExport>,\n exported: string,\n reason: BarrelBlockedReason\n) => {\n manifest[exported] = {\n kind: 'blocked',\n reason,\n };\n};\n\nconst buildResolvedDependencyMap = (\n resolvedImports: IEntrypointDependency[]\n): ResolvedDependencyMap =>\n new Map(resolvedImports.map((dependency) => [dependency.source, dependency]));\n\nconst cloneExportedName = (name: string): t.Identifier | t.StringLiteral =>\n t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name);\n\nconst cloneImportedName = (name: string): t.Identifier | t.StringLiteral =>\n name === 'default' || t.isValidIdentifier(name)\n ? t.identifier(name)\n : t.stringLiteral(name);\n\nconst isSameBinding = (\n left: BarrelResolvedBinding,\n right: BarrelResolvedBinding\n): boolean => {\n if (left.kind !== right.kind) {\n return false;\n }\n\n if (left.source !== right.source) {\n return false;\n }\n\n if (left.kind === 'named' && right.kind === 'named') {\n return left.imported === right.imported;\n }\n\n return true;\n};\n\nfunction createAnalysisEntrypoint(\n services: Services,\n filename: string,\n loadedCode?: string\n): Entrypoint {\n return Entrypoint.createRoot(services, filename, ['*'], loadedCode);\n}\n\nfunction getUniqueSources(raw: RawBarrelManifest): string[] {\n return Array.from(\n new Set([\n ...raw.reexports.map((reexport) => reexport.source),\n ...raw.exportAll,\n ])\n );\n}\n\nfunction buildImportsForResolve(raw: RawBarrelManifest): Map<string, string[]> {\n return new Map(getUniqueSources(raw).map((source) => [source, []]));\n}\n\nfunction getReexportResolutionMap(\n resolvedImports: IEntrypointDependency[]\n): Map<string, string | null> {\n return new Map(\n resolvedImports.map((dependency) => [\n dependency.source,\n dependency.resolved,\n ])\n );\n}\n\nfunction isBarrelEntry(\n entry: BarrelManifestCacheEntry\n): entry is BarrelManifest {\n return entry.kind === 'barrel';\n}\n\nfunction isRawBarrelManifest(\n entry: BarrelManifestCacheEntry | RawBarrelManifest\n): entry is RawBarrelManifest {\n return 'reexports' in entry;\n}\n\nfunction shouldUseDirectExports(\n reason: IneligibleBarrelEntry['reason']\n): boolean {\n return reason === 'impure';\n}\n\nconst getModuleName = (node: t.Identifier | t.StringLiteral): string =>\n t.isIdentifier(node) ? node.name : node.value;\n\nconst canEmitNamedReexport = (imported: string): boolean =>\n imported === 'default' || t.isValidIdentifier(imported);\n\nfunction collectOptimizedImports(ast: t.File): Map<string, string[]> {\n const imports = new Map<string, string[]>();\n\n const addImport = (source: string, imported: string) => {\n if (!imports.has(source)) {\n imports.set(source, []);\n }\n\n if (!imports.get(source)!.includes(imported)) {\n imports.get(source)!.push(imported);\n }\n };\n\n const program = ast.program;\n for (const statement of program.body) {\n if (\n t.isImportDeclaration(statement) &&\n t.isStringLiteral(statement.source)\n ) {\n if (statement.specifiers.length === 0) {\n addImport(statement.source.value, 'side-effect');\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (t.isImportDefaultSpecifier(specifier)) {\n addImport(statement.source.value, 'default');\n continue;\n }\n\n if (t.isImportNamespaceSpecifier(specifier)) {\n addImport(statement.source.value, '*');\n continue;\n }\n\n if (t.isImportSpecifier(specifier)) {\n addImport(\n statement.source.value,\n t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value\n );\n }\n }\n continue;\n }\n\n if (\n t.isExportNamedDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n for (const specifier of statement.specifiers) {\n if (t.isExportNamespaceSpecifier(specifier)) {\n addImport(statement.source.value, '*');\n continue;\n }\n\n if (t.isExportDefaultSpecifier(specifier)) {\n addImport(statement.source.value, 'default');\n continue;\n }\n\n if (t.isExportSpecifier(specifier)) {\n addImport(statement.source.value, getModuleName(specifier.local));\n }\n }\n continue;\n }\n\n if (\n t.isExportAllDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n addImport(statement.source.value, '*');\n }\n }\n\n return imports;\n}\n\nfunction groupImportSpecifiers(\n optimized: RewrittenImportSpecifier[]\n): t.ImportDeclaration[] {\n const grouped = new Map<\n string,\n {\n defaults: t.ImportDefaultSpecifier[];\n named: t.ImportSpecifier[];\n }\n >();\n\n for (const specifier of optimized) {\n if (!grouped.has(specifier.source)) {\n grouped.set(specifier.source, {\n defaults: [],\n named: [],\n });\n }\n\n const bucket = grouped.get(specifier.source)!;\n if (specifier.kind === 'default') {\n bucket.defaults.push(t.importDefaultSpecifier(specifier.local));\n continue;\n }\n\n bucket.named.push(\n t.importSpecifier(specifier.local, cloneImportedName(specifier.imported))\n );\n }\n\n const declarations: t.ImportDeclaration[] = [];\n for (const [source, bucket] of grouped) {\n if (bucket.defaults.length === 0) {\n declarations.push(\n t.importDeclaration(bucket.named, t.stringLiteral(source))\n );\n continue;\n }\n\n declarations.push(\n t.importDeclaration(\n [bucket.defaults[0], ...bucket.named],\n t.stringLiteral(source)\n )\n );\n\n for (const defaultSpecifier of bucket.defaults.slice(1)) {\n declarations.push(\n t.importDeclaration([defaultSpecifier], t.stringLiteral(source))\n );\n }\n }\n\n return declarations;\n}\n\nfunction groupExportSpecifiers(\n optimized: RewrittenExportSpecifier[]\n): t.Statement[] {\n const grouped = new Map<\n string,\n Array<t.ExportSpecifier | t.ExportNamespaceSpecifier>\n >();\n\n for (const specifier of optimized) {\n if (!grouped.has(specifier.source)) {\n grouped.set(specifier.source, []);\n }\n\n if (specifier.kind === 'namespace') {\n grouped\n .get(specifier.source)!\n .push(t.exportNamespaceSpecifier(t.identifier(specifier.exported)));\n continue;\n }\n\n grouped\n .get(specifier.source)!\n .push(\n t.exportSpecifier(\n t.identifier(specifier.imported),\n cloneExportedName(specifier.exported)\n )\n );\n }\n\n return Array.from(grouped.entries()).map(([source, specifiers]) =>\n t.exportNamedDeclaration(null, specifiers, t.stringLiteral(source))\n );\n}\n\nfunction createImportFallback(\n statement: t.ImportDeclaration,\n fallbackSpecifiers: t.ImportDeclaration['specifiers']\n): t.ImportDeclaration | null {\n if (fallbackSpecifiers.length === 0) {\n return null;\n }\n\n return t.importDeclaration(\n fallbackSpecifiers,\n t.stringLiteral(statement.source.value)\n );\n}\n\nfunction createExportFallback(\n statement: t.ExportNamedDeclaration,\n fallbackSpecifiers: t.ExportNamedDeclaration['specifiers']\n): t.ExportNamedDeclaration | null {\n if (!statement.source || fallbackSpecifiers.length === 0) {\n return null;\n }\n\n return t.exportNamedDeclaration(\n null,\n fallbackSpecifiers,\n t.stringLiteral(statement.source.value)\n );\n}\n\nfunction emitRewriteSkipped(\n action: ITransformAction,\n source: string,\n reason: BarrelBlockedReason\n) {\n action.services.eventEmitter.single({\n file: action.entrypoint.name,\n kind: 'barrelRewriteSkipped',\n reason,\n source,\n });\n}\n\nfunction getManifestExport(\n manifest: BarrelManifest,\n exported: string\n): BarrelManifestExport | null {\n return manifest.exports[exported] ?? null;\n}\n\nfunction* getNamedBinding(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n imported: string,\n stack: Set<string>\n): Generator<any, BarrelManifestExport, any> {\n if (stack.has(targetResolved)) {\n return {\n kind: 'blocked',\n reason: 'cycle',\n };\n }\n\n const targetManifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n const resolved = getManifestExport(targetManifest, imported);\n if (resolved) {\n return resolved;\n }\n\n return {\n kind: 'blocked',\n reason: targetManifest.complete ? 'unresolved' : 'unknown-star',\n };\n }\n\n return {\n kind: 'named',\n imported,\n source: targetResolved,\n };\n}\n\nfunction* getStarCandidates(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n stack: Set<string>\n): Generator<any, { candidates: StarCandidate[]; complete: boolean }, any> {\n if (stack.has(targetResolved)) {\n return {\n candidates: [],\n complete: false,\n };\n }\n\n const targetManifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n if (!targetManifest.complete) {\n return {\n candidates: [],\n complete: false,\n };\n }\n\n return {\n candidates: Object.entries(targetManifest.exports)\n .filter(\n ([exported, binding]) =>\n exported !== 'default' && binding.kind !== 'blocked'\n )\n .map(([exported, binding]) => ({\n binding: binding as BarrelResolvedBinding,\n exported,\n })),\n complete: true,\n };\n }\n\n if (!shouldUseDirectExports(targetManifest.reason)) {\n return {\n candidates: [],\n complete: false,\n };\n }\n\n const exports = yield* getExportsForFile.call(\n this,\n analysisServices,\n targetResolved\n );\n\n return {\n candidates: exports\n .filter((exported) => exported !== 'default')\n .map((exported) => ({\n binding: {\n kind: 'named',\n imported: exported,\n source: targetResolved,\n } satisfies BarrelResolvedBinding,\n exported,\n })),\n complete: true,\n };\n}\n\nfunction* getExportsForFile(\n this: ITransformAction,\n services: Services,\n filename: string\n): Generator<any, string[], any> {\n const entrypoint = createAnalysisEntrypoint(services, filename);\n return yield* this.getNext('getExports', entrypoint, undefined, null);\n}\n\nfunction* getOrBuildBarrelManifest(\n this: ITransformAction,\n analysisServices: Services,\n filename: string,\n stack: Set<string> = new Set()\n): Generator<any, BarrelManifestCacheEntry, any> {\n const cached = this.services.cache.get('barrelManifests', filename);\n if (cached) {\n this.services.eventEmitter.single({\n file: filename,\n kind: 'barrelManifest',\n status: 'hit',\n });\n return cached;\n }\n\n const loadedAndParsed = analysisServices.loadAndParseFn(\n analysisServices,\n filename,\n undefined,\n analysisServices.log\n );\n\n if (loadedAndParsed.evaluator === 'ignored') {\n const ignoredEntry = {\n kind: 'ineligible',\n reason: 'ignored',\n } as const;\n this.services.cache.add('barrelManifests', filename, ignoredEntry);\n return ignoredEntry;\n }\n\n if (loadedAndParsed.evaluator !== shaker) {\n const customEntry = {\n kind: 'ineligible',\n reason: 'custom-evaluator',\n } as const;\n this.services.cache.add('barrelManifests', filename, customEntry);\n return customEntry;\n }\n\n const analyzed = analyzeBarrelFile(loadedAndParsed.ast);\n if (!isRawBarrelManifest(analyzed)) {\n this.services.cache.add('barrelManifests', filename, analyzed);\n return analyzed;\n }\n\n const resolveEntrypoint = createAnalysisEntrypoint(\n analysisServices,\n filename,\n loadedAndParsed.code\n );\n const resolvedImports = yield* this.getNext(\n 'resolveImports',\n resolveEntrypoint,\n {\n imports: buildImportsForResolve(analyzed),\n },\n null\n );\n const manifestDependencies = resolvedImports.flatMap((dependency) =>\n dependency.resolved ? [dependency.resolved] : []\n );\n\n const resolutionMap = getReexportResolutionMap(resolvedImports);\n const manifest: BarrelManifest = {\n complete: analyzed.complete,\n exports: {},\n kind: 'barrel',\n };\n const explicitExports = new Set<string>(analyzed.explicitExports);\n const nextStack = new Set(stack);\n nextStack.add(filename);\n\n for (const reexport of analyzed.reexports) {\n explicitExports.add(reexport.exported);\n const targetResolved = resolutionMap.get(reexport.source);\n\n if (!targetResolved) {\n manifest.complete = false;\n addBlockedExport(manifest.exports, reexport.exported, 'unresolved');\n continue;\n }\n\n if (reexport.kind === 'namespace') {\n const namespaceBinding = yield* getNamespaceBinding.call(\n this,\n analysisServices,\n targetResolved,\n nextStack\n );\n manifest.exports[reexport.exported] = namespaceBinding;\n if (namespaceBinding.kind === 'blocked') {\n manifest.complete = false;\n }\n continue;\n }\n\n const binding = yield* getNamedBinding.call(\n this,\n analysisServices,\n targetResolved,\n reexport.imported,\n nextStack\n );\n manifest.exports[reexport.exported] = binding;\n if (binding.kind === 'blocked') {\n manifest.complete = false;\n }\n }\n\n for (const exportAllSource of analyzed.exportAll) {\n const targetResolved = resolutionMap.get(exportAllSource);\n if (!targetResolved) {\n manifest.complete = false;\n continue;\n }\n\n const { candidates, complete } = yield* getStarCandidates.call(\n this,\n analysisServices,\n targetResolved,\n nextStack\n );\n\n if (!complete) {\n manifest.complete = false;\n continue;\n }\n\n for (const candidate of candidates) {\n addBinding(\n manifest.exports,\n candidate.exported,\n candidate.binding,\n explicitExports\n );\n }\n }\n\n this.services.cache.add('barrelManifests', filename, manifest);\n this.services.cache.setCacheDependencies(\n 'barrelManifests',\n filename,\n manifestDependencies\n );\n this.services.eventEmitter.single({\n complete: manifest.complete,\n file: filename,\n kind: 'barrelManifest',\n status: 'built',\n });\n\n return manifest;\n}\n\nfunction* getNamespaceBinding(\n this: ITransformAction,\n analysisServices: Services,\n targetResolved: string,\n stack: Set<string>\n): Generator<any, BarrelManifestExport, any> {\n if (stack.has(targetResolved)) {\n return {\n kind: 'blocked',\n reason: 'cycle',\n };\n }\n\n const targetManifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n targetResolved,\n stack\n );\n\n if (isBarrelEntry(targetManifest)) {\n return {\n kind: 'blocked',\n reason: 'namespace-barrel',\n };\n }\n\n return {\n kind: 'namespace',\n source: targetResolved,\n };\n}\n\nfunction getResolvedDependency(\n dependencies: ResolvedDependencyMap,\n source: string\n): IEntrypointDependency | undefined {\n return dependencies.get(source);\n}\n\nfunction* rewriteImportDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n statement: t.ImportDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const optimized: RewrittenImportSpecifier[] = [];\n const fallback = [] as t.ImportDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (t.isImportNamespaceSpecifier(specifier)) {\n fallback.push(specifier);\n continue;\n }\n\n if (t.isImportDefaultSpecifier(specifier)) {\n const binding = getManifestExport(manifest, 'default');\n if (binding?.kind === 'named' && binding.imported === 'default') {\n optimized.push({\n kind: 'default',\n local: specifier.local,\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n continue;\n }\n\n const imported = t.isIdentifier(specifier.imported)\n ? specifier.imported.name\n : specifier.imported.value;\n const binding = getManifestExport(manifest, imported);\n\n if (binding?.kind === 'named') {\n optimized.push({\n imported: binding.imported,\n kind: 'named',\n local: specifier.local,\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n }\n\n if (optimized.length === 0) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const rewritten = groupImportSpecifiers(optimized);\n const fallbackDeclaration = createImportFallback(statement, fallback);\n const mode: RewriteMode = fallbackDeclaration ? 'partial' : 'full';\n\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode,\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode,\n statements: fallbackDeclaration\n ? [fallbackDeclaration, ...rewritten]\n : rewritten,\n };\n}\n\nfunction* rewriteExportNamedDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n statement: t.ExportNamedDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n if (!statement.source || !t.isStringLiteral(statement.source)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest)) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const optimized: RewrittenExportSpecifier[] = [];\n const fallback = [] as t.ExportNamedDeclaration['specifiers'];\n\n for (const specifier of statement.specifiers) {\n if (t.isExportNamespaceSpecifier(specifier)) {\n fallback.push(specifier);\n continue;\n }\n\n if (t.isExportDefaultSpecifier(specifier)) {\n const binding = getManifestExport(manifest, 'default');\n if (binding?.kind === 'named' && binding.imported === 'default') {\n optimized.push({\n exported: getModuleName(specifier.exported),\n imported: 'default',\n kind: 'named',\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n continue;\n }\n\n const imported = getModuleName(specifier.local);\n const exported = getModuleName(specifier.exported);\n const binding = getManifestExport(manifest, imported);\n\n if (binding?.kind === 'named' && canEmitNamedReexport(binding.imported)) {\n optimized.push({\n exported,\n imported: binding.imported,\n kind: 'named',\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'namespace' && t.isValidIdentifier(exported)) {\n optimized.push({\n exported,\n kind: 'namespace',\n source: binding.source,\n });\n continue;\n }\n\n if (binding?.kind === 'blocked') {\n emitRewriteSkipped(this, statement.source.value, binding.reason);\n }\n fallback.push(specifier);\n }\n\n if (optimized.length === 0) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const rewritten = groupExportSpecifiers(optimized);\n const fallbackDeclaration = createExportFallback(statement, fallback);\n const mode: RewriteMode = fallbackDeclaration ? 'partial' : 'full';\n\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode,\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode,\n statements: fallbackDeclaration\n ? [fallbackDeclaration, ...rewritten]\n : rewritten,\n };\n}\n\nfunction* rewriteExportAllDeclaration(\n this: ITransformAction,\n analysisServices: Services,\n statement: t.ExportAllDeclaration,\n dependencies: ResolvedDependencyMap\n): Generator<any, StatementRewriteResult, any> {\n const dependency = getResolvedDependency(\n dependencies,\n statement.source.value\n );\n if (!dependency?.resolved) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const manifest = yield* getOrBuildBarrelManifest.call(\n this,\n analysisServices,\n dependency.resolved\n );\n if (!isBarrelEntry(manifest) || !manifest.complete) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n const optimized: RewrittenExportSpecifier[] = [];\n let hasUnrewritableExport = false;\n for (const [exported, binding] of Object.entries(manifest.exports)) {\n if (exported === 'default' || binding.kind === 'blocked') {\n continue;\n }\n\n if (binding.kind === 'namespace') {\n if (!t.isValidIdentifier(exported)) {\n emitRewriteSkipped(this, statement.source.value, 'namespace-barrel');\n hasUnrewritableExport = true;\n continue;\n }\n\n optimized.push({\n exported,\n kind: 'namespace',\n source: binding.source,\n });\n continue;\n }\n\n if (!canEmitNamedReexport(binding.imported)) {\n emitRewriteSkipped(this, statement.source.value, 'unknown-star');\n hasUnrewritableExport = true;\n continue;\n }\n\n optimized.push({\n exported,\n imported: binding.imported,\n kind: 'named',\n source: binding.source,\n });\n }\n\n if (hasUnrewritableExport) {\n return {\n generatedSources: [],\n mode: 'unchanged',\n statements: [statement],\n };\n }\n\n if (optimized.length === 0) {\n this.services.eventEmitter.single({\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode: 'full',\n optimized: 0,\n source: statement.source.value,\n });\n\n return {\n generatedSources: [],\n mode: 'full',\n statements: [],\n };\n }\n\n this.services.eventEmitter.single({\n complete: true,\n file: this.entrypoint.name,\n kind: 'barrelRewrite',\n mode: 'full',\n optimized: optimized.length,\n source: statement.source.value,\n });\n\n return {\n generatedSources: Array.from(\n new Set(optimized.map((specifier) => specifier.source))\n ),\n mode: 'full',\n statements: groupExportSpecifiers(optimized),\n };\n}\n\nexport function* rewriteOptimizedBarrelImports(\n this: ITransformAction,\n ast: t.File,\n code: string,\n resolvedImports: IEntrypointDependency[]\n): Generator<any, RewriteResult, any> {\n const dependencies = buildResolvedDependencyMap(resolvedImports);\n const analysisServices = createAnalysisServices(this.services);\n const nextBody: t.Statement[] = [];\n const generatedSources = new Set<string>();\n let optimizedCount = 0;\n const sourceModes = new Map<string, Exclude<RewriteMode, 'unchanged'>>();\n let skippedCount = 0;\n\n const recordSourceMode = (\n source: string,\n mode: RewriteMode,\n statementChanged: boolean\n ) => {\n if (mode === 'unchanged') {\n return;\n }\n\n if (statementChanged) {\n optimizedCount += 1;\n }\n\n if (mode === 'partial') {\n sourceModes.set(source, 'partial');\n return;\n }\n\n if (!sourceModes.has(source)) {\n sourceModes.set(source, 'full');\n }\n };\n\n for (const statement of ast.program.body) {\n if (\n t.isImportDeclaration(statement) &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteImportDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n if (\n t.isExportNamedDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteExportNamedDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n if (\n t.isExportAllDeclaration(statement) &&\n statement.source &&\n t.isStringLiteral(statement.source)\n ) {\n const rewritten = yield* rewriteExportAllDeclaration.call(\n this,\n analysisServices,\n statement,\n dependencies\n );\n if (\n rewritten.mode === 'unchanged' &&\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n ) {\n skippedCount += 1;\n }\n recordSourceMode(\n statement.source.value,\n rewritten.mode,\n !(\n rewritten.statements.length === 1 &&\n rewritten.statements[0] === statement\n )\n );\n for (const source of rewritten.generatedSources) {\n generatedSources.add(source);\n }\n nextBody.push(...rewritten.statements);\n continue;\n }\n\n nextBody.push(statement);\n }\n\n ast.program.body = nextBody;\n const rewrittenCode = generate(ast).code;\n const imports = collectOptimizedImports(ast);\n const preResolvedImports = Array.from(imports.entries()).flatMap(\n ([source, only]) => {\n const dependency = dependencies.get(source);\n if (dependency) {\n return [\n {\n ...dependency,\n only,\n },\n ];\n }\n\n if (generatedSources.has(source)) {\n return [\n {\n only,\n resolved: source,\n source,\n },\n ];\n }\n\n return [];\n }\n );\n\n return {\n ast,\n code: rewrittenCode,\n fullyRewrittenSources: Array.from(sourceModes.entries())\n .filter(([, mode]) => mode === 'full')\n .map(([source]) => source),\n imports,\n optimizedCount,\n partialFallbackSources: Array.from(sourceModes.entries())\n .filter(([, mode]) => mode === 'partial')\n .map(([source]) => source),\n preResolvedImports,\n skippedCount,\n };\n}\n"],"mappings":"AAAA;AACA,OAAOA,QAAQ,MAAM,kBAAkB;AACvC,OAAO,KAAKC,CAAC,MAAM,cAAc;AAEjC,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,MAAM,QAAQ,cAAc;AACrC,SAASC,wBAAwB,QAAQ,aAAa;AACtD,SAASC,UAAU,QAAQ,eAAe;AAC1C,SACEC,iBAAiB,QAOZ,mBAAmB;AA0D1B,MAAMC,sBAAsB,GAAIC,QAAkB,KAAgB;EAChE,GAAGA,QAAQ;EACXC,KAAK,EAAE,IAAIL,wBAAwB,CAAC;IAClCM,eAAe,EAAEF,QAAQ,CAACC,KAAK,CAACC,eAAe;IAC/CC,OAAO,EAAEH,QAAQ,CAACC,KAAK,CAACE;EAC1B,CAAC,CAAC;EACFC,YAAY,EAAEV,YAAY,CAACW;AAC7B,CAAC,CAAC;AAEF,MAAMC,UAAU,GAAGA,CACjBC,QAA8C,EAC9CC,QAAgB,EAChBC,OAA8B,EAC9BC,eAA4B,KACzB;EACH,MAAMC,QAAQ,GAAGJ,QAAQ,CAACC,QAAQ,CAAC;EACnC,IAAIE,eAAe,CAACE,GAAG,CAACJ,QAAQ,CAAC,EAAE;IACjC;EACF;EAEA,IAAI,CAACG,QAAQ,EAAE;IACbJ,QAAQ,CAACC,QAAQ,CAAC,GAAGC,OAAO;IAC5B;EACF;EAEA,IAAIE,QAAQ,CAACE,IAAI,KAAK,SAAS,EAAE;IAC/B;EACF;EAEA,IAAI,CAACC,aAAa,CAACH,QAAQ,EAAEF,OAAO,CAAC,EAAE;IACrCF,QAAQ,CAACC,QAAQ,CAAC,GAAG;MACnBK,IAAI,EAAE,SAAS;MACfE,MAAM,EAAE;IACV,CAAC;EACH;AACF,CAAC;AAED,MAAMC,gBAAgB,GAAGA,CACvBT,QAA8C,EAC9CC,QAAgB,EAChBO,MAA2B,KACxB;EACHR,QAAQ,CAACC,QAAQ,CAAC,GAAG;IACnBK,IAAI,EAAE,SAAS;IACfE;EACF,CAAC;AACH,CAAC;AAED,MAAME,0BAA0B,GAC9BC,eAAwC,IAExC,IAAIC,GAAG,CAACD,eAAe,CAACE,GAAG,CAAEC,UAAU,IAAK,CAACA,UAAU,CAACC,MAAM,EAAED,UAAU,CAAC,CAAC,CAAC;AAE/E,MAAME,iBAAiB,GAAIC,IAAY,IACrC/B,CAAC,CAACgC,iBAAiB,CAACD,IAAI,CAAC,GAAG/B,CAAC,CAACiC,UAAU,CAACF,IAAI,CAAC,GAAG/B,CAAC,CAACkC,aAAa,CAACH,IAAI,CAAC;AAExE,MAAMI,iBAAiB,GAAIJ,IAAY,IACrCA,IAAI,KAAK,SAAS,IAAI/B,CAAC,CAACgC,iBAAiB,CAACD,IAAI,CAAC,GAC3C/B,CAAC,CAACiC,UAAU,CAACF,IAAI,CAAC,GAClB/B,CAAC,CAACkC,aAAa,CAACH,IAAI,CAAC;AAE3B,MAAMV,aAAa,GAAGA,CACpBe,IAA2B,EAC3BC,KAA4B,KAChB;EACZ,IAAID,IAAI,CAAChB,IAAI,KAAKiB,KAAK,CAACjB,IAAI,EAAE;IAC5B,OAAO,KAAK;EACd;EAEA,IAAIgB,IAAI,CAACP,MAAM,KAAKQ,KAAK,CAACR,MAAM,EAAE;IAChC,OAAO,KAAK;EACd;EAEA,IAAIO,IAAI,CAAChB,IAAI,KAAK,OAAO,IAAIiB,KAAK,CAACjB,IAAI,KAAK,OAAO,EAAE;IACnD,OAAOgB,IAAI,CAACE,QAAQ,KAAKD,KAAK,CAACC,QAAQ;EACzC;EAEA,OAAO,IAAI;AACb,CAAC;AAED,SAASC,wBAAwBA,CAC/BhC,QAAkB,EAClBiC,QAAgB,EAChBC,UAAmB,EACP;EACZ,OAAOrC,UAAU,CAACsC,UAAU,CAACnC,QAAQ,EAAEiC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAEC,UAAU,CAAC;AACrE;AAEA,SAASE,gBAAgBA,CAACC,GAAsB,EAAY;EAC1D,OAAOC,KAAK,CAACC,IAAI,CACf,IAAIC,GAAG,CAAC,CACN,GAAGH,GAAG,CAACI,SAAS,CAACrB,GAAG,CAAEsB,QAAQ,IAAKA,QAAQ,CAACpB,MAAM,CAAC,EACnD,GAAGe,GAAG,CAACM,SAAS,CACjB,CACH,CAAC;AACH;AAEA,SAASC,sBAAsBA,CAACP,GAAsB,EAAyB;EAC7E,OAAO,IAAIlB,GAAG,CAACiB,gBAAgB,CAACC,GAAG,CAAC,CAACjB,GAAG,CAAEE,MAAM,IAAK,CAACA,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AACrE;AAEA,SAASuB,wBAAwBA,CAC/B3B,eAAwC,EACZ;EAC5B,OAAO,IAAIC,GAAG,CACZD,eAAe,CAACE,GAAG,CAAEC,UAAU,IAAK,CAClCA,UAAU,CAACC,MAAM,EACjBD,UAAU,CAACyB,QAAQ,CACpB,CACH,CAAC;AACH;AAEA,SAASC,aAAaA,CACpBC,KAA+B,EACN;EACzB,OAAOA,KAAK,CAACnC,IAAI,KAAK,QAAQ;AAChC;AAEA,SAASoC,mBAAmBA,CAC1BD,KAAmD,EACvB;EAC5B,OAAO,WAAW,IAAIA,KAAK;AAC7B;AAEA,SAASE,sBAAsBA,CAC7BnC,MAAuC,EAC9B;EACT,OAAOA,MAAM,KAAK,QAAQ;AAC5B;AAEA,MAAMoC,aAAa,GAAIC,IAAoC,IACzD3D,CAAC,CAAC4D,YAAY,CAACD,IAAI,CAAC,GAAGA,IAAI,CAAC5B,IAAI,GAAG4B,IAAI,CAACE,KAAK;AAE/C,MAAMC,oBAAoB,GAAIxB,QAAgB,IAC5CA,QAAQ,KAAK,SAAS,IAAItC,CAAC,CAACgC,iBAAiB,CAACM,QAAQ,CAAC;AAEzD,SAASyB,uBAAuBA,CAACC,GAAW,EAAyB;EACnE,MAAMC,OAAO,GAAG,IAAIvC,GAAG,CAAmB,CAAC;EAE3C,MAAMwC,SAAS,GAAGA,CAACrC,MAAc,EAAES,QAAgB,KAAK;IACtD,IAAI,CAAC2B,OAAO,CAAC9C,GAAG,CAACU,MAAM,CAAC,EAAE;MACxBoC,OAAO,CAACE,GAAG,CAACtC,MAAM,EAAE,EAAE,CAAC;IACzB;IAEA,IAAI,CAACoC,OAAO,CAACG,GAAG,CAACvC,MAAM,CAAC,CAAEwC,QAAQ,CAAC/B,QAAQ,CAAC,EAAE;MAC5C2B,OAAO,CAACG,GAAG,CAACvC,MAAM,CAAC,CAAEyC,IAAI,CAAChC,QAAQ,CAAC;IACrC;EACF,CAAC;EAED,MAAMiC,OAAO,GAAGP,GAAG,CAACO,OAAO;EAC3B,KAAK,MAAMC,SAAS,IAAID,OAAO,CAACE,IAAI,EAAE;IACpC,IACEzE,CAAC,CAAC0E,mBAAmB,CAACF,SAAS,CAAC,IAChCxE,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACA,IAAI2C,SAAS,CAACI,UAAU,CAACC,MAAM,KAAK,CAAC,EAAE;QACrCX,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,aAAa,CAAC;QAChD;MACF;MAEA,KAAK,MAAMiB,SAAS,IAAIN,SAAS,CAACI,UAAU,EAAE;QAC5C,IAAI5E,CAAC,CAAC+E,wBAAwB,CAACD,SAAS,CAAC,EAAE;UACzCZ,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,SAAS,CAAC;UAC5C;QACF;QAEA,IAAI7D,CAAC,CAACgF,0BAA0B,CAACF,SAAS,CAAC,EAAE;UAC3CZ,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,GAAG,CAAC;UACtC;QACF;QAEA,IAAI7D,CAAC,CAACiF,iBAAiB,CAACH,SAAS,CAAC,EAAE;UAClCZ,SAAS,CACPM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EACtB7D,CAAC,CAAC4D,YAAY,CAACkB,SAAS,CAACxC,QAAQ,CAAC,GAC9BwC,SAAS,CAACxC,QAAQ,CAACP,IAAI,GACvB+C,SAAS,CAACxC,QAAQ,CAACuB,KACzB,CAAC;QACH;MACF;MACA;IACF;IAEA,IACE7D,CAAC,CAACkF,wBAAwB,CAACV,SAAS,CAAC,IACrCA,SAAS,CAAC3C,MAAM,IAChB7B,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACA,KAAK,MAAMiD,SAAS,IAAIN,SAAS,CAACI,UAAU,EAAE;QAC5C,IAAI5E,CAAC,CAACmF,0BAA0B,CAACL,SAAS,CAAC,EAAE;UAC3CZ,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,GAAG,CAAC;UACtC;QACF;QAEA,IAAI7D,CAAC,CAACoF,wBAAwB,CAACN,SAAS,CAAC,EAAE;UACzCZ,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,SAAS,CAAC;UAC5C;QACF;QAEA,IAAI7D,CAAC,CAACqF,iBAAiB,CAACP,SAAS,CAAC,EAAE;UAClCZ,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAEH,aAAa,CAACoB,SAAS,CAACQ,KAAK,CAAC,CAAC;QACnE;MACF;MACA;IACF;IAEA,IACEtF,CAAC,CAACuF,sBAAsB,CAACf,SAAS,CAAC,IACnCA,SAAS,CAAC3C,MAAM,IAChB7B,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACAqC,SAAS,CAACM,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,GAAG,CAAC;IACxC;EACF;EAEA,OAAOI,OAAO;AAChB;AAEA,SAASuB,qBAAqBA,CAC5BC,SAAqC,EACd;EACvB,MAAMC,OAAO,GAAG,IAAIhE,GAAG,CAMrB,CAAC;EAEH,KAAK,MAAMoD,SAAS,IAAIW,SAAS,EAAE;IACjC,IAAI,CAACC,OAAO,CAACvE,GAAG,CAAC2D,SAAS,CAACjD,MAAM,CAAC,EAAE;MAClC6D,OAAO,CAACvB,GAAG,CAACW,SAAS,CAACjD,MAAM,EAAE;QAC5B8D,QAAQ,EAAE,EAAE;QACZC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IAEA,MAAMC,MAAM,GAAGH,OAAO,CAACtB,GAAG,CAACU,SAAS,CAACjD,MAAM,CAAE;IAC7C,IAAIiD,SAAS,CAAC1D,IAAI,KAAK,SAAS,EAAE;MAChCyE,MAAM,CAACF,QAAQ,CAACrB,IAAI,CAACtE,CAAC,CAAC8F,sBAAsB,CAAChB,SAAS,CAACQ,KAAK,CAAC,CAAC;MAC/D;IACF;IAEAO,MAAM,CAACD,KAAK,CAACtB,IAAI,CACftE,CAAC,CAAC+F,eAAe,CAACjB,SAAS,CAACQ,KAAK,EAAEnD,iBAAiB,CAAC2C,SAAS,CAACxC,QAAQ,CAAC,CAC1E,CAAC;EACH;EAEA,MAAM0D,YAAmC,GAAG,EAAE;EAC9C,KAAK,MAAM,CAACnE,MAAM,EAAEgE,MAAM,CAAC,IAAIH,OAAO,EAAE;IACtC,IAAIG,MAAM,CAACF,QAAQ,CAACd,MAAM,KAAK,CAAC,EAAE;MAChCmB,YAAY,CAAC1B,IAAI,CACftE,CAAC,CAACiG,iBAAiB,CAACJ,MAAM,CAACD,KAAK,EAAE5F,CAAC,CAACkC,aAAa,CAACL,MAAM,CAAC,CAC3D,CAAC;MACD;IACF;IAEAmE,YAAY,CAAC1B,IAAI,CACftE,CAAC,CAACiG,iBAAiB,CACjB,CAACJ,MAAM,CAACF,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAGE,MAAM,CAACD,KAAK,CAAC,EACrC5F,CAAC,CAACkC,aAAa,CAACL,MAAM,CACxB,CACF,CAAC;IAED,KAAK,MAAMqE,gBAAgB,IAAIL,MAAM,CAACF,QAAQ,CAACQ,KAAK,CAAC,CAAC,CAAC,EAAE;MACvDH,YAAY,CAAC1B,IAAI,CACftE,CAAC,CAACiG,iBAAiB,CAAC,CAACC,gBAAgB,CAAC,EAAElG,CAAC,CAACkC,aAAa,CAACL,MAAM,CAAC,CACjE,CAAC;IACH;EACF;EAEA,OAAOmE,YAAY;AACrB;AAEA,SAASI,qBAAqBA,CAC5BX,SAAqC,EACtB;EACf,MAAMC,OAAO,GAAG,IAAIhE,GAAG,CAGrB,CAAC;EAEH,KAAK,MAAMoD,SAAS,IAAIW,SAAS,EAAE;IACjC,IAAI,CAACC,OAAO,CAACvE,GAAG,CAAC2D,SAAS,CAACjD,MAAM,CAAC,EAAE;MAClC6D,OAAO,CAACvB,GAAG,CAACW,SAAS,CAACjD,MAAM,EAAE,EAAE,CAAC;IACnC;IAEA,IAAIiD,SAAS,CAAC1D,IAAI,KAAK,WAAW,EAAE;MAClCsE,OAAO,CACJtB,GAAG,CAACU,SAAS,CAACjD,MAAM,CAAC,CACrByC,IAAI,CAACtE,CAAC,CAACqG,wBAAwB,CAACrG,CAAC,CAACiC,UAAU,CAAC6C,SAAS,CAAC/D,QAAQ,CAAC,CAAC,CAAC;MACrE;IACF;IAEA2E,OAAO,CACJtB,GAAG,CAACU,SAAS,CAACjD,MAAM,CAAC,CACrByC,IAAI,CACHtE,CAAC,CAACsG,eAAe,CACftG,CAAC,CAACiC,UAAU,CAAC6C,SAAS,CAACxC,QAAQ,CAAC,EAChCR,iBAAiB,CAACgD,SAAS,CAAC/D,QAAQ,CACtC,CACF,CAAC;EACL;EAEA,OAAO8B,KAAK,CAACC,IAAI,CAAC4C,OAAO,CAACa,OAAO,CAAC,CAAC,CAAC,CAAC5E,GAAG,CAAC,CAAC,CAACE,MAAM,EAAE+C,UAAU,CAAC,KAC5D5E,CAAC,CAACwG,sBAAsB,CAAC,IAAI,EAAE5B,UAAU,EAAE5E,CAAC,CAACkC,aAAa,CAACL,MAAM,CAAC,CACpE,CAAC;AACH;AAEA,SAAS4E,oBAAoBA,CAC3BjC,SAA8B,EAC9BkC,kBAAqD,EACzB;EAC5B,IAAIA,kBAAkB,CAAC7B,MAAM,KAAK,CAAC,EAAE;IACnC,OAAO,IAAI;EACb;EAEA,OAAO7E,CAAC,CAACiG,iBAAiB,CACxBS,kBAAkB,EAClB1G,CAAC,CAACkC,aAAa,CAACsC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,CACxC,CAAC;AACH;AAEA,SAAS8C,oBAAoBA,CAC3BnC,SAAmC,EACnCkC,kBAA0D,EACzB;EACjC,IAAI,CAAClC,SAAS,CAAC3C,MAAM,IAAI6E,kBAAkB,CAAC7B,MAAM,KAAK,CAAC,EAAE;IACxD,OAAO,IAAI;EACb;EAEA,OAAO7E,CAAC,CAACwG,sBAAsB,CAC7B,IAAI,EACJE,kBAAkB,EAClB1G,CAAC,CAACkC,aAAa,CAACsC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,CACxC,CAAC;AACH;AAEA,SAAS+C,kBAAkBA,CACzBC,MAAwB,EACxBhF,MAAc,EACdP,MAA2B,EAC3B;EACAuF,MAAM,CAACtG,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;IAClCC,IAAI,EAAEF,MAAM,CAACG,UAAU,CAACjF,IAAI;IAC5BX,IAAI,EAAE,sBAAsB;IAC5BE,MAAM;IACNO;EACF,CAAC,CAAC;AACJ;AAEA,SAASoF,iBAAiBA,CACxBnG,QAAwB,EACxBC,QAAgB,EACa;EAC7B,OAAOD,QAAQ,CAACJ,OAAO,CAACK,QAAQ,CAAC,IAAI,IAAI;AAC3C;AAEA,UAAUmG,eAAeA,CAEvBC,gBAA0B,EAC1BC,cAAsB,EACtB9E,QAAgB,EAChB+E,KAAkB,EACyB;EAC3C,IAAIA,KAAK,CAAClG,GAAG,CAACiG,cAAc,CAAC,EAAE;IAC7B,OAAO;MACLhG,IAAI,EAAE,SAAS;MACfE,MAAM,EAAE;IACV,CAAC;EACH;EAEA,MAAMgG,cAAc,GAAG,OAAOC,wBAAwB,CAACC,IAAI,CACzD,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACdC,KACF,CAAC;EAED,IAAI/D,aAAa,CAACgE,cAAc,CAAC,EAAE;IACjC,MAAMjE,QAAQ,GAAG4D,iBAAiB,CAACK,cAAc,EAAEhF,QAAQ,CAAC;IAC5D,IAAIe,QAAQ,EAAE;MACZ,OAAOA,QAAQ;IACjB;IAEA,OAAO;MACLjC,IAAI,EAAE,SAAS;MACfE,MAAM,EAAEgG,cAAc,CAACG,QAAQ,GAAG,YAAY,GAAG;IACnD,CAAC;EACH;EAEA,OAAO;IACLrG,IAAI,EAAE,OAAO;IACbkB,QAAQ;IACRT,MAAM,EAAEuF;EACV,CAAC;AACH;AAEA,UAAUM,iBAAiBA,CAEzBP,gBAA0B,EAC1BC,cAAsB,EACtBC,KAAkB,EACuD;EACzE,IAAIA,KAAK,CAAClG,GAAG,CAACiG,cAAc,CAAC,EAAE;IAC7B,OAAO;MACLO,UAAU,EAAE,EAAE;MACdF,QAAQ,EAAE;IACZ,CAAC;EACH;EAEA,MAAMH,cAAc,GAAG,OAAOC,wBAAwB,CAACC,IAAI,CACzD,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACdC,KACF,CAAC;EAED,IAAI/D,aAAa,CAACgE,cAAc,CAAC,EAAE;IACjC,IAAI,CAACA,cAAc,CAACG,QAAQ,EAAE;MAC5B,OAAO;QACLE,UAAU,EAAE,EAAE;QACdF,QAAQ,EAAE;MACZ,CAAC;IACH;IAEA,OAAO;MACLE,UAAU,EAAEC,MAAM,CAACrB,OAAO,CAACe,cAAc,CAAC5G,OAAO,CAAC,CAC/CmH,MAAM,CACL,CAAC,CAAC9G,QAAQ,EAAEC,OAAO,CAAC,KAClBD,QAAQ,KAAK,SAAS,IAAIC,OAAO,CAACI,IAAI,KAAK,SAC/C,CAAC,CACAO,GAAG,CAAC,CAAC,CAACZ,QAAQ,EAAEC,OAAO,CAAC,MAAM;QAC7BA,OAAO,EAAEA,OAAgC;QACzCD;MACF,CAAC,CAAC,CAAC;MACL0G,QAAQ,EAAE;IACZ,CAAC;EACH;EAEA,IAAI,CAAChE,sBAAsB,CAAC6D,cAAc,CAAChG,MAAM,CAAC,EAAE;IAClD,OAAO;MACLqG,UAAU,EAAE,EAAE;MACdF,QAAQ,EAAE;IACZ,CAAC;EACH;EAEA,MAAM/G,OAAO,GAAG,OAAOoH,iBAAiB,CAACN,IAAI,CAC3C,IAAI,EACJL,gBAAgB,EAChBC,cACF,CAAC;EAED,OAAO;IACLO,UAAU,EAAEjH,OAAO,CAChBmH,MAAM,CAAE9G,QAAQ,IAAKA,QAAQ,KAAK,SAAS,CAAC,CAC5CY,GAAG,CAAEZ,QAAQ,KAAM;MAClBC,OAAO,EAAE;QACPI,IAAI,EAAE,OAAO;QACbkB,QAAQ,EAAEvB,QAAQ;QAClBc,MAAM,EAAEuF;MACV,CAAiC;MACjCrG;IACF,CAAC,CAAC,CAAC;IACL0G,QAAQ,EAAE;EACZ,CAAC;AACH;AAEA,UAAUK,iBAAiBA,CAEzBvH,QAAkB,EAClBiC,QAAgB,EACe;EAC/B,MAAMwE,UAAU,GAAGzE,wBAAwB,CAAChC,QAAQ,EAAEiC,QAAQ,CAAC;EAC/D,OAAO,OAAO,IAAI,CAACuF,OAAO,CAAC,YAAY,EAAEf,UAAU,EAAEgB,SAAS,EAAE,IAAI,CAAC;AACvE;AAEA,UAAUT,wBAAwBA,CAEhCJ,gBAA0B,EAC1B3E,QAAgB,EAChB6E,KAAkB,GAAG,IAAItE,GAAG,CAAC,CAAC,EACiB;EAC/C,MAAMkF,MAAM,GAAG,IAAI,CAAC1H,QAAQ,CAACC,KAAK,CAAC4D,GAAG,CAAC,iBAAiB,EAAE5B,QAAQ,CAAC;EACnE,IAAIyF,MAAM,EAAE;IACV,IAAI,CAAC1H,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;MAChCC,IAAI,EAAEvE,QAAQ;MACdpB,IAAI,EAAE,gBAAgB;MACtB8G,MAAM,EAAE;IACV,CAAC,CAAC;IACF,OAAOD,MAAM;EACf;EAEA,MAAME,eAAe,GAAGhB,gBAAgB,CAACiB,cAAc,CACrDjB,gBAAgB,EAChB3E,QAAQ,EACRwF,SAAS,EACTb,gBAAgB,CAACkB,GACnB,CAAC;EAED,IAAIF,eAAe,CAACG,SAAS,KAAK,SAAS,EAAE;IAC3C,MAAMC,YAAY,GAAG;MACnBnH,IAAI,EAAE,YAAY;MAClBE,MAAM,EAAE;IACV,CAAU;IACV,IAAI,CAACf,QAAQ,CAACC,KAAK,CAACgI,GAAG,CAAC,iBAAiB,EAAEhG,QAAQ,EAAE+F,YAAY,CAAC;IAClE,OAAOA,YAAY;EACrB;EAEA,IAAIJ,eAAe,CAACG,SAAS,KAAKpI,MAAM,EAAE;IACxC,MAAMuI,WAAW,GAAG;MAClBrH,IAAI,EAAE,YAAY;MAClBE,MAAM,EAAE;IACV,CAAU;IACV,IAAI,CAACf,QAAQ,CAACC,KAAK,CAACgI,GAAG,CAAC,iBAAiB,EAAEhG,QAAQ,EAAEiG,WAAW,CAAC;IACjE,OAAOA,WAAW;EACpB;EAEA,MAAMC,QAAQ,GAAGrI,iBAAiB,CAAC8H,eAAe,CAACnE,GAAG,CAAC;EACvD,IAAI,CAACR,mBAAmB,CAACkF,QAAQ,CAAC,EAAE;IAClC,IAAI,CAACnI,QAAQ,CAACC,KAAK,CAACgI,GAAG,CAAC,iBAAiB,EAAEhG,QAAQ,EAAEkG,QAAQ,CAAC;IAC9D,OAAOA,QAAQ;EACjB;EAEA,MAAMC,iBAAiB,GAAGpG,wBAAwB,CAChD4E,gBAAgB,EAChB3E,QAAQ,EACR2F,eAAe,CAACS,IAClB,CAAC;EACD,MAAMnH,eAAe,GAAG,OAAO,IAAI,CAACsG,OAAO,CACzC,gBAAgB,EAChBY,iBAAiB,EACjB;IACE1E,OAAO,EAAEd,sBAAsB,CAACuF,QAAQ;EAC1C,CAAC,EACD,IACF,CAAC;EACD,MAAMG,oBAAoB,GAAGpH,eAAe,CAACqH,OAAO,CAAElH,UAAU,IAC9DA,UAAU,CAACyB,QAAQ,GAAG,CAACzB,UAAU,CAACyB,QAAQ,CAAC,GAAG,EAChD,CAAC;EAED,MAAM0F,aAAa,GAAG3F,wBAAwB,CAAC3B,eAAe,CAAC;EAC/D,MAAMX,QAAwB,GAAG;IAC/B2G,QAAQ,EAAEiB,QAAQ,CAACjB,QAAQ;IAC3B/G,OAAO,EAAE,CAAC,CAAC;IACXU,IAAI,EAAE;EACR,CAAC;EACD,MAAMH,eAAe,GAAG,IAAI8B,GAAG,CAAS2F,QAAQ,CAACzH,eAAe,CAAC;EACjE,MAAM+H,SAAS,GAAG,IAAIjG,GAAG,CAACsE,KAAK,CAAC;EAChC2B,SAAS,CAACR,GAAG,CAAChG,QAAQ,CAAC;EAEvB,KAAK,MAAMS,QAAQ,IAAIyF,QAAQ,CAAC1F,SAAS,EAAE;IACzC/B,eAAe,CAACuH,GAAG,CAACvF,QAAQ,CAAClC,QAAQ,CAAC;IACtC,MAAMqG,cAAc,GAAG2B,aAAa,CAAC3E,GAAG,CAACnB,QAAQ,CAACpB,MAAM,CAAC;IAEzD,IAAI,CAACuF,cAAc,EAAE;MACnBtG,QAAQ,CAAC2G,QAAQ,GAAG,KAAK;MACzBlG,gBAAgB,CAACT,QAAQ,CAACJ,OAAO,EAAEuC,QAAQ,CAAClC,QAAQ,EAAE,YAAY,CAAC;MACnE;IACF;IAEA,IAAIkC,QAAQ,CAAC7B,IAAI,KAAK,WAAW,EAAE;MACjC,MAAM6H,gBAAgB,GAAG,OAAOC,mBAAmB,CAAC1B,IAAI,CACtD,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACd4B,SACF,CAAC;MACDlI,QAAQ,CAACJ,OAAO,CAACuC,QAAQ,CAAClC,QAAQ,CAAC,GAAGkI,gBAAgB;MACtD,IAAIA,gBAAgB,CAAC7H,IAAI,KAAK,SAAS,EAAE;QACvCN,QAAQ,CAAC2G,QAAQ,GAAG,KAAK;MAC3B;MACA;IACF;IAEA,MAAMzG,OAAO,GAAG,OAAOkG,eAAe,CAACM,IAAI,CACzC,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACdnE,QAAQ,CAACX,QAAQ,EACjB0G,SACF,CAAC;IACDlI,QAAQ,CAACJ,OAAO,CAACuC,QAAQ,CAAClC,QAAQ,CAAC,GAAGC,OAAO;IAC7C,IAAIA,OAAO,CAACI,IAAI,KAAK,SAAS,EAAE;MAC9BN,QAAQ,CAAC2G,QAAQ,GAAG,KAAK;IAC3B;EACF;EAEA,KAAK,MAAM0B,eAAe,IAAIT,QAAQ,CAACxF,SAAS,EAAE;IAChD,MAAMkE,cAAc,GAAG2B,aAAa,CAAC3E,GAAG,CAAC+E,eAAe,CAAC;IACzD,IAAI,CAAC/B,cAAc,EAAE;MACnBtG,QAAQ,CAAC2G,QAAQ,GAAG,KAAK;MACzB;IACF;IAEA,MAAM;MAAEE,UAAU;MAAEF;IAAS,CAAC,GAAG,OAAOC,iBAAiB,CAACF,IAAI,CAC5D,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACd4B,SACF,CAAC;IAED,IAAI,CAACvB,QAAQ,EAAE;MACb3G,QAAQ,CAAC2G,QAAQ,GAAG,KAAK;MACzB;IACF;IAEA,KAAK,MAAM2B,SAAS,IAAIzB,UAAU,EAAE;MAClC9G,UAAU,CACRC,QAAQ,CAACJ,OAAO,EAChB0I,SAAS,CAACrI,QAAQ,EAClBqI,SAAS,CAACpI,OAAO,EACjBC,eACF,CAAC;IACH;EACF;EAEA,IAAI,CAACV,QAAQ,CAACC,KAAK,CAACgI,GAAG,CAAC,iBAAiB,EAAEhG,QAAQ,EAAE1B,QAAQ,CAAC;EAC9D,IAAI,CAACP,QAAQ,CAACC,KAAK,CAAC6I,oBAAoB,CACtC,iBAAiB,EACjB7G,QAAQ,EACRqG,oBACF,CAAC;EACD,IAAI,CAACtI,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;IAChCW,QAAQ,EAAE3G,QAAQ,CAAC2G,QAAQ;IAC3BV,IAAI,EAAEvE,QAAQ;IACdpB,IAAI,EAAE,gBAAgB;IACtB8G,MAAM,EAAE;EACV,CAAC,CAAC;EAEF,OAAOpH,QAAQ;AACjB;AAEA,UAAUoI,mBAAmBA,CAE3B/B,gBAA0B,EAC1BC,cAAsB,EACtBC,KAAkB,EACyB;EAC3C,IAAIA,KAAK,CAAClG,GAAG,CAACiG,cAAc,CAAC,EAAE;IAC7B,OAAO;MACLhG,IAAI,EAAE,SAAS;MACfE,MAAM,EAAE;IACV,CAAC;EACH;EAEA,MAAMgG,cAAc,GAAG,OAAOC,wBAAwB,CAACC,IAAI,CACzD,IAAI,EACJL,gBAAgB,EAChBC,cAAc,EACdC,KACF,CAAC;EAED,IAAI/D,aAAa,CAACgE,cAAc,CAAC,EAAE;IACjC,OAAO;MACLlG,IAAI,EAAE,SAAS;MACfE,MAAM,EAAE;IACV,CAAC;EACH;EAEA,OAAO;IACLF,IAAI,EAAE,WAAW;IACjBS,MAAM,EAAEuF;EACV,CAAC;AACH;AAEA,SAASkC,qBAAqBA,CAC5BC,YAAmC,EACnC1H,MAAc,EACqB;EACnC,OAAO0H,YAAY,CAACnF,GAAG,CAACvC,MAAM,CAAC;AACjC;AAEA,UAAU2H,wBAAwBA,CAEhCrC,gBAA0B,EAC1B3C,SAA8B,EAC9B+E,YAAmC,EACU;EAC7C,MAAM3H,UAAU,GAAG0H,qBAAqB,CACtCC,YAAY,EACZ/E,SAAS,CAAC3C,MAAM,CAACgC,KACnB,CAAC;EACD,IAAI,CAACjC,UAAU,EAAEyB,QAAQ,EAAE;IACzB,OAAO;MACLoG,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAM1D,QAAQ,GAAG,OAAOyG,wBAAwB,CAACC,IAAI,CACnD,IAAI,EACJL,gBAAgB,EAChBvF,UAAU,CAACyB,QACb,CAAC;EACD,IAAI,CAACC,aAAa,CAACxC,QAAQ,CAAC,EAAE;IAC5B,OAAO;MACL2I,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAMiB,SAAqC,GAAG,EAAE;EAChD,MAAMmE,QAAQ,GAAG,EAAuC;EAExD,KAAK,MAAM9E,SAAS,IAAIN,SAAS,CAACI,UAAU,EAAE;IAC5C,IAAI5E,CAAC,CAACgF,0BAA0B,CAACF,SAAS,CAAC,EAAE;MAC3C8E,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;MACxB;IACF;IAEA,IAAI9E,CAAC,CAAC+E,wBAAwB,CAACD,SAAS,CAAC,EAAE;MACzC,MAAM9D,OAAO,GAAGiG,iBAAiB,CAACnG,QAAQ,EAAE,SAAS,CAAC;MACtD,IAAIE,OAAO,EAAEI,IAAI,KAAK,OAAO,IAAIJ,OAAO,CAACsB,QAAQ,KAAK,SAAS,EAAE;QAC/DmD,SAAS,CAACnB,IAAI,CAAC;UACblD,IAAI,EAAE,SAAS;UACfkE,KAAK,EAAER,SAAS,CAACQ,KAAK;UACtBzD,MAAM,EAAEb,OAAO,CAACa;QAClB,CAAC,CAAC;QACF;MACF;MAEA,IAAIb,OAAO,EAAEI,IAAI,KAAK,SAAS,EAAE;QAC/BwF,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE7C,OAAO,CAACM,MAAM,CAAC;MAClE;MACAsI,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;MACxB;IACF;IAEA,MAAMxC,QAAQ,GAAGtC,CAAC,CAAC4D,YAAY,CAACkB,SAAS,CAACxC,QAAQ,CAAC,GAC/CwC,SAAS,CAACxC,QAAQ,CAACP,IAAI,GACvB+C,SAAS,CAACxC,QAAQ,CAACuB,KAAK;IAC5B,MAAM7C,OAAO,GAAGiG,iBAAiB,CAACnG,QAAQ,EAAEwB,QAAQ,CAAC;IAErD,IAAItB,OAAO,EAAEI,IAAI,KAAK,OAAO,EAAE;MAC7BqE,SAAS,CAACnB,IAAI,CAAC;QACbhC,QAAQ,EAAEtB,OAAO,CAACsB,QAAQ;QAC1BlB,IAAI,EAAE,OAAO;QACbkE,KAAK,EAAER,SAAS,CAACQ,KAAK;QACtBzD,MAAM,EAAEb,OAAO,CAACa;MAClB,CAAC,CAAC;MACF;IACF;IAEA,IAAIb,OAAO,EAAEI,IAAI,KAAK,SAAS,EAAE;MAC/BwF,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE7C,OAAO,CAACM,MAAM,CAAC;IAClE;IACAsI,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;EAC1B;EAEA,IAAIW,SAAS,CAACZ,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAO;MACL4E,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAMqF,SAAS,GAAGrE,qBAAqB,CAACC,SAAS,CAAC;EAClD,MAAMqE,mBAAmB,GAAGrD,oBAAoB,CAACjC,SAAS,EAAEoF,QAAQ,CAAC;EACrE,MAAMF,IAAiB,GAAGI,mBAAmB,GAAG,SAAS,GAAG,MAAM;EAElE,IAAI,CAACvJ,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;IAChCC,IAAI,EAAE,IAAI,CAACC,UAAU,CAACjF,IAAI;IAC1BX,IAAI,EAAE,eAAe;IACrBsI,IAAI;IACJjE,SAAS,EAAEA,SAAS,CAACZ,MAAM;IAC3BhD,MAAM,EAAE2C,SAAS,CAAC3C,MAAM,CAACgC;EAC3B,CAAC,CAAC;EAEF,OAAO;IACL4F,gBAAgB,EAAE5G,KAAK,CAACC,IAAI,CAC1B,IAAIC,GAAG,CAAC0C,SAAS,CAAC9D,GAAG,CAAEmD,SAAS,IAAKA,SAAS,CAACjD,MAAM,CAAC,CACxD,CAAC;IACD6H,IAAI;IACJC,UAAU,EAAEG,mBAAmB,GAC3B,CAACA,mBAAmB,EAAE,GAAGD,SAAS,CAAC,GACnCA;EACN,CAAC;AACH;AAEA,UAAUE,6BAA6BA,CAErC5C,gBAA0B,EAC1B3C,SAAmC,EACnC+E,YAAmC,EACU;EAC7C,IAAI,CAAC/E,SAAS,CAAC3C,MAAM,IAAI,CAAC7B,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EAAE;IAC7D,OAAO;MACL4H,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAM5C,UAAU,GAAG0H,qBAAqB,CACtCC,YAAY,EACZ/E,SAAS,CAAC3C,MAAM,CAACgC,KACnB,CAAC;EACD,IAAI,CAACjC,UAAU,EAAEyB,QAAQ,EAAE;IACzB,OAAO;MACLoG,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAM1D,QAAQ,GAAG,OAAOyG,wBAAwB,CAACC,IAAI,CACnD,IAAI,EACJL,gBAAgB,EAChBvF,UAAU,CAACyB,QACb,CAAC;EACD,IAAI,CAACC,aAAa,CAACxC,QAAQ,CAAC,EAAE;IAC5B,OAAO;MACL2I,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAMiB,SAAqC,GAAG,EAAE;EAChD,MAAMmE,QAAQ,GAAG,EAA4C;EAE7D,KAAK,MAAM9E,SAAS,IAAIN,SAAS,CAACI,UAAU,EAAE;IAC5C,IAAI5E,CAAC,CAACmF,0BAA0B,CAACL,SAAS,CAAC,EAAE;MAC3C8E,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;MACxB;IACF;IAEA,IAAI9E,CAAC,CAACoF,wBAAwB,CAACN,SAAS,CAAC,EAAE;MACzC,MAAM9D,OAAO,GAAGiG,iBAAiB,CAACnG,QAAQ,EAAE,SAAS,CAAC;MACtD,IAAIE,OAAO,EAAEI,IAAI,KAAK,OAAO,IAAIJ,OAAO,CAACsB,QAAQ,KAAK,SAAS,EAAE;QAC/DmD,SAAS,CAACnB,IAAI,CAAC;UACbvD,QAAQ,EAAE2C,aAAa,CAACoB,SAAS,CAAC/D,QAAQ,CAAC;UAC3CuB,QAAQ,EAAE,SAAS;UACnBlB,IAAI,EAAE,OAAO;UACbS,MAAM,EAAEb,OAAO,CAACa;QAClB,CAAC,CAAC;QACF;MACF;MAEA,IAAIb,OAAO,EAAEI,IAAI,KAAK,SAAS,EAAE;QAC/BwF,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE7C,OAAO,CAACM,MAAM,CAAC;MAClE;MACAsI,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;MACxB;IACF;IAEA,MAAMxC,QAAQ,GAAGoB,aAAa,CAACoB,SAAS,CAACQ,KAAK,CAAC;IAC/C,MAAMvE,QAAQ,GAAG2C,aAAa,CAACoB,SAAS,CAAC/D,QAAQ,CAAC;IAClD,MAAMC,OAAO,GAAGiG,iBAAiB,CAACnG,QAAQ,EAAEwB,QAAQ,CAAC;IAErD,IAAItB,OAAO,EAAEI,IAAI,KAAK,OAAO,IAAI0C,oBAAoB,CAAC9C,OAAO,CAACsB,QAAQ,CAAC,EAAE;MACvEmD,SAAS,CAACnB,IAAI,CAAC;QACbvD,QAAQ;QACRuB,QAAQ,EAAEtB,OAAO,CAACsB,QAAQ;QAC1BlB,IAAI,EAAE,OAAO;QACbS,MAAM,EAAEb,OAAO,CAACa;MAClB,CAAC,CAAC;MACF;IACF;IAEA,IAAIb,OAAO,EAAEI,IAAI,KAAK,WAAW,IAAIpB,CAAC,CAACgC,iBAAiB,CAACjB,QAAQ,CAAC,EAAE;MAClE0E,SAAS,CAACnB,IAAI,CAAC;QACbvD,QAAQ;QACRK,IAAI,EAAE,WAAW;QACjBS,MAAM,EAAEb,OAAO,CAACa;MAClB,CAAC,CAAC;MACF;IACF;IAEA,IAAIb,OAAO,EAAEI,IAAI,KAAK,SAAS,EAAE;MAC/BwF,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE7C,OAAO,CAACM,MAAM,CAAC;IAClE;IACAsI,QAAQ,CAACtF,IAAI,CAACQ,SAAS,CAAC;EAC1B;EAEA,IAAIW,SAAS,CAACZ,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAO;MACL4E,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAMqF,SAAS,GAAGzD,qBAAqB,CAACX,SAAS,CAAC;EAClD,MAAMqE,mBAAmB,GAAGnD,oBAAoB,CAACnC,SAAS,EAAEoF,QAAQ,CAAC;EACrE,MAAMF,IAAiB,GAAGI,mBAAmB,GAAG,SAAS,GAAG,MAAM;EAElE,IAAI,CAACvJ,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;IAChCC,IAAI,EAAE,IAAI,CAACC,UAAU,CAACjF,IAAI;IAC1BX,IAAI,EAAE,eAAe;IACrBsI,IAAI;IACJjE,SAAS,EAAEA,SAAS,CAACZ,MAAM;IAC3BhD,MAAM,EAAE2C,SAAS,CAAC3C,MAAM,CAACgC;EAC3B,CAAC,CAAC;EAEF,OAAO;IACL4F,gBAAgB,EAAE5G,KAAK,CAACC,IAAI,CAC1B,IAAIC,GAAG,CAAC0C,SAAS,CAAC9D,GAAG,CAAEmD,SAAS,IAAKA,SAAS,CAACjD,MAAM,CAAC,CACxD,CAAC;IACD6H,IAAI;IACJC,UAAU,EAAEG,mBAAmB,GAC3B,CAACA,mBAAmB,EAAE,GAAGD,SAAS,CAAC,GACnCA;EACN,CAAC;AACH;AAEA,UAAUG,2BAA2BA,CAEnC7C,gBAA0B,EAC1B3C,SAAiC,EACjC+E,YAAmC,EACU;EAC7C,MAAM3H,UAAU,GAAG0H,qBAAqB,CACtCC,YAAY,EACZ/E,SAAS,CAAC3C,MAAM,CAACgC,KACnB,CAAC;EACD,IAAI,CAACjC,UAAU,EAAEyB,QAAQ,EAAE;IACzB,OAAO;MACLoG,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAM1D,QAAQ,GAAG,OAAOyG,wBAAwB,CAACC,IAAI,CACnD,IAAI,EACJL,gBAAgB,EAChBvF,UAAU,CAACyB,QACb,CAAC;EACD,IAAI,CAACC,aAAa,CAACxC,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAC2G,QAAQ,EAAE;IAClD,OAAO;MACLgC,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,MAAMiB,SAAqC,GAAG,EAAE;EAChD,IAAIwE,qBAAqB,GAAG,KAAK;EACjC,KAAK,MAAM,CAAClJ,QAAQ,EAAEC,OAAO,CAAC,IAAI4G,MAAM,CAACrB,OAAO,CAACzF,QAAQ,CAACJ,OAAO,CAAC,EAAE;IAClE,IAAIK,QAAQ,KAAK,SAAS,IAAIC,OAAO,CAACI,IAAI,KAAK,SAAS,EAAE;MACxD;IACF;IAEA,IAAIJ,OAAO,CAACI,IAAI,KAAK,WAAW,EAAE;MAChC,IAAI,CAACpB,CAAC,CAACgC,iBAAiB,CAACjB,QAAQ,CAAC,EAAE;QAClC6F,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,kBAAkB,CAAC;QACpEoG,qBAAqB,GAAG,IAAI;QAC5B;MACF;MAEAxE,SAAS,CAACnB,IAAI,CAAC;QACbvD,QAAQ;QACRK,IAAI,EAAE,WAAW;QACjBS,MAAM,EAAEb,OAAO,CAACa;MAClB,CAAC,CAAC;MACF;IACF;IAEA,IAAI,CAACiC,oBAAoB,CAAC9C,OAAO,CAACsB,QAAQ,CAAC,EAAE;MAC3CsE,kBAAkB,CAAC,IAAI,EAAEpC,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EAAE,cAAc,CAAC;MAChEoG,qBAAqB,GAAG,IAAI;MAC5B;IACF;IAEAxE,SAAS,CAACnB,IAAI,CAAC;MACbvD,QAAQ;MACRuB,QAAQ,EAAEtB,OAAO,CAACsB,QAAQ;MAC1BlB,IAAI,EAAE,OAAO;MACbS,MAAM,EAAEb,OAAO,CAACa;IAClB,CAAC,CAAC;EACJ;EAEA,IAAIoI,qBAAqB,EAAE;IACzB,OAAO;MACLR,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,WAAW;MACjBC,UAAU,EAAE,CAACnF,SAAS;IACxB,CAAC;EACH;EAEA,IAAIiB,SAAS,CAACZ,MAAM,KAAK,CAAC,EAAE;IAC1B,IAAI,CAACtE,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;MAChCC,IAAI,EAAE,IAAI,CAACC,UAAU,CAACjF,IAAI;MAC1BX,IAAI,EAAE,eAAe;MACrBsI,IAAI,EAAE,MAAM;MACZjE,SAAS,EAAE,CAAC;MACZ5D,MAAM,EAAE2C,SAAS,CAAC3C,MAAM,CAACgC;IAC3B,CAAC,CAAC;IAEF,OAAO;MACL4F,gBAAgB,EAAE,EAAE;MACpBC,IAAI,EAAE,MAAM;MACZC,UAAU,EAAE;IACd,CAAC;EACH;EAEA,IAAI,CAACpJ,QAAQ,CAACI,YAAY,CAACmG,MAAM,CAAC;IAChCW,QAAQ,EAAE,IAAI;IACdV,IAAI,EAAE,IAAI,CAACC,UAAU,CAACjF,IAAI;IAC1BX,IAAI,EAAE,eAAe;IACrBsI,IAAI,EAAE,MAAM;IACZjE,SAAS,EAAEA,SAAS,CAACZ,MAAM;IAC3BhD,MAAM,EAAE2C,SAAS,CAAC3C,MAAM,CAACgC;EAC3B,CAAC,CAAC;EAEF,OAAO;IACL4F,gBAAgB,EAAE5G,KAAK,CAACC,IAAI,CAC1B,IAAIC,GAAG,CAAC0C,SAAS,CAAC9D,GAAG,CAAEmD,SAAS,IAAKA,SAAS,CAACjD,MAAM,CAAC,CACxD,CAAC;IACD6H,IAAI,EAAE,MAAM;IACZC,UAAU,EAAEvD,qBAAqB,CAACX,SAAS;EAC7C,CAAC;AACH;AAEA,OAAO,UAAUyE,6BAA6BA,CAE5ClG,GAAW,EACX4E,IAAY,EACZnH,eAAwC,EACJ;EACpC,MAAM8H,YAAY,GAAG/H,0BAA0B,CAACC,eAAe,CAAC;EAChE,MAAM0F,gBAAgB,GAAG7G,sBAAsB,CAAC,IAAI,CAACC,QAAQ,CAAC;EAC9D,MAAM4J,QAAuB,GAAG,EAAE;EAClC,MAAMV,gBAAgB,GAAG,IAAI1G,GAAG,CAAS,CAAC;EAC1C,IAAIqH,cAAc,GAAG,CAAC;EACtB,MAAMC,WAAW,GAAG,IAAI3I,GAAG,CAA4C,CAAC;EACxE,IAAI4I,YAAY,GAAG,CAAC;EAEpB,MAAMC,gBAAgB,GAAGA,CACvB1I,MAAc,EACd6H,IAAiB,EACjBc,gBAAyB,KACtB;IACH,IAAId,IAAI,KAAK,WAAW,EAAE;MACxB;IACF;IAEA,IAAIc,gBAAgB,EAAE;MACpBJ,cAAc,IAAI,CAAC;IACrB;IAEA,IAAIV,IAAI,KAAK,SAAS,EAAE;MACtBW,WAAW,CAAClG,GAAG,CAACtC,MAAM,EAAE,SAAS,CAAC;MAClC;IACF;IAEA,IAAI,CAACwI,WAAW,CAAClJ,GAAG,CAACU,MAAM,CAAC,EAAE;MAC5BwI,WAAW,CAAClG,GAAG,CAACtC,MAAM,EAAE,MAAM,CAAC;IACjC;EACF,CAAC;EAED,KAAK,MAAM2C,SAAS,IAAIR,GAAG,CAACO,OAAO,CAACE,IAAI,EAAE;IACxC,IACEzE,CAAC,CAAC0E,mBAAmB,CAACF,SAAS,CAAC,IAChCxE,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACA,MAAMgI,SAAS,GAAG,OAAOL,wBAAwB,CAAChC,IAAI,CACpD,IAAI,EACJL,gBAAgB,EAChB3C,SAAS,EACT+E,YACF,CAAC;MACDgB,gBAAgB,CACd/F,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EACtBgG,SAAS,CAACH,IAAI,EACd,EACEG,SAAS,CAACF,UAAU,CAAC9E,MAAM,KAAK,CAAC,IACjCgF,SAAS,CAACF,UAAU,CAAC,CAAC,CAAC,KAAKnF,SAAS,CAEzC,CAAC;MACD,KAAK,MAAM3C,MAAM,IAAIgI,SAAS,CAACJ,gBAAgB,EAAE;QAC/CA,gBAAgB,CAACjB,GAAG,CAAC3G,MAAM,CAAC;MAC9B;MACAsI,QAAQ,CAAC7F,IAAI,CAAC,GAAGuF,SAAS,CAACF,UAAU,CAAC;MACtC;IACF;IAEA,IACE3J,CAAC,CAACkF,wBAAwB,CAACV,SAAS,CAAC,IACrCA,SAAS,CAAC3C,MAAM,IAChB7B,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACA,MAAMgI,SAAS,GAAG,OAAOE,6BAA6B,CAACvC,IAAI,CACzD,IAAI,EACJL,gBAAgB,EAChB3C,SAAS,EACT+E,YACF,CAAC;MACDgB,gBAAgB,CACd/F,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EACtBgG,SAAS,CAACH,IAAI,EACd,EACEG,SAAS,CAACF,UAAU,CAAC9E,MAAM,KAAK,CAAC,IACjCgF,SAAS,CAACF,UAAU,CAAC,CAAC,CAAC,KAAKnF,SAAS,CAEzC,CAAC;MACD,KAAK,MAAM3C,MAAM,IAAIgI,SAAS,CAACJ,gBAAgB,EAAE;QAC/CA,gBAAgB,CAACjB,GAAG,CAAC3G,MAAM,CAAC;MAC9B;MACAsI,QAAQ,CAAC7F,IAAI,CAAC,GAAGuF,SAAS,CAACF,UAAU,CAAC;MACtC;IACF;IAEA,IACE3J,CAAC,CAACuF,sBAAsB,CAACf,SAAS,CAAC,IACnCA,SAAS,CAAC3C,MAAM,IAChB7B,CAAC,CAAC2E,eAAe,CAACH,SAAS,CAAC3C,MAAM,CAAC,EACnC;MACA,MAAMgI,SAAS,GAAG,OAAOG,2BAA2B,CAACxC,IAAI,CACvD,IAAI,EACJL,gBAAgB,EAChB3C,SAAS,EACT+E,YACF,CAAC;MACD,IACEM,SAAS,CAACH,IAAI,KAAK,WAAW,IAC9BG,SAAS,CAACF,UAAU,CAAC9E,MAAM,KAAK,CAAC,IACjCgF,SAAS,CAACF,UAAU,CAAC,CAAC,CAAC,KAAKnF,SAAS,EACrC;QACA8F,YAAY,IAAI,CAAC;MACnB;MACAC,gBAAgB,CACd/F,SAAS,CAAC3C,MAAM,CAACgC,KAAK,EACtBgG,SAAS,CAACH,IAAI,EACd,EACEG,SAAS,CAACF,UAAU,CAAC9E,MAAM,KAAK,CAAC,IACjCgF,SAAS,CAACF,UAAU,CAAC,CAAC,CAAC,KAAKnF,SAAS,CAEzC,CAAC;MACD,KAAK,MAAM3C,MAAM,IAAIgI,SAAS,CAACJ,gBAAgB,EAAE;QAC/CA,gBAAgB,CAACjB,GAAG,CAAC3G,MAAM,CAAC;MAC9B;MACAsI,QAAQ,CAAC7F,IAAI,CAAC,GAAGuF,SAAS,CAACF,UAAU,CAAC;MACtC;IACF;IAEAQ,QAAQ,CAAC7F,IAAI,CAACE,SAAS,CAAC;EAC1B;EAEAR,GAAG,CAACO,OAAO,CAACE,IAAI,GAAG0F,QAAQ;EAC3B,MAAMM,aAAa,GAAG1K,QAAQ,CAACiE,GAAG,CAAC,CAAC4E,IAAI;EACxC,MAAM3E,OAAO,GAAGF,uBAAuB,CAACC,GAAG,CAAC;EAC5C,MAAM0G,kBAAkB,GAAG7H,KAAK,CAACC,IAAI,CAACmB,OAAO,CAACsC,OAAO,CAAC,CAAC,CAAC,CAACuC,OAAO,CAC9D,CAAC,CAACjH,MAAM,EAAE8I,IAAI,CAAC,KAAK;IAClB,MAAM/I,UAAU,GAAG2H,YAAY,CAACnF,GAAG,CAACvC,MAAM,CAAC;IAC3C,IAAID,UAAU,EAAE;MACd,OAAO,CACL;QACE,GAAGA,UAAU;QACb+I;MACF,CAAC,CACF;IACH;IAEA,IAAIlB,gBAAgB,CAACtI,GAAG,CAACU,MAAM,CAAC,EAAE;MAChC,OAAO,CACL;QACE8I,IAAI;QACJtH,QAAQ,EAAExB,MAAM;QAChBA;MACF,CAAC,CACF;IACH;IAEA,OAAO,EAAE;EACX,CACF,CAAC;EAED,OAAO;IACLmC,GAAG;IACH4E,IAAI,EAAE6B,aAAa;IACnBG,qBAAqB,EAAE/H,KAAK,CAACC,IAAI,CAACuH,WAAW,CAAC9D,OAAO,CAAC,CAAC,CAAC,CACrDsB,MAAM,CAAC,CAAC,GAAG6B,IAAI,CAAC,KAAKA,IAAI,KAAK,MAAM,CAAC,CACrC/H,GAAG,CAAC,CAAC,CAACE,MAAM,CAAC,KAAKA,MAAM,CAAC;IAC5BoC,OAAO;IACPmG,cAAc;IACdS,sBAAsB,EAAEhI,KAAK,CAACC,IAAI,CAACuH,WAAW,CAAC9D,OAAO,CAAC,CAAC,CAAC,CACtDsB,MAAM,CAAC,CAAC,GAAG6B,IAAI,CAAC,KAAKA,IAAI,KAAK,SAAS,CAAC,CACxC/H,GAAG,CAAC,CAAC,CAACE,MAAM,CAAC,KAAKA,MAAM,CAAC;IAC5B6I,kBAAkB;IAClBJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -1,68 +0,0 @@
1
- import { createId } from './createId';
2
- import { reference } from './scopeHelpers';
3
- export function getOrAddWywPreval(scope) {
4
- const rootScope = scope.getProgramParent();
5
- const programPath = rootScope.path;
6
- let object = programPath.getData('__wywPreval');
7
- if (object) {
8
- return object;
9
- }
10
- if (programPath.node.sourceType === 'script') {
11
- // CJS exports.__wywPreval = {};
12
- const prevalExport = {
13
- expression: {
14
- type: 'AssignmentExpression',
15
- operator: '=',
16
- left: {
17
- computed: false,
18
- object: createId('exports'),
19
- property: createId('__wywPreval'),
20
- type: 'MemberExpression'
21
- },
22
- right: {
23
- properties: [],
24
- type: 'ObjectExpression'
25
- }
26
- },
27
- type: 'ExpressionStatement'
28
- };
29
- const [inserted] = programPath.pushContainer('body', [prevalExport]);
30
- object = inserted.get('expression.right');
31
- } else {
32
- // ESM export const __wywPreval = {};
33
- const prevalExport = {
34
- declaration: {
35
- declarations: [{
36
- id: createId('__wywPreval'),
37
- init: {
38
- properties: [],
39
- type: 'ObjectExpression'
40
- },
41
- type: 'VariableDeclarator'
42
- }],
43
- kind: 'const',
44
- type: 'VariableDeclaration'
45
- },
46
- specifiers: [],
47
- type: 'ExportNamedDeclaration'
48
- };
49
- const [inserted] = programPath.pushContainer('body', [prevalExport]);
50
- object = inserted.get('declaration.declarations.0.init');
51
- }
52
- programPath.setData('__wywPreval', object);
53
- return object;
54
- }
55
- export function addIdentifierToWywPreval(scope, name) {
56
- const rootScope = scope.getProgramParent();
57
- const object = getOrAddWywPreval(rootScope);
58
- const newProperty = {
59
- type: 'ObjectProperty',
60
- key: createId(name),
61
- value: createId(name),
62
- computed: false,
63
- shorthand: false
64
- };
65
- const [inserted] = object.pushContainer('properties', [newProperty]);
66
- reference(inserted.get('value'));
67
- }
68
- //# sourceMappingURL=addIdentifierToWywPreval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addIdentifierToWywPreval.js","names":["createId","reference","getOrAddWywPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToWywPreval","name","newProperty","key","value","shorthand"],"sources":["../../src/utils/addIdentifierToWywPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddWywPreval(scope: Scope): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__wywPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__wywPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__wywPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __wywPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__wywPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__wywPreval', object);\n return object;\n}\n\nexport function addIdentifierToWywPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddWywPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":"AAUA,SAASA,QAAQ,QAAQ,YAAY;AACrC,SAASC,SAAS,QAAQ,gBAAgB;AAE1C,OAAO,SAASC,iBAAiBA,CAACC,KAAY,EAA8B;EAC1E,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,aAAa,CAAC;EAC/C,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAER,QAAQ,CAAC,SAAS,CAAC;UAC3BkB,QAAQ,EAAElB,QAAQ,CAAC,aAAa,CAAC;UACjCc,IAAI,EAAE;QACR,CAAC;QACDK,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdN,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACO,QAAQ,CAAC,GAAGf,WAAW,CAACgB,aAAa,CAAC,MAAM,EAAE,CAACV,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGa,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMX,YAAoC,GAAG;MAC3CY,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE1B,QAAQ,CAAC,aAAa,CAAC;UAC3B2B,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdN,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDc,IAAI,EAAE,OAAO;QACbd,IAAI,EAAE;MACR,CAAC;MACDe,UAAU,EAAE,EAAE;MACdf,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACO,QAAQ,CAAC,GAAGf,WAAW,CAACgB,aAAa,CAAC,MAAM,EAAE,CAACV,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGa,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAjB,WAAW,CAACwB,OAAO,CAAC,aAAa,EAAEtB,MAAM,CAAC;EAC1C,OAAOA,MAAM;AACf;AAEA,OAAO,SAASuB,wBAAwBA,CAAC5B,KAAY,EAAE6B,IAAY,EAAE;EACnE,MAAM5B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,iBAAiB,CAACE,SAAS,CAAC;EAC3C,MAAM6B,WAA2B,GAAG;IAClCnB,IAAI,EAAE,gBAAgB;IACtBoB,GAAG,EAAElC,QAAQ,CAACgC,IAAI,CAAC;IACnBG,KAAK,EAAEnC,QAAQ,CAACgC,IAAI,CAAC;IACrBf,QAAQ,EAAE,KAAK;IACfmB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGb,MAAM,CAACc,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpEhC,SAAS,CAACoB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D","ignoreList":[]}