@wyw-in-js/transform 0.1.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 (480) hide show
  1. package/LICENSE +21 -0
  2. package/esm/babel.js +2 -0
  3. package/esm/babel.js.map +1 -0
  4. package/esm/cache.js +80 -0
  5. package/esm/cache.js.map +1 -0
  6. package/esm/debug/fileReporter.js +144 -0
  7. package/esm/debug/fileReporter.js.map +1 -0
  8. package/esm/evaluators/index.js +14 -0
  9. package/esm/evaluators/index.js.map +1 -0
  10. package/esm/index.js +24 -0
  11. package/esm/index.js.map +1 -0
  12. package/esm/module.js +316 -0
  13. package/esm/module.js.map +1 -0
  14. package/esm/options/babel-merge.d.js +2 -0
  15. package/esm/options/babel-merge.d.js.map +1 -0
  16. package/esm/options/buildOptions.js +28 -0
  17. package/esm/options/buildOptions.js.map +1 -0
  18. package/esm/options/loadBabelOptions.js +24 -0
  19. package/esm/options/loadBabelOptions.js.map +1 -0
  20. package/esm/plugins/babel-transform.js +53 -0
  21. package/esm/plugins/babel-transform.js.map +1 -0
  22. package/esm/plugins/collector.js +66 -0
  23. package/esm/plugins/collector.js.map +1 -0
  24. package/esm/plugins/dynamic-import.js +28 -0
  25. package/esm/plugins/dynamic-import.js.map +1 -0
  26. package/esm/plugins/preeval.js +75 -0
  27. package/esm/plugins/preeval.js.map +1 -0
  28. package/esm/plugins/shaker.js +296 -0
  29. package/esm/plugins/shaker.js.map +1 -0
  30. package/esm/shaker.js +50 -0
  31. package/esm/shaker.js.map +1 -0
  32. package/esm/transform/BaseEntrypoint.js +164 -0
  33. package/esm/transform/BaseEntrypoint.js.map +1 -0
  34. package/esm/transform/Entrypoint.helpers.js +168 -0
  35. package/esm/transform/Entrypoint.helpers.js.map +1 -0
  36. package/esm/transform/Entrypoint.js +212 -0
  37. package/esm/transform/Entrypoint.js.map +1 -0
  38. package/esm/transform/Entrypoint.types.js +2 -0
  39. package/esm/transform/Entrypoint.types.js.map +1 -0
  40. package/esm/transform/EvaluatedEntrypoint.js +6 -0
  41. package/esm/transform/EvaluatedEntrypoint.js.map +1 -0
  42. package/esm/transform/actions/AbortError.js +8 -0
  43. package/esm/transform/actions/AbortError.js.map +1 -0
  44. package/esm/transform/actions/BaseAction.js +134 -0
  45. package/esm/transform/actions/BaseAction.js.map +1 -0
  46. package/esm/transform/actions/UnprocessedEntrypointError.js +8 -0
  47. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -0
  48. package/esm/transform/actions/actionRunner.js +73 -0
  49. package/esm/transform/actions/actionRunner.js.map +1 -0
  50. package/esm/transform/actions/types.js +2 -0
  51. package/esm/transform/actions/types.js.map +1 -0
  52. package/esm/transform/generators/baseProcessingHandlers.js +22 -0
  53. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -0
  54. package/esm/transform/generators/collect.js +58 -0
  55. package/esm/transform/generators/collect.js.map +1 -0
  56. package/esm/transform/generators/evalFile.js +50 -0
  57. package/esm/transform/generators/evalFile.js.map +1 -0
  58. package/esm/transform/generators/explodeReexports.js +63 -0
  59. package/esm/transform/generators/explodeReexports.js.map +1 -0
  60. package/esm/transform/generators/extract.js +120 -0
  61. package/esm/transform/generators/extract.js.map +1 -0
  62. package/esm/transform/generators/getExports.js +73 -0
  63. package/esm/transform/generators/getExports.js.map +1 -0
  64. package/esm/transform/generators/index.js +13 -0
  65. package/esm/transform/generators/index.js.map +1 -0
  66. package/esm/transform/generators/processEntrypoint.js +43 -0
  67. package/esm/transform/generators/processEntrypoint.js.map +1 -0
  68. package/esm/transform/generators/processImports.js +23 -0
  69. package/esm/transform/generators/processImports.js.map +1 -0
  70. package/esm/transform/generators/resolveImports.js +148 -0
  71. package/esm/transform/generators/resolveImports.js.map +1 -0
  72. package/esm/transform/generators/transform.js +117 -0
  73. package/esm/transform/generators/transform.js.map +1 -0
  74. package/esm/transform/generators/workflow.js +82 -0
  75. package/esm/transform/generators/workflow.js.map +1 -0
  76. package/esm/transform/helpers/loadLinariaOptions.js +66 -0
  77. package/esm/transform/helpers/loadLinariaOptions.js.map +1 -0
  78. package/esm/transform/helpers/withDefaultServices.js +21 -0
  79. package/esm/transform/helpers/withDefaultServices.js.map +1 -0
  80. package/esm/transform/rootLog.js +3 -0
  81. package/esm/transform/rootLog.js.map +1 -0
  82. package/esm/transform/types.js +2 -0
  83. package/esm/transform/types.js.map +1 -0
  84. package/esm/transform.js +121 -0
  85. package/esm/transform.js.map +1 -0
  86. package/esm/types.js +2 -0
  87. package/esm/types.js.map +1 -0
  88. package/esm/utils/EventEmitter.js +52 -0
  89. package/esm/utils/EventEmitter.js.map +1 -0
  90. package/esm/utils/ShakerMetadata.js +2 -0
  91. package/esm/utils/ShakerMetadata.js.map +1 -0
  92. package/esm/utils/TransformMetadata.js +11 -0
  93. package/esm/utils/TransformMetadata.js.map +1 -0
  94. package/esm/utils/addIdentifierToLinariaPreval.js +68 -0
  95. package/esm/utils/addIdentifierToLinariaPreval.js.map +1 -0
  96. package/esm/utils/collectExportsAndImports.js +974 -0
  97. package/esm/utils/collectExportsAndImports.js.map +1 -0
  98. package/esm/utils/collectTemplateDependencies.js +219 -0
  99. package/esm/utils/collectTemplateDependencies.js.map +1 -0
  100. package/esm/utils/createId.js +6 -0
  101. package/esm/utils/createId.js.map +1 -0
  102. package/esm/utils/dispose-polyfill.js +6 -0
  103. package/esm/utils/dispose-polyfill.js.map +1 -0
  104. package/esm/utils/findIdentifiers.js +62 -0
  105. package/esm/utils/findIdentifiers.js.map +1 -0
  106. package/esm/utils/findPackageJSON.js +22 -0
  107. package/esm/utils/findPackageJSON.js.map +1 -0
  108. package/esm/utils/getFileIdx.js +10 -0
  109. package/esm/utils/getFileIdx.js.map +1 -0
  110. package/esm/utils/getPluginKey.js +13 -0
  111. package/esm/utils/getPluginKey.js.map +1 -0
  112. package/esm/utils/getScope.js +6 -0
  113. package/esm/utils/getScope.js.map +1 -0
  114. package/esm/utils/getSource.js +15 -0
  115. package/esm/utils/getSource.js.map +1 -0
  116. package/esm/utils/getTagProcessor.js +304 -0
  117. package/esm/utils/getTagProcessor.js.map +1 -0
  118. package/esm/utils/getVisitorKeys.js +5 -0
  119. package/esm/utils/getVisitorKeys.js.map +1 -0
  120. package/esm/utils/hasLinariaPreval.js +7 -0
  121. package/esm/utils/hasLinariaPreval.js.map +1 -0
  122. package/esm/utils/isExports.js +22 -0
  123. package/esm/utils/isExports.js.map +1 -0
  124. package/esm/utils/isGlobal.js +6 -0
  125. package/esm/utils/isGlobal.js.map +1 -0
  126. package/esm/utils/isNode.js +2 -0
  127. package/esm/utils/isNode.js.map +1 -0
  128. package/esm/utils/isNodePath.js +4 -0
  129. package/esm/utils/isNodePath.js.map +1 -0
  130. package/esm/utils/isNotNull.js +4 -0
  131. package/esm/utils/isNotNull.js.map +1 -0
  132. package/esm/utils/isRemoved.js +46 -0
  133. package/esm/utils/isRemoved.js.map +1 -0
  134. package/esm/utils/isRequire.js +13 -0
  135. package/esm/utils/isRequire.js.map +1 -0
  136. package/esm/utils/isSerializable.js +13 -0
  137. package/esm/utils/isSerializable.js.map +1 -0
  138. package/esm/utils/isTypedNode.js +6 -0
  139. package/esm/utils/isTypedNode.js.map +1 -0
  140. package/esm/utils/isUnnecessaryReactCall.js +72 -0
  141. package/esm/utils/isUnnecessaryReactCall.js.map +1 -0
  142. package/esm/utils/peek.js +2 -0
  143. package/esm/utils/peek.js.map +1 -0
  144. package/esm/utils/processTemplateExpression.js +11 -0
  145. package/esm/utils/processTemplateExpression.js.map +1 -0
  146. package/esm/utils/removeDangerousCode.js +127 -0
  147. package/esm/utils/removeDangerousCode.js.map +1 -0
  148. package/esm/utils/scopeHelpers.js +514 -0
  149. package/esm/utils/scopeHelpers.js.map +1 -0
  150. package/esm/utils/traversalCache.js +28 -0
  151. package/esm/utils/traversalCache.js.map +1 -0
  152. package/esm/utils/unwrapSequence.js +14 -0
  153. package/esm/utils/unwrapSequence.js.map +1 -0
  154. package/esm/utils/valueToLiteral.js +59 -0
  155. package/esm/utils/valueToLiteral.js.map +1 -0
  156. package/esm/utils/visitors/JSXElementsRemover.js +51 -0
  157. package/esm/utils/visitors/JSXElementsRemover.js.map +1 -0
  158. package/esm/vm/createVmContext.js +72 -0
  159. package/esm/vm/createVmContext.js.map +1 -0
  160. package/esm/vm/process.js +29 -0
  161. package/esm/vm/process.js.map +1 -0
  162. package/lib/babel.js +2 -0
  163. package/lib/babel.js.map +1 -0
  164. package/lib/cache.js +87 -0
  165. package/lib/cache.js.map +1 -0
  166. package/lib/debug/fileReporter.js +153 -0
  167. package/lib/debug/fileReporter.js.map +1 -0
  168. package/lib/evaluators/index.js +20 -0
  169. package/lib/evaluators/index.js.map +1 -0
  170. package/lib/index.js +225 -0
  171. package/lib/index.js.map +1 -0
  172. package/lib/module.js +327 -0
  173. package/lib/module.js.map +1 -0
  174. package/lib/options/babel-merge.d.js +2 -0
  175. package/lib/options/babel-merge.d.js.map +1 -0
  176. package/lib/options/buildOptions.js +35 -0
  177. package/lib/options/buildOptions.js.map +1 -0
  178. package/lib/options/loadBabelOptions.js +31 -0
  179. package/lib/options/loadBabelOptions.js.map +1 -0
  180. package/lib/plugins/babel-transform.js +60 -0
  181. package/lib/plugins/babel-transform.js.map +1 -0
  182. package/lib/plugins/collector.js +76 -0
  183. package/lib/plugins/collector.js.map +1 -0
  184. package/lib/plugins/dynamic-import.js +34 -0
  185. package/lib/plugins/dynamic-import.js.map +1 -0
  186. package/lib/plugins/preeval.js +82 -0
  187. package/lib/plugins/preeval.js.map +1 -0
  188. package/lib/plugins/shaker.js +303 -0
  189. package/lib/plugins/shaker.js.map +1 -0
  190. package/lib/shaker.js +58 -0
  191. package/lib/shaker.js.map +1 -0
  192. package/lib/transform/BaseEntrypoint.js +175 -0
  193. package/lib/transform/BaseEntrypoint.js.map +1 -0
  194. package/lib/transform/Entrypoint.helpers.js +182 -0
  195. package/lib/transform/Entrypoint.helpers.js.map +1 -0
  196. package/lib/transform/Entrypoint.js +226 -0
  197. package/lib/transform/Entrypoint.js.map +1 -0
  198. package/lib/transform/Entrypoint.types.js +2 -0
  199. package/lib/transform/Entrypoint.types.js.map +1 -0
  200. package/lib/transform/EvaluatedEntrypoint.js +13 -0
  201. package/lib/transform/EvaluatedEntrypoint.js.map +1 -0
  202. package/lib/transform/actions/AbortError.js +16 -0
  203. package/lib/transform/actions/AbortError.js.map +1 -0
  204. package/lib/transform/actions/BaseAction.js +144 -0
  205. package/lib/transform/actions/BaseAction.js.map +1 -0
  206. package/lib/transform/actions/UnprocessedEntrypointError.js +16 -0
  207. package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -0
  208. package/lib/transform/actions/actionRunner.js +82 -0
  209. package/lib/transform/actions/actionRunner.js.map +1 -0
  210. package/lib/transform/actions/types.js +2 -0
  211. package/lib/transform/actions/types.js.map +1 -0
  212. package/lib/transform/generators/baseProcessingHandlers.js +27 -0
  213. package/lib/transform/generators/baseProcessingHandlers.js.map +1 -0
  214. package/lib/transform/generators/collect.js +66 -0
  215. package/lib/transform/generators/collect.js.map +1 -0
  216. package/lib/transform/generators/evalFile.js +57 -0
  217. package/lib/transform/generators/evalFile.js.map +1 -0
  218. package/lib/transform/generators/explodeReexports.js +70 -0
  219. package/lib/transform/generators/explodeReexports.js.map +1 -0
  220. package/lib/transform/generators/extract.js +128 -0
  221. package/lib/transform/generators/extract.js.map +1 -0
  222. package/lib/transform/generators/getExports.js +80 -0
  223. package/lib/transform/generators/getExports.js.map +1 -0
  224. package/lib/transform/generators/index.js +19 -0
  225. package/lib/transform/generators/index.js.map +1 -0
  226. package/lib/transform/generators/processEntrypoint.js +49 -0
  227. package/lib/transform/generators/processEntrypoint.js.map +1 -0
  228. package/lib/transform/generators/processImports.js +29 -0
  229. package/lib/transform/generators/processImports.js.map +1 -0
  230. package/lib/transform/generators/resolveImports.js +158 -0
  231. package/lib/transform/generators/resolveImports.js.map +1 -0
  232. package/lib/transform/generators/transform.js +130 -0
  233. package/lib/transform/generators/transform.js.map +1 -0
  234. package/lib/transform/generators/workflow.js +90 -0
  235. package/lib/transform/generators/workflow.js.map +1 -0
  236. package/lib/transform/helpers/loadLinariaOptions.js +73 -0
  237. package/lib/transform/helpers/loadLinariaOptions.js.map +1 -0
  238. package/lib/transform/helpers/withDefaultServices.js +30 -0
  239. package/lib/transform/helpers/withDefaultServices.js.map +1 -0
  240. package/lib/transform/rootLog.js +9 -0
  241. package/lib/transform/rootLog.js.map +1 -0
  242. package/lib/transform/types.js +8 -0
  243. package/lib/transform/types.js.map +1 -0
  244. package/lib/transform.js +128 -0
  245. package/lib/transform.js.map +1 -0
  246. package/lib/types.js +2 -0
  247. package/lib/types.js.map +1 -0
  248. package/lib/utils/EventEmitter.js +61 -0
  249. package/lib/utils/EventEmitter.js.map +1 -0
  250. package/lib/utils/ShakerMetadata.js +9 -0
  251. package/lib/utils/ShakerMetadata.js.map +1 -0
  252. package/lib/utils/TransformMetadata.js +19 -0
  253. package/lib/utils/TransformMetadata.js.map +1 -0
  254. package/lib/utils/addIdentifierToLinariaPreval.js +75 -0
  255. package/lib/utils/addIdentifierToLinariaPreval.js.map +1 -0
  256. package/lib/utils/collectExportsAndImports.js +990 -0
  257. package/lib/utils/collectExportsAndImports.js.map +1 -0
  258. package/lib/utils/collectTemplateDependencies.js +233 -0
  259. package/lib/utils/collectTemplateDependencies.js.map +1 -0
  260. package/lib/utils/createId.js +13 -0
  261. package/lib/utils/createId.js.map +1 -0
  262. package/lib/utils/dispose-polyfill.js +9 -0
  263. package/lib/utils/dispose-polyfill.js.map +1 -0
  264. package/lib/utils/findIdentifiers.js +73 -0
  265. package/lib/utils/findIdentifiers.js.map +1 -0
  266. package/lib/utils/findPackageJSON.js +29 -0
  267. package/lib/utils/findPackageJSON.js.map +1 -0
  268. package/lib/utils/getFileIdx.js +16 -0
  269. package/lib/utils/getFileIdx.js.map +1 -0
  270. package/lib/utils/getPluginKey.js +21 -0
  271. package/lib/utils/getPluginKey.js.map +1 -0
  272. package/lib/utils/getScope.js +12 -0
  273. package/lib/utils/getScope.js.map +1 -0
  274. package/lib/utils/getSource.js +24 -0
  275. package/lib/utils/getSource.js.map +1 -0
  276. package/lib/utils/getTagProcessor.js +318 -0
  277. package/lib/utils/getTagProcessor.js.map +1 -0
  278. package/lib/utils/getVisitorKeys.js +11 -0
  279. package/lib/utils/getVisitorKeys.js.map +1 -0
  280. package/lib/utils/hasLinariaPreval.js +13 -0
  281. package/lib/utils/hasLinariaPreval.js.map +1 -0
  282. package/lib/utils/isExports.js +27 -0
  283. package/lib/utils/isExports.js.map +1 -0
  284. package/lib/utils/isGlobal.js +13 -0
  285. package/lib/utils/isGlobal.js.map +1 -0
  286. package/lib/utils/isNode.js +9 -0
  287. package/lib/utils/isNode.js.map +1 -0
  288. package/lib/utils/isNodePath.js +10 -0
  289. package/lib/utils/isNodePath.js.map +1 -0
  290. package/lib/utils/isNotNull.js +10 -0
  291. package/lib/utils/isNotNull.js.map +1 -0
  292. package/lib/utils/isRemoved.js +52 -0
  293. package/lib/utils/isRemoved.js.map +1 -0
  294. package/lib/utils/isRequire.js +18 -0
  295. package/lib/utils/isRequire.js.map +1 -0
  296. package/lib/utils/isSerializable.js +19 -0
  297. package/lib/utils/isSerializable.js.map +1 -0
  298. package/lib/utils/isTypedNode.js +13 -0
  299. package/lib/utils/isTypedNode.js.map +1 -0
  300. package/lib/utils/isUnnecessaryReactCall.js +81 -0
  301. package/lib/utils/isUnnecessaryReactCall.js.map +1 -0
  302. package/lib/utils/peek.js +9 -0
  303. package/lib/utils/peek.js.map +1 -0
  304. package/lib/utils/processTemplateExpression.js +18 -0
  305. package/lib/utils/processTemplateExpression.js.map +1 -0
  306. package/lib/utils/removeDangerousCode.js +134 -0
  307. package/lib/utils/removeDangerousCode.js.map +1 -0
  308. package/lib/utils/scopeHelpers.js +544 -0
  309. package/lib/utils/scopeHelpers.js.map +1 -0
  310. package/lib/utils/traversalCache.js +38 -0
  311. package/lib/utils/traversalCache.js.map +1 -0
  312. package/lib/utils/unwrapSequence.js +20 -0
  313. package/lib/utils/unwrapSequence.js.map +1 -0
  314. package/lib/utils/valueToLiteral.js +65 -0
  315. package/lib/utils/valueToLiteral.js.map +1 -0
  316. package/lib/utils/visitors/JSXElementsRemover.js +57 -0
  317. package/lib/utils/visitors/JSXElementsRemover.js.map +1 -0
  318. package/lib/vm/createVmContext.js +80 -0
  319. package/lib/vm/createVmContext.js.map +1 -0
  320. package/lib/vm/process.js +38 -0
  321. package/lib/vm/process.js.map +1 -0
  322. package/package.json +63 -0
  323. package/types/babel.d.ts +2 -0
  324. package/types/babel.js +2 -0
  325. package/types/cache.d.ts +24 -0
  326. package/types/cache.js +85 -0
  327. package/types/debug/fileReporter.d.ts +27 -0
  328. package/types/debug/fileReporter.js +151 -0
  329. package/types/evaluators/index.d.ts +10 -0
  330. package/types/evaluators/index.js +15 -0
  331. package/types/index.d.ts +30 -0
  332. package/types/index.js +69 -0
  333. package/types/module.d.ts +62 -0
  334. package/types/module.js +318 -0
  335. package/types/options/buildOptions.d.ts +7 -0
  336. package/types/options/buildOptions.js +35 -0
  337. package/types/options/loadBabelOptions.d.ts +3 -0
  338. package/types/options/loadBabelOptions.js +27 -0
  339. package/types/plugins/babel-transform.d.ts +4 -0
  340. package/types/plugins/babel-transform.js +49 -0
  341. package/types/plugins/collector.d.ts +16 -0
  342. package/types/plugins/collector.js +67 -0
  343. package/types/plugins/dynamic-import.d.ts +6 -0
  344. package/types/plugins/dynamic-import.js +32 -0
  345. package/types/plugins/preeval.d.ts +16 -0
  346. package/types/plugins/preeval.js +69 -0
  347. package/types/plugins/shaker.d.ts +11 -0
  348. package/types/plugins/shaker.js +299 -0
  349. package/types/shaker.d.ts +3 -0
  350. package/types/shaker.js +64 -0
  351. package/types/transform/BaseEntrypoint.d.ts +23 -0
  352. package/types/transform/BaseEntrypoint.js +182 -0
  353. package/types/transform/Entrypoint.d.ts +50 -0
  354. package/types/transform/Entrypoint.helpers.d.ts +14 -0
  355. package/types/transform/Entrypoint.helpers.js +169 -0
  356. package/types/transform/Entrypoint.js +223 -0
  357. package/types/transform/Entrypoint.types.d.ts +23 -0
  358. package/types/transform/Entrypoint.types.js +2 -0
  359. package/types/transform/EvaluatedEntrypoint.d.ts +16 -0
  360. package/types/transform/EvaluatedEntrypoint.js +9 -0
  361. package/types/transform/actions/AbortError.d.ts +4 -0
  362. package/types/transform/actions/AbortError.js +12 -0
  363. package/types/transform/actions/BaseAction.d.ts +40 -0
  364. package/types/transform/actions/BaseAction.js +149 -0
  365. package/types/transform/actions/UnprocessedEntrypointError.d.ts +6 -0
  366. package/types/transform/actions/UnprocessedEntrypointError.js +13 -0
  367. package/types/transform/actions/actionRunner.d.ts +4 -0
  368. package/types/transform/actions/actionRunner.js +86 -0
  369. package/types/transform/actions/types.d.ts +15 -0
  370. package/types/transform/actions/types.js +2 -0
  371. package/types/transform/generators/baseProcessingHandlers.d.ts +17 -0
  372. package/types/transform/generators/baseProcessingHandlers.js +23 -0
  373. package/types/transform/generators/collect.d.ts +6 -0
  374. package/types/transform/generators/collect.js +57 -0
  375. package/types/transform/generators/evalFile.d.ts +6 -0
  376. package/types/transform/generators/evalFile.js +56 -0
  377. package/types/transform/generators/explodeReexports.d.ts +7 -0
  378. package/types/transform/generators/explodeReexports.js +67 -0
  379. package/types/transform/generators/extract.d.ts +8 -0
  380. package/types/transform/generators/extract.js +116 -0
  381. package/types/transform/generators/getExports.d.ts +8 -0
  382. package/types/transform/generators/getExports.js +65 -0
  383. package/types/transform/generators/index.d.ts +15 -0
  384. package/types/transform/generators/index.js +15 -0
  385. package/types/transform/generators/processEntrypoint.d.ts +9 -0
  386. package/types/transform/generators/processEntrypoint.js +88 -0
  387. package/types/transform/generators/processImports.d.ts +5 -0
  388. package/types/transform/generators/processImports.js +21 -0
  389. package/types/transform/generators/resolveImports.d.ts +9 -0
  390. package/types/transform/generators/resolveImports.js +124 -0
  391. package/types/transform/generators/transform.d.ts +17 -0
  392. package/types/transform/generators/transform.js +115 -0
  393. package/types/transform/generators/workflow.d.ts +7 -0
  394. package/types/transform/generators/workflow.js +77 -0
  395. package/types/transform/helpers/loadLinariaOptions.d.ts +6 -0
  396. package/types/transform/helpers/loadLinariaOptions.js +86 -0
  397. package/types/transform/helpers/withDefaultServices.d.ts +5 -0
  398. package/types/transform/helpers/withDefaultServices.js +40 -0
  399. package/types/transform/rootLog.d.ts +3 -0
  400. package/types/transform/rootLog.js +5 -0
  401. package/types/transform/types.d.ts +137 -0
  402. package/types/transform/types.js +4 -0
  403. package/types/transform.d.ts +20 -0
  404. package/types/transform.js +121 -0
  405. package/types/types.d.ts +72 -0
  406. package/types/types.js +5 -0
  407. package/types/utils/EventEmitter.d.ts +58 -0
  408. package/types/utils/EventEmitter.js +61 -0
  409. package/types/utils/ShakerMetadata.d.ts +7 -0
  410. package/types/utils/ShakerMetadata.js +5 -0
  411. package/types/utils/TransformMetadata.d.ts +13 -0
  412. package/types/utils/TransformMetadata.js +17 -0
  413. package/types/utils/addIdentifierToLinariaPreval.d.ts +4 -0
  414. package/types/utils/addIdentifierToLinariaPreval.js +75 -0
  415. package/types/utils/collectExportsAndImports.d.ts +31 -0
  416. package/types/utils/collectExportsAndImports.js +962 -0
  417. package/types/utils/collectTemplateDependencies.d.ts +17 -0
  418. package/types/utils/collectTemplateDependencies.js +212 -0
  419. package/types/utils/createId.d.ts +2 -0
  420. package/types/utils/createId.js +9 -0
  421. package/types/utils/dispose-polyfill.d.ts +0 -0
  422. package/types/utils/dispose-polyfill.js +5 -0
  423. package/types/utils/findIdentifiers.d.ts +6 -0
  424. package/types/utils/findIdentifiers.js +68 -0
  425. package/types/utils/findPackageJSON.d.ts +1 -0
  426. package/types/utils/findPackageJSON.js +29 -0
  427. package/types/utils/getFileIdx.d.ts +1 -0
  428. package/types/utils/getFileIdx.js +13 -0
  429. package/types/utils/getPluginKey.d.ts +2 -0
  430. package/types/utils/getPluginKey.js +16 -0
  431. package/types/utils/getScope.d.ts +2 -0
  432. package/types/utils/getScope.js +11 -0
  433. package/types/utils/getSource.d.ts +2 -0
  434. package/types/utils/getSource.js +22 -0
  435. package/types/utils/getTagProcessor.d.ts +6 -0
  436. package/types/utils/getTagProcessor.js +315 -0
  437. package/types/utils/getVisitorKeys.d.ts +5 -0
  438. package/types/utils/getVisitorKeys.js +8 -0
  439. package/types/utils/hasLinariaPreval.d.ts +4 -0
  440. package/types/utils/hasLinariaPreval.js +9 -0
  441. package/types/utils/isExports.d.ts +6 -0
  442. package/types/utils/isExports.js +20 -0
  443. package/types/utils/isGlobal.d.ts +2 -0
  444. package/types/utils/isGlobal.js +9 -0
  445. package/types/utils/isNode.d.ts +2 -0
  446. package/types/utils/isNode.js +7 -0
  447. package/types/utils/isNodePath.d.ts +3 -0
  448. package/types/utils/isNodePath.js +7 -0
  449. package/types/utils/isNotNull.d.ts +1 -0
  450. package/types/utils/isNotNull.js +7 -0
  451. package/types/utils/isRemoved.d.ts +5 -0
  452. package/types/utils/isRemoved.js +42 -0
  453. package/types/utils/isRequire.d.ts +6 -0
  454. package/types/utils/isRequire.js +15 -0
  455. package/types/utils/isSerializable.d.ts +2 -0
  456. package/types/utils/isSerializable.js +18 -0
  457. package/types/utils/isTypedNode.d.ts +5 -0
  458. package/types/utils/isTypedNode.js +9 -0
  459. package/types/utils/isUnnecessaryReactCall.d.ts +3 -0
  460. package/types/utils/isUnnecessaryReactCall.js +76 -0
  461. package/types/utils/peek.d.ts +1 -0
  462. package/types/utils/peek.js +5 -0
  463. package/types/utils/processTemplateExpression.d.ts +5 -0
  464. package/types/utils/processTemplateExpression.js +17 -0
  465. package/types/utils/removeDangerousCode.d.ts +3 -0
  466. package/types/utils/removeDangerousCode.js +144 -0
  467. package/types/utils/scopeHelpers.d.ts +12 -0
  468. package/types/utils/scopeHelpers.js +568 -0
  469. package/types/utils/traversalCache.d.ts +5 -0
  470. package/types/utils/traversalCache.js +36 -0
  471. package/types/utils/unwrapSequence.d.ts +8 -0
  472. package/types/utils/unwrapSequence.js +17 -0
  473. package/types/utils/valueToLiteral.d.ts +3 -0
  474. package/types/utils/valueToLiteral.js +64 -0
  475. package/types/utils/visitors/JSXElementsRemover.d.ts +3 -0
  476. package/types/utils/visitors/JSXElementsRemover.js +52 -0
  477. package/types/vm/createVmContext.d.ts +7 -0
  478. package/types/vm/createVmContext.js +92 -0
  479. package/types/vm/process.d.ts +25 -0
  480. package/types/vm/process.js +32 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ShakerMetadata_1 = require("./utils/ShakerMetadata");
4
+ const getPluginKey_1 = require("./utils/getPluginKey");
5
+ const hasKeyInList = (plugin, list) => {
6
+ const pluginKey = (0, getPluginKey_1.getPluginKey)(plugin);
7
+ return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;
8
+ };
9
+ const safeResolve = (id, paths) => {
10
+ try {
11
+ return require.resolve(id, {
12
+ paths: paths.filter((i) => i !== null),
13
+ });
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ };
19
+ const shaker = (evalConfig, ast, code, { highPriorityPlugins, ...config }, babel) => {
20
+ const preShakePlugins = evalConfig.plugins?.filter((i) => hasKeyInList(i, highPriorityPlugins)) ??
21
+ [];
22
+ const plugins = [
23
+ ...preShakePlugins,
24
+ [require.resolve('./plugins/shaker'), config],
25
+ ...(evalConfig.plugins ?? []).filter((i) => !hasKeyInList(i, highPriorityPlugins)),
26
+ ];
27
+ const hasCommonjsPlugin = evalConfig.plugins?.some((i) => (0, getPluginKey_1.getPluginKey)(i) === 'transform-modules-commonjs');
28
+ if (!hasCommonjsPlugin) {
29
+ plugins.push(require.resolve('@babel/plugin-transform-modules-commonjs'));
30
+ }
31
+ if (evalConfig.filename?.endsWith('.ts') ||
32
+ evalConfig.filename?.endsWith('.tsx')) {
33
+ const hasTypescriptPlugin = evalConfig.plugins?.some((i) => (0, getPluginKey_1.getPluginKey)(i) === 'transform-typescript');
34
+ if (!hasTypescriptPlugin) {
35
+ const preset = safeResolve('@babel/preset-typescript', [
36
+ evalConfig.filename,
37
+ ]);
38
+ const plugin = safeResolve('@babel/plugin-transform-typescript', [
39
+ evalConfig.filename,
40
+ preset,
41
+ ]);
42
+ if (plugin) {
43
+ plugins.push(plugin);
44
+ }
45
+ }
46
+ }
47
+ const transformOptions = {
48
+ ...evalConfig,
49
+ caller: {
50
+ name: 'linaria',
51
+ },
52
+ plugins,
53
+ };
54
+ const transformed = babel.transformFromAstSync(ast, code, transformOptions);
55
+ if (!transformed || !(0, ShakerMetadata_1.hasShakerMetadata)(transformed.metadata)) {
56
+ throw new Error(`${evalConfig.filename} has no shaker metadata`);
57
+ }
58
+ return [
59
+ transformed.ast,
60
+ transformed.code ?? '',
61
+ transformed.metadata.linariaEvaluator.imports,
62
+ ];
63
+ };
64
+ exports.default = shaker;
@@ -0,0 +1,23 @@
1
+ /// <reference types="debug" />
2
+ import type { Debugger } from '@wyw-in-js/shared';
3
+ import type { ParentEntrypoint } from '../types';
4
+ import type { Services } from './types';
5
+ export declare const createExports: (log: Debugger) => Record<string | symbol, unknown>;
6
+ export declare abstract class BaseEntrypoint {
7
+ #private;
8
+ protected services: Services;
9
+ readonly evaluatedOnly: string[];
10
+ readonly generation: number;
11
+ readonly name: string;
12
+ readonly only: string[];
13
+ readonly parents: ParentEntrypoint[];
14
+ static createExports: (log: Debugger) => Record<string | symbol, unknown>;
15
+ readonly idx: string;
16
+ readonly log: Debugger;
17
+ readonly seqId: number;
18
+ protected constructor(services: Services, evaluatedOnly: string[], exports: Record<string | symbol, unknown> | undefined, generation: number, name: string, only: string[], parents: ParentEntrypoint[]);
19
+ get exports(): Record<string | symbol, unknown>;
20
+ set exports(value: unknown);
21
+ get ref(): string;
22
+ protected get exportsProxy(): Record<string | symbol, unknown>;
23
+ }
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseEntrypoint = exports.createExports = void 0;
4
+ const getFileIdx_1 = require("../utils/getFileIdx");
5
+ const hasKey = (obj, key) => (typeof obj === 'object' || typeof obj === 'function') &&
6
+ obj !== null &&
7
+ key in obj;
8
+ const VALUES = Symbol('values');
9
+ const isProxy = (obj) => typeof obj === 'object' && obj !== null && VALUES in obj;
10
+ const createExports = (log) => {
11
+ let exports = {};
12
+ const lazyFields = new Set();
13
+ return new Proxy(exports, {
14
+ get: (_target, key) => {
15
+ if (key === VALUES) {
16
+ return exports;
17
+ }
18
+ let value;
19
+ if (key in exports) {
20
+ value = exports[key];
21
+ }
22
+ else {
23
+ // Support Object.prototype methods on `exports`
24
+ // e.g `exports.hasOwnProperty`
25
+ value = Reflect.get(exports, key);
26
+ }
27
+ if (value === undefined && 'default' in exports) {
28
+ const defaultValue = exports.default;
29
+ if (hasKey(defaultValue, key)) {
30
+ log('⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.', key);
31
+ value = defaultValue[key];
32
+ }
33
+ }
34
+ if (value !== undefined && lazyFields.has(key)) {
35
+ value = value();
36
+ }
37
+ log('get %s: %o', key, value);
38
+ return value;
39
+ },
40
+ has: (_target, key) => {
41
+ if (key === VALUES)
42
+ return true;
43
+ return key in exports;
44
+ },
45
+ ownKeys: () => {
46
+ return Object.keys(exports);
47
+ },
48
+ set: (_target, key, value) => {
49
+ if (key === VALUES) {
50
+ exports = value;
51
+ return true;
52
+ }
53
+ if (key !== '__esModule') {
54
+ log('set %s: %o', key, value);
55
+ }
56
+ if (value !== undefined) {
57
+ exports[key] = value;
58
+ lazyFields.delete(key);
59
+ }
60
+ return true;
61
+ },
62
+ defineProperty: (_target, key, descriptor) => {
63
+ const { value } = descriptor;
64
+ if (value !== undefined) {
65
+ if (key !== '__esModule') {
66
+ log('defineProperty %s with value %o', key, value);
67
+ }
68
+ exports[key] = value;
69
+ lazyFields.delete(key);
70
+ return true;
71
+ }
72
+ if ('get' in descriptor) {
73
+ if (lazyFields.has(key)) {
74
+ const prev = exports[key];
75
+ exports[key] = () => {
76
+ const v = descriptor.get?.();
77
+ if (v !== undefined) {
78
+ return v;
79
+ }
80
+ return prev();
81
+ };
82
+ }
83
+ else {
84
+ const prev = exports[key];
85
+ exports[key] = () => {
86
+ const v = descriptor.get?.();
87
+ if (v !== undefined) {
88
+ return v;
89
+ }
90
+ return prev;
91
+ };
92
+ }
93
+ lazyFields.add(key);
94
+ log('defineProperty %s with getter', key);
95
+ }
96
+ return true;
97
+ },
98
+ getOwnPropertyDescriptor: (_target, key) => {
99
+ if (key in exports)
100
+ return {
101
+ enumerable: true,
102
+ configurable: true,
103
+ };
104
+ return undefined;
105
+ },
106
+ });
107
+ };
108
+ exports.createExports = createExports;
109
+ const EXPORTS = Symbol('exports');
110
+ let entrypointSeqId = 0;
111
+ class BaseEntrypoint {
112
+ services;
113
+ evaluatedOnly;
114
+ generation;
115
+ name;
116
+ only;
117
+ parents;
118
+ static createExports = exports.createExports;
119
+ idx;
120
+ log;
121
+ // eslint-disable-next-line no-plusplus
122
+ seqId = entrypointSeqId++;
123
+ #exports;
124
+ constructor(services, evaluatedOnly, exports, generation, name, only, parents) {
125
+ this.services = services;
126
+ this.evaluatedOnly = evaluatedOnly;
127
+ this.generation = generation;
128
+ this.name = name;
129
+ this.only = only;
130
+ this.parents = parents;
131
+ this.idx = (0, getFileIdx_1.getFileIdx)(name);
132
+ this.log =
133
+ parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);
134
+ let isExportsInherited = false;
135
+ if (exports) {
136
+ if (isProxy(exports)) {
137
+ this.#exports = exports;
138
+ isExportsInherited = true;
139
+ }
140
+ else {
141
+ this.#exports = (0, exports.createExports)(this.log);
142
+ this.#exports[EXPORTS] = exports;
143
+ }
144
+ this.exports = exports;
145
+ }
146
+ else {
147
+ this.#exports = BaseEntrypoint.createExports(this.log);
148
+ }
149
+ services.eventEmitter.entrypointEvent(this.seqId, {
150
+ class: this.constructor.name,
151
+ evaluatedOnly: this.evaluatedOnly,
152
+ filename: name,
153
+ generation,
154
+ idx: this.idx,
155
+ isExportsInherited,
156
+ only,
157
+ parentId: parents[0]?.seqId ?? null,
158
+ type: 'created',
159
+ });
160
+ }
161
+ get exports() {
162
+ if (EXPORTS in this.#exports) {
163
+ return this.#exports[EXPORTS];
164
+ }
165
+ return this.#exports;
166
+ }
167
+ set exports(value) {
168
+ if (isProxy(value)) {
169
+ this.#exports[VALUES] = value[VALUES];
170
+ }
171
+ else {
172
+ this.#exports[EXPORTS] = value;
173
+ }
174
+ }
175
+ get ref() {
176
+ return `${this.idx}#${this.generation}`;
177
+ }
178
+ get exportsProxy() {
179
+ return this.#exports;
180
+ }
181
+ }
182
+ exports.BaseEntrypoint = BaseEntrypoint;
@@ -0,0 +1,50 @@
1
+ import type { ParentEntrypoint, ITransformFileResult } from '../types';
2
+ import { BaseEntrypoint } from './BaseEntrypoint';
3
+ import type { IEntrypointCode, IEntrypointDependency, IIgnoredEntrypoint } from './Entrypoint.types';
4
+ import { EvaluatedEntrypoint } from './EvaluatedEntrypoint';
5
+ import type { ActionByType } from './actions/BaseAction';
6
+ import { BaseAction } from './actions/BaseAction';
7
+ import type { Services, ActionTypes } from './types';
8
+ export declare class Entrypoint extends BaseEntrypoint {
9
+ #private;
10
+ readonly initialCode: string | undefined;
11
+ protected readonly resolveTasks: Map<string, Promise<IEntrypointDependency>>;
12
+ protected readonly dependencies: Map<string, IEntrypointDependency>;
13
+ readonly evaluated = false;
14
+ readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;
15
+ protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void>;
16
+ private actionsCache;
17
+ private constructor();
18
+ get ignored(): boolean;
19
+ get originalCode(): string | undefined;
20
+ get supersededWith(): Entrypoint | null;
21
+ get transformedCode(): string | null;
22
+ static createRoot(services: Services, name: string, only: string[], loadedCode: string | undefined): Entrypoint;
23
+ /**
24
+ * Creates an entrypoint for the specified file.
25
+ * If there is already an entrypoint for this file, there will be four possible outcomes:
26
+ * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,
27
+ * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.
28
+ * It can happen if the file was changed and the watcher notified us about it, or we received a new version
29
+ * of the file from a loader whereas the previous one was loaded from the filesystem.
30
+ * The new entrypoint will be returned.
31
+ * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.
32
+ * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.
33
+ * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.
34
+ */
35
+ protected static create(services: Services, parent: ParentEntrypoint | null, name: string, only: string[], loadedCode: string | undefined): Entrypoint | 'loop';
36
+ private static innerCreate;
37
+ addDependency(dependency: IEntrypointDependency): void;
38
+ addResolveTask(name: string, dependency: Promise<IEntrypointDependency>): void;
39
+ assertNotSuperseded(): void;
40
+ assertTransformed(): void;
41
+ createAction<TType extends ActionTypes, TAction extends ActionByType<TType>>(actionType: TType, data: TAction['data'], abortSignal?: AbortSignal | null): BaseAction<TAction>;
42
+ createChild(name: string, only: string[], loadedCode?: string): Entrypoint | 'loop';
43
+ createEvaluated(): EvaluatedEntrypoint;
44
+ getDependency(name: string): IEntrypointDependency | undefined;
45
+ getResolveTask(name: string): Promise<IEntrypointDependency> | undefined;
46
+ hasLinariaMetadata(): boolean;
47
+ onSupersede(callback: (newEntrypoint: Entrypoint) => void): () => void;
48
+ setTransformResult(res: ITransformFileResult | null): void;
49
+ private supersede;
50
+ }
@@ -0,0 +1,14 @@
1
+ /// <reference types="debug" />
2
+ import type { TransformOptions } from '@babel/core';
3
+ import type { File } from '@babel/types';
4
+ import type { Debugger, EvalRule } from '@wyw-in-js/shared';
5
+ import type { Core } from '../babel';
6
+ import type { ParentEntrypoint } from '../types';
7
+ import type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';
8
+ import type { Services } from './types';
9
+ export declare function getMatchedRule(rules: EvalRule[], filename: string, code: string): EvalRule;
10
+ export declare function parseFile(babel: Core, filename: string, originalCode: string, parseConfig: TransformOptions): File;
11
+ export declare function loadAndParse(services: Services, name: string, loadedCode: string | undefined, log: Debugger): IEntrypointCode | IIgnoredEntrypoint;
12
+ export declare function getStack(entrypoint: ParentEntrypoint): string[];
13
+ export declare function mergeOnly(a: string[], b: string[]): string[];
14
+ export declare const isSuperSet: <T>(a: (T | "*")[], b: (T | "*")[]) => boolean;
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSuperSet = exports.mergeOnly = exports.getStack = exports.loadAndParse = exports.parseFile = exports.getMatchedRule = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const shared_1 = require("@wyw-in-js/shared");
7
+ const buildOptions_1 = require("../options/buildOptions");
8
+ const loadBabelOptions_1 = require("../options/loadBabelOptions");
9
+ const getFileIdx_1 = require("../utils/getFileIdx");
10
+ const getPluginKey_1 = require("../utils/getPluginKey");
11
+ function getMatchedRule(rules, filename, code) {
12
+ for (let i = rules.length - 1; i >= 0; i--) {
13
+ const rule = rules[i];
14
+ if (!rule.test) {
15
+ return rule;
16
+ }
17
+ if (typeof rule.test === 'function' && rule.test(filename, code)) {
18
+ return rule;
19
+ }
20
+ if (rule.test instanceof RegExp && rule.test.test(filename)) {
21
+ return rule;
22
+ }
23
+ }
24
+ return { action: 'ignore' };
25
+ }
26
+ exports.getMatchedRule = getMatchedRule;
27
+ function parseFile(babel, filename, originalCode, parseConfig) {
28
+ const log = shared_1.logger.extend('transform:parse').extend((0, getFileIdx_1.getFileIdx)(filename));
29
+ const parseResult = babel.parseSync(originalCode, parseConfig);
30
+ if (!parseResult) {
31
+ throw new Error(`Failed to parse ${filename}`);
32
+ }
33
+ log('stage-1', `${filename} has been parsed`);
34
+ return parseResult;
35
+ }
36
+ exports.parseFile = parseFile;
37
+ const isModuleResolver = (plugin) => {
38
+ const key = (0, getPluginKey_1.getPluginKey)(plugin);
39
+ if (!key)
40
+ return false;
41
+ if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {
42
+ return true;
43
+ }
44
+ return /([\\/])babel-plugin-module-resolver\1/.test(key);
45
+ };
46
+ let moduleResolverWarned = false;
47
+ function buildConfigs(services, name, pluginOptions, babelOptions) {
48
+ const { babel, options } = services;
49
+ const commonOptions = {
50
+ ast: true,
51
+ filename: name,
52
+ inputSourceMap: options.inputSourceMap,
53
+ root: options.root,
54
+ sourceFileName: name,
55
+ sourceMaps: true,
56
+ };
57
+ const rawConfig = (0, buildOptions_1.buildOptions)(pluginOptions?.babelOptions, babelOptions, commonOptions);
58
+ const useBabelConfigs = (0, shared_1.isFeatureEnabled)(pluginOptions.features, 'useBabelConfigs', name);
59
+ if (!useBabelConfigs) {
60
+ rawConfig.configFile = false;
61
+ }
62
+ const parseConfig = (0, loadBabelOptions_1.loadBabelOptions)(babel, name, {
63
+ babelrc: useBabelConfigs,
64
+ ...rawConfig,
65
+ });
66
+ const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);
67
+ const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);
68
+ if (parseHasModuleResolver && !rawHasModuleResolver) {
69
+ if (!moduleResolverWarned) {
70
+ // eslint-disable-next-line no-console
71
+ console.warn(`[linaria] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +
72
+ `in the babelOptions for the linaria plugin. This works for now but will be an error in the future. ` +
73
+ `Please add the module-resolver plugin to the babelOptions for the linaria plugin.`);
74
+ moduleResolverWarned = true;
75
+ }
76
+ rawConfig.plugins = [
77
+ ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??
78
+ []),
79
+ ...(rawConfig.plugins ?? []),
80
+ ];
81
+ }
82
+ const evalConfig = (0, loadBabelOptions_1.loadBabelOptions)(babel, name, {
83
+ babelrc: false,
84
+ ...rawConfig,
85
+ });
86
+ return {
87
+ evalConfig,
88
+ parseConfig,
89
+ };
90
+ }
91
+ function loadAndParse(services, name, loadedCode, log) {
92
+ const { babel, eventEmitter, options: { pluginOptions }, } = services;
93
+ const extension = (0, path_1.extname)(name);
94
+ if (!pluginOptions.extensions.includes(extension)) {
95
+ log('[createEntrypoint] %s is ignored. If you want it to be processed, you should add \'%s\' to the "extensions" option.', name, extension);
96
+ return {
97
+ get code() {
98
+ if ((0, path_1.isAbsolute)(name)) {
99
+ return loadedCode ?? (0, fs_1.readFileSync)(name, 'utf-8');
100
+ }
101
+ return ''; // it is a built-in module
102
+ },
103
+ evaluator: 'ignored',
104
+ reason: 'extension',
105
+ };
106
+ }
107
+ const code = loadedCode ?? (0, fs_1.readFileSync)(name, 'utf-8');
108
+ const { action, babelOptions } = getMatchedRule(pluginOptions.rules, name, code);
109
+ let ast;
110
+ const { evalConfig, parseConfig } = buildConfigs(services, name, pluginOptions, babelOptions);
111
+ const getOrParse = () => {
112
+ if (ast)
113
+ return ast;
114
+ ast = eventEmitter.perf('parseFile', () => parseFile(babel, name, code, parseConfig));
115
+ return ast;
116
+ };
117
+ if (action === 'ignore') {
118
+ log('[createEntrypoint] %s is ignored by rule', name);
119
+ return {
120
+ get ast() {
121
+ return getOrParse();
122
+ },
123
+ code,
124
+ evaluator: 'ignored',
125
+ reason: 'rule',
126
+ };
127
+ }
128
+ const evaluator = typeof action === 'function'
129
+ ? action
130
+ : require(require.resolve(action, {
131
+ paths: [(0, path_1.dirname)(name)],
132
+ })).default;
133
+ return {
134
+ get ast() {
135
+ return getOrParse();
136
+ },
137
+ code,
138
+ evaluator,
139
+ evalConfig,
140
+ };
141
+ }
142
+ exports.loadAndParse = loadAndParse;
143
+ function getStack(entrypoint) {
144
+ if (!entrypoint)
145
+ return [];
146
+ const stack = [entrypoint.name];
147
+ let { parents } = entrypoint;
148
+ while (parents.length) {
149
+ stack.push(parents[0].name);
150
+ parents = parents[0].parents;
151
+ }
152
+ return stack;
153
+ }
154
+ exports.getStack = getStack;
155
+ function mergeOnly(a, b) {
156
+ const result = new Set(a);
157
+ b.forEach((item) => result.add(item));
158
+ return [...result].filter((i) => i).sort();
159
+ }
160
+ exports.mergeOnly = mergeOnly;
161
+ const isSuperSet = (a, b) => {
162
+ if (a.includes('*'))
163
+ return true;
164
+ if (b.length === 0)
165
+ return true;
166
+ const aSet = new Set(a);
167
+ return b.every((item) => aSet.has(item));
168
+ };
169
+ exports.isSuperSet = isSuperSet;