@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
@@ -0,0 +1,11 @@
1
+ import type { Program } from 'oxc-parser';
2
+ type OxcSourceType = 'module' | 'unambiguous';
3
+ type ParsedOxc = {
4
+ module: {
5
+ hasModuleSyntax: boolean;
6
+ };
7
+ program: Program;
8
+ };
9
+ export declare const parseOxcCached: (filename: string, code: string, sourceType: OxcSourceType) => ParsedOxc;
10
+ export declare const parseOxcProgramCached: (filename: string, code: string, sourceType: OxcSourceType) => Program;
11
+ export {};
@@ -0,0 +1,38 @@
1
+ import { parseSync } from 'oxc-parser';
2
+ const MAX_PARSE_CACHE_ENTRIES = 200;
3
+ const parseCache = new Map();
4
+ const getAstType = (filename) => filename.endsWith('.ts') || filename.endsWith('.tsx') ? 'ts' : 'js';
5
+ const makeCacheKey = (filename, code, sourceType) => `${sourceType}\0${filename}\0${code}`;
6
+ const setCachedParse = (key, value) => {
7
+ parseCache.set(key, value);
8
+ if (parseCache.size > MAX_PARSE_CACHE_ENTRIES) {
9
+ const oldestKey = parseCache.keys().next().value;
10
+ if (oldestKey) {
11
+ parseCache.delete(oldestKey);
12
+ }
13
+ }
14
+ return value;
15
+ };
16
+ export const parseOxcCached = (filename, code, sourceType) => {
17
+ const cacheKey = makeCacheKey(filename, code, sourceType);
18
+ const cached = parseCache.get(cacheKey);
19
+ if (cached) {
20
+ return cached;
21
+ }
22
+ const parsed = parseSync(filename, code, {
23
+ astType: getAstType(filename),
24
+ range: true,
25
+ sourceType,
26
+ });
27
+ const fatalError = parsed.errors.find((error) => error.severity === 'Error');
28
+ if (fatalError) {
29
+ throw new Error(fatalError.message);
30
+ }
31
+ return setCachedParse(cacheKey, {
32
+ module: {
33
+ hasModuleSyntax: parsed.module.hasModuleSyntax,
34
+ },
35
+ program: parsed.program,
36
+ });
37
+ };
38
+ export const parseOxcProgramCached = (filename, code, sourceType) => parseOxcCached(filename, code, sourceType).program;
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stripQueryAndHash = exports.parseRequest = void 0;
4
1
  const getFirstSuffixIndex = (request) => {
5
2
  const queryIdx = request.indexOf('?');
6
3
  const hashIdx = request.indexOf('#');
@@ -10,7 +7,7 @@ const getFirstSuffixIndex = (request) => {
10
7
  return queryIdx;
11
8
  return Math.min(queryIdx, hashIdx);
12
9
  };
13
- const parseRequest = (request) => {
10
+ export const parseRequest = (request) => {
14
11
  const firstSuffixIndex = getFirstSuffixIndex(request);
15
12
  if (firstSuffixIndex === -1) {
16
13
  return { filename: request, hash: '', query: '' };
@@ -24,6 +21,4 @@ const parseRequest = (request) => {
24
21
  const hash = hashIdx === -1 ? '' : request.slice(hashIdx + 1);
25
22
  return { filename, hash, query };
26
23
  };
27
- exports.parseRequest = parseRequest;
28
- const stripQueryAndHash = (request) => (0, exports.parseRequest)(request).filename;
29
- exports.stripQueryAndHash = stripQueryAndHash;
24
+ export const stripQueryAndHash = (request) => parseRequest(request).filename;
@@ -1,5 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.peek = void 0;
4
- const peek = (stack, offset = 1) => stack[stack.length - offset];
5
- exports.peek = peek;
1
+ export const peek = (stack, offset = 1) => stack[stack.length - offset];
@@ -0,0 +1,8 @@
1
+ import { BaseProcessor } from '@wyw-in-js/processor-utils';
2
+ import type { TagSource } from '@wyw-in-js/processor-utils';
3
+ import type { StrictOptions } from '@wyw-in-js/shared';
4
+ export type ProcessorClass = new (...args: ConstructorParameters<typeof BaseProcessor>) => BaseProcessor;
5
+ export declare const getProcessorForImport: ({ imported, source }: {
6
+ imported: string;
7
+ source: string;
8
+ }, filename: string | null | undefined, options: Pick<StrictOptions, "tagResolver">) => [ProcessorClass | null, TagSource];
@@ -0,0 +1,135 @@
1
+ import { readFileSync } from 'fs';
2
+ import { createRequire } from 'module';
3
+ import { dirname, join } from 'path';
4
+ import { BaseProcessor } from '@wyw-in-js/processor-utils';
5
+ import { findPackageJSON, syncResolve } from '@wyw-in-js/shared';
6
+ const nodeRequire = createRequire(import.meta.url);
7
+ const definedTagsCache = new Map();
8
+ const resolvedTagResolverSourceCache = new Map();
9
+ const packageProcessorLookupCache = new Map();
10
+ const tagResolverProcessorLookupCache = new WeakMap();
11
+ const createTagResolverLookupCacheKey = (source, imported, filename) => `${filename ?? ''}\0${source}\0${imported}`;
12
+ const createPackageLookupCacheKey = (source, imported) => `${source}\0${imported}`;
13
+ const URL_SCHEME_RE = /^[A-Za-z][A-Za-z\d+.-]*:/;
14
+ const isPackageLookupCandidate = (source) => {
15
+ if (!source ||
16
+ source.startsWith('.') ||
17
+ source.startsWith('/') ||
18
+ source.startsWith('\\') ||
19
+ source.startsWith('\0') ||
20
+ source.startsWith('@/') ||
21
+ source.startsWith('~/') ||
22
+ source.startsWith('#') ||
23
+ source.includes('?') ||
24
+ source.includes('#') ||
25
+ URL_SCHEME_RE.test(source)) {
26
+ return false;
27
+ }
28
+ if (source.startsWith('@')) {
29
+ const [scope, pkg] = source.split('/', 2);
30
+ return scope.length > 1 && !!pkg;
31
+ }
32
+ return true;
33
+ };
34
+ const getTagResolverLookupCache = (tagResolver) => {
35
+ const existing = tagResolverProcessorLookupCache.get(tagResolver);
36
+ if (existing) {
37
+ return existing;
38
+ }
39
+ const created = new Map();
40
+ tagResolverProcessorLookupCache.set(tagResolver, created);
41
+ return created;
42
+ };
43
+ const getResolvedTagResolverSource = (source, sourceFile) => {
44
+ if (!sourceFile) {
45
+ return undefined;
46
+ }
47
+ const key = `${sourceFile}\0${source}`;
48
+ if (resolvedTagResolverSourceCache.has(key)) {
49
+ return resolvedTagResolverSourceCache.get(key);
50
+ }
51
+ try {
52
+ const resolved = syncResolve(source, sourceFile, []);
53
+ resolvedTagResolverSourceCache.set(key, resolved);
54
+ return resolved;
55
+ }
56
+ catch {
57
+ resolvedTagResolverSourceCache.set(key, undefined);
58
+ return undefined;
59
+ }
60
+ };
61
+ const getDefinedTagsFromPackage = (pkgName, filename) => {
62
+ if (definedTagsCache.has(pkgName)) {
63
+ return definedTagsCache.get(pkgName);
64
+ }
65
+ const packageJSONPath = findPackageJSON(pkgName, filename);
66
+ if (!packageJSONPath) {
67
+ return undefined;
68
+ }
69
+ const packageDir = dirname(packageJSONPath);
70
+ const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
71
+ const definedTags = packageJSON['wyw-in-js']?.tags;
72
+ const normalizedTags = definedTags
73
+ ? Object.entries(definedTags).reduce((acc, [key, value]) => ({
74
+ ...acc,
75
+ [key]: value.startsWith('.')
76
+ ? join(packageDir, value)
77
+ : nodeRequire.resolve(value, { paths: [packageDir] }),
78
+ }), {})
79
+ : undefined;
80
+ definedTagsCache.set(pkgName, normalizedTags);
81
+ return normalizedTags;
82
+ };
83
+ const isValidProcessorClass = (module) => module instanceof BaseProcessor.constructor;
84
+ const getProcessorFromPackage = (packageName, tagName, filename) => {
85
+ const definedTags = getDefinedTagsFromPackage(packageName, filename);
86
+ const processorPath = definedTags?.[tagName];
87
+ if (!processorPath) {
88
+ return null;
89
+ }
90
+ const Processor = nodeRequire(processorPath).default;
91
+ if (!isValidProcessorClass(Processor)) {
92
+ return null;
93
+ }
94
+ return Processor;
95
+ };
96
+ const getProcessorFromFile = (processorPath) => {
97
+ const Processor = nodeRequire(processorPath).default;
98
+ if (!isValidProcessorClass(Processor)) {
99
+ return null;
100
+ }
101
+ return Processor;
102
+ };
103
+ export const getProcessorForImport = ({ imported, source }, filename, options) => {
104
+ const { tagResolver } = options;
105
+ const packageLookupCandidate = isPackageLookupCandidate(source);
106
+ if (!tagResolver && !packageLookupCandidate) {
107
+ return [null, { imported, source }];
108
+ }
109
+ const cacheKey = tagResolver
110
+ ? createTagResolverLookupCacheKey(source, imported, filename)
111
+ : createPackageLookupCacheKey(source, imported);
112
+ const lookupCache = tagResolver
113
+ ? getTagResolverLookupCache(tagResolver)
114
+ : packageProcessorLookupCache;
115
+ if (lookupCache.has(cacheKey)) {
116
+ return [lookupCache.get(cacheKey) ?? null, { imported, source }];
117
+ }
118
+ let customFile = null;
119
+ if (tagResolver) {
120
+ const tagResolverMeta = {
121
+ sourceFile: filename,
122
+ resolvedSource: getResolvedTagResolverSource(source, filename),
123
+ };
124
+ customFile = tagResolver(source, imported, tagResolverMeta);
125
+ }
126
+ let processor = null;
127
+ if (customFile) {
128
+ processor = getProcessorFromFile(customFile);
129
+ }
130
+ else if (packageLookupCandidate) {
131
+ processor = getProcessorFromPackage(source, imported, filename);
132
+ }
133
+ lookupCache.set(cacheKey, processor);
134
+ return [processor, { imported, source }];
135
+ };
@@ -0,0 +1,12 @@
1
+ type ResolveFilenameParent = {
2
+ filename: string;
3
+ id: string;
4
+ paths: string[];
5
+ };
6
+ type ResolveFilenameModuleImplementation = {
7
+ _resolveFilename: (id: string, options: ResolveFilenameParent, isMain?: boolean, resolveOptions?: {
8
+ conditions?: Set<string>;
9
+ }) => string;
10
+ };
11
+ export declare const resolveFilenameWithConditions: (moduleImpl: ResolveFilenameModuleImplementation, id: string, parent: ResolveFilenameParent, conditions?: Set<string>) => string;
12
+ export {};
@@ -0,0 +1,103 @@
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
+ }
55
+ catch {
56
+ throw new Error([
57
+ '[wyw-in-js] Failed to parse Node resolver fallback output.',
58
+ `stdout: ${stdout}`,
59
+ result.stderr ? `stderr: ${result.stderr.trim()}` : '',
60
+ ]
61
+ .filter(Boolean)
62
+ .join('\n'));
63
+ }
64
+ }
65
+ if (parsed?.error) {
66
+ const error = new Error(parsed.error.message);
67
+ error.code = parsed.error.code;
68
+ throw error;
69
+ }
70
+ if (result.status !== 0 || !parsed?.resolved) {
71
+ throw new Error([
72
+ '[wyw-in-js] Node resolver fallback failed.',
73
+ `status: ${result.status ?? 'null'}`,
74
+ result.stderr ? `stderr: ${result.stderr.trim()}` : '',
75
+ ]
76
+ .filter(Boolean)
77
+ .join('\n'));
78
+ }
79
+ return parsed.resolved;
80
+ };
81
+ export const resolveFilenameWithConditions = (moduleImpl, id, parent, conditions) => {
82
+ const resolveOptions = conditions ? { conditions } : undefined;
83
+ const usesNativeResolver = moduleImpl._resolveFilename === nativeResolveFilename;
84
+ if (!conditions || !isBunRuntime() || !usesNativeResolver) {
85
+ return moduleImpl._resolveFilename(id, parent, false, resolveOptions);
86
+ }
87
+ // Bun crashes on macOS/Silicon in this exact path:
88
+ // Module._resolveFilename(specifier, parent, false, { conditions })
89
+ // We reproduced it both with a tiny standalone script and through the
90
+ // `EvalBroker > passes conditionNames to node fallback resolution` test,
91
+ // including on Bun 1.3.13. Keep this fallback narrow: only conditioned
92
+ // resolution under Bun goes through a short-lived Node subprocess.
93
+ //
94
+ // Cleanup criteria:
95
+ // 1. Bun passes the minimal local `_resolveFilename(..., { conditions })`
96
+ // repro on macOS without segfaulting.
97
+ // 2. The conditionNames runner path passes without this fallback.
98
+ //
99
+ // As of 2026-04-20 we did not find an exact open upstream Bun issue for this
100
+ // `_resolveFilename(..., { conditions })` crash, so keep the comment factual
101
+ // and the workaround self-contained.
102
+ return resolveWithNodeProcess(id, parent, conditions);
103
+ };
@@ -1,6 +1,6 @@
1
1
  import * as vm from 'vm';
2
2
  import type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';
3
- export declare function createVmContext(filename: string, features: FeatureFlags<'happyDOM'>, additionalContext: Partial<vm.Context>, overrideContext?: StrictOptions['overrideContext']): {
3
+ export declare function createVmContext(filename: string, features: FeatureFlags<'happyDOM'>, additionalContext: Partial<vm.Context>, overrideContext?: StrictOptions['overrideContext']): Promise<{
4
4
  context: vm.Context;
5
5
  teardown: (() => void) | (() => void);
6
- };
6
+ }>;
@@ -1,47 +1,11 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.createVmContext = createVmContext;
37
- const vm = __importStar(require("vm"));
38
- const shared_1 = require("@wyw-in-js/shared");
39
- const process = __importStar(require("./process"));
1
+ import * as vm from 'vm';
2
+ import { isFeatureEnabled } from '@wyw-in-js/shared';
3
+ import * as process from './process';
40
4
  const NOOP = () => { };
41
5
  const IMPORT_META_ENV = '__wyw_import_meta_env';
42
6
  const HAPPY_DOM_REQUIRE_HOOK = '__wyw_requireHappyDom';
43
7
  let importMetaEnvWarned = false;
44
- let happyDomRequireEsmWarned = false;
8
+ let happyDomLoadWarned = false;
45
9
  let happyDomUnavailable = false;
46
10
  function isErrRequireEsm(error) {
47
11
  return (typeof error === 'object' &&
@@ -93,19 +57,23 @@ function createImportMetaEnvProxy() {
93
57
  },
94
58
  });
95
59
  }
96
- function requireHappyDom() {
60
+ let happyDomImportPromise = null;
61
+ async function loadHappyDom() {
97
62
  const hook = globalThis[HAPPY_DOM_REQUIRE_HOOK];
98
63
  if (typeof hook === 'function') {
99
- return hook();
64
+ const result = hook();
65
+ return Promise.resolve(result);
100
66
  }
101
- // eslint-disable-next-line @typescript-eslint/no-var-requires
102
- return require('happy-dom');
67
+ if (!happyDomImportPromise) {
68
+ happyDomImportPromise = import('happy-dom');
69
+ }
70
+ return happyDomImportPromise;
103
71
  }
104
- function createWindow() {
72
+ async function createWindow() {
105
73
  if (happyDomUnavailable)
106
74
  return undefined;
107
75
  try {
108
- const { Window, GlobalWindow } = requireHappyDom();
76
+ const { Window, GlobalWindow } = await loadHappyDom();
109
77
  const HappyWindow = GlobalWindow || Window;
110
78
  const win = new HappyWindow();
111
79
  // TODO: browser doesn't expose Buffer, but a lot of dependencies use it
@@ -114,27 +82,22 @@ function createWindow() {
114
82
  return win;
115
83
  }
116
84
  catch (error) {
117
- if (!isErrRequireEsm(error)) {
118
- throw error;
85
+ if (isErrRequireEsm(error)) {
86
+ // This can happen if a custom hook still uses require() for ESM.
119
87
  }
120
- const hasCustomRequireHook = typeof globalThis[HAPPY_DOM_REQUIRE_HOOK] ===
121
- 'function';
122
- if (!hasCustomRequireHook) {
88
+ else if (!happyDomUnavailable) {
123
89
  happyDomUnavailable = true;
124
90
  }
125
- if (happyDomRequireEsmWarned)
91
+ if (happyDomLoadWarned)
126
92
  return undefined;
127
- happyDomRequireEsmWarned = true;
93
+ happyDomLoadWarned = true;
128
94
  // eslint-disable-next-line no-console
129
95
  console.warn([
130
96
  `[wyw-in-js] DOM emulation is enabled (features.happyDOM), but "happy-dom" could not be loaded in this build-time runtime.`,
131
- `This usually happens because "happy-dom" is ESM-only and cannot be loaded via require() in a CJS build.`,
132
- ``,
133
97
  `WyW will continue without DOM emulation (as if features.happyDOM:false).`,
134
98
  ``,
135
99
  `To silence this warning: set features: { happyDOM: false }.`,
136
- `To get real DOM emulation in Node 20+, WyW needs an ESM-only eval architecture (planned for v2.0.0),`,
137
- `or a runtime that supports require(ESM) (Node 24+).`,
100
+ `To restore DOM emulation, ensure "happy-dom" can be imported in the build-time runtime.`,
138
101
  ].join('\n'));
139
102
  return undefined;
140
103
  }
@@ -177,8 +140,8 @@ function createNothing() {
177
140
  window: undefined,
178
141
  };
179
142
  }
180
- function createHappyDOMWindow() {
181
- const win = createWindow();
143
+ async function createHappyDOMWindow() {
144
+ const win = await createWindow();
182
145
  if (!win)
183
146
  return createNothing();
184
147
  return {
@@ -188,10 +151,10 @@ function createHappyDOMWindow() {
188
151
  window: win,
189
152
  };
190
153
  }
191
- function createVmContext(filename, features, additionalContext, overrideContext = (i) => i) {
192
- const isHappyDOMEnabled = (0, shared_1.isFeatureEnabled)(features, 'happyDOM', filename);
154
+ export async function createVmContext(filename, features, additionalContext, overrideContext = (i) => i) {
155
+ const isHappyDOMEnabled = isFeatureEnabled(features, 'happyDOM', filename);
193
156
  const { teardown, window } = isHappyDOMEnabled
194
- ? createHappyDOMWindow()
157
+ ? await createHappyDOMWindow()
195
158
  : createNothing();
196
159
  const envContext = {
197
160
  [IMPORT_META_ENV]: createImportMetaEnvProxy(),
@@ -1,32 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.env = exports.features = exports.uvCounters = exports.memoryUsage = exports.uptime = exports.dlopen = exports.umask = exports.chdir = exports.kill = exports.exit = exports.cwd = exports.binding = exports.argv = exports.browser = exports.pid = exports.title = exports.execPath = exports.arch = exports.platform = exports.nextTick = void 0;
4
1
  /**
5
2
  * It contains API for mocked process variable available in node environment used to evaluate scripts with node's `vm` in ./module.ts
6
3
  */
7
- const nextTick = (fn) => setTimeout(fn, 0);
8
- exports.nextTick = nextTick;
9
- exports.platform = 'browser';
10
- exports.arch = 'browser';
11
- exports.execPath = 'browser';
12
- exports.title = 'browser';
13
- exports.pid = 1;
14
- exports.browser = true;
15
- exports.argv = [];
16
- const binding = function binding() {
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
+ export const pid = 1;
10
+ export const browser = true;
11
+ export const argv = [];
12
+ export const binding = function binding() {
17
13
  throw new Error('No such module. (Possibly not yet loaded)');
18
14
  };
19
- exports.binding = binding;
20
- const cwd = () => '/';
21
- exports.cwd = cwd;
15
+ export const cwd = () => '/';
22
16
  const noop = () => { };
23
- exports.exit = noop;
24
- exports.kill = noop;
25
- exports.chdir = noop;
26
- exports.umask = noop;
27
- exports.dlopen = noop;
28
- exports.uptime = noop;
29
- exports.memoryUsage = noop;
30
- exports.uvCounters = noop;
31
- exports.features = {};
32
- exports.env = process.env;
17
+ export const exit = noop;
18
+ export const kill = noop;
19
+ export const chdir = noop;
20
+ export const umask = noop;
21
+ export const dlopen = noop;
22
+ export const uptime = noop;
23
+ export const memoryUsage = noop;
24
+ export const uvCounters = noop;
25
+ export const features = {};
26
+ export const { env } = process;
package/esm/babel.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=babel.js.map
package/esm/babel.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"babel.js","names":[],"sources":["../src/babel.ts"],"sourcesContent":["import type core from '@babel/core';\n\nexport type Core = typeof core;\n"],"mappings":"","ignoreList":[]}