@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,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.asyncResolveImports = exports.syncResolveImports = void 0;
4
+ /* eslint-disable no-continue,no-await-in-loop,require-yield */
5
+ const getFileIdx_1 = require("../../utils/getFileIdx");
6
+ const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
7
+ function emitDependency(emitter, entrypoint, imports) {
8
+ emitter.single({
9
+ type: 'dependency',
10
+ file: entrypoint.name,
11
+ only: entrypoint.only,
12
+ imports: imports.map(({ resolved, only }) => ({
13
+ from: resolved,
14
+ what: only,
15
+ })),
16
+ fileIdx: (0, getFileIdx_1.getFileIdx)(entrypoint.name),
17
+ });
18
+ }
19
+ function filterUnresolved(entrypoint, resolvedImports) {
20
+ return resolvedImports.filter((i) => {
21
+ if (i.resolved === null) {
22
+ entrypoint.log(`[resolve] ✅ %s in %s is ignored`, i.source, entrypoint.name);
23
+ return false;
24
+ }
25
+ return true;
26
+ });
27
+ }
28
+ /**
29
+ * Synchronously resolves specified imports with a provided resolver.
30
+ */
31
+ function* syncResolveImports(resolve) {
32
+ const { data: { imports }, entrypoint, services: { eventEmitter }, } = this;
33
+ const listOfImports = Array.from(imports?.entries() ?? []);
34
+ const { log } = entrypoint;
35
+ if (listOfImports.length === 0) {
36
+ emitDependency(eventEmitter, entrypoint, []);
37
+ log('%s has no imports', entrypoint.name);
38
+ return [];
39
+ }
40
+ const resolvedImports = listOfImports.map(([source, only]) => {
41
+ let resolved = null;
42
+ try {
43
+ resolved = resolve(source, entrypoint.name, (0, Entrypoint_helpers_1.getStack)(entrypoint));
44
+ log('[sync-resolve] ✅ %s -> %s (only: %o)', source, resolved, only);
45
+ }
46
+ catch (err) {
47
+ log('[sync-resolve] ❌ cannot resolve %s: %O', source, err);
48
+ }
49
+ return {
50
+ source,
51
+ only,
52
+ resolved,
53
+ };
54
+ });
55
+ const filteredImports = filterUnresolved(entrypoint, resolvedImports);
56
+ emitDependency(eventEmitter, entrypoint, filteredImports);
57
+ return filteredImports;
58
+ }
59
+ exports.syncResolveImports = syncResolveImports;
60
+ /**
61
+ * Asynchronously resolves specified imports with a provided resolver.
62
+ */
63
+ async function* asyncResolveImports(resolve) {
64
+ const { data: { imports }, entrypoint, services: { eventEmitter }, } = this;
65
+ const listOfImports = Array.from(imports?.entries() ?? []);
66
+ const { log } = entrypoint;
67
+ if (listOfImports.length === 0) {
68
+ emitDependency(eventEmitter, entrypoint, []);
69
+ log('%s has no imports', entrypoint.name);
70
+ return [];
71
+ }
72
+ log('resolving %d imports', listOfImports.length);
73
+ const getResolveTask = async (source, only) => {
74
+ let resolved = null;
75
+ try {
76
+ resolved = await resolve(source, entrypoint.name, (0, Entrypoint_helpers_1.getStack)(entrypoint));
77
+ }
78
+ catch (err) {
79
+ log('[async-resolve] ❌ cannot resolve %s in %s: %O', source, entrypoint.name, err);
80
+ }
81
+ if (resolved !== null) {
82
+ log('[async-resolve] ✅ %s (%o) in %s -> %s', source, only, entrypoint.name, resolved);
83
+ }
84
+ return {
85
+ source,
86
+ only,
87
+ resolved,
88
+ };
89
+ };
90
+ const resolvedImports = await Promise.all(listOfImports.map(([source, importsOnly]) => {
91
+ const cached = entrypoint.getDependency(source);
92
+ if (cached) {
93
+ return {
94
+ source,
95
+ only: (0, Entrypoint_helpers_1.mergeOnly)(cached.only, importsOnly),
96
+ resolved: cached.resolved,
97
+ };
98
+ }
99
+ const task = entrypoint.getResolveTask(source);
100
+ if (task) {
101
+ // If we have cached task, we need to merge only…
102
+ const newTask = task.then((res) => {
103
+ if ((0, Entrypoint_helpers_1.isSuperSet)(res.only, importsOnly)) {
104
+ return res;
105
+ }
106
+ // Is this branch even possible?
107
+ const merged = (0, Entrypoint_helpers_1.mergeOnly)(res.only, importsOnly);
108
+ log('merging imports %o and %o: %o', importsOnly, res.only, merged);
109
+ return { ...res, only: merged };
110
+ });
111
+ // … and update the cache
112
+ entrypoint.addResolveTask(source, newTask);
113
+ return newTask;
114
+ }
115
+ const resolveTask = getResolveTask(source, importsOnly);
116
+ entrypoint.addResolveTask(source, resolveTask);
117
+ return resolveTask;
118
+ }));
119
+ log('resolved %d imports', resolvedImports.length);
120
+ const filteredImports = filterUnresolved(entrypoint, resolvedImports);
121
+ emitDependency(eventEmitter, entrypoint, filteredImports);
122
+ return filteredImports;
123
+ }
124
+ exports.asyncResolveImports = asyncResolveImports;
@@ -0,0 +1,17 @@
1
+ import type { File } from '@babel/types';
2
+ import type { WYWTransformMetadata } from '../../utils/TransformMetadata';
3
+ import type { Entrypoint } from '../Entrypoint';
4
+ import type { ITransformAction, Services, SyncScenarioForAction } from '../types';
5
+ type PrepareCodeFn = (services: Services, item: Entrypoint, originalAst: File) => [
6
+ code: string,
7
+ imports: Map<string, string[]> | null,
8
+ metadata: WYWTransformMetadata | null
9
+ ];
10
+ export declare const prepareCode: (services: Services, item: Entrypoint, originalAst: File) => [code: string, imports: Map<string, string[]> | null, metadata: WYWTransformMetadata | null];
11
+ export declare function internalTransform(this: ITransformAction, prepareFn: PrepareCodeFn): SyncScenarioForAction<ITransformAction>;
12
+ /**
13
+ * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
14
+ * Emits resolveImports and processImports events.
15
+ */
16
+ export declare function transform(this: ITransformAction): SyncScenarioForAction<ITransformAction>;
17
+ export {};
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transform = exports.internalTransform = exports.prepareCode = void 0;
4
+ const buildOptions_1 = require("../../options/buildOptions");
5
+ const TransformMetadata_1 = require("../../utils/TransformMetadata");
6
+ const getPluginKey_1 = require("../../utils/getPluginKey");
7
+ const EMPTY_FILE = '=== empty file ===';
8
+ const hasKeyInList = (plugin, list) => {
9
+ const pluginKey = (0, getPluginKey_1.getPluginKey)(plugin);
10
+ return pluginKey ? list.some((i) => pluginKey.includes(i)) : false;
11
+ };
12
+ function runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter) {
13
+ const preShakePlugins = evalConfig.plugins?.filter((i) => hasKeyInList(i, pluginOptions.highPriorityPlugins)) ?? [];
14
+ const plugins = [
15
+ ...preShakePlugins,
16
+ [
17
+ require.resolve('../../plugins/preeval'),
18
+ { ...pluginOptions, eventEmitter },
19
+ ],
20
+ [require.resolve('../../plugins/dynamic-import')],
21
+ ...(evalConfig.plugins ?? []).filter((i) => !hasKeyInList(i, pluginOptions.highPriorityPlugins)),
22
+ ];
23
+ const transformConfig = (0, buildOptions_1.buildOptions)({
24
+ ...evalConfig,
25
+ envName: 'linaria',
26
+ plugins,
27
+ });
28
+ const result = babel.transformFromAstSync(originalAst, code, transformConfig);
29
+ if (!result || !result.ast?.program) {
30
+ throw new Error('Babel transform failed');
31
+ }
32
+ return result;
33
+ }
34
+ const prepareCode = (services, item, originalAst) => {
35
+ const { log, only, loadedAndParsed } = item;
36
+ if (loadedAndParsed.evaluator === 'ignored') {
37
+ log('is ignored');
38
+ return [loadedAndParsed.code ?? '', null, null];
39
+ }
40
+ const { code, evalConfig, evaluator } = loadedAndParsed;
41
+ const { options, babel, eventEmitter } = services;
42
+ const { pluginOptions } = options;
43
+ const preevalStageResult = eventEmitter.perf('transform:preeval', () => runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, eventEmitter));
44
+ const transformMetadata = (0, TransformMetadata_1.getTransformMetadata)(preevalStageResult.metadata);
45
+ if (only.length === 1 &&
46
+ only[0] === '__linariaPreval' &&
47
+ !transformMetadata) {
48
+ log('[evaluator:end] no metadata');
49
+ return [preevalStageResult.code, null, null];
50
+ }
51
+ log('[preeval] metadata %O', transformMetadata);
52
+ log('[evaluator:start] using %s', evaluator.name);
53
+ const evaluatorConfig = {
54
+ onlyExports: only,
55
+ highPriorityPlugins: pluginOptions.highPriorityPlugins,
56
+ features: pluginOptions.features,
57
+ };
58
+ const [, transformedCode, imports] = eventEmitter.perf('transform:evaluator', () => evaluator(evalConfig, preevalStageResult.ast, preevalStageResult.code, evaluatorConfig, babel));
59
+ log('[evaluator:end]');
60
+ return [transformedCode, imports, transformMetadata ?? null];
61
+ };
62
+ exports.prepareCode = prepareCode;
63
+ function* internalTransform(prepareFn) {
64
+ const { only, loadedAndParsed, log } = this.entrypoint;
65
+ if (loadedAndParsed.evaluator === 'ignored') {
66
+ log('is ignored');
67
+ return {
68
+ code: loadedAndParsed.code ?? '',
69
+ metadata: null,
70
+ };
71
+ }
72
+ log('>> (%o)', only);
73
+ const [preparedCode, imports, metadata] = prepareFn(this.services, this.entrypoint, loadedAndParsed.ast);
74
+ if (loadedAndParsed.code === preparedCode) {
75
+ log('<< (%o)\n === no changes ===', only);
76
+ }
77
+ else {
78
+ log('<< (%o)', only);
79
+ log.extend('source')('%s', preparedCode || EMPTY_FILE);
80
+ }
81
+ if (preparedCode === '') {
82
+ log('is skipped');
83
+ return {
84
+ code: loadedAndParsed.code ?? '',
85
+ metadata: null,
86
+ };
87
+ }
88
+ if (imports !== null && imports.size > 0) {
89
+ const resolvedImports = yield* this.getNext('resolveImports', this.entrypoint, {
90
+ imports,
91
+ });
92
+ if (resolvedImports.length !== 0) {
93
+ yield [
94
+ 'processImports',
95
+ this.entrypoint,
96
+ {
97
+ resolved: resolvedImports,
98
+ },
99
+ ];
100
+ }
101
+ }
102
+ return {
103
+ code: preparedCode,
104
+ metadata,
105
+ };
106
+ }
107
+ exports.internalTransform = internalTransform;
108
+ /**
109
+ * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
110
+ * Emits resolveImports and processImports events.
111
+ */
112
+ function transform() {
113
+ return internalTransform.call(this, exports.prepareCode);
114
+ }
115
+ exports.transform = transform;
@@ -0,0 +1,7 @@
1
+ import type { IWorkflowAction, SyncScenarioForAction } from '../types';
2
+ /**
3
+ * The entry point for file processing. Sequentially calls `processEntrypoint`,
4
+ * `evalFile`, `collect`, and `extract`. Returns the result of transforming
5
+ * the source code as well as all artifacts obtained from code execution.
6
+ */
7
+ export declare function workflow(this: IWorkflowAction): SyncScenarioForAction<IWorkflowAction>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.workflow = void 0;
4
+ const AbortError_1 = require("../actions/AbortError");
5
+ /**
6
+ * The entry point for file processing. Sequentially calls `processEntrypoint`,
7
+ * `evalFile`, `collect`, and `extract`. Returns the result of transforming
8
+ * the source code as well as all artifacts obtained from code execution.
9
+ */
10
+ function* workflow() {
11
+ const { cache, options } = this.services;
12
+ const { entrypoint } = this;
13
+ if (entrypoint.ignored) {
14
+ return {
15
+ code: entrypoint.loadedAndParsed.code ?? '',
16
+ sourceMap: options.inputSourceMap,
17
+ };
18
+ }
19
+ try {
20
+ yield* this.getNext('processEntrypoint', entrypoint, undefined, null);
21
+ entrypoint.assertNotSuperseded();
22
+ }
23
+ catch (e) {
24
+ if ((0, AbortError_1.isAborted)(e) && entrypoint.supersededWith) {
25
+ entrypoint.log('workflow aborted, schedule the next attempt');
26
+ return yield* this.getNext('workflow', entrypoint.supersededWith, undefined, null);
27
+ }
28
+ throw e;
29
+ }
30
+ const originalCode = entrypoint.loadedAndParsed.code ?? '';
31
+ // File is ignored or does not contain any tags. Return original code.
32
+ if (!entrypoint.hasLinariaMetadata()) {
33
+ if (entrypoint.generation === 1) {
34
+ // 1st generation here means that it's __linariaPreval entrypoint
35
+ // without __linariaPreval, so we don't need it cached
36
+ cache.delete('entrypoints', entrypoint.name);
37
+ }
38
+ return {
39
+ code: originalCode,
40
+ sourceMap: options.inputSourceMap,
41
+ };
42
+ }
43
+ // *** 2nd stage ***
44
+ const evalStageResult = yield* this.getNext('evalFile', entrypoint, undefined, null);
45
+ if (evalStageResult === null) {
46
+ return {
47
+ code: originalCode,
48
+ sourceMap: options.inputSourceMap,
49
+ };
50
+ }
51
+ const [valueCache, dependencies] = evalStageResult;
52
+ // *** 3rd stage ***
53
+ const collectStageResult = yield* this.getNext('collect', entrypoint, {
54
+ valueCache,
55
+ }, null);
56
+ if (!collectStageResult.metadata) {
57
+ return {
58
+ code: collectStageResult.code,
59
+ sourceMap: collectStageResult.map,
60
+ };
61
+ }
62
+ // *** 4th stage
63
+ const extractStageResult = yield* this.getNext('extract', entrypoint, {
64
+ processors: collectStageResult.metadata.processors,
65
+ }, null);
66
+ return {
67
+ ...extractStageResult,
68
+ code: collectStageResult.code ?? '',
69
+ dependencies,
70
+ replacements: [
71
+ ...extractStageResult.replacements,
72
+ ...collectStageResult.metadata.replacements,
73
+ ],
74
+ sourceMap: collectStageResult.map,
75
+ };
76
+ }
77
+ exports.workflow = workflow;
@@ -0,0 +1,6 @@
1
+ import type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';
2
+ import type { PluginOptions } from '../../types';
3
+ export type PartialOptions = Partial<Omit<PluginOptions, 'features'>> & {
4
+ features?: Partial<FeatureFlags>;
5
+ };
6
+ export declare function loadLinariaOptions(overrides?: PartialOptions): StrictOptions;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadLinariaOptions = void 0;
7
+ const cosmiconfig_1 = require("cosmiconfig");
8
+ const shaker_1 = __importDefault(require("../../shaker"));
9
+ const searchPlaces = [
10
+ `.linariarc`,
11
+ `.linariarc.json`,
12
+ `.linariarc.yaml`,
13
+ `.linariarc.yml`,
14
+ `.linariarc.js`,
15
+ `.linariarc.cjs`,
16
+ `.config/linariarc`,
17
+ `.config/linariarc.json`,
18
+ `.config/linariarc.yaml`,
19
+ `.config/linariarc.yml`,
20
+ `.config/linariarc.js`,
21
+ `.config/linariarc.cjs`,
22
+ `linaria.config.js`,
23
+ `linaria.config.cjs`,
24
+ ];
25
+ const explorerSync = (0, cosmiconfig_1.cosmiconfigSync)('linaria', { searchPlaces });
26
+ const cache = new WeakMap();
27
+ const defaultOverrides = {};
28
+ const nodeModulesRegExp = /[\\/]node_modules[\\/]/;
29
+ function loadLinariaOptions(overrides = defaultOverrides) {
30
+ if (cache.has(overrides)) {
31
+ return cache.get(overrides);
32
+ }
33
+ const { configFile, ignore, rules, babelOptions = {}, ...rest } = overrides;
34
+ const result =
35
+ // eslint-disable-next-line no-nested-ternary
36
+ configFile === false
37
+ ? undefined
38
+ : configFile !== undefined
39
+ ? explorerSync.load(configFile)
40
+ : explorerSync.search();
41
+ const defaultFeatures = {
42
+ dangerousCodeRemover: true,
43
+ globalCache: true,
44
+ happyDOM: true,
45
+ softErrors: false,
46
+ useBabelConfigs: true,
47
+ };
48
+ const options = {
49
+ displayName: false,
50
+ evaluate: true,
51
+ extensions: ['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx'],
52
+ rules: rules ?? [
53
+ {
54
+ action: shaker_1.default,
55
+ },
56
+ {
57
+ // The old `ignore` option is used as a default value for `ignore` rule.
58
+ test: ignore ?? nodeModulesRegExp,
59
+ action: 'ignore',
60
+ },
61
+ {
62
+ // Do not ignore ES-modules
63
+ test: (filename, code) => {
64
+ if (!nodeModulesRegExp.test(filename)) {
65
+ return false;
66
+ }
67
+ // If a file contains `export` or `import` keywords, we assume it's an ES-module
68
+ return /(?:^|\*\/|;)\s*(?:export|import)\s/m.test(code);
69
+ },
70
+ action: shaker_1.default,
71
+ },
72
+ ],
73
+ babelOptions,
74
+ highPriorityPlugins: ['module-resolver'],
75
+ ...(result ? result.config : {}),
76
+ ...rest,
77
+ features: {
78
+ ...defaultFeatures,
79
+ ...(result ? result.config.features : {}),
80
+ ...rest.features,
81
+ },
82
+ };
83
+ cache.set(overrides, options);
84
+ return options;
85
+ }
86
+ exports.loadLinariaOptions = loadLinariaOptions;
@@ -0,0 +1,5 @@
1
+ import type { Services } from '../types';
2
+ type RequiredServices = 'options';
3
+ export type PartialServices = Partial<Omit<Services, RequiredServices>> & Pick<Services, RequiredServices>;
4
+ export declare const withDefaultServices: ({ babel, cache, eventEmitter, loadAndParseFn, log, options, }: PartialServices) => Services;
5
+ export {};
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.withDefaultServices = void 0;
27
+ const babelCore = __importStar(require("@babel/core"));
28
+ const cache_1 = require("../../cache");
29
+ const EventEmitter_1 = require("../../utils/EventEmitter");
30
+ const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
31
+ const rootLog_1 = require("../rootLog");
32
+ const withDefaultServices = ({ babel = babelCore, cache = new cache_1.TransformCacheCollection(), eventEmitter = EventEmitter_1.EventEmitter.dummy, loadAndParseFn = Entrypoint_helpers_1.loadAndParse, log = rootLog_1.rootLog, options, }) => ({
33
+ babel,
34
+ cache,
35
+ eventEmitter,
36
+ loadAndParseFn,
37
+ log,
38
+ options,
39
+ });
40
+ exports.withDefaultServices = withDefaultServices;
@@ -0,0 +1,3 @@
1
+ /// <reference types="debug" />
2
+ import type { Debugger } from '@wyw-in-js/shared';
3
+ export declare const rootLog: Debugger;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rootLog = void 0;
4
+ const shared_1 = require("@wyw-in-js/shared");
5
+ exports.rootLog = shared_1.logger.extend('transform');
@@ -0,0 +1,137 @@
1
+ /// <reference types="debug" />
2
+ import type { BabelFileResult } from '@babel/core';
3
+ import type { ValueCache } from '@wyw-in-js/processor-utils';
4
+ import type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';
5
+ import type { Core } from '../babel';
6
+ import type { TransformCacheCollection } from '../cache';
7
+ import type { Options, ITransformFileResult } from '../types';
8
+ import type { EventEmitter } from '../utils/EventEmitter';
9
+ import type { WYWTransformMetadata } from '../utils/TransformMetadata';
10
+ import type { Entrypoint } from './Entrypoint';
11
+ import type { LoadAndParseFn, IEntrypointDependency } from './Entrypoint.types';
12
+ import type { BaseAction } from './actions/BaseAction';
13
+ import type { IExtracted, IWorkflowActionLinariaResult, IWorkflowActionNonLinariaResult } from './actions/types';
14
+ export type Services = {
15
+ babel: Core;
16
+ cache: TransformCacheCollection;
17
+ eventEmitter: EventEmitter;
18
+ loadAndParseFn: LoadAndParseFn;
19
+ log: Debugger;
20
+ options: Options & {
21
+ pluginOptions: StrictOptions;
22
+ };
23
+ };
24
+ export interface IBaseNode {
25
+ type: ActionTypes;
26
+ }
27
+ export type ActionByType<TType extends ActionQueueItem['type']> = Extract<ActionQueueItem, {
28
+ type: TType;
29
+ }>;
30
+ export declare const Pending: unique symbol;
31
+ export type YieldResult = Exclude<ActionQueueItem['result'], typeof Pending>;
32
+ export type AnyIteratorResult<TMode extends 'async' | 'sync', TResult> = {
33
+ async: Promise<IteratorResult<YieldArg, TResult>>;
34
+ sync: IteratorResult<YieldArg, TResult>;
35
+ }[TMode];
36
+ export interface IBaseAction<TAction extends ActionQueueItem, TResult, TData> extends IBaseNode {
37
+ abortSignal: AbortSignal | null;
38
+ createAbortSignal: () => AbortSignal & Disposable;
39
+ data: TData;
40
+ entrypoint: Entrypoint;
41
+ getNext: GetNext;
42
+ idx: string;
43
+ result: TResult | typeof Pending;
44
+ run: <TMode extends 'async' | 'sync'>(handler: Handler<TMode, TAction>) => {
45
+ next: (arg: YieldResult) => AnyIteratorResult<TMode, TResult>;
46
+ throw(e: unknown): AnyIteratorResult<TMode, TResult>;
47
+ };
48
+ services: Services;
49
+ }
50
+ type NextParams<TType extends ActionTypes, TNextAction extends ActionByType<TType> = ActionByType<TType>> = [
51
+ type: TType,
52
+ entrypoint: Entrypoint,
53
+ data: TNextAction['data'],
54
+ abortSignal?: AbortSignal | null
55
+ ];
56
+ export type YieldArg = {
57
+ [K in ActionQueueItem['type']]: NextParams<K>;
58
+ }[ActionQueueItem['type']];
59
+ export type SyncScenarioFor<TResult> = {
60
+ [Symbol.iterator](): SyncScenarioFor<TResult>;
61
+ next(arg: YieldResult): IteratorResult<YieldArg, TResult>;
62
+ return(value: TResult): IteratorResult<YieldArg, TResult>;
63
+ throw(e: unknown): IteratorResult<YieldArg, TResult>;
64
+ };
65
+ export type AsyncScenarioFor<TResult> = {
66
+ [Symbol.asyncIterator](): AsyncScenarioFor<TResult>;
67
+ next(arg: YieldResult): Promise<IteratorResult<YieldArg, TResult>>;
68
+ return(value: TResult | PromiseLike<TResult>): Promise<IteratorResult<YieldArg, TResult>>;
69
+ throw(e: unknown): Promise<IteratorResult<YieldArg, TResult>>;
70
+ };
71
+ export type SyncScenarioForAction<TAction extends ActionQueueItem> = SyncScenarioFor<TypeOfResult<TAction>>;
72
+ export type AsyncScenarioForAction<TAction extends ActionQueueItem> = AsyncScenarioFor<TypeOfResult<TAction>>;
73
+ export type Handler<TMode extends 'async' | 'sync', TAction extends ActionQueueItem> = ((this: BaseAction<TAction>) => {
74
+ async: AsyncScenarioForAction<TAction>;
75
+ sync: SyncScenarioForAction<TAction>;
76
+ }[TMode]) & {
77
+ recover?: (e: unknown, action: BaseAction<TAction>) => YieldArg;
78
+ };
79
+ export type Handlers<TMode extends 'async' | 'sync'> = {
80
+ [TAction in ActionQueueItem as TAction['type']]: Handler<TMode, TAction>;
81
+ };
82
+ export type TypeOfResult<T extends ActionQueueItem> = Exclude<T['result'], typeof Pending>;
83
+ export type GetNext = <TType extends ActionTypes, TNextAction extends ActionByType<TType> = ActionByType<TType>>(...args: NextParams<TType, TNextAction>) => Generator<[
84
+ TType,
85
+ Entrypoint,
86
+ TNextAction['data'],
87
+ AbortSignal | null
88
+ ], TypeOfResult<TNextAction>, YieldResult>;
89
+ export interface ICollectActionResult {
90
+ ast: BabelFileResult['ast'];
91
+ code: BabelFileResult['code'];
92
+ map?: BabelFileResult['map'];
93
+ metadata?: WYWTransformMetadata | null;
94
+ }
95
+ export interface ICollectAction extends IBaseAction<ICollectAction, ICollectActionResult, {
96
+ valueCache: ValueCache;
97
+ }> {
98
+ type: 'collect';
99
+ }
100
+ export interface IEvalAction extends IBaseAction<IEvalAction, [ValueCache, string[]] | null, undefined> {
101
+ type: 'evalFile';
102
+ }
103
+ export interface IExplodeReexportsAction extends IBaseAction<IExplodeReexportsAction, void, undefined> {
104
+ type: 'explodeReexports';
105
+ }
106
+ export interface IExtractAction extends IBaseAction<IExtractAction, IExtracted, {
107
+ processors: {
108
+ artifacts: Artifact[];
109
+ }[];
110
+ }> {
111
+ type: 'extract';
112
+ }
113
+ export interface IGetExportsAction extends IBaseAction<IGetExportsAction, string[], undefined> {
114
+ type: 'getExports';
115
+ }
116
+ export interface IProcessEntrypointAction extends IBaseAction<IProcessEntrypointAction, void, undefined> {
117
+ type: 'processEntrypoint';
118
+ }
119
+ export interface IProcessImportsAction extends IBaseAction<IProcessImportsAction, void, {
120
+ resolved: IEntrypointDependency[];
121
+ }> {
122
+ type: 'processImports';
123
+ }
124
+ export interface IResolveImportsAction extends IBaseAction<IResolveImportsAction, IEntrypointDependency[], {
125
+ imports: Map<string, string[]> | null;
126
+ }> {
127
+ type: 'resolveImports';
128
+ }
129
+ export interface ITransformAction extends IBaseAction<ITransformAction, ITransformFileResult, undefined> {
130
+ type: 'transform';
131
+ }
132
+ export interface IWorkflowAction extends IBaseAction<IWorkflowAction, IWorkflowActionLinariaResult | IWorkflowActionNonLinariaResult, undefined> {
133
+ type: 'workflow';
134
+ }
135
+ export type ActionQueueItem = IEvalAction | IExplodeReexportsAction | IExtractAction | IGetExportsAction | ICollectAction | IProcessEntrypointAction | IProcessImportsAction | IResolveImportsAction | ITransformAction | IWorkflowAction;
136
+ export type ActionTypes = ActionQueueItem['type'];
137
+ export {};
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Pending = void 0;
4
+ exports.Pending = Symbol('pending');
@@ -0,0 +1,20 @@
1
+ /**
2
+ * This file exposes transform function that:
3
+ * - parse the passed code to AST
4
+ * - transforms the AST using Linaria babel preset ('./babel/index.js) and additional config defined in Linaria config file or passed to bundler configuration.
5
+ * - runs generated CSS files through default of user-defined preprocessor
6
+ * - generates source maps for CSS files
7
+ * - return transformed code (without Linaria template literals), generated CSS, source maps and babel metadata from transform step.
8
+ */
9
+ import type { PartialOptions } from './transform/helpers/loadLinariaOptions';
10
+ import type { Handlers, Services } from './transform/types';
11
+ import type { Result } from './types';
12
+ type PartialServices = Partial<Omit<Services, 'options'>> & {
13
+ options: Omit<Services['options'], 'pluginOptions'> & {
14
+ pluginOptions?: PartialOptions;
15
+ };
16
+ };
17
+ type AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;
18
+ export declare function transformSync(partialServices: PartialServices, originalCode: string, syncResolve: (what: string, importer: string, stack: string[]) => string, customHandlers?: Partial<AllHandlers<'sync'>>): Result;
19
+ export declare function transform(partialServices: PartialServices, originalCode: string, asyncResolve: (what: string, importer: string, stack: string[]) => Promise<string | null>, customHandlers?: Partial<AllHandlers<'sync'>>): Promise<Result>;
20
+ export {};