@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,128 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.transform = transform;
7
+ exports.transformSync = transformSync;
8
+ var _shared = require("@wyw-in-js/shared");
9
+ var _cache = require("./cache");
10
+ var _Entrypoint = require("./transform/Entrypoint");
11
+ var _actionRunner = require("./transform/actions/actionRunner");
12
+ var _generators = require("./transform/generators");
13
+ var _resolveImports = require("./transform/generators/resolveImports");
14
+ var _loadLinariaOptions = require("./transform/helpers/loadLinariaOptions");
15
+ var _withDefaultServices = require("./transform/helpers/withDefaultServices");
16
+ /**
17
+ * This file exposes transform function that:
18
+ * - parse the passed code to AST
19
+ * - transforms the AST using Linaria babel preset ('./babel/index.js) and additional config defined in Linaria config file or passed to bundler configuration.
20
+ * - runs generated CSS files through default of user-defined preprocessor
21
+ * - generates source maps for CSS files
22
+ * - return transformed code (without Linaria template literals), generated CSS, source maps and babel metadata from transform step.
23
+ */
24
+
25
+ function transformSync(partialServices, originalCode, syncResolve, customHandlers = {}) {
26
+ const {
27
+ options
28
+ } = partialServices;
29
+ const pluginOptions = (0, _loadLinariaOptions.loadLinariaOptions)(options.pluginOptions);
30
+ const services = (0, _withDefaultServices.withDefaultServices)({
31
+ ...partialServices,
32
+ options: {
33
+ ...options,
34
+ pluginOptions
35
+ }
36
+ });
37
+ if (!(0, _shared.isFeatureEnabled)(pluginOptions.features, 'globalCache', options.filename)) {
38
+ // If global cache is disabled, we need to create a new cache for each file
39
+ services.cache = new _cache.TransformCacheCollection();
40
+ }
41
+ const entrypoint = _Entrypoint.Entrypoint.createRoot(services, options.filename, ['__linariaPreval'], originalCode);
42
+ if (entrypoint.ignored) {
43
+ return {
44
+ code: originalCode,
45
+ sourceMap: options.inputSourceMap
46
+ };
47
+ }
48
+ const workflowAction = entrypoint.createAction('workflow', undefined);
49
+ try {
50
+ const result = (0, _actionRunner.syncActionRunner)(workflowAction, {
51
+ ..._generators.baseHandlers,
52
+ ...customHandlers,
53
+ resolveImports() {
54
+ return _resolveImports.syncResolveImports.call(this, syncResolve);
55
+ }
56
+ });
57
+ entrypoint.log('%s is ready', entrypoint.name);
58
+ return result;
59
+ } catch (err) {
60
+ entrypoint.log('Unhandled error %O', err);
61
+ if ((0, _shared.isFeatureEnabled)(pluginOptions.features, 'softErrors', options.filename)) {
62
+ // eslint-disable-next-line no-console
63
+ console.error(`Error during transform of ${entrypoint.name}:`, err);
64
+ return {
65
+ code: originalCode,
66
+ sourceMap: options.inputSourceMap
67
+ };
68
+ }
69
+ throw err;
70
+ }
71
+ }
72
+ async function transform(partialServices, originalCode, asyncResolve, customHandlers = {}) {
73
+ const {
74
+ options
75
+ } = partialServices;
76
+ const pluginOptions = (0, _loadLinariaOptions.loadLinariaOptions)(options.pluginOptions);
77
+ const services = (0, _withDefaultServices.withDefaultServices)({
78
+ ...partialServices,
79
+ options: {
80
+ ...options,
81
+ pluginOptions
82
+ }
83
+ });
84
+ if (!(0, _shared.isFeatureEnabled)(pluginOptions.features, 'globalCache', options.filename)) {
85
+ // If global cache is disabled, we need to create a new cache for each file
86
+ services.cache = new _cache.TransformCacheCollection();
87
+ }
88
+
89
+ /*
90
+ * This method can be run simultaneously for multiple files.
91
+ * A shared cache is accessible for all runs, but each run has its own queue
92
+ * to maintain the correct processing order. The cache stores the outcome
93
+ * of tree-shaking, and if the result is already stored in the cache
94
+ * but the "only" option has changed, the file will be re-processed using
95
+ * the combined "only" option.
96
+ */
97
+ const entrypoint = _Entrypoint.Entrypoint.createRoot(services, options.filename, ['__linariaPreval'], originalCode);
98
+ if (entrypoint.ignored) {
99
+ return {
100
+ code: originalCode,
101
+ sourceMap: options.inputSourceMap
102
+ };
103
+ }
104
+ const workflowAction = entrypoint.createAction('workflow', undefined);
105
+ try {
106
+ const result = await (0, _actionRunner.asyncActionRunner)(workflowAction, {
107
+ ..._generators.baseHandlers,
108
+ ...customHandlers,
109
+ resolveImports() {
110
+ return _resolveImports.asyncResolveImports.call(this, asyncResolve);
111
+ }
112
+ });
113
+ entrypoint.log('%s is ready', entrypoint.name);
114
+ return result;
115
+ } catch (err) {
116
+ entrypoint.log('Unhandled error %O', err);
117
+ if ((0, _shared.isFeatureEnabled)(pluginOptions.features, 'softErrors', options.filename)) {
118
+ // eslint-disable-next-line no-console
119
+ console.error(`Error during transform of ${entrypoint.name}:`, err);
120
+ return {
121
+ code: originalCode,
122
+ sourceMap: options.inputSourceMap
123
+ };
124
+ }
125
+ throw err;
126
+ }
127
+ }
128
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","names":["_shared","require","_cache","_Entrypoint","_actionRunner","_generators","_resolveImports","_loadLinariaOptions","_withDefaultServices","transformSync","partialServices","originalCode","syncResolve","customHandlers","options","pluginOptions","loadLinariaOptions","services","withDefaultServices","isFeatureEnabled","features","filename","cache","TransformCacheCollection","entrypoint","Entrypoint","createRoot","ignored","code","sourceMap","inputSourceMap","workflowAction","createAction","undefined","result","syncActionRunner","baseHandlers","resolveImports","syncResolveImports","call","log","name","err","console","error","transform","asyncResolve","asyncActionRunner","asyncResolveImports"],"sources":["../src/transform.ts"],"sourcesContent":["/**\n * This file exposes transform function that:\n * - parse the passed code to AST\n * - transforms the AST using Linaria babel preset ('./babel/index.js) and additional config defined in Linaria config file or passed to bundler configuration.\n * - runs generated CSS files through default of user-defined preprocessor\n * - generates source maps for CSS files\n * - return transformed code (without Linaria template literals), generated CSS, source maps and babel metadata from transform step.\n */\n\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n asyncActionRunner,\n syncActionRunner,\n} from './transform/actions/actionRunner';\nimport { baseHandlers } from './transform/generators';\nimport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nimport type { PartialOptions } from './transform/helpers/loadLinariaOptions';\nimport { loadLinariaOptions } from './transform/helpers/loadLinariaOptions';\nimport { withDefaultServices } from './transform/helpers/withDefaultServices';\nimport type {\n Handlers,\n IResolveImportsAction,\n Services,\n} from './transform/types';\nimport type { Result } from './types';\n\ntype PartialServices = Partial<Omit<Services, 'options'>> & {\n options: Omit<Services['options'], 'pluginOptions'> & {\n pluginOptions?: PartialOptions;\n };\n};\n\ntype AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;\n\nexport function transformSync(\n partialServices: PartialServices,\n originalCode: string,\n syncResolve: (what: string, importer: string, stack: string[]) => string,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Result {\n const { options } = partialServices;\n const pluginOptions = loadLinariaOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__linariaPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n try {\n const result = syncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports() {\n return syncResolveImports.call(this, syncResolve);\n },\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n\nexport async function transform(\n partialServices: PartialServices,\n originalCode: string,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Promise<Result> {\n const { options } = partialServices;\n const pluginOptions = loadLinariaOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n /*\n * This method can be run simultaneously for multiple files.\n * A shared cache is accessible for all runs, but each run has its own queue\n * to maintain the correct processing order. The cache stores the outcome\n * of tree-shaking, and if the result is already stored in the cache\n * but the \"only\" option has changed, the file will be re-processed using\n * the combined \"only\" option.\n */\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__linariaPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n try {\n const result = await asyncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports(this: IResolveImportsAction) {\n return asyncResolveImports.call(this, asyncResolve);\n },\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n"],"mappings":"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"}
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n linaria?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isOnActionStartArgs = exports.isOnActionFinishArgs = exports.EventEmitter = void 0;
7
+ const isOnActionStartArgs = args => {
8
+ return args[0] === 'start';
9
+ };
10
+ exports.isOnActionStartArgs = isOnActionStartArgs;
11
+ const isOnActionFinishArgs = args => {
12
+ return args[0] === 'finish' || args[0] === 'fail';
13
+ };
14
+ exports.isOnActionFinishArgs = isOnActionFinishArgs;
15
+ class EventEmitter {
16
+ static dummy = new EventEmitter(() => {}, () => 0, () => {});
17
+ constructor(onEvent, onAction, onEntrypointEvent) {
18
+ this.onEvent = onEvent;
19
+ this.onAction = onAction;
20
+ this.onEntrypointEvent = onEntrypointEvent;
21
+ }
22
+ action(actonType, idx, entrypointRef, fn) {
23
+ const id = this.onAction('start', performance.now(), actonType, idx, entrypointRef);
24
+ try {
25
+ const result = fn();
26
+ if (result instanceof Promise) {
27
+ result.then(() => this.onAction('finish', performance.now(), id, true), e => this.onAction('fail', performance.now(), id, true, e));
28
+ } else {
29
+ this.onAction('finish', performance.now(), id, false);
30
+ }
31
+ return result;
32
+ } catch (e) {
33
+ this.onAction('fail', performance.now(), id, false, e);
34
+ throw e;
35
+ }
36
+ }
37
+ entrypointEvent(sequenceId, event) {
38
+ this.onEntrypointEvent(sequenceId, performance.now(), event);
39
+ }
40
+ perf(method, fn) {
41
+ const labels = {
42
+ method
43
+ };
44
+ this.onEvent(labels, 'start');
45
+ const result = fn();
46
+ if (result instanceof Promise) {
47
+ result.then(() => this.onEvent(labels, 'finish'), () => this.onEvent(labels, 'finish'));
48
+ } else {
49
+ this.onEvent(labels, 'finish');
50
+ }
51
+ return result;
52
+ }
53
+ single(labels) {
54
+ this.onEvent({
55
+ ...labels,
56
+ datetime: new Date()
57
+ }, 'single');
58
+ }
59
+ }
60
+ exports.EventEmitter = EventEmitter;
61
+ //# sourceMappingURL=EventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.js","names":["isOnActionStartArgs","args","exports","isOnActionFinishArgs","EventEmitter","dummy","constructor","onEvent","onAction","onEntrypointEvent","action","actonType","idx","entrypointRef","fn","id","performance","now","result","Promise","then","e","entrypointEvent","sequenceId","event","perf","method","labels","single","datetime","Date"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["export type OnEvent = (\n labels: Record<string, unknown>,\n type: 'start' | 'finish' | 'single',\n event?: unknown\n) => void;\n\nexport interface IActionCreated {\n actionIdx: string;\n actionType: string;\n type: 'actionCreated';\n}\n\nexport interface ICreatedEvent {\n class: string;\n evaluatedOnly: string[];\n filename: string;\n generation: number;\n idx: string;\n isExportsInherited: boolean;\n only: string[];\n parentId: number | null;\n type: 'created';\n}\n\nexport interface ISupersededEvent {\n type: 'superseded';\n with: number;\n}\n\nexport interface ISetTransformResultEvent {\n isNull: boolean;\n type: 'setTransformResult';\n}\n\nexport type EntrypointEvent =\n | IActionCreated\n | ICreatedEvent\n | ISupersededEvent\n | ISetTransformResultEvent;\n\nexport type OnEntrypointEvent = (\n idx: number,\n timestamp: number,\n event: EntrypointEvent\n) => void;\n\nexport type OnActionStartArgs = [\n phase: 'start',\n timestamp: number,\n type: string,\n idx: string,\n entrypointRef: string,\n];\n\nexport type OnActionFinishArgs = [\n phase: 'finish' | 'fail',\n timestamp: number,\n id: number,\n isAsync: boolean,\n error?: unknown,\n];\n\nexport const isOnActionStartArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionStartArgs => {\n return args[0] === 'start';\n};\n\nexport const isOnActionFinishArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionFinishArgs => {\n return args[0] === 'finish' || args[0] === 'fail';\n};\n\nexport interface OnAction {\n (...args: OnActionStartArgs): number;\n (...args: OnActionFinishArgs): void;\n}\n\nexport class EventEmitter {\n static dummy = new EventEmitter(\n () => {},\n () => 0,\n () => {}\n );\n\n constructor(\n protected onEvent: OnEvent,\n protected onAction: OnAction,\n protected onEntrypointEvent: OnEntrypointEvent\n ) {}\n\n public action<TRes>(\n actonType: string,\n idx: string,\n entrypointRef: string,\n fn: () => TRes\n ) {\n const id = this.onAction(\n 'start',\n performance.now(),\n actonType,\n idx,\n entrypointRef\n );\n\n try {\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onAction('finish', performance.now(), id, true),\n (e) => this.onAction('fail', performance.now(), id, true, e)\n );\n } else {\n this.onAction('finish', performance.now(), id, false);\n }\n\n return result;\n } catch (e) {\n this.onAction('fail', performance.now(), id, false, e);\n throw e;\n }\n }\n\n public entrypointEvent(sequenceId: number, event: EntrypointEvent) {\n this.onEntrypointEvent(sequenceId, performance.now(), event);\n }\n\n public perf<TRes>(method: string, fn: () => TRes): TRes {\n const labels = { method };\n\n this.onEvent(labels, 'start');\n\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onEvent(labels, 'finish'),\n () => this.onEvent(labels, 'finish')\n );\n } else {\n this.onEvent(labels, 'finish');\n }\n\n return result;\n }\n\n public single(labels: Record<string, unknown>) {\n this.onEvent(\n {\n ...labels,\n datetime: new Date(),\n },\n 'single'\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hasShakerMetadata = void 0;
7
+ const hasShakerMetadata = metadata => metadata !== undefined && 'linariaEvaluator' in metadata;
8
+ exports.hasShakerMetadata = hasShakerMetadata;
9
+ //# sourceMappingURL=ShakerMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShakerMetadata.js","names":["hasShakerMetadata","metadata","undefined","exports"],"sources":["../../src/utils/ShakerMetadata.ts"],"sourcesContent":["export interface IShakerMetadata {\n imports: Map<string, string[]>;\n}\n\nexport interface IMetadata {\n linariaEvaluator: IShakerMetadata;\n}\n\nexport const hasShakerMetadata = (\n metadata: object | undefined\n): metadata is IMetadata =>\n metadata !== undefined && 'linariaEvaluator' in metadata;\n"],"mappings":";;;;;;AAQO,MAAMA,iBAAiB,GAC5BC,QAA4B,IAE5BA,QAAQ,KAAKC,SAAS,IAAI,kBAAkB,IAAID,QAAQ;AAACE,OAAA,CAAAH,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.withTransformMetadata = exports.getTransformMetadata = void 0;
7
+ const withTransformMetadata = value => typeof value === 'object' && value !== null && typeof value.wywInJS === 'object';
8
+ exports.withTransformMetadata = withTransformMetadata;
9
+ const getTransformMetadata = value => {
10
+ if (withTransformMetadata(value) && value.wywInJS !== null) {
11
+ const metadata = value.wywInJS;
12
+ // eslint-disable-next-line no-param-reassign
13
+ delete value.wywInJS;
14
+ return metadata;
15
+ }
16
+ return undefined;
17
+ };
18
+ exports.getTransformMetadata = getTransformMetadata;
19
+ //# sourceMappingURL=TransformMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransformMetadata.js","names":["withTransformMetadata","value","wywInJS","exports","getTransformMetadata","metadata","undefined"],"sources":["../../src/utils/TransformMetadata.ts"],"sourcesContent":["import type { Artifact, Replacement, Rules } from '@wyw-in-js/shared';\n\nexport type WYWTransformMetadata = {\n dependencies: string[];\n processors: { artifacts: Artifact[] }[];\n replacements: Replacement[];\n rules: Rules;\n};\n\nexport const withTransformMetadata = (\n value: unknown\n): value is { wywInJS: WYWTransformMetadata } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { wywInJS: unknown }).wywInJS === 'object';\n\nexport const getTransformMetadata = (\n value: unknown\n): WYWTransformMetadata | undefined => {\n if (withTransformMetadata(value) && value.wywInJS !== null) {\n const metadata = value.wywInJS;\n // eslint-disable-next-line no-param-reassign\n delete (value as { wywInJS: unknown }).wywInJS;\n return metadata;\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;AASO,MAAMA,qBAAqB,GAChCC,KAAc,IAEd,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAQA,KAAK,CAA0BC,OAAO,KAAK,QAAQ;AAACC,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAEvD,MAAMI,oBAAoB,GAC/BH,KAAc,IACuB;EACrC,IAAID,qBAAqB,CAACC,KAAK,CAAC,IAAIA,KAAK,CAACC,OAAO,KAAK,IAAI,EAAE;IAC1D,MAAMG,QAAQ,GAAGJ,KAAK,CAACC,OAAO;IAC9B;IACA,OAAQD,KAAK,CAA0BC,OAAO;IAC9C,OAAOG,QAAQ;EACjB;EAEA,OAAOC,SAAS;AAClB,CAAC;AAACH,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.addIdentifierToLinariaPreval = addIdentifierToLinariaPreval;
7
+ exports.getOrAddLinariaPreval = getOrAddLinariaPreval;
8
+ var _createId = require("./createId");
9
+ var _scopeHelpers = require("./scopeHelpers");
10
+ function getOrAddLinariaPreval(scope) {
11
+ const rootScope = scope.getProgramParent();
12
+ const programPath = rootScope.path;
13
+ let object = programPath.getData('__linariaPreval');
14
+ if (object) {
15
+ return object;
16
+ }
17
+ if (programPath.node.sourceType === 'script') {
18
+ // CJS exports.__linariaPreval = {};
19
+ const prevalExport = {
20
+ expression: {
21
+ type: 'AssignmentExpression',
22
+ operator: '=',
23
+ left: {
24
+ computed: false,
25
+ object: (0, _createId.createId)('exports'),
26
+ property: (0, _createId.createId)('__linariaPreval'),
27
+ type: 'MemberExpression'
28
+ },
29
+ right: {
30
+ properties: [],
31
+ type: 'ObjectExpression'
32
+ }
33
+ },
34
+ type: 'ExpressionStatement'
35
+ };
36
+ const [inserted] = programPath.pushContainer('body', [prevalExport]);
37
+ object = inserted.get('expression.right');
38
+ } else {
39
+ // ESM export const __linariaPreval = {};
40
+ const prevalExport = {
41
+ declaration: {
42
+ declarations: [{
43
+ id: (0, _createId.createId)('__linariaPreval'),
44
+ init: {
45
+ properties: [],
46
+ type: 'ObjectExpression'
47
+ },
48
+ type: 'VariableDeclarator'
49
+ }],
50
+ kind: 'const',
51
+ type: 'VariableDeclaration'
52
+ },
53
+ specifiers: [],
54
+ type: 'ExportNamedDeclaration'
55
+ };
56
+ const [inserted] = programPath.pushContainer('body', [prevalExport]);
57
+ object = inserted.get('declaration.declarations.0.init');
58
+ }
59
+ programPath.setData('__linariaPreval', object);
60
+ return object;
61
+ }
62
+ function addIdentifierToLinariaPreval(scope, name) {
63
+ const rootScope = scope.getProgramParent();
64
+ const object = getOrAddLinariaPreval(rootScope);
65
+ const newProperty = {
66
+ type: 'ObjectProperty',
67
+ key: (0, _createId.createId)(name),
68
+ value: (0, _createId.createId)(name),
69
+ computed: false,
70
+ shorthand: false
71
+ };
72
+ const [inserted] = object.pushContainer('properties', [newProperty]);
73
+ (0, _scopeHelpers.reference)(inserted.get('value'));
74
+ }
75
+ //# sourceMappingURL=addIdentifierToLinariaPreval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addIdentifierToLinariaPreval.js","names":["_createId","require","_scopeHelpers","getOrAddLinariaPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","createId","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToLinariaPreval","name","newProperty","key","value","shorthand","reference"],"sources":["../../src/utils/addIdentifierToLinariaPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddLinariaPreval(\n scope: Scope\n): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__linariaPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__linariaPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__linariaPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __linariaPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__linariaPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__linariaPreval', object);\n return object;\n}\n\nexport function addIdentifierToLinariaPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddLinariaPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":";;;;;;;AAUA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,SAASE,qBAAqBA,CACnCC,KAAY,EACgB;EAC5B,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,iBAAiB,CAAC;EACnD,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAE,IAAAU,kBAAQ,EAAC,SAAS,CAAC;UAC3BC,QAAQ,EAAE,IAAAD,kBAAQ,EAAC,iBAAiB,CAAC;UACrCJ,IAAI,EAAE;QACR,CAAC;QACDM,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdP,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMZ,YAAoC,GAAG;MAC3Ca,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE,IAAAT,kBAAQ,EAAC,iBAAiB,CAAC;UAC/BU,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdP,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDe,IAAI,EAAE,OAAO;QACbf,IAAI,EAAE;MACR,CAAC;MACDgB,UAAU,EAAE,EAAE;MACdhB,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAlB,WAAW,CAACyB,OAAO,CAAC,iBAAiB,EAAEvB,MAAM,CAAC;EAC9C,OAAOA,MAAM;AACf;AAEO,SAASwB,4BAA4BA,CAAC7B,KAAY,EAAE8B,IAAY,EAAE;EACvE,MAAM7B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,qBAAqB,CAACE,SAAS,CAAC;EAC/C,MAAM8B,WAA2B,GAAG;IAClCpB,IAAI,EAAE,gBAAgB;IACtBqB,GAAG,EAAE,IAAAjB,kBAAQ,EAACe,IAAI,CAAC;IACnBG,KAAK,EAAE,IAAAlB,kBAAQ,EAACe,IAAI,CAAC;IACrBhB,QAAQ,EAAE,KAAK;IACfoB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGd,MAAM,CAACe,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpE,IAAAI,uBAAS,EAAChB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D"}