@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,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entrypoint = void 0;
4
+ const ts_invariant_1 = require("ts-invariant");
5
+ const BaseEntrypoint_1 = require("./BaseEntrypoint");
6
+ const Entrypoint_helpers_1 = require("./Entrypoint.helpers");
7
+ const EvaluatedEntrypoint_1 = require("./EvaluatedEntrypoint");
8
+ const AbortError_1 = require("./actions/AbortError");
9
+ const BaseAction_1 = require("./actions/BaseAction");
10
+ const UnprocessedEntrypointError_1 = require("./actions/UnprocessedEntrypointError");
11
+ const EMPTY_FILE = '=== empty file ===';
12
+ function hasLoop(name, parent, processed = []) {
13
+ if (parent.name === name || processed.includes(parent.name)) {
14
+ return true;
15
+ }
16
+ for (const p of parent.parents) {
17
+ const found = hasLoop(name, p, [...processed, parent.name]);
18
+ if (found) {
19
+ return found;
20
+ }
21
+ }
22
+ return false;
23
+ }
24
+ class Entrypoint extends BaseEntrypoint_1.BaseEntrypoint {
25
+ initialCode;
26
+ resolveTasks;
27
+ dependencies;
28
+ evaluated = false;
29
+ loadedAndParsed;
30
+ onSupersedeHandlers = [];
31
+ actionsCache = new Map();
32
+ #hasLinariaMetadata = false;
33
+ #supersededWith = null;
34
+ #transformResultCode = null;
35
+ constructor(services, parents, initialCode, name, only, exports, evaluatedOnly, loadedAndParsed, resolveTasks = new Map(), dependencies = new Map(), generation = 1) {
36
+ super(services, evaluatedOnly, exports, generation, name, only, parents);
37
+ this.initialCode = initialCode;
38
+ this.resolveTasks = resolveTasks;
39
+ this.dependencies = dependencies;
40
+ this.loadedAndParsed =
41
+ loadedAndParsed ??
42
+ services.loadAndParseFn(services, name, initialCode, parents[0]?.log ?? services.log);
43
+ if (this.loadedAndParsed.code !== undefined) {
44
+ services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);
45
+ }
46
+ this.log.extend('source')('created %s (%o)\n%s', name, only, this.originalCode || EMPTY_FILE);
47
+ }
48
+ get ignored() {
49
+ return this.loadedAndParsed.evaluator === 'ignored';
50
+ }
51
+ get originalCode() {
52
+ return this.loadedAndParsed.code;
53
+ }
54
+ get supersededWith() {
55
+ return this.#supersededWith?.supersededWith ?? this.#supersededWith;
56
+ }
57
+ get transformedCode() {
58
+ return (this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null);
59
+ }
60
+ static createRoot(services, name, only, loadedCode) {
61
+ const created = Entrypoint.create(services, null, name, only, loadedCode);
62
+ (0, ts_invariant_1.invariant)(created !== 'loop', 'loop detected');
63
+ return created;
64
+ }
65
+ /**
66
+ * Creates an entrypoint for the specified file.
67
+ * If there is already an entrypoint for this file, there will be four possible outcomes:
68
+ * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,
69
+ * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.
70
+ * It can happen if the file was changed and the watcher notified us about it, or we received a new version
71
+ * of the file from a loader whereas the previous one was loaded from the filesystem.
72
+ * The new entrypoint will be returned.
73
+ * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.
74
+ * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.
75
+ * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.
76
+ */
77
+ static create(services, parent, name, only, loadedCode) {
78
+ const { cache, eventEmitter } = services;
79
+ return eventEmitter.perf('createEntrypoint', () => {
80
+ const [status, entrypoint] = Entrypoint.innerCreate(services, parent
81
+ ? {
82
+ evaluated: parent.evaluated,
83
+ log: parent.log,
84
+ name: parent.name,
85
+ parents: parent.parents,
86
+ seqId: parent.seqId,
87
+ }
88
+ : null, name, only, loadedCode);
89
+ if (status !== 'cached') {
90
+ cache.add('entrypoints', name, entrypoint);
91
+ }
92
+ return status === 'loop' ? 'loop' : entrypoint;
93
+ });
94
+ }
95
+ static innerCreate(services, parent, name, only, loadedCode) {
96
+ const { cache } = services;
97
+ const cached = cache.get('entrypoints', name);
98
+ const changed = loadedCode !== undefined
99
+ ? cache.invalidateIfChanged(name, loadedCode)
100
+ : false;
101
+ if (!cached?.evaluated && cached?.ignored) {
102
+ return ['cached', cached];
103
+ }
104
+ const exports = cached?.exports;
105
+ const evaluatedOnly = cached?.evaluatedOnly ?? [];
106
+ const mergedOnly = !changed && cached?.only
107
+ ? (0, Entrypoint_helpers_1.mergeOnly)(cached.only, only).filter((i) => !evaluatedOnly.includes(i))
108
+ : only;
109
+ if (cached?.evaluated) {
110
+ cached.log('is already evaluated with', cached.evaluatedOnly);
111
+ }
112
+ if (!changed && cached && !cached.evaluated) {
113
+ const isLoop = parent && hasLoop(name, parent);
114
+ if (isLoop) {
115
+ parent.log('[createEntrypoint] %s is a loop', name);
116
+ }
117
+ if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {
118
+ cached.parents.push(parent);
119
+ }
120
+ if ((0, Entrypoint_helpers_1.isSuperSet)(cached.only, mergedOnly)) {
121
+ cached.log('is cached', name);
122
+ return [isLoop ? 'loop' : 'cached', cached];
123
+ }
124
+ cached.log('is cached, but with different `only` %o (the cached one %o)', only, cached?.only);
125
+ return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];
126
+ }
127
+ const newEntrypoint = new Entrypoint(services, parent ? [parent] : [], loadedCode, name, mergedOnly, exports, evaluatedOnly, undefined, cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined, cached && 'dependencies' in cached ? cached.dependencies : undefined, cached ? cached.generation + 1 : 1);
128
+ if (cached && !cached.evaluated) {
129
+ cached.log('is cached, but with different code');
130
+ cached.supersede(newEntrypoint);
131
+ }
132
+ return ['created', newEntrypoint];
133
+ }
134
+ addDependency(dependency) {
135
+ this.resolveTasks.delete(dependency.source);
136
+ this.dependencies.set(dependency.source, dependency);
137
+ }
138
+ addResolveTask(name, dependency) {
139
+ this.resolveTasks.set(name, dependency);
140
+ }
141
+ assertNotSuperseded() {
142
+ if (this.supersededWith) {
143
+ this.log('superseded');
144
+ throw new AbortError_1.AbortError('superseded');
145
+ }
146
+ }
147
+ assertTransformed() {
148
+ if (this.transformedCode === null) {
149
+ this.log('not transformed');
150
+ throw new UnprocessedEntrypointError_1.UnprocessedEntrypointError(this.supersededWith ?? this);
151
+ }
152
+ }
153
+ createAction(actionType, data, abortSignal = null) {
154
+ if (!this.actionsCache.has(actionType)) {
155
+ this.actionsCache.set(actionType, new Map());
156
+ }
157
+ const cache = this.actionsCache.get(actionType);
158
+ const cached = cache.get(data);
159
+ if (cached && !cached.abortSignal?.aborted) {
160
+ return cached;
161
+ }
162
+ const newAction = new BaseAction_1.BaseAction(actionType, this.services, this, data, abortSignal);
163
+ cache.set(data, newAction);
164
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
165
+ type: 'actionCreated',
166
+ actionType,
167
+ actionIdx: newAction.idx,
168
+ });
169
+ return newAction;
170
+ }
171
+ createChild(name, only, loadedCode) {
172
+ return Entrypoint.create(this.services, this, name, only, loadedCode);
173
+ }
174
+ createEvaluated() {
175
+ const evaluatedOnly = (0, Entrypoint_helpers_1.mergeOnly)(this.evaluatedOnly, this.only);
176
+ this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);
177
+ return new EvaluatedEntrypoint_1.EvaluatedEntrypoint(this.services, evaluatedOnly, this.exportsProxy, this.generation + 1, this.name, this.only, this.parents);
178
+ }
179
+ getDependency(name) {
180
+ return this.dependencies.get(name);
181
+ }
182
+ getResolveTask(name) {
183
+ return this.resolveTasks.get(name);
184
+ }
185
+ hasLinariaMetadata() {
186
+ return this.#hasLinariaMetadata;
187
+ }
188
+ onSupersede(callback) {
189
+ if (this.#supersededWith) {
190
+ callback(this.#supersededWith);
191
+ return () => { };
192
+ }
193
+ this.onSupersedeHandlers.push(callback);
194
+ return () => {
195
+ const index = this.onSupersedeHandlers.indexOf(callback);
196
+ if (index >= 0) {
197
+ this.onSupersedeHandlers.splice(index, 1);
198
+ }
199
+ };
200
+ }
201
+ setTransformResult(res) {
202
+ this.#hasLinariaMetadata = Boolean(res?.metadata);
203
+ this.#transformResultCode = res?.code ?? null;
204
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
205
+ isNull: res === null,
206
+ type: 'setTransformResult',
207
+ });
208
+ }
209
+ supersede(newOnlyOrEntrypoint) {
210
+ const newEntrypoint = newOnlyOrEntrypoint instanceof Entrypoint
211
+ ? newOnlyOrEntrypoint
212
+ : new Entrypoint(this.services, this.parents, this.initialCode, this.name, newOnlyOrEntrypoint, this.exports, this.evaluatedOnly, this.loadedAndParsed, this.resolveTasks, this.dependencies, this.generation + 1);
213
+ this.services.eventEmitter.entrypointEvent(this.seqId, {
214
+ type: 'superseded',
215
+ with: newEntrypoint.seqId,
216
+ });
217
+ this.log('superseded by %s (%o -> %o)', newEntrypoint.name, this.only, newEntrypoint.only);
218
+ this.#supersededWith = newEntrypoint;
219
+ this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));
220
+ return newEntrypoint;
221
+ }
222
+ }
223
+ exports.Entrypoint = Entrypoint;
@@ -0,0 +1,23 @@
1
+ /// <reference types="debug" />
2
+ import type { TransformOptions } from '@babel/core';
3
+ import type { File } from '@babel/types';
4
+ import type { Debugger, Evaluator } from '@wyw-in-js/shared';
5
+ import type { Services } from './types';
6
+ export interface IEntrypointCode {
7
+ readonly ast: File;
8
+ code: string;
9
+ evalConfig: TransformOptions;
10
+ evaluator: Evaluator;
11
+ }
12
+ export interface IIgnoredEntrypoint {
13
+ readonly ast?: File;
14
+ readonly code?: string;
15
+ evaluator: 'ignored';
16
+ reason: 'extension' | 'rule';
17
+ }
18
+ export interface IEntrypointDependency {
19
+ only: string[];
20
+ resolved: string | null;
21
+ source: string;
22
+ }
23
+ export type LoadAndParseFn = (services: Services, name: string, loadedCode: string | undefined, log: Debugger) => IEntrypointCode | IIgnoredEntrypoint;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ /// <reference types="debug" />
2
+ import type { Debugger } from '@wyw-in-js/shared';
3
+ import { BaseEntrypoint } from './BaseEntrypoint';
4
+ export interface IEvaluatedEntrypoint {
5
+ evaluated: true;
6
+ evaluatedOnly: string[];
7
+ exports: Record<string | symbol, unknown>;
8
+ generation: number;
9
+ ignored: false;
10
+ log: Debugger;
11
+ only: string[];
12
+ }
13
+ export declare class EvaluatedEntrypoint extends BaseEntrypoint implements IEvaluatedEntrypoint {
14
+ readonly evaluated = true;
15
+ readonly ignored = false;
16
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluatedEntrypoint = void 0;
4
+ const BaseEntrypoint_1 = require("./BaseEntrypoint");
5
+ class EvaluatedEntrypoint extends BaseEntrypoint_1.BaseEntrypoint {
6
+ evaluated = true;
7
+ ignored = false;
8
+ }
9
+ exports.EvaluatedEntrypoint = EvaluatedEntrypoint;
@@ -0,0 +1,4 @@
1
+ export declare class AbortError extends Error {
2
+ constructor(reason?: string);
3
+ }
4
+ export declare const isAborted: (value: unknown) => value is AbortError;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAborted = exports.AbortError = void 0;
4
+ class AbortError extends Error {
5
+ constructor(reason) {
6
+ super(reason);
7
+ this.name = 'AbortError';
8
+ }
9
+ }
10
+ exports.AbortError = AbortError;
11
+ const isAborted = (value) => value instanceof AbortError;
12
+ exports.isAborted = isAborted;
@@ -0,0 +1,40 @@
1
+ /// <reference types="debug" />
2
+ import '../../utils/dispose-polyfill';
3
+ import type { Debugger } from '@wyw-in-js/shared';
4
+ import type { Entrypoint } from '../Entrypoint';
5
+ import type { ActionQueueItem, ActionTypes, AnyIteratorResult, Handler, IBaseAction, Services, TypeOfResult, YieldResult } from '../types';
6
+ import { Pending } from '../types';
7
+ export type ActionByType<TType extends ActionTypes> = Extract<ActionQueueItem, {
8
+ type: TType;
9
+ }>;
10
+ type GetBase<TAction extends ActionQueueItem> = IBaseAction<TAction, TypeOfResult<TAction>, TAction['data']>;
11
+ export declare class BaseAction<TAction extends ActionQueueItem> implements GetBase<TAction> {
12
+ readonly type: TAction['type'];
13
+ readonly services: Services;
14
+ readonly entrypoint: Entrypoint;
15
+ readonly data: TAction['data'];
16
+ readonly abortSignal: AbortSignal | null;
17
+ readonly idx: string;
18
+ result: TypeOfResult<TAction> | typeof Pending;
19
+ private activeScenario;
20
+ private activeScenarioError?;
21
+ private activeScenarioNextResults;
22
+ constructor(type: TAction['type'], services: Services, entrypoint: Entrypoint, data: TAction['data'], abortSignal: AbortSignal | null);
23
+ get log(): Debugger;
24
+ get ref(): string;
25
+ createAbortSignal(): AbortSignal & Disposable;
26
+ getNext<TNextType extends ActionTypes, TNextAction extends ActionByType<TNextType> = ActionByType<TNextType>>(type: TNextType, entrypoint: Entrypoint, data: TNextAction['data'], abortSignal?: AbortSignal | null): Generator<[
27
+ TNextType,
28
+ Entrypoint,
29
+ TNextAction['data'],
30
+ AbortSignal | null
31
+ ], TypeOfResult<TNextAction>, YieldResult>;
32
+ onAbort(fn: () => void): () => void;
33
+ run<TMode extends 'async' | 'sync', THandler extends Handler<TMode, TAction> = Handler<TMode, TAction>>(handler: THandler): {
34
+ next: (arg: YieldResult) => AnyIteratorResult<TMode, TypeOfResult<TAction>>;
35
+ throw: (e: unknown) => AnyIteratorResult<TMode, TypeOfResult<TAction>>;
36
+ };
37
+ protected emitAction<TRes>(yieldIdx: number, fn: () => TRes): TRes;
38
+ private rethrowActiveScenarioError;
39
+ }
40
+ export {};
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAction = void 0;
4
+ /* eslint-disable no-plusplus */
5
+ require("../../utils/dispose-polyfill");
6
+ const types_1 = require("../types");
7
+ let actionIdx = 0;
8
+ class BaseAction {
9
+ type;
10
+ services;
11
+ entrypoint;
12
+ data;
13
+ abortSignal;
14
+ idx;
15
+ result = types_1.Pending;
16
+ activeScenario = null;
17
+ activeScenarioError;
18
+ activeScenarioNextResults = [];
19
+ constructor(type, services, entrypoint, data, abortSignal) {
20
+ this.type = type;
21
+ this.services = services;
22
+ this.entrypoint = entrypoint;
23
+ this.data = data;
24
+ this.abortSignal = abortSignal;
25
+ actionIdx += 1;
26
+ this.idx = actionIdx.toString(16).padStart(6, '0');
27
+ }
28
+ get log() {
29
+ return this.entrypoint.log.extend(this.ref);
30
+ }
31
+ get ref() {
32
+ return `${this.type}@${this.idx}`;
33
+ }
34
+ createAbortSignal() {
35
+ const abortController = new AbortController();
36
+ const unsubscribeFromParentAbort = this.onAbort(() => {
37
+ this.entrypoint.log('parent aborted');
38
+ abortController.abort();
39
+ });
40
+ const unsubscribeFromSupersede = this.entrypoint.onSupersede(() => {
41
+ this.entrypoint.log('entrypoint superseded, aborting processing');
42
+ abortController.abort();
43
+ });
44
+ const abortSignal = abortController.signal;
45
+ abortSignal[Symbol.dispose] = () => {
46
+ unsubscribeFromParentAbort();
47
+ unsubscribeFromSupersede();
48
+ };
49
+ return abortSignal;
50
+ }
51
+ *getNext(type, entrypoint, data, abortSignal = this.abortSignal) {
52
+ return (yield [
53
+ type,
54
+ entrypoint,
55
+ data,
56
+ abortSignal,
57
+ ]);
58
+ }
59
+ onAbort(fn) {
60
+ this.abortSignal?.addEventListener('abort', fn);
61
+ return () => {
62
+ this.abortSignal?.removeEventListener('abort', fn);
63
+ };
64
+ }
65
+ run(handler) {
66
+ if (!this.activeScenario) {
67
+ this.activeScenario = handler.call(this);
68
+ this.activeScenarioNextResults = [];
69
+ }
70
+ let nextIdx = 0;
71
+ const throwFn = (e) => this.emitAction(nextIdx, () => this.activeScenario.throw(e));
72
+ const nextFn = (arg) => this.emitAction(nextIdx, () => this.activeScenario.next(arg));
73
+ const processNextResult = (result, onError) => {
74
+ if ('then' in result) {
75
+ result.then((r) => {
76
+ if (r.done) {
77
+ this.result = r.value;
78
+ }
79
+ }, onError);
80
+ }
81
+ else if (result.done) {
82
+ this.result = result.value;
83
+ }
84
+ this.activeScenarioNextResults.push(result);
85
+ };
86
+ const processError = (e) => {
87
+ if (this.activeScenarioNextResults.length > nextIdx) {
88
+ this.log('error was already handled in another branch, result idx is %d', nextIdx);
89
+ return;
90
+ }
91
+ this.log('error processing, result idx is %d', nextIdx);
92
+ try {
93
+ const nextResult = throwFn(e);
94
+ processNextResult(nextResult, processError);
95
+ }
96
+ catch (errorInGenerator) {
97
+ const { recover } = handler;
98
+ if (recover) {
99
+ const nextResult = {
100
+ done: false,
101
+ value: recover(errorInGenerator, this),
102
+ };
103
+ processNextResult(nextResult, processError);
104
+ return;
105
+ }
106
+ this.activeScenarioError = errorInGenerator;
107
+ throw errorInGenerator;
108
+ }
109
+ };
110
+ const processNext = (arg) => {
111
+ if (this.activeScenarioNextResults.length > nextIdx) {
112
+ this.log('next was already handled in another branch, result idx is %d', nextIdx);
113
+ return;
114
+ }
115
+ this.log('next processing, result idx is %d', nextIdx);
116
+ try {
117
+ const nextResult = nextFn(arg);
118
+ processNextResult(nextResult, processError);
119
+ }
120
+ catch (e) {
121
+ processError(e);
122
+ }
123
+ };
124
+ return {
125
+ next: (arg) => {
126
+ this.rethrowActiveScenarioError();
127
+ processNext(arg);
128
+ return this.activeScenarioNextResults[nextIdx++];
129
+ },
130
+ throw: (e) => {
131
+ this.rethrowActiveScenarioError();
132
+ processError(e);
133
+ return this.activeScenarioNextResults[nextIdx++];
134
+ },
135
+ };
136
+ }
137
+ emitAction(yieldIdx, fn) {
138
+ return this.services.eventEmitter.action(this.type, `${this.idx}:${yieldIdx + 1}`, this.entrypoint.ref, fn);
139
+ }
140
+ rethrowActiveScenarioError() {
141
+ if (!this.activeScenarioError) {
142
+ return;
143
+ }
144
+ this.log('scenario has an unhandled error from another branch, rethrow %o', this.activeScenarioError);
145
+ // eslint-disable-next-line @typescript-eslint/no-throw-literal
146
+ throw this.activeScenarioError;
147
+ }
148
+ }
149
+ exports.BaseAction = BaseAction;
@@ -0,0 +1,6 @@
1
+ import type { Entrypoint } from '../Entrypoint';
2
+ export declare class UnprocessedEntrypointError extends Error {
3
+ entrypoint: Entrypoint;
4
+ constructor(entrypoint: Entrypoint);
5
+ }
6
+ export declare const isUnprocessedEntrypointError: (value: unknown) => value is UnprocessedEntrypointError;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnprocessedEntrypointError = exports.UnprocessedEntrypointError = void 0;
4
+ class UnprocessedEntrypointError extends Error {
5
+ entrypoint;
6
+ constructor(entrypoint) {
7
+ super(`Entrypoint ${entrypoint.idx} is not processed and can't be evaluated`);
8
+ this.entrypoint = entrypoint;
9
+ }
10
+ }
11
+ exports.UnprocessedEntrypointError = UnprocessedEntrypointError;
12
+ const isUnprocessedEntrypointError = (value) => value instanceof UnprocessedEntrypointError;
13
+ exports.isUnprocessedEntrypointError = isUnprocessedEntrypointError;
@@ -0,0 +1,4 @@
1
+ import type { ActionQueueItem, Handlers, TypeOfResult } from '../types';
2
+ import type { BaseAction } from './BaseAction';
3
+ export declare function asyncActionRunner<TAction extends ActionQueueItem>(action: BaseAction<TAction>, actionHandlers: Handlers<'async' | 'sync'>, stack?: string[]): Promise<TypeOfResult<TAction>>;
4
+ export declare function syncActionRunner<TAction extends ActionQueueItem>(action: BaseAction<TAction>, actionHandlers: Handlers<'sync'>, stack?: string[]): TypeOfResult<TAction>;
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncActionRunner = exports.asyncActionRunner = void 0;
4
+ const types_1 = require("../types");
5
+ const AbortError_1 = require("./AbortError");
6
+ function getHandler(action, actionHandlers) {
7
+ const handler = actionHandlers[action.type];
8
+ if (!handler) {
9
+ throw new Error(`No handler for action ${action.type}`);
10
+ }
11
+ // FIXME Handlers<TMode>[TAction['type']] is not assignable to Handler<TMode, TAction>
12
+ return handler;
13
+ }
14
+ const getActionRef = (type, entrypoint) => `${type}@${entrypoint.ref}`;
15
+ const ACTION_ERROR = Symbol('ACTION_ERROR');
16
+ const isActionError = (e) => Array.isArray(e) && e[0] === ACTION_ERROR;
17
+ async function asyncActionRunner(action, actionHandlers, stack = [getActionRef(action.type, action.entrypoint)]) {
18
+ if (action.result !== types_1.Pending) {
19
+ action.log('result is cached');
20
+ return action.result;
21
+ }
22
+ const handler = getHandler(action, actionHandlers);
23
+ const generator = action.run(handler);
24
+ let actionResult;
25
+ // eslint-disable-next-line no-constant-condition
26
+ while (true) {
27
+ if (action.abortSignal?.aborted) {
28
+ action.log('action is aborted');
29
+ generator.throw(new AbortError_1.AbortError(stack[0]));
30
+ }
31
+ const result = await (isActionError(actionResult)
32
+ ? generator.throw(actionResult[1])
33
+ : generator.next(actionResult));
34
+ if (result.done) {
35
+ return result.value;
36
+ }
37
+ const [type, entrypoint, data, abortSignal] = result.value;
38
+ const nextAction = entrypoint.createAction(type, data, abortSignal);
39
+ try {
40
+ actionResult = await asyncActionRunner(nextAction, actionHandlers, [
41
+ ...stack,
42
+ getActionRef(type, entrypoint),
43
+ ]);
44
+ }
45
+ catch (e) {
46
+ nextAction.log('error', e);
47
+ actionResult = [ACTION_ERROR, e];
48
+ }
49
+ }
50
+ }
51
+ exports.asyncActionRunner = asyncActionRunner;
52
+ function syncActionRunner(action, actionHandlers, stack = [getActionRef(action.type, action.entrypoint)]) {
53
+ if (action.result !== types_1.Pending) {
54
+ action.log('result is cached');
55
+ return action.result;
56
+ }
57
+ const handler = getHandler(action, actionHandlers);
58
+ const generator = action.run(handler);
59
+ let actionResult;
60
+ // eslint-disable-next-line no-constant-condition
61
+ while (true) {
62
+ if (action.abortSignal?.aborted) {
63
+ action.log('action is aborted');
64
+ generator.throw(new AbortError_1.AbortError(stack[0]));
65
+ }
66
+ const result = isActionError(actionResult)
67
+ ? generator.throw(actionResult[1])
68
+ : generator.next(actionResult);
69
+ if (result.done) {
70
+ return result.value;
71
+ }
72
+ const [type, entrypoint, data, abortSignal] = result.value;
73
+ const nextAction = entrypoint.createAction(type, data, abortSignal);
74
+ try {
75
+ actionResult = syncActionRunner(nextAction, actionHandlers, [
76
+ ...stack,
77
+ getActionRef(type, entrypoint),
78
+ ]);
79
+ }
80
+ catch (e) {
81
+ nextAction.log('error', e);
82
+ actionResult = [ACTION_ERROR, e];
83
+ }
84
+ }
85
+ }
86
+ exports.syncActionRunner = syncActionRunner;
@@ -0,0 +1,15 @@
1
+ import type { BabelFileResult } from '@babel/core';
2
+ import type { Replacements, Rules } from '@wyw-in-js/shared';
3
+ export interface IExtracted {
4
+ cssSourceMapText: string;
5
+ cssText: string;
6
+ replacements: Replacements;
7
+ rules: Rules;
8
+ }
9
+ export interface IWorkflowActionNonLinariaResult {
10
+ code: string;
11
+ sourceMap: BabelFileResult['map'];
12
+ }
13
+ export interface IWorkflowActionLinariaResult extends IExtracted, IWorkflowActionNonLinariaResult {
14
+ dependencies: string[];
15
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,17 @@
1
+ import type { SyncScenarioForAction, ICollectAction, IEvalAction, IExtractAction, IWorkflowAction } from '../types';
2
+ import { explodeReexports } from './explodeReexports';
3
+ import { getExports } from './getExports';
4
+ import { processEntrypoint } from './processEntrypoint';
5
+ import { processImports } from './processImports';
6
+ import { transform } from './transform';
7
+ export declare const baseProcessingHandlers: {
8
+ collect: (this: ICollectAction) => SyncScenarioForAction<ICollectAction>;
9
+ evalFile: (this: IEvalAction) => SyncScenarioForAction<IEvalAction>;
10
+ extract: (this: IExtractAction) => SyncScenarioForAction<IExtractAction>;
11
+ workflow: (this: IWorkflowAction) => SyncScenarioForAction<IWorkflowAction>;
12
+ explodeReexports: typeof explodeReexports;
13
+ getExports: typeof getExports;
14
+ processEntrypoint: typeof processEntrypoint;
15
+ processImports: typeof processImports;
16
+ transform: typeof transform;
17
+ };
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.baseProcessingHandlers = void 0;
4
+ const explodeReexports_1 = require("./explodeReexports");
5
+ const getExports_1 = require("./getExports");
6
+ const processEntrypoint_1 = require("./processEntrypoint");
7
+ const processImports_1 = require("./processImports");
8
+ const transform_1 = require("./transform");
9
+ // eslint-disable-next-line require-yield
10
+ function* emptyHandler() {
11
+ throw new Error(`Handler for ${this.type} is not implemented`);
12
+ }
13
+ exports.baseProcessingHandlers = {
14
+ collect: (emptyHandler),
15
+ evalFile: (emptyHandler),
16
+ extract: (emptyHandler),
17
+ workflow: (emptyHandler),
18
+ explodeReexports: explodeReexports_1.explodeReexports,
19
+ getExports: getExports_1.getExports,
20
+ processEntrypoint: processEntrypoint_1.processEntrypoint,
21
+ processImports: processImports_1.processImports,
22
+ transform: transform_1.transform,
23
+ };