@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
package/esm/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","names":["createHash","fs","logger","getFileIdx","stripQueryAndHash","hashContent","content","update","digest","isMissingFileError","error","code","cacheLogger","extend","cacheNames","loggers","reduce","acc","key","TransformCacheCollection","barrelManifestDependencies","Map","contentHashes","fileMtimes","exportDependencies","constructor","caches","barrelManifests","entrypoints","exports","add","cacheName","value","cache","undefined","has","get","delete","clearCacheDependencies","set","maybeOriginalCode","originalCode","isLoaded","initialCode","source","resolvedCode","setContentHash","fileContent","readFileSync","clear","forEach","name","invalidate","res","invalidateForFile","filename","invalidateIfChanged","previousVisitedFiles","changedFiles","Set","visitedFiles","fileEntrypoint","anyDepChanged","hasCachedDependencies","invalidateOnDependencyChange","dependenciesToCheck","dependency","dependencies","invalidationDependencies","dependencyFilename","getCachedDependencies","values","some","resolved","dependencyContent","dependencyChanged","existing","previousHash","newHash","otherSource","otherHash","setCacheDependencies","getDependencyCache","nextDependencies","filter","length","size","checkFreshness","strippedFilename","currentMtime","statSync","mtimeMs","cachedMtime","hash","current"],"sources":["../src/cache.ts"],"sourcesContent":["import { createHash } from 'crypto';\nimport fs from 'node:fs';\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { BarrelManifestCacheEntry } from './transform/barrelManifest';\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\nimport { stripQueryAndHash } from './utils/parseRequest';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n\n const { code } = error as NodeJS.ErrnoException;\n return code === 'ENOENT' || code === 'ENOTDIR';\n}\n\ninterface IBaseCachedEntrypoint {\n dependencies: Map<string, { resolved: string | null }>;\n initialCode?: string;\n invalidateOnDependencyChange?: Set<string>;\n invalidationDependencies?: Map<string, { resolved: string | null }>;\n}\n\ninterface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {\n barrelManifests: Map<string, BarrelManifestCacheEntry>;\n entrypoints: Map<string, TEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['barrelManifests', 'entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection<\n TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint,\n> {\n public readonly barrelManifests: Map<string, BarrelManifestCacheEntry>;\n\n public readonly entrypoints: Map<string, TEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private readonly barrelManifestDependencies = new Map<string, Set<string>>();\n\n private contentHashes = new Map<string, { fs?: string; loaded?: string }>();\n\n private fileMtimes = new Map<string, number>();\n\n private readonly exportDependencies = new Map<string, Set<string>>();\n\n constructor(caches: Partial<ICaches<TEntrypoint>> = {}) {\n this.barrelManifests = caches.barrelManifests || new Map();\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (value === undefined) {\n return cache.has(key) ? 'removed' : 'noop';\n }\n\n if (!cache.has(key)) {\n return 'added';\n }\n\n return cache.get(key) === value ? 'unchanged' : 'updated';\n });\n\n if (value === undefined) {\n cache.delete(key);\n this.contentHashes.delete(key);\n this.clearCacheDependencies(cacheName, key);\n return;\n }\n\n this.clearCacheDependencies(cacheName, key);\n cache.set(key, value);\n\n if ('initialCode' in value) {\n const maybeOriginalCode = (value as unknown as { originalCode?: unknown })\n .originalCode;\n const isLoaded = typeof value.initialCode === 'string';\n const source = isLoaded ? 'loaded' : 'fs';\n\n let resolvedCode: string | undefined;\n if (isLoaded) {\n resolvedCode = value.initialCode;\n } else if (typeof maybeOriginalCode === 'string') {\n resolvedCode = maybeOriginalCode;\n }\n\n if (resolvedCode !== undefined) {\n this.setContentHash(key, source, hashContent(resolvedCode));\n return;\n }\n\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, source, hashContent(fileContent));\n } catch {\n this.setContentHash(key, source, hashContent(''));\n }\n\n return;\n }\n\n if (cacheName === 'barrelManifests') {\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, 'fs', hashContent(fileContent));\n } catch {\n this.setContentHash(key, 'fs', hashContent(''));\n }\n }\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n this.clearCacheDependencies(cacheName);\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n\n const res = cache.get(key);\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n\n const res = cache.has(key);\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n if (!cache.has(key)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(key);\n this.clearCacheDependencies(cacheName, key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n }\n\n public invalidateIfChanged(\n filename: string,\n content: string,\n previousVisitedFiles?: Set<string>,\n source: 'fs' | 'loaded' = 'loaded',\n changedFiles = new Set<string>()\n ) {\n if (changedFiles.has(filename)) {\n return true;\n }\n\n const visitedFiles = new Set(previousVisitedFiles);\n const fileEntrypoint = this.get('entrypoints', filename);\n let anyDepChanged = false;\n\n // We need to check all dependencies of the file\n // because they might have changed as well.\n if (\n !visitedFiles.has(filename) &&\n (fileEntrypoint || this.hasCachedDependencies(filename))\n ) {\n visitedFiles.add(filename);\n const invalidateOnDependencyChange =\n fileEntrypoint?.invalidateOnDependencyChange;\n\n const dependenciesToCheck = new Map<\n string,\n { resolved: string | null }\n >();\n\n for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {\n dependenciesToCheck.set(key, dependency);\n }\n\n for (const [\n key,\n dependency,\n ] of fileEntrypoint?.invalidationDependencies ?? []) {\n if (!dependenciesToCheck.has(key)) {\n dependenciesToCheck.set(key, dependency);\n }\n }\n\n for (const dependencyFilename of this.getCachedDependencies(filename)) {\n if (\n ![...dependenciesToCheck.values()].some(\n (dependency) => dependency.resolved === dependencyFilename\n )\n ) {\n dependenciesToCheck.set(dependencyFilename, {\n resolved: dependencyFilename,\n });\n }\n }\n\n for (const [, dependency] of dependenciesToCheck) {\n const dependencyFilename = dependency.resolved;\n\n if (dependencyFilename) {\n let dependencyContent: string;\n try {\n dependencyContent = fs.readFileSync(\n stripQueryAndHash(dependencyFilename),\n 'utf8'\n );\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(dependencyFilename);\n anyDepChanged = true;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const dependencyChanged = this.invalidateIfChanged(\n dependencyFilename,\n dependencyContent,\n visitedFiles,\n 'fs',\n changedFiles\n );\n\n if (\n dependencyChanged &&\n invalidateOnDependencyChange?.has(dependencyFilename)\n ) {\n cacheLogger(\n 'dependency affecting output has changed, invalidate all for %s',\n filename\n );\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n if (dependencyChanged) {\n anyDepChanged = true;\n }\n }\n }\n }\n\n const existing = this.contentHashes.get(filename);\n const previousHash = existing?.[source];\n const newHash = hashContent(content);\n\n if (previousHash === undefined) {\n const otherSource = source === 'fs' ? 'loaded' : 'fs';\n const otherHash = existing?.[otherSource];\n\n if ((otherHash !== undefined && otherHash !== newHash) || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n this.setContentHash(filename, source, newHash);\n if (anyDepChanged) {\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n return true;\n }\n return false;\n }\n\n if (previousHash !== newHash || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n return false;\n }\n\n public setCacheDependencies(\n cacheName: 'barrelManifests' | 'exports',\n key: string,\n dependencies: Iterable<string>\n ): void {\n const cache = this.getDependencyCache(cacheName);\n const nextDependencies = new Set(\n [...dependencies].filter((dependency) => dependency.length > 0)\n );\n\n if (nextDependencies.size === 0) {\n cache.delete(key);\n return;\n }\n\n cache.set(key, nextDependencies);\n }\n\n private clearCacheDependencies(cacheName: CacheNames | 'all', key?: string) {\n if (cacheName === 'all') {\n this.barrelManifestDependencies.clear();\n this.exportDependencies.clear();\n return;\n }\n\n if (cacheName === 'barrelManifests') {\n if (key === undefined) {\n this.barrelManifestDependencies.clear();\n } else {\n this.barrelManifestDependencies.delete(key);\n }\n return;\n }\n\n if (cacheName === 'exports') {\n if (key === undefined) {\n this.exportDependencies.clear();\n } else {\n this.exportDependencies.delete(key);\n }\n }\n }\n\n private getCachedDependencies(filename: string): Set<string> {\n return new Set([\n ...(this.barrelManifestDependencies.get(filename) ?? []),\n ...(this.exportDependencies.get(filename) ?? []),\n ]);\n }\n\n private getDependencyCache(cacheName: 'barrelManifests' | 'exports') {\n return cacheName === 'barrelManifests'\n ? this.barrelManifestDependencies\n : this.exportDependencies;\n }\n\n private hasCachedDependencies(filename: string): boolean {\n return this.getCachedDependencies(filename).size > 0;\n }\n\n /**\n * Fast check if a file changed on disk since last seen.\n * Uses mtime as a fast path — only reads the file if mtime differs.\n * Returns true if the file changed (cache was invalidated).\n */\n public checkFreshness(filename: string, strippedFilename: string): boolean {\n try {\n const currentMtime = fs.statSync(strippedFilename).mtimeMs;\n const cachedMtime = this.fileMtimes.get(filename);\n\n if (cachedMtime !== undefined && currentMtime === cachedMtime) {\n return false;\n }\n\n const content = fs.readFileSync(strippedFilename, 'utf-8');\n this.fileMtimes.set(filename, currentMtime);\n\n if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {\n return true;\n }\n\n return false;\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(filename);\n return true;\n }\n }\n\n private setContentHash(\n filename: string,\n source: 'fs' | 'loaded',\n hash: string\n ) {\n const current = this.contentHashes.get(filename);\n if (current) {\n current[source] = hash;\n } else {\n this.contentHashes.set(filename, { [source]: hash });\n }\n\n if (source === 'fs') {\n try {\n this.fileMtimes.set(\n filename,\n fs.statSync(stripQueryAndHash(filename)).mtimeMs\n );\n } catch {\n // ignore\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../src/cache.ts"],"version":3,"sourcesContent":["import { createHash } from 'crypto';\nimport fs from 'node:fs';\nimport { logger } from '@wyw-in-js/shared';\n\nimport type { BarrelManifestCacheEntry } from './transform/barrelManifest.types';\nimport type { Entrypoint } from './transform/Entrypoint';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { getFileIdx } from './utils/getFileIdx';\nimport { stripQueryAndHash } from './utils/parseRequest';\n\nfunction hashContent(content: string) {\n return createHash('sha256').update(content).digest('hex');\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n\n const { code } = error as NodeJS.ErrnoException;\n return code === 'ENOENT' || code === 'ENOTDIR';\n}\n\ninterface IBaseCachedEntrypoint {\n dependencies: Map<string, { resolved: string | null }>;\n initialCode?: string;\n invalidateOnDependencyChange?: Set<string>;\n invalidationDependencies?: Map<string, { resolved: string | null }>;\n}\n\ninterface ICaches<TEntrypoint extends IBaseCachedEntrypoint> {\n barrelManifests: Map<string, BarrelManifestCacheEntry>;\n entrypoints: Map<string, TEntrypoint>;\n exports: Map<string, string[]>;\n}\n\ntype MapValue<T> = T extends Map<string, infer V> ? V : never;\n\nconst cacheLogger = logger.extend('cache');\n\nconst cacheNames = ['barrelManifests', 'entrypoints', 'exports'] as const;\ntype CacheNames = (typeof cacheNames)[number];\n\nconst loggers = cacheNames.reduce(\n (acc, key) => ({\n ...acc,\n [key]: cacheLogger.extend(key),\n }),\n {} as Record<CacheNames, typeof logger>\n);\n\nexport class TransformCacheCollection<\n TEntrypoint extends IBaseCachedEntrypoint = Entrypoint | IEvaluatedEntrypoint,\n> {\n public readonly barrelManifests: Map<string, BarrelManifestCacheEntry>;\n\n public readonly entrypoints: Map<string, TEntrypoint>;\n\n public readonly exports: Map<string, string[]>;\n\n private readonly barrelManifestDependencies = new Map<string, Set<string>>();\n\n private contentHashes = new Map<string, { fs?: string; loaded?: string }>();\n\n private fileMtimes = new Map<string, number>();\n\n private readonly exportDependencies = new Map<string, Set<string>>();\n\n private keySalt: string | null = null;\n\n private invalidatedFiles = new Map<string, number>();\n\n private consumedInvalidationVersions = new Map<string, number>();\n\n constructor(caches: Partial<ICaches<TEntrypoint>> = {}) {\n this.barrelManifests = caches.barrelManifests || new Map();\n this.entrypoints = caches.entrypoints || new Map();\n this.exports = caches.exports || new Map();\n }\n\n public setKeySalt(keySalt: string | null) {\n if (this.keySalt === keySalt) return;\n\n const prevKeySalt = this.keySalt;\n this.keySalt = keySalt;\n\n if (prevKeySalt === null && keySalt) {\n const migrate = <TValue>(cache: Map<string, TValue>) => {\n const entries = Array.from(cache.entries());\n cache.clear();\n entries.forEach(([key, value]) => {\n cache.set(this.getKey(key), value);\n });\n };\n\n migrate(this.barrelManifests);\n migrate(this.entrypoints);\n migrate(this.exports);\n migrate(this.barrelManifestDependencies);\n migrate(this.exportDependencies);\n return;\n }\n\n this.barrelManifests.clear();\n this.entrypoints.clear();\n this.exports.clear();\n this.clearCacheDependencies('all');\n }\n\n private getKey(key: string) {\n if (!this.keySalt) return key;\n return `${key}::${this.keySalt}`;\n }\n\n public getKeySalt() {\n return this.keySalt;\n }\n\n public add<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string, value: TValue): void {\n const cache = this[cacheName] as Map<string, TValue>;\n const cacheKey = this.getKey(key);\n loggers[cacheName]('%s:add %s %f', getFileIdx(key), key, () => {\n if (value === undefined) {\n return cache.has(cacheKey) ? 'removed' : 'noop';\n }\n\n if (!cache.has(cacheKey)) {\n return 'added';\n }\n\n return cache.get(cacheKey) === value ? 'unchanged' : 'updated';\n });\n\n if (value === undefined) {\n cache.delete(cacheKey);\n this.contentHashes.delete(key);\n this.clearCacheDependencies(cacheName, key);\n return;\n }\n\n this.clearCacheDependencies(cacheName, key);\n cache.set(cacheKey, value);\n\n if ('initialCode' in value) {\n const maybeOriginalCode = (value as unknown as { originalCode?: unknown })\n .originalCode;\n const isLoaded = typeof value.initialCode === 'string';\n const source = isLoaded ? 'loaded' : 'fs';\n\n let resolvedCode: string | undefined;\n if (isLoaded) {\n resolvedCode = value.initialCode;\n } else if (typeof maybeOriginalCode === 'string') {\n resolvedCode = maybeOriginalCode;\n }\n\n if (resolvedCode !== undefined) {\n this.setContentHash(key, source, hashContent(resolvedCode));\n return;\n }\n\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, source, hashContent(fileContent));\n } catch {\n this.setContentHash(key, source, hashContent(''));\n }\n\n return;\n }\n\n if (cacheName === 'barrelManifests' || cacheName === 'exports') {\n try {\n const fileContent = fs.readFileSync(stripQueryAndHash(key), 'utf8');\n this.setContentHash(key, 'fs', hashContent(fileContent));\n } catch {\n this.setContentHash(key, 'fs', hashContent(''));\n }\n }\n }\n\n public clear(cacheName: CacheNames | 'all'): void {\n if (cacheName === 'all') {\n cacheNames.forEach((name) => {\n this.clear(name);\n });\n\n return;\n }\n\n loggers[cacheName]('clear');\n const cache = this[cacheName] as Map<string, unknown>;\n\n cache.clear();\n this.clearCacheDependencies(cacheName);\n }\n\n public delete(cacheName: CacheNames, key: string): void {\n this.invalidate(cacheName, key);\n }\n\n public get<\n TCache extends CacheNames,\n TValue extends MapValue<ICaches<TEntrypoint>[TCache]>,\n >(cacheName: TCache, key: string): TValue | undefined {\n const cache = this[cacheName] as Map<string, TValue>;\n const res = cache.get(this.getKey(key));\n\n loggers[cacheName]('get', key, res === undefined ? 'miss' : 'hit');\n return res;\n }\n\n public has(cacheName: CacheNames, key: string): boolean {\n const cache = this[cacheName] as Map<string, unknown>;\n const res = cache.has(this.getKey(key));\n\n loggers[cacheName]('has', key, res);\n return res;\n }\n\n public invalidate(cacheName: CacheNames, key: string): void {\n const cache = this[cacheName] as Map<string, unknown>;\n const cacheKey = this.getKey(key);\n\n if (!cache.has(cacheKey)) {\n return;\n }\n\n loggers[cacheName]('invalidate', key);\n\n cache.delete(cacheKey);\n this.clearCacheDependencies(cacheName, key);\n }\n\n public invalidateForFile(filename: string) {\n cacheNames.forEach((cacheName) => {\n this.invalidate(cacheName, filename);\n });\n\n const key = stripQueryAndHash(filename);\n const version = this.invalidatedFiles.get(key) ?? 0;\n this.invalidatedFiles.set(key, version + 1);\n }\n\n public consumeInvalidation(filename: string) {\n const key = stripQueryAndHash(filename);\n const invalidationVersion = this.invalidatedFiles.get(key);\n\n if (invalidationVersion === undefined) {\n return false;\n }\n\n const consumedVersion =\n this.consumedInvalidationVersions.get(filename) ?? 0;\n if (consumedVersion >= invalidationVersion) {\n return false;\n }\n\n this.consumedInvalidationVersions.set(filename, invalidationVersion);\n return true;\n }\n\n public invalidateIfChanged(\n filename: string,\n content: string,\n previousVisitedFiles?: Set<string>,\n source: 'fs' | 'loaded' = 'loaded',\n changedFiles = new Set<string>(),\n dependencyChangeMemo = new Map<string, boolean>(),\n forceContentCheck = false\n ) {\n if (changedFiles.has(filename)) {\n return true;\n }\n\n const visitedFiles = new Set(previousVisitedFiles);\n const fileEntrypoint = this.get('entrypoints', filename);\n let anyDepChanged = false;\n\n if (\n !visitedFiles.has(filename) &&\n (fileEntrypoint || this.hasCachedDependencies(filename))\n ) {\n visitedFiles.add(filename);\n const invalidateOnDependencyChange =\n fileEntrypoint?.invalidateOnDependencyChange;\n const dependenciesToCheck = this.getDependenciesToCheck(\n filename,\n fileEntrypoint\n );\n\n for (const [, dependency] of dependenciesToCheck) {\n const dependencyFilename = dependency.resolved;\n\n if (dependencyFilename) {\n const dependencyChanged = this.didDependencyChange(\n dependencyFilename,\n visitedFiles,\n changedFiles,\n dependencyChangeMemo,\n forceContentCheck ||\n invalidateOnDependencyChange?.has(dependencyFilename) ||\n false\n );\n\n if (\n dependencyChanged &&\n invalidateOnDependencyChange?.has(dependencyFilename)\n ) {\n cacheLogger(\n 'dependency affecting output has changed, invalidate all for %s',\n filename\n );\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n if (dependencyChanged) {\n anyDepChanged = true;\n }\n }\n }\n }\n\n const existing = this.contentHashes.get(filename);\n const previousHash = existing?.[source];\n const newHash = hashContent(content);\n\n if (previousHash === undefined) {\n const otherSource = source === 'fs' ? 'loaded' : 'fs';\n const otherHash = existing?.[otherSource];\n\n if ((otherHash !== undefined && otherHash !== newHash) || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n this.setContentHash(filename, source, newHash);\n\n if (anyDepChanged) {\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n return true;\n }\n\n return false;\n }\n\n if (previousHash !== newHash || anyDepChanged) {\n cacheLogger('content has changed, invalidate all for %s', filename);\n this.setContentHash(filename, source, newHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n\n return true;\n }\n\n return false;\n }\n\n private getDependenciesToCheck(\n filename: string,\n fileEntrypoint?: TEntrypoint\n ): Map<string, { resolved: string | null }> {\n const dependenciesToCheck = new Map<string, { resolved: string | null }>();\n\n for (const [key, dependency] of fileEntrypoint?.dependencies ?? []) {\n dependenciesToCheck.set(key, dependency);\n }\n\n for (const [key, dependency] of fileEntrypoint?.invalidationDependencies ??\n []) {\n if (!dependenciesToCheck.has(key)) {\n dependenciesToCheck.set(key, dependency);\n }\n }\n\n for (const dependencyFilename of this.getCachedDependencies(filename)) {\n if (\n ![...dependenciesToCheck.values()].some(\n (dependency) => dependency.resolved === dependencyFilename\n )\n ) {\n dependenciesToCheck.set(dependencyFilename, {\n resolved: dependencyFilename,\n });\n }\n }\n\n return dependenciesToCheck;\n }\n\n private didDependencyChange(\n dependencyFilename: string,\n visitedFiles: Set<string>,\n changedFiles: Set<string>,\n dependencyChangeMemo: Map<string, boolean>,\n forceContentCheck = false\n ): boolean {\n if (changedFiles.has(dependencyFilename)) {\n return true;\n }\n\n const memoized = dependencyChangeMemo.get(dependencyFilename);\n if (memoized !== undefined) {\n return memoized;\n }\n\n if (visitedFiles.has(dependencyFilename)) {\n return false;\n }\n\n const strippedDependencyFilename = stripQueryAndHash(dependencyFilename);\n const cachedMtime = this.fileMtimes.get(dependencyFilename);\n const cachedEntrypoint = this.get('entrypoints', dependencyFilename);\n\n if (cachedMtime !== undefined) {\n let currentMtime: number;\n\n try {\n currentMtime = fs.statSync(strippedDependencyFilename).mtimeMs;\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(dependencyFilename);\n changedFiles.add(dependencyFilename);\n dependencyChangeMemo.set(dependencyFilename, true);\n return true;\n }\n\n if (currentMtime === cachedMtime) {\n const nestedDependencies = this.getDependenciesToCheck(\n dependencyFilename,\n cachedEntrypoint\n );\n\n if (\n forceContentCheck &&\n this.didFileContentHashChange(\n dependencyFilename,\n strippedDependencyFilename,\n changedFiles\n )\n ) {\n dependencyChangeMemo.set(dependencyFilename, true);\n return true;\n }\n\n // A cached file without a cached entrypoint was invalidated earlier.\n if (!cachedEntrypoint && nestedDependencies.size === 0) {\n dependencyChangeMemo.set(dependencyFilename, true);\n return true;\n }\n\n if (nestedDependencies.size === 0) {\n dependencyChangeMemo.set(dependencyFilename, false);\n return false;\n }\n\n const nextVisitedFiles = new Set(visitedFiles);\n nextVisitedFiles.add(dependencyFilename);\n\n for (const [, nestedDependency] of nestedDependencies) {\n if (\n nestedDependency.resolved &&\n this.didDependencyChange(\n nestedDependency.resolved,\n nextVisitedFiles,\n changedFiles,\n dependencyChangeMemo,\n forceContentCheck\n )\n ) {\n this.invalidateForFile(dependencyFilename);\n changedFiles.add(dependencyFilename);\n dependencyChangeMemo.set(dependencyFilename, true);\n return true;\n }\n }\n\n dependencyChangeMemo.set(dependencyFilename, false);\n return false;\n }\n }\n\n let dependencyContent: string;\n\n try {\n dependencyContent = fs.readFileSync(strippedDependencyFilename, 'utf8');\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(dependencyFilename);\n changedFiles.add(dependencyFilename);\n dependencyChangeMemo.set(dependencyFilename, true);\n return true;\n }\n\n const invalidated = this.invalidateIfChanged(\n dependencyFilename,\n dependencyContent,\n visitedFiles,\n 'fs',\n changedFiles,\n dependencyChangeMemo,\n forceContentCheck\n );\n\n dependencyChangeMemo.set(dependencyFilename, invalidated);\n return invalidated;\n }\n\n private didFileContentHashChange(\n filename: string,\n strippedFilename: string,\n changedFiles: Set<string>\n ): boolean {\n const previousHash = this.contentHashes.get(filename)?.fs;\n if (previousHash === undefined) {\n return false;\n }\n\n let content: string;\n try {\n content = fs.readFileSync(strippedFilename, 'utf8');\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n return true;\n }\n\n const nextHash = hashContent(content);\n if (previousHash === nextHash) {\n return false;\n }\n\n this.setContentHash(filename, 'fs', nextHash);\n this.invalidateForFile(filename);\n changedFiles.add(filename);\n return true;\n }\n\n public setCacheDependencies(\n cacheName: 'barrelManifests' | 'exports',\n key: string,\n dependencies: Iterable<string>\n ): void {\n const cache = this.getDependencyCache(cacheName);\n const nextDependencies = new Set(\n [...dependencies].filter((dependency) => dependency.length > 0)\n );\n const cacheKey = this.getKey(key);\n\n if (nextDependencies.size === 0) {\n cache.delete(cacheKey);\n return;\n }\n\n cache.set(cacheKey, nextDependencies);\n }\n\n /**\n * Fast check if a file changed on disk since last seen.\n * Uses mtime as a fast path and only reads the file if mtime differs.\n */\n public checkFreshness(filename: string, strippedFilename: string): boolean {\n try {\n const currentMtime = fs.statSync(strippedFilename).mtimeMs;\n const cachedMtime = this.fileMtimes.get(filename);\n\n if (cachedMtime !== undefined && currentMtime === cachedMtime) {\n return false;\n }\n\n const content = fs.readFileSync(strippedFilename, 'utf8');\n this.fileMtimes.set(filename, currentMtime);\n\n if (this.invalidateIfChanged(filename, content, undefined, 'fs')) {\n return true;\n }\n\n return false;\n } catch (error) {\n if (!isMissingFileError(error)) {\n throw error;\n }\n\n this.invalidateForFile(filename);\n return true;\n }\n }\n\n private clearCacheDependencies(cacheName: CacheNames | 'all', key?: string) {\n if (cacheName === 'all') {\n this.barrelManifestDependencies.clear();\n this.exportDependencies.clear();\n return;\n }\n\n if (cacheName === 'barrelManifests') {\n if (key === undefined) {\n this.barrelManifestDependencies.clear();\n } else {\n this.barrelManifestDependencies.delete(this.getKey(key));\n }\n return;\n }\n\n if (cacheName === 'exports') {\n if (key === undefined) {\n this.exportDependencies.clear();\n } else {\n this.exportDependencies.delete(this.getKey(key));\n }\n }\n }\n\n private getCachedDependencies(filename: string): Set<string> {\n const key = this.getKey(filename);\n\n return new Set([\n ...(this.barrelManifestDependencies.get(key) ?? []),\n ...(this.exportDependencies.get(key) ?? []),\n ]);\n }\n\n private getDependencyCache(cacheName: 'barrelManifests' | 'exports') {\n return cacheName === 'barrelManifests'\n ? this.barrelManifestDependencies\n : this.exportDependencies;\n }\n\n private hasCachedDependencies(filename: string): boolean {\n return this.getCachedDependencies(filename).size > 0;\n }\n\n private setContentHash(\n filename: string,\n source: 'fs' | 'loaded',\n hash: string\n ) {\n const current = this.contentHashes.get(filename);\n if (current) {\n current[source] = hash;\n } else {\n this.contentHashes.set(filename, { [source]: hash });\n }\n\n if (source === 'fs') {\n try {\n this.fileMtimes.set(\n filename,\n fs.statSync(stripQueryAndHash(filename)).mtimeMs\n );\n } catch {\n // ignore\n }\n }\n }\n}\n"],"file":"cache.js"}
@@ -1,144 +1,147 @@
1
1
  /* eslint-disable no-console */
2
- import { createWriteStream, existsSync, mkdirSync } from 'fs';
3
- import path from 'path';
4
- import { EventEmitter, isOnActionStartArgs } from '../utils/EventEmitter';
2
+ import { createWriteStream, existsSync, mkdirSync } from "fs";
3
+ import path from "path";
4
+ import { EventEmitter, isOnActionStartArgs } from "../utils/EventEmitter.js";
5
5
  const workingDir = process.cwd();
6
6
  function replacer(_key, value) {
7
- if (typeof value === 'string' && path.isAbsolute(value)) {
8
- return path.relative(workingDir, value);
9
- }
10
- if (value instanceof Map) {
11
- return Array.from(value.entries()).reduce((obj, [k, v]) => {
12
- const key = replacer(k, k);
13
- return {
14
- ...obj,
15
- [key]: replacer(key, v)
16
- };
17
- }, {});
18
- }
19
- return value;
7
+ if (typeof value === "string" && path.isAbsolute(value)) {
8
+ return path.relative(workingDir, value);
9
+ }
10
+ if (value instanceof Map) {
11
+ return Array.from(value.entries()).reduce((obj, [k, v]) => {
12
+ const key = replacer(k, k);
13
+ return {
14
+ ...obj,
15
+ [key]: replacer(key, v)
16
+ };
17
+ }, {});
18
+ }
19
+ return value;
20
20
  }
21
21
  function printTimings(timings, startedAt, sourceRoot) {
22
- if (timings.size === 0) {
23
- return;
24
- }
25
- console.log(`\nTimings:`);
26
- console.log(` Total: ${(performance.now() - startedAt).toFixed()}ms`);
27
- Array.from(timings.entries()).forEach(([label, byLabel]) => {
28
- console.log(`\n By ${label}:`);
29
- const array = Array.from(byLabel.entries());
30
- // array.sort(([, a], [, b]) => b - a);
31
- array.sort(([a], [b]) => a.localeCompare(b)).forEach(([value, time]) => {
32
- const name = value.startsWith(sourceRoot) ? path.relative(sourceRoot, value) : value;
33
- console.log(` ${name}: ${time}ms`);
34
- });
35
- });
22
+ if (timings.size === 0) {
23
+ return;
24
+ }
25
+ console.log(`\nTimings:`);
26
+ console.log(` Total: ${(performance.now() - startedAt).toFixed()}ms`);
27
+ Array.from(timings.entries()).forEach(([label, byLabel]) => {
28
+ console.log(`\n By ${label}:`);
29
+ const array = Array.from(byLabel.entries());
30
+ // array.sort(([, a], [, b]) => b - a);
31
+ array.sort(([a], [b]) => a.localeCompare(b)).forEach(([value, time]) => {
32
+ const name = value.startsWith(sourceRoot) ? path.relative(sourceRoot, value) : value;
33
+ console.log(` ${name}: ${time}ms`);
34
+ });
35
+ });
36
36
  }
37
37
  const writeJSONl = (stream, data) => {
38
- stream.write(`${JSON.stringify(data, replacer)}\n`);
38
+ stream.write(`${JSON.stringify(data, replacer)}\n`);
39
39
  };
40
40
  export const createFileReporter = (options = false) => {
41
- if (!options || !options.dir) {
42
- return {
43
- emitter: EventEmitter.dummy,
44
- onDone: () => {}
45
- };
46
- }
47
- const reportFolder = existsSync(options.dir) ? options.dir : mkdirSync(options.dir, {
48
- recursive: true
49
- });
50
- if (!reportFolder) {
51
- throw new Error(`Could not create directory ${options.dir}`);
52
- }
53
- const actionStream = createWriteStream(path.join(options.dir, 'actions.jsonl'));
54
- const dependenciesStream = createWriteStream(path.join(options.dir, 'dependencies.jsonl'));
55
- const entrypointStream = createWriteStream(path.join(options.dir, 'entrypoints.jsonl'));
56
- const startedAt = performance.now();
57
- const timings = new Map();
58
- const addTiming = (label, key, value) => {
59
- if (!timings.has(label)) {
60
- timings.set(label, new Map());
61
- }
62
- const forLabel = timings.get(label);
63
- forLabel.set(key, Math.round((forLabel.get(key) || 0) + value));
64
- };
65
- const processDependencyEvent = ({
66
- file,
67
- only,
68
- imports,
69
- fileIdx
70
- }) => {
71
- writeJSONl(dependenciesStream, {
72
- file,
73
- only,
74
- imports,
75
- fileIdx
76
- });
77
- };
78
- const processSingleEvent = meta => {
79
- if (meta.type === 'dependency') {
80
- processDependencyEvent(meta);
81
- }
82
- };
83
- const startTimes = new Map();
84
- const onEvent = (meta, type) => {
85
- if (type === 'single') {
86
- processSingleEvent(meta);
87
- return;
88
- }
89
- if (type === 'start') {
90
- Object.entries(meta).forEach(([label, value]) => {
91
- startTimes.set(`${label}\0${value}`, performance.now());
92
- });
93
- } else {
94
- Object.entries(meta).forEach(([label, value]) => {
95
- const startTime = startTimes.get(`${label}\0${value}`);
96
- if (startTime) {
97
- addTiming(label, String(value), performance.now() - startTime);
98
- }
99
- });
100
- }
101
- };
102
- let actionId = 0;
103
- const onAction = (...args) => {
104
- if (isOnActionStartArgs(args)) {
105
- const [, timestamp, type, idx, entrypointRef] = args;
106
- writeJSONl(actionStream, {
107
- actionId,
108
- entrypointRef,
109
- idx,
110
- startedAt: timestamp,
111
- type
112
- });
113
-
114
- // eslint-disable-next-line no-plusplus
115
- return actionId++;
116
- }
117
- const [result, timestamp, id, isAsync, error] = args;
118
- writeJSONl(actionStream, {
119
- actionId: id,
120
- error,
121
- finishedAt: timestamp,
122
- isAsync,
123
- result: `${result}ed`
124
- });
125
- return id;
126
- };
127
- const onEntrypointEvent = (emitterId, timestamp, event) => {
128
- entrypointStream.write(`${JSON.stringify([emitterId, timestamp, event])}\n`);
129
- };
130
- const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);
131
- return {
132
- emitter,
133
- onDone: sourceRoot => {
134
- if (options.print) {
135
- printTimings(timings, startedAt, sourceRoot);
136
- console.log('\nMemory usage:', process.memoryUsage());
137
- }
138
- actionStream.end();
139
- dependenciesStream.end();
140
- timings.clear();
141
- }
142
- };
41
+ if (!options || !options.dir) {
42
+ return {
43
+ emitter: EventEmitter.dummy,
44
+ onDone: () => {}
45
+ };
46
+ }
47
+ const reportFolder = existsSync(options.dir) ? options.dir : mkdirSync(options.dir, { recursive: true });
48
+ if (!reportFolder) {
49
+ throw new Error(`Could not create directory ${options.dir}`);
50
+ }
51
+ const actionStream = createWriteStream(path.join(options.dir, "actions.jsonl"));
52
+ const dependenciesStream = createWriteStream(path.join(options.dir, "dependencies.jsonl"));
53
+ const entrypointStream = createWriteStream(path.join(options.dir, "entrypoints.jsonl"));
54
+ const staticResolveStream = createWriteStream(path.join(options.dir, "static-resolve.jsonl"));
55
+ const startedAt = performance.now();
56
+ const timings = new Map();
57
+ const addTiming = (label, key, value) => {
58
+ if (!timings.has(label)) {
59
+ timings.set(label, new Map());
60
+ }
61
+ const forLabel = timings.get(label);
62
+ forLabel.set(key, Math.round((forLabel.get(key) || 0) + value));
63
+ };
64
+ const processDependencyEvent = ({ file, only, imports, fileIdx }) => {
65
+ writeJSONl(dependenciesStream, {
66
+ file,
67
+ only,
68
+ imports,
69
+ fileIdx
70
+ });
71
+ };
72
+ const processSingleEvent = (meta) => {
73
+ if (meta.type === "dependency") {
74
+ processDependencyEvent(meta);
75
+ return;
76
+ }
77
+ if (meta.type === "staticResolve") {
78
+ writeJSONl(staticResolveStream, meta);
79
+ }
80
+ };
81
+ const startTimes = new Map();
82
+ const onEvent = (meta, type) => {
83
+ if (type === "single") {
84
+ processSingleEvent(meta);
85
+ return;
86
+ }
87
+ if (type === "start") {
88
+ Object.entries(meta).forEach(([label, value]) => {
89
+ startTimes.set(`${label}\0${value}`, performance.now());
90
+ });
91
+ } else {
92
+ Object.entries(meta).forEach(([label, value]) => {
93
+ const startTime = startTimes.get(`${label}\0${value}`);
94
+ if (startTime) {
95
+ addTiming(label, String(value), performance.now() - startTime);
96
+ }
97
+ });
98
+ }
99
+ };
100
+ let actionId = 0;
101
+ const onAction = (...args) => {
102
+ if (isOnActionStartArgs(args)) {
103
+ const [, timestamp, type, idx, entrypointRef] = args;
104
+ writeJSONl(actionStream, {
105
+ actionId,
106
+ entrypointRef,
107
+ idx,
108
+ startedAt: timestamp,
109
+ type
110
+ });
111
+ // eslint-disable-next-line no-plusplus
112
+ return actionId++;
113
+ }
114
+ const [result, timestamp, id, isAsync, error] = args;
115
+ writeJSONl(actionStream, {
116
+ actionId: id,
117
+ error,
118
+ finishedAt: timestamp,
119
+ isAsync,
120
+ result: `${result}ed`
121
+ });
122
+ return id;
123
+ };
124
+ const onEntrypointEvent = (emitterId, timestamp, event) => {
125
+ entrypointStream.write(`${JSON.stringify([
126
+ emitterId,
127
+ timestamp,
128
+ event
129
+ ])}\n`);
130
+ };
131
+ const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);
132
+ return {
133
+ emitter,
134
+ onDone: (sourceRoot) => {
135
+ if (options.print) {
136
+ printTimings(timings, startedAt, sourceRoot);
137
+ console.log("\nMemory usage:", process.memoryUsage());
138
+ }
139
+ actionStream.end();
140
+ dependenciesStream.end();
141
+ entrypointStream.end();
142
+ staticResolveStream.end();
143
+ timings.clear();
144
+ }
145
+ };
143
146
  };
144
- //# sourceMappingURL=fileReporter.js.map
147
+ //# sourceMappingURL=fileReporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fileReporter.js","names":["createWriteStream","existsSync","mkdirSync","path","EventEmitter","isOnActionStartArgs","workingDir","process","cwd","replacer","_key","value","isAbsolute","relative","Map","Array","from","entries","reduce","obj","k","v","key","printTimings","timings","startedAt","sourceRoot","size","console","log","performance","now","toFixed","forEach","label","byLabel","array","sort","a","b","localeCompare","time","name","startsWith","writeJSONl","stream","data","write","JSON","stringify","createFileReporter","options","dir","emitter","dummy","onDone","reportFolder","recursive","Error","actionStream","join","dependenciesStream","entrypointStream","addTiming","has","set","forLabel","get","Math","round","processDependencyEvent","file","only","imports","fileIdx","processSingleEvent","meta","type","startTimes","onEvent","Object","startTime","String","actionId","onAction","args","timestamp","idx","entrypointRef","result","id","isAsync","error","finishedAt","onEntrypointEvent","emitterId","event","print","memoryUsage","end","clear"],"sources":["../../src/debug/fileReporter.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { createWriteStream, existsSync, mkdirSync } from 'fs';\nimport path from 'path';\n\nimport type {\n OnAction,\n OnEvent,\n OnActionFinishArgs,\n OnActionStartArgs,\n OnEntrypointEvent,\n} from '../utils/EventEmitter';\nimport { EventEmitter, isOnActionStartArgs } from '../utils/EventEmitter';\n\ntype Timings = Map<string, Map<string, number>>;\n\nexport interface IFileReporterOptions {\n dir?: string;\n print?: boolean;\n}\n\nexport interface IProcessedEvent {\n file: string;\n fileIdx: string;\n imports: { from: string; what: string[] }[];\n only: string[];\n phase?: 'initial' | 'rewritten';\n type: 'dependency';\n}\n\nexport interface IQueueActionEvent {\n action: string;\n args?: string[];\n datetime: Date;\n file: string;\n queueIdx: string;\n type: 'queue-action';\n}\n\nconst workingDir = process.cwd();\n\nfunction replacer(_key: string, value: unknown): unknown {\n if (typeof value === 'string' && path.isAbsolute(value)) {\n return path.relative(workingDir, value);\n }\n\n if (value instanceof Map) {\n return Array.from(value.entries()).reduce((obj, [k, v]) => {\n const key = replacer(k, k) as string;\n return {\n ...obj,\n [key]: replacer(key, v),\n };\n }, {});\n }\n\n return value;\n}\n\nfunction printTimings(timings: Timings, startedAt: number, sourceRoot: string) {\n if (timings.size === 0) {\n return;\n }\n\n console.log(`\\nTimings:`);\n console.log(` Total: ${(performance.now() - startedAt).toFixed()}ms`);\n\n Array.from(timings.entries()).forEach(([label, byLabel]) => {\n console.log(`\\n By ${label}:`);\n\n const array = Array.from(byLabel.entries());\n // array.sort(([, a], [, b]) => b - a);\n array\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([value, time]) => {\n const name = value.startsWith(sourceRoot)\n ? path.relative(sourceRoot, value)\n : value;\n console.log(` ${name}: ${time}ms`);\n });\n });\n}\n\nconst writeJSONl = (stream: NodeJS.WritableStream, data: unknown) => {\n stream.write(`${JSON.stringify(data, replacer)}\\n`);\n};\n\nexport const createFileReporter = (\n options: IFileReporterOptions | false = false\n) => {\n if (!options || !options.dir) {\n return {\n emitter: EventEmitter.dummy,\n onDone: () => {},\n };\n }\n\n const reportFolder = existsSync(options.dir)\n ? options.dir\n : mkdirSync(options.dir, {\n recursive: true,\n });\n\n if (!reportFolder) {\n throw new Error(`Could not create directory ${options.dir}`);\n }\n\n const actionStream = createWriteStream(\n path.join(options.dir, 'actions.jsonl')\n );\n\n const dependenciesStream = createWriteStream(\n path.join(options.dir, 'dependencies.jsonl')\n );\n\n const entrypointStream = createWriteStream(\n path.join(options.dir, 'entrypoints.jsonl')\n );\n\n const startedAt = performance.now();\n const timings: Timings = new Map();\n const addTiming = (label: string, key: string, value: number) => {\n if (!timings.has(label)) {\n timings.set(label, new Map());\n }\n\n const forLabel = timings.get(label)!;\n forLabel.set(key, Math.round((forLabel.get(key) || 0) + value));\n };\n\n const processDependencyEvent = ({\n file,\n only,\n imports,\n fileIdx,\n }: IProcessedEvent) => {\n writeJSONl(dependenciesStream, {\n file,\n only,\n imports,\n fileIdx,\n });\n };\n\n const processSingleEvent = (\n meta: Record<string, unknown> | IProcessedEvent | IQueueActionEvent\n ) => {\n if (meta.type === 'dependency') {\n processDependencyEvent(meta as IProcessedEvent);\n }\n };\n\n const startTimes = new Map<string, number>();\n\n const onEvent: OnEvent = (meta, type) => {\n if (type === 'single') {\n processSingleEvent(meta);\n return;\n }\n\n if (type === 'start') {\n Object.entries(meta).forEach(([label, value]) => {\n startTimes.set(`${label}\\0${value}`, performance.now());\n });\n } else {\n Object.entries(meta).forEach(([label, value]) => {\n const startTime = startTimes.get(`${label}\\0${value}`);\n if (startTime) {\n addTiming(label, String(value), performance.now() - startTime);\n }\n });\n }\n };\n\n let actionId = 0;\n const onAction: OnAction = (\n ...args: OnActionStartArgs | OnActionFinishArgs\n ) => {\n if (isOnActionStartArgs(args)) {\n const [, timestamp, type, idx, entrypointRef] = args;\n writeJSONl(actionStream, {\n actionId,\n entrypointRef,\n idx,\n startedAt: timestamp,\n type,\n });\n\n // eslint-disable-next-line no-plusplus\n return actionId++;\n }\n\n const [result, timestamp, id, isAsync, error] = args;\n writeJSONl(actionStream, {\n actionId: id,\n error,\n finishedAt: timestamp,\n isAsync,\n result: `${result}ed`,\n });\n\n return id;\n };\n\n const onEntrypointEvent: OnEntrypointEvent = (\n emitterId,\n timestamp,\n event\n ) => {\n entrypointStream.write(\n `${JSON.stringify([emitterId, timestamp, event])}\\n`\n );\n };\n\n const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);\n\n return {\n emitter,\n onDone: (sourceRoot: string) => {\n if (options.print) {\n printTimings(timings, startedAt, sourceRoot);\n\n console.log('\\nMemory usage:', process.memoryUsage());\n }\n\n actionStream.end();\n dependenciesStream.end();\n timings.clear();\n },\n };\n};\n"],"mappings":"AAAA;AACA,SAASA,iBAAiB,EAAEC,UAAU,EAAEC,SAAS,QAAQ,IAAI;AAC7D,OAAOC,IAAI,MAAM,MAAM;AASvB,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,uBAAuB;AA2BzE,MAAMC,UAAU,GAAGC,OAAO,CAACC,GAAG,CAAC,CAAC;AAEhC,SAASC,QAAQA,CAACC,IAAY,EAAEC,KAAc,EAAW;EACvD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIR,IAAI,CAACS,UAAU,CAACD,KAAK,CAAC,EAAE;IACvD,OAAOR,IAAI,CAACU,QAAQ,CAACP,UAAU,EAAEK,KAAK,CAAC;EACzC;EAEA,IAAIA,KAAK,YAAYG,GAAG,EAAE;IACxB,OAAOC,KAAK,CAACC,IAAI,CAACL,KAAK,CAACM,OAAO,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAE,CAACC,CAAC,EAAEC,CAAC,CAAC,KAAK;MACzD,MAAMC,GAAG,GAAGb,QAAQ,CAACW,CAAC,EAAEA,CAAC,CAAW;MACpC,OAAO;QACL,GAAGD,GAAG;QACN,CAACG,GAAG,GAAGb,QAAQ,CAACa,GAAG,EAAED,CAAC;MACxB,CAAC;IACH,CAAC,EAAE,CAAC,CAAC,CAAC;EACR;EAEA,OAAOV,KAAK;AACd;AAEA,SAASY,YAAYA,CAACC,OAAgB,EAAEC,SAAiB,EAAEC,UAAkB,EAAE;EAC7E,IAAIF,OAAO,CAACG,IAAI,KAAK,CAAC,EAAE;IACtB;EACF;EAEAC,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;EACzBD,OAAO,CAACC,GAAG,CAAC,YAAY,CAACC,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGN,SAAS,EAAEO,OAAO,CAAC,CAAC,IAAI,CAAC;EAEtEjB,KAAK,CAACC,IAAI,CAACQ,OAAO,CAACP,OAAO,CAAC,CAAC,CAAC,CAACgB,OAAO,CAAC,CAAC,CAACC,KAAK,EAAEC,OAAO,CAAC,KAAK;IAC1DP,OAAO,CAACC,GAAG,CAAC,UAAUK,KAAK,GAAG,CAAC;IAE/B,MAAME,KAAK,GAAGrB,KAAK,CAACC,IAAI,CAACmB,OAAO,CAAClB,OAAO,CAAC,CAAC,CAAC;IAC3C;IACAmB,KAAK,CACFC,IAAI,CAAC,CAAC,CAACC,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,KAAKD,CAAC,CAACE,aAAa,CAACD,CAAC,CAAC,CAAC,CACtCN,OAAO,CAAC,CAAC,CAACtB,KAAK,EAAE8B,IAAI,CAAC,KAAK;MAC1B,MAAMC,IAAI,GAAG/B,KAAK,CAACgC,UAAU,CAACjB,UAAU,CAAC,GACrCvB,IAAI,CAACU,QAAQ,CAACa,UAAU,EAAEf,KAAK,CAAC,GAChCA,KAAK;MACTiB,OAAO,CAACC,GAAG,CAAC,OAAOa,IAAI,KAAKD,IAAI,IAAI,CAAC;IACvC,CAAC,CAAC;EACN,CAAC,CAAC;AACJ;AAEA,MAAMG,UAAU,GAAGA,CAACC,MAA6B,EAAEC,IAAa,KAAK;EACnED,MAAM,CAACE,KAAK,CAAC,GAAGC,IAAI,CAACC,SAAS,CAACH,IAAI,EAAErC,QAAQ,CAAC,IAAI,CAAC;AACrD,CAAC;AAED,OAAO,MAAMyC,kBAAkB,GAAGA,CAChCC,OAAqC,GAAG,KAAK,KAC1C;EACH,IAAI,CAACA,OAAO,IAAI,CAACA,OAAO,CAACC,GAAG,EAAE;IAC5B,OAAO;MACLC,OAAO,EAAEjD,YAAY,CAACkD,KAAK;MAC3BC,MAAM,EAAEA,CAAA,KAAM,CAAC;IACjB,CAAC;EACH;EAEA,MAAMC,YAAY,GAAGvD,UAAU,CAACkD,OAAO,CAACC,GAAG,CAAC,GACxCD,OAAO,CAACC,GAAG,GACXlD,SAAS,CAACiD,OAAO,CAACC,GAAG,EAAE;IACrBK,SAAS,EAAE;EACb,CAAC,CAAC;EAEN,IAAI,CAACD,YAAY,EAAE;IACjB,MAAM,IAAIE,KAAK,CAAC,8BAA8BP,OAAO,CAACC,GAAG,EAAE,CAAC;EAC9D;EAEA,MAAMO,YAAY,GAAG3D,iBAAiB,CACpCG,IAAI,CAACyD,IAAI,CAACT,OAAO,CAACC,GAAG,EAAE,eAAe,CACxC,CAAC;EAED,MAAMS,kBAAkB,GAAG7D,iBAAiB,CAC1CG,IAAI,CAACyD,IAAI,CAACT,OAAO,CAACC,GAAG,EAAE,oBAAoB,CAC7C,CAAC;EAED,MAAMU,gBAAgB,GAAG9D,iBAAiB,CACxCG,IAAI,CAACyD,IAAI,CAACT,OAAO,CAACC,GAAG,EAAE,mBAAmB,CAC5C,CAAC;EAED,MAAM3B,SAAS,GAAGK,WAAW,CAACC,GAAG,CAAC,CAAC;EACnC,MAAMP,OAAgB,GAAG,IAAIV,GAAG,CAAC,CAAC;EAClC,MAAMiD,SAAS,GAAGA,CAAC7B,KAAa,EAAEZ,GAAW,EAAEX,KAAa,KAAK;IAC/D,IAAI,CAACa,OAAO,CAACwC,GAAG,CAAC9B,KAAK,CAAC,EAAE;MACvBV,OAAO,CAACyC,GAAG,CAAC/B,KAAK,EAAE,IAAIpB,GAAG,CAAC,CAAC,CAAC;IAC/B;IAEA,MAAMoD,QAAQ,GAAG1C,OAAO,CAAC2C,GAAG,CAACjC,KAAK,CAAE;IACpCgC,QAAQ,CAACD,GAAG,CAAC3C,GAAG,EAAE8C,IAAI,CAACC,KAAK,CAAC,CAACH,QAAQ,CAACC,GAAG,CAAC7C,GAAG,CAAC,IAAI,CAAC,IAAIX,KAAK,CAAC,CAAC;EACjE,CAAC;EAED,MAAM2D,sBAAsB,GAAGA,CAAC;IAC9BC,IAAI;IACJC,IAAI;IACJC,OAAO;IACPC;EACe,CAAC,KAAK;IACrB9B,UAAU,CAACiB,kBAAkB,EAAE;MAC7BU,IAAI;MACJC,IAAI;MACJC,OAAO;MACPC;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,kBAAkB,GACtBC,IAAmE,IAChE;IACH,IAAIA,IAAI,CAACC,IAAI,KAAK,YAAY,EAAE;MAC9BP,sBAAsB,CAACM,IAAuB,CAAC;IACjD;EACF,CAAC;EAED,MAAME,UAAU,GAAG,IAAIhE,GAAG,CAAiB,CAAC;EAE5C,MAAMiE,OAAgB,GAAGA,CAACH,IAAI,EAAEC,IAAI,KAAK;IACvC,IAAIA,IAAI,KAAK,QAAQ,EAAE;MACrBF,kBAAkB,CAACC,IAAI,CAAC;MACxB;IACF;IAEA,IAAIC,IAAI,KAAK,OAAO,EAAE;MACpBG,MAAM,CAAC/D,OAAO,CAAC2D,IAAI,CAAC,CAAC3C,OAAO,CAAC,CAAC,CAACC,KAAK,EAAEvB,KAAK,CAAC,KAAK;QAC/CmE,UAAU,CAACb,GAAG,CAAC,GAAG/B,KAAK,KAAKvB,KAAK,EAAE,EAAEmB,WAAW,CAACC,GAAG,CAAC,CAAC,CAAC;MACzD,CAAC,CAAC;IACJ,CAAC,MAAM;MACLiD,MAAM,CAAC/D,OAAO,CAAC2D,IAAI,CAAC,CAAC3C,OAAO,CAAC,CAAC,CAACC,KAAK,EAAEvB,KAAK,CAAC,KAAK;QAC/C,MAAMsE,SAAS,GAAGH,UAAU,CAACX,GAAG,CAAC,GAAGjC,KAAK,KAAKvB,KAAK,EAAE,CAAC;QACtD,IAAIsE,SAAS,EAAE;UACblB,SAAS,CAAC7B,KAAK,EAAEgD,MAAM,CAACvE,KAAK,CAAC,EAAEmB,WAAW,CAACC,GAAG,CAAC,CAAC,GAAGkD,SAAS,CAAC;QAChE;MACF,CAAC,CAAC;IACJ;EACF,CAAC;EAED,IAAIE,QAAQ,GAAG,CAAC;EAChB,MAAMC,QAAkB,GAAGA,CACzB,GAAGC,IAA4C,KAC5C;IACH,IAAIhF,mBAAmB,CAACgF,IAAI,CAAC,EAAE;MAC7B,MAAM,GAAGC,SAAS,EAAET,IAAI,EAAEU,GAAG,EAAEC,aAAa,CAAC,GAAGH,IAAI;MACpDzC,UAAU,CAACe,YAAY,EAAE;QACvBwB,QAAQ;QACRK,aAAa;QACbD,GAAG;QACH9D,SAAS,EAAE6D,SAAS;QACpBT;MACF,CAAC,CAAC;;MAEF;MACA,OAAOM,QAAQ,EAAE;IACnB;IAEA,MAAM,CAACM,MAAM,EAAEH,SAAS,EAAEI,EAAE,EAAEC,OAAO,EAAEC,KAAK,CAAC,GAAGP,IAAI;IACpDzC,UAAU,CAACe,YAAY,EAAE;MACvBwB,QAAQ,EAAEO,EAAE;MACZE,KAAK;MACLC,UAAU,EAAEP,SAAS;MACrBK,OAAO;MACPF,MAAM,EAAE,GAAGA,MAAM;IACnB,CAAC,CAAC;IAEF,OAAOC,EAAE;EACX,CAAC;EAED,MAAMI,iBAAoC,GAAGA,CAC3CC,SAAS,EACTT,SAAS,EACTU,KAAK,KACF;IACHlC,gBAAgB,CAACf,KAAK,CACpB,GAAGC,IAAI,CAACC,SAAS,CAAC,CAAC8C,SAAS,EAAET,SAAS,EAAEU,KAAK,CAAC,CAAC,IAClD,CAAC;EACH,CAAC;EAED,MAAM3C,OAAO,GAAG,IAAIjD,YAAY,CAAC2E,OAAO,EAAEK,QAAQ,EAAEU,iBAAiB,CAAC;EAEtE,OAAO;IACLzC,OAAO;IACPE,MAAM,EAAG7B,UAAkB,IAAK;MAC9B,IAAIyB,OAAO,CAAC8C,KAAK,EAAE;QACjB1E,YAAY,CAACC,OAAO,EAAEC,SAAS,EAAEC,UAAU,CAAC;QAE5CE,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEtB,OAAO,CAAC2F,WAAW,CAAC,CAAC,CAAC;MACvD;MAEAvC,YAAY,CAACwC,GAAG,CAAC,CAAC;MAClBtC,kBAAkB,CAACsC,GAAG,CAAC,CAAC;MACxB3E,OAAO,CAAC4E,KAAK,CAAC,CAAC;IACjB;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"mappings":"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","names":[],"sources":["../../src/debug/fileReporter.ts"],"version":3,"sourcesContent":["/* eslint-disable no-console */\nimport { createWriteStream, existsSync, mkdirSync } from 'fs';\nimport path from 'path';\n\nimport type {\n OnAction,\n OnEvent,\n OnActionFinishArgs,\n OnActionStartArgs,\n OnEntrypointEvent,\n} from '../utils/EventEmitter';\nimport { EventEmitter, isOnActionStartArgs } from '../utils/EventEmitter';\n\ntype Timings = Map<string, Map<string, number>>;\n\nexport interface IFileReporterOptions {\n dir?: string;\n print?: boolean;\n}\n\nexport interface IProcessedEvent {\n file: string;\n fileIdx: string;\n imports: { from: string; what: string[] }[];\n only: string[];\n phase?: 'initial' | 'rewritten';\n type: 'dependency';\n}\n\nexport interface IQueueActionEvent {\n action: string;\n args?: string[];\n datetime: Date;\n file: string;\n queueIdx: string;\n type: 'queue-action';\n}\n\nconst workingDir = process.cwd();\n\nfunction replacer(_key: string, value: unknown): unknown {\n if (typeof value === 'string' && path.isAbsolute(value)) {\n return path.relative(workingDir, value);\n }\n\n if (value instanceof Map) {\n return Array.from(value.entries()).reduce((obj, [k, v]) => {\n const key = replacer(k, k) as string;\n return {\n ...obj,\n [key]: replacer(key, v),\n };\n }, {});\n }\n\n return value;\n}\n\nfunction printTimings(timings: Timings, startedAt: number, sourceRoot: string) {\n if (timings.size === 0) {\n return;\n }\n\n console.log(`\\nTimings:`);\n console.log(` Total: ${(performance.now() - startedAt).toFixed()}ms`);\n\n Array.from(timings.entries()).forEach(([label, byLabel]) => {\n console.log(`\\n By ${label}:`);\n\n const array = Array.from(byLabel.entries());\n // array.sort(([, a], [, b]) => b - a);\n array\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([value, time]) => {\n const name = value.startsWith(sourceRoot)\n ? path.relative(sourceRoot, value)\n : value;\n console.log(` ${name}: ${time}ms`);\n });\n });\n}\n\nconst writeJSONl = (stream: NodeJS.WritableStream, data: unknown) => {\n stream.write(`${JSON.stringify(data, replacer)}\\n`);\n};\n\nexport const createFileReporter = (\n options: IFileReporterOptions | false = false\n) => {\n if (!options || !options.dir) {\n return {\n emitter: EventEmitter.dummy,\n onDone: () => {},\n };\n }\n\n const reportFolder = existsSync(options.dir)\n ? options.dir\n : mkdirSync(options.dir, {\n recursive: true,\n });\n\n if (!reportFolder) {\n throw new Error(`Could not create directory ${options.dir}`);\n }\n\n const actionStream = createWriteStream(\n path.join(options.dir, 'actions.jsonl')\n );\n\n const dependenciesStream = createWriteStream(\n path.join(options.dir, 'dependencies.jsonl')\n );\n\n const entrypointStream = createWriteStream(\n path.join(options.dir, 'entrypoints.jsonl')\n );\n\n const staticResolveStream = createWriteStream(\n path.join(options.dir, 'static-resolve.jsonl')\n );\n\n const startedAt = performance.now();\n const timings: Timings = new Map();\n const addTiming = (label: string, key: string, value: number) => {\n if (!timings.has(label)) {\n timings.set(label, new Map());\n }\n\n const forLabel = timings.get(label)!;\n forLabel.set(key, Math.round((forLabel.get(key) || 0) + value));\n };\n\n const processDependencyEvent = ({\n file,\n only,\n imports,\n fileIdx,\n }: IProcessedEvent) => {\n writeJSONl(dependenciesStream, {\n file,\n only,\n imports,\n fileIdx,\n });\n };\n\n const processSingleEvent = (\n meta: Record<string, unknown> | IProcessedEvent | IQueueActionEvent\n ) => {\n if (meta.type === 'dependency') {\n processDependencyEvent(meta as IProcessedEvent);\n return;\n }\n\n if (meta.type === 'staticResolve') {\n writeJSONl(staticResolveStream, meta);\n }\n };\n\n const startTimes = new Map<string, number>();\n\n const onEvent: OnEvent = (meta, type) => {\n if (type === 'single') {\n processSingleEvent(meta);\n return;\n }\n\n if (type === 'start') {\n Object.entries(meta).forEach(([label, value]) => {\n startTimes.set(`${label}\\0${value}`, performance.now());\n });\n } else {\n Object.entries(meta).forEach(([label, value]) => {\n const startTime = startTimes.get(`${label}\\0${value}`);\n if (startTime) {\n addTiming(label, String(value), performance.now() - startTime);\n }\n });\n }\n };\n\n let actionId = 0;\n const onAction: OnAction = (\n ...args: OnActionStartArgs | OnActionFinishArgs\n ) => {\n if (isOnActionStartArgs(args)) {\n const [, timestamp, type, idx, entrypointRef] = args;\n writeJSONl(actionStream, {\n actionId,\n entrypointRef,\n idx,\n startedAt: timestamp,\n type,\n });\n\n // eslint-disable-next-line no-plusplus\n return actionId++;\n }\n\n const [result, timestamp, id, isAsync, error] = args;\n writeJSONl(actionStream, {\n actionId: id,\n error,\n finishedAt: timestamp,\n isAsync,\n result: `${result}ed`,\n });\n\n return id;\n };\n\n const onEntrypointEvent: OnEntrypointEvent = (\n emitterId,\n timestamp,\n event\n ) => {\n entrypointStream.write(\n `${JSON.stringify([emitterId, timestamp, event])}\\n`\n );\n };\n\n const emitter = new EventEmitter(onEvent, onAction, onEntrypointEvent);\n\n return {\n emitter,\n onDone: (sourceRoot: string) => {\n if (options.print) {\n printTimings(timings, startedAt, sourceRoot);\n\n console.log('\\nMemory usage:', process.memoryUsage());\n }\n\n actionStream.end();\n dependenciesStream.end();\n entrypointStream.end();\n staticResolveStream.end();\n timings.clear();\n },\n };\n};\n"],"file":"fileReporter.js"}