@wyw-in-js/transform 0.8.0 → 1.0.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 (327) hide show
  1. package/esm/babel.js.map +1 -1
  2. package/esm/cache.js +15 -4
  3. package/esm/cache.js.map +1 -1
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/evaluators/index.js.map +1 -1
  6. package/esm/index.js.map +1 -1
  7. package/esm/module.js +174 -15
  8. package/esm/module.js.map +1 -1
  9. package/esm/options/buildOptions.js +123 -4
  10. package/esm/options/buildOptions.js.map +1 -1
  11. package/esm/options/buildOptions.test.js +41 -0
  12. package/esm/options/buildOptions.test.js.map +1 -0
  13. package/esm/options/loadBabelOptions.js.map +1 -1
  14. package/esm/plugins/babel-transform.js.map +1 -1
  15. package/esm/plugins/collector.js.map +1 -1
  16. package/esm/plugins/dynamic-import.js +35 -12
  17. package/esm/plugins/dynamic-import.js.map +1 -1
  18. package/esm/plugins/preeval.js +4 -0
  19. package/esm/plugins/preeval.js.map +1 -1
  20. package/esm/plugins/shaker.js +170 -23
  21. package/esm/plugins/shaker.js.map +1 -1
  22. package/esm/shaker.js +6 -3
  23. package/esm/shaker.js.map +1 -1
  24. package/esm/transform/BaseEntrypoint.js.map +1 -1
  25. package/esm/transform/Entrypoint.helpers.js +105 -15
  26. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  27. package/esm/transform/Entrypoint.js +13 -2
  28. package/esm/transform/Entrypoint.js.map +1 -1
  29. package/esm/transform/Entrypoint.types.js.map +1 -1
  30. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  31. package/esm/transform/actions/AbortError.js.map +1 -1
  32. package/esm/transform/actions/BaseAction.js +5 -0
  33. package/esm/transform/actions/BaseAction.js.map +1 -1
  34. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  35. package/esm/transform/actions/actionRunner.js.map +1 -1
  36. package/esm/transform/actions/types.js.map +1 -1
  37. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  38. package/esm/transform/generators/collect.js.map +1 -1
  39. package/esm/transform/generators/createStylisPreprocessor.js +118 -2
  40. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  41. package/esm/transform/generators/evalFile.js.map +1 -1
  42. package/esm/transform/generators/explodeReexports.js +10 -10
  43. package/esm/transform/generators/explodeReexports.js.map +1 -1
  44. package/esm/transform/generators/extract.js.map +1 -1
  45. package/esm/transform/generators/getExports.js.map +1 -1
  46. package/esm/transform/generators/index.js.map +1 -1
  47. package/esm/transform/generators/processEntrypoint.js +5 -8
  48. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  49. package/esm/transform/generators/processImports.js.map +1 -1
  50. package/esm/transform/generators/resolveImports.js +41 -2
  51. package/esm/transform/generators/resolveImports.js.map +1 -1
  52. package/esm/transform/generators/transform.js +7 -3
  53. package/esm/transform/generators/transform.js.map +1 -1
  54. package/esm/transform/generators/workflow.js.map +1 -1
  55. package/esm/transform/helpers/loadWywOptions.js +15 -2
  56. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  57. package/esm/transform/helpers/withDefaultServices.js +2 -0
  58. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  59. package/esm/transform/isStaticallyEvaluatableModule.js +153 -0
  60. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -0
  61. package/esm/transform/rootLog.js.map +1 -1
  62. package/esm/transform/types.js.map +1 -1
  63. package/esm/transform.js +15 -6
  64. package/esm/transform.js.map +1 -1
  65. package/esm/types.js.map +1 -1
  66. package/esm/utils/EventEmitter.js.map +1 -1
  67. package/esm/utils/ShakerMetadata.js.map +1 -1
  68. package/esm/utils/TransformMetadata.js.map +1 -1
  69. package/esm/utils/addIdentifierToWywPreval.js.map +1 -1
  70. package/esm/utils/collectExportsAndImports.js +97 -6
  71. package/esm/utils/collectExportsAndImports.js.map +1 -1
  72. package/esm/utils/collectTemplateDependencies.js +1 -1
  73. package/esm/utils/collectTemplateDependencies.js.map +1 -1
  74. package/esm/utils/createId.js.map +1 -1
  75. package/esm/utils/dispose-polyfill.js.map +1 -1
  76. package/esm/utils/findIdentifiers.js.map +1 -1
  77. package/esm/utils/getConstantStringValue.js +58 -0
  78. package/esm/utils/getConstantStringValue.js.map +1 -0
  79. package/esm/utils/getFileIdx.js.map +1 -1
  80. package/esm/utils/getMemberExpressionPropertyName.js +11 -0
  81. package/esm/utils/getMemberExpressionPropertyName.js.map +1 -0
  82. package/esm/utils/getPluginKey.js.map +1 -1
  83. package/esm/utils/getScope.js.map +1 -1
  84. package/esm/utils/getSource.js.map +1 -1
  85. package/esm/utils/getTagProcessor.js +34 -6
  86. package/esm/utils/getTagProcessor.js.map +1 -1
  87. package/esm/utils/getVisitorKeys.js.map +1 -1
  88. package/esm/utils/hasWywPreval.js.map +1 -1
  89. package/esm/utils/importOverrides.js +47 -0
  90. package/esm/utils/importOverrides.js.map +1 -0
  91. package/esm/utils/isExports.js.map +1 -1
  92. package/esm/utils/isGlobal.js.map +1 -1
  93. package/esm/utils/isNode.js.map +1 -1
  94. package/esm/utils/isNodePath.js.map +1 -1
  95. package/esm/utils/isNotNull.js.map +1 -1
  96. package/esm/utils/isRemoved.js.map +1 -1
  97. package/esm/utils/isRequire.js.map +1 -1
  98. package/esm/utils/isSerializable.js.map +1 -1
  99. package/esm/utils/isTypedNode.js.map +1 -1
  100. package/esm/utils/isUnnecessaryReactCall.js.map +1 -1
  101. package/esm/utils/parseRequest.js +29 -0
  102. package/esm/utils/parseRequest.js.map +1 -0
  103. package/esm/utils/peek.js.map +1 -1
  104. package/esm/utils/removeDangerousCode.js +32 -2
  105. package/esm/utils/removeDangerousCode.js.map +1 -1
  106. package/esm/utils/replaceImportMetaEnv.js +44 -0
  107. package/esm/utils/replaceImportMetaEnv.js.map +1 -0
  108. package/esm/utils/scopeHelpers.js.map +1 -1
  109. package/esm/utils/traversalCache.js.map +1 -1
  110. package/esm/utils/unwrapExpression.js +18 -0
  111. package/esm/utils/unwrapExpression.js.map +1 -0
  112. package/esm/utils/unwrapSequence.js.map +1 -1
  113. package/esm/utils/valueToLiteral.js.map +1 -1
  114. package/esm/utils/visitors/JSXElementsRemover.js.map +1 -1
  115. package/esm/vm/createVmContext.js +44 -0
  116. package/esm/vm/createVmContext.js.map +1 -1
  117. package/esm/vm/process.js.map +1 -1
  118. package/lib/babel.js.map +1 -1
  119. package/lib/cache.js +16 -5
  120. package/lib/cache.js.map +1 -1
  121. package/lib/debug/fileReporter.js +1 -1
  122. package/lib/debug/fileReporter.js.map +1 -1
  123. package/lib/evaluators/index.js.map +1 -1
  124. package/lib/index.js +1 -1
  125. package/lib/index.js.map +1 -1
  126. package/lib/module.js +177 -16
  127. package/lib/module.js.map +1 -1
  128. package/lib/options/buildOptions.js +127 -6
  129. package/lib/options/buildOptions.js.map +1 -1
  130. package/lib/options/buildOptions.test.js +44 -0
  131. package/lib/options/buildOptions.test.js.map +1 -0
  132. package/lib/options/loadBabelOptions.js.map +1 -1
  133. package/lib/plugins/babel-transform.js.map +1 -1
  134. package/lib/plugins/collector.js.map +1 -1
  135. package/lib/plugins/dynamic-import.js +34 -12
  136. package/lib/plugins/dynamic-import.js.map +1 -1
  137. package/lib/plugins/preeval.js +4 -0
  138. package/lib/plugins/preeval.js.map +1 -1
  139. package/lib/plugins/shaker.js +172 -22
  140. package/lib/plugins/shaker.js.map +1 -1
  141. package/lib/shaker.js +8 -4
  142. package/lib/shaker.js.map +1 -1
  143. package/lib/transform/BaseEntrypoint.js.map +1 -1
  144. package/lib/transform/Entrypoint.helpers.js +106 -15
  145. package/lib/transform/Entrypoint.helpers.js.map +1 -1
  146. package/lib/transform/Entrypoint.js +13 -2
  147. package/lib/transform/Entrypoint.js.map +1 -1
  148. package/lib/transform/Entrypoint.types.js.map +1 -1
  149. package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
  150. package/lib/transform/actions/AbortError.js.map +1 -1
  151. package/lib/transform/actions/BaseAction.js +5 -0
  152. package/lib/transform/actions/BaseAction.js.map +1 -1
  153. package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  154. package/lib/transform/actions/actionRunner.js.map +1 -1
  155. package/lib/transform/actions/types.js.map +1 -1
  156. package/lib/transform/generators/baseProcessingHandlers.js.map +1 -1
  157. package/lib/transform/generators/collect.js.map +1 -1
  158. package/lib/transform/generators/createStylisPreprocessor.js +119 -3
  159. package/lib/transform/generators/createStylisPreprocessor.js.map +1 -1
  160. package/lib/transform/generators/evalFile.js +1 -1
  161. package/lib/transform/generators/evalFile.js.map +1 -1
  162. package/lib/transform/generators/explodeReexports.js +11 -11
  163. package/lib/transform/generators/explodeReexports.js.map +1 -1
  164. package/lib/transform/generators/extract.js.map +1 -1
  165. package/lib/transform/generators/getExports.js.map +1 -1
  166. package/lib/transform/generators/index.js.map +1 -1
  167. package/lib/transform/generators/processEntrypoint.js +5 -8
  168. package/lib/transform/generators/processEntrypoint.js.map +1 -1
  169. package/lib/transform/generators/processImports.js.map +1 -1
  170. package/lib/transform/generators/resolveImports.js +41 -2
  171. package/lib/transform/generators/resolveImports.js.map +1 -1
  172. package/lib/transform/generators/transform.js +8 -3
  173. package/lib/transform/generators/transform.js.map +1 -1
  174. package/lib/transform/generators/workflow.js.map +1 -1
  175. package/lib/transform/helpers/loadWywOptions.js +16 -2
  176. package/lib/transform/helpers/loadWywOptions.js.map +1 -1
  177. package/lib/transform/helpers/withDefaultServices.js +3 -2
  178. package/lib/transform/helpers/withDefaultServices.js.map +1 -1
  179. package/lib/transform/isStaticallyEvaluatableModule.js +159 -0
  180. package/lib/transform/isStaticallyEvaluatableModule.js.map +1 -0
  181. package/lib/transform/rootLog.js.map +1 -1
  182. package/lib/transform/types.js.map +1 -1
  183. package/lib/transform.js +15 -6
  184. package/lib/transform.js.map +1 -1
  185. package/lib/types.js.map +1 -1
  186. package/lib/utils/EventEmitter.js.map +1 -1
  187. package/lib/utils/ShakerMetadata.js.map +1 -1
  188. package/lib/utils/TransformMetadata.js.map +1 -1
  189. package/lib/utils/addIdentifierToWywPreval.js.map +1 -1
  190. package/lib/utils/collectExportsAndImports.js +97 -6
  191. package/lib/utils/collectExportsAndImports.js.map +1 -1
  192. package/lib/utils/collectTemplateDependencies.js +1 -1
  193. package/lib/utils/collectTemplateDependencies.js.map +1 -1
  194. package/lib/utils/createId.js.map +1 -1
  195. package/lib/utils/dispose-polyfill.js.map +1 -1
  196. package/lib/utils/findIdentifiers.js.map +1 -1
  197. package/lib/utils/getConstantStringValue.js +66 -0
  198. package/lib/utils/getConstantStringValue.js.map +1 -0
  199. package/lib/utils/getFileIdx.js.map +1 -1
  200. package/lib/utils/getMemberExpressionPropertyName.js +18 -0
  201. package/lib/utils/getMemberExpressionPropertyName.js.map +1 -0
  202. package/lib/utils/getPluginKey.js.map +1 -1
  203. package/lib/utils/getScope.js.map +1 -1
  204. package/lib/utils/getSource.js +1 -1
  205. package/lib/utils/getSource.js.map +1 -1
  206. package/lib/utils/getTagProcessor.js +33 -6
  207. package/lib/utils/getTagProcessor.js.map +1 -1
  208. package/lib/utils/getVisitorKeys.js.map +1 -1
  209. package/lib/utils/hasWywPreval.js.map +1 -1
  210. package/lib/utils/importOverrides.js +57 -0
  211. package/lib/utils/importOverrides.js.map +1 -0
  212. package/lib/utils/isExports.js.map +1 -1
  213. package/lib/utils/isGlobal.js.map +1 -1
  214. package/lib/utils/isNode.js.map +1 -1
  215. package/lib/utils/isNodePath.js.map +1 -1
  216. package/lib/utils/isNotNull.js.map +1 -1
  217. package/lib/utils/isRemoved.js.map +1 -1
  218. package/lib/utils/isRequire.js.map +1 -1
  219. package/lib/utils/isSerializable.js.map +1 -1
  220. package/lib/utils/isTypedNode.js.map +1 -1
  221. package/lib/utils/isUnnecessaryReactCall.js.map +1 -1
  222. package/lib/utils/parseRequest.js +37 -0
  223. package/lib/utils/parseRequest.js.map +1 -0
  224. package/lib/utils/peek.js.map +1 -1
  225. package/lib/utils/removeDangerousCode.js +32 -2
  226. package/lib/utils/removeDangerousCode.js.map +1 -1
  227. package/lib/utils/replaceImportMetaEnv.js +50 -0
  228. package/lib/utils/replaceImportMetaEnv.js.map +1 -0
  229. package/lib/utils/scopeHelpers.js.map +1 -1
  230. package/lib/utils/traversalCache.js.map +1 -1
  231. package/lib/utils/unwrapExpression.js +25 -0
  232. package/lib/utils/unwrapExpression.js.map +1 -0
  233. package/lib/utils/unwrapSequence.js.map +1 -1
  234. package/lib/utils/valueToLiteral.js.map +1 -1
  235. package/lib/utils/visitors/JSXElementsRemover.js.map +1 -1
  236. package/lib/vm/createVmContext.js +45 -2
  237. package/lib/vm/createVmContext.js.map +1 -1
  238. package/lib/vm/process.js.map +1 -1
  239. package/package.json +13 -15
  240. package/types/cache.d.ts +1 -1
  241. package/types/cache.js +15 -4
  242. package/types/evaluators/index.js +1 -1
  243. package/types/module.d.ts +1 -2
  244. package/types/module.js +189 -11
  245. package/types/options/buildOptions.d.ts +0 -1
  246. package/types/options/buildOptions.js +125 -9
  247. package/types/options/loadBabelOptions.js +1 -2
  248. package/types/plugins/babel-transform.js +1 -1
  249. package/types/plugins/collector.js +3 -3
  250. package/types/plugins/dynamic-import.js +38 -18
  251. package/types/plugins/preeval.js +5 -2
  252. package/types/plugins/shaker.d.ts +4 -1
  253. package/types/plugins/shaker.js +189 -24
  254. package/types/shaker.js +9 -3
  255. package/types/transform/BaseEntrypoint.d.ts +0 -1
  256. package/types/transform/Entrypoint.helpers.d.ts +0 -1
  257. package/types/transform/Entrypoint.helpers.js +122 -25
  258. package/types/transform/Entrypoint.js +14 -2
  259. package/types/transform/Entrypoint.types.d.ts +0 -1
  260. package/types/transform/EvaluatedEntrypoint.d.ts +0 -1
  261. package/types/transform/actions/BaseAction.d.ts +1 -1
  262. package/types/transform/actions/BaseAction.js +5 -0
  263. package/types/transform/actions/actionRunner.js +2 -3
  264. package/types/transform/generators/collect.js +1 -2
  265. package/types/transform/generators/createStylisPreprocessor.d.ts +0 -1
  266. package/types/transform/generators/createStylisPreprocessor.js +168 -13
  267. package/types/transform/generators/evalFile.js +1 -2
  268. package/types/transform/generators/explodeReexports.js +12 -15
  269. package/types/transform/generators/extract.js +1 -2
  270. package/types/transform/generators/getExports.js +2 -3
  271. package/types/transform/generators/processEntrypoint.js +13 -7
  272. package/types/transform/generators/processImports.js +1 -2
  273. package/types/transform/generators/resolveImports.js +41 -5
  274. package/types/transform/generators/transform.d.ts +1 -1
  275. package/types/transform/generators/transform.js +16 -6
  276. package/types/transform/generators/workflow.js +1 -2
  277. package/types/transform/helpers/loadWywOptions.js +16 -5
  278. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  279. package/types/transform/helpers/withDefaultServices.js +19 -8
  280. package/types/transform/isStaticallyEvaluatableModule.d.ts +2 -0
  281. package/types/transform/isStaticallyEvaluatableModule.js +177 -0
  282. package/types/transform/rootLog.d.ts +0 -1
  283. package/types/transform/types.d.ts +1 -1
  284. package/types/transform.js +17 -9
  285. package/types/types.d.ts +1 -1
  286. package/types/utils/addIdentifierToWywPreval.js +2 -3
  287. package/types/utils/collectExportsAndImports.js +102 -20
  288. package/types/utils/collectTemplateDependencies.js +3 -4
  289. package/types/utils/findIdentifiers.js +2 -3
  290. package/types/utils/getConstantStringValue.d.ts +2 -0
  291. package/types/utils/getConstantStringValue.js +94 -0
  292. package/types/utils/getFileIdx.js +1 -2
  293. package/types/utils/getMemberExpressionPropertyName.d.ts +2 -0
  294. package/types/utils/getMemberExpressionPropertyName.js +46 -0
  295. package/types/utils/getScope.js +1 -2
  296. package/types/utils/getTagProcessor.js +35 -9
  297. package/types/utils/getVisitorKeys.js +1 -2
  298. package/types/utils/hasWywPreval.js +1 -1
  299. package/types/utils/importOverrides.d.ts +19 -0
  300. package/types/utils/importOverrides.js +40 -0
  301. package/types/utils/isExports.js +1 -2
  302. package/types/utils/isNodePath.js +1 -2
  303. package/types/utils/isNotNull.js +1 -2
  304. package/types/utils/isRemoved.js +1 -2
  305. package/types/utils/isRequire.js +1 -2
  306. package/types/utils/isSerializable.js +1 -2
  307. package/types/utils/isUnnecessaryReactCall.js +1 -2
  308. package/types/utils/parseRequest.d.ts +7 -0
  309. package/types/utils/parseRequest.js +29 -0
  310. package/types/utils/removeDangerousCode.js +37 -2
  311. package/types/utils/replaceImportMetaEnv.d.ts +3 -0
  312. package/types/utils/replaceImportMetaEnv.js +39 -0
  313. package/types/utils/scopeHelpers.js +7 -8
  314. package/types/utils/traversalCache.d.ts +1 -1
  315. package/types/utils/unwrapExpression.d.ts +2 -0
  316. package/types/utils/unwrapExpression.js +57 -0
  317. package/types/utils/unwrapSequence.js +1 -2
  318. package/types/utils/valueToLiteral.js +1 -2
  319. package/types/utils/visitors/JSXElementsRemover.js +1 -2
  320. package/types/vm/createVmContext.d.ts +0 -1
  321. package/types/vm/createVmContext.js +68 -9
  322. package/types/vm/process.d.ts +0 -2
  323. package/LICENSE +0 -21
  324. package/esm/options/babel-merge.d.js +0 -2
  325. package/esm/options/babel-merge.d.js.map +0 -1
  326. package/lib/options/babel-merge.d.js +0 -2
  327. package/lib/options/babel-merge.d.js.map +0 -1
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","names":["_fs","_interopRequireDefault","require","_module","_path","_vm","_tsInvariant","_shared","_Entrypoint","_Entrypoint2","_UnprocessedEntrypointError","_createVmContext","obj","__esModule","default","DefaultModuleImplementation","exports","NativeModule","builtins","assert","buffer","child_process","cluster","console","constants","crypto","dgram","dns","domain","events","fs","http","https","module","net","os","path","punycode","process","querystring","readline","repl","stream","string_decoder","sys","timers","tls","tty","url","util","vm","zlib","NOOP","getUncached","cached","test","cachedSet","Set","split","has","filter","t","resolve","id","resolved","resolveDependency","invariant","Module","callstack","isEvaluated","Object","assign","debug","dependency","isAbsolute","Error","source","dependencies","push","entrypoint","getEntrypoint","only","evaluated","isSuperSet","evaluatedOnly","m","createChild","evaluate","ensure","bind","entrypointRef","constructor","services","parentModule","moduleImpl","_parentModule$ignored","_entrypoint$ignored","cache","isFeatureEnabled","options","pluginOptions","features","name","WeakRef","idx","filename","log","extend","parentIsIgnored","ignored","extensions","value","deref","assertTransformed","get","evaluatedCreated","supersededWith","add","createEvaluated","transformedCode","JSON","parse","context","teardown","createVmContext","__wyw_dynamic_import","__dirname","dirname","overrideContext","script","Script","runInContext","e","isUnprocessedEntrypointError","EvalError","message","join","_entrypoint$evaluated","extension","extname","includes","newEntrypoint","readFileSync","stack","getStack","_entrypoint$only","uncachedExports","length","code","Entrypoint","createRoot","getDependency","Promise","_extensions","added","forEach","ext","_resolveFilename","paths","_nodeModulePaths"],"sources":["../src/module.ts"],"sourcesContent":["/**\n * This is a custom implementation for the module system for evaluating code,\n * used for resolving values for dependencies interpolated in `css` or `styled`.\n *\n * This serves 2 purposes:\n * - Avoid leakage from evaluated code to module cache in current context, e.g. `babel-register`\n * - Allow us to invalidate the module cache without affecting other stuff, necessary for rebuilds\n *\n * We also use it to transpile the code with Babel by default.\n * We also store source maps for it to provide correct error stacktraces.\n *\n */\n\nimport fs from 'fs';\nimport NativeModule from 'module';\nimport path from 'path';\nimport vm from 'vm';\n\nimport { invariant } from 'ts-invariant';\n\nimport { isFeatureEnabled, type Debugger } from '@wyw-in-js/shared';\n\nimport './utils/dispose-polyfill';\nimport type { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport { getStack, isSuperSet } from './transform/Entrypoint.helpers';\nimport type { IEntrypointDependency } from './transform/Entrypoint.types';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { isUnprocessedEntrypointError } from './transform/actions/UnprocessedEntrypointError';\nimport type { Services } from './transform/types';\nimport { createVmContext } from './vm/createVmContext';\n\ntype HiddenModuleMembers = {\n _extensions: Record<string, () => void>;\n _resolveFilename: (\n id: string,\n options: { filename: string; id: string; paths: string[] }\n ) => string;\n _nodeModulePaths(filename: string): string[];\n};\n\nexport const DefaultModuleImplementation = NativeModule as typeof NativeModule &\n HiddenModuleMembers;\n\n// Supported node builtins based on the modules polyfilled by webpack\n// `true` means module is polyfilled, `false` means module is empty\nconst builtins = {\n assert: true,\n buffer: true,\n child_process: false,\n cluster: false,\n console: true,\n constants: true,\n crypto: true,\n dgram: false,\n dns: false,\n domain: true,\n events: true,\n fs: false,\n http: true,\n https: true,\n module: false,\n net: false,\n os: true,\n path: true,\n punycode: true,\n process: true,\n querystring: true,\n readline: false,\n repl: false,\n stream: true,\n string_decoder: true,\n sys: true,\n timers: true,\n tls: false,\n tty: true,\n url: true,\n util: true,\n vm: true,\n zlib: true,\n};\n\nconst NOOP = () => {};\n\nfunction getUncached(cached: string | string[], test: string[]): string[] {\n const cachedSet = new Set(\n typeof cached === 'string' ? cached.split(',') : cached\n );\n\n if (cachedSet.has('*')) {\n return [];\n }\n\n return test.filter((t) => !cachedSet.has(t));\n}\n\nfunction resolve(\n this: { resolveDependency: (id: string) => IEntrypointDependency },\n id: string\n): string {\n const { resolved } = this.resolveDependency(id);\n invariant(resolved, `Unable to resolve \"${id}\"`);\n return resolved;\n}\n\nexport class Module {\n public readonly callstack: string[] = [];\n\n public readonly debug: Debugger;\n\n public readonly dependencies: string[];\n\n public readonly extensions: string[];\n\n public readonly filename: string;\n\n public id: string;\n\n public readonly idx: string;\n\n public readonly ignored: boolean;\n\n public isEvaluated: boolean = false;\n\n public readonly parentIsIgnored: boolean;\n\n public require: {\n (id: string): unknown;\n ensure: () => void;\n resolve: (id: string) => string;\n } = Object.assign(\n (id: string) => {\n if (id in builtins) {\n // The module is in the allowed list of builtin node modules\n // Ideally we should prevent importing them, but webpack polyfills some\n // So we check for the list of polyfills to determine which ones to support\n if (builtins[id as keyof typeof builtins]) {\n this.debug('require', `builtin '${id}'`);\n return require(id);\n }\n\n return null;\n }\n\n // Resolve module id (and filename) relatively to parent module\n const dependency = this.resolveDependency(id);\n if (dependency.resolved === id && !path.isAbsolute(id)) {\n // The module is a builtin node modules, but not in the allowed list\n throw new Error(\n `Unable to import \"${id}\". Importing Node builtins is not supported in the sandbox.`\n );\n }\n\n invariant(\n dependency.resolved,\n `Dependency ${dependency.source} cannot be resolved`\n );\n\n this.dependencies.push(id);\n\n this.debug('require', `${id} -> ${dependency.resolved}`);\n\n const entrypoint = this.getEntrypoint(\n dependency.resolved,\n dependency.only,\n this.debug\n );\n\n if (entrypoint === null) {\n return dependency.resolved;\n }\n\n if (\n entrypoint.evaluated ||\n isSuperSet(entrypoint.evaluatedOnly, dependency.only)\n ) {\n return entrypoint.exports;\n }\n\n const m = this.createChild(entrypoint);\n m.evaluate();\n\n return entrypoint.exports;\n },\n {\n ensure: NOOP,\n resolve: resolve.bind(this),\n }\n );\n\n public resolve = resolve.bind(this);\n\n private cache: TransformCacheCollection;\n\n #entrypointRef: WeakRef<Entrypoint> | Entrypoint;\n\n constructor(\n private services: Services,\n entrypoint: Entrypoint,\n parentModule?: Module,\n private moduleImpl: HiddenModuleMembers = DefaultModuleImplementation\n ) {\n this.cache = services.cache;\n this.#entrypointRef = isFeatureEnabled(\n services.options.pluginOptions.features,\n 'useWeakRefInEval',\n entrypoint.name\n )\n ? new WeakRef(entrypoint)\n : entrypoint;\n this.idx = entrypoint.idx;\n this.id = entrypoint.name;\n this.filename = entrypoint.name;\n this.dependencies = [];\n this.debug = entrypoint.log.extend('module');\n this.parentIsIgnored = parentModule?.ignored ?? false;\n this.ignored = entrypoint.ignored ?? this.parentIsIgnored;\n\n if (parentModule) {\n this.callstack = [entrypoint.name, ...parentModule.callstack];\n } else {\n this.callstack = [entrypoint.name];\n }\n\n this.extensions = services.options.pluginOptions.extensions;\n\n this.debug('init', entrypoint.name);\n }\n\n public get exports() {\n return this.entrypoint.exports;\n }\n\n public set exports(value) {\n this.entrypoint.exports = value;\n\n this.debug('the whole exports was overridden with %O', value);\n }\n\n protected get entrypoint(): Entrypoint {\n const entrypoint =\n this.#entrypointRef instanceof WeakRef\n ? this.#entrypointRef.deref()\n : this.#entrypointRef;\n invariant(entrypoint, `Module ${this.idx} is disposed`);\n return entrypoint;\n }\n\n evaluate(): void {\n const { entrypoint } = this;\n entrypoint.assertTransformed();\n\n const cached = this.cache.get('entrypoints', entrypoint.name)!;\n let evaluatedCreated = false;\n if (!entrypoint.supersededWith) {\n this.cache.add(\n 'entrypoints',\n entrypoint.name,\n entrypoint.createEvaluated()\n );\n evaluatedCreated = true;\n }\n\n const { transformedCode: source } = entrypoint;\n const { pluginOptions } = this.services.options;\n\n if (!source) {\n this.debug(`evaluate`, 'there is nothing to evaluate');\n return;\n }\n\n if (this.isEvaluated) {\n this.debug('evaluate', `is already evaluated`);\n return;\n }\n\n this.debug('evaluate');\n this.debug.extend('source')('%s', source);\n\n this.isEvaluated = true;\n\n const { filename } = this;\n\n if (/\\.json$/.test(filename)) {\n // For JSON files, parse it to a JS object similar to Node\n this.exports = JSON.parse(source);\n return;\n }\n\n const { context, teardown } = createVmContext(\n filename,\n pluginOptions.features,\n {\n module: this,\n exports: entrypoint.exports,\n require: this.require,\n __wyw_dynamic_import: async (id: string) => this.require(id),\n __dirname: path.dirname(filename),\n },\n pluginOptions.overrideContext\n );\n\n try {\n const script = new vm.Script(\n `(function (exports) { ${source}\\n})(exports);`,\n {\n filename,\n }\n );\n\n script.runInContext(context);\n } catch (e) {\n this.isEvaluated = false;\n if (evaluatedCreated) {\n this.cache.add('entrypoints', entrypoint.name, cached);\n }\n\n if (isUnprocessedEntrypointError(e)) {\n // It will be handled by evalFile scenario\n throw e;\n }\n\n if (e instanceof EvalError) {\n this.debug('%O', e);\n\n throw e;\n }\n\n this.debug('%O\\n%O', e, this.callstack);\n throw new EvalError(\n `${(e as Error).message} in${this.callstack.join('\\n| ')}\\n`\n );\n } finally {\n teardown();\n }\n }\n\n getEntrypoint(\n filename: string,\n only: string[],\n log: Debugger\n ): Entrypoint | IEvaluatedEntrypoint | null {\n const extension = path.extname(filename);\n if (extension !== '.json' && !this.extensions.includes(extension)) {\n return null;\n }\n\n const entrypoint = this.cache.get('entrypoints', filename);\n if (entrypoint && isSuperSet(entrypoint.evaluatedOnly ?? [], only)) {\n log('✅ file has been already evaluated');\n return entrypoint;\n }\n\n if (entrypoint?.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return entrypoint;\n }\n\n if (this.ignored) {\n log(\n '✅ one of the parent files has been ignored during prepare stage. Original code will be used'\n );\n\n const newEntrypoint = this.entrypoint.createChild(\n filename,\n ['*'],\n fs.readFileSync(filename, 'utf-8')\n );\n\n if (newEntrypoint === 'loop') {\n const stack = getStack(this.entrypoint);\n throw new Error(\n `Circular dependency detected: ${stack.join(' -> ')} -> ${filename}`\n );\n }\n\n return newEntrypoint;\n }\n\n // Requested file can be already prepared for evaluation on the stage 1\n if (only && entrypoint) {\n const uncachedExports = getUncached(entrypoint.only ?? [], only);\n if (uncachedExports.length === 0) {\n log('✅ ready for evaluation');\n return entrypoint;\n }\n\n log(\n '❌ file has been processed during prepare stage but %o is not evaluated yet (evaluated: %o)',\n uncachedExports,\n entrypoint.only\n );\n } else {\n log('❌ file has not been processed during prepare stage');\n }\n\n // If code wasn't extracted from cache, it indicates that we were unable\n // to process some of the imports on stage1. Let's try to reprocess.\n const code = fs.readFileSync(filename, 'utf-8');\n const newEntrypoint = Entrypoint.createRoot(\n this.services,\n filename,\n only,\n code\n );\n\n if (newEntrypoint.evaluated) {\n log('✅ file has been already evaluated');\n return newEntrypoint;\n }\n\n if (newEntrypoint.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return newEntrypoint;\n }\n\n return newEntrypoint;\n }\n\n resolveDependency = (id: string): IEntrypointDependency => {\n const cached = this.entrypoint.getDependency(id);\n invariant(!(cached instanceof Promise), 'Dependency is not resolved yet');\n\n if (cached) {\n return cached;\n }\n\n if (!this.ignored) {\n this.debug(\n '❌ import has not been resolved during prepare stage. Fallback to Node.js resolver'\n );\n }\n\n const extensions = this.moduleImpl._extensions;\n const added: string[] = [];\n\n try {\n // Check for supported extensions\n this.extensions.forEach((ext) => {\n if (ext in extensions) {\n return;\n }\n\n // When an extension is not supported, add it\n // And keep track of it to clean it up after resolving\n // Use noop for the transform function since we handle it\n extensions[ext] = NOOP;\n added.push(ext);\n });\n\n const { filename } = this;\n\n const resolved = this.moduleImpl._resolveFilename(id, {\n id: filename,\n filename,\n paths: this.moduleImpl._nodeModulePaths(path.dirname(filename)),\n });\n\n return {\n source: id,\n only: ['*'],\n resolved,\n };\n } finally {\n // Cleanup the extensions we added to restore previous behaviour\n added.forEach((ext) => delete extensions[ext]);\n }\n };\n\n protected createChild(entrypoint: Entrypoint): Module {\n return new Module(this.services, entrypoint, this, this.moduleImpl);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","names":["_fs","_interopRequireDefault","require","_module","_path","_vm","_tsInvariant","_shared","_Entrypoint","_Entrypoint2","_UnprocessedEntrypointError","_importOverrides","_parseRequest","_createVmContext","e","__esModule","default","DefaultModuleImplementation","exports","NativeModule","builtins","assert","buffer","child_process","cluster","console","constants","crypto","dgram","dns","domain","events","fs","http","https","module","net","os","path","punycode","process","querystring","readline","repl","stream","string_decoder","sys","timers","tls","tty","url","util","vm","zlib","VITE_VIRTUAL_PREFIX","REACT_REFRESH_VIRTUAL_ID","reactRefreshRuntime","createSignatureFunctionForTransform","NOOP","warnedUnknownImportsByServices","WeakMap","emitWarning","services","message","warn","getWarnedUnknownImports","cached","get","created","Set","set","getUncached","test","cachedSet","split","has","filter","t","resolve","id","resolved","resolveDependency","invariant","defaultImportLoaders","raw","Module","callstack","isEvaluated","Object","assign","dependencies","push","debug","startsWith","dependency","isAbsolute","Error","source","loaded","loadByImportLoaders","handled","value","entrypoint","getEntrypoint","only","evaluated","isSuperSet","evaluatedOnly","m","createChild","evaluate","ensure","bind","entrypointRef","constructor","parentModule","moduleImpl","_parentModule$ignored","_entrypoint$ignored","cache","isFeatureEnabled","options","pluginOptions","features","name","WeakRef","idx","filename","log","extend","parentIsIgnored","ignored","extensions","deref","assertTransformed","evaluatedCreated","supersededWith","add","createEvaluated","transformedCode","stripQueryAndHash","JSON","parse","context","teardown","createVmContext","__wyw_dynamic_import","String","__dirname","dirname","overrideContext","script","Script","runInContext","isUnprocessedEntrypointError","EvalError","join","_entrypoint$evaluated","strippedFilename","extension","extname","includes","newEntrypoint","readFileSync","stack","getStack","uncachedExports","reprocessOnly","_entrypoint$evaluated2","_entrypoint$only","_entrypoint$evaluated3","evaluatedExports","length","mergeOnly","code","Entrypoint","createRoot","getDependency","Promise","_extensions","added","_this$services$option","_override$unknown","forEach","ext","strippedId","_resolveFilename","paths","_nodeModulePaths","isFileSpecifier","endsWith","existsSync","slice","root","keyInfo","toImportKey","override","importOverrides","key","policy","unknown","mock","shouldWarn","finalResolved","resolveMockSpecifier","importer","_message","errorMessage","map","item","Boolean","warnedUnknownImports","stringify","applyImportOverrideToOnly","request","importLoaders","undefined","query","hash","parseRequest","params","URLSearchParams","matchedKey","Array","from","keys","find","loader","importerDir","toUrl","relative","replace","posix","sep","readFile"],"sources":["../src/module.ts"],"sourcesContent":["/**\n * This is a custom implementation for the module system for evaluating code,\n * used for resolving values for dependencies interpolated in `css` or `styled`.\n *\n * This serves 2 purposes:\n * - Avoid leakage from evaluated code to module cache in current context, e.g. `babel-register`\n * - Allow us to invalidate the module cache without affecting other stuff, necessary for rebuilds\n *\n * We also use it to transpile the code with Babel by default.\n * We also store source maps for it to provide correct error stacktraces.\n *\n */\n\nimport fs from 'fs';\nimport NativeModule from 'module';\nimport path from 'path';\nimport vm from 'vm';\n\nimport { invariant } from 'ts-invariant';\n\nimport {\n isFeatureEnabled,\n type Debugger,\n type ImportLoaderContext,\n type ImportLoaders,\n} from '@wyw-in-js/shared';\n\nimport './utils/dispose-polyfill';\nimport type { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n getStack,\n isSuperSet,\n mergeOnly,\n} from './transform/Entrypoint.helpers';\nimport type { IEntrypointDependency } from './transform/Entrypoint.types';\nimport type { IEvaluatedEntrypoint } from './transform/EvaluatedEntrypoint';\nimport { isUnprocessedEntrypointError } from './transform/actions/UnprocessedEntrypointError';\nimport type { Services } from './transform/types';\nimport {\n applyImportOverrideToOnly,\n resolveMockSpecifier,\n toImportKey,\n} from './utils/importOverrides';\nimport { parseRequest, stripQueryAndHash } from './utils/parseRequest';\nimport { createVmContext } from './vm/createVmContext';\n\ntype HiddenModuleMembers = {\n _extensions: Record<string, () => void>;\n _resolveFilename: (\n id: string,\n options: { filename: string; id: string; paths: string[] }\n ) => string;\n _nodeModulePaths(filename: string): string[];\n};\n\nexport const DefaultModuleImplementation = NativeModule as typeof NativeModule &\n HiddenModuleMembers;\n\n// Supported node builtins based on the modules polyfilled by webpack\n// `true` means module is polyfilled, `false` means module is empty\nconst builtins = {\n assert: true,\n buffer: true,\n child_process: false,\n cluster: false,\n console: true,\n constants: true,\n crypto: true,\n dgram: false,\n dns: false,\n domain: true,\n events: true,\n fs: false,\n http: true,\n https: true,\n module: false,\n net: false,\n os: true,\n path: true,\n punycode: true,\n process: true,\n querystring: true,\n readline: false,\n repl: false,\n stream: true,\n string_decoder: true,\n sys: true,\n timers: true,\n tls: false,\n tty: true,\n url: true,\n util: true,\n vm: true,\n zlib: true,\n};\n\nconst VITE_VIRTUAL_PREFIX = '/@';\nconst REACT_REFRESH_VIRTUAL_ID = '/@react-refresh';\nconst reactRefreshRuntime = {\n createSignatureFunctionForTransform: () => () => {},\n};\n\nconst NOOP = () => {};\n\nconst warnedUnknownImportsByServices = new WeakMap<Services, Set<string>>();\n\nfunction emitWarning(services: Services, message: string) {\n if (services.emitWarning) {\n services.emitWarning(message);\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(message);\n}\n\nfunction getWarnedUnknownImports(services: Services): Set<string> {\n const cached = warnedUnknownImportsByServices.get(services);\n if (cached) {\n return cached;\n }\n\n const created = new Set<string>();\n warnedUnknownImportsByServices.set(services, created);\n return created;\n}\n\nfunction getUncached(cached: string | string[], test: string[]): string[] {\n const cachedSet = new Set(\n typeof cached === 'string' ? cached.split(',') : cached\n );\n\n if (cachedSet.has('*')) {\n return [];\n }\n\n return test.filter((t) => !cachedSet.has(t));\n}\n\nfunction resolve(\n this: { resolveDependency: (id: string) => IEntrypointDependency },\n id: string\n): string {\n const { resolved } = this.resolveDependency(id);\n invariant(resolved, `Unable to resolve \"${id}\"`);\n return resolved;\n}\n\nconst defaultImportLoaders: ImportLoaders = {\n raw: 'raw',\n url: 'url',\n};\n\nexport class Module {\n public readonly callstack: string[] = [];\n\n public readonly debug: Debugger;\n\n public readonly dependencies: string[];\n\n public readonly extensions: string[];\n\n public readonly filename: string;\n\n public id: string;\n\n public readonly idx: string;\n\n public readonly ignored: boolean;\n\n public isEvaluated: boolean = false;\n\n public readonly parentIsIgnored: boolean;\n\n public require: {\n (id: string): unknown;\n ensure: () => void;\n resolve: (id: string) => string;\n } = Object.assign(\n (id: string) => {\n if (id === REACT_REFRESH_VIRTUAL_ID) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return reactRefreshRuntime;\n }\n\n if (id.startsWith(VITE_VIRTUAL_PREFIX)) {\n this.dependencies.push(id);\n this.debug('require', `vite virtual '${id}'`);\n return {};\n }\n\n if (id in builtins) {\n // The module is in the allowed list of builtin node modules\n // Ideally we should prevent importing them, but webpack polyfills some\n // So we check for the list of polyfills to determine which ones to support\n if (builtins[id as keyof typeof builtins]) {\n this.debug('require', `builtin '${id}'`);\n return require(id);\n }\n\n return null;\n }\n\n // Resolve module id (and filename) relatively to parent module\n const dependency = this.resolveDependency(id);\n if (dependency.resolved === id && !path.isAbsolute(id)) {\n // The module is a builtin node modules, but not in the allowed list\n throw new Error(\n `Unable to import \"${id}\". Importing Node builtins is not supported in the sandbox.`\n );\n }\n\n invariant(\n dependency.resolved,\n `Dependency ${dependency.source} cannot be resolved`\n );\n\n const loaded = this.loadByImportLoaders(id, dependency.resolved);\n if (loaded.handled) {\n this.dependencies.push(id);\n this.debug('require', `${id} -> ${dependency.resolved} (loader)`);\n return loaded.value;\n }\n\n this.dependencies.push(id);\n\n this.debug('require', `${id} -> ${dependency.resolved}`);\n\n const entrypoint = this.getEntrypoint(\n dependency.resolved,\n dependency.only,\n this.debug\n );\n\n if (entrypoint === null) {\n return dependency.resolved;\n }\n\n if (\n entrypoint.evaluated ||\n isSuperSet(entrypoint.evaluatedOnly, dependency.only)\n ) {\n return entrypoint.exports;\n }\n\n const m = this.createChild(entrypoint);\n m.evaluate();\n\n return entrypoint.exports;\n },\n {\n ensure: NOOP,\n resolve: resolve.bind(this),\n }\n );\n\n public resolve = resolve.bind(this);\n\n private cache: TransformCacheCollection;\n\n #entrypointRef: WeakRef<Entrypoint> | Entrypoint;\n\n constructor(\n private services: Services,\n entrypoint: Entrypoint,\n parentModule?: Module,\n private moduleImpl: HiddenModuleMembers = DefaultModuleImplementation\n ) {\n this.cache = services.cache;\n this.#entrypointRef = isFeatureEnabled(\n services.options.pluginOptions.features,\n 'useWeakRefInEval',\n entrypoint.name\n )\n ? new WeakRef(entrypoint)\n : entrypoint;\n this.idx = entrypoint.idx;\n this.id = entrypoint.name;\n this.filename = entrypoint.name;\n this.dependencies = [];\n this.debug = entrypoint.log.extend('module');\n this.parentIsIgnored = parentModule?.ignored ?? false;\n this.ignored = entrypoint.ignored ?? this.parentIsIgnored;\n\n if (parentModule) {\n this.callstack = [entrypoint.name, ...parentModule.callstack];\n } else {\n this.callstack = [entrypoint.name];\n }\n\n this.extensions = services.options.pluginOptions.extensions;\n\n this.debug('init', entrypoint.name);\n }\n\n public get exports() {\n return this.entrypoint.exports;\n }\n\n public set exports(value) {\n this.entrypoint.exports = value;\n\n this.debug('the whole exports was overridden with %O', value);\n }\n\n protected get entrypoint(): Entrypoint {\n const entrypoint =\n this.#entrypointRef instanceof WeakRef\n ? this.#entrypointRef.deref()\n : this.#entrypointRef;\n invariant(entrypoint, `Module ${this.idx} is disposed`);\n return entrypoint;\n }\n\n evaluate(): void {\n const { entrypoint } = this;\n entrypoint.assertTransformed();\n\n const cached = this.cache.get('entrypoints', entrypoint.name)!;\n let evaluatedCreated = false;\n if (!entrypoint.supersededWith) {\n this.cache.add(\n 'entrypoints',\n entrypoint.name,\n entrypoint.createEvaluated()\n );\n evaluatedCreated = true;\n }\n\n const { transformedCode: source } = entrypoint;\n const { pluginOptions } = this.services.options;\n\n if (!source) {\n this.debug(`evaluate`, 'there is nothing to evaluate');\n return;\n }\n\n if (this.isEvaluated) {\n this.debug('evaluate', `is already evaluated`);\n return;\n }\n\n this.debug('evaluate');\n this.debug.extend('source')('%s', source);\n\n this.isEvaluated = true;\n\n const filename = stripQueryAndHash(this.filename);\n\n if (/\\.json$/.test(filename)) {\n // For JSON files, parse it to a JS object similar to Node\n this.exports = JSON.parse(source);\n return;\n }\n\n const { context, teardown } = createVmContext(\n filename,\n pluginOptions.features,\n {\n module: this,\n exports: entrypoint.exports,\n require: this.require,\n __wyw_dynamic_import: async (id: unknown) => this.require(String(id)),\n __dirname: path.dirname(filename),\n },\n pluginOptions.overrideContext\n );\n\n try {\n const script = new vm.Script(\n `(function (exports) { ${source}\\n})(exports);`,\n {\n filename,\n }\n );\n\n script.runInContext(context);\n } catch (e) {\n this.isEvaluated = false;\n if (evaluatedCreated) {\n this.cache.add('entrypoints', entrypoint.name, cached);\n }\n\n if (isUnprocessedEntrypointError(e)) {\n // It will be handled by evalFile scenario\n throw e;\n }\n\n if (e instanceof EvalError) {\n this.debug('%O', e);\n\n throw e;\n }\n\n this.debug('%O\\n%O', e, this.callstack);\n throw new EvalError(\n `${(e as Error).message} in${this.callstack.join('\\n| ')}\\n`\n );\n } finally {\n teardown();\n }\n }\n\n getEntrypoint(\n filename: string,\n only: string[],\n log: Debugger\n ): Entrypoint | IEvaluatedEntrypoint | null {\n const strippedFilename = stripQueryAndHash(filename);\n const extension = path.extname(strippedFilename);\n if (extension !== '.json' && !this.extensions.includes(extension)) {\n return null;\n }\n\n const entrypoint = this.cache.get('entrypoints', filename);\n if (entrypoint && isSuperSet(entrypoint.evaluatedOnly ?? [], only)) {\n log('✅ file has been already evaluated');\n return entrypoint;\n }\n\n if (entrypoint?.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return entrypoint;\n }\n\n if (this.ignored) {\n log(\n '✅ one of the parent files has been ignored during prepare stage. Original code will be used'\n );\n\n const newEntrypoint = this.entrypoint.createChild(\n filename,\n ['*'],\n fs.readFileSync(strippedFilename, 'utf-8')\n );\n\n if (newEntrypoint === 'loop') {\n const stack = getStack(this.entrypoint);\n throw new Error(\n `Circular dependency detected: ${stack.join(' -> ')} -> ${filename}`\n );\n }\n\n return newEntrypoint;\n }\n\n let uncachedExports: string[] | null = null;\n let reprocessOnly: string[] = only;\n // Requested file can be already prepared for evaluation on the stage 1\n if (only && entrypoint) {\n const evaluatedExports =\n entrypoint.evaluatedOnly?.length !== 0\n ? entrypoint.evaluatedOnly\n : entrypoint.only ?? [];\n uncachedExports = getUncached(evaluatedExports, only);\n if (uncachedExports.length === 0) {\n log('✅ ready for evaluation');\n return entrypoint;\n }\n\n if (entrypoint.evaluatedOnly?.length) {\n reprocessOnly = mergeOnly(evaluatedExports, only);\n }\n\n log(\n '❌ file has been processed during prepare stage but %o is not evaluated yet (evaluated: %o)',\n uncachedExports,\n evaluatedExports\n );\n } else {\n log('❌ file has not been processed during prepare stage');\n }\n\n // If code wasn't extracted from cache, it indicates that we were unable\n // to process some of the imports on stage1. Let's try to reprocess.\n const code = fs.readFileSync(strippedFilename, 'utf-8');\n const newEntrypoint = Entrypoint.createRoot(\n this.services,\n filename,\n reprocessOnly,\n code\n );\n\n if (newEntrypoint.evaluated) {\n log('✅ file has been already evaluated');\n return newEntrypoint;\n }\n\n if (newEntrypoint.ignored) {\n log(\n '✅ file has been ignored during prepare stage. Original code will be used'\n );\n return newEntrypoint;\n }\n\n return newEntrypoint;\n }\n\n resolveDependency = (id: string): IEntrypointDependency => {\n const cached = this.entrypoint.getDependency(id);\n invariant(!(cached instanceof Promise), 'Dependency is not resolved yet');\n\n if (cached) {\n return cached;\n }\n\n if (!this.ignored) {\n this.debug(\n '❌ import has not been resolved during prepare stage. Fallback to Node.js resolver'\n );\n }\n\n const extensions = this.moduleImpl._extensions;\n const added: string[] = [];\n\n try {\n // Check for supported extensions\n this.extensions.forEach((ext) => {\n if (ext in extensions) {\n return;\n }\n\n // When an extension is not supported, add it\n // And keep track of it to clean it up after resolving\n // Use noop for the transform function since we handle it\n extensions[ext] = NOOP;\n added.push(ext);\n });\n\n const { filename } = this;\n const strippedId = stripQueryAndHash(id);\n\n let resolved = this.moduleImpl._resolveFilename(strippedId, {\n id: filename,\n filename,\n paths: this.moduleImpl._nodeModulePaths(path.dirname(filename)),\n });\n\n const isFileSpecifier =\n strippedId.startsWith('.') || path.isAbsolute(strippedId);\n\n if (\n isFileSpecifier &&\n path.extname(strippedId) === '' &&\n resolved.endsWith('.cjs') &&\n fs.existsSync(`${resolved.slice(0, -4)}.js`)\n ) {\n // When both `.cjs` and `.js` exist for an extensionless specifier, the\n // resolver may pick `.cjs` depending on the environment/extensions.\n // Prefer `.js` to keep resolved paths stable (e.g. importOverrides keys).\n resolved = `${resolved.slice(0, -4)}.js`;\n }\n\n const { root } = this.services.options;\n const keyInfo = toImportKey({\n source: id,\n resolved,\n root,\n });\n\n const override =\n this.services.options.pluginOptions.importOverrides?.[keyInfo.key];\n\n const policy = override?.unknown ?? (override?.mock ? 'allow' : 'warn');\n const shouldWarn = !this.ignored && policy === 'warn';\n\n let finalResolved = resolved;\n if (override?.mock) {\n try {\n finalResolved = resolveMockSpecifier({\n mock: override.mock,\n importer: filename,\n root,\n stack: this.callstack,\n });\n } catch (e) {\n const errorMessage = String((e as Error)?.message ?? e);\n throw new Error(\n `[wyw-in-js] Failed to resolve import mock for \"${keyInfo.key}\" (${id} from ${filename}): ${errorMessage}`\n );\n }\n }\n\n if (policy === 'error') {\n throw new Error(\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n const warnedUnknownImports = getWarnedUnknownImports(this.services);\n\n if (shouldWarn && !warnedUnknownImports.has(keyInfo.key)) {\n warnedUnknownImports.add(keyInfo.key);\n emitWarning(\n this.services,\n [\n `[wyw-in-js] Unknown import reached during eval (Node resolver fallback)`,\n ``,\n `importer: ${filename}`,\n `source: ${id}`,\n `resolved: ${resolved}`,\n override?.mock\n ? `mock: ${override.mock} -> ${finalResolved}`\n : ``,\n ``,\n `callstack:`,\n ...this.callstack.map((item) => ` ${item}`),\n ``,\n `config key: ${keyInfo.key}`,\n `hint: add { importOverrides: { ${JSON.stringify(\n keyInfo.key\n )}: { unknown: 'allow' } } } to silence warnings, or use { mock } / { noShake: true } overrides.`,\n ]\n .filter(Boolean)\n .join('\\n')\n );\n }\n\n return {\n source: id,\n only: applyImportOverrideToOnly(['*'], override),\n resolved: finalResolved,\n };\n } finally {\n // Cleanup the extensions we added to restore previous behaviour\n added.forEach((ext) => delete extensions[ext]);\n }\n };\n\n protected createChild(entrypoint: Entrypoint): Module {\n return new Module(this.services, entrypoint, this, this.moduleImpl);\n }\n\n private loadByImportLoaders(\n request: string,\n resolved: string\n ): { handled: boolean; value: unknown } {\n const { pluginOptions } = this.services.options;\n const importLoaders =\n pluginOptions.importLoaders === undefined\n ? defaultImportLoaders\n : { ...defaultImportLoaders, ...pluginOptions.importLoaders };\n\n const { query, hash } = parseRequest(request);\n if (!query) return { handled: false, value: undefined };\n\n const params = new URLSearchParams(query);\n const matchedKey = Array.from(params.keys()).find(\n (key) => importLoaders[key] !== undefined && importLoaders[key] !== false\n );\n\n if (!matchedKey) return { handled: false, value: undefined };\n\n const loader = importLoaders[matchedKey];\n\n const filename = stripQueryAndHash(resolved);\n const importer = stripQueryAndHash(this.filename);\n const importerDir = path.dirname(importer);\n\n const toUrl = () => {\n const relative = path\n .relative(importerDir, filename)\n .replace(/\\\\/g, path.posix.sep);\n\n if (relative.startsWith('.') || path.isAbsolute(relative)) {\n return relative;\n }\n\n return `./${relative}`;\n };\n\n const readFile = () => fs.readFileSync(filename, 'utf-8');\n\n const context: ImportLoaderContext = {\n importer,\n request,\n resolved,\n filename,\n query,\n hash,\n emitWarning: (message) => emitWarning(this.services, message),\n readFile,\n toUrl,\n };\n\n if (loader === 'raw') {\n return { handled: true, value: context.readFile() };\n }\n\n if (loader === 'url') {\n return { handled: true, value: context.toUrl() };\n }\n\n if (typeof loader === 'function') {\n return { handled: true, value: loader(context) };\n }\n\n return { handled: false, value: undefined };\n }\n}\n"],"mappings":";;;;;;AAaA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,GAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,IAAAI,YAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAL,OAAA;AAOAA,OAAA;AAEA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AAOA,IAAAQ,2BAAA,GAAAR,OAAA;AAEA,IAAAS,gBAAA,GAAAT,OAAA;AAKA,IAAAU,aAAA,GAAAV,OAAA;AACA,IAAAW,gBAAA,GAAAX,OAAA;AAAuD,SAAAD,uBAAAa,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA7CvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA6CO,MAAMG,2BAA2B,GAAAC,OAAA,CAAAD,2BAAA,GAAGE,eACtB;;AAErB;AACA;AACA,MAAMC,QAAQ,GAAG;EACfC,MAAM,EAAE,IAAI;EACZC,MAAM,EAAE,IAAI;EACZC,aAAa,EAAE,KAAK;EACpBC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,IAAI;EACbC,SAAS,EAAE,IAAI;EACfC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,KAAK;EACZC,GAAG,EAAE,KAAK;EACVC,MAAM,EAAE,IAAI;EACZC,MAAM,EAAE,IAAI;EACZC,EAAE,EAAE,KAAK;EACTC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,IAAI;EACXC,MAAM,EAAE,KAAK;EACbC,GAAG,EAAE,KAAK;EACVC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE,IAAI;EACVC,QAAQ,EAAE,IAAI;EACdC,OAAO,EAAE,IAAI;EACbC,WAAW,EAAE,IAAI;EACjBC,QAAQ,EAAE,KAAK;EACfC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,IAAI;EACZC,cAAc,EAAE,IAAI;EACpBC,GAAG,EAAE,IAAI;EACTC,MAAM,EAAE,IAAI;EACZC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,IAAI;EACTC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,mBAAmB,GAAG,IAAI;AAChC,MAAMC,wBAAwB,GAAG,iBAAiB;AAClD,MAAMC,mBAAmB,GAAG;EAC1BC,mCAAmC,EAAEA,CAAA,KAAM,MAAM,CAAC;AACpD,CAAC;AAED,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAErB,MAAMC,8BAA8B,GAAG,IAAIC,OAAO,CAAwB,CAAC;AAE3E,SAASC,WAAWA,CAACC,QAAkB,EAAEC,OAAe,EAAE;EACxD,IAAID,QAAQ,CAACD,WAAW,EAAE;IACxBC,QAAQ,CAACD,WAAW,CAACE,OAAO,CAAC;IAC7B;EACF;;EAEA;EACAtC,OAAO,CAACuC,IAAI,CAACD,OAAO,CAAC;AACvB;AAEA,SAASE,uBAAuBA,CAACH,QAAkB,EAAe;EAChE,MAAMI,MAAM,GAAGP,8BAA8B,CAACQ,GAAG,CAACL,QAAQ,CAAC;EAC3D,IAAII,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,MAAME,OAAO,GAAG,IAAIC,GAAG,CAAS,CAAC;EACjCV,8BAA8B,CAACW,GAAG,CAACR,QAAQ,EAAEM,OAAO,CAAC;EACrD,OAAOA,OAAO;AAChB;AAEA,SAASG,WAAWA,CAACL,MAAyB,EAAEM,IAAc,EAAY;EACxE,MAAMC,SAAS,GAAG,IAAIJ,GAAG,CACvB,OAAOH,MAAM,KAAK,QAAQ,GAAGA,MAAM,CAACQ,KAAK,CAAC,GAAG,CAAC,GAAGR,MACnD,CAAC;EAED,IAAIO,SAAS,CAACE,GAAG,CAAC,GAAG,CAAC,EAAE;IACtB,OAAO,EAAE;EACX;EAEA,OAAOH,IAAI,CAACI,MAAM,CAAEC,CAAC,IAAK,CAACJ,SAAS,CAACE,GAAG,CAACE,CAAC,CAAC,CAAC;AAC9C;AAEA,SAASC,OAAOA,CAEdC,EAAU,EACF;EACR,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAI,CAACC,iBAAiB,CAACF,EAAE,CAAC;EAC/C,IAAAG,sBAAS,EAACF,QAAQ,EAAE,sBAAsBD,EAAE,GAAG,CAAC;EAChD,OAAOC,QAAQ;AACjB;AAEA,MAAMG,oBAAmC,GAAG;EAC1CC,GAAG,EAAE,KAAK;EACVlC,GAAG,EAAE;AACP,CAAC;AAEM,MAAMmC,MAAM,CAAC;EACFC,SAAS,GAAa,EAAE;EAgBjCC,WAAW,GAAY,KAAK;EAI5BrF,OAAO,GAIVsF,MAAM,CAACC,MAAM,CACdV,EAAU,IAAK;IACd,IAAIA,EAAE,KAAKxB,wBAAwB,EAAE;MACnC,IAAI,CAACmC,YAAY,CAACC,IAAI,CAACZ,EAAE,CAAC;MAC1B,IAAI,CAACa,KAAK,CAAC,SAAS,EAAE,iBAAiBb,EAAE,GAAG,CAAC;MAC7C,OAAOvB,mBAAmB;IAC5B;IAEA,IAAIuB,EAAE,CAACc,UAAU,CAACvC,mBAAmB,CAAC,EAAE;MACtC,IAAI,CAACoC,YAAY,CAACC,IAAI,CAACZ,EAAE,CAAC;MAC1B,IAAI,CAACa,KAAK,CAAC,SAAS,EAAE,iBAAiBb,EAAE,GAAG,CAAC;MAC7C,OAAO,CAAC,CAAC;IACX;IAEA,IAAIA,EAAE,IAAI3D,QAAQ,EAAE;MAClB;MACA;MACA;MACA,IAAIA,QAAQ,CAAC2D,EAAE,CAA0B,EAAE;QACzC,IAAI,CAACa,KAAK,CAAC,SAAS,EAAE,YAAYb,EAAE,GAAG,CAAC;QACxC,OAAO7E,OAAO,CAAC6E,EAAE,CAAC;MACpB;MAEA,OAAO,IAAI;IACb;;IAEA;IACA,MAAMe,UAAU,GAAG,IAAI,CAACb,iBAAiB,CAACF,EAAE,CAAC;IAC7C,IAAIe,UAAU,CAACd,QAAQ,KAAKD,EAAE,IAAI,CAACzC,aAAI,CAACyD,UAAU,CAAChB,EAAE,CAAC,EAAE;MACtD;MACA,MAAM,IAAIiB,KAAK,CACb,qBAAqBjB,EAAE,6DACzB,CAAC;IACH;IAEA,IAAAG,sBAAS,EACPY,UAAU,CAACd,QAAQ,EACnB,cAAcc,UAAU,CAACG,MAAM,qBACjC,CAAC;IAED,MAAMC,MAAM,GAAG,IAAI,CAACC,mBAAmB,CAACpB,EAAE,EAAEe,UAAU,CAACd,QAAQ,CAAC;IAChE,IAAIkB,MAAM,CAACE,OAAO,EAAE;MAClB,IAAI,CAACV,YAAY,CAACC,IAAI,CAACZ,EAAE,CAAC;MAC1B,IAAI,CAACa,KAAK,CAAC,SAAS,EAAE,GAAGb,EAAE,OAAOe,UAAU,CAACd,QAAQ,WAAW,CAAC;MACjE,OAAOkB,MAAM,CAACG,KAAK;IACrB;IAEA,IAAI,CAACX,YAAY,CAACC,IAAI,CAACZ,EAAE,CAAC;IAE1B,IAAI,CAACa,KAAK,CAAC,SAAS,EAAE,GAAGb,EAAE,OAAOe,UAAU,CAACd,QAAQ,EAAE,CAAC;IAExD,MAAMsB,UAAU,GAAG,IAAI,CAACC,aAAa,CACnCT,UAAU,CAACd,QAAQ,EACnBc,UAAU,CAACU,IAAI,EACf,IAAI,CAACZ,KACP,CAAC;IAED,IAAIU,UAAU,KAAK,IAAI,EAAE;MACvB,OAAOR,UAAU,CAACd,QAAQ;IAC5B;IAEA,IACEsB,UAAU,CAACG,SAAS,IACpB,IAAAC,uBAAU,EAACJ,UAAU,CAACK,aAAa,EAAEb,UAAU,CAACU,IAAI,CAAC,EACrD;MACA,OAAOF,UAAU,CAACpF,OAAO;IAC3B;IAEA,MAAM0F,CAAC,GAAG,IAAI,CAACC,WAAW,CAACP,UAAU,CAAC;IACtCM,CAAC,CAACE,QAAQ,CAAC,CAAC;IAEZ,OAAOR,UAAU,CAACpF,OAAO;EAC3B,CAAC,EACD;IACE6F,MAAM,EAAErD,IAAI;IACZoB,OAAO,EAAEA,OAAO,CAACkC,IAAI,CAAC,IAAI;EAC5B,CACF,CAAC;EAEMlC,OAAO,GAAGA,OAAO,CAACkC,IAAI,CAAC,IAAI,CAAC;EAInC,CAACC,aAAa;EAEdC,WAAWA,CACDpD,QAAkB,EAC1BwC,UAAsB,EACtBa,YAAqB,EACbC,UAA+B,GAAGnG,2BAA2B,EACrE;IAAA,IAAAoG,qBAAA,EAAAC,mBAAA;IAAA,KAJQxD,QAAkB,GAAlBA,QAAkB;IAAA,KAGlBsD,UAA+B,GAA/BA,UAA+B;IAEvC,IAAI,CAACG,KAAK,GAAGzD,QAAQ,CAACyD,KAAK;IAC3B,IAAI,CAAC,CAACN,aAAa,GAAG,IAAAO,wBAAgB,EACpC1D,QAAQ,CAAC2D,OAAO,CAACC,aAAa,CAACC,QAAQ,EACvC,kBAAkB,EAClBrB,UAAU,CAACsB,IACb,CAAC,GACG,IAAIC,OAAO,CAACvB,UAAU,CAAC,GACvBA,UAAU;IACd,IAAI,CAACwB,GAAG,GAAGxB,UAAU,CAACwB,GAAG;IACzB,IAAI,CAAC/C,EAAE,GAAGuB,UAAU,CAACsB,IAAI;IACzB,IAAI,CAACG,QAAQ,GAAGzB,UAAU,CAACsB,IAAI;IAC/B,IAAI,CAAClC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACE,KAAK,GAAGU,UAAU,CAAC0B,GAAG,CAACC,MAAM,CAAC,QAAQ,CAAC;IAC5C,IAAI,CAACC,eAAe,IAAAb,qBAAA,GAAGF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEgB,OAAO,cAAAd,qBAAA,cAAAA,qBAAA,GAAI,KAAK;IACrD,IAAI,CAACc,OAAO,IAAAb,mBAAA,GAAGhB,UAAU,CAAC6B,OAAO,cAAAb,mBAAA,cAAAA,mBAAA,GAAI,IAAI,CAACY,eAAe;IAEzD,IAAIf,YAAY,EAAE;MAChB,IAAI,CAAC7B,SAAS,GAAG,CAACgB,UAAU,CAACsB,IAAI,EAAE,GAAGT,YAAY,CAAC7B,SAAS,CAAC;IAC/D,CAAC,MAAM;MACL,IAAI,CAACA,SAAS,GAAG,CAACgB,UAAU,CAACsB,IAAI,CAAC;IACpC;IAEA,IAAI,CAACQ,UAAU,GAAGtE,QAAQ,CAAC2D,OAAO,CAACC,aAAa,CAACU,UAAU;IAE3D,IAAI,CAACxC,KAAK,CAAC,MAAM,EAAEU,UAAU,CAACsB,IAAI,CAAC;EACrC;EAEA,IAAW1G,OAAOA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACoF,UAAU,CAACpF,OAAO;EAChC;EAEA,IAAWA,OAAOA,CAACmF,KAAK,EAAE;IACxB,IAAI,CAACC,UAAU,CAACpF,OAAO,GAAGmF,KAAK;IAE/B,IAAI,CAACT,KAAK,CAAC,0CAA0C,EAAES,KAAK,CAAC;EAC/D;EAEA,IAAcC,UAAUA,CAAA,EAAe;IACrC,MAAMA,UAAU,GACd,IAAI,CAAC,CAACW,aAAa,YAAYY,OAAO,GAClC,IAAI,CAAC,CAACZ,aAAa,CAACoB,KAAK,CAAC,CAAC,GAC3B,IAAI,CAAC,CAACpB,aAAa;IACzB,IAAA/B,sBAAS,EAACoB,UAAU,EAAE,UAAU,IAAI,CAACwB,GAAG,cAAc,CAAC;IACvD,OAAOxB,UAAU;EACnB;EAEAQ,QAAQA,CAAA,EAAS;IACf,MAAM;MAAER;IAAW,CAAC,GAAG,IAAI;IAC3BA,UAAU,CAACgC,iBAAiB,CAAC,CAAC;IAE9B,MAAMpE,MAAM,GAAG,IAAI,CAACqD,KAAK,CAACpD,GAAG,CAAC,aAAa,EAAEmC,UAAU,CAACsB,IAAI,CAAE;IAC9D,IAAIW,gBAAgB,GAAG,KAAK;IAC5B,IAAI,CAACjC,UAAU,CAACkC,cAAc,EAAE;MAC9B,IAAI,CAACjB,KAAK,CAACkB,GAAG,CACZ,aAAa,EACbnC,UAAU,CAACsB,IAAI,EACftB,UAAU,CAACoC,eAAe,CAAC,CAC7B,CAAC;MACDH,gBAAgB,GAAG,IAAI;IACzB;IAEA,MAAM;MAAEI,eAAe,EAAE1C;IAAO,CAAC,GAAGK,UAAU;IAC9C,MAAM;MAAEoB;IAAc,CAAC,GAAG,IAAI,CAAC5D,QAAQ,CAAC2D,OAAO;IAE/C,IAAI,CAACxB,MAAM,EAAE;MACX,IAAI,CAACL,KAAK,CAAC,UAAU,EAAE,8BAA8B,CAAC;MACtD;IACF;IAEA,IAAI,IAAI,CAACL,WAAW,EAAE;MACpB,IAAI,CAACK,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC;MAC9C;IACF;IAEA,IAAI,CAACA,KAAK,CAAC,UAAU,CAAC;IACtB,IAAI,CAACA,KAAK,CAACqC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAEhC,MAAM,CAAC;IAEzC,IAAI,CAACV,WAAW,GAAG,IAAI;IAEvB,MAAMwC,QAAQ,GAAG,IAAAa,+BAAiB,EAAC,IAAI,CAACb,QAAQ,CAAC;IAEjD,IAAI,SAAS,CAACvD,IAAI,CAACuD,QAAQ,CAAC,EAAE;MAC5B;MACA,IAAI,CAAC7G,OAAO,GAAG2H,IAAI,CAACC,KAAK,CAAC7C,MAAM,CAAC;MACjC;IACF;IAEA,MAAM;MAAE8C,OAAO;MAAEC;IAAS,CAAC,GAAG,IAAAC,gCAAe,EAC3ClB,QAAQ,EACRL,aAAa,CAACC,QAAQ,EACtB;MACExF,MAAM,EAAE,IAAI;MACZjB,OAAO,EAAEoF,UAAU,CAACpF,OAAO;MAC3BhB,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBgJ,oBAAoB,EAAE,MAAOnE,EAAW,IAAK,IAAI,CAAC7E,OAAO,CAACiJ,MAAM,CAACpE,EAAE,CAAC,CAAC;MACrEqE,SAAS,EAAE9G,aAAI,CAAC+G,OAAO,CAACtB,QAAQ;IAClC,CAAC,EACDL,aAAa,CAAC4B,eAChB,CAAC;IAED,IAAI;MACF,MAAMC,MAAM,GAAG,IAAInG,WAAE,CAACoG,MAAM,CAC1B,yBAAyBvD,MAAM,gBAAgB,EAC/C;QACE8B;MACF,CACF,CAAC;MAEDwB,MAAM,CAACE,YAAY,CAACV,OAAO,CAAC;IAC9B,CAAC,CAAC,OAAOjI,CAAC,EAAE;MACV,IAAI,CAACyE,WAAW,GAAG,KAAK;MACxB,IAAIgD,gBAAgB,EAAE;QACpB,IAAI,CAAChB,KAAK,CAACkB,GAAG,CAAC,aAAa,EAAEnC,UAAU,CAACsB,IAAI,EAAE1D,MAAM,CAAC;MACxD;MAEA,IAAI,IAAAwF,wDAA4B,EAAC5I,CAAC,CAAC,EAAE;QACnC;QACA,MAAMA,CAAC;MACT;MAEA,IAAIA,CAAC,YAAY6I,SAAS,EAAE;QAC1B,IAAI,CAAC/D,KAAK,CAAC,IAAI,EAAE9E,CAAC,CAAC;QAEnB,MAAMA,CAAC;MACT;MAEA,IAAI,CAAC8E,KAAK,CAAC,QAAQ,EAAE9E,CAAC,EAAE,IAAI,CAACwE,SAAS,CAAC;MACvC,MAAM,IAAIqE,SAAS,CACjB,GAAI7I,CAAC,CAAWiD,OAAO,MAAM,IAAI,CAACuB,SAAS,CAACsE,IAAI,CAAC,MAAM,CAAC,IAC1D,CAAC;IACH,CAAC,SAAS;MACRZ,QAAQ,CAAC,CAAC;IACZ;EACF;EAEAzC,aAAaA,CACXwB,QAAgB,EAChBvB,IAAc,EACdwB,GAAa,EAC6B;IAAA,IAAA6B,qBAAA;IAC1C,MAAMC,gBAAgB,GAAG,IAAAlB,+BAAiB,EAACb,QAAQ,CAAC;IACpD,MAAMgC,SAAS,GAAGzH,aAAI,CAAC0H,OAAO,CAACF,gBAAgB,CAAC;IAChD,IAAIC,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC3B,UAAU,CAAC6B,QAAQ,CAACF,SAAS,CAAC,EAAE;MACjE,OAAO,IAAI;IACb;IAEA,MAAMzD,UAAU,GAAG,IAAI,CAACiB,KAAK,CAACpD,GAAG,CAAC,aAAa,EAAE4D,QAAQ,CAAC;IAC1D,IAAIzB,UAAU,IAAI,IAAAI,uBAAU,GAAAmD,qBAAA,GAACvD,UAAU,CAACK,aAAa,cAAAkD,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAAErD,IAAI,CAAC,EAAE;MAClEwB,GAAG,CAAC,mCAAmC,CAAC;MACxC,OAAO1B,UAAU;IACnB;IAEA,IAAIA,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE6B,OAAO,EAAE;MACvBH,GAAG,CACD,0EACF,CAAC;MACD,OAAO1B,UAAU;IACnB;IAEA,IAAI,IAAI,CAAC6B,OAAO,EAAE;MAChBH,GAAG,CACD,6FACF,CAAC;MAED,MAAMkC,aAAa,GAAG,IAAI,CAAC5D,UAAU,CAACO,WAAW,CAC/CkB,QAAQ,EACR,CAAC,GAAG,CAAC,EACL/F,WAAE,CAACmI,YAAY,CAACL,gBAAgB,EAAE,OAAO,CAC3C,CAAC;MAED,IAAII,aAAa,KAAK,MAAM,EAAE;QAC5B,MAAME,KAAK,GAAG,IAAAC,qBAAQ,EAAC,IAAI,CAAC/D,UAAU,CAAC;QACvC,MAAM,IAAIN,KAAK,CACb,iCAAiCoE,KAAK,CAACR,IAAI,CAAC,MAAM,CAAC,OAAO7B,QAAQ,EACpE,CAAC;MACH;MAEA,OAAOmC,aAAa;IACtB;IAEA,IAAII,eAAgC,GAAG,IAAI;IAC3C,IAAIC,aAAuB,GAAG/D,IAAI;IAClC;IACA,IAAIA,IAAI,IAAIF,UAAU,EAAE;MAAA,IAAAkE,sBAAA,EAAAC,gBAAA,EAAAC,sBAAA;MACtB,MAAMC,gBAAgB,GACpB,EAAAH,sBAAA,GAAAlE,UAAU,CAACK,aAAa,cAAA6D,sBAAA,uBAAxBA,sBAAA,CAA0BI,MAAM,MAAK,CAAC,GAClCtE,UAAU,CAACK,aAAa,IAAA8D,gBAAA,GACxBnE,UAAU,CAACE,IAAI,cAAAiE,gBAAA,cAAAA,gBAAA,GAAI,EAAE;MAC3BH,eAAe,GAAG/F,WAAW,CAACoG,gBAAgB,EAAEnE,IAAI,CAAC;MACrD,IAAI8D,eAAe,CAACM,MAAM,KAAK,CAAC,EAAE;QAChC5C,GAAG,CAAC,wBAAwB,CAAC;QAC7B,OAAO1B,UAAU;MACnB;MAEA,KAAAoE,sBAAA,GAAIpE,UAAU,CAACK,aAAa,cAAA+D,sBAAA,eAAxBA,sBAAA,CAA0BE,MAAM,EAAE;QACpCL,aAAa,GAAG,IAAAM,sBAAS,EAACF,gBAAgB,EAAEnE,IAAI,CAAC;MACnD;MAEAwB,GAAG,CACD,4FAA4F,EAC5FsC,eAAe,EACfK,gBACF,CAAC;IACH,CAAC,MAAM;MACL3C,GAAG,CAAC,oDAAoD,CAAC;IAC3D;;IAEA;IACA;IACA,MAAM8C,IAAI,GAAG9I,WAAE,CAACmI,YAAY,CAACL,gBAAgB,EAAE,OAAO,CAAC;IACvD,MAAMI,aAAa,GAAGa,sBAAU,CAACC,UAAU,CACzC,IAAI,CAAClH,QAAQ,EACbiE,QAAQ,EACRwC,aAAa,EACbO,IACF,CAAC;IAED,IAAIZ,aAAa,CAACzD,SAAS,EAAE;MAC3BuB,GAAG,CAAC,mCAAmC,CAAC;MACxC,OAAOkC,aAAa;IACtB;IAEA,IAAIA,aAAa,CAAC/B,OAAO,EAAE;MACzBH,GAAG,CACD,0EACF,CAAC;MACD,OAAOkC,aAAa;IACtB;IAEA,OAAOA,aAAa;EACtB;EAEAjF,iBAAiB,GAAIF,EAAU,IAA4B;IACzD,MAAMb,MAAM,GAAG,IAAI,CAACoC,UAAU,CAAC2E,aAAa,CAAClG,EAAE,CAAC;IAChD,IAAAG,sBAAS,EAAC,EAAEhB,MAAM,YAAYgH,OAAO,CAAC,EAAE,gCAAgC,CAAC;IAEzE,IAAIhH,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IAEA,IAAI,CAAC,IAAI,CAACiE,OAAO,EAAE;MACjB,IAAI,CAACvC,KAAK,CACR,mFACF,CAAC;IACH;IAEA,MAAMwC,UAAU,GAAG,IAAI,CAAChB,UAAU,CAAC+D,WAAW;IAC9C,MAAMC,KAAe,GAAG,EAAE;IAE1B,IAAI;MAAA,IAAAC,qBAAA,EAAAC,iBAAA;MACF;MACA,IAAI,CAAClD,UAAU,CAACmD,OAAO,CAAEC,GAAG,IAAK;QAC/B,IAAIA,GAAG,IAAIpD,UAAU,EAAE;UACrB;QACF;;QAEA;QACA;QACA;QACAA,UAAU,CAACoD,GAAG,CAAC,GAAG9H,IAAI;QACtB0H,KAAK,CAACzF,IAAI,CAAC6F,GAAG,CAAC;MACjB,CAAC,CAAC;MAEF,MAAM;QAAEzD;MAAS,CAAC,GAAG,IAAI;MACzB,MAAM0D,UAAU,GAAG,IAAA7C,+BAAiB,EAAC7D,EAAE,CAAC;MAExC,IAAIC,QAAQ,GAAG,IAAI,CAACoC,UAAU,CAACsE,gBAAgB,CAACD,UAAU,EAAE;QAC1D1G,EAAE,EAAEgD,QAAQ;QACZA,QAAQ;QACR4D,KAAK,EAAE,IAAI,CAACvE,UAAU,CAACwE,gBAAgB,CAACtJ,aAAI,CAAC+G,OAAO,CAACtB,QAAQ,CAAC;MAChE,CAAC,CAAC;MAEF,MAAM8D,eAAe,GACnBJ,UAAU,CAAC5F,UAAU,CAAC,GAAG,CAAC,IAAIvD,aAAI,CAACyD,UAAU,CAAC0F,UAAU,CAAC;MAE3D,IACEI,eAAe,IACfvJ,aAAI,CAAC0H,OAAO,CAACyB,UAAU,CAAC,KAAK,EAAE,IAC/BzG,QAAQ,CAAC8G,QAAQ,CAAC,MAAM,CAAC,IACzB9J,WAAE,CAAC+J,UAAU,CAAC,GAAG/G,QAAQ,CAACgH,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAC5C;QACA;QACA;QACA;QACAhH,QAAQ,GAAG,GAAGA,QAAQ,CAACgH,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;MAC1C;MAEA,MAAM;QAAEC;MAAK,CAAC,GAAG,IAAI,CAACnI,QAAQ,CAAC2D,OAAO;MACtC,MAAMyE,OAAO,GAAG,IAAAC,4BAAW,EAAC;QAC1BlG,MAAM,EAAElB,EAAE;QACVC,QAAQ;QACRiH;MACF,CAAC,CAAC;MAEF,MAAMG,QAAQ,IAAAf,qBAAA,GACZ,IAAI,CAACvH,QAAQ,CAAC2D,OAAO,CAACC,aAAa,CAAC2E,eAAe,cAAAhB,qBAAA,uBAAnDA,qBAAA,CAAsDa,OAAO,CAACI,GAAG,CAAC;MAEpE,MAAMC,MAAM,IAAAjB,iBAAA,GAAGc,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEI,OAAO,cAAAlB,iBAAA,cAAAA,iBAAA,GAAKc,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEK,IAAI,GAAG,OAAO,GAAG,MAAO;MACvE,MAAMC,UAAU,GAAG,CAAC,IAAI,CAACvE,OAAO,IAAIoE,MAAM,KAAK,MAAM;MAErD,IAAII,aAAa,GAAG3H,QAAQ;MAC5B,IAAIoH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEK,IAAI,EAAE;QAClB,IAAI;UACFE,aAAa,GAAG,IAAAC,qCAAoB,EAAC;YACnCH,IAAI,EAAEL,QAAQ,CAACK,IAAI;YACnBI,QAAQ,EAAE9E,QAAQ;YAClBkE,IAAI;YACJ7B,KAAK,EAAE,IAAI,CAAC9E;UACd,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOxE,CAAC,EAAE;UAAA,IAAAgM,QAAA;UACV,MAAMC,YAAY,GAAG5D,MAAM,EAAA2D,QAAA,GAAEhM,CAAC,aAADA,CAAC,uBAADA,CAAC,CAAYiD,OAAO,cAAA+I,QAAA,cAAAA,QAAA,GAAIhM,CAAC,CAAC;UACvD,MAAM,IAAIkF,KAAK,CACb,kDAAkDkG,OAAO,CAACI,GAAG,MAAMvH,EAAE,SAASgD,QAAQ,MAAMgF,YAAY,EAC1G,CAAC;QACH;MACF;MAEA,IAAIR,MAAM,KAAK,OAAO,EAAE;QACtB,MAAM,IAAIvG,KAAK,CACb,CACE,yEAAyE,EACzE,EAAE,EACF,aAAa+B,QAAQ,EAAE,EACvB,aAAahD,EAAE,EAAE,EACjB,aAAaC,QAAQ,EAAE,EACvBoH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEK,IAAI,GACV,aAAaL,QAAQ,CAACK,IAAI,OAAOE,aAAa,EAAE,GAChD,EAAE,EACN,EAAE,EACF,YAAY,EACZ,GAAG,IAAI,CAACrH,SAAS,CAAC0H,GAAG,CAAEC,IAAI,IAAK,KAAKA,IAAI,EAAE,CAAC,EAC5C,EAAE,EACF,eAAef,OAAO,CAACI,GAAG,EAAE,CAC7B,CACE1H,MAAM,CAACsI,OAAO,CAAC,CACftD,IAAI,CAAC,IAAI,CACd,CAAC;MACH;MAEA,MAAMuD,oBAAoB,GAAGlJ,uBAAuB,CAAC,IAAI,CAACH,QAAQ,CAAC;MAEnE,IAAI4I,UAAU,IAAI,CAACS,oBAAoB,CAACxI,GAAG,CAACuH,OAAO,CAACI,GAAG,CAAC,EAAE;QACxDa,oBAAoB,CAAC1E,GAAG,CAACyD,OAAO,CAACI,GAAG,CAAC;QACrCzI,WAAW,CACT,IAAI,CAACC,QAAQ,EACb,CACE,yEAAyE,EACzE,EAAE,EACF,aAAaiE,QAAQ,EAAE,EACvB,aAAahD,EAAE,EAAE,EACjB,aAAaC,QAAQ,EAAE,EACvBoH,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEK,IAAI,GACV,aAAaL,QAAQ,CAACK,IAAI,OAAOE,aAAa,EAAE,GAChD,EAAE,EACN,EAAE,EACF,YAAY,EACZ,GAAG,IAAI,CAACrH,SAAS,CAAC0H,GAAG,CAAEC,IAAI,IAAK,KAAKA,IAAI,EAAE,CAAC,EAC5C,EAAE,EACF,eAAef,OAAO,CAACI,GAAG,EAAE,EAC5B,kCAAkCzD,IAAI,CAACuE,SAAS,CAC9ClB,OAAO,CAACI,GACV,CAAC,gGAAgG,CAClG,CACE1H,MAAM,CAACsI,OAAO,CAAC,CACftD,IAAI,CAAC,IAAI,CACd,CAAC;MACH;MAEA,OAAO;QACL3D,MAAM,EAAElB,EAAE;QACVyB,IAAI,EAAE,IAAA6G,0CAAyB,EAAC,CAAC,GAAG,CAAC,EAAEjB,QAAQ,CAAC;QAChDpH,QAAQ,EAAE2H;MACZ,CAAC;IACH,CAAC,SAAS;MACR;MACAvB,KAAK,CAACG,OAAO,CAAEC,GAAG,IAAK,OAAOpD,UAAU,CAACoD,GAAG,CAAC,CAAC;IAChD;EACF,CAAC;EAES3E,WAAWA,CAACP,UAAsB,EAAU;IACpD,OAAO,IAAIjB,MAAM,CAAC,IAAI,CAACvB,QAAQ,EAAEwC,UAAU,EAAE,IAAI,EAAE,IAAI,CAACc,UAAU,CAAC;EACrE;EAEQjB,mBAAmBA,CACzBmH,OAAe,EACftI,QAAgB,EACsB;IACtC,MAAM;MAAE0C;IAAc,CAAC,GAAG,IAAI,CAAC5D,QAAQ,CAAC2D,OAAO;IAC/C,MAAM8F,aAAa,GACjB7F,aAAa,CAAC6F,aAAa,KAAKC,SAAS,GACrCrI,oBAAoB,GACpB;MAAE,GAAGA,oBAAoB;MAAE,GAAGuC,aAAa,CAAC6F;IAAc,CAAC;IAEjE,MAAM;MAAEE,KAAK;MAAEC;IAAK,CAAC,GAAG,IAAAC,0BAAY,EAACL,OAAO,CAAC;IAC7C,IAAI,CAACG,KAAK,EAAE,OAAO;MAAErH,OAAO,EAAE,KAAK;MAAEC,KAAK,EAAEmH;IAAU,CAAC;IAEvD,MAAMI,MAAM,GAAG,IAAIC,eAAe,CAACJ,KAAK,CAAC;IACzC,MAAMK,UAAU,GAAGC,KAAK,CAACC,IAAI,CAACJ,MAAM,CAACK,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAC9C5B,GAAG,IAAKiB,aAAa,CAACjB,GAAG,CAAC,KAAKkB,SAAS,IAAID,aAAa,CAACjB,GAAG,CAAC,KAAK,KACtE,CAAC;IAED,IAAI,CAACwB,UAAU,EAAE,OAAO;MAAE1H,OAAO,EAAE,KAAK;MAAEC,KAAK,EAAEmH;IAAU,CAAC;IAE5D,MAAMW,MAAM,GAAGZ,aAAa,CAACO,UAAU,CAAC;IAExC,MAAM/F,QAAQ,GAAG,IAAAa,+BAAiB,EAAC5D,QAAQ,CAAC;IAC5C,MAAM6H,QAAQ,GAAG,IAAAjE,+BAAiB,EAAC,IAAI,CAACb,QAAQ,CAAC;IACjD,MAAMqG,WAAW,GAAG9L,aAAI,CAAC+G,OAAO,CAACwD,QAAQ,CAAC;IAE1C,MAAMwB,KAAK,GAAGA,CAAA,KAAM;MAClB,MAAMC,QAAQ,GAAGhM,aAAI,CAClBgM,QAAQ,CAACF,WAAW,EAAErG,QAAQ,CAAC,CAC/BwG,OAAO,CAAC,KAAK,EAAEjM,aAAI,CAACkM,KAAK,CAACC,GAAG,CAAC;MAEjC,IAAIH,QAAQ,CAACzI,UAAU,CAAC,GAAG,CAAC,IAAIvD,aAAI,CAACyD,UAAU,CAACuI,QAAQ,CAAC,EAAE;QACzD,OAAOA,QAAQ;MACjB;MAEA,OAAO,KAAKA,QAAQ,EAAE;IACxB,CAAC;IAED,MAAMI,QAAQ,GAAGA,CAAA,KAAM1M,WAAE,CAACmI,YAAY,CAACpC,QAAQ,EAAE,OAAO,CAAC;IAEzD,MAAMgB,OAA4B,GAAG;MACnC8D,QAAQ;MACRS,OAAO;MACPtI,QAAQ;MACR+C,QAAQ;MACR0F,KAAK;MACLC,IAAI;MACJ7J,WAAW,EAAGE,OAAO,IAAKF,WAAW,CAAC,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAAC;MAC7D2K,QAAQ;MACRL;IACF,CAAC;IAED,IAAIF,MAAM,KAAK,KAAK,EAAE;MACpB,OAAO;QAAE/H,OAAO,EAAE,IAAI;QAAEC,KAAK,EAAE0C,OAAO,CAAC2F,QAAQ,CAAC;MAAE,CAAC;IACrD;IAEA,IAAIP,MAAM,KAAK,KAAK,EAAE;MACpB,OAAO;QAAE/H,OAAO,EAAE,IAAI;QAAEC,KAAK,EAAE0C,OAAO,CAACsF,KAAK,CAAC;MAAE,CAAC;IAClD;IAEA,IAAI,OAAOF,MAAM,KAAK,UAAU,EAAE;MAChC,OAAO;QAAE/H,OAAO,EAAE,IAAI;QAAEC,KAAK,EAAE8H,MAAM,CAACpF,OAAO;MAAE,CAAC;IAClD;IAEA,OAAO;MAAE3C,OAAO,EAAE,KAAK;MAAEC,KAAK,EAAEmH;IAAU,CAAC;EAC7C;AACF;AAACtM,OAAA,CAAAmE,MAAA,GAAAA,MAAA","ignoreList":[]}
@@ -4,13 +4,134 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildOptions = buildOptions;
7
- var _babelMerge = _interopRequireDefault(require("babel-merge"));
8
7
  var _isNotNull = require("../utils/isNotNull");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- // eslint-disable-next-line @typescript-eslint/triple-slash-reference
11
- /// <reference path="./babel-merge.d.ts" />
12
-
13
8
  const cache = new WeakMap();
9
+ const isPlainObject = value => {
10
+ if (typeof value !== 'object' || value === null) return false;
11
+ const prototype = Object.getPrototypeOf(value);
12
+ return prototype === Object.prototype || prototype === null;
13
+ };
14
+ const mergeArraysUnique = (source = [], overrides = []) => [...new Set([...source, ...overrides])];
15
+ const mergeUnknown = (source, overrides) => {
16
+ if (Array.isArray(source) && Array.isArray(overrides)) {
17
+ return mergeArraysUnique(source, overrides);
18
+ }
19
+ if (isPlainObject(source) && isPlainObject(overrides)) {
20
+ const result = {
21
+ ...source
22
+ };
23
+ for (const [key, value] of Object.entries(overrides)) {
24
+ result[key] = key in source ? mergeUnknown(source[key], value) : value;
25
+ }
26
+ return result;
27
+ }
28
+ return overrides;
29
+ };
30
+ const getItemKey = item => {
31
+ if (typeof item === 'string') return item;
32
+ if (Array.isArray(item)) return getItemKey(item[0]);
33
+ if (typeof item === 'object' && item !== null && 'key' in item) {
34
+ const {
35
+ key
36
+ } = item;
37
+ return typeof key === 'string' ? key : null;
38
+ }
39
+ return null;
40
+ };
41
+ const getItemOptions = item => {
42
+ if (!Array.isArray(item)) return {};
43
+ const options = item[1];
44
+ return isPlainObject(options) ? options : {};
45
+ };
46
+ const toItemWithOptions = (key, options) => Object.keys(options).length ? [key, options] : key;
47
+ const normalizeKey = key => key.replace(/\\/g, '/');
48
+ const extractPackageNameFromPath = key => {
49
+ var _match$;
50
+ const match = normalizeKey(key).match(/\/node_modules\/(@[^/]+\/[^/]+|[^/]+)\//);
51
+ return (_match$ = match === null || match === void 0 ? void 0 : match[1]) !== null && _match$ !== void 0 ? _match$ : null;
52
+ };
53
+ const addBabelVariants = (kind, variants, key) => {
54
+ const prefix = kind === 'preset' ? ['@babel/preset-', 'babel-preset-'] : ['@babel/plugin-', 'babel-plugin-'];
55
+ const normalized = normalizeKey(key);
56
+ variants.add(normalized);
57
+ const packageNameFromPath = extractPackageNameFromPath(normalized);
58
+ if (packageNameFromPath) {
59
+ variants.add(packageNameFromPath);
60
+ }
61
+ for (const p of prefix) {
62
+ if (normalized.startsWith(p)) {
63
+ variants.add(normalized.slice(p.length));
64
+ }
65
+ }
66
+ if (!normalized.includes('/') && !normalized.startsWith('.')) {
67
+ variants.add(`${prefix[0]}${normalized}`);
68
+ variants.add(`${prefix[1]}${normalized}`);
69
+ }
70
+ };
71
+ const areKeysCompatible = (kind, a, b) => {
72
+ const aVariants = new Set();
73
+ addBabelVariants(kind, aVariants, a);
74
+ const bVariants = new Set();
75
+ addBabelVariants(kind, bVariants, b);
76
+ for (const aVar of aVariants) {
77
+ if (bVariants.has(aVar)) return true;
78
+ }
79
+ return false;
80
+ };
81
+ const mergeConfigItems = (kind, source, overrides) => {
82
+ const combined = [...(source !== null && source !== void 0 ? source : []), ...(overrides !== null && overrides !== void 0 ? overrides : [])];
83
+ return combined.reduce((reduction, override) => {
84
+ var _getItemKey;
85
+ const overrideKey = getItemKey(override);
86
+ if (!overrideKey) {
87
+ reduction.push(override);
88
+ return reduction;
89
+ }
90
+ const overrideOptions = getItemOptions(override);
91
+ const base = reduction.find(candidate => {
92
+ const baseKey = getItemKey(candidate);
93
+ return baseKey ? areKeysCompatible(kind, baseKey, overrideKey) : false;
94
+ });
95
+ if (!base) {
96
+ reduction.push(toItemWithOptions(overrideKey, overrideOptions));
97
+ return reduction;
98
+ }
99
+ const index = reduction.indexOf(base);
100
+ const baseKey = (_getItemKey = getItemKey(base)) !== null && _getItemKey !== void 0 ? _getItemKey : overrideKey;
101
+ const baseOptions = getItemOptions(base);
102
+ const options = mergeUnknown(baseOptions, overrideOptions);
103
+ reduction.splice(index, 1, toItemWithOptions(baseKey, options));
104
+ return reduction;
105
+ }, []);
106
+ };
107
+ const babelMerge = (source, overrides) => {
108
+ const {
109
+ plugins: sourcePlugins,
110
+ presets: sourcePresets,
111
+ env: sourceEnv,
112
+ ...sourceRest
113
+ } = source;
114
+ const {
115
+ plugins: overridesPlugins,
116
+ presets: overridesPresets,
117
+ env: overridesEnv,
118
+ ...overridesRest
119
+ } = overrides;
120
+ const plugins = mergeConfigItems('plugin', sourcePlugins, overridesPlugins);
121
+ const presets = mergeConfigItems('preset', sourcePresets, overridesPresets);
122
+ const merged = mergeUnknown(sourceRest, overridesRest);
123
+ if (presets.length) merged.presets = presets;
124
+ if (plugins.length) merged.plugins = plugins;
125
+ const envNames = new Set([...Object.keys(sourceEnv !== null && sourceEnv !== void 0 ? sourceEnv : {}), ...Object.keys(overridesEnv !== null && overridesEnv !== void 0 ? overridesEnv : {})]);
126
+ if (envNames.size) {
127
+ merged.env = {};
128
+ for (const name of envNames) {
129
+ var _sourceEnv$name, _overridesEnv$name;
130
+ merged.env[name] = babelMerge((_sourceEnv$name = sourceEnv === null || sourceEnv === void 0 ? void 0 : sourceEnv[name]) !== null && _sourceEnv$name !== void 0 ? _sourceEnv$name : {}, (_overridesEnv$name = overridesEnv === null || overridesEnv === void 0 ? void 0 : overridesEnv[name]) !== null && _overridesEnv$name !== void 0 ? _overridesEnv$name : {});
131
+ }
132
+ }
133
+ return merged;
134
+ };
14
135
  const merge = (a, b) => {
15
136
  if (!cache.has(a)) {
16
137
  cache.set(a, new WeakMap());
@@ -19,7 +140,7 @@ const merge = (a, b) => {
19
140
  if (cacheForA.has(b)) {
20
141
  return cacheForA.get(b);
21
142
  }
22
- const result = (0, _babelMerge.default)(a, b);
143
+ const result = babelMerge(a, b);
23
144
  cacheForA.set(b, result);
24
145
  return result;
25
146
  };
@@ -1 +1 @@
1
- {"version":3,"file":"buildOptions.js","names":["_babelMerge","_interopRequireDefault","require","_isNotNull","obj","__esModule","default","cache","WeakMap","merge","a","b","has","set","cacheForA","get","result","babelMerge","buildOptions","configs","map","i","filter","isNotNull","reduce"],"sources":["../../src/options/buildOptions.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./babel-merge.d.ts\" />\n\nimport type { TransformOptions } from '@babel/core';\nimport babelMerge from 'babel-merge';\n\nimport { isNotNull } from '../utils/isNotNull';\n\nconst cache = new WeakMap<\n TransformOptions,\n WeakMap<TransformOptions, TransformOptions>\n>();\n\nconst merge = (a: TransformOptions, b: TransformOptions) => {\n if (!cache.has(a)) {\n cache.set(a, new WeakMap());\n }\n\n const cacheForA = cache.get(a)!;\n if (cacheForA.has(b)) {\n return cacheForA.get(b)!;\n }\n\n const result = babelMerge(a, b);\n cacheForA.set(b, result);\n return result;\n};\n\n/**\n * Merges babel configs together. If a pair of configs were merged before,\n * it will return the cached result.\n */\nexport function buildOptions(\n ...configs: (TransformOptions | null | undefined)[]\n): TransformOptions {\n // Merge all configs together\n return configs\n .map((i) => i ?? null)\n .filter(isNotNull)\n .reduce(merge);\n}\n"],"mappings":";;;;;;AAIA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAA+C,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAN/C;AACA;;AAOA,MAAMG,KAAK,GAAG,IAAIC,OAAO,CAGvB,CAAC;AAEH,MAAMC,KAAK,GAAGA,CAACC,CAAmB,EAAEC,CAAmB,KAAK;EAC1D,IAAI,CAACJ,KAAK,CAACK,GAAG,CAACF,CAAC,CAAC,EAAE;IACjBH,KAAK,CAACM,GAAG,CAACH,CAAC,EAAE,IAAIF,OAAO,CAAC,CAAC,CAAC;EAC7B;EAEA,MAAMM,SAAS,GAAGP,KAAK,CAACQ,GAAG,CAACL,CAAC,CAAE;EAC/B,IAAII,SAAS,CAACF,GAAG,CAACD,CAAC,CAAC,EAAE;IACpB,OAAOG,SAAS,CAACC,GAAG,CAACJ,CAAC,CAAC;EACzB;EAEA,MAAMK,MAAM,GAAG,IAAAC,mBAAU,EAACP,CAAC,EAAEC,CAAC,CAAC;EAC/BG,SAAS,CAACD,GAAG,CAACF,CAAC,EAAEK,MAAM,CAAC;EACxB,OAAOA,MAAM;AACf,CAAC;;AAED;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAC1B,GAAGC,OAAgD,EACjC;EAClB;EACA,OAAOA,OAAO,CACXC,GAAG,CAAEC,CAAC,IAAKA,CAAC,aAADA,CAAC,cAADA,CAAC,GAAI,IAAI,CAAC,CACrBC,MAAM,CAACC,oBAAS,CAAC,CACjBC,MAAM,CAACf,KAAK,CAAC;AAClB"}
1
+ {"version":3,"file":"buildOptions.js","names":["_isNotNull","require","cache","WeakMap","isPlainObject","value","prototype","Object","getPrototypeOf","mergeArraysUnique","source","overrides","Set","mergeUnknown","Array","isArray","result","key","entries","getItemKey","item","getItemOptions","options","toItemWithOptions","keys","length","normalizeKey","replace","extractPackageNameFromPath","_match$","match","addBabelVariants","kind","variants","prefix","normalized","add","packageNameFromPath","p","startsWith","slice","includes","areKeysCompatible","a","b","aVariants","bVariants","aVar","has","mergeConfigItems","combined","reduce","reduction","override","_getItemKey","overrideKey","push","overrideOptions","base","find","candidate","baseKey","index","indexOf","baseOptions","splice","babelMerge","plugins","sourcePlugins","presets","sourcePresets","env","sourceEnv","sourceRest","overridesPlugins","overridesPresets","overridesEnv","overridesRest","merged","envNames","size","name","_sourceEnv$name","_overridesEnv$name","merge","set","cacheForA","get","buildOptions","configs","map","i","filter","isNotNull"],"sources":["../../src/options/buildOptions.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\n\nimport { isNotNull } from '../utils/isNotNull';\n\nconst cache = new WeakMap<\n TransformOptions,\n WeakMap<TransformOptions, TransformOptions>\n>();\n\ntype PlainObject = Record<string, unknown>;\n\nconst isPlainObject = (value: unknown): value is PlainObject => {\n if (typeof value !== 'object' || value === null) return false;\n\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\ntype ItemKind = 'plugin' | 'preset';\n\nconst mergeArraysUnique = <T>(source: T[] = [], overrides: T[] = []) => [\n ...new Set([...source, ...overrides]),\n];\n\nconst mergeUnknown = (source: unknown, overrides: unknown): unknown => {\n if (Array.isArray(source) && Array.isArray(overrides)) {\n return mergeArraysUnique(source, overrides);\n }\n\n if (isPlainObject(source) && isPlainObject(overrides)) {\n const result: PlainObject = { ...source };\n\n for (const [key, value] of Object.entries(overrides)) {\n result[key] = key in source ? mergeUnknown(source[key], value) : value;\n }\n\n return result;\n }\n\n return overrides;\n};\n\ntype PluginOrPresetItem = NonNullable<\n TransformOptions['plugins']\n>[number] extends never\n ? unknown\n : NonNullable<TransformOptions['plugins']>[number];\n\nconst getItemKey = (item: unknown): string | null => {\n if (typeof item === 'string') return item;\n if (Array.isArray(item)) return getItemKey(item[0]);\n if (typeof item === 'object' && item !== null && 'key' in item) {\n const { key } = item as { key?: unknown };\n return typeof key === 'string' ? key : null;\n }\n\n return null;\n};\n\nconst getItemOptions = (item: unknown): PlainObject => {\n if (!Array.isArray(item)) return {};\n const options = item[1];\n return isPlainObject(options) ? options : {};\n};\n\nconst toItemWithOptions = (key: string, options: PlainObject) =>\n Object.keys(options).length ? ([key, options] as const) : key;\n\nconst normalizeKey = (key: string) => key.replace(/\\\\/g, '/');\n\nconst extractPackageNameFromPath = (key: string): string | null => {\n const match = normalizeKey(key).match(\n /\\/node_modules\\/(@[^/]+\\/[^/]+|[^/]+)\\//\n );\n\n return match?.[1] ?? null;\n};\n\nconst addBabelVariants = (\n kind: ItemKind,\n variants: Set<string>,\n key: string\n) => {\n const prefix =\n kind === 'preset'\n ? ['@babel/preset-', 'babel-preset-']\n : ['@babel/plugin-', 'babel-plugin-'];\n\n const normalized = normalizeKey(key);\n variants.add(normalized);\n\n const packageNameFromPath = extractPackageNameFromPath(normalized);\n if (packageNameFromPath) {\n variants.add(packageNameFromPath);\n }\n\n for (const p of prefix) {\n if (normalized.startsWith(p)) {\n variants.add(normalized.slice(p.length));\n }\n }\n\n if (!normalized.includes('/') && !normalized.startsWith('.')) {\n variants.add(`${prefix[0]}${normalized}`);\n variants.add(`${prefix[1]}${normalized}`);\n }\n};\n\nconst areKeysCompatible = (kind: ItemKind, a: string, b: string) => {\n const aVariants = new Set<string>();\n addBabelVariants(kind, aVariants, a);\n\n const bVariants = new Set<string>();\n addBabelVariants(kind, bVariants, b);\n\n for (const aVar of aVariants) {\n if (bVariants.has(aVar)) return true;\n }\n\n return false;\n};\n\nconst mergeConfigItems = (\n kind: ItemKind,\n source: PluginOrPresetItem[] | null | undefined,\n overrides: PluginOrPresetItem[] | null | undefined\n) => {\n const combined = [...(source ?? []), ...(overrides ?? [])];\n\n return combined.reduce<PluginOrPresetItem[]>((reduction, override) => {\n const overrideKey = getItemKey(override);\n if (!overrideKey) {\n reduction.push(override);\n return reduction;\n }\n\n const overrideOptions = getItemOptions(override);\n\n const base = reduction.find((candidate) => {\n const baseKey = getItemKey(candidate);\n return baseKey ? areKeysCompatible(kind, baseKey, overrideKey) : false;\n });\n\n if (!base) {\n reduction.push(\n toItemWithOptions(overrideKey, overrideOptions) as PluginOrPresetItem\n );\n return reduction;\n }\n\n const index = reduction.indexOf(base);\n const baseKey = getItemKey(base) ?? overrideKey;\n const baseOptions = getItemOptions(base);\n const options = mergeUnknown(baseOptions, overrideOptions) as PlainObject;\n\n reduction.splice(\n index,\n 1,\n toItemWithOptions(baseKey, options) as PluginOrPresetItem\n );\n return reduction;\n }, []);\n};\n\nconst babelMerge = (source: TransformOptions, overrides: TransformOptions) => {\n const {\n plugins: sourcePlugins,\n presets: sourcePresets,\n env: sourceEnv,\n ...sourceRest\n } = source;\n const {\n plugins: overridesPlugins,\n presets: overridesPresets,\n env: overridesEnv,\n ...overridesRest\n } = overrides;\n\n const plugins = mergeConfigItems('plugin', sourcePlugins, overridesPlugins);\n const presets = mergeConfigItems('preset', sourcePresets, overridesPresets);\n\n const merged: TransformOptions = mergeUnknown(\n sourceRest,\n overridesRest\n ) as TransformOptions;\n if (presets.length) merged.presets = presets;\n if (plugins.length) merged.plugins = plugins;\n\n const envNames = new Set([\n ...Object.keys(sourceEnv ?? {}),\n ...Object.keys(overridesEnv ?? {}),\n ]);\n\n if (envNames.size) {\n merged.env = {};\n for (const name of envNames) {\n merged.env[name] = babelMerge(\n sourceEnv?.[name] ?? {},\n overridesEnv?.[name] ?? {}\n );\n }\n }\n\n return merged;\n};\n\nconst merge = (a: TransformOptions, b: TransformOptions) => {\n if (!cache.has(a)) {\n cache.set(a, new WeakMap());\n }\n\n const cacheForA = cache.get(a)!;\n if (cacheForA.has(b)) {\n return cacheForA.get(b)!;\n }\n\n const result = babelMerge(a, b);\n cacheForA.set(b, result);\n return result;\n};\n\n/**\n * Merges babel configs together. If a pair of configs were merged before,\n * it will return the cached result.\n */\nexport function buildOptions(\n ...configs: (TransformOptions | null | undefined)[]\n): TransformOptions {\n // Merge all configs together\n return configs\n .map((i) => i ?? null)\n .filter(isNotNull)\n .reduce(merge);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
4
+ describe('buildOptions', () => {
5
+ it('does not crash when @babel/core resolvePreset returns an object (Babel 7.25.7 regression)', async () => {
6
+ const {
7
+ buildOptions
8
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require('./buildOptions')));
9
+ expect(() => buildOptions({
10
+ presets: ['@babel/preset-typescript', '@babel/preset-react']
11
+ })).not.toThrow();
12
+ });
13
+ it('merges configs deeply and preserves presets/plugins arrays', async () => {
14
+ const {
15
+ buildOptions
16
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require('./buildOptions')));
17
+ expect(buildOptions({
18
+ assumptions: {
19
+ setPublicClassFields: true
20
+ },
21
+ parserOpts: {
22
+ plugins: ['typescript']
23
+ },
24
+ presets: ['preset-a']
25
+ }, {
26
+ assumptions: {
27
+ setPublicClassFields: false
28
+ },
29
+ parserOpts: {
30
+ plugins: ['jsx']
31
+ },
32
+ presets: ['preset-b']
33
+ })).toEqual({
34
+ assumptions: {
35
+ setPublicClassFields: false
36
+ },
37
+ parserOpts: {
38
+ plugins: ['typescript', 'jsx']
39
+ },
40
+ presets: ['preset-a', 'preset-b']
41
+ });
42
+ });
43
+ });
44
+ //# sourceMappingURL=buildOptions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOptions.test.js","names":["describe","it","buildOptions","Promise","resolve","then","_interopRequireWildcard","require","expect","presets","not","toThrow","assumptions","setPublicClassFields","parserOpts","plugins","toEqual"],"sources":["../../src/options/buildOptions.test.ts"],"sourcesContent":["describe('buildOptions', () => {\n it('does not crash when @babel/core resolvePreset returns an object (Babel 7.25.7 regression)', async () => {\n const { buildOptions } = await import('./buildOptions');\n\n expect(() =>\n buildOptions({\n presets: ['@babel/preset-typescript', '@babel/preset-react'],\n })\n ).not.toThrow();\n });\n\n it('merges configs deeply and preserves presets/plugins arrays', async () => {\n const { buildOptions } = await import('./buildOptions');\n\n expect(\n buildOptions(\n {\n assumptions: { setPublicClassFields: true },\n parserOpts: { plugins: ['typescript'] },\n presets: ['preset-a'],\n },\n {\n assumptions: { setPublicClassFields: false },\n parserOpts: { plugins: ['jsx'] },\n presets: ['preset-b'],\n }\n )\n ).toEqual({\n assumptions: { setPublicClassFields: false },\n parserOpts: { plugins: ['typescript', 'jsx'] },\n presets: ['preset-a', 'preset-b'],\n });\n });\n});\n"],"mappings":";;;AAAAA,QAAQ,CAAC,cAAc,EAAE,MAAM;EAC7BC,EAAE,CAAC,2FAA2F,EAAE,YAAY;IAC1G,MAAM;MAAEC;IAAa,CAAC,GAAG,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAC,uBAAA,CAAAC,OAAA,CAAa,gBAAgB,GAAC;IAEvDC,MAAM,CAAC,MACLN,YAAY,CAAC;MACXO,OAAO,EAAE,CAAC,0BAA0B,EAAE,qBAAqB;IAC7D,CAAC,CACH,CAAC,CAACC,GAAG,CAACC,OAAO,CAAC,CAAC;EACjB,CAAC,CAAC;EAEFV,EAAE,CAAC,4DAA4D,EAAE,YAAY;IAC3E,MAAM;MAAEC;IAAa,CAAC,GAAG,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAC,uBAAA,CAAAC,OAAA,CAAa,gBAAgB,GAAC;IAEvDC,MAAM,CACJN,YAAY,CACV;MACEU,WAAW,EAAE;QAAEC,oBAAoB,EAAE;MAAK,CAAC;MAC3CC,UAAU,EAAE;QAAEC,OAAO,EAAE,CAAC,YAAY;MAAE,CAAC;MACvCN,OAAO,EAAE,CAAC,UAAU;IACtB,CAAC,EACD;MACEG,WAAW,EAAE;QAAEC,oBAAoB,EAAE;MAAM,CAAC;MAC5CC,UAAU,EAAE;QAAEC,OAAO,EAAE,CAAC,KAAK;MAAE,CAAC;MAChCN,OAAO,EAAE,CAAC,UAAU;IACtB,CACF,CACF,CAAC,CAACO,OAAO,CAAC;MACRJ,WAAW,EAAE;QAAEC,oBAAoB,EAAE;MAAM,CAAC;MAC5CC,UAAU,EAAE;QAAEC,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK;MAAE,CAAC;MAC9CN,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU;IAClC,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"loadBabelOptions.js","names":["cache","WeakMap","empty","loadBabelOptions","babel","filename","overrides","_cache$get","_babel$loadOptions","fileCache","get","Map","has","babelOptions","loadOptions","caller","name","supportsStaticESM","supportsDynamicImport","supportsTopLevelAwait","supportsExportNamespaceFrom","set"],"sources":["../../src/options/loadBabelOptions.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\n\nimport type { Core } from '../babel';\n\nconst cache = new WeakMap<\n Partial<TransformOptions>,\n Map<string, TransformOptions>\n>();\n\nconst empty = {};\n\nexport function loadBabelOptions(\n babel: Core,\n filename: string,\n overrides: TransformOptions = empty\n) {\n const fileCache = cache.get(overrides) ?? new Map<string, TransformOptions>();\n if (fileCache.has(filename)) {\n return fileCache.get(filename)!;\n }\n\n const babelOptions: TransformOptions =\n babel.loadOptions({\n ...overrides,\n filename,\n caller: {\n name: 'wyw-in-js',\n\n // Indicates for @babel/preset-env to support all ESM syntax and avoid transforms before it's needed\n supportsStaticESM: true,\n supportsDynamicImport: true,\n supportsTopLevelAwait: true,\n supportsExportNamespaceFrom: true,\n },\n }) ?? {};\n\n fileCache.set(filename, babelOptions);\n cache.set(overrides, fileCache);\n\n return babelOptions;\n}\n"],"mappings":";;;;;;AAIA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAGvB,CAAC;AAEH,MAAMC,KAAK,GAAG,CAAC,CAAC;AAET,SAASC,gBAAgBA,CAC9BC,KAAW,EACXC,QAAgB,EAChBC,SAA2B,GAAGJ,KAAK,EACnC;EAAA,IAAAK,UAAA,EAAAC,kBAAA;EACA,MAAMC,SAAS,IAAAF,UAAA,GAAGP,KAAK,CAACU,GAAG,CAACJ,SAAS,CAAC,cAAAC,UAAA,cAAAA,UAAA,GAAI,IAAII,GAAG,CAA2B,CAAC;EAC7E,IAAIF,SAAS,CAACG,GAAG,CAACP,QAAQ,CAAC,EAAE;IAC3B,OAAOI,SAAS,CAACC,GAAG,CAACL,QAAQ,CAAC;EAChC;EAEA,MAAMQ,YAA8B,IAAAL,kBAAA,GAClCJ,KAAK,CAACU,WAAW,CAAC;IAChB,GAAGR,SAAS;IACZD,QAAQ;IACRU,MAAM,EAAE;MACNC,IAAI,EAAE,WAAW;MAEjB;MACAC,iBAAiB,EAAE,IAAI;MACvBC,qBAAqB,EAAE,IAAI;MAC3BC,qBAAqB,EAAE,IAAI;MAC3BC,2BAA2B,EAAE;IAC/B;EACF,CAAC,CAAC,cAAAZ,kBAAA,cAAAA,kBAAA,GAAI,CAAC,CAAC;EAEVC,SAAS,CAACY,GAAG,CAAChB,QAAQ,EAAEQ,YAAY,CAAC;EACrCb,KAAK,CAACqB,GAAG,CAACf,SAAS,EAAEG,SAAS,CAAC;EAE/B,OAAOI,YAAY;AACrB"}
1
+ {"version":3,"file":"loadBabelOptions.js","names":["cache","WeakMap","empty","loadBabelOptions","babel","filename","overrides","_cache$get","_babel$loadOptions","fileCache","get","Map","has","babelOptions","loadOptions","caller","name","supportsStaticESM","supportsDynamicImport","supportsTopLevelAwait","supportsExportNamespaceFrom","set"],"sources":["../../src/options/loadBabelOptions.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\n\nimport type { Core } from '../babel';\n\nconst cache = new WeakMap<\n Partial<TransformOptions>,\n Map<string, TransformOptions>\n>();\n\nconst empty = {};\n\nexport function loadBabelOptions(\n babel: Core,\n filename: string,\n overrides: TransformOptions = empty\n) {\n const fileCache = cache.get(overrides) ?? new Map<string, TransformOptions>();\n if (fileCache.has(filename)) {\n return fileCache.get(filename)!;\n }\n\n const babelOptions: TransformOptions =\n babel.loadOptions({\n ...overrides,\n filename,\n caller: {\n name: 'wyw-in-js',\n\n // Indicates for @babel/preset-env to support all ESM syntax and avoid transforms before it's needed\n supportsStaticESM: true,\n supportsDynamicImport: true,\n supportsTopLevelAwait: true,\n supportsExportNamespaceFrom: true,\n },\n }) ?? {};\n\n fileCache.set(filename, babelOptions);\n cache.set(overrides, fileCache);\n\n return babelOptions;\n}\n"],"mappings":";;;;;;AAIA,MAAMA,KAAK,GAAG,IAAIC,OAAO,CAGvB,CAAC;AAEH,MAAMC,KAAK,GAAG,CAAC,CAAC;AAET,SAASC,gBAAgBA,CAC9BC,KAAW,EACXC,QAAgB,EAChBC,SAA2B,GAAGJ,KAAK,EACnC;EAAA,IAAAK,UAAA,EAAAC,kBAAA;EACA,MAAMC,SAAS,IAAAF,UAAA,GAAGP,KAAK,CAACU,GAAG,CAACJ,SAAS,CAAC,cAAAC,UAAA,cAAAA,UAAA,GAAI,IAAII,GAAG,CAA2B,CAAC;EAC7E,IAAIF,SAAS,CAACG,GAAG,CAACP,QAAQ,CAAC,EAAE;IAC3B,OAAOI,SAAS,CAACC,GAAG,CAACL,QAAQ,CAAC;EAChC;EAEA,MAAMQ,YAA8B,IAAAL,kBAAA,GAClCJ,KAAK,CAACU,WAAW,CAAC;IAChB,GAAGR,SAAS;IACZD,QAAQ;IACRU,MAAM,EAAE;MACNC,IAAI,EAAE,WAAW;MAEjB;MACAC,iBAAiB,EAAE,IAAI;MACvBC,qBAAqB,EAAE,IAAI;MAC3BC,qBAAqB,EAAE,IAAI;MAC3BC,2BAA2B,EAAE;IAC/B;EACF,CAAC,CAAC,cAAAZ,kBAAA,cAAAA,kBAAA,GAAI,CAAC,CAAC;EAEVC,SAAS,CAACY,GAAG,CAAChB,QAAQ,EAAEQ,YAAY,CAAC;EACrCb,KAAK,CAACqB,GAAG,CAACf,SAAS,EAAEG,SAAS,CAAC;EAE/B,OAAOI,YAAY;AACrB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"babel-transform.js","names":["_shared","require","_loadWywOptions","_cache","_transform","_collector","babelTransform","babel","options","cache","TransformCacheCollection","debug","logger","extend","name","pre","file","_file$opts$root","_file$opts$inputSourc","collect","valueCache","data","loadedAndParsed","entrypoint","pluginOptions","services","evaluator","Error","collector","ast","code","opts","filename","loadWywOptions","transformSync","root","undefined","inputSourceMap","syncResolve","visitor","post"],"sources":["../../src/plugins/babel-transform.ts"],"sourcesContent":["import type { BabelFile, PluginObj } from '@babel/core';\n\nimport { logger, syncResolve } from '@wyw-in-js/shared';\n\nimport { loadWywOptions } from '../transform/helpers/loadWywOptions';\nimport type { Core } from '../babel';\nimport { TransformCacheCollection } from '../cache';\nimport { transformSync } from '../transform';\nimport type { ICollectAction, SyncScenarioForAction } from '../transform/types';\nimport type { IPluginState, PluginOptions } from '../types';\n\nimport { collector } from './collector';\n\nexport default function babelTransform(\n babel: Core,\n options: Partial<PluginOptions>\n): PluginObj<IPluginState> {\n const cache = new TransformCacheCollection();\n const debug = logger.extend('babel-transform');\n\n return {\n name: '@wyw-in-js/transform/babel-transform',\n pre(file: BabelFile) {\n // eslint-disable-next-line require-yield\n function* collect(\n this: ICollectAction\n ): SyncScenarioForAction<ICollectAction> {\n const { valueCache } = this.data;\n const { loadedAndParsed } = this.entrypoint;\n const { pluginOptions } = this.services.options;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n collector(file, pluginOptions, valueCache);\n\n return {\n ast: loadedAndParsed.ast,\n code: loadedAndParsed.code,\n };\n }\n\n debug('start %s', file.opts.filename);\n\n const pluginOptions = loadWywOptions(options);\n\n transformSync(\n {\n babel,\n cache,\n options: {\n filename: file.opts.filename!,\n root: file.opts.root ?? undefined,\n inputSourceMap: file.opts.inputSourceMap ?? undefined,\n pluginOptions,\n },\n },\n file.code,\n syncResolve,\n {\n collect,\n }\n );\n },\n visitor: {},\n post(file: BabelFile) {\n debug('end %s', file.opts.filename);\n },\n };\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAIA,IAAAI,UAAA,GAAAJ,OAAA;AAEe,SAASK,cAAcA,CACpCC,KAAW,EACXC,OAA+B,EACN;EACzB,MAAMC,KAAK,GAAG,IAAIC,+BAAwB,CAAC,CAAC;EAC5C,MAAMC,KAAK,GAAGC,cAAM,CAACC,MAAM,CAAC,iBAAiB,CAAC;EAE9C,OAAO;IACLC,IAAI,EAAE,sCAAsC;IAC5CC,GAAGA,CAACC,IAAe,EAAE;MAAA,IAAAC,eAAA,EAAAC,qBAAA;MACnB;MACA,UAAUC,OAAOA,CAAA,EAEwB;QACvC,MAAM;UAAEC;QAAW,CAAC,GAAG,IAAI,CAACC,IAAI;QAChC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACC,UAAU;QAC3C,MAAM;UAAEC;QAAc,CAAC,GAAG,IAAI,CAACC,QAAQ,CAACjB,OAAO;QAC/C,IAAIc,eAAe,CAACI,SAAS,KAAK,SAAS,EAAE;UAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEA,IAAAC,oBAAS,EAACZ,IAAI,EAAEQ,aAAa,EAAEJ,UAAU,CAAC;QAE1C,OAAO;UACLS,GAAG,EAAEP,eAAe,CAACO,GAAG;UACxBC,IAAI,EAAER,eAAe,CAACQ;QACxB,CAAC;MACH;MAEAnB,KAAK,CAAC,UAAU,EAAEK,IAAI,CAACe,IAAI,CAACC,QAAQ,CAAC;MAErC,MAAMR,aAAa,GAAG,IAAAS,8BAAc,EAACzB,OAAO,CAAC;MAE7C,IAAA0B,wBAAa,EACX;QACE3B,KAAK;QACLE,KAAK;QACLD,OAAO,EAAE;UACPwB,QAAQ,EAAEhB,IAAI,CAACe,IAAI,CAACC,QAAS;UAC7BG,IAAI,GAAAlB,eAAA,GAAED,IAAI,CAACe,IAAI,CAACI,IAAI,cAAAlB,eAAA,cAAAA,eAAA,GAAImB,SAAS;UACjCC,cAAc,GAAAnB,qBAAA,GAAEF,IAAI,CAACe,IAAI,CAACM,cAAc,cAAAnB,qBAAA,cAAAA,qBAAA,GAAIkB,SAAS;UACrDZ;QACF;MACF,CAAC,EACDR,IAAI,CAACc,IAAI,EACTQ,mBAAW,EACX;QACEnB;MACF,CACF,CAAC;IACH,CAAC;IACDoB,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAACxB,IAAe,EAAE;MACpBL,KAAK,CAAC,QAAQ,EAAEK,IAAI,CAACe,IAAI,CAACC,QAAQ,CAAC;IACrC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"babel-transform.js","names":["_shared","require","_loadWywOptions","_cache","_transform","_collector","babelTransform","babel","options","cache","TransformCacheCollection","debug","logger","extend","name","pre","file","_file$opts$root","_file$opts$inputSourc","collect","valueCache","data","loadedAndParsed","entrypoint","pluginOptions","services","evaluator","Error","collector","ast","code","opts","filename","loadWywOptions","transformSync","root","undefined","inputSourceMap","syncResolve","visitor","post"],"sources":["../../src/plugins/babel-transform.ts"],"sourcesContent":["import type { BabelFile, PluginObj } from '@babel/core';\n\nimport { logger, syncResolve } from '@wyw-in-js/shared';\n\nimport { loadWywOptions } from '../transform/helpers/loadWywOptions';\nimport type { Core } from '../babel';\nimport { TransformCacheCollection } from '../cache';\nimport { transformSync } from '../transform';\nimport type { ICollectAction, SyncScenarioForAction } from '../transform/types';\nimport type { IPluginState, PluginOptions } from '../types';\n\nimport { collector } from './collector';\n\nexport default function babelTransform(\n babel: Core,\n options: Partial<PluginOptions>\n): PluginObj<IPluginState> {\n const cache = new TransformCacheCollection();\n const debug = logger.extend('babel-transform');\n\n return {\n name: '@wyw-in-js/transform/babel-transform',\n pre(file: BabelFile) {\n // eslint-disable-next-line require-yield\n function* collect(\n this: ICollectAction\n ): SyncScenarioForAction<ICollectAction> {\n const { valueCache } = this.data;\n const { loadedAndParsed } = this.entrypoint;\n const { pluginOptions } = this.services.options;\n if (loadedAndParsed.evaluator === 'ignored') {\n throw new Error('entrypoint was ignored');\n }\n\n collector(file, pluginOptions, valueCache);\n\n return {\n ast: loadedAndParsed.ast,\n code: loadedAndParsed.code,\n };\n }\n\n debug('start %s', file.opts.filename);\n\n const pluginOptions = loadWywOptions(options);\n\n transformSync(\n {\n babel,\n cache,\n options: {\n filename: file.opts.filename!,\n root: file.opts.root ?? undefined,\n inputSourceMap: file.opts.inputSourceMap ?? undefined,\n pluginOptions,\n },\n },\n file.code,\n syncResolve,\n {\n collect,\n }\n );\n },\n visitor: {},\n post(file: BabelFile) {\n debug('end %s', file.opts.filename);\n },\n };\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAIA,IAAAI,UAAA,GAAAJ,OAAA;AAEe,SAASK,cAAcA,CACpCC,KAAW,EACXC,OAA+B,EACN;EACzB,MAAMC,KAAK,GAAG,IAAIC,+BAAwB,CAAC,CAAC;EAC5C,MAAMC,KAAK,GAAGC,cAAM,CAACC,MAAM,CAAC,iBAAiB,CAAC;EAE9C,OAAO;IACLC,IAAI,EAAE,sCAAsC;IAC5CC,GAAGA,CAACC,IAAe,EAAE;MAAA,IAAAC,eAAA,EAAAC,qBAAA;MACnB;MACA,UAAUC,OAAOA,CAAA,EAEwB;QACvC,MAAM;UAAEC;QAAW,CAAC,GAAG,IAAI,CAACC,IAAI;QAChC,MAAM;UAAEC;QAAgB,CAAC,GAAG,IAAI,CAACC,UAAU;QAC3C,MAAM;UAAEC;QAAc,CAAC,GAAG,IAAI,CAACC,QAAQ,CAACjB,OAAO;QAC/C,IAAIc,eAAe,CAACI,SAAS,KAAK,SAAS,EAAE;UAC3C,MAAM,IAAIC,KAAK,CAAC,wBAAwB,CAAC;QAC3C;QAEA,IAAAC,oBAAS,EAACZ,IAAI,EAAEQ,aAAa,EAAEJ,UAAU,CAAC;QAE1C,OAAO;UACLS,GAAG,EAAEP,eAAe,CAACO,GAAG;UACxBC,IAAI,EAAER,eAAe,CAACQ;QACxB,CAAC;MACH;MAEAnB,KAAK,CAAC,UAAU,EAAEK,IAAI,CAACe,IAAI,CAACC,QAAQ,CAAC;MAErC,MAAMR,aAAa,GAAG,IAAAS,8BAAc,EAACzB,OAAO,CAAC;MAE7C,IAAA0B,wBAAa,EACX;QACE3B,KAAK;QACLE,KAAK;QACLD,OAAO,EAAE;UACPwB,QAAQ,EAAEhB,IAAI,CAACe,IAAI,CAACC,QAAS;UAC7BG,IAAI,GAAAlB,eAAA,GAAED,IAAI,CAACe,IAAI,CAACI,IAAI,cAAAlB,eAAA,cAAAA,eAAA,GAAImB,SAAS;UACjCC,cAAc,GAAAnB,qBAAA,GAAEF,IAAI,CAACe,IAAI,CAACM,cAAc,cAAAnB,qBAAA,cAAAA,qBAAA,GAAIkB,SAAS;UACrDZ;QACF;MACF,CAAC,EACDR,IAAI,CAACc,IAAI,EACTQ,mBAAW,EACX;QACEnB;MACF,CACF,CAAC;IACH,CAAC;IACDoB,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAACxB,IAAe,EAAE;MACpBL,KAAK,CAAC,QAAQ,EAAEK,IAAI,CAACe,IAAI,CAACC,QAAQ,CAAC;IACrC;EACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","names":["_shared","require","_EventEmitter","_getTagProcessor","_scopeHelpers","_traversalCache","filename","exports","__filename","collector","file","options","values","_options$eventEmitter","_file$path$scope$getD","eventEmitter","EventEmitter","dummy","processors","perf","applyProcessors","path","opts","processor","build","doRuntimeReplacement","push","length","prevalExport","scope","getData","findParent","p","isExpressionStatement","removeWithRelated","collectorPlugin","babel","_options$values","Map","debug","logger","extend","name","pre","metadata","wywInJS","replacements","rules","dependencies","visitor","post","invalidateTraversalCache"],"sources":["../../src/plugins/collector.ts"],"sourcesContent":["/**\n * Collector traverses the AST and collects information about imports and\n * all usages of WYW-processors.\n */\n\nimport type { BabelFile, PluginObj } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport { logger } from '@wyw-in-js/shared';\nimport type { StrictOptions } from '@wyw-in-js/shared';\n\nimport { EventEmitter } from '../utils/EventEmitter';\nimport { applyProcessors } from '../utils/getTagProcessor';\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\nimport { removeWithRelated } from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport const filename = __filename;\n\nexport function collector(\n file: BabelFile,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n > & { eventEmitter?: EventEmitter },\n values: ValueCache\n) {\n const eventEmitter = options.eventEmitter ?? EventEmitter.dummy;\n const processors: WYWTransformMetadata['processors'] = [];\n\n eventEmitter.perf('transform:collector:processTemplate', () => {\n applyProcessors(file.path, file.opts, options, (processor) => {\n processor.build(values);\n processor.doRuntimeReplacement();\n processors.push(processor);\n });\n });\n\n if (processors.length === 0) {\n // We didn't find any processors.\n return processors;\n }\n\n // We can remove __wywPreval export and all related code\n const prevalExport = (\n file.path.scope.getData('__wywPreval') as NodePath | undefined\n )?.findParent((p) => p.isExpressionStatement());\n if (prevalExport) {\n removeWithRelated([prevalExport]);\n }\n\n return processors;\n}\n\nexport default function collectorPlugin(\n babel: Core,\n options: StrictOptions & { eventEmitter?: EventEmitter; values?: ValueCache }\n): PluginObj<IPluginState> {\n const values = options.values ?? new Map<string, unknown>();\n const debug = logger.extend('collector');\n return {\n name: '@wyw-in-js/transform/collector',\n pre(file: BabelFile) {\n debug('start %s', file.opts.filename);\n\n const processors = collector(file, options, values);\n\n if (processors.length === 0) {\n // We didn't find any wyw-in-js template literals.\n return;\n }\n\n this.file.metadata.wywInJS = {\n processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n debug('end %s', file.opts.filename);\n },\n visitor: {},\n post(file: BabelFile) {\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":";;;;;;;;AASA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAlBA;AACA;AACA;AACA;;AAiBO,MAAMK,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAGE,UAAU;AAE3B,SAASC,SAASA,CACvBC,IAAe,EACfC,OAGmC,EACnCC,MAAkB,EAClB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EACA,MAAMC,YAAY,IAAAF,qBAAA,GAAGF,OAAO,CAACI,YAAY,cAAAF,qBAAA,cAAAA,qBAAA,GAAIG,0BAAY,CAACC,KAAK;EAC/D,MAAMC,UAA8C,GAAG,EAAE;EAEzDH,YAAY,CAACI,IAAI,CAAC,qCAAqC,EAAE,MAAM;IAC7D,IAAAC,gCAAe,EAACV,IAAI,CAACW,IAAI,EAAEX,IAAI,CAACY,IAAI,EAAEX,OAAO,EAAGY,SAAS,IAAK;MAC5DA,SAAS,CAACC,KAAK,CAACZ,MAAM,CAAC;MACvBW,SAAS,CAACE,oBAAoB,CAAC,CAAC;MAChCP,UAAU,CAACQ,IAAI,CAACH,SAAS,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAIL,UAAU,CAACS,MAAM,KAAK,CAAC,EAAE;IAC3B;IACA,OAAOT,UAAU;EACnB;;EAEA;EACA,MAAMU,YAAY,IAAAd,qBAAA,GAChBJ,IAAI,CAACW,IAAI,CAACQ,KAAK,CAACC,OAAO,CAAC,aAAa,CAAC,cAAAhB,qBAAA,uBADnBA,qBAAA,CAElBiB,UAAU,CAAEC,CAAC,IAAKA,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;EAC/C,IAAIL,YAAY,EAAE;IAChB,IAAAM,+BAAiB,EAAC,CAACN,YAAY,CAAC,CAAC;EACnC;EAEA,OAAOV,UAAU;AACnB;AAEe,SAASiB,eAAeA,CACrCC,KAAW,EACXzB,OAA6E,EACpD;EAAA,IAAA0B,eAAA;EACzB,MAAMzB,MAAM,IAAAyB,eAAA,GAAG1B,OAAO,CAACC,MAAM,cAAAyB,eAAA,cAAAA,eAAA,GAAI,IAAIC,GAAG,CAAkB,CAAC;EAC3D,MAAMC,KAAK,GAAGC,cAAM,CAACC,MAAM,CAAC,WAAW,CAAC;EACxC,OAAO;IACLC,IAAI,EAAE,gCAAgC;IACtCC,GAAGA,CAACjC,IAAe,EAAE;MACnB6B,KAAK,CAAC,UAAU,EAAE7B,IAAI,CAACY,IAAI,CAAChB,QAAQ,CAAC;MAErC,MAAMY,UAAU,GAAGT,SAAS,CAACC,IAAI,EAAEC,OAAO,EAAEC,MAAM,CAAC;MAEnD,IAAIM,UAAU,CAACS,MAAM,KAAK,CAAC,EAAE;QAC3B;QACA;MACF;MAEA,IAAI,CAACjB,IAAI,CAACkC,QAAQ,CAACC,OAAO,GAAG;QAC3B3B,UAAU;QACV4B,YAAY,EAAE,EAAE;QAChBC,KAAK,EAAE,CAAC,CAAC;QACTC,YAAY,EAAE;MAChB,CAAC;MAEDT,KAAK,CAAC,QAAQ,EAAE7B,IAAI,CAACY,IAAI,CAAChB,QAAQ,CAAC;IACrC,CAAC;IACD2C,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAACxC,IAAe,EAAE;MACpB,IAAAyC,wCAAwB,EAACzC,IAAI,CAACW,IAAI,CAAC;IACrC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"collector.js","names":["_shared","require","_EventEmitter","_getTagProcessor","_scopeHelpers","_traversalCache","filename","exports","__filename","collector","file","options","values","_options$eventEmitter","_file$path$scope$getD","eventEmitter","EventEmitter","dummy","processors","perf","applyProcessors","path","opts","processor","build","doRuntimeReplacement","push","length","prevalExport","scope","getData","findParent","p","isExpressionStatement","removeWithRelated","collectorPlugin","babel","_options$values","Map","debug","logger","extend","name","pre","metadata","wywInJS","replacements","rules","dependencies","visitor","post","invalidateTraversalCache"],"sources":["../../src/plugins/collector.ts"],"sourcesContent":["/**\n * Collector traverses the AST and collects information about imports and\n * all usages of WYW-processors.\n */\n\nimport type { BabelFile, PluginObj } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport { logger } from '@wyw-in-js/shared';\nimport type { StrictOptions } from '@wyw-in-js/shared';\n\nimport { EventEmitter } from '../utils/EventEmitter';\nimport { applyProcessors } from '../utils/getTagProcessor';\nimport type { Core } from '../babel';\nimport type { IPluginState } from '../types';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\nimport { removeWithRelated } from '../utils/scopeHelpers';\nimport { invalidateTraversalCache } from '../utils/traversalCache';\n\nexport const filename = __filename;\n\nexport function collector(\n file: BabelFile,\n options: Pick<\n StrictOptions,\n 'classNameSlug' | 'displayName' | 'extensions' | 'evaluate' | 'tagResolver'\n > & { eventEmitter?: EventEmitter },\n values: ValueCache\n) {\n const eventEmitter = options.eventEmitter ?? EventEmitter.dummy;\n const processors: WYWTransformMetadata['processors'] = [];\n\n eventEmitter.perf('transform:collector:processTemplate', () => {\n applyProcessors(file.path, file.opts, options, (processor) => {\n processor.build(values);\n processor.doRuntimeReplacement();\n processors.push(processor);\n });\n });\n\n if (processors.length === 0) {\n // We didn't find any processors.\n return processors;\n }\n\n // We can remove __wywPreval export and all related code\n const prevalExport = (\n file.path.scope.getData('__wywPreval') as NodePath | undefined\n )?.findParent((p) => p.isExpressionStatement());\n if (prevalExport) {\n removeWithRelated([prevalExport]);\n }\n\n return processors;\n}\n\nexport default function collectorPlugin(\n babel: Core,\n options: StrictOptions & { eventEmitter?: EventEmitter; values?: ValueCache }\n): PluginObj<IPluginState> {\n const values = options.values ?? new Map<string, unknown>();\n const debug = logger.extend('collector');\n return {\n name: '@wyw-in-js/transform/collector',\n pre(file: BabelFile) {\n debug('start %s', file.opts.filename);\n\n const processors = collector(file, options, values);\n\n if (processors.length === 0) {\n // We didn't find any wyw-in-js template literals.\n return;\n }\n\n this.file.metadata.wywInJS = {\n processors,\n replacements: [],\n rules: {},\n dependencies: [],\n };\n\n debug('end %s', file.opts.filename);\n },\n visitor: {},\n post(file: BabelFile) {\n invalidateTraversalCache(file.path);\n },\n };\n}\n"],"mappings":";;;;;;;;AASA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAIA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAlBA;AACA;AACA;AACA;;AAiBO,MAAMK,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAGE,UAAU;AAE3B,SAASC,SAASA,CACvBC,IAAe,EACfC,OAGmC,EACnCC,MAAkB,EAClB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EACA,MAAMC,YAAY,IAAAF,qBAAA,GAAGF,OAAO,CAACI,YAAY,cAAAF,qBAAA,cAAAA,qBAAA,GAAIG,0BAAY,CAACC,KAAK;EAC/D,MAAMC,UAA8C,GAAG,EAAE;EAEzDH,YAAY,CAACI,IAAI,CAAC,qCAAqC,EAAE,MAAM;IAC7D,IAAAC,gCAAe,EAACV,IAAI,CAACW,IAAI,EAAEX,IAAI,CAACY,IAAI,EAAEX,OAAO,EAAGY,SAAS,IAAK;MAC5DA,SAAS,CAACC,KAAK,CAACZ,MAAM,CAAC;MACvBW,SAAS,CAACE,oBAAoB,CAAC,CAAC;MAChCP,UAAU,CAACQ,IAAI,CAACH,SAAS,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAIL,UAAU,CAACS,MAAM,KAAK,CAAC,EAAE;IAC3B;IACA,OAAOT,UAAU;EACnB;;EAEA;EACA,MAAMU,YAAY,IAAAd,qBAAA,GAChBJ,IAAI,CAACW,IAAI,CAACQ,KAAK,CAACC,OAAO,CAAC,aAAa,CAAC,cAAAhB,qBAAA,uBADnBA,qBAAA,CAElBiB,UAAU,CAAEC,CAAC,IAAKA,CAAC,CAACC,qBAAqB,CAAC,CAAC,CAAC;EAC/C,IAAIL,YAAY,EAAE;IAChB,IAAAM,+BAAiB,EAAC,CAACN,YAAY,CAAC,CAAC;EACnC;EAEA,OAAOV,UAAU;AACnB;AAEe,SAASiB,eAAeA,CACrCC,KAAW,EACXzB,OAA6E,EACpD;EAAA,IAAA0B,eAAA;EACzB,MAAMzB,MAAM,IAAAyB,eAAA,GAAG1B,OAAO,CAACC,MAAM,cAAAyB,eAAA,cAAAA,eAAA,GAAI,IAAIC,GAAG,CAAkB,CAAC;EAC3D,MAAMC,KAAK,GAAGC,cAAM,CAACC,MAAM,CAAC,WAAW,CAAC;EACxC,OAAO;IACLC,IAAI,EAAE,gCAAgC;IACtCC,GAAGA,CAACjC,IAAe,EAAE;MACnB6B,KAAK,CAAC,UAAU,EAAE7B,IAAI,CAACY,IAAI,CAAChB,QAAQ,CAAC;MAErC,MAAMY,UAAU,GAAGT,SAAS,CAACC,IAAI,EAAEC,OAAO,EAAEC,MAAM,CAAC;MAEnD,IAAIM,UAAU,CAACS,MAAM,KAAK,CAAC,EAAE;QAC3B;QACA;MACF;MAEA,IAAI,CAACjB,IAAI,CAACkC,QAAQ,CAACC,OAAO,GAAG;QAC3B3B,UAAU;QACV4B,YAAY,EAAE,EAAE;QAChBC,KAAK,EAAE,CAAC,CAAC;QACTC,YAAY,EAAE;MAChB,CAAC;MAEDT,KAAK,CAAC,QAAQ,EAAE7B,IAAI,CAACY,IAAI,CAAChB,QAAQ,CAAC;IACrC,CAAC;IACD2C,OAAO,EAAE,CAAC,CAAC;IACXC,IAAIA,CAACxC,IAAe,EAAE;MACpB,IAAAyC,wCAAwB,EAACzC,IAAI,CAACW,IAAI,CAAC;IACrC;EACF,CAAC;AACH","ignoreList":[]}
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = dynamicImport;
7
+ var _getMemberExpressionPropertyName = require("../utils/getMemberExpressionPropertyName");
8
+ var _unwrapExpression = require("../utils/unwrapExpression");
7
9
  /**
8
10
  * The plugin that replaces `import()` with `__wyw_dynamic_import` as Node VM does not support dynamic imports yet.
9
11
  */
@@ -11,26 +13,46 @@ function dynamicImport(babel) {
11
13
  const {
12
14
  types: t
13
15
  } = babel;
16
+ const isStringLikeExpression = node => {
17
+ const expression = (0, _unwrapExpression.unwrapExpression)(node);
18
+ if (t.isStringLiteral(expression) || t.isTemplateLiteral(expression)) {
19
+ return true;
20
+ }
21
+ if (t.isBinaryExpression(expression) && expression.operator === '+') {
22
+ return t.isExpression(expression.left) && isStringLikeExpression(expression.left) || t.isExpression(expression.right) && isStringLikeExpression(expression.right);
23
+ }
24
+ if (t.isCallExpression(expression)) {
25
+ const {
26
+ callee
27
+ } = expression;
28
+ if (!t.isMemberExpression(callee)) {
29
+ return false;
30
+ }
31
+ const propertyName = (0, _getMemberExpressionPropertyName.getMemberExpressionPropertyName)(callee);
32
+ if (propertyName !== 'concat') {
33
+ return false;
34
+ }
35
+ if (!t.isExpression(callee.object)) {
36
+ return false;
37
+ }
38
+ return isStringLikeExpression(callee.object);
39
+ }
40
+ return false;
41
+ };
14
42
  return {
15
43
  name: '@wyw-in-js/transform/dynamic-import',
16
44
  visitor: {
17
45
  CallExpression(path) {
18
46
  if (path.get('callee').isImport()) {
19
47
  const moduleName = path.get('arguments.0');
20
- if (moduleName.isStringLiteral()) {
21
- path.replaceWith(t.callExpression(t.identifier('__wyw_dynamic_import'), [t.stringLiteral(moduleName.node.value)]));
48
+ const argument = moduleName.isExpression() ? moduleName.node : null;
49
+ if (argument) {
50
+ const unwrappedArgument = (0, _unwrapExpression.unwrapExpression)(argument);
51
+ const nextArgument = isStringLikeExpression(argument) ? t.cloneNode(unwrappedArgument, true, true) : t.cloneNode(argument, true, true);
52
+ path.replaceWith(t.callExpression(t.identifier('__wyw_dynamic_import'), [nextArgument]));
22
53
  return;
23
54
  }
24
- if (moduleName.isTemplateLiteral()) {
25
- path.replaceWith(t.callExpression(t.identifier('__wyw_dynamic_import'), [t.cloneNode(moduleName.node, true, true)]));
26
- return;
27
- }
28
-
29
- // Throw an error if this import will be reached during evaluation
30
- // throw new Error(
31
- // 'Dynamic import argument must be a string or a template literal'
32
- // );
33
- path.replaceWith(t.callExpression(t.arrowFunctionExpression([], t.blockStatement([t.throwStatement(t.newExpression(t.identifier('Error'), [t.stringLiteral('Dynamic import argument must be a string or a template literal')]))])), []));
55
+ path.replaceWith(t.callExpression(t.identifier('__wyw_dynamic_import'), []));
34
56
  }
35
57
  }
36
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-import.js","names":["dynamicImport","babel","types","t","name","visitor","CallExpression","path","get","isImport","moduleName","isStringLiteral","replaceWith","callExpression","identifier","stringLiteral","node","value","isTemplateLiteral","cloneNode","arrowFunctionExpression","blockStatement","throwStatement","newExpression"],"sources":["../../src/plugins/dynamic-import.ts"],"sourcesContent":["import type { NodePath, PluginObj } from '@babel/core';\n\nimport type { Core } from '../babel';\n\n/**\n * The plugin that replaces `import()` with `__wyw_dynamic_import` as Node VM does not support dynamic imports yet.\n */\nexport default function dynamicImport(babel: Core): PluginObj {\n const { types: t } = babel;\n\n return {\n name: '@wyw-in-js/transform/dynamic-import',\n visitor: {\n CallExpression(path) {\n if (path.get('callee').isImport()) {\n const moduleName = path.get('arguments.0') as NodePath;\n\n if (moduleName.isStringLiteral()) {\n path.replaceWith(\n t.callExpression(t.identifier('__wyw_dynamic_import'), [\n t.stringLiteral(moduleName.node.value),\n ])\n );\n return;\n }\n\n if (moduleName.isTemplateLiteral()) {\n path.replaceWith(\n t.callExpression(t.identifier('__wyw_dynamic_import'), [\n t.cloneNode(moduleName.node, true, true),\n ])\n );\n return;\n }\n\n // Throw an error if this import will be reached during evaluation\n // throw new Error(\n // 'Dynamic import argument must be a string or a template literal'\n // );\n path.replaceWith(\n t.callExpression(\n t.arrowFunctionExpression(\n [],\n t.blockStatement([\n t.throwStatement(\n t.newExpression(t.identifier('Error'), [\n t.stringLiteral(\n 'Dynamic import argument must be a string or a template literal'\n ),\n ])\n ),\n ])\n ),\n []\n )\n );\n }\n },\n },\n };\n}\n"],"mappings":";;;;;;AAIA;AACA;AACA;AACe,SAASA,aAAaA,CAACC,KAAW,EAAa;EAC5D,MAAM;IAAEC,KAAK,EAAEC;EAAE,CAAC,GAAGF,KAAK;EAE1B,OAAO;IACLG,IAAI,EAAE,qCAAqC;IAC3CC,OAAO,EAAE;MACPC,cAAcA,CAACC,IAAI,EAAE;QACnB,IAAIA,IAAI,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE;UACjC,MAAMC,UAAU,GAAGH,IAAI,CAACC,GAAG,CAAC,aAAa,CAAa;UAEtD,IAAIE,UAAU,CAACC,eAAe,CAAC,CAAC,EAAE;YAChCJ,IAAI,CAACK,WAAW,CACdT,CAAC,CAACU,cAAc,CAACV,CAAC,CAACW,UAAU,CAAC,sBAAsB,CAAC,EAAE,CACrDX,CAAC,CAACY,aAAa,CAACL,UAAU,CAACM,IAAI,CAACC,KAAK,CAAC,CACvC,CACH,CAAC;YACD;UACF;UAEA,IAAIP,UAAU,CAACQ,iBAAiB,CAAC,CAAC,EAAE;YAClCX,IAAI,CAACK,WAAW,CACdT,CAAC,CAACU,cAAc,CAACV,CAAC,CAACW,UAAU,CAAC,sBAAsB,CAAC,EAAE,CACrDX,CAAC,CAACgB,SAAS,CAACT,UAAU,CAACM,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CACzC,CACH,CAAC;YACD;UACF;;UAEA;UACA;UACA;UACA;UACAT,IAAI,CAACK,WAAW,CACdT,CAAC,CAACU,cAAc,CACdV,CAAC,CAACiB,uBAAuB,CACvB,EAAE,EACFjB,CAAC,CAACkB,cAAc,CAAC,CACflB,CAAC,CAACmB,cAAc,CACdnB,CAAC,CAACoB,aAAa,CAACpB,CAAC,CAACW,UAAU,CAAC,OAAO,CAAC,EAAE,CACrCX,CAAC,CAACY,aAAa,CACb,gEACF,CAAC,CACF,CACH,CAAC,CACF,CACH,CAAC,EACD,EACF,CACF,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"dynamic-import.js","names":["_getMemberExpressionPropertyName","require","_unwrapExpression","dynamicImport","babel","types","t","isStringLikeExpression","node","expression","unwrapExpression","isStringLiteral","isTemplateLiteral","isBinaryExpression","operator","isExpression","left","right","isCallExpression","callee","isMemberExpression","propertyName","getMemberExpressionPropertyName","object","name","visitor","CallExpression","path","get","isImport","moduleName","argument","unwrappedArgument","nextArgument","cloneNode","replaceWith","callExpression","identifier"],"sources":["../../src/plugins/dynamic-import.ts"],"sourcesContent":["import type { NodePath, PluginObj } from '@babel/core';\nimport type { Expression } from '@babel/types';\n\nimport type { Core } from '../babel';\nimport { getMemberExpressionPropertyName } from '../utils/getMemberExpressionPropertyName';\nimport { unwrapExpression } from '../utils/unwrapExpression';\n\n/**\n * The plugin that replaces `import()` with `__wyw_dynamic_import` as Node VM does not support dynamic imports yet.\n */\nexport default function dynamicImport(babel: Core): PluginObj {\n const { types: t } = babel;\n\n const isStringLikeExpression = (node: Expression): boolean => {\n const expression = unwrapExpression(node);\n\n if (t.isStringLiteral(expression) || t.isTemplateLiteral(expression)) {\n return true;\n }\n\n if (t.isBinaryExpression(expression) && expression.operator === '+') {\n return (\n (t.isExpression(expression.left) &&\n isStringLikeExpression(expression.left)) ||\n (t.isExpression(expression.right) &&\n isStringLikeExpression(expression.right))\n );\n }\n\n if (t.isCallExpression(expression)) {\n const { callee } = expression;\n if (!t.isMemberExpression(callee)) {\n return false;\n }\n const propertyName = getMemberExpressionPropertyName(callee);\n if (propertyName !== 'concat') {\n return false;\n }\n if (!t.isExpression(callee.object)) {\n return false;\n }\n return isStringLikeExpression(callee.object);\n }\n\n return false;\n };\n\n return {\n name: '@wyw-in-js/transform/dynamic-import',\n visitor: {\n CallExpression(path) {\n if (path.get('callee').isImport()) {\n const moduleName = path.get('arguments.0') as NodePath;\n const argument = moduleName.isExpression() ? moduleName.node : null;\n\n if (argument) {\n const unwrappedArgument = unwrapExpression(argument);\n const nextArgument = isStringLikeExpression(argument)\n ? t.cloneNode(unwrappedArgument, true, true)\n : t.cloneNode(argument, true, true);\n\n path.replaceWith(\n t.callExpression(t.identifier('__wyw_dynamic_import'), [\n nextArgument,\n ])\n );\n return;\n }\n\n path.replaceWith(\n t.callExpression(t.identifier('__wyw_dynamic_import'), [])\n );\n }\n },\n },\n };\n}\n"],"mappings":";;;;;;AAIA,IAAAA,gCAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACe,SAASE,aAAaA,CAACC,KAAW,EAAa;EAC5D,MAAM;IAAEC,KAAK,EAAEC;EAAE,CAAC,GAAGF,KAAK;EAE1B,MAAMG,sBAAsB,GAAIC,IAAgB,IAAc;IAC5D,MAAMC,UAAU,GAAG,IAAAC,kCAAgB,EAACF,IAAI,CAAC;IAEzC,IAAIF,CAAC,CAACK,eAAe,CAACF,UAAU,CAAC,IAAIH,CAAC,CAACM,iBAAiB,CAACH,UAAU,CAAC,EAAE;MACpE,OAAO,IAAI;IACb;IAEA,IAAIH,CAAC,CAACO,kBAAkB,CAACJ,UAAU,CAAC,IAAIA,UAAU,CAACK,QAAQ,KAAK,GAAG,EAAE;MACnE,OACGR,CAAC,CAACS,YAAY,CAACN,UAAU,CAACO,IAAI,CAAC,IAC9BT,sBAAsB,CAACE,UAAU,CAACO,IAAI,CAAC,IACxCV,CAAC,CAACS,YAAY,CAACN,UAAU,CAACQ,KAAK,CAAC,IAC/BV,sBAAsB,CAACE,UAAU,CAACQ,KAAK,CAAE;IAE/C;IAEA,IAAIX,CAAC,CAACY,gBAAgB,CAACT,UAAU,CAAC,EAAE;MAClC,MAAM;QAAEU;MAAO,CAAC,GAAGV,UAAU;MAC7B,IAAI,CAACH,CAAC,CAACc,kBAAkB,CAACD,MAAM,CAAC,EAAE;QACjC,OAAO,KAAK;MACd;MACA,MAAME,YAAY,GAAG,IAAAC,gEAA+B,EAACH,MAAM,CAAC;MAC5D,IAAIE,YAAY,KAAK,QAAQ,EAAE;QAC7B,OAAO,KAAK;MACd;MACA,IAAI,CAACf,CAAC,CAACS,YAAY,CAACI,MAAM,CAACI,MAAM,CAAC,EAAE;QAClC,OAAO,KAAK;MACd;MACA,OAAOhB,sBAAsB,CAACY,MAAM,CAACI,MAAM,CAAC;IAC9C;IAEA,OAAO,KAAK;EACd,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,qCAAqC;IAC3CC,OAAO,EAAE;MACPC,cAAcA,CAACC,IAAI,EAAE;QACnB,IAAIA,IAAI,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE;UACjC,MAAMC,UAAU,GAAGH,IAAI,CAACC,GAAG,CAAC,aAAa,CAAa;UACtD,MAAMG,QAAQ,GAAGD,UAAU,CAACf,YAAY,CAAC,CAAC,GAAGe,UAAU,CAACtB,IAAI,GAAG,IAAI;UAEnE,IAAIuB,QAAQ,EAAE;YACZ,MAAMC,iBAAiB,GAAG,IAAAtB,kCAAgB,EAACqB,QAAQ,CAAC;YACpD,MAAME,YAAY,GAAG1B,sBAAsB,CAACwB,QAAQ,CAAC,GACjDzB,CAAC,CAAC4B,SAAS,CAACF,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,GAC1C1B,CAAC,CAAC4B,SAAS,CAACH,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;YAErCJ,IAAI,CAACQ,WAAW,CACd7B,CAAC,CAAC8B,cAAc,CAAC9B,CAAC,CAAC+B,UAAU,CAAC,sBAAsB,CAAC,EAAE,CACrDJ,YAAY,CACb,CACH,CAAC;YACD;UACF;UAEAN,IAAI,CAACQ,WAAW,CACd7B,CAAC,CAAC8B,cAAc,CAAC9B,CAAC,CAAC+B,UAAU,CAAC,sBAAsB,CAAC,EAAE,EAAE,CAC3D,CAAC;QACH;MACF;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -11,6 +11,7 @@ var _EventEmitter = require("../utils/EventEmitter");
11
11
  var _addIdentifierToWywPreval = require("../utils/addIdentifierToWywPreval");
12
12
  var _getFileIdx = require("../utils/getFileIdx");
13
13
  var _removeDangerousCode = require("../utils/removeDangerousCode");
14
+ var _replaceImportMetaEnv = require("../utils/replaceImportMetaEnv");
14
15
  var _traversalCache = require("../utils/traversalCache");
15
16
  /**
16
17
  * This file is a babel preset used to transform files inside evaluators.
@@ -42,6 +43,9 @@ function preeval(babel, options) {
42
43
  this.processors.push(processor);
43
44
  });
44
45
  });
46
+ eventEmitter.perf('transform:preeval:importMetaEnv', () => {
47
+ (0, _replaceImportMetaEnv.replaceImportMetaEnv)(file.path, t);
48
+ });
45
49
  if ((0, _shared.isFeatureEnabled)(options.features, 'dangerousCodeRemover', filename)) {
46
50
  log('start', 'Strip all JSX and browser related stuff');
47
51
  eventEmitter.perf('transform:preeval:removeDangerousCode', () => (0, _removeDangerousCode.removeDangerousCode)(file.path, options.codeRemover));