@wyw-in-js/transform 1.0.8 → 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 -28
  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 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  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 +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  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 +7 -8
  178. package/types/index.js +24 -77
  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 +6 -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 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -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 +4 -24
  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.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  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 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,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,27 @@
1
1
  {
2
2
  "name": "@wyw-in-js/transform",
3
- "version": "1.0.8",
3
+ "version": "2.0.0-alpha.0",
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.0.5",
13
- "@wyw-in-js/shared": "1.0.5",
6
+ "@jridgewell/remapping": "^2.3.5",
7
+ "@wyw-in-js/processor-utils": "2.0.0-alpha.0",
8
+ "@wyw-in-js/shared": "2.0.0-alpha.0",
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-transform": "0.127.0",
17
14
  "source-map": "^0.7.4",
18
15
  "stylis": "^4.3.0",
19
16
  "ts-invariant": "^0.10.3"
20
17
  },
21
18
  "devDependencies": {
22
- "@babel/plugin-syntax-typescript": "^7.23.3",
23
- "@babel/types": "^7.23.5",
24
19
  "@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
20
  "@types/debug": "^4.1.9",
31
- "@types/node": "^16.18.55",
21
+ "@types/node": "^22.0.0",
32
22
  "@types/stylis": "^4.2.4",
33
- "@wyw-in-js/babel-config": "workspace:*",
34
23
  "@wyw-in-js/eslint-config": "workspace:*",
35
24
  "@wyw-in-js/ts-config": "workspace:*",
36
- "babel-plugin-istanbul": "^6.1.1",
37
- "babel-plugin-module-resolver": "^4.1.0",
38
25
  "dedent": "^1.5.1",
39
26
  "esbuild": "^0.15.16",
40
27
  "glob": "^10.3.10",
@@ -42,24 +29,29 @@
42
29
  "typescript": "^5.2.2"
43
30
  },
44
31
  "engines": {
45
- "node": ">=20.0.0"
32
+ "node": ">=22.0.0"
33
+ },
34
+ "exports": {
35
+ ".": {
36
+ "types": "./types/index.d.ts",
37
+ "default": "./esm/index.js"
38
+ }
46
39
  },
47
40
  "files": [
48
41
  "esm/",
49
- "lib/",
50
42
  "types/"
51
43
  ],
52
44
  "license": "MIT",
53
- "main": "lib/index.js",
45
+ "main": "esm/index.js",
54
46
  "module": "esm/index.js",
55
47
  "publishConfig": {
56
48
  "access": "public"
57
49
  },
58
50
  "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",
51
+ "build:esm": "node ../../scripts/build-esm-oxc.mjs",
61
52
  "build:types": "tsc --project ./tsconfig.lib.json --baseUrl . --rootDir ./src",
62
53
  "lint": "eslint --ext .js,.ts .",
54
+ "perf:complex-scenarios": "bun run ./scripts/perf-complex-scenarios.ts",
63
55
  "test": "bun test src"
64
56
  },
65
57
  "types": "types/index.d.ts",
package/types/cache.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { BarrelManifestCacheEntry } from './transform/barrelManifest';
1
+ import type { BarrelManifestCacheEntry } from './transform/barrelManifest.types';
2
2
  import type { Entrypoint } from './transform/Entrypoint';
3
3
  import type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';
4
4
  interface IBaseCachedEntrypoint {
@@ -27,7 +27,13 @@ export declare class TransformCacheCollection<TEntrypoint extends IBaseCachedEnt
27
27
  private contentHashes;
28
28
  private fileMtimes;
29
29
  private readonly exportDependencies;
30
+ private keySalt;
31
+ private invalidatedFiles;
32
+ private consumedInvalidationVersions;
30
33
  constructor(caches?: Partial<ICaches<TEntrypoint>>);
34
+ setKeySalt(keySalt: string | null): void;
35
+ private getKey;
36
+ getKeySalt(): string | null;
31
37
  add<TCache extends CacheNames, TValue extends MapValue<ICaches<TEntrypoint>[TCache]>>(cacheName: TCache, key: string, value: TValue): void;
32
38
  clear(cacheName: CacheNames | 'all'): void;
33
39
  delete(cacheName: CacheNames, key: string): void;
@@ -35,18 +41,21 @@ export declare class TransformCacheCollection<TEntrypoint extends IBaseCachedEnt
35
41
  has(cacheName: CacheNames, key: string): boolean;
36
42
  invalidate(cacheName: CacheNames, key: string): void;
37
43
  invalidateForFile(filename: string): void;
38
- invalidateIfChanged(filename: string, content: string, previousVisitedFiles?: Set<string>, source?: 'fs' | 'loaded', changedFiles?: Set<string>): boolean;
44
+ consumeInvalidation(filename: string): boolean;
45
+ invalidateIfChanged(filename: string, content: string, previousVisitedFiles?: Set<string>, source?: 'fs' | 'loaded', changedFiles?: Set<string>, dependencyChangeMemo?: Map<string, boolean>, forceContentCheck?: boolean): boolean;
46
+ private getDependenciesToCheck;
47
+ private didDependencyChange;
48
+ private didFileContentHashChange;
39
49
  setCacheDependencies(cacheName: 'barrelManifests' | 'exports', key: string, dependencies: Iterable<string>): void;
40
- private clearCacheDependencies;
41
- private getCachedDependencies;
42
- private getDependencyCache;
43
- private hasCachedDependencies;
44
50
  /**
45
51
  * Fast check if a file changed on disk since last seen.
46
- * Uses mtime as a fast path only reads the file if mtime differs.
47
- * Returns true if the file changed (cache was invalidated).
52
+ * Uses mtime as a fast path and only reads the file if mtime differs.
48
53
  */
49
54
  checkFreshness(filename: string, strippedFilename: string): boolean;
55
+ private clearCacheDependencies;
56
+ private getCachedDependencies;
57
+ private getDependencyCache;
58
+ private hasCachedDependencies;
50
59
  private setContentHash;
51
60
  }
52
61
  export {};