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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -29
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +3 -6
  178. package/types/index.js +24 -82
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +2 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +0 -23
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -23
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,274 +1,340 @@
1
- import fs from 'node:fs';
2
- import { invariant } from 'ts-invariant';
3
- import { BaseEntrypoint } from './BaseEntrypoint';
4
- import { isSuperSet, mergeOnly } from './Entrypoint.helpers';
5
- import { EvaluatedEntrypoint } from './EvaluatedEntrypoint';
6
- import { AbortError } from './actions/AbortError';
7
- import { BaseAction } from './actions/BaseAction';
8
- import { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';
9
- import { stripQueryAndHash } from '../utils/parseRequest';
10
- const EMPTY_FILE = '=== empty file ===';
11
- const DEFAULT_ACTION_CONTEXT = Symbol('defaultActionContext');
1
+ import fs from "node:fs";
2
+ import { invariant } from "ts-invariant";
3
+ import { BaseEntrypoint } from "./BaseEntrypoint.js";
4
+ import { isSuperSet, mergeOnly } from "./Entrypoint.helpers.js";
5
+ import { EvaluatedEntrypoint } from "./EvaluatedEntrypoint.js";
6
+ import { AbortError } from "./actions/AbortError.js";
7
+ import { BaseAction } from "./actions/BaseAction.js";
8
+ import { UnprocessedEntrypointError } from "./actions/UnprocessedEntrypointError.js";
9
+ import { stripQueryAndHash } from "../utils/parseRequest.js";
10
+ const EMPTY_FILE = "=== empty file ===";
11
+ const DEFAULT_ACTION_CONTEXT = Symbol("defaultActionContext");
12
12
  function hasLoop(name, parent, processed = []) {
13
- if (parent.name === name || processed.includes(parent.name)) {
14
- return true;
15
- }
16
- for (const p of parent.parents) {
17
- const found = hasLoop(name, p, [...processed, parent.name]);
18
- if (found) {
19
- return found;
20
- }
21
- }
22
- return false;
13
+ if (parent.name === name || processed.includes(parent.name)) {
14
+ return true;
15
+ }
16
+ for (const p of parent.parents) {
17
+ const found = hasLoop(name, p, [...processed, parent.name]);
18
+ if (found) {
19
+ return found;
20
+ }
21
+ }
22
+ return false;
23
23
  }
24
24
  export class Entrypoint extends BaseEntrypoint {
25
- evaluated = false;
26
- onSupersedeHandlers = [];
27
- actionsCache = new Map();
28
- #hasWywMetadata = false;
29
- #isProcessing = false;
30
- #pendingOnly = null;
31
- #supersededWith = null;
32
- #transformResultCode = null;
33
- constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), invalidationDependencies = new Map(), invalidateOnDependencyChange = new Set(), generation = 1) {
34
- super(services, evaluatedOnly, exports, generation, name, only, parents, dependencies, invalidationDependencies, invalidateOnDependencyChange);
35
- this.initialCode = initialCode;
36
- this.resolveTasks = resolveTasks;
37
- this.dependencies = dependencies;
38
- this.invalidationDependencies = invalidationDependencies;
39
- this.invalidateOnDependencyChange = invalidateOnDependencyChange;
40
- this.loadedAndParsed = loadedAndParsed ?? services.loadAndParseFn(services, name, initialCode, parents[0]?.log ?? services.log);
41
- if (this.loadedAndParsed.code !== undefined) {
42
- services.cache.invalidateIfChanged(name, this.loadedAndParsed.code, undefined, this.initialCode === undefined ? 'fs' : 'loaded');
43
- }
44
- const code = this.loadedAndParsed.evaluator === 'ignored' ? '[IGNORED]' : this.originalCode || EMPTY_FILE;
45
- this.log.extend('source')('created %s (%o)\n%s', name, only, code);
46
- }
47
- get ignored() {
48
- return this.loadedAndParsed.evaluator === 'ignored';
49
- }
50
- get originalCode() {
51
- return this.loadedAndParsed.code;
52
- }
53
- get supersededWith() {
54
- return this.#supersededWith?.supersededWith ?? this.#supersededWith;
55
- }
56
- get transformedCode() {
57
- return this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null;
58
- }
59
- static createRoot(services, name, only, loadedCode) {
60
- const created = Entrypoint.create(services, null, name, only, loadedCode);
61
- invariant(created !== 'loop', 'loop detected');
62
- return created;
63
- }
64
-
65
- /**
66
- * Creates an entrypoint for the specified file.
67
- * If there is already an entrypoint for this file, there will be four possible outcomes:
68
- * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,
69
- * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.
70
- * It can happen if the file was changed and the watcher notified us about it, or we received a new version
71
- * of the file from a loader whereas the previous one was loaded from the filesystem.
72
- * The new entrypoint will be returned.
73
- * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.
74
- * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.
75
- * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.
76
- */
77
- static create(services, parent, name, only, loadedCode) {
78
- const {
79
- cache,
80
- eventEmitter
81
- } = services;
82
- return eventEmitter.perf('createEntrypoint', () => {
83
- const [status, entrypoint] = Entrypoint.innerCreate(services, parent ? {
84
- evaluated: parent.evaluated,
85
- log: parent.log,
86
- name: parent.name,
87
- parents: parent.parents,
88
- seqId: parent.seqId
89
- } : null, name, only, loadedCode);
90
- if (status !== 'cached') {
91
- cache.add('entrypoints', name, entrypoint);
92
- }
93
- return status === 'loop' ? 'loop' : entrypoint;
94
- });
95
- }
96
- static innerCreate(services, parent, name, only, loadedCode) {
97
- const {
98
- cache
99
- } = services;
100
- const cached = cache.get('entrypoints', name);
101
- let changed = false;
102
- if (loadedCode !== undefined) {
103
- changed = cache.invalidateIfChanged(name, loadedCode, undefined, 'loaded');
104
- } else if (cached && cached.initialCode === undefined) {
105
- try {
106
- changed = cache.invalidateIfChanged(name, fs.readFileSync(stripQueryAndHash(name), 'utf8'), undefined, 'fs');
107
- } catch {
108
- changed = false;
109
- }
110
- }
111
- if (!cached?.evaluated && cached?.ignored) {
112
- return ['cached', cached];
113
- }
114
- const exports = cached?.exports;
115
- const evaluatedOnly = changed ? [] : cached?.evaluatedOnly ?? [];
116
- const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : [...only];
117
- if (cached?.evaluated) {
118
- cached.log('is already evaluated with', cached.evaluatedOnly);
119
- }
120
- if (!changed && cached && !cached.evaluated) {
121
- const isLoop = parent && hasLoop(name, parent);
122
- if (isLoop) {
123
- parent.log('[createEntrypoint] %s is a loop', name);
124
- }
125
- if (parent && !cached.parents.map(p => p.name).includes(parent.name)) {
126
- cached.parents.push(parent);
127
- }
128
- if (isSuperSet(cached.only, mergedOnly)) {
129
- cached.log('is cached', name);
130
- return [isLoop ? 'loop' : 'cached', cached];
131
- }
132
- cached.log('is cached, but with different `only` %o (the cached one %o)', only, cached?.only);
133
- if (cached.#isProcessing) {
134
- cached.deferOnlySupersede(mergedOnly);
135
- cached.log('is being processed, defer supersede (%o -> %o)', cached.only, mergedOnly);
136
- return [isLoop ? 'loop' : 'cached', cached];
137
- }
138
- return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];
139
- }
140
- const newEntrypoint = new Entrypoint(services, parent ? [parent] : [], loadedCode, name, mergedOnly, exports, evaluatedOnly, undefined, cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined, cached && 'dependencies' in cached ? cached.dependencies : undefined, cached && 'invalidationDependencies' in cached ? cached.invalidationDependencies : undefined, cached && 'invalidateOnDependencyChange' in cached ? cached.invalidateOnDependencyChange : undefined, cached ? cached.generation + 1 : 1);
141
- if (cached && !cached.evaluated) {
142
- cached.log('is cached, but with different code');
143
- cached.supersede(newEntrypoint);
144
- }
145
- return ['created', newEntrypoint];
146
- }
147
- addDependency(dependency) {
148
- this.resolveTasks.delete(dependency.source);
149
- this.dependencies.set(dependency.source, dependency);
150
- }
151
- addInvalidationDependency(dependency) {
152
- this.resolveTasks.delete(dependency.source);
153
- this.invalidationDependencies.set(dependency.source, dependency);
154
- }
155
- addResolveTask(name, dependency) {
156
- this.resolveTasks.set(name, dependency);
157
- }
158
- applyDeferredSupersede() {
159
- if (this.#supersededWith || this.#pendingOnly === null) {
160
- return null;
161
- }
162
- const mergedOnly = mergeOnly(this.only, this.#pendingOnly);
163
- this.#pendingOnly = null;
164
- if (isSuperSet(this.only, mergedOnly)) {
165
- return null;
166
- }
167
- this.log('apply deferred supersede (%o -> %o)', this.only, mergedOnly);
168
- const nextEntrypoint = this.supersede(mergedOnly);
169
- this.services.cache.add('entrypoints', this.name, nextEntrypoint);
170
- return nextEntrypoint;
171
- }
172
- assertNotSuperseded() {
173
- if (this.supersededWith) {
174
- this.log('superseded');
175
- throw new AbortError('superseded');
176
- }
177
- }
178
- assertTransformed() {
179
- if (this.transformedCode === null) {
180
- this.log('not transformed');
181
- throw new UnprocessedEntrypointError(this.supersededWith ?? this);
182
- }
183
- }
184
- beginProcessing() {
185
- this.#isProcessing = true;
186
- }
187
- createAction(actionType, data, abortSignal = null, actionContext = DEFAULT_ACTION_CONTEXT) {
188
- if (!this.actionsCache.has(actionType)) {
189
- this.actionsCache.set(actionType, new Map());
190
- }
191
- const contexts = this.actionsCache.get(actionType);
192
- if (!contexts.has(actionContext)) {
193
- contexts.set(actionContext, new Map());
194
- }
195
- const cache = contexts.get(actionContext);
196
- const cached = cache.get(data);
197
- if (cached && !cached.abortSignal?.aborted) {
198
- return cached;
199
- }
200
- const newAction = new BaseAction(actionType, this.services, this, data, abortSignal, actionContext);
201
- cache.set(data, newAction);
202
- this.services.eventEmitter.entrypointEvent(this.seqId, {
203
- type: 'actionCreated',
204
- actionType,
205
- actionIdx: newAction.idx
206
- });
207
- return newAction;
208
- }
209
- createChild(name, only, loadedCode) {
210
- return Entrypoint.create(this.services, this, name, only, loadedCode);
211
- }
212
- createEvaluated() {
213
- const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);
214
- this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);
215
- const evaluated = new EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents, this.dependencies, this.invalidationDependencies, this.invalidateOnDependencyChange);
216
- evaluated.initialCode = this.initialCode;
217
- return evaluated;
218
- }
219
- endProcessing() {
220
- this.#isProcessing = false;
221
- }
222
- getDependency(name) {
223
- return this.dependencies.get(name);
224
- }
225
- getInvalidationDependency(name) {
226
- return this.invalidationDependencies.get(name);
227
- }
228
- markInvalidateOnDependencyChange(filename) {
229
- this.invalidateOnDependencyChange.add(filename);
230
- }
231
- getResolveTask(name) {
232
- return this.resolveTasks.get(name);
233
- }
234
- hasWywMetadata() {
235
- return this.#hasWywMetadata;
236
- }
237
- onSupersede(callback) {
238
- if (this.#supersededWith) {
239
- callback(this.#supersededWith);
240
- return () => {};
241
- }
242
- this.onSupersedeHandlers.push(callback);
243
- return () => {
244
- const index = this.onSupersedeHandlers.indexOf(callback);
245
- if (index >= 0) {
246
- this.onSupersedeHandlers.splice(index, 1);
247
- }
248
- };
249
- }
250
- setTransformResult(res) {
251
- this.#hasWywMetadata = Boolean(res?.metadata);
252
- this.#transformResultCode = res?.code ?? null;
253
- this.services.eventEmitter.entrypointEvent(this.seqId, {
254
- isNull: res === null,
255
- type: 'setTransformResult'
256
- });
257
- }
258
- deferOnlySupersede(only) {
259
- this.#pendingOnly = this.#pendingOnly ? mergeOnly(this.#pendingOnly, only) : [...only];
260
- }
261
- supersede(newOnlyOrEntrypoint) {
262
- this.#pendingOnly = null;
263
- const newEntrypoint = newOnlyOrEntrypoint instanceof Entrypoint ? newOnlyOrEntrypoint : new Entrypoint(this.services, this.parents, this.initialCode, this.name, newOnlyOrEntrypoint, this.exports, this.evaluatedOnly, this.loadedAndParsed, this.resolveTasks, this.dependencies, this.invalidationDependencies, this.invalidateOnDependencyChange, this.generation + 1);
264
- this.services.eventEmitter.entrypointEvent(this.seqId, {
265
- type: 'superseded',
266
- with: newEntrypoint.seqId
267
- });
268
- this.log('superseded by %s (%o -> %o)', newEntrypoint.name, this.only, newEntrypoint.only);
269
- this.#supersededWith = newEntrypoint;
270
- this.onSupersedeHandlers.forEach(handler => handler(newEntrypoint));
271
- return newEntrypoint;
272
- }
25
+ evaluated = false;
26
+ loadedAndParsed;
27
+ onSupersedeHandlers = [];
28
+ actionsCache = new Map();
29
+ // Tracks how many times resolveImports has settled with `resolved: null`
30
+ // for a given source. Bundler resolvers can return null transiently early
31
+ // in a build (loader context for that file isn't registered yet); after a
32
+ // bounded number of retries we accept the null as authoritative.
33
+ #resolveTaskNullAttempts = new Map();
34
+ static RESOLVE_TASK_MAX_NULL_ATTEMPTS = 2;
35
+ #hasWywMetadata = false;
36
+ #hasTransformResult = false;
37
+ #isProcessing = false;
38
+ #pendingOnly = null;
39
+ #preevalResult = null;
40
+ #processingPromise = null;
41
+ #resolveProcessing = null;
42
+ #supersededWith = null;
43
+ #transformResultCode = null;
44
+ constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), invalidationDependencies = new Map(), invalidateOnDependencyChange = new Set(), generation = 1, skipCacheInvalidation = false) {
45
+ super(services, evaluatedOnly, exports, generation, name, only, parents, dependencies, invalidationDependencies, invalidateOnDependencyChange);
46
+ this.initialCode = initialCode;
47
+ this.resolveTasks = resolveTasks;
48
+ this.dependencies = dependencies;
49
+ this.invalidationDependencies = invalidationDependencies;
50
+ this.invalidateOnDependencyChange = invalidateOnDependencyChange;
51
+ this.skipCacheInvalidation = skipCacheInvalidation;
52
+ this.loadedAndParsed = loadedAndParsed ?? services.loadAndParseFn(services, name, initialCode, parents[0]?.log ?? services.log);
53
+ if (!this.skipCacheInvalidation && this.loadedAndParsed.code !== undefined) {
54
+ services.cache.invalidateIfChanged(name, this.loadedAndParsed.code, undefined, this.initialCode === undefined ? "fs" : "loaded");
55
+ }
56
+ const code = this.loadedAndParsed.evaluator === "ignored" ? "[IGNORED]" : this.originalCode || EMPTY_FILE;
57
+ this.log.extend("source")("created %s (%o)\n%s", name, only, code);
58
+ }
59
+ get ignored() {
60
+ return this.loadedAndParsed.evaluator === "ignored";
61
+ }
62
+ get originalCode() {
63
+ return this.loadedAndParsed.code;
64
+ }
65
+ get supersededWith() {
66
+ return this.#supersededWith?.supersededWith ?? this.#supersededWith;
67
+ }
68
+ get transformedCode() {
69
+ return this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null;
70
+ }
71
+ get transformed() {
72
+ return this.#hasTransformResult || this.supersededWith?.transformed || false;
73
+ }
74
+ get isProcessing() {
75
+ return this.#isProcessing;
76
+ }
77
+ static createRoot(services, name, only, loadedCode, options = {}) {
78
+ const created = Entrypoint.create(services, null, name, only, loadedCode, options);
79
+ invariant(created !== "loop", "loop detected");
80
+ return created;
81
+ }
82
+ static create(services, parent, name, only, loadedCode, options = {}) {
83
+ const { cache, eventEmitter } = services;
84
+ return eventEmitter.perf("createEntrypoint", () => {
85
+ const [status, entrypoint] = Entrypoint.innerCreate(services, parent ? {
86
+ evaluated: parent.evaluated,
87
+ log: parent.log,
88
+ name: parent.name,
89
+ parents: parent.parents,
90
+ seqId: parent.seqId
91
+ } : null, name, only, loadedCode, options);
92
+ if (status !== "cached") {
93
+ cache.add("entrypoints", name, entrypoint);
94
+ }
95
+ return status === "loop" ? "loop" : entrypoint;
96
+ });
97
+ }
98
+ static innerCreate(services, parent, name, only, loadedCode, options) {
99
+ const { cache } = services;
100
+ const cached = cache.get("entrypoints", name);
101
+ let changed = false;
102
+ if (loadedCode !== undefined) {
103
+ changed = cache.invalidateIfChanged(name, loadedCode, undefined, "loaded");
104
+ } else if (cached && cached.initialCode === undefined) {
105
+ try {
106
+ changed = cache.invalidateIfChanged(name, fs.readFileSync(stripQueryAndHash(name), "utf8"), undefined, "fs");
107
+ } catch {
108
+ changed = false;
109
+ }
110
+ }
111
+ if (!cached?.evaluated && cached?.ignored) {
112
+ return ["cached", cached];
113
+ }
114
+ const exports = cached?.exports;
115
+ const evaluatedOnly = changed ? [] : cached?.evaluatedOnly ?? [];
116
+ const mergedOnly = options.mergeCachedOnly !== false && cached?.only ? mergeOnly(cached.only, only) : [...only];
117
+ const reusableEvaluatedState = !changed && cached?.evaluated && cached.loadedAndParsed !== undefined;
118
+ const canReuseEvaluatedTransformResult = reusableEvaluatedState && isSuperSet(cached.evaluatedOnly, mergedOnly) && cached.hasTransformResult && cached.loadedAndParsed !== undefined;
119
+ if (cached?.evaluated) {
120
+ cached.log("is already evaluated with", cached.evaluatedOnly);
121
+ }
122
+ if (canReuseEvaluatedTransformResult) {
123
+ const isLoop = parent && hasLoop(name, parent);
124
+ const reusedEntrypoint = new Entrypoint(services, parent ? [parent] : [], loadedCode, name, mergedOnly, exports, evaluatedOnly, cached.loadedAndParsed, undefined, cached.dependencies, cached.invalidationDependencies, cached.invalidateOnDependencyChange, cached.generation + 1, true);
125
+ reusedEntrypoint.reuseTransformResult(cached.transformResultCode, cached.hasWywMetadata);
126
+ if ("preevalResult" in cached && cached.preevalResult !== null && cached.preevalResult !== undefined) {
127
+ reusedEntrypoint.setPreevalResult(cached.preevalResult);
128
+ }
129
+ return [isLoop ? "loop" : "cached", reusedEntrypoint];
130
+ }
131
+ if (!changed && cached && !cached.evaluated) {
132
+ const isLoop = parent && hasLoop(name, parent);
133
+ if (isLoop) {
134
+ parent.log("[createEntrypoint] %s is a loop", name);
135
+ }
136
+ if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {
137
+ cached.parents.push(parent);
138
+ }
139
+ if (isSuperSet(cached.only, mergedOnly)) {
140
+ cached.log("is cached", name);
141
+ return [isLoop ? "loop" : "cached", cached];
142
+ }
143
+ cached.log("is cached, but with different `only` %o (the cached one %o)", only, cached?.only);
144
+ if (cached.#isProcessing) {
145
+ if (parent === null) {
146
+ cached.log("is being processed during root request, supersede immediately (%o -> %o)", cached.only, mergedOnly);
147
+ return [isLoop ? "loop" : "created", cached.supersede(mergedOnly)];
148
+ }
149
+ cached.deferOnlySupersede(mergedOnly);
150
+ cached.log("is being processed, defer supersede (%o -> %o)", cached.only, mergedOnly);
151
+ return [isLoop ? "loop" : "cached", cached];
152
+ }
153
+ return [isLoop ? "loop" : "created", cached.supersede(mergedOnly)];
154
+ }
155
+ const newEntrypoint = new Entrypoint(services, parent ? [parent] : [], loadedCode, name, mergedOnly, exports, evaluatedOnly, reusableEvaluatedState ? cached.loadedAndParsed : undefined, cached && "resolveTasks" in cached ? cached.resolveTasks : undefined, cached && "dependencies" in cached ? cached.dependencies : undefined, cached && "invalidationDependencies" in cached ? cached.invalidationDependencies : undefined, cached && "invalidateOnDependencyChange" in cached ? cached.invalidateOnDependencyChange : undefined, cached ? cached.generation + 1 : 1);
156
+ if (reusableEvaluatedState && "preevalResult" in cached && cached.preevalResult !== null && cached.preevalResult !== undefined) {
157
+ newEntrypoint.setPreevalResult(cached.preevalResult);
158
+ }
159
+ if (cached && !cached.evaluated) {
160
+ cached.log("is cached, but with different code");
161
+ cached.supersede(newEntrypoint);
162
+ }
163
+ return ["created", newEntrypoint];
164
+ }
165
+ addDependency(dependency) {
166
+ this.resolveTasks.delete(dependency.source);
167
+ this.dependencies.set(dependency.source, dependency);
168
+ }
169
+ addInvalidationDependency(dependency) {
170
+ this.resolveTasks.delete(dependency.source);
171
+ this.invalidationDependencies.set(dependency.source, dependency);
172
+ }
173
+ addResolveTask(name, dependency) {
174
+ // Bounded retry of transient null resolutions. The first time a
175
+ // resolveTask settles to null, evict it from the cache so the next
176
+ // consumer re-attempts the resolver. After RESOLVE_TASK_MAX_NULL_ATTEMPTS
177
+ // failures the entry stays cached so we don't thrash. Successful (non-null)
178
+ // resolutions remain cached normally; this branch only ever fires for null.
179
+ const tracked = dependency.then((resolved) => {
180
+ if (resolved.resolved !== null) {
181
+ return resolved;
182
+ }
183
+ const attempts = (this.#resolveTaskNullAttempts.get(name) ?? 0) + 1;
184
+ this.#resolveTaskNullAttempts.set(name, attempts);
185
+ if (attempts < Entrypoint.RESOLVE_TASK_MAX_NULL_ATTEMPTS && this.resolveTasks.get(name) === tracked) {
186
+ this.resolveTasks.delete(name);
187
+ }
188
+ return resolved;
189
+ });
190
+ this.resolveTasks.set(name, tracked);
191
+ }
192
+ applyDeferredSupersede() {
193
+ if (this.#supersededWith || this.#pendingOnly === null) {
194
+ return null;
195
+ }
196
+ const mergedOnly = mergeOnly(this.only, this.#pendingOnly);
197
+ this.#pendingOnly = null;
198
+ if (isSuperSet(this.only, mergedOnly)) {
199
+ return null;
200
+ }
201
+ this.log("apply deferred supersede (%o -> %o)", this.only, mergedOnly);
202
+ const nextEntrypoint = this.supersede(mergedOnly);
203
+ this.services.cache.add("entrypoints", this.name, nextEntrypoint);
204
+ return nextEntrypoint;
205
+ }
206
+ assertNotSuperseded() {
207
+ if (this.supersededWith) {
208
+ this.log("superseded");
209
+ throw new AbortError("superseded");
210
+ }
211
+ }
212
+ assertTransformed() {
213
+ if (this.transformedCode === null) {
214
+ this.log("not transformed");
215
+ throw new UnprocessedEntrypointError(this.supersededWith ?? this);
216
+ }
217
+ }
218
+ beginProcessing() {
219
+ this.#isProcessing = true;
220
+ if (!this.#processingPromise) {
221
+ this.#processingPromise = new Promise((resolve) => {
222
+ this.#resolveProcessing = resolve;
223
+ });
224
+ }
225
+ }
226
+ createAction(actionType, data, abortSignal = null, actionContext = DEFAULT_ACTION_CONTEXT) {
227
+ if (!this.actionsCache.has(actionType)) {
228
+ this.actionsCache.set(actionType, new Map());
229
+ }
230
+ const contexts = this.actionsCache.get(actionType);
231
+ if (!contexts.has(actionContext)) {
232
+ contexts.set(actionContext, new Map());
233
+ }
234
+ const cache = contexts.get(actionContext);
235
+ const cached = cache.get(data);
236
+ if (cached && !cached.abortSignal?.aborted) {
237
+ return cached;
238
+ }
239
+ const newAction = new BaseAction(actionType, this.services, this, data, abortSignal, actionContext);
240
+ cache.set(data, newAction);
241
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
242
+ type: "actionCreated",
243
+ actionType,
244
+ actionIdx: newAction.idx
245
+ });
246
+ return newAction;
247
+ }
248
+ createChild(name, only, loadedCode) {
249
+ return Entrypoint.create(this.services, this, name, only, loadedCode);
250
+ }
251
+ createEvaluated() {
252
+ const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);
253
+ this.log("create EvaluatedEntrypoint for %o", evaluatedOnly);
254
+ const evaluated = new EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents, this.dependencies, this.invalidationDependencies, this.invalidateOnDependencyChange);
255
+ evaluated.initialCode = this.initialCode;
256
+ evaluated.hasTransformResult = this.#hasTransformResult;
257
+ evaluated.hasWywMetadata = this.#hasWywMetadata;
258
+ evaluated.loadedAndParsed = this.loadedAndParsed;
259
+ evaluated.preevalResult = this.#preevalResult;
260
+ evaluated.transformResultCode = this.#transformResultCode;
261
+ return evaluated;
262
+ }
263
+ endProcessing() {
264
+ this.#isProcessing = false;
265
+ this.#resolveProcessing?.();
266
+ this.#resolveProcessing = null;
267
+ this.#processingPromise = null;
268
+ }
269
+ getDependency(name) {
270
+ return this.dependencies.get(name);
271
+ }
272
+ getPreevalResult() {
273
+ return this.#preevalResult;
274
+ }
275
+ getInvalidationDependency(name) {
276
+ return this.invalidationDependencies.get(name);
277
+ }
278
+ markInvalidateOnDependencyChange(filename) {
279
+ this.invalidateOnDependencyChange.add(filename);
280
+ }
281
+ getResolveTask(name) {
282
+ return this.resolveTasks.get(name);
283
+ }
284
+ hasWywMetadata() {
285
+ return this.#hasWywMetadata;
286
+ }
287
+ waitForProcessing() {
288
+ return this.#processingPromise ?? Promise.resolve();
289
+ }
290
+ reuseTransformResult(code, hasWywMetadata) {
291
+ this.#hasTransformResult = true;
292
+ this.#hasWywMetadata = hasWywMetadata;
293
+ this.#transformResultCode = code;
294
+ }
295
+ onSupersede(callback) {
296
+ if (this.#supersededWith) {
297
+ callback(this.#supersededWith);
298
+ return () => {};
299
+ }
300
+ this.onSupersedeHandlers.push(callback);
301
+ return () => {
302
+ const index = this.onSupersedeHandlers.indexOf(callback);
303
+ if (index >= 0) {
304
+ this.onSupersedeHandlers.splice(index, 1);
305
+ }
306
+ };
307
+ }
308
+ setTransformResult(res) {
309
+ this.#hasTransformResult = true;
310
+ this.#hasWywMetadata = Boolean(res?.metadata);
311
+ this.#transformResultCode = res?.code ?? null;
312
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
313
+ isNull: res === null,
314
+ type: "setTransformResult"
315
+ });
316
+ }
317
+ setPreevalResult(result) {
318
+ this.#preevalResult = result;
319
+ }
320
+ deferOnlySupersede(only) {
321
+ this.#pendingOnly = this.#pendingOnly ? mergeOnly(this.#pendingOnly, only) : [...only];
322
+ }
323
+ supersede(newOnlyOrEntrypoint) {
324
+ this.#pendingOnly = null;
325
+ const widensOnly = !(newOnlyOrEntrypoint instanceof Entrypoint);
326
+ const newEntrypoint = widensOnly ? new Entrypoint(this.services, this.parents, this.initialCode, this.name, newOnlyOrEntrypoint, this.exports, this.evaluatedOnly, this.loadedAndParsed, this.resolveTasks, this.dependencies, this.invalidationDependencies, this.invalidateOnDependencyChange, this.generation + 1) : newOnlyOrEntrypoint;
327
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
328
+ type: "superseded",
329
+ with: newEntrypoint.seqId
330
+ });
331
+ this.log("superseded by %s (%o -> %o)", newEntrypoint.name, this.only, newEntrypoint.only);
332
+ if (widensOnly) {
333
+ newEntrypoint.#preevalResult = this.#preevalResult;
334
+ }
335
+ this.#supersededWith = newEntrypoint;
336
+ this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));
337
+ return newEntrypoint;
338
+ }
273
339
  }
274
- //# sourceMappingURL=Entrypoint.js.map
340
+ //# sourceMappingURL=Entrypoint.js.map