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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -28
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -79
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -73
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +10 -0
  102. package/esm/utils/TransformDiagnostics.js.map +1 -0
  103. package/esm/utils/TransformMetadata.js +28 -10
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +7 -8
  178. package/types/index.js +24 -77
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +6 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -37
  222. package/types/transform/helpers/loadWywOptions.js +95 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +4 -24
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.d.ts +9 -0
  241. package/types/utils/TransformDiagnostics.js +11 -0
  242. package/types/utils/TransformMetadata.d.ts +22 -4
  243. package/types/utils/TransformMetadata.js +23 -8
  244. package/types/utils/applyOxcProcessors.d.ts +16 -0
  245. package/types/utils/applyOxcProcessors.js +1391 -0
  246. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  247. package/types/utils/collectOxcExportsAndImports.js +957 -0
  248. package/types/utils/collectOxcRuntime.d.ts +14 -0
  249. package/types/utils/collectOxcRuntime.js +250 -0
  250. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  251. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  252. package/types/utils/getFileIdx.js +1 -4
  253. package/types/utils/getPluginKey.d.ts +5 -2
  254. package/types/utils/getPluginKey.js +2 -6
  255. package/types/utils/getVisitorKeys.d.ts +4 -4
  256. package/types/utils/getVisitorKeys.js +9 -6
  257. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  258. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  259. package/types/utils/hasWywPreval.js +1 -4
  260. package/types/utils/importOverrides.js +17 -27
  261. package/types/utils/isNode.d.ts +2 -2
  262. package/types/utils/isNode.js +2 -6
  263. package/types/utils/isNotNull.js +1 -4
  264. package/types/utils/isSerializable.js +3 -6
  265. package/types/utils/oxcAstService.d.ts +11 -0
  266. package/types/utils/oxcAstService.js +79 -0
  267. package/types/utils/oxcEmit.d.ts +19 -0
  268. package/types/utils/oxcEmit.js +506 -0
  269. package/types/utils/oxcPreevalStage.d.ts +20 -0
  270. package/types/utils/oxcPreevalStage.js +102 -0
  271. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  272. package/types/utils/oxcPreevalTransforms.js +1179 -0
  273. package/types/utils/oxcShaker.d.ts +13 -0
  274. package/types/utils/oxcShaker.js +751 -0
  275. package/types/utils/parseOxc.d.ts +11 -0
  276. package/types/utils/parseOxc.js +38 -0
  277. package/types/utils/parseRequest.js +2 -7
  278. package/types/utils/peek.js +1 -5
  279. package/types/utils/processorLookup.d.ts +8 -0
  280. package/types/utils/processorLookup.js +135 -0
  281. package/types/utils/resolveWithConditions.d.ts +12 -0
  282. package/types/utils/resolveWithConditions.js +103 -0
  283. package/types/vm/createVmContext.d.ts +2 -2
  284. package/types/vm/createVmContext.js +25 -62
  285. package/types/vm/process.js +20 -26
  286. package/esm/babel.js +0 -2
  287. package/esm/babel.js.map +0 -1
  288. package/esm/options/buildOptions.js +0 -168
  289. package/esm/options/buildOptions.js.map +0 -1
  290. package/esm/options/buildOptions.test.js +0 -138
  291. package/esm/options/buildOptions.test.js.map +0 -1
  292. package/esm/options/loadBabelOptions.js +0 -24
  293. package/esm/options/loadBabelOptions.js.map +0 -1
  294. package/esm/plugins/babel-transform.js +0 -53
  295. package/esm/plugins/babel-transform.js.map +0 -1
  296. package/esm/plugins/collector.js +0 -60
  297. package/esm/plugins/collector.js.map +0 -1
  298. package/esm/plugins/dynamic-import.js +0 -56
  299. package/esm/plugins/dynamic-import.js.map +0 -1
  300. package/esm/plugins/preeval.js +0 -73
  301. package/esm/plugins/preeval.js.map +0 -1
  302. package/esm/plugins/shaker.js +0 -680
  303. package/esm/plugins/shaker.js.map +0 -1
  304. package/esm/transform/barrelManifest.js +0 -291
  305. package/esm/transform/barrelManifest.js.map +0 -1
  306. package/esm/transform/generators/explodeReexports.js +0 -64
  307. package/esm/transform/generators/explodeReexports.js.map +0 -1
  308. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  309. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  310. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  311. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  312. package/esm/utils/collectExportsAndImports.js +0 -1157
  313. package/esm/utils/collectExportsAndImports.js.map +0 -1
  314. package/esm/utils/collectTemplateDependencies.js +0 -228
  315. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  316. package/esm/utils/createId.js +0 -6
  317. package/esm/utils/createId.js.map +0 -1
  318. package/esm/utils/findIdentifiers.js +0 -62
  319. package/esm/utils/findIdentifiers.js.map +0 -1
  320. package/esm/utils/getConstantStringValue.js +0 -58
  321. package/esm/utils/getConstantStringValue.js.map +0 -1
  322. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  323. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  324. package/esm/utils/getScope.js +0 -6
  325. package/esm/utils/getScope.js.map +0 -1
  326. package/esm/utils/getSource.js +0 -15
  327. package/esm/utils/getSource.js.map +0 -1
  328. package/esm/utils/getTagProcessor.js +0 -404
  329. package/esm/utils/getTagProcessor.js.map +0 -1
  330. package/esm/utils/isExports.js +0 -22
  331. package/esm/utils/isExports.js.map +0 -1
  332. package/esm/utils/isGlobal.js +0 -6
  333. package/esm/utils/isGlobal.js.map +0 -1
  334. package/esm/utils/isNodePath.js +0 -4
  335. package/esm/utils/isNodePath.js.map +0 -1
  336. package/esm/utils/isRemoved.js +0 -46
  337. package/esm/utils/isRemoved.js.map +0 -1
  338. package/esm/utils/isRequire.js +0 -13
  339. package/esm/utils/isRequire.js.map +0 -1
  340. package/esm/utils/isTypedNode.js +0 -6
  341. package/esm/utils/isTypedNode.js.map +0 -1
  342. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  343. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  344. package/esm/utils/removeDangerousCode.js +0 -276
  345. package/esm/utils/removeDangerousCode.js.map +0 -1
  346. package/esm/utils/replaceImportMetaEnv.js +0 -44
  347. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  348. package/esm/utils/scopeHelpers.js +0 -527
  349. package/esm/utils/scopeHelpers.js.map +0 -1
  350. package/esm/utils/traversalCache.js +0 -23
  351. package/esm/utils/traversalCache.js.map +0 -1
  352. package/esm/utils/unwrapExpression.js +0 -18
  353. package/esm/utils/unwrapExpression.js.map +0 -1
  354. package/esm/utils/unwrapSequence.js +0 -14
  355. package/esm/utils/unwrapSequence.js.map +0 -1
  356. package/esm/utils/valueToLiteral.js +0 -59
  357. package/esm/utils/valueToLiteral.js.map +0 -1
  358. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  359. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  360. package/lib/babel.js +0 -2
  361. package/lib/babel.js.map +0 -1
  362. package/lib/cache.js +0 -308
  363. package/lib/cache.js.map +0 -1
  364. package/lib/debug/fileReporter.js +0 -153
  365. package/lib/debug/fileReporter.js.map +0 -1
  366. package/lib/evaluators/index.js +0 -20
  367. package/lib/evaluators/index.js.map +0 -1
  368. package/lib/index.js +0 -257
  369. package/lib/index.js.map +0 -1
  370. package/lib/module.js +0 -552
  371. package/lib/module.js.map +0 -1
  372. package/lib/options/buildOptions.js +0 -176
  373. package/lib/options/buildOptions.js.map +0 -1
  374. package/lib/options/buildOptions.test.js +0 -141
  375. package/lib/options/buildOptions.test.js.map +0 -1
  376. package/lib/options/loadBabelOptions.js +0 -31
  377. package/lib/options/loadBabelOptions.js.map +0 -1
  378. package/lib/plugins/babel-transform.js +0 -60
  379. package/lib/plugins/babel-transform.js.map +0 -1
  380. package/lib/plugins/collector.js +0 -70
  381. package/lib/plugins/collector.js.map +0 -1
  382. package/lib/plugins/dynamic-import.js +0 -61
  383. package/lib/plugins/dynamic-import.js.map +0 -1
  384. package/lib/plugins/preeval.js +0 -81
  385. package/lib/plugins/preeval.js.map +0 -1
  386. package/lib/plugins/shaker.js +0 -691
  387. package/lib/plugins/shaker.js.map +0 -1
  388. package/lib/shaker.js +0 -95
  389. package/lib/shaker.js.map +0 -1
  390. package/lib/transform/BaseEntrypoint.js +0 -179
  391. package/lib/transform/BaseEntrypoint.js.map +0 -1
  392. package/lib/transform/Entrypoint.helpers.js +0 -279
  393. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  394. package/lib/transform/Entrypoint.js +0 -289
  395. package/lib/transform/Entrypoint.js.map +0 -1
  396. package/lib/transform/Entrypoint.types.js +0 -2
  397. package/lib/transform/Entrypoint.types.js.map +0 -1
  398. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  399. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  400. package/lib/transform/actions/AbortError.js +0 -16
  401. package/lib/transform/actions/AbortError.js.map +0 -1
  402. package/lib/transform/actions/BaseAction.js +0 -150
  403. package/lib/transform/actions/BaseAction.js.map +0 -1
  404. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  405. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  406. package/lib/transform/actions/actionRunner.js +0 -82
  407. package/lib/transform/actions/actionRunner.js.map +0 -1
  408. package/lib/transform/actions/types.js +0 -2
  409. package/lib/transform/actions/types.js.map +0 -1
  410. package/lib/transform/barrelManifest.js +0 -300
  411. package/lib/transform/barrelManifest.js.map +0 -1
  412. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  413. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  414. package/lib/transform/generators/collect.js +0 -66
  415. package/lib/transform/generators/collect.js.map +0 -1
  416. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  417. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  418. package/lib/transform/generators/evalFile.js +0 -57
  419. package/lib/transform/generators/evalFile.js.map +0 -1
  420. package/lib/transform/generators/explodeReexports.js +0 -71
  421. package/lib/transform/generators/explodeReexports.js.map +0 -1
  422. package/lib/transform/generators/extract.js +0 -102
  423. package/lib/transform/generators/extract.js.map +0 -1
  424. package/lib/transform/generators/getExports.js +0 -85
  425. package/lib/transform/generators/getExports.js.map +0 -1
  426. package/lib/transform/generators/index.js +0 -19
  427. package/lib/transform/generators/index.js.map +0 -1
  428. package/lib/transform/generators/processEntrypoint.js +0 -76
  429. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  430. package/lib/transform/generators/processImports.js +0 -82
  431. package/lib/transform/generators/processImports.js.map +0 -1
  432. package/lib/transform/generators/resolveImports.js +0 -221
  433. package/lib/transform/generators/resolveImports.js.map +0 -1
  434. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  435. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  436. package/lib/transform/generators/transform.js +0 -272
  437. package/lib/transform/generators/transform.js.map +0 -1
  438. package/lib/transform/generators/workflow.js +0 -90
  439. package/lib/transform/generators/workflow.js.map +0 -1
  440. package/lib/transform/helpers/loadWywOptions.js +0 -87
  441. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  442. package/lib/transform/helpers/withDefaultServices.js +0 -31
  443. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  444. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  445. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  446. package/lib/transform/rootLog.js +0 -9
  447. package/lib/transform/rootLog.js.map +0 -1
  448. package/lib/transform/types.js +0 -8
  449. package/lib/transform/types.js.map +0 -1
  450. package/lib/transform.js +0 -160
  451. package/lib/transform.js.map +0 -1
  452. package/lib/types.js +0 -2
  453. package/lib/types.js.map +0 -1
  454. package/lib/utils/EventEmitter.js +0 -61
  455. package/lib/utils/EventEmitter.js.map +0 -1
  456. package/lib/utils/ShakerMetadata.js +0 -9
  457. package/lib/utils/ShakerMetadata.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -19
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -20
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -1,11 +0,0 @@
1
- import * as t from '@babel/types';
2
- export function getMemberExpressionPropertyName(node) {
3
- if (!node.computed && t.isIdentifier(node.property)) {
4
- return node.property.name;
5
- }
6
- if (node.computed && t.isStringLiteral(node.property)) {
7
- return node.property.value;
8
- }
9
- return null;
10
- }
11
- //# sourceMappingURL=getMemberExpressionPropertyName.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getMemberExpressionPropertyName.js","names":["t","getMemberExpressionPropertyName","node","computed","isIdentifier","property","name","isStringLiteral","value"],"sources":["../../src/utils/getMemberExpressionPropertyName.ts"],"sourcesContent":["import type { MemberExpression } from '@babel/types';\nimport * as t from '@babel/types';\n\nexport function getMemberExpressionPropertyName(\n node: MemberExpression\n): string | null {\n if (!node.computed && t.isIdentifier(node.property)) {\n return node.property.name;\n }\n\n if (node.computed && t.isStringLiteral(node.property)) {\n return node.property.value;\n }\n\n return null;\n}\n"],"mappings":"AACA,OAAO,KAAKA,CAAC,MAAM,cAAc;AAEjC,OAAO,SAASC,+BAA+BA,CAC7CC,IAAsB,EACP;EACf,IAAI,CAACA,IAAI,CAACC,QAAQ,IAAIH,CAAC,CAACI,YAAY,CAACF,IAAI,CAACG,QAAQ,CAAC,EAAE;IACnD,OAAOH,IAAI,CAACG,QAAQ,CAACC,IAAI;EAC3B;EAEA,IAAIJ,IAAI,CAACC,QAAQ,IAAIH,CAAC,CAACO,eAAe,CAACL,IAAI,CAACG,QAAQ,CAAC,EAAE;IACrD,OAAOH,IAAI,CAACG,QAAQ,CAACG,KAAK;EAC5B;EAEA,OAAO,IAAI;AACb","ignoreList":[]}
@@ -1,6 +0,0 @@
1
- export function getScope(path) {
2
- // In some nodes (like FunctionDeclaration) `scope` for `id` returns
3
- // local function scope instead of a scope where function is declared.
4
- return path.key === 'id' && path.parent === path.scope.block ? path.scope.parent : path.scope;
5
- }
6
- //# sourceMappingURL=getScope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getScope.js","names":["getScope","path","key","parent","scope","block"],"sources":["../../src/utils/getScope.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nexport function getScope(path: NodePath) {\n // In some nodes (like FunctionDeclaration) `scope` for `id` returns\n // local function scope instead of a scope where function is declared.\n return path.key === 'id' && path.parent === path.scope.block\n ? path.scope.parent\n : path.scope;\n}\n"],"mappings":"AAEA,OAAO,SAASA,QAAQA,CAACC,IAAc,EAAE;EACvC;EACA;EACA,OAAOA,IAAI,CAACC,GAAG,KAAK,IAAI,IAAID,IAAI,CAACE,MAAM,KAAKF,IAAI,CAACG,KAAK,CAACC,KAAK,GACxDJ,IAAI,CAACG,KAAK,CAACD,MAAM,GACjBF,IAAI,CAACG,KAAK;AAChB","ignoreList":[]}
@@ -1,15 +0,0 @@
1
- import generator from '@babel/generator';
2
- export const getSource = (path, force = false) => {
3
- if (path.isIdentifier()) {
4
- // Fast-lane for identifiers
5
- return path.node.name;
6
- }
7
- let source;
8
- try {
9
- source = force ? undefined : path.getSource();
10
- // eslint-disable-next-line no-empty
11
- } catch {}
12
- source = source || generator(path.node).code;
13
- return path.node.extra?.parenthesized ? `(${source})` : source;
14
- };
15
- //# sourceMappingURL=getSource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSource.js","names":["generator","getSource","path","force","isIdentifier","node","name","source","undefined","code","extra","parenthesized"],"sources":["../../src/utils/getSource.ts"],"sourcesContent":["import generator from '@babel/generator';\nimport type { NodePath } from '@babel/traverse';\n\nexport const getSource = (path: NodePath, force = false): string => {\n if (path.isIdentifier()) {\n // Fast-lane for identifiers\n return path.node.name;\n }\n\n let source: string | undefined;\n try {\n source = force ? undefined : path.getSource();\n // eslint-disable-next-line no-empty\n } catch {}\n\n source = source || generator(path.node).code;\n\n return path.node.extra?.parenthesized ? `(${source})` : source;\n};\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,kBAAkB;AAGxC,OAAO,MAAMC,SAAS,GAAGA,CAACC,IAAc,EAAEC,KAAK,GAAG,KAAK,KAAa;EAClE,IAAID,IAAI,CAACE,YAAY,CAAC,CAAC,EAAE;IACvB;IACA,OAAOF,IAAI,CAACG,IAAI,CAACC,IAAI;EACvB;EAEA,IAAIC,MAA0B;EAC9B,IAAI;IACFA,MAAM,GAAGJ,KAAK,GAAGK,SAAS,GAAGN,IAAI,CAACD,SAAS,CAAC,CAAC;IAC7C;EACF,CAAC,CAAC,MAAM,CAAC;EAETM,MAAM,GAAGA,MAAM,IAAIP,SAAS,CAACE,IAAI,CAACG,IAAI,CAAC,CAACI,IAAI;EAE5C,OAAOP,IAAI,CAACG,IAAI,CAACK,KAAK,EAAEC,aAAa,GAAG,IAAIJ,MAAM,GAAG,GAAGA,MAAM;AAChE,CAAC","ignoreList":[]}
@@ -1,404 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { basename, dirname, join } from 'path';
3
- import { types as t } from '@babel/core';
4
- import { addDefault, addNamed } from '@babel/helper-module-imports';
5
- import { BaseProcessor } from '@wyw-in-js/processor-utils';
6
- import { findPackageJSON, syncResolve } from '@wyw-in-js/shared';
7
- import { collectExportsAndImports, explicitImport } from './collectExportsAndImports';
8
- import { collectTemplateDependencies, extractExpression } from './collectTemplateDependencies';
9
- import { getSource } from './getSource';
10
- import { isNotNull } from './isNotNull';
11
- import { mutate } from './scopeHelpers';
12
- import { getTraversalCache } from './traversalCache';
13
- const last = arr => arr[arr.length - 1];
14
- function zip(arr1, arr2) {
15
- const result = [];
16
- for (let i = 0; i < arr1.length; i++) {
17
- result.push(arr1[i]);
18
- if (arr2[i]) result.push(arr2[i]);
19
- }
20
- return result;
21
- }
22
- function buildCodeFrameError(path, message) {
23
- try {
24
- return path.buildCodeFrameError(message);
25
- } catch {
26
- return new Error(message);
27
- }
28
- }
29
- const definedTagsCache = new Map();
30
- const resolvedTagResolverSourceCache = new Map();
31
- let didWarnSkipSymbolMismatch = false;
32
- const getResolvedTagResolverSource = (source, sourceFile) => {
33
- if (!sourceFile) {
34
- return undefined;
35
- }
36
- const key = `${sourceFile}\0${source}`;
37
- if (resolvedTagResolverSourceCache.has(key)) {
38
- return resolvedTagResolverSourceCache.get(key);
39
- }
40
- try {
41
- const resolved = syncResolve(source, sourceFile, []);
42
- resolvedTagResolverSourceCache.set(key, resolved);
43
- return resolved;
44
- } catch {
45
- resolvedTagResolverSourceCache.set(key, undefined);
46
- return undefined;
47
- }
48
- };
49
- const getDefinedTagsFromPackage = (pkgName, filename) => {
50
- if (definedTagsCache.has(pkgName)) {
51
- return definedTagsCache.get(pkgName);
52
- }
53
- const packageJSONPath = findPackageJSON(pkgName, filename);
54
- if (!packageJSONPath) {
55
- return undefined;
56
- }
57
- const packageDir = dirname(packageJSONPath);
58
- const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));
59
- const definedTags = packageJSON['wyw-in-js']?.tags;
60
- const normalizedTags = definedTags ? Object.entries(definedTags).reduce((acc, [key, value]) => ({
61
- ...acc,
62
- [key]: value.startsWith('.') ? join(packageDir, value) : require.resolve(value, {
63
- paths: [packageDir]
64
- })
65
- }), {}) : undefined;
66
- definedTagsCache.set(pkgName, normalizedTags);
67
- return normalizedTags;
68
- };
69
- function isValidProcessorClass(module) {
70
- return module instanceof BaseProcessor.constructor;
71
- }
72
- function getProcessorFromPackage(packageName, tagName, filename) {
73
- const definedTags = getDefinedTagsFromPackage(packageName, filename);
74
- const processorPath = definedTags?.[tagName];
75
- if (!processorPath) {
76
- return null;
77
- }
78
- const Processor = require(processorPath).default;
79
- if (!isValidProcessorClass(Processor)) {
80
- return null;
81
- }
82
- return Processor;
83
- }
84
- function getProcessorFromFile(processorPath) {
85
- const Processor = require(processorPath).default;
86
- if (!isValidProcessorClass(Processor)) {
87
- return null;
88
- }
89
- return Processor;
90
- }
91
- export function getProcessorForImport({
92
- imported,
93
- source
94
- }, filename, options) {
95
- const {
96
- tagResolver
97
- } = options;
98
- let customFile = null;
99
- if (tagResolver) {
100
- const tagResolverMeta = {
101
- sourceFile: filename,
102
- resolvedSource: getResolvedTagResolverSource(source, filename)
103
- };
104
- customFile = tagResolver(source, imported, tagResolverMeta);
105
- }
106
- const processor = customFile ? getProcessorFromFile(customFile) : getProcessorFromPackage(source, imported, filename);
107
- return [processor, {
108
- imported,
109
- source
110
- }];
111
- }
112
- function getBuilderForIdentifier(definedProcessor, path, imports, options) {
113
- const [Processor, tagSource] = definedProcessor;
114
- let tagPath = path;
115
- if (tagPath.parentPath?.isMemberExpression({
116
- property: tagPath.node
117
- })) {
118
- tagPath = tagPath.parentPath;
119
- }
120
- if (!Processor || !tagSource || !tagPath) {
121
- return null;
122
- }
123
- const params = [['callee', tagPath.node]];
124
- let prev = tagPath;
125
- let current = tagPath.parentPath;
126
- while (current && current !== path) {
127
- if (current?.isSequenceExpression() && last(current.node.expressions) === prev.node) {
128
- prev = current;
129
- current = current.parentPath;
130
- // eslint-disable-next-line no-continue
131
- continue;
132
- }
133
- if (current?.isCallExpression({
134
- callee: prev.node
135
- })) {
136
- const args = current.get('arguments');
137
- const cookedArgs = args.map(arg => {
138
- const buildError = arg.buildCodeFrameError.bind(arg);
139
- if (!arg.isExpression()) {
140
- throw buildError(`Unexpected type of an argument ${arg.type}`);
141
- }
142
- const source = getSource(arg);
143
- const extracted = extractExpression(arg, options.evaluate, imports);
144
- return {
145
- ...extracted,
146
- source,
147
- buildCodeFrameError: buildError
148
- };
149
- }).filter(isNotNull);
150
- params.push(['call', ...cookedArgs]);
151
- prev = current;
152
- current = current.parentPath;
153
- // eslint-disable-next-line no-continue
154
- continue;
155
- }
156
- if (current?.isMemberExpression({
157
- object: prev.node
158
- })) {
159
- const property = current.get('property');
160
- if (property.isIdentifier() && !current.node.computed) {
161
- params.push(['member', property.node.name]);
162
- } else if (property.isStringLiteral()) {
163
- params.push(['member', property.node.value]);
164
- } else {
165
- throw property.buildCodeFrameError(`Unexpected type of a property`);
166
- }
167
- prev = current;
168
- current = current.parentPath;
169
- // eslint-disable-next-line no-continue
170
- continue;
171
- }
172
- if (current?.isTaggedTemplateExpression({
173
- tag: prev.node
174
- })) {
175
- const [quasis, expressionValues] = collectTemplateDependencies(current, options.evaluate);
176
- params.push(['template', zip(quasis, expressionValues)]);
177
- prev = current;
178
- current = current.parentPath;
179
- // eslint-disable-next-line no-continue
180
- continue;
181
- }
182
- break;
183
- }
184
- const replacer = (replacement, isPure) => {
185
- mutate(prev, p => {
186
- const next = typeof replacement === 'function' ? replacement(p) : replacement;
187
- p.replaceWith(next);
188
- if (isPure && (p.isCallExpression() || p.isNewExpression())) {
189
- p.addComment('leading', '#__PURE__');
190
- }
191
- });
192
- };
193
- const importHelpers = {
194
- addDefaultImport: (importedSource, nameHint) => addDefault(path, importedSource, {
195
- nameHint
196
- }),
197
- addNamedImport: (name, importedSource, nameHint = name) => addNamed(path, name, importedSource, {
198
- nameHint
199
- })
200
- };
201
- const astService = new Proxy(t, {
202
- get(target, prop, receiver) {
203
- if (prop in importHelpers) {
204
- return importHelpers[prop];
205
- }
206
- return Reflect.get(target, prop, receiver);
207
- }
208
- });
209
- return (...args) => new Processor(params, tagSource, astService, tagPath.node.loc ?? null, replacer, ...args);
210
- }
211
- function getDisplayName(path, idx, filename) {
212
- let displayName;
213
- const parent = path.findParent(p => p.isObjectProperty() || p.isJSXOpeningElement() || p.isVariableDeclarator());
214
- if (parent) {
215
- if (parent.isObjectProperty()) {
216
- if ('name' in parent.node.key) {
217
- displayName = parent.node.key.name;
218
- } else if ('value' in parent.node.key) {
219
- displayName = parent.node.key.value.toString();
220
- } else {
221
- const keyPath = parent.get('key');
222
- displayName = getSource(keyPath);
223
- }
224
- } else if (parent.isJSXOpeningElement()) {
225
- const name = parent.get('name');
226
- if (name.isJSXIdentifier()) {
227
- displayName = name.node.name;
228
- }
229
- } else if (parent.isVariableDeclarator()) {
230
- const id = parent.get('id');
231
- if (id.isIdentifier()) {
232
- displayName = id.node.name;
233
- }
234
- }
235
- }
236
- if (!displayName) {
237
- // Try to derive the path from the filename
238
- displayName = basename(filename ?? 'unknown');
239
- if (filename && /^index\.[a-z\d]+$/.test(displayName)) {
240
- // If the file name is 'index', better to get name from parent folder
241
- displayName = basename(dirname(filename));
242
- }
243
-
244
- // Remove the file extension
245
- displayName = displayName.replace(/\.[a-z\d]+$/, '');
246
- if (displayName) {
247
- displayName += idx;
248
- } else {
249
- throw new Error("Couldn't determine a name for the component. Ensure that it's either:\n" + '- Assigned to a variable\n' + '- Is an object property\n' + '- Is a prop in a JSX element\n');
250
- }
251
- }
252
- return displayName;
253
- }
254
- function isTagReferenced(path) {
255
- // Check if the variable is referenced anywhere for basic DCE
256
- // Only works when it's assigned to a variable
257
- let isReferenced = true;
258
- const parent = path.findParent(p => p.isObjectProperty() || p.isJSXOpeningElement() || p.isVariableDeclarator());
259
- if (parent) {
260
- if (parent.isVariableDeclarator()) {
261
- const id = parent.get('id');
262
- // FIXME: replace with id.isReferencedIdentifier()
263
- if (id.isIdentifier()) {
264
- const {
265
- referencePaths
266
- } = id.scope.getBinding(id.node.name) || {
267
- referencePaths: []
268
- };
269
- isReferenced = referencePaths.length !== 0;
270
- }
271
- }
272
- }
273
- return isReferenced;
274
- }
275
- const counters = new WeakMap();
276
- const getNextIndex = state => {
277
- const counter = counters.get(state) ?? 0;
278
- counters.set(state, counter + 1);
279
- return counter;
280
- };
281
- export function getDefinedProcessors(imports, path, filename, options) {
282
- const cache = getTraversalCache(path, 'getDefinedProcessors');
283
- if (!cache.has(path)) {
284
- const defined = new Map();
285
- imports.forEach(i => {
286
- const [processor, tagSource] = getProcessorForImport(i, filename, options);
287
- const {
288
- local
289
- } = i;
290
- if (!processor) {
291
- return;
292
- }
293
- let name = null;
294
- if (local.isIdentifier()) {
295
- name = local.node.name;
296
- }
297
- if (name === null && local.isMemberExpression()) {
298
- const property = local.get('property');
299
- const object = local.get('object');
300
- if (property.isIdentifier() && object.isIdentifier()) {
301
- name = `${object.node.name}.${property.node.name}`;
302
- }
303
- }
304
- if (name === null) {
305
- return;
306
- }
307
- defined.set(name, [processor, tagSource]);
308
- });
309
- cache.set(path, defined);
310
- }
311
- return cache.get(path);
312
- }
313
- function createProcessorInstance(definedProcessor, imports, path, fileContext, options) {
314
- const cache = getTraversalCache(path, 'createProcessorInstance');
315
- if (!cache.has(path.node)) {
316
- try {
317
- const builder = getBuilderForIdentifier(definedProcessor, path, imports, options);
318
- if (builder) {
319
- // Increment the index of the style we're processing
320
- // This is used for slug generation to prevent collision
321
- // Also used for display name if it couldn't be determined
322
- const idx = getNextIndex(fileContext);
323
- const displayName = getDisplayName(path, idx, fileContext.filename);
324
- const processor = builder(displayName, isTagReferenced(path), idx, options, fileContext);
325
- cache.set(path.node, processor);
326
- } else {
327
- cache.set(path.node, null);
328
- }
329
- } catch (e) {
330
- if (e === BaseProcessor.SKIP) {
331
- cache.set(path.node, null);
332
- return null;
333
- }
334
- if (typeof e === 'symbol' && e.description === BaseProcessor.SKIP.description) {
335
- if (!didWarnSkipSymbolMismatch) {
336
- didWarnSkipSymbolMismatch = true;
337
- // eslint-disable-next-line no-console
338
- console.warn(["[wyw-in-js] Processor threw Symbol('skip') that does not match BaseProcessor.SKIP identity.", 'This usually means duplicate copies of @wyw-in-js/processor-utils (or the processor) are bundled/installed.', 'Consider deduping dependencies to avoid subtle issues (instanceof checks, sentinels, etc).'].join('\n'));
339
- }
340
- cache.set(path.node, null);
341
- return null;
342
- }
343
- if (e instanceof Error) {
344
- throw buildCodeFrameError(path, e.message);
345
- }
346
- throw e;
347
- }
348
- }
349
- return cache.get(path.node) ?? null;
350
- }
351
- export function applyProcessors(path, fileContext, options, callback) {
352
- const imports = collectExportsAndImports(path).imports.filter(explicitImport);
353
- const definedProcessors = getDefinedProcessors(imports, path, fileContext.filename, options);
354
- const usages = [];
355
- definedProcessors.forEach((processor, idName) => {
356
- if (idName.includes('.')) {
357
- // It's a member expression
358
- const [object, property] = idName.split('.');
359
- const objBinding = path.scope.getBinding(object);
360
- if (!objBinding) {
361
- return;
362
- }
363
- objBinding.referencePaths.forEach(p => {
364
- const parent = p.parentPath;
365
- if (!parent?.isMemberExpression()) {
366
- return;
367
- }
368
- const identifier = parent.get('property');
369
- if (identifier.isIdentifier({
370
- name: property
371
- })) {
372
- usages.push({
373
- identifier,
374
- processor
375
- });
376
- }
377
- });
378
- return;
379
- }
380
- path.scope.getBinding(idName)?.referencePaths.forEach(identifier => {
381
- if (identifier.isIdentifier()) {
382
- usages.push({
383
- identifier,
384
- processor
385
- });
386
- }
387
- });
388
- });
389
-
390
- // The same order, the same slugs
391
- usages.sort((a, b) => (a.identifier.node.start ?? 0) - (b.identifier.node.start ?? 0));
392
- usages.forEach(usage => {
393
- const definedProcessor = usage.processor;
394
- if (!definedProcessor) {
395
- return;
396
- }
397
- const instance = createProcessorInstance(definedProcessor, imports, usage.identifier, fileContext, options);
398
- if (instance === null) {
399
- return;
400
- }
401
- callback(instance);
402
- });
403
- }
404
- //# sourceMappingURL=getTagProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTagProcessor.js","names":["readFileSync","basename","dirname","join","types","t","addDefault","addNamed","BaseProcessor","findPackageJSON","syncResolve","collectExportsAndImports","explicitImport","collectTemplateDependencies","extractExpression","getSource","isNotNull","mutate","getTraversalCache","last","arr","length","zip","arr1","arr2","result","i","push","buildCodeFrameError","path","message","Error","definedTagsCache","Map","resolvedTagResolverSourceCache","didWarnSkipSymbolMismatch","getResolvedTagResolverSource","source","sourceFile","undefined","key","has","get","resolved","set","getDefinedTagsFromPackage","pkgName","filename","packageJSONPath","packageDir","packageJSON","JSON","parse","definedTags","tags","normalizedTags","Object","entries","reduce","acc","value","startsWith","require","resolve","paths","isValidProcessorClass","module","constructor","getProcessorFromPackage","packageName","tagName","processorPath","Processor","default","getProcessorFromFile","getProcessorForImport","imported","options","tagResolver","customFile","tagResolverMeta","resolvedSource","processor","getBuilderForIdentifier","definedProcessor","imports","tagSource","tagPath","parentPath","isMemberExpression","property","node","params","prev","current","isSequenceExpression","expressions","isCallExpression","callee","args","cookedArgs","map","arg","buildError","bind","isExpression","type","extracted","evaluate","filter","object","isIdentifier","computed","name","isStringLiteral","isTaggedTemplateExpression","tag","quasis","expressionValues","replacer","replacement","isPure","p","next","replaceWith","isNewExpression","addComment","importHelpers","addDefaultImport","importedSource","nameHint","addNamedImport","astService","Proxy","target","prop","receiver","Reflect","loc","getDisplayName","idx","displayName","parent","findParent","isObjectProperty","isJSXOpeningElement","isVariableDeclarator","toString","keyPath","isJSXIdentifier","id","test","replace","isTagReferenced","isReferenced","referencePaths","scope","getBinding","counters","WeakMap","getNextIndex","state","counter","getDefinedProcessors","cache","defined","forEach","local","createProcessorInstance","fileContext","builder","e","SKIP","description","console","warn","applyProcessors","callback","definedProcessors","usages","idName","includes","split","objBinding","identifier","sort","a","b","start","usage","instance"],"sources":["../../src/utils/getTagProcessor.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { basename, dirname, join } from 'path';\n\nimport { types as t } from '@babel/core';\nimport { addDefault, addNamed } from '@babel/helper-module-imports';\nimport type { NodePath } from '@babel/traverse';\nimport type {\n Expression,\n Identifier,\n MemberExpression,\n Program,\n SourceLocation,\n} from '@babel/types';\n\nimport { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Param,\n Params,\n IFileContext,\n TagSource,\n} from '@wyw-in-js/processor-utils';\nimport { findPackageJSON, syncResolve } from '@wyw-in-js/shared';\nimport type {\n ExpressionValue,\n StrictOptions,\n TagResolverMeta,\n} from '@wyw-in-js/shared';\n\nimport type { IImport } from './collectExportsAndImports';\nimport {\n collectExportsAndImports,\n explicitImport,\n} from './collectExportsAndImports';\nimport {\n collectTemplateDependencies,\n extractExpression,\n} from './collectTemplateDependencies';\nimport { getSource } from './getSource';\nimport { isNotNull } from './isNotNull';\nimport { mutate } from './scopeHelpers';\nimport { getTraversalCache } from './traversalCache';\n\ntype BuilderArgs = ConstructorParameters<typeof BaseProcessor> extends [\n Params,\n TagSource,\n typeof t,\n SourceLocation | null,\n (replacement: Expression, isPure: boolean) => void,\n ...infer T,\n]\n ? T\n : never;\n\ntype Builder = (...args: BuilderArgs) => BaseProcessor;\n\ntype DefinedProcessor = [ProcessorClass, TagSource];\ntype DefinedProcessors = Map<string, DefinedProcessor>;\n\nexport type ProcessorClass = new (\n ...args: ConstructorParameters<typeof BaseProcessor>\n) => BaseProcessor;\n\nconst last = <T>(arr: T[]): T | undefined => arr[arr.length - 1];\n\nfunction zip<T1, T2>(arr1: T1[], arr2: T2[]) {\n const result: (T1 | T2)[] = [];\n for (let i = 0; i < arr1.length; i++) {\n result.push(arr1[i]);\n if (arr2[i]) result.push(arr2[i]);\n }\n\n return result;\n}\n\nfunction buildCodeFrameError(path: NodePath, message: string): Error {\n try {\n return path.buildCodeFrameError(message);\n } catch {\n return new Error(message);\n }\n}\n\nconst definedTagsCache = new Map<string, Record<string, string> | undefined>();\nconst resolvedTagResolverSourceCache = new Map<string, string | undefined>();\nlet didWarnSkipSymbolMismatch = false;\n\nconst getResolvedTagResolverSource = (\n source: string,\n sourceFile: string | null | undefined\n): string | undefined => {\n if (!sourceFile) {\n return undefined;\n }\n\n const key = `${sourceFile}\\0${source}`;\n if (resolvedTagResolverSourceCache.has(key)) {\n return resolvedTagResolverSourceCache.get(key);\n }\n\n try {\n const resolved = syncResolve(source, sourceFile, []);\n resolvedTagResolverSourceCache.set(key, resolved);\n return resolved;\n } catch {\n resolvedTagResolverSourceCache.set(key, undefined);\n return undefined;\n }\n};\n\nconst getDefinedTagsFromPackage = (\n pkgName: string,\n filename: string | null | undefined\n): Record<string, string> | undefined => {\n if (definedTagsCache.has(pkgName)) {\n return definedTagsCache.get(pkgName);\n }\n\n const packageJSONPath = findPackageJSON(pkgName, filename);\n if (!packageJSONPath) {\n return undefined;\n }\n\n const packageDir = dirname(packageJSONPath);\n const packageJSON = JSON.parse(readFileSync(packageJSONPath, 'utf8'));\n const definedTags: Record<string, string> | undefined =\n packageJSON['wyw-in-js']?.tags;\n\n const normalizedTags = definedTags\n ? Object.entries(definedTags).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: value.startsWith('.')\n ? join(packageDir, value)\n : require.resolve(value, { paths: [packageDir] }),\n }),\n {} as Record<string, string>\n )\n : undefined;\n\n definedTagsCache.set(pkgName, normalizedTags);\n\n return normalizedTags;\n};\n\nfunction isValidProcessorClass(module: unknown): module is ProcessorClass {\n return module instanceof BaseProcessor.constructor;\n}\n\nfunction getProcessorFromPackage(\n packageName: string,\n tagName: string,\n filename: string | null | undefined\n): ProcessorClass | null {\n const definedTags = getDefinedTagsFromPackage(packageName, filename);\n const processorPath = definedTags?.[tagName];\n if (!processorPath) {\n return null;\n }\n\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nfunction getProcessorFromFile(processorPath: string): ProcessorClass | null {\n const Processor = require(processorPath).default;\n if (!isValidProcessorClass(Processor)) {\n return null;\n }\n\n return Processor;\n}\n\nexport function getProcessorForImport(\n { imported, source }: IImport,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): [ProcessorClass | null, TagSource] {\n const { tagResolver } = options;\n\n let customFile: string | null = null;\n if (tagResolver) {\n const tagResolverMeta: TagResolverMeta = {\n sourceFile: filename,\n resolvedSource: getResolvedTagResolverSource(source, filename),\n };\n\n customFile = tagResolver(source, imported, tagResolverMeta);\n }\n const processor = customFile\n ? getProcessorFromFile(customFile)\n : getProcessorFromPackage(source, imported, filename);\n return [processor, { imported, source }];\n}\n\nfunction getBuilderForIdentifier(\n definedProcessor: DefinedProcessor,\n path: NodePath<Identifier>,\n imports: IImport[],\n options: Pick<StrictOptions, 'evaluate'>\n): Builder | null {\n const [Processor, tagSource] = definedProcessor;\n let tagPath: NodePath<Identifier | MemberExpression> = path;\n if (tagPath.parentPath?.isMemberExpression({ property: tagPath.node })) {\n tagPath = tagPath.parentPath;\n }\n\n if (!Processor || !tagSource || !tagPath) {\n return null;\n }\n\n const params: Param[] = [['callee', tagPath.node]];\n let prev: NodePath = tagPath;\n let current: NodePath | null = tagPath.parentPath;\n while (current && current !== path) {\n if (\n current?.isSequenceExpression() &&\n last(current.node.expressions) === prev.node\n ) {\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isCallExpression({ callee: prev.node })) {\n const args = current.get('arguments');\n const cookedArgs = args\n .map((arg) => {\n const buildError = arg.buildCodeFrameError.bind(arg);\n if (!arg.isExpression()) {\n throw buildError(`Unexpected type of an argument ${arg.type}`);\n }\n const source = getSource(arg);\n const extracted = extractExpression(arg, options.evaluate, imports);\n return {\n ...extracted,\n source,\n buildCodeFrameError: buildError,\n } as ExpressionValue;\n })\n .filter(isNotNull);\n\n params.push(['call', ...cookedArgs]);\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isMemberExpression({ object: prev.node })) {\n const property = current.get('property');\n if (property.isIdentifier() && !current.node.computed) {\n params.push(['member', property.node.name]);\n } else if (property.isStringLiteral()) {\n params.push(['member', property.node.value]);\n } else {\n throw property.buildCodeFrameError(`Unexpected type of a property`);\n }\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (current?.isTaggedTemplateExpression({ tag: prev.node })) {\n const [quasis, expressionValues] = collectTemplateDependencies(\n current,\n options.evaluate\n );\n params.push(['template', zip(quasis, expressionValues)]);\n\n prev = current;\n current = current.parentPath;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n break;\n }\n\n const replacer = (\n replacement: Expression | ((tagPath: NodePath) => Expression),\n isPure: boolean\n ) => {\n mutate(prev, (p) => {\n const next =\n typeof replacement === 'function' ? replacement(p) : replacement;\n\n p.replaceWith(next);\n\n if (isPure && (p.isCallExpression() || p.isNewExpression())) {\n p.addComment('leading', '#__PURE__');\n }\n });\n };\n\n const importHelpers = {\n addDefaultImport: (importedSource: string, nameHint?: string) =>\n addDefault(path, importedSource, { nameHint }),\n addNamedImport: (\n name: string,\n importedSource: string,\n nameHint: string = name\n ) => addNamed(path, name, importedSource, { nameHint }),\n };\n\n type AstService = typeof t & typeof importHelpers;\n\n const astService = new Proxy<AstService>(t as AstService, {\n get(target, prop, receiver) {\n if (prop in importHelpers) {\n return importHelpers[prop as keyof typeof importHelpers];\n }\n\n return Reflect.get(target, prop, receiver);\n },\n });\n\n return (...args: BuilderArgs) =>\n new Processor(\n params,\n tagSource,\n astService,\n tagPath.node.loc ?? null,\n replacer,\n ...args\n );\n}\n\nfunction getDisplayName(\n path: NodePath<Identifier>,\n idx: number,\n filename?: string | null\n): string {\n let displayName: string | undefined;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isObjectProperty()) {\n if ('name' in parent.node.key) {\n displayName = parent.node.key.name;\n } else if ('value' in parent.node.key) {\n displayName = parent.node.key.value.toString();\n } else {\n const keyPath = parent.get('key');\n displayName = getSource(keyPath);\n }\n } else if (parent.isJSXOpeningElement()) {\n const name = parent.get('name');\n if (name.isJSXIdentifier()) {\n displayName = name.node.name;\n }\n } else if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n if (id.isIdentifier()) {\n displayName = id.node.name;\n }\n }\n }\n\n if (!displayName) {\n // Try to derive the path from the filename\n displayName = basename(filename ?? 'unknown');\n\n if (filename && /^index\\.[a-z\\d]+$/.test(displayName)) {\n // If the file name is 'index', better to get name from parent folder\n displayName = basename(dirname(filename));\n }\n\n // Remove the file extension\n displayName = displayName.replace(/\\.[a-z\\d]+$/, '');\n\n if (displayName) {\n displayName += idx;\n } else {\n throw new Error(\n \"Couldn't determine a name for the component. Ensure that it's either:\\n\" +\n '- Assigned to a variable\\n' +\n '- Is an object property\\n' +\n '- Is a prop in a JSX element\\n'\n );\n }\n }\n\n return displayName;\n}\n\nfunction isTagReferenced(path: NodePath): boolean {\n // Check if the variable is referenced anywhere for basic DCE\n // Only works when it's assigned to a variable\n let isReferenced = true;\n\n const parent = path.findParent(\n (p) =>\n p.isObjectProperty() ||\n p.isJSXOpeningElement() ||\n p.isVariableDeclarator()\n );\n\n if (parent) {\n if (parent.isVariableDeclarator()) {\n const id = parent.get('id');\n // FIXME: replace with id.isReferencedIdentifier()\n if (id.isIdentifier()) {\n const { referencePaths } = id.scope.getBinding(id.node.name) || {\n referencePaths: [],\n };\n\n isReferenced = referencePaths.length !== 0;\n }\n }\n }\n\n return isReferenced;\n}\n\nconst counters = new WeakMap<IFileContext, number>();\nconst getNextIndex = (state: IFileContext) => {\n const counter = counters.get(state) ?? 0;\n counters.set(state, counter + 1);\n return counter;\n};\n\nexport function getDefinedProcessors(\n imports: IImport[],\n path: NodePath<Program>,\n filename: string | null | undefined,\n options: Pick<StrictOptions, 'tagResolver'>\n): DefinedProcessors {\n const cache = getTraversalCache<DefinedProcessors, NodePath<Program>>(\n path,\n 'getDefinedProcessors'\n );\n\n if (!cache.has(path)) {\n const defined: DefinedProcessors = new Map();\n\n imports.forEach((i) => {\n const [processor, tagSource] = getProcessorForImport(\n i,\n filename,\n options\n );\n const { local } = i;\n if (!processor) {\n return;\n }\n\n let name: string | null = null;\n if (local.isIdentifier()) {\n name = local.node.name;\n }\n\n if (name === null && local.isMemberExpression()) {\n const property = local.get('property');\n const object = local.get('object');\n if (property.isIdentifier() && object.isIdentifier()) {\n name = `${object.node.name}.${property.node.name}`;\n }\n }\n\n if (name === null) {\n return;\n }\n\n defined.set(name, [processor, tagSource]);\n });\n\n cache.set(path, defined);\n }\n\n return cache.get(path)!;\n}\n\nfunction createProcessorInstance(\n definedProcessor: [ProcessorClass, TagSource],\n imports: IImport[],\n path: NodePath<Identifier>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >\n): BaseProcessor | null {\n const cache = getTraversalCache<BaseProcessor | null, Identifier>(\n path,\n 'createProcessorInstance'\n );\n\n if (!cache.has(path.node)) {\n try {\n const builder = getBuilderForIdentifier(\n definedProcessor,\n path,\n imports,\n options\n );\n if (builder) {\n // Increment the index of the style we're processing\n // This is used for slug generation to prevent collision\n // Also used for display name if it couldn't be determined\n const idx = getNextIndex(fileContext);\n\n const displayName = getDisplayName(path, idx, fileContext.filename);\n\n const processor = builder(\n displayName,\n isTagReferenced(path),\n idx,\n options,\n fileContext\n );\n\n cache.set(path.node, processor);\n } else {\n cache.set(path.node, null);\n }\n } catch (e) {\n if (e === BaseProcessor.SKIP) {\n cache.set(path.node, null);\n return null;\n }\n\n if (\n typeof e === 'symbol' &&\n e.description === BaseProcessor.SKIP.description\n ) {\n if (!didWarnSkipSymbolMismatch) {\n didWarnSkipSymbolMismatch = true;\n // eslint-disable-next-line no-console\n console.warn(\n [\n \"[wyw-in-js] Processor threw Symbol('skip') that does not match BaseProcessor.SKIP identity.\",\n 'This usually means duplicate copies of @wyw-in-js/processor-utils (or the processor) are bundled/installed.',\n 'Consider deduping dependencies to avoid subtle issues (instanceof checks, sentinels, etc).',\n ].join('\\n')\n );\n }\n\n cache.set(path.node, null);\n return null;\n }\n\n if (e instanceof Error) {\n throw buildCodeFrameError(path, e.message);\n }\n\n throw e;\n }\n }\n\n return cache.get(path.node) ?? null;\n}\n\nexport function applyProcessors(\n path: NodePath<Program>,\n fileContext: IFileContext,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n >,\n callback: (processor: BaseProcessor) => void\n) {\n const imports = collectExportsAndImports(path).imports.filter(explicitImport);\n\n const definedProcessors = getDefinedProcessors(\n imports,\n path,\n fileContext.filename,\n options\n );\n\n const usages: {\n identifier: NodePath<Identifier>;\n processor: DefinedProcessor;\n }[] = [];\n\n definedProcessors.forEach((processor, idName) => {\n if (idName.includes('.')) {\n // It's a member expression\n const [object, property] = idName.split('.');\n const objBinding = path.scope.getBinding(object);\n if (!objBinding) {\n return;\n }\n\n objBinding.referencePaths.forEach((p) => {\n const parent = p.parentPath;\n if (!parent?.isMemberExpression()) {\n return;\n }\n\n const identifier = parent.get('property');\n if (identifier.isIdentifier({ name: property })) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n\n return;\n }\n\n path.scope.getBinding(idName)?.referencePaths.forEach((identifier) => {\n if (identifier.isIdentifier()) {\n usages.push({\n identifier,\n processor,\n });\n }\n });\n });\n\n // The same order, the same slugs\n usages.sort(\n (a, b) => (a.identifier.node.start ?? 0) - (b.identifier.node.start ?? 0)\n );\n\n usages.forEach((usage) => {\n const definedProcessor = usage.processor;\n\n if (!definedProcessor) {\n return;\n }\n\n const instance = createProcessorInstance(\n definedProcessor,\n imports,\n usage.identifier,\n fileContext,\n options\n );\n\n if (instance === null) {\n return;\n }\n\n callback(instance);\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,22 +0,0 @@
1
- import { isGlobal } from './isGlobal';
2
-
3
- /**
4
- * Checks that specified Identifier is a global `exports` or `module.exports`
5
- * @param node
6
- */
7
- export function isExports(node) {
8
- if (node?.isIdentifier({
9
- name: 'exports'
10
- })) {
11
- return isGlobal(node, 'exports');
12
- }
13
- if (node?.isMemberExpression() && node.get('object').isIdentifier({
14
- name: 'module'
15
- }) && node.get('property').isIdentifier({
16
- name: 'exports'
17
- })) {
18
- return isGlobal(node, 'module');
19
- }
20
- return false;
21
- }
22
- //# sourceMappingURL=isExports.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isExports.js","names":["isGlobal","isExports","node","isIdentifier","name","isMemberExpression","get"],"sources":["../../src/utils/isExports.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { isGlobal } from './isGlobal';\n\n/**\n * Checks that specified Identifier is a global `exports` or `module.exports`\n * @param node\n */\nexport function isExports(node: NodePath | null | undefined) {\n if (node?.isIdentifier({ name: 'exports' })) {\n return isGlobal(node, 'exports');\n }\n\n if (\n node?.isMemberExpression() &&\n node.get('object').isIdentifier({ name: 'module' }) &&\n node.get('property').isIdentifier({ name: 'exports' })\n ) {\n return isGlobal(node, 'module');\n }\n\n return false;\n}\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAACC,IAAiC,EAAE;EAC3D,IAAIA,IAAI,EAAEC,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EAAE;IAC3C,OAAOJ,QAAQ,CAACE,IAAI,EAAE,SAAS,CAAC;EAClC;EAEA,IACEA,IAAI,EAAEG,kBAAkB,CAAC,CAAC,IAC1BH,IAAI,CAACI,GAAG,CAAC,QAAQ,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAS,CAAC,CAAC,IACnDF,IAAI,CAACI,GAAG,CAAC,UAAU,CAAC,CAACH,YAAY,CAAC;IAAEC,IAAI,EAAE;EAAU,CAAC,CAAC,EACtD;IACA,OAAOJ,QAAQ,CAACE,IAAI,EAAE,QAAQ,CAAC;EACjC;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -1,6 +0,0 @@
1
- import { getScope } from './getScope';
2
- export const isGlobal = (node, name) => {
3
- const scope = getScope(node);
4
- return scope.getBinding(name) === undefined && scope.hasGlobal(name);
5
- };
6
- //# sourceMappingURL=isGlobal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isGlobal.js","names":["getScope","isGlobal","node","name","scope","getBinding","undefined","hasGlobal"],"sources":["../../src/utils/isGlobal.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\nimport { getScope } from './getScope';\n\nexport const isGlobal = (node: NodePath, name: string) => {\n const scope = getScope(node);\n\n return scope.getBinding(name) === undefined && scope.hasGlobal(name);\n};\n"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,YAAY;AAErC,OAAO,MAAMC,QAAQ,GAAGA,CAACC,IAAc,EAAEC,IAAY,KAAK;EACxD,MAAMC,KAAK,GAAGJ,QAAQ,CAACE,IAAI,CAAC;EAE5B,OAAOE,KAAK,CAACC,UAAU,CAACF,IAAI,CAAC,KAAKG,SAAS,IAAIF,KAAK,CAACG,SAAS,CAACJ,IAAI,CAAC;AACtE,CAAC","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- export function isNodePath(obj) {
2
- return 'node' in obj && obj?.node !== undefined;
3
- }
4
- //# sourceMappingURL=isNodePath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isNodePath.js","names":["isNodePath","obj","node","undefined"],"sources":["../../src/utils/isNodePath.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\nimport type { Node } from '@babel/types';\n\nexport function isNodePath<T extends Node>(\n obj: NodePath<T> | T\n): obj is NodePath<T> {\n return 'node' in obj && obj?.node !== undefined;\n}\n"],"mappings":"AAGA,OAAO,SAASA,UAAUA,CACxBC,GAAoB,EACA;EACpB,OAAO,MAAM,IAAIA,GAAG,IAAIA,GAAG,EAAEC,IAAI,KAAKC,SAAS;AACjD","ignoreList":[]}
@@ -1,46 +0,0 @@
1
- /**
2
- * Checks if a given path has been removed from the AST.
3
- */
4
- export function isRemoved(path) {
5
- // Check if the input path has already been removed
6
- if (path.removed) {
7
- return true;
8
- }
9
-
10
- // Check if any of the parent paths have been removed
11
- let currentPath = path;
12
- while (currentPath) {
13
- const parent = currentPath.parentPath;
14
- if (parent) {
15
- // If the parent path has been removed, return true
16
- if (parent.removed || parent.node === null) {
17
- return true;
18
- }
19
- const {
20
- listKey,
21
- key,
22
- node
23
- } = currentPath;
24
- if (listKey) {
25
- // If the current path is part of a list and the current node
26
- // is not presented in this list, return true
27
- const found = parent.get(listKey).find(p => p.node === node);
28
- if (!found) {
29
- return true;
30
- }
31
- }
32
- // If the current path is not part of a list and its node is not the same
33
- // as the node in the parent object at the same key, return true
34
- else if (parent.get(key).node !== node) {
35
- return true;
36
- }
37
- }
38
-
39
- // Set the current path to its parent path and continue the loop
40
- currentPath = parent;
41
- }
42
-
43
- // If the function has not returned true by this point, return false
44
- return false;
45
- }
46
- //# sourceMappingURL=isRemoved.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isRemoved.js","names":["isRemoved","path","removed","currentPath","parent","parentPath","node","listKey","key","found","get","find","p"],"sources":["../../src/utils/isRemoved.ts"],"sourcesContent":["import type { NodePath } from '@babel/traverse';\n\n/**\n * Checks if a given path has been removed from the AST.\n */\nexport function isRemoved(path: NodePath): boolean {\n // Check if the input path has already been removed\n if (path.removed) {\n return true;\n }\n\n // Check if any of the parent paths have been removed\n let currentPath: NodePath | null = path;\n while (currentPath) {\n const parent: NodePath | null = currentPath.parentPath;\n\n if (parent) {\n // If the parent path has been removed, return true\n if (parent.removed || parent.node === null) {\n return true;\n }\n\n const { listKey, key, node } = currentPath;\n if (listKey) {\n // If the current path is part of a list and the current node\n // is not presented in this list, return true\n const found = (parent.get(listKey) as NodePath[]).find(\n (p) => p.node === node\n );\n if (!found) {\n return true;\n }\n }\n // If the current path is not part of a list and its node is not the same\n // as the node in the parent object at the same key, return true\n else if ((parent.get(key as string) as NodePath).node !== node) {\n return true;\n }\n }\n\n // Set the current path to its parent path and continue the loop\n currentPath = parent;\n }\n\n // If the function has not returned true by this point, return false\n return false;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA,OAAO,SAASA,SAASA,CAACC,IAAc,EAAW;EACjD;EACA,IAAIA,IAAI,CAACC,OAAO,EAAE;IAChB,OAAO,IAAI;EACb;;EAEA;EACA,IAAIC,WAA4B,GAAGF,IAAI;EACvC,OAAOE,WAAW,EAAE;IAClB,MAAMC,MAAuB,GAAGD,WAAW,CAACE,UAAU;IAEtD,IAAID,MAAM,EAAE;MACV;MACA,IAAIA,MAAM,CAACF,OAAO,IAAIE,MAAM,CAACE,IAAI,KAAK,IAAI,EAAE;QAC1C,OAAO,IAAI;MACb;MAEA,MAAM;QAAEC,OAAO;QAAEC,GAAG;QAAEF;MAAK,CAAC,GAAGH,WAAW;MAC1C,IAAII,OAAO,EAAE;QACX;QACA;QACA,MAAME,KAAK,GAAIL,MAAM,CAACM,GAAG,CAACH,OAAO,CAAC,CAAgBI,IAAI,CACnDC,CAAC,IAAKA,CAAC,CAACN,IAAI,KAAKA,IACpB,CAAC;QACD,IAAI,CAACG,KAAK,EAAE;UACV,OAAO,IAAI;QACb;MACF;MACA;MACA;MAAA,KACK,IAAKL,MAAM,CAACM,GAAG,CAACF,GAAa,CAAC,CAAcF,IAAI,KAAKA,IAAI,EAAE;QAC9D,OAAO,IAAI;MACb;IACF;;IAEA;IACAH,WAAW,GAAGC,MAAM;EACtB;;EAEA;EACA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -1,13 +0,0 @@
1
- import { isGlobal } from './isGlobal';
2
-
3
- /**
4
- * Checks that specified Identifier is a global `require`
5
- * @param id
6
- */
7
- export function isRequire(id) {
8
- if (!id?.isIdentifier() || id.node.name !== 'require') {
9
- return false;
10
- }
11
- return isGlobal(id, 'require');
12
- }
13
- //# sourceMappingURL=isRequire.js.map