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

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 (801) hide show
  1. package/esm/cache.js +433 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +171 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2275 -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/runner.js +1878 -0
  14. package/esm/eval/runner.js.map +1 -0
  15. package/esm/eval/serialize.js +333 -0
  16. package/esm/eval/serialize.js.map +1 -0
  17. package/esm/eval/writeQueue.js +81 -0
  18. package/esm/eval/writeQueue.js.map +1 -0
  19. package/esm/evaluators/index.js +11 -12
  20. package/esm/evaluators/index.js.map +1 -1
  21. package/esm/index.js +25 -29
  22. package/esm/index.js.map +1 -1
  23. package/esm/module.js +923 -520
  24. package/esm/module.js.map +1 -1
  25. package/esm/shaker.js +14 -80
  26. package/esm/shaker.js.map +1 -1
  27. package/esm/transform/BaseEntrypoint.js +162 -164
  28. package/esm/transform/BaseEntrypoint.js.map +1 -1
  29. package/esm/transform/Entrypoint.helpers.js +96 -253
  30. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  31. package/esm/transform/Entrypoint.js +336 -270
  32. package/esm/transform/Entrypoint.js.map +1 -1
  33. package/esm/transform/Entrypoint.types.js +1 -1
  34. package/esm/transform/Entrypoint.types.js.map +1 -1
  35. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  36. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  37. package/esm/transform/actions/AbortError.js +6 -6
  38. package/esm/transform/actions/AbortError.js.map +1 -1
  39. package/esm/transform/actions/BaseAction.js +140 -136
  40. package/esm/transform/actions/BaseAction.js.map +1 -1
  41. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  42. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  43. package/esm/transform/actions/actionRunner.js +63 -66
  44. package/esm/transform/actions/actionRunner.js.map +1 -1
  45. package/esm/transform/actions/types.js +1 -1
  46. package/esm/transform/actions/types.js.map +1 -1
  47. package/esm/transform/barrelManifest.types.js +2 -0
  48. package/esm/transform/barrelManifest.types.js.map +1 -0
  49. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  50. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  51. package/esm/transform/generators/collect.js +27 -55
  52. package/esm/transform/generators/collect.js.map +1 -1
  53. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  54. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  55. package/esm/transform/generators/evalFile.js +48 -47
  56. package/esm/transform/generators/evalFile.js.map +1 -1
  57. package/esm/transform/generators/extract.js +78 -90
  58. package/esm/transform/generators/extract.js.map +1 -1
  59. package/esm/transform/generators/getExports.js +57 -74
  60. package/esm/transform/generators/getExports.js.map +1 -1
  61. package/esm/transform/generators/index.js +11 -11
  62. package/esm/transform/generators/index.js.map +1 -1
  63. package/esm/transform/generators/processEntrypoint.js +93 -67
  64. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  65. package/esm/transform/generators/processImports.js +102 -67
  66. package/esm/transform/generators/processImports.js.map +1 -1
  67. package/esm/transform/generators/resolveImports.js +212 -197
  68. package/esm/transform/generators/resolveImports.js.map +1 -1
  69. package/esm/transform/generators/resolveStaticOxcValues/cache.js +182 -0
  70. package/esm/transform/generators/resolveStaticOxcValues/cache.js.map +1 -0
  71. package/esm/transform/generators/resolveStaticOxcValues/candidateResolver.js +146 -0
  72. package/esm/transform/generators/resolveStaticOxcValues/candidateResolver.js.map +1 -0
  73. package/esm/transform/generators/resolveStaticOxcValues/dependencies.js +33 -0
  74. package/esm/transform/generators/resolveStaticOxcValues/dependencies.js.map +1 -0
  75. package/esm/transform/generators/resolveStaticOxcValues/environment.js +29 -0
  76. package/esm/transform/generators/resolveStaticOxcValues/environment.js.map +1 -0
  77. package/esm/transform/generators/resolveStaticOxcValues/exportResolver.js +351 -0
  78. package/esm/transform/generators/resolveStaticOxcValues/exportResolver.js.map +1 -0
  79. package/esm/transform/generators/resolveStaticOxcValues/exportTargets.js +253 -0
  80. package/esm/transform/generators/resolveStaticOxcValues/exportTargets.js.map +1 -0
  81. package/esm/transform/generators/resolveStaticOxcValues/objectAssign.js +310 -0
  82. package/esm/transform/generators/resolveStaticOxcValues/objectAssign.js.map +1 -0
  83. package/esm/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js +74 -0
  84. package/esm/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js.map +1 -0
  85. package/esm/transform/generators/resolveStaticOxcValues/opaqueRuntime.js +229 -0
  86. package/esm/transform/generators/resolveStaticOxcValues/opaqueRuntime.js.map +1 -0
  87. package/esm/transform/generators/resolveStaticOxcValues/processorStaticExport.js +172 -0
  88. package/esm/transform/generators/resolveStaticOxcValues/processorStaticExport.js.map +1 -0
  89. package/esm/transform/generators/resolveStaticOxcValues/processorStaticModel.js +476 -0
  90. package/esm/transform/generators/resolveStaticOxcValues/processorStaticModel.js.map +1 -0
  91. package/esm/transform/generators/resolveStaticOxcValues/processorTarget.js +55 -0
  92. package/esm/transform/generators/resolveStaticOxcValues/processorTarget.js.map +1 -0
  93. package/esm/transform/generators/resolveStaticOxcValues/programAnalysis.js +123 -0
  94. package/esm/transform/generators/resolveStaticOxcValues/programAnalysis.js.map +1 -0
  95. package/esm/transform/generators/resolveStaticOxcValues/prune.js +186 -0
  96. package/esm/transform/generators/resolveStaticOxcValues/prune.js.map +1 -0
  97. package/esm/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js +183 -0
  98. package/esm/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js.map +1 -0
  99. package/esm/transform/generators/resolveStaticOxcValues/staticExpression.js +298 -0
  100. package/esm/transform/generators/resolveStaticOxcValues/staticExpression.js.map +1 -0
  101. package/esm/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js +298 -0
  102. package/esm/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js.map +1 -0
  103. package/esm/transform/generators/resolveStaticOxcValues/types.js +3 -0
  104. package/esm/transform/generators/resolveStaticOxcValues/types.js.map +1 -0
  105. package/esm/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js +59 -0
  106. package/esm/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js.map +1 -0
  107. package/esm/transform/generators/resolveStaticOxcValues.js +2 -0
  108. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  109. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  110. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  111. package/esm/transform/generators/transform.js +251 -248
  112. package/esm/transform/generators/transform.js.map +1 -1
  113. package/esm/transform/generators/workflow.js +87 -90
  114. package/esm/transform/generators/workflow.js.map +1 -1
  115. package/esm/transform/helpers/loadWywOptions.js +183 -74
  116. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  117. package/esm/transform/helpers/withDefaultServices.js +13 -22
  118. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  119. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  120. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  121. package/esm/transform/oxcBarrelManifest.js +349 -0
  122. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  123. package/esm/transform/rootLog.js +3 -3
  124. package/esm/transform/rootLog.js.map +1 -1
  125. package/esm/transform/syntax.js +2 -0
  126. package/esm/transform/syntax.js.map +1 -0
  127. package/esm/transform/types.js +2 -2
  128. package/esm/transform/types.js.map +1 -1
  129. package/esm/transform.js +125 -147
  130. package/esm/transform.js.map +1 -1
  131. package/esm/types.js +4 -1
  132. package/esm/types.js.map +1 -1
  133. package/esm/utils/EventEmitter.js +79 -48
  134. package/esm/utils/EventEmitter.js.map +1 -1
  135. package/esm/utils/ShakerMetadata.js +2 -2
  136. package/esm/utils/ShakerMetadata.js.map +1 -1
  137. package/esm/utils/TransformDiagnostics.js +9 -9
  138. package/esm/utils/TransformDiagnostics.js.map +1 -1
  139. package/esm/utils/TransformMetadata.js +24 -26
  140. package/esm/utils/TransformMetadata.js.map +1 -1
  141. package/esm/utils/applyOxcProcessors/applyOxcProcessors.js +160 -0
  142. package/esm/utils/applyOxcProcessors/applyOxcProcessors.js.map +1 -0
  143. package/esm/utils/applyOxcProcessors/cleanupBindings.js +157 -0
  144. package/esm/utils/applyOxcProcessors/cleanupBindings.js.map +1 -0
  145. package/esm/utils/applyOxcProcessors/cleanupRemovals.js +431 -0
  146. package/esm/utils/applyOxcProcessors/cleanupRemovals.js.map +1 -0
  147. package/esm/utils/applyOxcProcessors/displayName.js +93 -0
  148. package/esm/utils/applyOxcProcessors/displayName.js.map +1 -0
  149. package/esm/utils/applyOxcProcessors/expressionValues.js +152 -0
  150. package/esm/utils/applyOxcProcessors/expressionValues.js.map +1 -0
  151. package/esm/utils/applyOxcProcessors/processorFactory.js +62 -0
  152. package/esm/utils/applyOxcProcessors/processorFactory.js.map +1 -0
  153. package/esm/utils/applyOxcProcessors/processorUsages.js +143 -0
  154. package/esm/utils/applyOxcProcessors/processorUsages.js.map +1 -0
  155. package/esm/utils/applyOxcProcessors/sameFileStaticValues.js +207 -0
  156. package/esm/utils/applyOxcProcessors/sameFileStaticValues.js.map +1 -0
  157. package/esm/utils/applyOxcProcessors/shared.js +29 -0
  158. package/esm/utils/applyOxcProcessors/shared.js.map +1 -0
  159. package/esm/utils/applyOxcProcessors/types.js +2 -0
  160. package/esm/utils/applyOxcProcessors/types.js.map +1 -0
  161. package/esm/utils/applyOxcProcessors.js +2 -0
  162. package/esm/utils/applyOxcProcessors.js.map +1 -0
  163. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  164. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  165. package/esm/utils/collectOxcRuntime/normalizeRuntimeCode.js +157 -0
  166. package/esm/utils/collectOxcRuntime/normalizeRuntimeCode.js.map +1 -0
  167. package/esm/utils/collectOxcRuntime/sourceMap.js +36 -0
  168. package/esm/utils/collectOxcRuntime/sourceMap.js.map +1 -0
  169. package/esm/utils/collectOxcRuntime/types.js +2 -0
  170. package/esm/utils/collectOxcRuntime/types.js.map +1 -0
  171. package/esm/utils/collectOxcRuntime.js +32 -0
  172. package/esm/utils/collectOxcRuntime.js.map +1 -0
  173. package/esm/utils/collectOxcTemplateDependencies/expressionExtraction.js +496 -0
  174. package/esm/utils/collectOxcTemplateDependencies/expressionExtraction.js.map +1 -0
  175. package/esm/utils/collectOxcTemplateDependencies/expressionReplacements.js +113 -0
  176. package/esm/utils/collectOxcTemplateDependencies/expressionReplacements.js.map +1 -0
  177. package/esm/utils/collectOxcTemplateDependencies/scopeAnalysis.js +387 -0
  178. package/esm/utils/collectOxcTemplateDependencies/scopeAnalysis.js.map +1 -0
  179. package/esm/utils/collectOxcTemplateDependencies/staticBindings.js +17 -0
  180. package/esm/utils/collectOxcTemplateDependencies/staticBindings.js.map +1 -0
  181. package/esm/utils/collectOxcTemplateDependencies/staticEvaluator.js +540 -0
  182. package/esm/utils/collectOxcTemplateDependencies/staticEvaluator.js.map +1 -0
  183. package/esm/utils/collectOxcTemplateDependencies/types.js +2 -0
  184. package/esm/utils/collectOxcTemplateDependencies/types.js.map +1 -0
  185. package/esm/utils/collectOxcTemplateDependencies.js +4 -0
  186. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  187. package/esm/utils/dispose-polyfill.js +3 -4
  188. package/esm/utils/dispose-polyfill.js.map +1 -1
  189. package/esm/utils/getFileIdx.js +6 -6
  190. package/esm/utils/getFileIdx.js.map +1 -1
  191. package/esm/utils/getPluginKey.js +12 -12
  192. package/esm/utils/getPluginKey.js.map +1 -1
  193. package/esm/utils/getVisitorKeys.js +9 -3
  194. package/esm/utils/getVisitorKeys.js.map +1 -1
  195. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  196. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  197. package/esm/utils/hasWywPreval.js +5 -5
  198. package/esm/utils/hasWywPreval.js.map +1 -1
  199. package/esm/utils/importOverrides.js +75 -90
  200. package/esm/utils/importOverrides.js.map +1 -1
  201. package/esm/utils/isNode.js +2 -2
  202. package/esm/utils/isNode.js.map +1 -1
  203. package/esm/utils/isNotNull.js +2 -2
  204. package/esm/utils/isNotNull.js.map +1 -1
  205. package/esm/utils/isSerializable.js +11 -11
  206. package/esm/utils/isSerializable.js.map +1 -1
  207. package/esm/utils/nativeResolver.js +93 -0
  208. package/esm/utils/nativeResolver.js.map +1 -0
  209. package/esm/utils/oxc/ast.js +28 -0
  210. package/esm/utils/oxc/ast.js.map +1 -0
  211. package/esm/utils/oxc/parse.js +3 -0
  212. package/esm/utils/oxc/parse.js.map +1 -0
  213. package/esm/utils/oxc/replacements.js +14 -0
  214. package/esm/utils/oxc/replacements.js.map +1 -0
  215. package/esm/utils/oxc/sourceLocations.js +59 -0
  216. package/esm/utils/oxc/sourceLocations.js.map +1 -0
  217. package/esm/utils/oxcAstService.js +121 -0
  218. package/esm/utils/oxcAstService.js.map +1 -0
  219. package/esm/utils/oxcEmit.js +447 -0
  220. package/esm/utils/oxcEmit.js.map +1 -0
  221. package/esm/utils/oxcPreevalStage/evalStrategy.js +3 -0
  222. package/esm/utils/oxcPreevalStage/evalStrategy.js.map +1 -0
  223. package/esm/utils/oxcPreevalStage/prepareCode.js +21 -0
  224. package/esm/utils/oxcPreevalStage/prepareCode.js.map +1 -0
  225. package/esm/utils/oxcPreevalStage/prevalExport.js +23 -0
  226. package/esm/utils/oxcPreevalStage/prevalExport.js.map +1 -0
  227. package/esm/utils/oxcPreevalStage/processors.js +17 -0
  228. package/esm/utils/oxcPreevalStage/processors.js.map +1 -0
  229. package/esm/utils/oxcPreevalStage/staticOverlay.js +18 -0
  230. package/esm/utils/oxcPreevalStage/staticOverlay.js.map +1 -0
  231. package/esm/utils/oxcPreevalStage/types.js +2 -0
  232. package/esm/utils/oxcPreevalStage/types.js.map +1 -0
  233. package/esm/utils/oxcPreevalStage.js +41 -0
  234. package/esm/utils/oxcPreevalStage.js.map +1 -0
  235. package/esm/utils/oxcPreevalTransforms.js +1065 -0
  236. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  237. package/esm/utils/oxcShaker.js +662 -0
  238. package/esm/utils/oxcShaker.js.map +1 -0
  239. package/esm/utils/parseOxc.js +37 -0
  240. package/esm/utils/parseOxc.js.map +1 -0
  241. package/esm/utils/parseRequest.js +27 -27
  242. package/esm/utils/parseRequest.js.map +1 -1
  243. package/esm/utils/peek.js +1 -1
  244. package/esm/utils/peek.js.map +1 -1
  245. package/esm/utils/processorLookup.js +125 -0
  246. package/esm/utils/processorLookup.js.map +1 -0
  247. package/esm/utils/processorStaticSemantics.js +157 -0
  248. package/esm/utils/processorStaticSemantics.js.map +1 -0
  249. package/esm/utils/resolveWithConditions.js +99 -0
  250. package/esm/utils/resolveWithConditions.js.map +1 -0
  251. package/esm/vm/createVmContext.js +140 -141
  252. package/esm/vm/createVmContext.js.map +1 -1
  253. package/esm/vm/process.js +11 -13
  254. package/esm/vm/process.js.map +1 -1
  255. package/package.json +19 -26
  256. package/types/cache.d.ts +17 -8
  257. package/types/cache.js +245 -95
  258. package/types/debug/fileReporter.js +68 -23
  259. package/types/eval/broker.d.ts +92 -0
  260. package/types/eval/broker.js +2411 -0
  261. package/types/eval/lru.d.ts +10 -0
  262. package/types/eval/lru.js +36 -0
  263. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  264. package/types/eval/prepareModuleOnDemand.js +24 -0
  265. package/types/eval/protocol.d.ts +111 -0
  266. package/types/eval/protocol.js +1 -0
  267. package/types/eval/serialize.d.ts +78 -0
  268. package/types/eval/serialize.js +357 -0
  269. package/types/eval/writeQueue.d.ts +13 -0
  270. package/types/eval/writeQueue.js +80 -0
  271. package/types/evaluators/index.d.ts +2 -2
  272. package/types/evaluators/index.js +6 -9
  273. package/types/index.d.ts +3 -6
  274. package/types/index.js +24 -82
  275. package/types/module.d.ts +38 -7
  276. package/types/module.js +613 -192
  277. package/types/shaker.d.ts +2 -10
  278. package/types/shaker.js +10 -100
  279. package/types/transform/BaseEntrypoint.js +6 -11
  280. package/types/transform/Entrypoint.d.ts +15 -15
  281. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  282. package/types/transform/Entrypoint.helpers.js +43 -203
  283. package/types/transform/Entrypoint.js +130 -53
  284. package/types/transform/Entrypoint.types.d.ts +31 -6
  285. package/types/transform/Entrypoint.types.js +1 -2
  286. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  287. package/types/transform/EvaluatedEntrypoint.js +7 -6
  288. package/types/transform/actions/AbortError.js +2 -7
  289. package/types/transform/actions/BaseAction.js +4 -8
  290. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  291. package/types/transform/actions/actionRunner.js +8 -12
  292. package/types/transform/actions/types.d.ts +2 -2
  293. package/types/transform/actions/types.js +1 -2
  294. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  295. package/types/transform/barrelManifest.types.js +1 -0
  296. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  297. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  298. package/types/transform/generators/collect.js +13 -39
  299. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  300. package/types/transform/generators/evalFile.d.ts +2 -2
  301. package/types/transform/generators/evalFile.js +26 -28
  302. package/types/transform/generators/extract.js +5 -8
  303. package/types/transform/generators/getExports.js +23 -30
  304. package/types/transform/generators/index.d.ts +2 -2
  305. package/types/transform/generators/index.js +11 -14
  306. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  307. package/types/transform/generators/processEntrypoint.js +60 -26
  308. package/types/transform/generators/processImports.d.ts +0 -3
  309. package/types/transform/generators/processImports.js +60 -20
  310. package/types/transform/generators/resolveImports.d.ts +3 -1
  311. package/types/transform/generators/resolveImports.js +66 -23
  312. package/types/transform/generators/resolveStaticOxcValues/cache.d.ts +25 -0
  313. package/types/transform/generators/resolveStaticOxcValues/cache.js +182 -0
  314. package/types/transform/generators/resolveStaticOxcValues/candidateResolver.d.ts +5 -0
  315. package/types/transform/generators/resolveStaticOxcValues/candidateResolver.js +149 -0
  316. package/types/transform/generators/resolveStaticOxcValues/dependencies.d.ts +6 -0
  317. package/types/transform/generators/resolveStaticOxcValues/dependencies.js +37 -0
  318. package/types/transform/generators/resolveStaticOxcValues/environment.d.ts +12 -0
  319. package/types/transform/generators/resolveStaticOxcValues/environment.js +32 -0
  320. package/types/transform/generators/resolveStaticOxcValues/exportResolver.d.ts +4 -0
  321. package/types/transform/generators/resolveStaticOxcValues/exportResolver.js +358 -0
  322. package/types/transform/generators/resolveStaticOxcValues/exportTargets.d.ts +20 -0
  323. package/types/transform/generators/resolveStaticOxcValues/exportTargets.js +285 -0
  324. package/types/transform/generators/resolveStaticOxcValues/objectAssign.d.ts +41 -0
  325. package/types/transform/generators/resolveStaticOxcValues/objectAssign.js +352 -0
  326. package/types/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.d.ts +6 -0
  327. package/types/transform/generators/resolveStaticOxcValues/objectAssignStaticExport.js +88 -0
  328. package/types/transform/generators/resolveStaticOxcValues/opaqueRuntime.d.ts +13 -0
  329. package/types/transform/generators/resolveStaticOxcValues/opaqueRuntime.js +263 -0
  330. package/types/transform/generators/resolveStaticOxcValues/processorStaticExport.d.ts +4 -0
  331. package/types/transform/generators/resolveStaticOxcValues/processorStaticExport.js +191 -0
  332. package/types/transform/generators/resolveStaticOxcValues/processorStaticModel.d.ts +40 -0
  333. package/types/transform/generators/resolveStaticOxcValues/processorStaticModel.js +516 -0
  334. package/types/transform/generators/resolveStaticOxcValues/processorTarget.d.ts +5 -0
  335. package/types/transform/generators/resolveStaticOxcValues/processorTarget.js +62 -0
  336. package/types/transform/generators/resolveStaticOxcValues/programAnalysis.d.ts +11 -0
  337. package/types/transform/generators/resolveStaticOxcValues/programAnalysis.js +133 -0
  338. package/types/transform/generators/resolveStaticOxcValues/prune.d.ts +15 -0
  339. package/types/transform/generators/resolveStaticOxcValues/prune.js +220 -0
  340. package/types/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.d.ts +2 -0
  341. package/types/transform/generators/resolveStaticOxcValues/resolveStaticOxcPreevalValues.js +197 -0
  342. package/types/transform/generators/resolveStaticOxcValues/staticExpression.d.ts +25 -0
  343. package/types/transform/generators/resolveStaticOxcValues/staticExpression.js +391 -0
  344. package/types/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.d.ts +14 -0
  345. package/types/transform/generators/resolveStaticOxcValues/staticExpressionDependencies.js +304 -0
  346. package/types/transform/generators/resolveStaticOxcValues/types.d.ts +99 -0
  347. package/types/transform/generators/resolveStaticOxcValues/types.js +2 -0
  348. package/types/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.d.ts +7 -0
  349. package/types/transform/generators/resolveStaticOxcValues/zeroArgFunctionStaticExport.js +64 -0
  350. package/types/transform/generators/resolveStaticOxcValues.d.ts +1 -0
  351. package/types/transform/generators/resolveStaticOxcValues.js +1 -0
  352. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  353. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  354. package/types/transform/generators/transform.d.ts +3 -7
  355. package/types/transform/generators/transform.js +217 -199
  356. package/types/transform/generators/workflow.js +62 -45
  357. package/types/transform/helpers/loadWywOptions.js +115 -21
  358. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  359. package/types/transform/helpers/withDefaultServices.js +6 -44
  360. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  361. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  362. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  363. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  364. package/types/transform/rootLog.js +2 -5
  365. package/types/transform/syntax.d.ts +38 -0
  366. package/types/transform/syntax.js +1 -0
  367. package/types/transform/types.d.ts +9 -6
  368. package/types/transform/types.js +1 -4
  369. package/types/transform.d.ts +2 -2
  370. package/types/transform.js +90 -101
  371. package/types/types.d.ts +0 -23
  372. package/types/types.js +1 -2
  373. package/types/utils/EventEmitter.d.ts +16 -1
  374. package/types/utils/EventEmitter.js +47 -18
  375. package/types/utils/ShakerMetadata.js +1 -5
  376. package/types/utils/TransformDiagnostics.js +3 -7
  377. package/types/utils/TransformMetadata.js +8 -16
  378. package/types/utils/applyOxcProcessors/applyOxcProcessors.d.ts +8 -0
  379. package/types/utils/applyOxcProcessors/applyOxcProcessors.js +167 -0
  380. package/types/utils/applyOxcProcessors/cleanupBindings.d.ts +12 -0
  381. package/types/utils/applyOxcProcessors/cleanupBindings.js +189 -0
  382. package/types/utils/applyOxcProcessors/cleanupRemovals.d.ts +16 -0
  383. package/types/utils/applyOxcProcessors/cleanupRemovals.js +482 -0
  384. package/types/utils/applyOxcProcessors/displayName.d.ts +9 -0
  385. package/types/utils/applyOxcProcessors/displayName.js +113 -0
  386. package/types/utils/applyOxcProcessors/expressionValues.d.ts +11 -0
  387. package/types/utils/applyOxcProcessors/expressionValues.js +170 -0
  388. package/types/utils/applyOxcProcessors/processorFactory.d.ts +7 -0
  389. package/types/utils/applyOxcProcessors/processorFactory.js +70 -0
  390. package/types/utils/applyOxcProcessors/processorUsages.d.ts +16 -0
  391. package/types/utils/applyOxcProcessors/processorUsages.js +163 -0
  392. package/types/utils/applyOxcProcessors/sameFileStaticValues.d.ts +23 -0
  393. package/types/utils/applyOxcProcessors/sameFileStaticValues.js +211 -0
  394. package/types/utils/applyOxcProcessors/shared.d.ts +10 -0
  395. package/types/utils/applyOxcProcessors/shared.js +37 -0
  396. package/types/utils/applyOxcProcessors/types.d.ts +88 -0
  397. package/types/utils/applyOxcProcessors/types.js +1 -0
  398. package/types/utils/applyOxcProcessors.d.ts +1 -0
  399. package/types/utils/applyOxcProcessors.js +1 -0
  400. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  401. package/types/utils/collectOxcExportsAndImports.js +957 -0
  402. package/types/utils/collectOxcRuntime/normalizeRuntimeCode.d.ts +1 -0
  403. package/types/utils/collectOxcRuntime/normalizeRuntimeCode.js +185 -0
  404. package/types/utils/collectOxcRuntime/sourceMap.d.ts +2 -0
  405. package/types/utils/collectOxcRuntime/sourceMap.js +37 -0
  406. package/types/utils/collectOxcRuntime/types.d.ts +16 -0
  407. package/types/utils/collectOxcRuntime/types.js +1 -0
  408. package/types/utils/collectOxcRuntime.d.ts +4 -0
  409. package/types/utils/collectOxcRuntime.js +31 -0
  410. package/types/utils/collectOxcTemplateDependencies/expressionExtraction.d.ts +6 -0
  411. package/types/utils/collectOxcTemplateDependencies/expressionExtraction.js +550 -0
  412. package/types/utils/collectOxcTemplateDependencies/expressionReplacements.d.ts +11 -0
  413. package/types/utils/collectOxcTemplateDependencies/expressionReplacements.js +131 -0
  414. package/types/utils/collectOxcTemplateDependencies/scopeAnalysis.d.ts +20 -0
  415. package/types/utils/collectOxcTemplateDependencies/scopeAnalysis.js +434 -0
  416. package/types/utils/collectOxcTemplateDependencies/staticBindings.d.ts +7 -0
  417. package/types/utils/collectOxcTemplateDependencies/staticBindings.js +13 -0
  418. package/types/utils/collectOxcTemplateDependencies/staticEvaluator.d.ts +13 -0
  419. package/types/utils/collectOxcTemplateDependencies/staticEvaluator.js +626 -0
  420. package/types/utils/collectOxcTemplateDependencies/types.d.ts +116 -0
  421. package/types/utils/collectOxcTemplateDependencies/types.js +1 -0
  422. package/types/utils/collectOxcTemplateDependencies.d.ts +4 -0
  423. package/types/utils/collectOxcTemplateDependencies.js +3 -0
  424. package/types/utils/getFileIdx.js +1 -4
  425. package/types/utils/getPluginKey.d.ts +5 -2
  426. package/types/utils/getPluginKey.js +2 -6
  427. package/types/utils/getVisitorKeys.d.ts +4 -4
  428. package/types/utils/getVisitorKeys.js +9 -6
  429. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  430. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  431. package/types/utils/hasWywPreval.js +1 -4
  432. package/types/utils/importOverrides.js +17 -27
  433. package/types/utils/isNode.d.ts +2 -2
  434. package/types/utils/isNode.js +2 -6
  435. package/types/utils/isNotNull.js +1 -4
  436. package/types/utils/isSerializable.js +3 -6
  437. package/types/utils/nativeResolver.d.ts +13 -0
  438. package/types/utils/nativeResolver.js +91 -0
  439. package/types/utils/oxc/ast.d.ts +4 -0
  440. package/types/utils/oxc/ast.js +37 -0
  441. package/types/utils/oxc/parse.d.ts +3 -0
  442. package/types/utils/oxc/parse.js +2 -0
  443. package/types/utils/oxc/replacements.d.ts +12 -0
  444. package/types/utils/oxc/replacements.js +18 -0
  445. package/types/utils/oxc/sourceLocations.d.ts +5 -0
  446. package/types/utils/oxc/sourceLocations.js +63 -0
  447. package/types/utils/oxcAstService.d.ts +11 -0
  448. package/types/utils/oxcAstService.js +79 -0
  449. package/types/utils/oxcEmit.d.ts +19 -0
  450. package/types/utils/oxcEmit.js +506 -0
  451. package/types/utils/oxcPreevalStage/evalStrategy.d.ts +3 -0
  452. package/types/utils/oxcPreevalStage/evalStrategy.js +2 -0
  453. package/types/utils/oxcPreevalStage/prepareCode.d.ts +3 -0
  454. package/types/utils/oxcPreevalStage/prepareCode.js +20 -0
  455. package/types/utils/oxcPreevalStage/prevalExport.d.ts +1 -0
  456. package/types/utils/oxcPreevalStage/prevalExport.js +22 -0
  457. package/types/utils/oxcPreevalStage/processors.d.ts +10 -0
  458. package/types/utils/oxcPreevalStage/processors.js +16 -0
  459. package/types/utils/oxcPreevalStage/staticOverlay.d.ts +3 -0
  460. package/types/utils/oxcPreevalStage/staticOverlay.js +23 -0
  461. package/types/utils/oxcPreevalStage/types.d.ts +22 -0
  462. package/types/utils/oxcPreevalStage/types.js +1 -0
  463. package/types/utils/oxcPreevalStage.d.ts +4 -0
  464. package/types/utils/oxcPreevalStage.js +40 -0
  465. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  466. package/types/utils/oxcPreevalTransforms.js +1192 -0
  467. package/types/utils/oxcShaker.d.ts +13 -0
  468. package/types/utils/oxcShaker.js +751 -0
  469. package/types/utils/parseOxc.d.ts +11 -0
  470. package/types/utils/parseOxc.js +38 -0
  471. package/types/utils/parseRequest.js +2 -7
  472. package/types/utils/peek.js +1 -5
  473. package/types/utils/processorLookup.d.ts +8 -0
  474. package/types/utils/processorLookup.js +135 -0
  475. package/types/utils/processorStaticSemantics.d.ts +13 -0
  476. package/types/utils/processorStaticSemantics.js +191 -0
  477. package/types/utils/resolveWithConditions.d.ts +12 -0
  478. package/types/utils/resolveWithConditions.js +103 -0
  479. package/types/vm/createVmContext.d.ts +2 -2
  480. package/types/vm/createVmContext.js +25 -62
  481. package/types/vm/process.js +20 -26
  482. package/esm/babel.js +0 -2
  483. package/esm/babel.js.map +0 -1
  484. package/esm/options/buildOptions.js +0 -168
  485. package/esm/options/buildOptions.js.map +0 -1
  486. package/esm/options/buildOptions.test.js +0 -138
  487. package/esm/options/buildOptions.test.js.map +0 -1
  488. package/esm/options/loadBabelOptions.js +0 -24
  489. package/esm/options/loadBabelOptions.js.map +0 -1
  490. package/esm/plugins/babel-transform.js +0 -53
  491. package/esm/plugins/babel-transform.js.map +0 -1
  492. package/esm/plugins/collector.js +0 -60
  493. package/esm/plugins/collector.js.map +0 -1
  494. package/esm/plugins/dynamic-import.js +0 -56
  495. package/esm/plugins/dynamic-import.js.map +0 -1
  496. package/esm/plugins/preeval.js +0 -73
  497. package/esm/plugins/preeval.js.map +0 -1
  498. package/esm/plugins/shaker.js +0 -680
  499. package/esm/plugins/shaker.js.map +0 -1
  500. package/esm/transform/barrelManifest.js +0 -291
  501. package/esm/transform/barrelManifest.js.map +0 -1
  502. package/esm/transform/generators/explodeReexports.js +0 -64
  503. package/esm/transform/generators/explodeReexports.js.map +0 -1
  504. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  505. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  506. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  507. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  508. package/esm/utils/collectExportsAndImports.js +0 -1157
  509. package/esm/utils/collectExportsAndImports.js.map +0 -1
  510. package/esm/utils/collectTemplateDependencies.js +0 -228
  511. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  512. package/esm/utils/createId.js +0 -6
  513. package/esm/utils/createId.js.map +0 -1
  514. package/esm/utils/findIdentifiers.js +0 -62
  515. package/esm/utils/findIdentifiers.js.map +0 -1
  516. package/esm/utils/getConstantStringValue.js +0 -58
  517. package/esm/utils/getConstantStringValue.js.map +0 -1
  518. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  519. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  520. package/esm/utils/getScope.js +0 -6
  521. package/esm/utils/getScope.js.map +0 -1
  522. package/esm/utils/getSource.js +0 -15
  523. package/esm/utils/getSource.js.map +0 -1
  524. package/esm/utils/getTagProcessor.js +0 -404
  525. package/esm/utils/getTagProcessor.js.map +0 -1
  526. package/esm/utils/isExports.js +0 -22
  527. package/esm/utils/isExports.js.map +0 -1
  528. package/esm/utils/isGlobal.js +0 -6
  529. package/esm/utils/isGlobal.js.map +0 -1
  530. package/esm/utils/isNodePath.js +0 -4
  531. package/esm/utils/isNodePath.js.map +0 -1
  532. package/esm/utils/isRemoved.js +0 -46
  533. package/esm/utils/isRemoved.js.map +0 -1
  534. package/esm/utils/isRequire.js +0 -13
  535. package/esm/utils/isRequire.js.map +0 -1
  536. package/esm/utils/isTypedNode.js +0 -6
  537. package/esm/utils/isTypedNode.js.map +0 -1
  538. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  539. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  540. package/esm/utils/removeDangerousCode.js +0 -276
  541. package/esm/utils/removeDangerousCode.js.map +0 -1
  542. package/esm/utils/replaceImportMetaEnv.js +0 -44
  543. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  544. package/esm/utils/scopeHelpers.js +0 -527
  545. package/esm/utils/scopeHelpers.js.map +0 -1
  546. package/esm/utils/traversalCache.js +0 -23
  547. package/esm/utils/traversalCache.js.map +0 -1
  548. package/esm/utils/unwrapExpression.js +0 -18
  549. package/esm/utils/unwrapExpression.js.map +0 -1
  550. package/esm/utils/unwrapSequence.js +0 -14
  551. package/esm/utils/unwrapSequence.js.map +0 -1
  552. package/esm/utils/valueToLiteral.js +0 -59
  553. package/esm/utils/valueToLiteral.js.map +0 -1
  554. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  555. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  556. package/lib/babel.js +0 -2
  557. package/lib/babel.js.map +0 -1
  558. package/lib/cache.js +0 -308
  559. package/lib/cache.js.map +0 -1
  560. package/lib/debug/fileReporter.js +0 -153
  561. package/lib/debug/fileReporter.js.map +0 -1
  562. package/lib/evaluators/index.js +0 -20
  563. package/lib/evaluators/index.js.map +0 -1
  564. package/lib/index.js +0 -286
  565. package/lib/index.js.map +0 -1
  566. package/lib/module.js +0 -552
  567. package/lib/module.js.map +0 -1
  568. package/lib/options/buildOptions.js +0 -176
  569. package/lib/options/buildOptions.js.map +0 -1
  570. package/lib/options/buildOptions.test.js +0 -141
  571. package/lib/options/buildOptions.test.js.map +0 -1
  572. package/lib/options/loadBabelOptions.js +0 -31
  573. package/lib/options/loadBabelOptions.js.map +0 -1
  574. package/lib/plugins/babel-transform.js +0 -60
  575. package/lib/plugins/babel-transform.js.map +0 -1
  576. package/lib/plugins/collector.js +0 -70
  577. package/lib/plugins/collector.js.map +0 -1
  578. package/lib/plugins/dynamic-import.js +0 -61
  579. package/lib/plugins/dynamic-import.js.map +0 -1
  580. package/lib/plugins/preeval.js +0 -81
  581. package/lib/plugins/preeval.js.map +0 -1
  582. package/lib/plugins/shaker.js +0 -691
  583. package/lib/plugins/shaker.js.map +0 -1
  584. package/lib/shaker.js +0 -95
  585. package/lib/shaker.js.map +0 -1
  586. package/lib/transform/BaseEntrypoint.js +0 -179
  587. package/lib/transform/BaseEntrypoint.js.map +0 -1
  588. package/lib/transform/Entrypoint.helpers.js +0 -279
  589. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  590. package/lib/transform/Entrypoint.js +0 -289
  591. package/lib/transform/Entrypoint.js.map +0 -1
  592. package/lib/transform/Entrypoint.types.js +0 -2
  593. package/lib/transform/Entrypoint.types.js.map +0 -1
  594. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  595. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  596. package/lib/transform/actions/AbortError.js +0 -16
  597. package/lib/transform/actions/AbortError.js.map +0 -1
  598. package/lib/transform/actions/BaseAction.js +0 -150
  599. package/lib/transform/actions/BaseAction.js.map +0 -1
  600. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  601. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  602. package/lib/transform/actions/actionRunner.js +0 -82
  603. package/lib/transform/actions/actionRunner.js.map +0 -1
  604. package/lib/transform/actions/types.js +0 -2
  605. package/lib/transform/actions/types.js.map +0 -1
  606. package/lib/transform/barrelManifest.js +0 -300
  607. package/lib/transform/barrelManifest.js.map +0 -1
  608. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  609. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  610. package/lib/transform/generators/collect.js +0 -66
  611. package/lib/transform/generators/collect.js.map +0 -1
  612. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  613. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  614. package/lib/transform/generators/evalFile.js +0 -57
  615. package/lib/transform/generators/evalFile.js.map +0 -1
  616. package/lib/transform/generators/explodeReexports.js +0 -71
  617. package/lib/transform/generators/explodeReexports.js.map +0 -1
  618. package/lib/transform/generators/extract.js +0 -102
  619. package/lib/transform/generators/extract.js.map +0 -1
  620. package/lib/transform/generators/getExports.js +0 -85
  621. package/lib/transform/generators/getExports.js.map +0 -1
  622. package/lib/transform/generators/index.js +0 -19
  623. package/lib/transform/generators/index.js.map +0 -1
  624. package/lib/transform/generators/processEntrypoint.js +0 -76
  625. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  626. package/lib/transform/generators/processImports.js +0 -82
  627. package/lib/transform/generators/processImports.js.map +0 -1
  628. package/lib/transform/generators/resolveImports.js +0 -221
  629. package/lib/transform/generators/resolveImports.js.map +0 -1
  630. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  631. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  632. package/lib/transform/generators/transform.js +0 -272
  633. package/lib/transform/generators/transform.js.map +0 -1
  634. package/lib/transform/generators/workflow.js +0 -100
  635. package/lib/transform/generators/workflow.js.map +0 -1
  636. package/lib/transform/helpers/loadWywOptions.js +0 -88
  637. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  638. package/lib/transform/helpers/withDefaultServices.js +0 -31
  639. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  640. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  641. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  642. package/lib/transform/rootLog.js +0 -9
  643. package/lib/transform/rootLog.js.map +0 -1
  644. package/lib/transform/types.js +0 -8
  645. package/lib/transform/types.js.map +0 -1
  646. package/lib/transform.js +0 -160
  647. package/lib/transform.js.map +0 -1
  648. package/lib/types.js +0 -2
  649. package/lib/types.js.map +0 -1
  650. package/lib/utils/EventEmitter.js +0 -61
  651. package/lib/utils/EventEmitter.js.map +0 -1
  652. package/lib/utils/ShakerMetadata.js +0 -9
  653. package/lib/utils/ShakerMetadata.js.map +0 -1
  654. package/lib/utils/TransformDiagnostics.js +0 -20
  655. package/lib/utils/TransformDiagnostics.js.map +0 -1
  656. package/lib/utils/TransformMetadata.js +0 -45
  657. package/lib/utils/TransformMetadata.js.map +0 -1
  658. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  659. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  660. package/lib/utils/collectExportsAndImports.js +0 -1173
  661. package/lib/utils/collectExportsAndImports.js.map +0 -1
  662. package/lib/utils/collectTemplateDependencies.js +0 -242
  663. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  664. package/lib/utils/createId.js +0 -13
  665. package/lib/utils/createId.js.map +0 -1
  666. package/lib/utils/dispose-polyfill.js +0 -9
  667. package/lib/utils/dispose-polyfill.js.map +0 -1
  668. package/lib/utils/findIdentifiers.js +0 -73
  669. package/lib/utils/findIdentifiers.js.map +0 -1
  670. package/lib/utils/getConstantStringValue.js +0 -66
  671. package/lib/utils/getConstantStringValue.js.map +0 -1
  672. package/lib/utils/getFileIdx.js +0 -16
  673. package/lib/utils/getFileIdx.js.map +0 -1
  674. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  675. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  676. package/lib/utils/getPluginKey.js +0 -21
  677. package/lib/utils/getPluginKey.js.map +0 -1
  678. package/lib/utils/getScope.js +0 -12
  679. package/lib/utils/getScope.js.map +0 -1
  680. package/lib/utils/getSource.js +0 -24
  681. package/lib/utils/getSource.js.map +0 -1
  682. package/lib/utils/getTagProcessor.js +0 -424
  683. package/lib/utils/getTagProcessor.js.map +0 -1
  684. package/lib/utils/getVisitorKeys.js +0 -11
  685. package/lib/utils/getVisitorKeys.js.map +0 -1
  686. package/lib/utils/hasWywPreval.js +0 -13
  687. package/lib/utils/hasWywPreval.js.map +0 -1
  688. package/lib/utils/importOverrides.js +0 -119
  689. package/lib/utils/importOverrides.js.map +0 -1
  690. package/lib/utils/isExports.js +0 -27
  691. package/lib/utils/isExports.js.map +0 -1
  692. package/lib/utils/isGlobal.js +0 -13
  693. package/lib/utils/isGlobal.js.map +0 -1
  694. package/lib/utils/isNode.js +0 -9
  695. package/lib/utils/isNode.js.map +0 -1
  696. package/lib/utils/isNodePath.js +0 -10
  697. package/lib/utils/isNodePath.js.map +0 -1
  698. package/lib/utils/isNotNull.js +0 -10
  699. package/lib/utils/isNotNull.js.map +0 -1
  700. package/lib/utils/isRemoved.js +0 -52
  701. package/lib/utils/isRemoved.js.map +0 -1
  702. package/lib/utils/isRequire.js +0 -18
  703. package/lib/utils/isRequire.js.map +0 -1
  704. package/lib/utils/isSerializable.js +0 -19
  705. package/lib/utils/isSerializable.js.map +0 -1
  706. package/lib/utils/isTypedNode.js +0 -13
  707. package/lib/utils/isTypedNode.js.map +0 -1
  708. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  709. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  710. package/lib/utils/parseRequest.js +0 -37
  711. package/lib/utils/parseRequest.js.map +0 -1
  712. package/lib/utils/peek.js +0 -9
  713. package/lib/utils/peek.js.map +0 -1
  714. package/lib/utils/removeDangerousCode.js +0 -284
  715. package/lib/utils/removeDangerousCode.js.map +0 -1
  716. package/lib/utils/replaceImportMetaEnv.js +0 -50
  717. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  718. package/lib/utils/scopeHelpers.js +0 -557
  719. package/lib/utils/scopeHelpers.js.map +0 -1
  720. package/lib/utils/traversalCache.js +0 -31
  721. package/lib/utils/traversalCache.js.map +0 -1
  722. package/lib/utils/unwrapExpression.js +0 -25
  723. package/lib/utils/unwrapExpression.js.map +0 -1
  724. package/lib/utils/unwrapSequence.js +0 -20
  725. package/lib/utils/unwrapSequence.js.map +0 -1
  726. package/lib/utils/valueToLiteral.js +0 -65
  727. package/lib/utils/valueToLiteral.js.map +0 -1
  728. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  729. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  730. package/lib/vm/createVmContext.js +0 -166
  731. package/lib/vm/createVmContext.js.map +0 -1
  732. package/lib/vm/process.js +0 -38
  733. package/lib/vm/process.js.map +0 -1
  734. package/types/babel.d.ts +0 -2
  735. package/types/babel.js +0 -2
  736. package/types/options/buildOptions.d.ts +0 -6
  737. package/types/options/buildOptions.js +0 -178
  738. package/types/options/loadBabelOptions.d.ts +0 -3
  739. package/types/options/loadBabelOptions.js +0 -26
  740. package/types/plugins/babel-transform.d.ts +0 -4
  741. package/types/plugins/babel-transform.js +0 -49
  742. package/types/plugins/collector.d.ts +0 -23
  743. package/types/plugins/collector.js +0 -62
  744. package/types/plugins/dynamic-import.d.ts +0 -6
  745. package/types/plugins/dynamic-import.js +0 -60
  746. package/types/plugins/preeval.d.ts +0 -16
  747. package/types/plugins/preeval.js +0 -69
  748. package/types/plugins/shaker.d.ts +0 -14
  749. package/types/plugins/shaker.js +0 -724
  750. package/types/transform/generators/explodeReexports.d.ts +0 -7
  751. package/types/transform/generators/explodeReexports.js +0 -65
  752. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  753. package/types/utils/addIdentifierToWywPreval.js +0 -74
  754. package/types/utils/collectExportsAndImports.d.ts +0 -31
  755. package/types/utils/collectExportsAndImports.js +0 -1147
  756. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  757. package/types/utils/collectTemplateDependencies.js +0 -220
  758. package/types/utils/createId.d.ts +0 -2
  759. package/types/utils/createId.js +0 -9
  760. package/types/utils/findIdentifiers.d.ts +0 -6
  761. package/types/utils/findIdentifiers.js +0 -67
  762. package/types/utils/getConstantStringValue.d.ts +0 -2
  763. package/types/utils/getConstantStringValue.js +0 -94
  764. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  765. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  766. package/types/utils/getScope.d.ts +0 -2
  767. package/types/utils/getScope.js +0 -10
  768. package/types/utils/getSource.d.ts +0 -2
  769. package/types/utils/getSource.js +0 -22
  770. package/types/utils/getTagProcessor.d.ts +0 -13
  771. package/types/utils/getTagProcessor.js +0 -411
  772. package/types/utils/isExports.d.ts +0 -6
  773. package/types/utils/isExports.js +0 -19
  774. package/types/utils/isGlobal.d.ts +0 -2
  775. package/types/utils/isGlobal.js +0 -9
  776. package/types/utils/isNodePath.d.ts +0 -3
  777. package/types/utils/isNodePath.js +0 -6
  778. package/types/utils/isRemoved.d.ts +0 -5
  779. package/types/utils/isRemoved.js +0 -41
  780. package/types/utils/isRequire.d.ts +0 -6
  781. package/types/utils/isRequire.js +0 -14
  782. package/types/utils/isTypedNode.d.ts +0 -5
  783. package/types/utils/isTypedNode.js +0 -9
  784. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  785. package/types/utils/isUnnecessaryReactCall.js +0 -75
  786. package/types/utils/removeDangerousCode.d.ts +0 -4
  787. package/types/utils/removeDangerousCode.js +0 -326
  788. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  789. package/types/utils/replaceImportMetaEnv.js +0 -39
  790. package/types/utils/scopeHelpers.d.ts +0 -12
  791. package/types/utils/scopeHelpers.js +0 -580
  792. package/types/utils/traversalCache.d.ts +0 -4
  793. package/types/utils/traversalCache.js +0 -27
  794. package/types/utils/unwrapExpression.d.ts +0 -2
  795. package/types/utils/unwrapExpression.js +0 -57
  796. package/types/utils/unwrapSequence.d.ts +0 -8
  797. package/types/utils/unwrapSequence.js +0 -16
  798. package/types/utils/valueToLiteral.d.ts +0 -3
  799. package/types/utils/valueToLiteral.js +0 -63
  800. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  801. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -0,0 +1,99 @@
1
+ import { spawnSync } from "child_process";
2
+ import NativeModule from "module";
3
+ const NODE_CONDITIONAL_RESOLVE_SCRIPT = String.raw`
4
+ const fs = require('node:fs');
5
+ const Module = require('node:module');
6
+
7
+ const input = JSON.parse(fs.readFileSync(0, 'utf8'));
8
+
9
+ try {
10
+ const resolved = Module._resolveFilename(
11
+ input.id,
12
+ input.parent,
13
+ false,
14
+ input.conditions ? { conditions: new Set(input.conditions) } : undefined
15
+ );
16
+ fs.writeFileSync(1, JSON.stringify({ resolved }));
17
+ } catch (error) {
18
+ fs.writeFileSync(
19
+ 1,
20
+ JSON.stringify({
21
+ error: {
22
+ code:
23
+ error && typeof error === 'object' && 'code' in error
24
+ ? error.code
25
+ : undefined,
26
+ message: error instanceof Error ? error.message : String(error),
27
+ },
28
+ })
29
+ );
30
+ process.exitCode = 1;
31
+ }
32
+ `;
33
+ const isBunRuntime = () => process.execPath.includes("bun");
34
+ const nativeResolveFilename = NativeModule._resolveFilename;
35
+ const resolveWithNodeProcess = (id, parent, conditions) => {
36
+ const nodeBinary = process.env.WYW_NODE_BINARY || "node";
37
+ const result = spawnSync(nodeBinary, ["-e", NODE_CONDITIONAL_RESOLVE_SCRIPT], {
38
+ encoding: "utf8",
39
+ input: JSON.stringify({
40
+ conditions: [...conditions],
41
+ id,
42
+ parent
43
+ }),
44
+ maxBuffer: 1024 * 1024
45
+ });
46
+ if (result.error) {
47
+ throw result.error;
48
+ }
49
+ let parsed = null;
50
+ const stdout = result.stdout.trim();
51
+ if (stdout) {
52
+ try {
53
+ parsed = JSON.parse(stdout);
54
+ } catch {
55
+ throw new Error([
56
+ "[wyw-in-js] Failed to parse custom module resolver output.",
57
+ `stdout: ${stdout}`,
58
+ result.stderr ? `stderr: ${result.stderr.trim()}` : ""
59
+ ].filter(Boolean).join("\n"));
60
+ }
61
+ }
62
+ if (parsed?.error) {
63
+ const error = new Error(parsed.error.message);
64
+ error.code = parsed.error.code;
65
+ throw error;
66
+ }
67
+ if (result.status !== 0 || !parsed?.resolved) {
68
+ throw new Error([
69
+ "[wyw-in-js] Custom module resolver fallback failed.",
70
+ `status: ${result.status ?? "null"}`,
71
+ result.stderr ? `stderr: ${result.stderr.trim()}` : ""
72
+ ].filter(Boolean).join("\n"));
73
+ }
74
+ return parsed.resolved;
75
+ };
76
+ export const resolveFilenameWithConditions = (moduleImpl, id, parent, conditions) => {
77
+ const resolveOptions = conditions ? { conditions } : undefined;
78
+ const usesNativeResolver = moduleImpl._resolveFilename === nativeResolveFilename;
79
+ if (!conditions || !isBunRuntime() || !usesNativeResolver) {
80
+ return moduleImpl._resolveFilename(id, parent, false, resolveOptions);
81
+ }
82
+ // Bun crashes on macOS/Silicon in this exact path:
83
+ // Module._resolveFilename(specifier, parent, false, { conditions })
84
+ // We reproduced it both with a tiny standalone script and through the
85
+ // `EvalBroker > passes conditionNames to native fallback resolution` test,
86
+ // including on Bun 1.3.13. Keep this fallback narrow: only conditioned
87
+ // resolution under Bun goes through a short-lived Node subprocess.
88
+ //
89
+ // Cleanup criteria:
90
+ // 1. Bun passes the minimal local `_resolveFilename(..., { conditions })`
91
+ // repro on macOS without segfaulting.
92
+ // 2. The conditionNames runner path passes without this fallback.
93
+ //
94
+ // As of 2026-04-20 we did not find an exact open upstream Bun issue for this
95
+ // `_resolveFilename(..., { conditions })` crash, so keep the comment factual
96
+ // and the workaround self-contained.
97
+ return resolveWithNodeProcess(id, parent, conditions);
98
+ };
99
+ //# sourceMappingURL=resolveWithConditions.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"AAAA,SAAS,iBAAiB;AAC1B,OAAO,kBAAkB;AAsBzB,MAAM,kCAAkC,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BlD,MAAM,qBAAqB,QAAQ,SAAS,SAAS,MAAM;AAE3D,MAAM,wBACJ,aACA;AAEF,MAAM,0BACJ,IACA,QACA,eACW;CACX,MAAM,aAAa,QAAQ,IAAI,mBAAmB;CAClD,MAAM,SAAS,UACb,YACA,CAAC,MAAM,gCAAgC,EACvC;EACE,UAAU;EACV,OAAO,KAAK,UAAU;GACpB,YAAY,CAAC,GAAG,WAAW;GAC3B;GACA;GACD,CAAC;EACF,WAAW,OAAO;EACnB,CACF;AAED,KAAI,OAAO,OAAO;AAChB,QAAM,OAAO;;CAGf,IAAI,SAA8C;CAClD,MAAM,SAAS,OAAO,OAAO,MAAM;AACnC,KAAI,QAAQ;AACV,MAAI;AACF,YAAS,KAAK,MAAM,OAAO;UACrB;AACN,SAAM,IAAI,MACR;IACE;IACA,WAAW;IACX,OAAO,SAAS,WAAW,OAAO,OAAO,MAAM,KAAK;IACrD,CACE,OAAO,QAAQ,CACf,KAAK,KAAK,CACd;;;AAIL,KAAI,QAAQ,OAAO;EACjB,MAAM,QAAQ,IAAI,MAAM,OAAO,MAAM,QAAQ;AAC7C,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM;;AAGR,KAAI,OAAO,WAAW,KAAK,CAAC,QAAQ,UAAU;AAC5C,QAAM,IAAI,MACR;GACE;GACA,WAAW,OAAO,UAAU;GAC5B,OAAO,SAAS,WAAW,OAAO,OAAO,MAAM,KAAK;GACrD,CACE,OAAO,QAAQ,CACf,KAAK,KAAK,CACd;;AAGH,QAAO,OAAO;;AAGhB,OAAO,MAAM,iCACX,YACA,IACA,QACA,eACW;CACX,MAAM,iBAAiB,aAAa,EAAE,YAAY,GAAG;CACrD,MAAM,qBACJ,WAAW,qBAAqB;AAElC,KAAI,CAAC,cAAc,CAAC,cAAc,IAAI,CAAC,oBAAoB;AACzD,SAAO,WAAW,iBAAiB,IAAI,QAAQ,OAAO,eAAe;;;;;;;;;;;;;;;;;AAkBvE,QAAO,uBAAuB,IAAI,QAAQ,WAAW","names":[],"sources":["../../src/utils/resolveWithConditions.ts"],"version":3,"sourcesContent":["import { spawnSync } from 'child_process';\nimport NativeModule from 'module';\n\ntype ResolveFilenameParent = {\n filename: string;\n id: string;\n paths: string[];\n};\n\ntype ResolveFilenameModuleImplementation = {\n _resolveFilename: (\n id: string,\n options: ResolveFilenameParent,\n isMain?: boolean,\n resolveOptions?: { conditions?: Set<string> }\n ) => string;\n};\n\ntype NodeConditionalResolveResult = {\n error?: { code?: string; message: string };\n resolved?: string;\n};\n\nconst NODE_CONDITIONAL_RESOLVE_SCRIPT = String.raw`\nconst fs = require('node:fs');\nconst Module = require('node:module');\n\nconst input = JSON.parse(fs.readFileSync(0, 'utf8'));\n\ntry {\n const resolved = Module._resolveFilename(\n input.id,\n input.parent,\n false,\n input.conditions ? { conditions: new Set(input.conditions) } : undefined\n );\n fs.writeFileSync(1, JSON.stringify({ resolved }));\n} catch (error) {\n fs.writeFileSync(\n 1,\n JSON.stringify({\n error: {\n code:\n error && typeof error === 'object' && 'code' in error\n ? error.code\n : undefined,\n message: error instanceof Error ? error.message : String(error),\n },\n })\n );\n process.exitCode = 1;\n}\n`;\n\nconst isBunRuntime = () => process.execPath.includes('bun');\n\nconst nativeResolveFilename = (\n NativeModule as unknown as ResolveFilenameModuleImplementation\n)._resolveFilename;\n\nconst resolveWithNodeProcess = (\n id: string,\n parent: ResolveFilenameParent,\n conditions: Set<string>\n): string => {\n const nodeBinary = process.env.WYW_NODE_BINARY || 'node';\n const result = spawnSync(\n nodeBinary,\n ['-e', NODE_CONDITIONAL_RESOLVE_SCRIPT],\n {\n encoding: 'utf8',\n input: JSON.stringify({\n conditions: [...conditions],\n id,\n parent,\n }),\n maxBuffer: 1024 * 1024,\n }\n );\n\n if (result.error) {\n throw result.error;\n }\n\n let parsed: NodeConditionalResolveResult | null = null;\n const stdout = result.stdout.trim();\n if (stdout) {\n try {\n parsed = JSON.parse(stdout) as NodeConditionalResolveResult;\n } catch {\n throw new Error(\n [\n '[wyw-in-js] Failed to parse custom module resolver output.',\n `stdout: ${stdout}`,\n result.stderr ? `stderr: ${result.stderr.trim()}` : '',\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n }\n\n if (parsed?.error) {\n const error = new Error(parsed.error.message) as NodeJS.ErrnoException;\n error.code = parsed.error.code;\n throw error;\n }\n\n if (result.status !== 0 || !parsed?.resolved) {\n throw new Error(\n [\n '[wyw-in-js] Custom module resolver fallback failed.',\n `status: ${result.status ?? 'null'}`,\n result.stderr ? `stderr: ${result.stderr.trim()}` : '',\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n return parsed.resolved;\n};\n\nexport const resolveFilenameWithConditions = (\n moduleImpl: ResolveFilenameModuleImplementation,\n id: string,\n parent: ResolveFilenameParent,\n conditions?: Set<string>\n): string => {\n const resolveOptions = conditions ? { conditions } : undefined;\n const usesNativeResolver =\n moduleImpl._resolveFilename === nativeResolveFilename;\n\n if (!conditions || !isBunRuntime() || !usesNativeResolver) {\n return moduleImpl._resolveFilename(id, parent, false, resolveOptions);\n }\n\n // Bun crashes on macOS/Silicon in this exact path:\n // Module._resolveFilename(specifier, parent, false, { conditions })\n // We reproduced it both with a tiny standalone script and through the\n // `EvalBroker > passes conditionNames to native fallback resolution` test,\n // including on Bun 1.3.13. Keep this fallback narrow: only conditioned\n // resolution under Bun goes through a short-lived Node subprocess.\n //\n // Cleanup criteria:\n // 1. Bun passes the minimal local `_resolveFilename(..., { conditions })`\n // repro on macOS without segfaulting.\n // 2. The conditionNames runner path passes without this fallback.\n //\n // As of 2026-04-20 we did not find an exact open upstream Bun issue for this\n // `_resolveFilename(..., { conditions })` crash, so keep the comment factual\n // and the workaround self-contained.\n return resolveWithNodeProcess(id, parent, conditions);\n};\n"],"file":"resolveWithConditions.js"}
@@ -1,159 +1,158 @@
1
- import * as vm from 'vm';
2
- import { isFeatureEnabled } from '@wyw-in-js/shared';
3
- import * as process from './process';
1
+ import * as vm from "vm";
2
+ import { isFeatureEnabled } from "@wyw-in-js/shared";
3
+ import * as process from "./process.js";
4
4
  const NOOP = () => {};
5
- const IMPORT_META_ENV = '__wyw_import_meta_env';
6
- const HAPPY_DOM_REQUIRE_HOOK = '__wyw_requireHappyDom';
5
+ const IMPORT_META_ENV = "__wyw_import_meta_env";
6
+ const HAPPY_DOM_REQUIRE_HOOK = "__wyw_requireHappyDom";
7
7
  let importMetaEnvWarned = false;
8
- let happyDomRequireEsmWarned = false;
8
+ let happyDomLoadWarned = false;
9
9
  let happyDomUnavailable = false;
10
10
  function isErrRequireEsm(error) {
11
- return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ERR_REQUIRE_ESM';
11
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ERR_REQUIRE_ESM";
12
12
  }
13
13
  function createImportMetaEnvProxy() {
14
- const target = Object.create(null);
15
- const warnOnce = () => {
16
- if (importMetaEnvWarned) return;
17
- importMetaEnvWarned = true;
18
- // eslint-disable-next-line no-console
19
- console.warn([`[wyw-in-js] import.meta.env was accessed during build-time evaluation, but no env values were provided.`, ``, `If you're using Vite, make sure @wyw-in-js/vite plugin is enabled (it injects Vite env for evaluation).`, `Otherwise provide "__wyw_import_meta_env" via pluginOptions.overrideContext.`].join('\n'));
20
- };
21
- return new Proxy(target, {
22
- get(obj, key) {
23
- if (typeof key === 'symbol') {
24
- return Reflect.get(obj, key);
25
- }
26
- warnOnce();
27
- return obj[key];
28
- },
29
- has(obj, key) {
30
- if (typeof key === 'symbol') {
31
- return Reflect.has(obj, key);
32
- }
33
- warnOnce();
34
- return Reflect.has(obj, key);
35
- },
36
- getOwnPropertyDescriptor(obj, key) {
37
- return Reflect.getOwnPropertyDescriptor(obj, key);
38
- },
39
- ownKeys(obj) {
40
- return Reflect.ownKeys(obj);
41
- },
42
- set(obj, key, value) {
43
- if (typeof key === 'symbol') {
44
- return Reflect.set(obj, key, value);
45
- }
46
- warnOnce();
47
- return Reflect.set(obj, key, value);
48
- }
49
- });
14
+ const target = Object.create(null);
15
+ const warnOnce = () => {
16
+ if (importMetaEnvWarned) return;
17
+ importMetaEnvWarned = true;
18
+ // eslint-disable-next-line no-console
19
+ console.warn([
20
+ `[wyw-in-js] import.meta.env was accessed during build-time evaluation, but no env values were provided.`,
21
+ ``,
22
+ `If you're using Vite, make sure @wyw-in-js/vite plugin is enabled (it injects Vite env for evaluation).`,
23
+ `Otherwise provide "__wyw_import_meta_env" via pluginOptions.overrideContext.`
24
+ ].join("\n"));
25
+ };
26
+ return new Proxy(target, {
27
+ get(obj, key) {
28
+ if (typeof key === "symbol") {
29
+ return Reflect.get(obj, key);
30
+ }
31
+ warnOnce();
32
+ return obj[key];
33
+ },
34
+ has(obj, key) {
35
+ if (typeof key === "symbol") {
36
+ return Reflect.has(obj, key);
37
+ }
38
+ warnOnce();
39
+ return Reflect.has(obj, key);
40
+ },
41
+ getOwnPropertyDescriptor(obj, key) {
42
+ return Reflect.getOwnPropertyDescriptor(obj, key);
43
+ },
44
+ ownKeys(obj) {
45
+ return Reflect.ownKeys(obj);
46
+ },
47
+ set(obj, key, value) {
48
+ if (typeof key === "symbol") {
49
+ return Reflect.set(obj, key, value);
50
+ }
51
+ warnOnce();
52
+ return Reflect.set(obj, key, value);
53
+ }
54
+ });
50
55
  }
51
- function requireHappyDom() {
52
- const hook = globalThis[HAPPY_DOM_REQUIRE_HOOK];
53
- if (typeof hook === 'function') {
54
- return hook();
55
- }
56
- // eslint-disable-next-line @typescript-eslint/no-var-requires
57
- return require('happy-dom');
56
+ let happyDomImportPromise = null;
57
+ async function loadHappyDom() {
58
+ const hook = globalThis[HAPPY_DOM_REQUIRE_HOOK];
59
+ if (typeof hook === "function") {
60
+ const result = hook();
61
+ return Promise.resolve(result);
62
+ }
63
+ if (!happyDomImportPromise) {
64
+ happyDomImportPromise = import("happy-dom");
65
+ }
66
+ return happyDomImportPromise;
58
67
  }
59
- function createWindow() {
60
- if (happyDomUnavailable) return undefined;
61
- try {
62
- const {
63
- Window,
64
- GlobalWindow
65
- } = requireHappyDom();
66
- const HappyWindow = GlobalWindow || Window;
67
- const win = new HappyWindow();
68
-
69
- // TODO: browser doesn't expose Buffer, but a lot of dependencies use it
70
- win.Buffer = Buffer;
71
- win.Uint8Array = Uint8Array;
72
- return win;
73
- } catch (error) {
74
- if (!isErrRequireEsm(error)) {
75
- throw error;
76
- }
77
- const hasCustomRequireHook = typeof globalThis[HAPPY_DOM_REQUIRE_HOOK] === 'function';
78
- if (!hasCustomRequireHook) {
79
- happyDomUnavailable = true;
80
- }
81
- if (happyDomRequireEsmWarned) return undefined;
82
- happyDomRequireEsmWarned = true;
83
-
84
- // eslint-disable-next-line no-console
85
- console.warn([`[wyw-in-js] DOM emulation is enabled (features.happyDOM), but "happy-dom" could not be loaded in this build-time runtime.`, `This usually happens because "happy-dom" is ESM-only and cannot be loaded via require() in a CJS build.`, ``, `WyW will continue without DOM emulation (as if features.happyDOM:false).`, ``, `To silence this warning: set features: { happyDOM: false }.`, `To get real DOM emulation in Node 20+, WyW needs an ESM-only eval architecture (planned for v2.0.0),`, `or a runtime that supports require(ESM) (Node 24+).`].join('\n'));
86
- return undefined;
87
- }
68
+ async function createWindow() {
69
+ if (happyDomUnavailable) return undefined;
70
+ try {
71
+ const { Window, GlobalWindow } = await loadHappyDom();
72
+ const HappyWindow = GlobalWindow || Window;
73
+ const win = new HappyWindow();
74
+ // TODO: browser doesn't expose Buffer, but a lot of dependencies use it
75
+ win.Buffer = Buffer;
76
+ win.Uint8Array = Uint8Array;
77
+ return win;
78
+ } catch (error) {
79
+ if (isErrRequireEsm(error)) {} else if (!happyDomUnavailable) {
80
+ happyDomUnavailable = true;
81
+ }
82
+ if (happyDomLoadWarned) return undefined;
83
+ happyDomLoadWarned = true;
84
+ // eslint-disable-next-line no-console
85
+ console.warn([
86
+ `[wyw-in-js] DOM emulation is enabled (features.happyDOM), but "happy-dom" could not be loaded in this build-time runtime.`,
87
+ `WyW will continue without DOM emulation (as if features.happyDOM:false).`,
88
+ ``,
89
+ `To silence this warning: set features: { happyDOM: false }.`,
90
+ `To restore DOM emulation, ensure "happy-dom" can be imported in the build-time runtime.`
91
+ ].join("\n"));
92
+ return undefined;
93
+ }
88
94
  }
89
-
90
95
  /**
91
- * `happy-dom` already has required references, so we don't need to set them.
92
- */
96
+ * `happy-dom` already has required references, so we don't need to set them.
97
+ */
93
98
  function setReferencePropertyIfNotPresent(context, key) {
94
- if (context[key] === context) {
95
- return;
96
- }
97
- context[key] = context;
99
+ if (context[key] === context) {
100
+ return;
101
+ }
102
+ context[key] = context;
98
103
  }
99
104
  function createBaseContext(win, additionalContext) {
100
- const baseContext = win ?? {};
101
- setReferencePropertyIfNotPresent(baseContext, 'window');
102
- setReferencePropertyIfNotPresent(baseContext, 'self');
103
- setReferencePropertyIfNotPresent(baseContext, 'top');
104
- setReferencePropertyIfNotPresent(baseContext, 'parent');
105
- setReferencePropertyIfNotPresent(baseContext, 'global');
106
- setReferencePropertyIfNotPresent(baseContext, 'process');
107
- baseContext.document = win?.document;
108
- baseContext.process = process;
109
- baseContext.clearImmediate = NOOP;
110
- baseContext.clearInterval = NOOP;
111
- baseContext.clearTimeout = NOOP;
112
- baseContext.setImmediate = NOOP;
113
- baseContext.requestAnimationFrame = NOOP;
114
- baseContext.setInterval = NOOP;
115
- baseContext.setTimeout = NOOP;
116
-
117
- // eslint-disable-next-line guard-for-in,no-restricted-syntax
118
- for (const key in additionalContext) {
119
- baseContext[key] = additionalContext[key];
120
- }
121
- return baseContext;
105
+ const baseContext = win ?? {};
106
+ setReferencePropertyIfNotPresent(baseContext, "window");
107
+ setReferencePropertyIfNotPresent(baseContext, "self");
108
+ setReferencePropertyIfNotPresent(baseContext, "top");
109
+ setReferencePropertyIfNotPresent(baseContext, "parent");
110
+ setReferencePropertyIfNotPresent(baseContext, "global");
111
+ setReferencePropertyIfNotPresent(baseContext, "process");
112
+ baseContext.document = win?.document;
113
+ baseContext.process = process;
114
+ baseContext.clearImmediate = NOOP;
115
+ baseContext.clearInterval = NOOP;
116
+ baseContext.clearTimeout = NOOP;
117
+ baseContext.setImmediate = NOOP;
118
+ baseContext.requestAnimationFrame = NOOP;
119
+ baseContext.setInterval = NOOP;
120
+ baseContext.setTimeout = NOOP;
121
+ // eslint-disable-next-line guard-for-in,no-restricted-syntax
122
+ for (const key in additionalContext) {
123
+ baseContext[key] = additionalContext[key];
124
+ }
125
+ return baseContext;
122
126
  }
123
127
  function createNothing() {
124
- return {
125
- teardown: () => {},
126
- window: undefined
127
- };
128
+ return {
129
+ teardown: () => {},
130
+ window: undefined
131
+ };
128
132
  }
129
- function createHappyDOMWindow() {
130
- const win = createWindow();
131
- if (!win) return createNothing();
132
- return {
133
- teardown: () => {
134
- win.happyDOM.abort();
135
- },
136
- window: win
137
- };
133
+ async function createHappyDOMWindow() {
134
+ const win = await createWindow();
135
+ if (!win) return createNothing();
136
+ return {
137
+ teardown: () => {
138
+ win.happyDOM.abort();
139
+ },
140
+ window: win
141
+ };
138
142
  }
139
- export function createVmContext(filename, features, additionalContext, overrideContext = i => i) {
140
- const isHappyDOMEnabled = isFeatureEnabled(features, 'happyDOM', filename);
141
- const {
142
- teardown,
143
- window
144
- } = isHappyDOMEnabled ? createHappyDOMWindow() : createNothing();
145
- const envContext = {
146
- [IMPORT_META_ENV]: createImportMetaEnvProxy()
147
- };
148
- const baseContext = createBaseContext(window, overrideContext({
149
- __filename: filename,
150
- ...envContext,
151
- ...additionalContext
152
- }, filename));
153
- const context = vm.createContext(baseContext);
154
- return {
155
- context,
156
- teardown
157
- };
143
+ export async function createVmContext(filename, features, additionalContext, overrideContext = (i) => i) {
144
+ const isHappyDOMEnabled = isFeatureEnabled(features, "happyDOM", filename);
145
+ const { teardown, window } = isHappyDOMEnabled ? await createHappyDOMWindow() : createNothing();
146
+ const envContext = { [IMPORT_META_ENV]: createImportMetaEnvProxy() };
147
+ const baseContext = createBaseContext(window, overrideContext({
148
+ __filename: filename,
149
+ ...envContext,
150
+ ...additionalContext
151
+ }, filename));
152
+ const context = vm.createContext(baseContext);
153
+ return {
154
+ context,
155
+ teardown
156
+ };
158
157
  }
159
- //# sourceMappingURL=createVmContext.js.map
158
+ //# sourceMappingURL=createVmContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createVmContext.js","names":["vm","isFeatureEnabled","process","NOOP","IMPORT_META_ENV","HAPPY_DOM_REQUIRE_HOOK","importMetaEnvWarned","happyDomRequireEsmWarned","happyDomUnavailable","isErrRequireEsm","error","code","createImportMetaEnvProxy","target","Object","create","warnOnce","console","warn","join","Proxy","get","obj","key","Reflect","has","getOwnPropertyDescriptor","ownKeys","set","value","requireHappyDom","hook","globalThis","require","createWindow","undefined","Window","GlobalWindow","HappyWindow","win","Buffer","Uint8Array","hasCustomRequireHook","setReferencePropertyIfNotPresent","context","createBaseContext","additionalContext","baseContext","document","clearImmediate","clearInterval","clearTimeout","setImmediate","requestAnimationFrame","setInterval","setTimeout","createNothing","teardown","window","createHappyDOMWindow","happyDOM","abort","createVmContext","filename","features","overrideContext","i","isHappyDOMEnabled","envContext","__filename","createContext"],"sources":["../../src/vm/createVmContext.ts"],"sourcesContent":["import * as vm from 'vm';\n\nimport type { Window } from 'happy-dom';\n\nimport type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport * as process from './process';\n\nconst NOOP = () => {};\nconst IMPORT_META_ENV = '__wyw_import_meta_env';\nconst HAPPY_DOM_REQUIRE_HOOK = '__wyw_requireHappyDom';\n\nlet importMetaEnvWarned = false;\nlet happyDomRequireEsmWarned = false;\nlet happyDomUnavailable = false;\n\nfunction isErrRequireEsm(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: unknown }).code === 'ERR_REQUIRE_ESM'\n );\n}\n\nfunction createImportMetaEnvProxy(): Record<string, unknown> {\n const target = Object.create(null) as Record<string, unknown>;\n\n const warnOnce = () => {\n if (importMetaEnvWarned) return;\n importMetaEnvWarned = true;\n // eslint-disable-next-line no-console\n console.warn(\n [\n `[wyw-in-js] import.meta.env was accessed during build-time evaluation, but no env values were provided.`,\n ``,\n `If you're using Vite, make sure @wyw-in-js/vite plugin is enabled (it injects Vite env for evaluation).`,\n `Otherwise provide \"__wyw_import_meta_env\" via pluginOptions.overrideContext.`,\n ].join('\\n')\n );\n };\n\n return new Proxy(target, {\n get(obj, key) {\n if (typeof key === 'symbol') {\n return Reflect.get(obj, key);\n }\n\n warnOnce();\n return obj[key];\n },\n has(obj, key) {\n if (typeof key === 'symbol') {\n return Reflect.has(obj, key);\n }\n\n warnOnce();\n return Reflect.has(obj, key);\n },\n getOwnPropertyDescriptor(obj, key) {\n return Reflect.getOwnPropertyDescriptor(obj, key);\n },\n ownKeys(obj) {\n return Reflect.ownKeys(obj);\n },\n set(obj, key, value) {\n if (typeof key === 'symbol') {\n return Reflect.set(obj, key, value);\n }\n\n warnOnce();\n return Reflect.set(obj, key, value);\n },\n });\n}\n\ntype HappyDomExports = {\n GlobalWindow?: new () => Window;\n Window: new () => Window;\n};\n\nfunction requireHappyDom(): HappyDomExports {\n const hook = (globalThis as Record<string, unknown>)[HAPPY_DOM_REQUIRE_HOOK];\n if (typeof hook === 'function') {\n return (hook as () => HappyDomExports)();\n }\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n return require('happy-dom') as HappyDomExports;\n}\n\nfunction createWindow(): Window | undefined {\n if (happyDomUnavailable) return undefined;\n\n try {\n const { Window, GlobalWindow } = requireHappyDom();\n const HappyWindow = GlobalWindow || Window;\n const win = new HappyWindow();\n\n // TODO: browser doesn't expose Buffer, but a lot of dependencies use it\n win.Buffer = Buffer;\n win.Uint8Array = Uint8Array;\n\n return win;\n } catch (error) {\n if (!isErrRequireEsm(error)) {\n throw error;\n }\n\n const hasCustomRequireHook =\n typeof (globalThis as Record<string, unknown>)[HAPPY_DOM_REQUIRE_HOOK] ===\n 'function';\n if (!hasCustomRequireHook) {\n happyDomUnavailable = true;\n }\n\n if (happyDomRequireEsmWarned) return undefined;\n happyDomRequireEsmWarned = true;\n\n // eslint-disable-next-line no-console\n console.warn(\n [\n `[wyw-in-js] DOM emulation is enabled (features.happyDOM), but \"happy-dom\" could not be loaded in this build-time runtime.`,\n `This usually happens because \"happy-dom\" is ESM-only and cannot be loaded via require() in a CJS build.`,\n ``,\n `WyW will continue without DOM emulation (as if features.happyDOM:false).`,\n ``,\n `To silence this warning: set features: { happyDOM: false }.`,\n `To get real DOM emulation in Node 20+, WyW needs an ESM-only eval architecture (planned for v2.0.0),`,\n `or a runtime that supports require(ESM) (Node 24+).`,\n ].join('\\n')\n );\n\n return undefined;\n }\n}\n\n/**\n * `happy-dom` already has required references, so we don't need to set them.\n */\nfunction setReferencePropertyIfNotPresent(\n context: vm.Context,\n key: string\n): void {\n if (context[key] === context) {\n return;\n }\n\n context[key] = context;\n}\n\nfunction createBaseContext(\n win: Window | undefined,\n additionalContext: Partial<vm.Context>\n): Partial<vm.Context> {\n const baseContext: vm.Context = win ?? {};\n\n setReferencePropertyIfNotPresent(baseContext, 'window');\n setReferencePropertyIfNotPresent(baseContext, 'self');\n setReferencePropertyIfNotPresent(baseContext, 'top');\n setReferencePropertyIfNotPresent(baseContext, 'parent');\n setReferencePropertyIfNotPresent(baseContext, 'global');\n setReferencePropertyIfNotPresent(baseContext, 'process');\n\n baseContext.document = win?.document;\n baseContext.process = process;\n\n baseContext.clearImmediate = NOOP;\n baseContext.clearInterval = NOOP;\n baseContext.clearTimeout = NOOP;\n baseContext.setImmediate = NOOP;\n baseContext.requestAnimationFrame = NOOP;\n baseContext.setInterval = NOOP;\n baseContext.setTimeout = NOOP;\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const key in additionalContext) {\n baseContext[key] = additionalContext[key];\n }\n\n return baseContext;\n}\n\nfunction createNothing() {\n return {\n teardown: () => {},\n window: undefined,\n };\n}\n\nfunction createHappyDOMWindow() {\n const win = createWindow();\n if (!win) return createNothing();\n\n return {\n teardown: () => {\n win.happyDOM.abort();\n },\n window: win,\n };\n}\n\nexport function createVmContext(\n filename: string,\n features: FeatureFlags<'happyDOM'>,\n additionalContext: Partial<vm.Context>,\n overrideContext: StrictOptions['overrideContext'] = (i) => i\n) {\n const isHappyDOMEnabled = isFeatureEnabled(features, 'happyDOM', filename);\n\n const { teardown, window } = isHappyDOMEnabled\n ? createHappyDOMWindow()\n : createNothing();\n const envContext: Partial<vm.Context> = {\n [IMPORT_META_ENV]: createImportMetaEnvProxy(),\n };\n const baseContext = createBaseContext(\n window,\n overrideContext(\n {\n __filename: filename,\n ...envContext,\n ...additionalContext,\n },\n filename\n )\n );\n\n const context = vm.createContext(baseContext);\n\n return {\n context,\n teardown,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../../src/vm/createVmContext.ts"],"version":3,"sourcesContent":["import * as vm from 'vm';\n\nimport type { Window } from 'happy-dom';\n\nimport type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport * as process from './process';\n\nconst NOOP = () => {};\nconst IMPORT_META_ENV = '__wyw_import_meta_env';\nconst HAPPY_DOM_REQUIRE_HOOK = '__wyw_requireHappyDom';\n\nlet importMetaEnvWarned = false;\nlet happyDomLoadWarned = false;\nlet happyDomUnavailable = false;\n\nfunction isErrRequireEsm(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: unknown }).code === 'ERR_REQUIRE_ESM'\n );\n}\n\nfunction createImportMetaEnvProxy(): Record<string, unknown> {\n const target = Object.create(null) as Record<string, unknown>;\n\n const warnOnce = () => {\n if (importMetaEnvWarned) return;\n importMetaEnvWarned = true;\n // eslint-disable-next-line no-console\n console.warn(\n [\n `[wyw-in-js] import.meta.env was accessed during build-time evaluation, but no env values were provided.`,\n ``,\n `If you're using Vite, make sure @wyw-in-js/vite plugin is enabled (it injects Vite env for evaluation).`,\n `Otherwise provide \"__wyw_import_meta_env\" via pluginOptions.overrideContext.`,\n ].join('\\n')\n );\n };\n\n return new Proxy(target, {\n get(obj, key) {\n if (typeof key === 'symbol') {\n return Reflect.get(obj, key);\n }\n\n warnOnce();\n return obj[key];\n },\n has(obj, key) {\n if (typeof key === 'symbol') {\n return Reflect.has(obj, key);\n }\n\n warnOnce();\n return Reflect.has(obj, key);\n },\n getOwnPropertyDescriptor(obj, key) {\n return Reflect.getOwnPropertyDescriptor(obj, key);\n },\n ownKeys(obj) {\n return Reflect.ownKeys(obj);\n },\n set(obj, key, value) {\n if (typeof key === 'symbol') {\n return Reflect.set(obj, key, value);\n }\n\n warnOnce();\n return Reflect.set(obj, key, value);\n },\n });\n}\n\ntype HappyDomExports = {\n GlobalWindow?: new () => Window;\n Window: new () => Window;\n};\n\nlet happyDomImportPromise: Promise<HappyDomExports> | null = null;\n\nasync function loadHappyDom(): Promise<HappyDomExports> {\n const hook = (globalThis as Record<string, unknown>)[HAPPY_DOM_REQUIRE_HOOK];\n if (typeof hook === 'function') {\n const result = (hook as () => HappyDomExports | Promise<HappyDomExports>)();\n return Promise.resolve(result);\n }\n\n if (!happyDomImportPromise) {\n happyDomImportPromise = import('happy-dom') as Promise<HappyDomExports>;\n }\n\n return happyDomImportPromise;\n}\n\nasync function createWindow(): Promise<Window | undefined> {\n if (happyDomUnavailable) return undefined;\n\n try {\n const { Window, GlobalWindow } = await loadHappyDom();\n const HappyWindow = GlobalWindow || Window;\n const win = new HappyWindow();\n\n // TODO: browser doesn't expose Buffer, but a lot of dependencies use it\n win.Buffer = Buffer;\n win.Uint8Array = Uint8Array;\n\n return win;\n } catch (error) {\n if (isErrRequireEsm(error)) {\n // This can happen if a custom hook still uses require() for ESM.\n } else if (!happyDomUnavailable) {\n happyDomUnavailable = true;\n }\n\n if (happyDomLoadWarned) return undefined;\n happyDomLoadWarned = true;\n\n // eslint-disable-next-line no-console\n console.warn(\n [\n `[wyw-in-js] DOM emulation is enabled (features.happyDOM), but \"happy-dom\" could not be loaded in this build-time runtime.`,\n `WyW will continue without DOM emulation (as if features.happyDOM:false).`,\n ``,\n `To silence this warning: set features: { happyDOM: false }.`,\n `To restore DOM emulation, ensure \"happy-dom\" can be imported in the build-time runtime.`,\n ].join('\\n')\n );\n\n return undefined;\n }\n}\n\n/**\n * `happy-dom` already has required references, so we don't need to set them.\n */\nfunction setReferencePropertyIfNotPresent(\n context: vm.Context,\n key: string\n): void {\n if (context[key] === context) {\n return;\n }\n\n context[key] = context;\n}\n\nfunction createBaseContext(\n win: Window | undefined,\n additionalContext: Partial<vm.Context>\n): Partial<vm.Context> {\n const baseContext: vm.Context = win ?? {};\n\n setReferencePropertyIfNotPresent(baseContext, 'window');\n setReferencePropertyIfNotPresent(baseContext, 'self');\n setReferencePropertyIfNotPresent(baseContext, 'top');\n setReferencePropertyIfNotPresent(baseContext, 'parent');\n setReferencePropertyIfNotPresent(baseContext, 'global');\n setReferencePropertyIfNotPresent(baseContext, 'process');\n\n baseContext.document = win?.document;\n baseContext.process = process;\n\n baseContext.clearImmediate = NOOP;\n baseContext.clearInterval = NOOP;\n baseContext.clearTimeout = NOOP;\n baseContext.setImmediate = NOOP;\n baseContext.requestAnimationFrame = NOOP;\n baseContext.setInterval = NOOP;\n baseContext.setTimeout = NOOP;\n\n // eslint-disable-next-line guard-for-in,no-restricted-syntax\n for (const key in additionalContext) {\n baseContext[key] = additionalContext[key];\n }\n\n return baseContext;\n}\n\nfunction createNothing() {\n return {\n teardown: () => {},\n window: undefined,\n };\n}\n\nasync function createHappyDOMWindow() {\n const win = await createWindow();\n if (!win) return createNothing();\n\n return {\n teardown: () => {\n win.happyDOM.abort();\n },\n window: win,\n };\n}\n\nexport async function createVmContext(\n filename: string,\n features: FeatureFlags<'happyDOM'>,\n additionalContext: Partial<vm.Context>,\n overrideContext: StrictOptions['overrideContext'] = (i) => i\n) {\n const isHappyDOMEnabled = isFeatureEnabled(features, 'happyDOM', filename);\n\n const { teardown, window } = isHappyDOMEnabled\n ? await createHappyDOMWindow()\n : createNothing();\n const envContext: Partial<vm.Context> = {\n [IMPORT_META_ENV]: createImportMetaEnvProxy(),\n };\n const baseContext = createBaseContext(\n window,\n overrideContext(\n {\n __filename: filename,\n ...envContext,\n ...additionalContext,\n },\n filename\n )\n );\n\n const context = vm.createContext(baseContext);\n\n return {\n context,\n teardown,\n };\n}\n"],"file":"createVmContext.js"}
package/esm/vm/process.js CHANGED
@@ -1,18 +1,18 @@
1
1
  /**
2
- * It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts
3
- */
4
- export const nextTick = fn => setTimeout(fn, 0);
5
- export const platform = 'browser';
6
- export const arch = 'browser';
7
- export const execPath = 'browser';
8
- export const title = 'browser';
2
+ * It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts
3
+ */
4
+ export const nextTick = (fn) => setTimeout(fn, 0);
5
+ export const platform = "browser";
6
+ export const arch = "browser";
7
+ export const execPath = "browser";
8
+ export const title = "browser";
9
9
  export const pid = 1;
10
10
  export const browser = true;
11
11
  export const argv = [];
12
12
  export const binding = function binding() {
13
- throw new Error('No such module. (Possibly not yet loaded)');
13
+ throw new Error("No such module. (Possibly not yet loaded)");
14
14
  };
15
- export const cwd = () => '/';
15
+ export const cwd = () => "/";
16
16
  const noop = () => {};
17
17
  export const exit = noop;
18
18
  export const kill = noop;
@@ -23,7 +23,5 @@ export const uptime = noop;
23
23
  export const memoryUsage = noop;
24
24
  export const uvCounters = noop;
25
25
  export const features = {};
26
- export const {
27
- env
28
- } = process;
29
- //# sourceMappingURL=process.js.map
26
+ export const { env } = process;
27
+ //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","names":["nextTick","fn","setTimeout","platform","arch","execPath","title","pid","browser","argv","binding","Error","cwd","noop","exit","kill","chdir","umask","dlopen","uptime","memoryUsage","uvCounters","features","env","process"],"sources":["../../src/vm/process.ts"],"sourcesContent":["/**\n * It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts\n */\nexport const nextTick = (fn: (...args: unknown[]) => void) => setTimeout(fn, 0);\n\nexport const platform = 'browser';\nexport const arch = 'browser';\nexport const execPath = 'browser';\nexport const title = 'browser';\nexport const pid = 1;\nexport const browser = true;\nexport const argv = [];\n\nexport const binding = function binding() {\n throw new Error('No such module. (Possibly not yet loaded)');\n};\n\nexport const cwd = () => '/';\n\nconst noop = () => {};\nexport const exit = noop;\nexport const kill = noop;\nexport const chdir = noop;\nexport const umask = noop;\nexport const dlopen = noop;\nexport const uptime = noop;\nexport const memoryUsage = noop;\nexport const uvCounters = noop;\nexport const features = {};\n\nexport const { env } = process;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,MAAMA,QAAQ,GAAIC,EAAgC,IAAKC,UAAU,CAACD,EAAE,EAAE,CAAC,CAAC;AAE/E,OAAO,MAAME,QAAQ,GAAG,SAAS;AACjC,OAAO,MAAMC,IAAI,GAAG,SAAS;AAC7B,OAAO,MAAMC,QAAQ,GAAG,SAAS;AACjC,OAAO,MAAMC,KAAK,GAAG,SAAS;AAC9B,OAAO,MAAMC,GAAG,GAAG,CAAC;AACpB,OAAO,MAAMC,OAAO,GAAG,IAAI;AAC3B,OAAO,MAAMC,IAAI,GAAG,EAAE;AAEtB,OAAO,MAAMC,OAAO,GAAG,SAASA,OAAOA,CAAA,EAAG;EACxC,MAAM,IAAIC,KAAK,CAAC,2CAA2C,CAAC;AAC9D,CAAC;AAED,OAAO,MAAMC,GAAG,GAAGA,CAAA,KAAM,GAAG;AAE5B,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,OAAO,MAAMC,IAAI,GAAGD,IAAI;AACxB,OAAO,MAAME,IAAI,GAAGF,IAAI;AACxB,OAAO,MAAMG,KAAK,GAAGH,IAAI;AACzB,OAAO,MAAMI,KAAK,GAAGJ,IAAI;AACzB,OAAO,MAAMK,MAAM,GAAGL,IAAI;AAC1B,OAAO,MAAMM,MAAM,GAAGN,IAAI;AAC1B,OAAO,MAAMO,WAAW,GAAGP,IAAI;AAC/B,OAAO,MAAMQ,UAAU,GAAGR,IAAI;AAC9B,OAAO,MAAMS,QAAQ,GAAG,CAAC,CAAC;AAE1B,OAAO,MAAM;EAAEC;AAAI,CAAC,GAAGC,OAAO","ignoreList":[]}
1
+ {"mappings":";;;AAGA,OAAO,MAAM,YAAY,OAAqC,WAAW,IAAI,EAAE;AAE/E,OAAO,MAAM,WAAW;AACxB,OAAO,MAAM,OAAO;AACpB,OAAO,MAAM,WAAW;AACxB,OAAO,MAAM,QAAQ;AACrB,OAAO,MAAM,MAAM;AACnB,OAAO,MAAM,UAAU;AACvB,OAAO,MAAM,OAAO,EAAE;AAEtB,OAAO,MAAM,UAAU,SAAS,UAAU;AACxC,OAAM,IAAI,MAAM,4CAA4C;;AAG9D,OAAO,MAAM,YAAY;AAEzB,MAAM,aAAa;AACnB,OAAO,MAAM,OAAO;AACpB,OAAO,MAAM,OAAO;AACpB,OAAO,MAAM,QAAQ;AACrB,OAAO,MAAM,QAAQ;AACrB,OAAO,MAAM,SAAS;AACtB,OAAO,MAAM,SAAS;AACtB,OAAO,MAAM,cAAc;AAC3B,OAAO,MAAM,aAAa;AAC1B,OAAO,MAAM,WAAW,EAAE;AAE1B,OAAO,MAAM,EAAE,QAAQ","names":[],"sources":["../../src/vm/process.ts"],"version":3,"sourcesContent":["/**\n * It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts\n */\nexport const nextTick = (fn: (...args: unknown[]) => void) => setTimeout(fn, 0);\n\nexport const platform = 'browser';\nexport const arch = 'browser';\nexport const execPath = 'browser';\nexport const title = 'browser';\nexport const pid = 1;\nexport const browser = true;\nexport const argv = [];\n\nexport const binding = function binding() {\n throw new Error('No such module. (Possibly not yet loaded)');\n};\n\nexport const cwd = () => '/';\n\nconst noop = () => {};\nexport const exit = noop;\nexport const kill = noop;\nexport const chdir = noop;\nexport const umask = noop;\nexport const dlopen = noop;\nexport const uptime = noop;\nexport const memoryUsage = noop;\nexport const uvCounters = noop;\nexport const features = {};\n\nexport const { env } = process;\n"],"file":"process.js"}
package/package.json CHANGED
@@ -1,40 +1,28 @@
1
1
  {
2
2
  "name": "@wyw-in-js/transform",
3
- "version": "1.1.0",
3
+ "version": "2.0.0-alpha.1",
4
+ "type": "module",
4
5
  "dependencies": {
5
- "@babel/core": "^7.23.5",
6
- "@babel/generator": "^7.23.5",
7
- "@babel/helper-module-imports": "^7.22.15",
8
- "@babel/plugin-transform-modules-commonjs": "^7.23.3",
9
- "@babel/template": "^7.22.15",
10
- "@babel/traverse": "^7.23.5",
11
- "@babel/types": "^7.23.5",
12
- "@wyw-in-js/processor-utils": "1.1.0",
13
- "@wyw-in-js/shared": "1.1.0",
6
+ "@jridgewell/remapping": "^2.3.5",
7
+ "@wyw-in-js/processor-utils": "2.0.0-alpha.1",
8
+ "@wyw-in-js/shared": "2.0.0-alpha.1",
14
9
  "cosmiconfig": "^8.0.0",
15
10
  "happy-dom": "^20.1.0",
16
11
  "minimatch": "^9.0.5",
12
+ "oxc-parser": "0.127.0",
13
+ "oxc-resolver": "11.19.1",
14
+ "oxc-transform": "0.127.0",
17
15
  "source-map": "^0.7.4",
18
16
  "stylis": "^4.3.0",
19
17
  "ts-invariant": "^0.10.3"
20
18
  },
21
19
  "devDependencies": {
22
- "@babel/plugin-syntax-typescript": "^7.23.3",
23
- "@babel/types": "^7.23.5",
24
20
  "@swc/core": "1.3.20",
25
- "@types/babel__core": "^7.20.5",
26
- "@types/babel__generator": "^7.6.7",
27
- "@types/babel__helper-module-imports": "^7.18.3",
28
- "@types/babel__template": "^7.4.4",
29
- "@types/babel__traverse": "^7.20.4",
30
21
  "@types/debug": "^4.1.9",
31
- "@types/node": "^16.18.55",
22
+ "@types/node": "^22.0.0",
32
23
  "@types/stylis": "^4.2.4",
33
- "@wyw-in-js/babel-config": "workspace:*",
34
24
  "@wyw-in-js/eslint-config": "workspace:*",
35
25
  "@wyw-in-js/ts-config": "workspace:*",
36
- "babel-plugin-istanbul": "^6.1.1",
37
- "babel-plugin-module-resolver": "^4.1.0",
38
26
  "dedent": "^1.5.1",
39
27
  "esbuild": "^0.15.16",
40
28
  "glob": "^10.3.10",
@@ -42,24 +30,29 @@
42
30
  "typescript": "^5.2.2"
43
31
  },
44
32
  "engines": {
45
- "node": ">=20.0.0"
33
+ "node": ">=22.0.0"
34
+ },
35
+ "exports": {
36
+ ".": {
37
+ "types": "./types/index.d.ts",
38
+ "default": "./esm/index.js"
39
+ }
46
40
  },
47
41
  "files": [
48
42
  "esm/",
49
- "lib/",
50
43
  "types/"
51
44
  ],
52
45
  "license": "MIT",
53
- "main": "lib/index.js",
46
+ "main": "esm/index.js",
54
47
  "module": "esm/index.js",
55
48
  "publishConfig": {
56
49
  "access": "public"
57
50
  },
58
51
  "scripts": {
59
- "build:esm": "babel src --out-dir esm --extensions '.js,.jsx,.ts,.tsx' --source-maps --delete-dir-on-start",
60
- "build:lib": "cross-env NODE_ENV=legacy babel src --out-dir lib --extensions '.js,.jsx,.ts,.tsx' --source-maps --delete-dir-on-start",
52
+ "build:esm": "node ../../scripts/build-esm-oxc.mjs",
61
53
  "build:types": "tsc --project ./tsconfig.lib.json --baseUrl . --rootDir ./src",
62
54
  "lint": "eslint --ext .js,.ts .",
55
+ "perf:complex-scenarios": "bun run ./scripts/perf-complex-scenarios.ts",
63
56
  "test": "bun test src"
64
57
  },
65
58
  "types": "types/index.d.ts",