@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,315 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTagProcessor = void 0;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const core_1 = require("@babel/core");
7
+ const helper_module_imports_1 = require("@babel/helper-module-imports");
8
+ const processor_utils_1 = require("@wyw-in-js/processor-utils");
9
+ const collectExportsAndImports_1 = require("./collectExportsAndImports");
10
+ const collectTemplateDependencies_1 = require("./collectTemplateDependencies");
11
+ const findPackageJSON_1 = require("./findPackageJSON");
12
+ const getSource_1 = require("./getSource");
13
+ const isNotNull_1 = require("./isNotNull");
14
+ const scopeHelpers_1 = require("./scopeHelpers");
15
+ const traversalCache_1 = require("./traversalCache");
16
+ const last = (arr) => arr[arr.length - 1];
17
+ function zip(arr1, arr2) {
18
+ const result = [];
19
+ for (let i = 0; i < arr1.length; i++) {
20
+ result.push(arr1[i]);
21
+ if (arr2[i])
22
+ result.push(arr2[i]);
23
+ }
24
+ return result;
25
+ }
26
+ function buildCodeFrameError(path, message) {
27
+ try {
28
+ return path.buildCodeFrameError(message);
29
+ }
30
+ catch {
31
+ return new Error(message);
32
+ }
33
+ }
34
+ const definedTagsCache = new Map();
35
+ const getDefinedTagsFromPackage = (pkgName, filename) => {
36
+ if (definedTagsCache.has(pkgName)) {
37
+ return definedTagsCache.get(pkgName);
38
+ }
39
+ const packageJSONPath = (0, findPackageJSON_1.findPackageJSON)(pkgName, filename);
40
+ if (!packageJSONPath) {
41
+ return undefined;
42
+ }
43
+ const packageDir = (0, path_1.dirname)(packageJSONPath);
44
+ const packageJSON = JSON.parse((0, fs_1.readFileSync)(packageJSONPath, 'utf8'));
45
+ const definedTags = packageJSON['wyw-in-js']?.tags;
46
+ const normalizedTags = definedTags
47
+ ? Object.entries(definedTags).reduce((acc, [key, value]) => ({
48
+ ...acc,
49
+ [key]: value.startsWith('.')
50
+ ? (0, path_1.join)(packageDir, value)
51
+ : require.resolve(value, { paths: [packageDir] }),
52
+ }), {})
53
+ : undefined;
54
+ definedTagsCache.set(pkgName, normalizedTags);
55
+ return normalizedTags;
56
+ };
57
+ function isValidProcessorClass(module) {
58
+ return module instanceof processor_utils_1.BaseProcessor.constructor;
59
+ }
60
+ function getProcessorFromPackage(packageName, tagName, filename) {
61
+ const definedTags = getDefinedTagsFromPackage(packageName, filename);
62
+ const processorPath = definedTags?.[tagName];
63
+ if (!processorPath) {
64
+ return null;
65
+ }
66
+ const Processor = require(processorPath).default;
67
+ if (!isValidProcessorClass(Processor)) {
68
+ return null;
69
+ }
70
+ return Processor;
71
+ }
72
+ function getProcessorFromFile(processorPath) {
73
+ const Processor = require(processorPath).default;
74
+ if (!isValidProcessorClass(Processor)) {
75
+ return null;
76
+ }
77
+ return Processor;
78
+ }
79
+ function getProcessorForIdentifier(path, imports, filename, options) {
80
+ const pathBinding = path.scope.getBinding(path.node.name);
81
+ if (!pathBinding) {
82
+ // It's not a binding, so it's not a tag
83
+ return [null, null, null];
84
+ }
85
+ const tagResolver = options.tagResolver ?? (() => null);
86
+ // FIXME: can be simplified
87
+ const relatedImports = imports
88
+ .map((i) => {
89
+ const { local } = i;
90
+ if (local === path) {
91
+ return [i, null];
92
+ }
93
+ if (!local.isIdentifier()) {
94
+ if (path.isDescendant(local)) {
95
+ return [i, local];
96
+ }
97
+ return null;
98
+ }
99
+ const binding = local.scope.getBinding(local.node.name);
100
+ if (pathBinding === binding) {
101
+ return [i, path];
102
+ }
103
+ return null;
104
+ })
105
+ .filter(isNotNull_1.isNotNull)
106
+ .filter((i) => i[1] === null || i[1].isExpression());
107
+ if (relatedImports.length === 0) {
108
+ return [null, null, null];
109
+ }
110
+ const [Processor = null, tagSource = null, tagPath = null] = relatedImports
111
+ .map(([{ imported, source }, p]) => {
112
+ const customFile = tagResolver(source, imported);
113
+ const processor = customFile
114
+ ? getProcessorFromFile(customFile)
115
+ : getProcessorFromPackage(source, imported, filename);
116
+ return [processor, { imported, source }, p];
117
+ })
118
+ .find(([proc]) => proc) ?? [];
119
+ return Processor === null || tagSource === null || tagPath === null
120
+ ? [null, null, null]
121
+ : [Processor, tagSource, tagPath];
122
+ }
123
+ function getBuilderForIdentifier(path, imports, filename, options) {
124
+ const [Processor, tagSource, tagPath] = getProcessorForIdentifier(path, imports, filename, options);
125
+ if (!Processor || !tagSource || !tagPath) {
126
+ return null;
127
+ }
128
+ const params = [['callee', tagPath.node]];
129
+ let prev = tagPath;
130
+ let current = tagPath.parentPath;
131
+ while (current && current !== path) {
132
+ if (current?.isSequenceExpression() &&
133
+ last(current.node.expressions) === prev.node) {
134
+ prev = current;
135
+ current = current.parentPath;
136
+ // eslint-disable-next-line no-continue
137
+ continue;
138
+ }
139
+ if (current?.isCallExpression({ callee: prev.node })) {
140
+ const args = current.get('arguments');
141
+ const cookedArgs = args
142
+ .map((arg) => {
143
+ const buildError = arg.buildCodeFrameError.bind(arg);
144
+ if (!arg.isExpression()) {
145
+ throw buildError(`Unexpected type of an argument ${arg.type}`);
146
+ }
147
+ const source = (0, getSource_1.getSource)(arg);
148
+ const extracted = (0, collectTemplateDependencies_1.extractExpression)(arg, options.evaluate, imports);
149
+ return {
150
+ ...extracted,
151
+ source,
152
+ buildCodeFrameError: buildError,
153
+ };
154
+ })
155
+ .filter(isNotNull_1.isNotNull);
156
+ params.push(['call', ...cookedArgs]);
157
+ prev = current;
158
+ current = current.parentPath;
159
+ // eslint-disable-next-line no-continue
160
+ continue;
161
+ }
162
+ if (current?.isMemberExpression({ object: prev.node })) {
163
+ const property = current.get('property');
164
+ if (property.isIdentifier() && !current.node.computed) {
165
+ params.push(['member', property.node.name]);
166
+ }
167
+ else if (property.isStringLiteral()) {
168
+ params.push(['member', property.node.value]);
169
+ }
170
+ else {
171
+ throw property.buildCodeFrameError(`Unexpected type of a property`);
172
+ }
173
+ prev = current;
174
+ current = current.parentPath;
175
+ // eslint-disable-next-line no-continue
176
+ continue;
177
+ }
178
+ if (current?.isTaggedTemplateExpression({ tag: prev.node })) {
179
+ const [quasis, expressionValues] = (0, collectTemplateDependencies_1.collectTemplateDependencies)(current, options.evaluate);
180
+ params.push(['template', zip(quasis, expressionValues)]);
181
+ prev = current;
182
+ current = current.parentPath;
183
+ // eslint-disable-next-line no-continue
184
+ continue;
185
+ }
186
+ break;
187
+ }
188
+ const replacer = (replacement, isPure) => {
189
+ (0, scopeHelpers_1.mutate)(prev, (p) => {
190
+ p.replaceWith(replacement);
191
+ if (isPure) {
192
+ p.addComment('leading', '#__PURE__');
193
+ }
194
+ });
195
+ };
196
+ const astService = {
197
+ ...core_1.types,
198
+ addDefaultImport: (importedSource, nameHint) => (0, helper_module_imports_1.addDefault)(path, importedSource, { nameHint }),
199
+ addNamedImport: (name, importedSource, nameHint = name) => (0, helper_module_imports_1.addNamed)(path, name, importedSource, { nameHint }),
200
+ };
201
+ return (...args) => new Processor(params, tagSource, astService, tagPath.node.loc ?? null, replacer, ...args);
202
+ }
203
+ function getDisplayName(path, idx, filename) {
204
+ let displayName;
205
+ const parent = path.findParent((p) => p.isObjectProperty() ||
206
+ p.isJSXOpeningElement() ||
207
+ p.isVariableDeclarator());
208
+ if (parent) {
209
+ if (parent.isObjectProperty()) {
210
+ if ('name' in parent.node.key) {
211
+ displayName = parent.node.key.name;
212
+ }
213
+ else if ('value' in parent.node.key) {
214
+ displayName = parent.node.key.value.toString();
215
+ }
216
+ else {
217
+ const keyPath = parent.get('key');
218
+ displayName = (0, getSource_1.getSource)(keyPath);
219
+ }
220
+ }
221
+ else if (parent.isJSXOpeningElement()) {
222
+ const name = parent.get('name');
223
+ if (name.isJSXIdentifier()) {
224
+ displayName = name.node.name;
225
+ }
226
+ }
227
+ else if (parent.isVariableDeclarator()) {
228
+ const id = parent.get('id');
229
+ if (id.isIdentifier()) {
230
+ displayName = id.node.name;
231
+ }
232
+ }
233
+ }
234
+ if (!displayName) {
235
+ // Try to derive the path from the filename
236
+ displayName = (0, path_1.basename)(filename ?? 'unknown');
237
+ if (filename && /^index\.[a-z\d]+$/.test(displayName)) {
238
+ // If the file name is 'index', better to get name from parent folder
239
+ displayName = (0, path_1.basename)((0, path_1.dirname)(filename));
240
+ }
241
+ // Remove the file extension
242
+ displayName = displayName.replace(/\.[a-z\d]+$/, '');
243
+ if (displayName) {
244
+ displayName += idx;
245
+ }
246
+ else {
247
+ throw new Error("Couldn't determine a name for the component. Ensure that it's either:\n" +
248
+ '- Assigned to a variable\n' +
249
+ '- Is an object property\n' +
250
+ '- Is a prop in a JSX element\n');
251
+ }
252
+ }
253
+ return displayName;
254
+ }
255
+ function isTagReferenced(path) {
256
+ // Check if the variable is referenced anywhere for basic DCE
257
+ // Only works when it's assigned to a variable
258
+ let isReferenced = true;
259
+ const parent = path.findParent((p) => p.isObjectProperty() ||
260
+ p.isJSXOpeningElement() ||
261
+ p.isVariableDeclarator());
262
+ if (parent) {
263
+ if (parent.isVariableDeclarator()) {
264
+ const id = parent.get('id');
265
+ // FIXME: replace with id.isReferencedIdentifier()
266
+ if (id.isIdentifier()) {
267
+ const { referencePaths } = path.scope.getBinding(id.node.name) || {
268
+ referencePaths: [],
269
+ };
270
+ isReferenced = referencePaths.length !== 0;
271
+ }
272
+ }
273
+ }
274
+ return isReferenced;
275
+ }
276
+ const counters = new WeakMap();
277
+ const getNextIndex = (state) => {
278
+ const counter = counters.get(state) ?? 0;
279
+ counters.set(state, counter + 1);
280
+ return counter;
281
+ };
282
+ function getTagProcessor(path, fileContext, options) {
283
+ const cache = (0, traversalCache_1.getTraversalCache)(path, 'getTagProcessor');
284
+ if (!cache.has(path.node)) {
285
+ const root = path.scope.getProgramParent().path;
286
+ const { imports } = (0, collectExportsAndImports_1.collectExportsAndImports)(root);
287
+ try {
288
+ const builder = getBuilderForIdentifier(path, imports.filter(collectExportsAndImports_1.explicitImport), fileContext.filename, options);
289
+ if (builder) {
290
+ // Increment the index of the style we're processing
291
+ // This is used for slug generation to prevent collision
292
+ // Also used for display name if it couldn't be determined
293
+ const idx = getNextIndex(fileContext);
294
+ const displayName = getDisplayName(path, idx, fileContext.filename);
295
+ const processor = builder(displayName, isTagReferenced(path), idx, options, fileContext);
296
+ cache.set(path.node, processor);
297
+ }
298
+ else {
299
+ cache.set(path.node, null);
300
+ }
301
+ }
302
+ catch (e) {
303
+ if (e === processor_utils_1.BaseProcessor.SKIP) {
304
+ cache.set(path.node, null);
305
+ return null;
306
+ }
307
+ if (e instanceof Error) {
308
+ throw buildCodeFrameError(path, e.message);
309
+ }
310
+ throw e;
311
+ }
312
+ }
313
+ return cache.get(path.node) ?? null;
314
+ }
315
+ exports.getTagProcessor = getTagProcessor;
@@ -0,0 +1,5 @@
1
+ import type { Node } from '@babel/types';
2
+ export type VisitorKeys<T extends Node> = {
3
+ [K in keyof T]: Exclude<T[K], undefined> extends Node | Node[] | null ? K : never;
4
+ }[keyof T] & string;
5
+ export declare function getVisitorKeys<TNode extends Node>(node: TNode): VisitorKeys<TNode>[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVisitorKeys = void 0;
4
+ const core_1 = require("@babel/core");
5
+ function getVisitorKeys(node) {
6
+ return core_1.types.VISITOR_KEYS[node.type];
7
+ }
8
+ exports.getVisitorKeys = getVisitorKeys;
@@ -0,0 +1,4 @@
1
+ import type { Value } from '@wyw-in-js/processor-utils';
2
+ export default function hasLinariaPreval(exports: unknown): exports is {
3
+ __linariaPreval: Record<string, () => Value> | null | undefined;
4
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function hasLinariaPreval(exports) {
4
+ if (!exports || typeof exports !== 'object') {
5
+ return false;
6
+ }
7
+ return '__linariaPreval' in exports;
8
+ }
9
+ exports.default = hasLinariaPreval;
@@ -0,0 +1,6 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ /**
3
+ * Checks that specified Identifier is a global `exports` or `module.exports`
4
+ * @param node
5
+ */
6
+ export declare function isExports(node: NodePath | null | undefined): boolean;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isExports = void 0;
4
+ const isGlobal_1 = require("./isGlobal");
5
+ /**
6
+ * Checks that specified Identifier is a global `exports` or `module.exports`
7
+ * @param node
8
+ */
9
+ function isExports(node) {
10
+ if (node?.isIdentifier({ name: 'exports' })) {
11
+ return (0, isGlobal_1.isGlobal)(node, 'exports');
12
+ }
13
+ if (node?.isMemberExpression() &&
14
+ node.get('object').isIdentifier({ name: 'module' }) &&
15
+ node.get('property').isIdentifier({ name: 'exports' })) {
16
+ return (0, isGlobal_1.isGlobal)(node, 'module');
17
+ }
18
+ return false;
19
+ }
20
+ exports.isExports = isExports;
@@ -0,0 +1,2 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ export declare const isGlobal: (node: NodePath, name: string) => boolean;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isGlobal = void 0;
4
+ const getScope_1 = require("./getScope");
5
+ const isGlobal = (node, name) => {
6
+ const scope = (0, getScope_1.getScope)(node);
7
+ return scope.getBinding(name) === undefined && scope.hasGlobal(name);
8
+ };
9
+ exports.isGlobal = isGlobal;
@@ -0,0 +1,2 @@
1
+ import type { Node } from '@babel/types';
2
+ export declare const isNode: (obj: unknown) => obj is Node;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNode = void 0;
4
+ const isNode = (obj) => typeof obj === 'object' &&
5
+ obj !== null &&
6
+ obj?.type !== undefined;
7
+ exports.isNode = isNode;
@@ -0,0 +1,3 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ import type { Node } from '@babel/types';
3
+ export declare function isNodePath<T extends Node>(obj: NodePath<T> | T): obj is NodePath<T>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNodePath = void 0;
4
+ function isNodePath(obj) {
5
+ return 'node' in obj && obj?.node !== undefined;
6
+ }
7
+ exports.isNodePath = isNodePath;
@@ -0,0 +1 @@
1
+ export declare function isNotNull<T>(x: T | null): x is T;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNotNull = void 0;
4
+ function isNotNull(x) {
5
+ return x !== null;
6
+ }
7
+ exports.isNotNull = isNotNull;
@@ -0,0 +1,5 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ /**
3
+ * Checks if a given path has been removed from the AST.
4
+ */
5
+ export declare function isRemoved(path: NodePath): boolean;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRemoved = void 0;
4
+ /**
5
+ * Checks if a given path has been removed from the AST.
6
+ */
7
+ function isRemoved(path) {
8
+ // Check if the input path has already been removed
9
+ if (path.removed) {
10
+ return true;
11
+ }
12
+ // Check if any of the parent paths have been removed
13
+ let currentPath = path;
14
+ while (currentPath) {
15
+ const parent = currentPath.parentPath;
16
+ if (parent) {
17
+ // If the parent path has been removed, return true
18
+ if (parent.removed || parent.node === null) {
19
+ return true;
20
+ }
21
+ const { listKey, key, node } = currentPath;
22
+ if (listKey) {
23
+ // If the current path is part of a list and the current node
24
+ // is not presented in this list, return true
25
+ const found = parent.get(listKey).find((p) => p.node === node);
26
+ if (!found) {
27
+ return true;
28
+ }
29
+ }
30
+ // If the current path is not part of a list and its node is not the same
31
+ // as the node in the parent object at the same key, return true
32
+ else if (parent.get(key).node !== node) {
33
+ return true;
34
+ }
35
+ }
36
+ // Set the current path to its parent path and continue the loop
37
+ currentPath = parent;
38
+ }
39
+ // If the function has not returned true by this point, return false
40
+ return false;
41
+ }
42
+ exports.isRemoved = isRemoved;
@@ -0,0 +1,6 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ /**
3
+ * Checks that specified Identifier is a global `require`
4
+ * @param id
5
+ */
6
+ export declare function isRequire(id: NodePath | null | undefined): boolean;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRequire = void 0;
4
+ const isGlobal_1 = require("./isGlobal");
5
+ /**
6
+ * Checks that specified Identifier is a global `require`
7
+ * @param id
8
+ */
9
+ function isRequire(id) {
10
+ if (!id?.isIdentifier() || id.node.name !== 'require') {
11
+ return false;
12
+ }
13
+ return (0, isGlobal_1.isGlobal)(id, 'require');
14
+ }
15
+ exports.isRequire = isRequire;
@@ -0,0 +1,2 @@
1
+ import type { Serializable } from '../types';
2
+ export declare function isSerializable(o: unknown): o is Serializable;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSerializable = void 0;
4
+ const shared_1 = require("@wyw-in-js/shared");
5
+ function isSerializable(o) {
6
+ if (Array.isArray(o)) {
7
+ return o.every(isSerializable);
8
+ }
9
+ if (o === null)
10
+ return true;
11
+ if ((0, shared_1.isBoxedPrimitive)(o))
12
+ return true;
13
+ if (typeof o === 'object') {
14
+ return Object.values(o).every(isSerializable);
15
+ }
16
+ return (typeof o === 'string' || typeof o === 'number' || typeof o === 'boolean');
17
+ }
18
+ exports.isSerializable = isSerializable;
@@ -0,0 +1,5 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ import type { Node } from '@babel/types';
3
+ export declare const isTypedNode: <T extends NodePath['type']>(type: T) => (p: NodePath) => p is NodePath<Extract<Node, {
4
+ type: T;
5
+ }>>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTypedNode = void 0;
4
+ const isTypedNode = (type) => {
5
+ return (p) => {
6
+ return p.type === type;
7
+ };
8
+ };
9
+ exports.isTypedNode = isTypedNode;
@@ -0,0 +1,3 @@
1
+ import type { NodePath } from '@babel/core';
2
+ import type { CallExpression } from '@babel/types';
3
+ export declare function isUnnecessaryReactCall(path: NodePath<CallExpression>): boolean;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnnecessaryReactCall = void 0;
4
+ const collectExportsAndImports_1 = require("./collectExportsAndImports");
5
+ const getScope_1 = require("./getScope");
6
+ function getCallee(p) {
7
+ const callee = p.get('callee');
8
+ if (callee.isSequenceExpression()) {
9
+ const expressions = callee.get('expressions');
10
+ if (expressions.length === 2 &&
11
+ expressions[0].isNumericLiteral({ value: 0 })) {
12
+ return expressions[1];
13
+ }
14
+ return callee;
15
+ }
16
+ return callee;
17
+ }
18
+ const JSXRuntimeSource = 'react/jsx-runtime';
19
+ function isJSXRuntime(p, imports) {
20
+ const jsxRuntime = imports.find((i) => i.source === JSXRuntimeSource);
21
+ const jsxRuntimeName = jsxRuntime?.local?.isIdentifier() && jsxRuntime?.local?.node?.name;
22
+ if (jsxRuntime) {
23
+ const callee = getCallee(p);
24
+ if (jsxRuntimeName && callee.isIdentifier({ name: jsxRuntimeName })) {
25
+ return true;
26
+ }
27
+ if (callee.isMemberExpression() &&
28
+ imports.find((i) => i.source === JSXRuntimeSource && i.local === callee)) {
29
+ return true;
30
+ }
31
+ }
32
+ return false;
33
+ }
34
+ function isHookOrCreateElement(name) {
35
+ return name === 'createElement' || /use[A-Z]/.test(name);
36
+ }
37
+ function isClassicReactRuntime(p, imports) {
38
+ const reactImports = imports.filter((i) => i.source === 'react' &&
39
+ (i.imported === 'default' ||
40
+ (i.imported && isHookOrCreateElement(i.imported))));
41
+ if (reactImports.length === 0)
42
+ return false;
43
+ const callee = getCallee(p);
44
+ if (callee.isIdentifier() && isHookOrCreateElement(callee.node.name)) {
45
+ const bindingPath = (0, getScope_1.getScope)(callee).getBinding(callee.node.name)?.path;
46
+ return reactImports.some((i) => bindingPath?.isAncestor(i.local));
47
+ }
48
+ if (callee.isMemberExpression()) {
49
+ if (reactImports.some((i) => i.local === callee)) {
50
+ // It's React.createElement in CJS
51
+ return true;
52
+ }
53
+ const object = callee.get('object');
54
+ const property = callee.get('property');
55
+ const defaultImport = reactImports.find((i) => i.imported === 'default');
56
+ if (!defaultImport ||
57
+ !defaultImport.local.isIdentifier() ||
58
+ !property.isIdentifier() ||
59
+ !isHookOrCreateElement(property.node.name) ||
60
+ !object.isIdentifier({ name: defaultImport.local.node.name })) {
61
+ return false;
62
+ }
63
+ const bindingPath = (0, getScope_1.getScope)(object).getBinding(object.node.name)?.path;
64
+ return bindingPath?.isAncestor(defaultImport.local) ?? false;
65
+ }
66
+ return false;
67
+ }
68
+ function isUnnecessaryReactCall(path) {
69
+ const programPath = path.findParent((p) => p.isProgram());
70
+ if (!programPath) {
71
+ return false;
72
+ }
73
+ const { imports } = (0, collectExportsAndImports_1.collectExportsAndImports)(programPath);
74
+ return isJSXRuntime(path, imports) || isClassicReactRuntime(path, imports);
75
+ }
76
+ exports.isUnnecessaryReactCall = isUnnecessaryReactCall;
@@ -0,0 +1 @@
1
+ export declare const peek: <T>(stack: T[], offset?: number) => T;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.peek = void 0;
4
+ const peek = (stack, offset = 1) => stack[stack.length - offset];
5
+ exports.peek = peek;
@@ -0,0 +1,5 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ import type { Identifier } from '@babel/types';
3
+ import type { BaseProcessor, IFileContext } from '@wyw-in-js/processor-utils';
4
+ import type { StrictOptions } from '@wyw-in-js/shared';
5
+ export declare const processTemplateExpression: (p: NodePath<Identifier>, fileContext: IFileContext, options: Pick<StrictOptions, 'classNameSlug' | 'displayName' | 'evaluate' | 'tagResolver'>, emit: (processor: BaseProcessor) => void) => void;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processTemplateExpression = void 0;
4
+ const getTagProcessor_1 = require("./getTagProcessor");
5
+ const processed = new WeakSet();
6
+ const processTemplateExpression = (p, fileContext, options, emit) => {
7
+ if (p.parentPath.isExportSpecifier())
8
+ return;
9
+ if (processed.has(p.node))
10
+ return;
11
+ const tagProcessor = (0, getTagProcessor_1.getTagProcessor)(p, fileContext, options);
12
+ processed.add(p.node);
13
+ if (tagProcessor === null)
14
+ return;
15
+ emit(tagProcessor);
16
+ };
17
+ exports.processTemplateExpression = processTemplateExpression;
@@ -0,0 +1,3 @@
1
+ import type { NodePath } from '@babel/core';
2
+ import type { Program } from '@babel/types';
3
+ export declare const removeDangerousCode: (programPath: NodePath<Program>) => void;