@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
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEntrypoint.js","names":["_getFileIdx","require","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","_descriptor$get","v","call","_descriptor$get2","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","dependencies","_parents$0$log$extend","_parents$","_parents$0$seqId","_parents$2","idx","getFileIdx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[],\n public readonly dependencies: Map<string, IEntrypointDependency>\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n this.dependencies = dependencies;\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AAJA;;AASA,MAAMC,MAAM,GAAGA,CACbC,GAAY,EACZC,GAAS,KAET,CAAC,OAAOD,GAAG,KAAK,QAAQ,IAAI,OAAOA,GAAG,KAAK,UAAU,KACrDA,GAAG,KAAK,IAAI,IACZC,GAAG,IAAID,GAAG;AAEZ,MAAME,MAAM,GAAGC,MAAM,CAAC,QAAQ,CAAC;AAE/B,MAAMC,OAAO,GACXJ,GAAY,IAEZ,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,IAAIE,MAAM,IAAIF,GAAG;AAEnD,MAAMK,aAAa,GAAIC,GAAa,IAAK;EAC9C,IAAIC,OAAyC,GAAG,CAAC,CAAC;EAClD,MAAMC,UAAU,GAAG,IAAIC,GAAG,CAAkB,CAAC;EAE7C,OAAO,IAAIC,KAAK,CAACH,OAAO,EAAE;IACxBI,GAAG,EAAEA,CAACC,OAAO,EAAEX,GAAG,KAAK;MACrB,IAAIA,GAAG,KAAKC,MAAM,EAAE;QAClB,OAAOK,OAAO;MAChB;MAEA,IAAIM,KAAc;MAClB,IAAIZ,GAAG,IAAIM,OAAO,EAAE;QAClBM,KAAK,GAAGN,OAAO,CAACN,GAAG,CAAC;MACtB,CAAC,MAAM;QACL;QACA;QACAY,KAAK,GAAGC,OAAO,CAACH,GAAG,CAACJ,OAAO,EAAEN,GAAG,CAAC;MACnC;MAEA,IAAIY,KAAK,KAAKE,SAAS,IAAI,SAAS,IAAIR,OAAO,EAAE;QAC/C,MAAMS,YAAY,GAAGT,OAAO,CAACU,OAAO;QACpC,IAAIlB,MAAM,CAACiB,YAAY,EAAEf,GAAG,CAAC,EAAE;UAC7BK,GAAG,CACD,yFAAyF,EACzFL,GACF,CAAC;UACDY,KAAK,GAAGG,YAAY,CAACf,GAAG,CAAC;QAC3B;MACF;MAEA,IAAIY,KAAK,KAAKE,SAAS,IAAIP,UAAU,CAACU,GAAG,CAACjB,GAAG,CAAC,EAAE;QAC9CY,KAAK,GAAIA,KAAK,CAAmB,CAAC;MACpC;MAEAP,GAAG,CAAC,YAAY,EAAEL,GAAG,EAAEY,KAAK,CAAC;MAC7B,OAAOA,KAAK;IACd,CAAC;IACDK,GAAG,EAAEA,CAACN,OAAO,EAAEX,GAAG,KAAK;MACrB,IAAIA,GAAG,KAAKC,MAAM,EAAE,OAAO,IAAI;MAC/B,OAAOD,GAAG,IAAIM,OAAO;IACvB,CAAC;IACDY,OAAO,EAAEA,CAAA,KAAM;MACb,OAAOC,MAAM,CAACC,IAAI,CAACd,OAAO,CAAC;IAC7B,CAAC;IACDe,GAAG,EAAEA,CAACV,OAAO,EAAEX,GAAG,EAAEY,KAAK,KAAK;MAC5B,IAAIZ,GAAG,KAAKC,MAAM,EAAE;QAClBK,OAAO,GAAGM,KAAK;QACf,OAAO,IAAI;MACb;MAEA,IAAIZ,GAAG,KAAK,YAAY,EAAE;QACxBK,GAAG,CAAC,YAAY,EAAEL,GAAG,EAAEY,KAAK,CAAC;MAC/B;MAEA,IAAIA,KAAK,KAAKE,SAAS,EAAE;QACvBR,OAAO,CAACN,GAAG,CAAC,GAAGY,KAAK;QACpBL,UAAU,CAACe,MAAM,CAACtB,GAAG,CAAC;MACxB;MAEA,OAAO,IAAI;IACb,CAAC;IACDuB,cAAc,EAAEA,CAACZ,OAAO,EAAEX,GAAG,EAAEwB,UAAU,KAAK;MAC5C,MAAM;QAAEZ;MAAM,CAAC,GAAGY,UAAU;MAC5B,IAAIZ,KAAK,KAAKE,SAAS,EAAE;QACvB,IAAId,GAAG,KAAK,YAAY,EAAE;UACxBK,GAAG,CAAC,iCAAiC,EAAEL,GAAG,EAAEY,KAAK,CAAC;QACpD;QAEAN,OAAO,CAACN,GAAG,CAAC,GAAGY,KAAK;QACpBL,UAAU,CAACe,MAAM,CAACtB,GAAG,CAAC;QAEtB,OAAO,IAAI;MACb;MAEA,IAAI,KAAK,IAAIwB,UAAU,EAAE;QACvB,IAAIjB,UAAU,CAACU,GAAG,CAACjB,GAAG,CAAC,EAAE;UACvB,MAAMyB,IAAI,GAAGnB,OAAO,CAACN,GAAG,CAAe;UACvCM,OAAO,CAACN,GAAG,CAAC,GAAG,MAAM;YAAA,IAAA0B,eAAA;YACnB,MAAMC,CAAC,IAAAD,eAAA,GAAGF,UAAU,CAACd,GAAG,cAAAgB,eAAA,uBAAdA,eAAA,CAAAE,IAAA,CAAAJ,UAAiB,CAAC;YAC5B,IAAIG,CAAC,KAAKb,SAAS,EAAE;cACnB,OAAOa,CAAC;YACV;YAEA,OAAOF,IAAI,CAAC,CAAC;UACf,CAAC;QACH,CAAC,MAAM;UACL,MAAMA,IAAI,GAAGnB,OAAO,CAACN,GAAG,CAAC;UACzBM,OAAO,CAACN,GAAG,CAAC,GAAG,MAAM;YAAA,IAAA6B,gBAAA;YACnB,MAAMF,CAAC,IAAAE,gBAAA,GAAGL,UAAU,CAACd,GAAG,cAAAmB,gBAAA,uBAAdA,gBAAA,CAAAD,IAAA,CAAAJ,UAAiB,CAAC;YAC5B,IAAIG,CAAC,KAAKb,SAAS,EAAE;cACnB,OAAOa,CAAC;YACV;YAEA,OAAOF,IAAI;UACb,CAAC;QACH;QAEAlB,UAAU,CAACuB,GAAG,CAAC9B,GAAG,CAAC;QACnBK,GAAG,CAAC,+BAA+B,EAAEL,GAAG,CAAC;MAC3C;MAEA,OAAO,IAAI;IACb,CAAC;IACD+B,wBAAwB,EAAEA,CAACpB,OAAO,EAAEX,GAAG,KAAK;MAC1C,IAAIA,GAAG,IAAIM,OAAO,EAChB,OAAO;QACL0B,UAAU,EAAE,IAAI;QAChBC,YAAY,EAAE;MAChB,CAAC;MAEH,OAAOnB,SAAS;IAClB;EACF,CAAC,CAAC;AACJ,CAAC;AAACR,OAAA,CAAAF,aAAA,GAAAA,aAAA;AAEF,MAAM8B,OAAO,GAAGhC,MAAM,CAAC,SAAS,CAAC;AAEjC,IAAIiC,eAAe,GAAG,CAAC;AAEhB,MAAeC,cAAc,CAAC;EACnC,OAAchC,aAAa,GAAGA,aAAa;EAM3C;EACgBiC,KAAK,GAAGF,eAAe,EAAE;EAEhC,CAAC7B,OAAO;EAEPgC,WAAWA,CACTC,QAAkB,EACZC,aAAuB,EACvClC,OAAqD,EACrCmC,UAAkB,EAClBC,IAAY,EACZC,IAAc,EACdC,OAA2B,EAC3BC,YAAgD,EAChE;IAAA,IAAAC,qBAAA,EAAAC,SAAA,EAAAC,gBAAA,EAAAC,UAAA;IAAA,KARUV,QAAkB,GAAlBA,QAAkB;IAAA,KACZC,aAAuB,GAAvBA,aAAuB;IAAA,KAEvBC,UAAkB,GAAlBA,UAAkB;IAAA,KAClBC,IAAY,GAAZA,IAAY;IAAA,KACZC,IAAc,GAAdA,IAAc;IAAA,KACdC,OAA2B,GAA3BA,OAA2B;IAAA,KAC3BC,YAAgD,GAAhDA,YAAgD;IAEhE,IAAI,CAACK,GAAG,GAAG,IAAAC,sBAAU,EAACT,IAAI,CAAC;IAC3B,IAAI,CAACrC,GAAG,IAAAyC,qBAAA,IAAAC,SAAA,GACNH,OAAO,CAAC,CAAC,CAAC,cAAAG,SAAA,uBAAVA,SAAA,CAAY1C,GAAG,CAAC+C,MAAM,CAAC,IAAI,CAACC,GAAG,EAAE,IAAI,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAIP,QAAQ,CAAClC,GAAG,CAAC+C,MAAM,CAAC,IAAI,CAACC,GAAG,CAAC;IAEzE,IAAI,CAACR,YAAY,GAAGA,YAAY;IAEhC,IAAIS,kBAAkB,GAAG,KAAK;IAC9B,IAAIhD,OAAO,EAAE;MACX,IAAIH,OAAO,CAACG,OAAO,CAAC,EAAE;QACpB,IAAI,CAAC,CAACA,OAAO,GAAGA,OAAO;QACvBgD,kBAAkB,GAAG,IAAI;MAC3B,CAAC,MAAM;QACL,IAAI,CAAC,CAAChD,OAAO,GAAGF,aAAa,CAAC,IAAI,CAACC,GAAG,CAAC;QACvC,IAAI,CAAC,CAACC,OAAO,CAAC4B,OAAO,CAAC,GAAG5B,OAAO;MAClC;MACA,IAAI,CAACA,OAAO,GAAGA,OAAO;IACxB,CAAC,MAAM;MACL,IAAI,CAAC,CAACA,OAAO,GAAG8B,cAAc,CAAChC,aAAa,CAAC,IAAI,CAACC,GAAG,CAAC;IACxD;IAEAkC,QAAQ,CAACgB,YAAY,CAACC,eAAe,CAAC,IAAI,CAACnB,KAAK,EAAE;MAChDoB,KAAK,EAAE,IAAI,CAACnB,WAAW,CAACI,IAAI;MAC5BF,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCkB,QAAQ,EAAEhB,IAAI;MACdD,UAAU;MACVS,GAAG,EAAE,IAAI,CAACA,GAAG;MACbI,kBAAkB;MAClBX,IAAI;MACJgB,QAAQ,GAAAX,gBAAA,IAAAC,UAAA,GAAEL,OAAO,CAAC,CAAC,CAAC,cAAAK,UAAA,uBAAVA,UAAA,CAAYZ,KAAK,cAAAW,gBAAA,cAAAA,gBAAA,GAAI,IAAI;MACnCY,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,IAAWtD,OAAOA,CAAA,EAAqC;IACrD,IAAI4B,OAAO,IAAI,IAAI,CAAC,CAAC5B,OAAO,EAAE;MAC5B,OAAO,IAAI,CAAC,CAACA,OAAO,CAAC4B,OAAO,CAAC;IAC/B;IAEA,OAAO,IAAI,CAAC,CAAC5B,OAAO;EACtB;EAEA,IAAWA,OAAOA,CAACM,KAAc,EAAE;IACjC,IAAIT,OAAO,CAACS,KAAK,CAAC,EAAE;MAClB,IAAI,CAAC,CAACN,OAAO,CAACL,MAAM,CAAC,GAAGW,KAAK,CAACX,MAAM,CAAC;IACvC,CAAC,MAAM;MACL,IAAI,CAAC,CAACK,OAAO,CAAC4B,OAAO,CAAC,GAAGtB,KAAK;IAChC;EACF;EAEA,IAAWyC,GAAGA,CAAA,EAAG;IACf,OAAQ,GAAE,IAAI,CAACH,GAAI,IAAG,IAAI,CAACT,UAAW,EAAC;EACzC;EAEA,IAAcoB,YAAYA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAAC,CAACvD,OAAO;EACtB;AACF;AAACA,OAAA,CAAA8B,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"file":"BaseEntrypoint.js","names":["_getFileIdx","require","hasKey","obj","key","VALUES","Symbol","isProxy","createExports","log","exports","lazyFields","Set","Proxy","get","_target","value","Reflect","undefined","defaultValue","default","has","ownKeys","Object","keys","set","delete","defineProperty","descriptor","prev","_descriptor$get","v","call","_descriptor$get2","add","getOwnPropertyDescriptor","enumerable","configurable","EXPORTS","entrypointSeqId","BaseEntrypoint","seqId","constructor","services","evaluatedOnly","generation","name","only","parents","dependencies","_parents$0$log$extend","_parents$","_parents$0$seqId","_parents$2","idx","getFileIdx","extend","ref","isExportsInherited","eventEmitter","entrypointEvent","class","filename","parentId","type","exportsProxy"],"sources":["../../src/transform/BaseEntrypoint.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\n\nimport type { Services } from './types';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nconst hasKey = <TKey extends string | symbol>(\n obj: unknown,\n key: TKey\n): obj is Record<TKey, unknown> =>\n (typeof obj === 'object' || typeof obj === 'function') &&\n obj !== null &&\n key in obj;\n\nconst VALUES = Symbol('values');\n\nconst isProxy = (\n obj: unknown\n): obj is { [VALUES]: Record<string | symbol, unknown> } =>\n typeof obj === 'object' && obj !== null && VALUES in obj;\n\nexport const createExports = (log: Debugger) => {\n let exports: Record<string | symbol, unknown> = {};\n const lazyFields = new Set<string | symbol>();\n\n return new Proxy(exports, {\n get: (_target, key) => {\n if (key === VALUES) {\n return exports;\n }\n\n let value: unknown;\n if (key in exports) {\n value = exports[key];\n } else {\n // Support Object.prototype methods on `exports`\n // e.g `exports.hasOwnProperty`\n value = Reflect.get(exports, key);\n }\n\n if (value === undefined && 'default' in exports) {\n const defaultValue = exports.default;\n if (hasKey(defaultValue, key)) {\n log(\n '⚠️ %s has been found in `default`. It indicates that ESM to CJS conversion went wrong.',\n key\n );\n value = defaultValue[key];\n }\n }\n\n if (value !== undefined && lazyFields.has(key)) {\n value = (value as () => unknown)();\n }\n\n log('get %s: %o', key, value);\n return value;\n },\n has: (_target, key) => {\n if (key === VALUES) return true;\n return key in exports;\n },\n ownKeys: () => {\n return Object.keys(exports);\n },\n set: (_target, key, value) => {\n if (key === VALUES) {\n exports = value;\n return true;\n }\n\n if (key !== '__esModule') {\n log('set %s: %o', key, value);\n }\n\n if (value !== undefined) {\n exports[key] = value;\n lazyFields.delete(key);\n }\n\n return true;\n },\n defineProperty: (_target, key, descriptor) => {\n const { value } = descriptor;\n if (value !== undefined) {\n if (key !== '__esModule') {\n log('defineProperty %s with value %o', key, value);\n }\n\n exports[key] = value;\n lazyFields.delete(key);\n\n return true;\n }\n\n if ('get' in descriptor) {\n if (lazyFields.has(key)) {\n const prev = exports[key] as () => void;\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev();\n };\n } else {\n const prev = exports[key];\n exports[key] = () => {\n const v = descriptor.get?.();\n if (v !== undefined) {\n return v;\n }\n\n return prev;\n };\n }\n\n lazyFields.add(key);\n log('defineProperty %s with getter', key);\n }\n\n return true;\n },\n getOwnPropertyDescriptor: (_target, key) => {\n if (key in exports)\n return {\n enumerable: true,\n configurable: true,\n };\n\n return undefined;\n },\n });\n};\n\nconst EXPORTS = Symbol('exports');\n\nlet entrypointSeqId = 0;\n\nexport abstract class BaseEntrypoint {\n public static createExports = createExports;\n\n public readonly idx: string;\n\n public readonly log: Debugger;\n\n // eslint-disable-next-line no-plusplus\n public readonly seqId = entrypointSeqId++;\n\n readonly #exports: Record<string | symbol, unknown>;\n\n protected constructor(\n protected services: Services,\n public readonly evaluatedOnly: string[],\n exports: Record<string | symbol, unknown> | undefined,\n public readonly generation: number,\n public readonly name: string,\n public readonly only: string[],\n public readonly parents: ParentEntrypoint[],\n public readonly dependencies: Map<string, IEntrypointDependency>\n ) {\n this.idx = getFileIdx(name);\n this.log =\n parents[0]?.log.extend(this.ref, '->') ?? services.log.extend(this.ref);\n\n this.dependencies = dependencies;\n\n let isExportsInherited = false;\n if (exports) {\n if (isProxy(exports)) {\n this.#exports = exports;\n isExportsInherited = true;\n } else {\n this.#exports = createExports(this.log);\n this.#exports[EXPORTS] = exports;\n }\n this.exports = exports;\n } else {\n this.#exports = BaseEntrypoint.createExports(this.log);\n }\n\n services.eventEmitter.entrypointEvent(this.seqId, {\n class: this.constructor.name,\n evaluatedOnly: this.evaluatedOnly,\n filename: name,\n generation,\n idx: this.idx,\n isExportsInherited,\n only,\n parentId: parents[0]?.seqId ?? null,\n type: 'created',\n });\n }\n\n public get exports(): Record<string | symbol, unknown> {\n if (EXPORTS in this.#exports) {\n return this.#exports[EXPORTS] as Record<string | symbol, unknown>;\n }\n\n return this.#exports;\n }\n\n public set exports(value: unknown) {\n if (isProxy(value)) {\n this.#exports[VALUES] = value[VALUES];\n } else {\n this.#exports[EXPORTS] = value;\n }\n }\n\n public get ref() {\n return `${this.idx}#${this.generation}`;\n }\n\n protected get exportsProxy() {\n return this.#exports;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ var _buildOptions = require("../options/buildOptions");
16
16
  var _loadBabelOptions = require("../options/loadBabelOptions");
17
17
  var _getFileIdx = require("../utils/getFileIdx");
18
18
  var _getPluginKey = require("../utils/getPluginKey");
19
+ var _parseRequest = require("../utils/parseRequest");
19
20
  function getMatchedRule(rules, filename, code) {
20
21
  for (let i = rules.length - 1; i >= 0; i--) {
21
22
  const rule = rules[i];
@@ -51,6 +52,90 @@ const isModuleResolver = plugin => {
51
52
  return /([\\/])babel-plugin-module-resolver\1/.test(key);
52
53
  };
53
54
  let moduleResolverWarned = false;
55
+ const normalizeBabelKey = key => key.replace(/\\/g, '/');
56
+ const isBabelPresetTypescript = key => {
57
+ const normalized = normalizeBabelKey(key);
58
+ if (normalized === 'typescript') return true;
59
+ return normalized.includes('preset-typescript');
60
+ };
61
+ const isBabelTransformTypescriptPlugin = key => {
62
+ const normalized = normalizeBabelKey(key);
63
+ if (normalized === 'transform-typescript') return true;
64
+ return normalized.includes('plugin-transform-typescript');
65
+ };
66
+ const withAllowDeclareFields = item => {
67
+ if (!Array.isArray(item)) {
68
+ return [item, {
69
+ allowDeclareFields: true
70
+ }];
71
+ }
72
+ const [target, rawOptions, ...rest] = item;
73
+ const options = typeof rawOptions === 'object' && rawOptions !== null && !Array.isArray(rawOptions) ? rawOptions : {};
74
+ if ('allowDeclareFields' in options) {
75
+ return item;
76
+ }
77
+ return [target, {
78
+ ...options,
79
+ allowDeclareFields: true
80
+ }, ...rest];
81
+ };
82
+ const ensureAllowDeclareFieldsInBabelOptions = (babelOptions, scope = 'top') => {
83
+ var _babelOptions$presets, _babelOptions$plugins;
84
+ let presetsChanged = false;
85
+ let pluginsChanged = false;
86
+ let overridesChanged = false;
87
+ let envChanged = false;
88
+ const presets = (_babelOptions$presets = babelOptions.presets) === null || _babelOptions$presets === void 0 ? void 0 : _babelOptions$presets.map(item => {
89
+ const key = (0, _getPluginKey.getPluginKey)(item);
90
+ if (!key || !isBabelPresetTypescript(key)) {
91
+ return item;
92
+ }
93
+ presetsChanged = true;
94
+ return withAllowDeclareFields(item);
95
+ });
96
+ const plugins = (_babelOptions$plugins = babelOptions.plugins) === null || _babelOptions$plugins === void 0 ? void 0 : _babelOptions$plugins.map(item => {
97
+ const key = (0, _getPluginKey.getPluginKey)(item);
98
+ if (!key || !isBabelTransformTypescriptPlugin(key)) {
99
+ return item;
100
+ }
101
+ pluginsChanged = true;
102
+ return withAllowDeclareFields(item);
103
+ });
104
+ const {
105
+ overrides: baseOverrides
106
+ } = babelOptions;
107
+ let overrides = baseOverrides;
108
+ if (scope === 'top' && baseOverrides) {
109
+ const patchedOverrides = baseOverrides.map(override => ensureAllowDeclareFieldsInBabelOptions(override, 'override'));
110
+ if (patchedOverrides.some((patchedOverride, idx) => patchedOverride !== baseOverrides[idx])) {
111
+ overridesChanged = true;
112
+ overrides = patchedOverrides;
113
+ }
114
+ }
115
+ const {
116
+ env: baseEnv
117
+ } = babelOptions;
118
+ let env = baseEnv;
119
+ if (scope === 'top' && baseEnv) {
120
+ const entries = Object.entries(baseEnv);
121
+ const patchedEntries = entries.map(([envName, envOptions]) => [envName, envOptions ? ensureAllowDeclareFieldsInBabelOptions(envOptions, 'env') : envOptions]);
122
+ if (patchedEntries.some(([, patched], idx) => patched !== entries[idx][1])) {
123
+ envChanged = true;
124
+ env = Object.fromEntries(patchedEntries);
125
+ }
126
+ }
127
+ if (!presetsChanged && !pluginsChanged && !overridesChanged && !envChanged) {
128
+ return babelOptions;
129
+ }
130
+ const next = {
131
+ ...babelOptions
132
+ };
133
+ if (presetsChanged) next.presets = presets;
134
+ if (pluginsChanged) next.plugins = plugins;
135
+ if (overridesChanged) next.overrides = overrides;
136
+ if (envChanged) next.env = env;
137
+ return next;
138
+ };
54
139
  function buildConfigs(services, name, pluginOptions, babelOptions) {
55
140
  var _parseConfig$plugins, _rawConfig$plugins;
56
141
  const {
@@ -65,10 +150,17 @@ function buildConfigs(services, name, pluginOptions, babelOptions) {
65
150
  sourceFileName: name,
66
151
  sourceMaps: true
67
152
  };
68
- const rawConfig = (0, _buildOptions.buildOptions)(pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.babelOptions, babelOptions, commonOptions);
153
+ const isTypescriptFile = name.endsWith('.ts') || name.endsWith('.tsx') || name.endsWith('.mts') || name.endsWith('.cts');
154
+ let rawConfig = (0, _buildOptions.buildOptions)(pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.babelOptions, babelOptions, commonOptions);
155
+ if (isTypescriptFile) {
156
+ rawConfig = ensureAllowDeclareFieldsInBabelOptions(rawConfig);
157
+ }
69
158
  const useBabelConfigs = (0, _shared.isFeatureEnabled)(pluginOptions.features, 'useBabelConfigs', name);
70
159
  if (!useBabelConfigs) {
71
- rawConfig.configFile = false;
160
+ rawConfig = {
161
+ ...rawConfig,
162
+ configFile: false
163
+ };
72
164
  }
73
165
  const parseConfig = (0, _loadBabelOptions.loadBabelOptions)(babel, name, {
74
166
  babelrc: useBabelConfigs,
@@ -83,7 +175,10 @@ function buildConfigs(services, name, pluginOptions, babelOptions) {
83
175
  console.warn(`[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` + `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` + `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`);
84
176
  moduleResolverWarned = true;
85
177
  }
86
- rawConfig.plugins = [...((_parseConfig$plugins$ = (_parseConfig$plugins2 = parseConfig.plugins) === null || _parseConfig$plugins2 === void 0 ? void 0 : _parseConfig$plugins2.filter(plugin => isModuleResolver(plugin))) !== null && _parseConfig$plugins$ !== void 0 ? _parseConfig$plugins$ : []), ...((_rawConfig$plugins2 = rawConfig.plugins) !== null && _rawConfig$plugins2 !== void 0 ? _rawConfig$plugins2 : [])];
178
+ rawConfig = {
179
+ ...rawConfig,
180
+ plugins: [...((_parseConfig$plugins$ = (_parseConfig$plugins2 = parseConfig.plugins) === null || _parseConfig$plugins2 === void 0 ? void 0 : _parseConfig$plugins2.filter(plugin => isModuleResolver(plugin))) !== null && _parseConfig$plugins$ !== void 0 ? _parseConfig$plugins$ : []), ...((_rawConfig$plugins2 = rawConfig.plugins) !== null && _rawConfig$plugins2 !== void 0 ? _rawConfig$plugins2 : [])]
181
+ };
87
182
  }
88
183
  const evalConfig = (0, _loadBabelOptions.loadBabelOptions)(babel, name, {
89
184
  babelrc: false,
@@ -102,30 +197,26 @@ function loadAndParse(services, name, loadedCode, log) {
102
197
  pluginOptions
103
198
  }
104
199
  } = services;
105
- const extension = (0, _path.extname)(name);
200
+ const filename = (0, _parseRequest.stripQueryAndHash)(name);
201
+ const extension = (0, _path.extname)(filename);
106
202
  if (!pluginOptions.extensions.includes(extension)) {
107
- log('[createEntrypoint] %s is ignored. If you want it to be processed, you should add \'%s\' to the "extensions" option.', name, extension);
203
+ log('[createEntrypoint] %s is ignored. If you want it to be processed, you should add \'%s\' to the "extensions" option.', filename, extension);
108
204
  return {
109
- get code() {
110
- if ((0, _path.isAbsolute)(name)) {
111
- return loadedCode !== null && loadedCode !== void 0 ? loadedCode : (0, _fs.readFileSync)(name, 'utf-8');
112
- }
113
- return ''; // it is a built-in module
114
- },
205
+ code: (0, _path.isAbsolute)(filename) ? loadedCode : '',
115
206
  evaluator: 'ignored',
116
207
  reason: 'extension'
117
208
  };
118
209
  }
119
- const code = loadedCode !== null && loadedCode !== void 0 ? loadedCode : (0, _fs.readFileSync)(name, 'utf-8');
210
+ const code = loadedCode !== null && loadedCode !== void 0 ? loadedCode : (0, _fs.readFileSync)(filename, 'utf-8');
120
211
  const {
121
212
  action,
122
213
  babelOptions
123
- } = getMatchedRule(pluginOptions.rules, name, code);
214
+ } = getMatchedRule(pluginOptions.rules, filename, code);
124
215
  let ast;
125
216
  const {
126
217
  evalConfig,
127
218
  parseConfig
128
- } = buildConfigs(services, name, pluginOptions, babelOptions);
219
+ } = buildConfigs(services, filename, pluginOptions, babelOptions);
129
220
  const getOrParse = () => {
130
221
  if (ast) return ast;
131
222
  ast = eventEmitter.perf('parseFile', () => parseFile(babel, name, code, parseConfig));
@@ -143,7 +234,7 @@ function loadAndParse(services, name, loadedCode, log) {
143
234
  };
144
235
  }
145
236
  const evaluator = typeof action === 'function' ? action : require(require.resolve(action, {
146
- paths: [(0, _path.dirname)(name)]
237
+ paths: [(0, _path.dirname)(filename)]
147
238
  })).default;
148
239
  return {
149
240
  get ast() {
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.helpers.js","names":["_fs","require","_path","_shared","_buildOptions","_loadBabelOptions","_getFileIdx","_getPluginKey","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","logger","extend","getFileIdx","parseResult","parseSync","Error","isModuleResolver","plugin","key","getPluginKey","includes","moduleResolverWarned","buildConfigs","services","name","pluginOptions","babelOptions","_parseConfig$plugins","_rawConfig$plugins","options","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","rawConfig","buildOptions","useBabelConfigs","isFeatureEnabled","features","configFile","loadBabelOptions","babelrc","parseHasModuleResolver","plugins","some","rawHasModuleResolver","_parseConfig$plugins$","_parseConfig$plugins2","_rawConfig$plugins2","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","extension","extname","extensions","isAbsolute","readFileSync","evaluator","reason","getOrParse","perf","resolve","paths","dirname","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","item","add","sort","isSuperSet","aSet","every","has","exports"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig.configFile = false;\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig.plugins = [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ];\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const extension = extname(name);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n name,\n extension\n );\n\n return {\n get code() {\n if (isAbsolute(name)) {\n return loadedCode ?? readFileSync(name, 'utf-8');\n }\n\n return ''; // it is a built-in module\n },\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(name, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n name,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n name,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(name)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Entrypoint.helpers.js","names":["_fs","require","_path","_shared","_buildOptions","_loadBabelOptions","_getFileIdx","_getPluginKey","_parseRequest","getMatchedRule","rules","filename","code","i","length","rule","test","RegExp","action","parseFile","babel","originalCode","parseConfig","log","logger","extend","getFileIdx","parseResult","parseSync","Error","isModuleResolver","plugin","key","getPluginKey","includes","moduleResolverWarned","normalizeBabelKey","replace","isBabelPresetTypescript","normalized","isBabelTransformTypescriptPlugin","withAllowDeclareFields","item","Array","isArray","allowDeclareFields","target","rawOptions","rest","options","ensureAllowDeclareFieldsInBabelOptions","babelOptions","scope","_babelOptions$presets","_babelOptions$plugins","presetsChanged","pluginsChanged","overridesChanged","envChanged","presets","map","plugins","overrides","baseOverrides","patchedOverrides","override","some","patchedOverride","idx","env","baseEnv","entries","Object","patchedEntries","envName","envOptions","patched","fromEntries","next","buildConfigs","services","name","pluginOptions","_parseConfig$plugins","_rawConfig$plugins","commonOptions","ast","inputSourceMap","root","sourceFileName","sourceMaps","isTypescriptFile","endsWith","rawConfig","buildOptions","useBabelConfigs","isFeatureEnabled","features","configFile","loadBabelOptions","babelrc","parseHasModuleResolver","rawHasModuleResolver","_parseConfig$plugins$","_parseConfig$plugins2","_rawConfig$plugins2","console","warn","filter","evalConfig","loadAndParse","loadedCode","eventEmitter","stripQueryAndHash","extension","extname","extensions","isAbsolute","evaluator","reason","readFileSync","getOrParse","perf","resolve","paths","dirname","default","getStack","entrypoint","stack","parents","push","mergeOnly","a","b","result","Set","forEach","add","sort","isSuperSet","aSet","every","has","exports"],"sources":["../../src/transform/Entrypoint.helpers.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { dirname, extname, isAbsolute } from 'path';\n\nimport type { TransformOptions, PluginItem } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type {\n Debugger,\n EvalRule,\n Evaluator,\n StrictOptions,\n} from '@wyw-in-js/shared';\nimport { logger, isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport { buildOptions } from '../options/buildOptions';\nimport { loadBabelOptions } from '../options/loadBabelOptions';\nimport type { ParentEntrypoint } from '../types';\nimport { getFileIdx } from '../utils/getFileIdx';\nimport { getPluginKey } from '../utils/getPluginKey';\n\nimport type { IEntrypointCode, IIgnoredEntrypoint } from './Entrypoint.types';\nimport type { Services } from './types';\nimport { stripQueryAndHash } from '../utils/parseRequest';\n\nexport function getMatchedRule(\n rules: EvalRule[],\n filename: string,\n code: string\n): EvalRule {\n for (let i = rules.length - 1; i >= 0; i--) {\n const rule = rules[i];\n if (!rule.test) {\n return rule;\n }\n\n if (typeof rule.test === 'function' && rule.test(filename, code)) {\n return rule;\n }\n\n if (rule.test instanceof RegExp && rule.test.test(filename)) {\n return rule;\n }\n }\n\n return { action: 'ignore' };\n}\n\nexport function parseFile(\n babel: Core,\n filename: string,\n originalCode: string,\n parseConfig: TransformOptions\n): File {\n const log = logger.extend('transform:parse').extend(getFileIdx(filename));\n\n const parseResult = babel.parseSync(originalCode, parseConfig);\n if (!parseResult) {\n throw new Error(`Failed to parse ${filename}`);\n }\n\n log('stage-1', `${filename} has been parsed`);\n\n return parseResult;\n}\n\nconst isModuleResolver = (plugin: PluginItem) => {\n const key = getPluginKey(plugin);\n if (!key) return false;\n\n if (['module-resolver', 'babel-plugin-module-resolver'].includes(key)) {\n return true;\n }\n\n return /([\\\\/])babel-plugin-module-resolver\\1/.test(key);\n};\n\nlet moduleResolverWarned = false;\n\nconst normalizeBabelKey = (key: string) => key.replace(/\\\\/g, '/');\n\nconst isBabelPresetTypescript = (key: string) => {\n const normalized = normalizeBabelKey(key);\n\n if (normalized === 'typescript') return true;\n return normalized.includes('preset-typescript');\n};\n\nconst isBabelTransformTypescriptPlugin = (key: string) => {\n const normalized = normalizeBabelKey(key);\n\n if (normalized === 'transform-typescript') return true;\n return normalized.includes('plugin-transform-typescript');\n};\n\nconst withAllowDeclareFields = (item: PluginItem): PluginItem => {\n if (!Array.isArray(item)) {\n return [item, { allowDeclareFields: true }];\n }\n\n const [target, rawOptions, ...rest] = item;\n const options =\n typeof rawOptions === 'object' &&\n rawOptions !== null &&\n !Array.isArray(rawOptions)\n ? rawOptions\n : {};\n\n if ('allowDeclareFields' in options) {\n return item;\n }\n\n return [target, { ...options, allowDeclareFields: true }, ...rest];\n};\n\ntype AllowDeclareFieldsPatchScope = 'top' | 'env' | 'override';\n\nconst ensureAllowDeclareFieldsInBabelOptions = (\n babelOptions: TransformOptions,\n scope: AllowDeclareFieldsPatchScope = 'top'\n): TransformOptions => {\n let presetsChanged = false;\n let pluginsChanged = false;\n let overridesChanged = false;\n let envChanged = false;\n\n const presets = babelOptions.presets?.map((item) => {\n const key = getPluginKey(item);\n if (!key || !isBabelPresetTypescript(key)) {\n return item;\n }\n\n presetsChanged = true;\n return withAllowDeclareFields(item);\n });\n\n const plugins = babelOptions.plugins?.map((item) => {\n const key = getPluginKey(item);\n if (!key || !isBabelTransformTypescriptPlugin(key)) {\n return item;\n }\n\n pluginsChanged = true;\n return withAllowDeclareFields(item);\n });\n\n const { overrides: baseOverrides } = babelOptions;\n let overrides = baseOverrides;\n if (scope === 'top' && baseOverrides) {\n const patchedOverrides = baseOverrides.map((override) =>\n ensureAllowDeclareFieldsInBabelOptions(\n override as TransformOptions,\n 'override'\n )\n );\n\n if (\n patchedOverrides.some(\n (patchedOverride, idx) => patchedOverride !== baseOverrides[idx]\n )\n ) {\n overridesChanged = true;\n overrides = patchedOverrides;\n }\n }\n\n const { env: baseEnv } = babelOptions;\n let env = baseEnv;\n if (scope === 'top' && baseEnv) {\n const entries = Object.entries(baseEnv);\n const patchedEntries = entries.map(([envName, envOptions]) => [\n envName,\n envOptions\n ? ensureAllowDeclareFieldsInBabelOptions(envOptions, 'env')\n : envOptions,\n ]) as Array<[string, TransformOptions | null | undefined]>;\n\n if (\n patchedEntries.some(([, patched], idx) => patched !== entries[idx][1])\n ) {\n envChanged = true;\n env = Object.fromEntries(patchedEntries);\n }\n }\n\n if (!presetsChanged && !pluginsChanged && !overridesChanged && !envChanged) {\n return babelOptions;\n }\n\n const next: TransformOptions = { ...babelOptions };\n if (presetsChanged) next.presets = presets;\n if (pluginsChanged) next.plugins = plugins;\n if (overridesChanged) next.overrides = overrides;\n if (envChanged) next.env = env;\n\n return next;\n};\n\nfunction buildConfigs(\n services: Services,\n name: string,\n pluginOptions: StrictOptions,\n babelOptions: TransformOptions | undefined\n): {\n evalConfig: TransformOptions;\n parseConfig: TransformOptions;\n} {\n const { babel, options } = services;\n\n const commonOptions = {\n ast: true,\n filename: name,\n inputSourceMap: options.inputSourceMap,\n root: options.root,\n sourceFileName: name,\n sourceMaps: true,\n };\n\n const isTypescriptFile =\n name.endsWith('.ts') ||\n name.endsWith('.tsx') ||\n name.endsWith('.mts') ||\n name.endsWith('.cts');\n\n let rawConfig = buildOptions(\n pluginOptions?.babelOptions,\n babelOptions,\n commonOptions\n );\n\n if (isTypescriptFile) {\n rawConfig = ensureAllowDeclareFieldsInBabelOptions(rawConfig);\n }\n\n const useBabelConfigs = isFeatureEnabled(\n pluginOptions.features,\n 'useBabelConfigs',\n name\n );\n\n if (!useBabelConfigs) {\n rawConfig = {\n ...rawConfig,\n configFile: false,\n };\n }\n\n const parseConfig = loadBabelOptions(babel, name, {\n babelrc: useBabelConfigs,\n ...rawConfig,\n });\n\n const parseHasModuleResolver = parseConfig.plugins?.some(isModuleResolver);\n const rawHasModuleResolver = rawConfig.plugins?.some(isModuleResolver);\n\n if (parseHasModuleResolver && !rawHasModuleResolver) {\n if (!moduleResolverWarned) {\n // eslint-disable-next-line no-console\n console.warn(\n `[wyw-in-js] ${name} has a module-resolver plugin in its babelrc, but it is not present ` +\n `in the babelOptions for the wyw-in-js plugin. This works for now but will be an error in the future. ` +\n `Please add the module-resolver plugin to the babelOptions for the wyw-in-js plugin.`\n );\n\n moduleResolverWarned = true;\n }\n\n rawConfig = {\n ...rawConfig,\n plugins: [\n ...(parseConfig.plugins?.filter((plugin) => isModuleResolver(plugin)) ??\n []),\n ...(rawConfig.plugins ?? []),\n ],\n };\n }\n\n const evalConfig = loadBabelOptions(babel, name, {\n babelrc: false,\n ...rawConfig,\n });\n\n return {\n evalConfig,\n parseConfig,\n };\n}\n\nexport function loadAndParse(\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n): IEntrypointCode | IIgnoredEntrypoint {\n const {\n babel,\n eventEmitter,\n options: { pluginOptions },\n } = services;\n\n const filename = stripQueryAndHash(name);\n const extension = extname(filename);\n\n if (!pluginOptions.extensions.includes(extension)) {\n log(\n '[createEntrypoint] %s is ignored. If you want it to be processed, you should add \\'%s\\' to the \"extensions\" option.',\n filename,\n extension\n );\n\n return {\n code: isAbsolute(filename) ? loadedCode : '',\n evaluator: 'ignored',\n reason: 'extension',\n };\n }\n\n const code = loadedCode ?? readFileSync(filename, 'utf-8');\n\n const { action, babelOptions } = getMatchedRule(\n pluginOptions.rules,\n filename,\n code\n );\n\n let ast: File | undefined;\n\n const { evalConfig, parseConfig } = buildConfigs(\n services,\n filename,\n pluginOptions,\n babelOptions\n );\n\n const getOrParse = () => {\n if (ast) return ast;\n ast = eventEmitter.perf('parseFile', () =>\n parseFile(babel, name, code, parseConfig)\n );\n\n return ast;\n };\n\n if (action === 'ignore') {\n log('[createEntrypoint] %s is ignored by rule', name);\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator: 'ignored',\n reason: 'rule',\n };\n }\n\n const evaluator: Evaluator =\n typeof action === 'function'\n ? action\n : require(\n require.resolve(action, {\n paths: [dirname(filename)],\n })\n ).default;\n\n return {\n get ast() {\n return getOrParse();\n },\n code,\n evaluator,\n evalConfig,\n };\n}\n\nexport function getStack(entrypoint: ParentEntrypoint) {\n if (!entrypoint) return [];\n\n const stack = [entrypoint.name];\n\n let { parents } = entrypoint;\n while (parents.length) {\n stack.push(parents[0].name);\n parents = parents[0].parents;\n }\n\n return stack;\n}\n\nexport function mergeOnly(a: string[], b: string[]) {\n const result = new Set(a);\n b.forEach((item) => result.add(item));\n return [...result].filter((i) => i).sort();\n}\n\nexport const isSuperSet = <T>(a: (T | '*')[], b: (T | '*')[]) => {\n if (a.includes('*')) return true;\n if (b.length === 0) return true;\n const aSet = new Set(a);\n return b.every((item) => aSet.has(item));\n};\n"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,7 @@ exports.Entrypoint = void 0;
7
7
  var _tsInvariant = require("ts-invariant");
8
8
  var _BaseEntrypoint = require("./BaseEntrypoint");
9
9
  var _Entrypoint = require("./Entrypoint.helpers");
10
+ var _isStaticallyEvaluatableModule = require("./isStaticallyEvaluatableModule");
10
11
  var _EvaluatedEntrypoint = require("./EvaluatedEntrypoint");
11
12
  var _AbortError = require("./actions/AbortError");
12
13
  var _BaseAction = require("./actions/BaseAction");
@@ -106,8 +107,8 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
106
107
  return ['cached', cached];
107
108
  }
108
109
  const exports = cached === null || cached === void 0 ? void 0 : cached.exports;
109
- const evaluatedOnly = (_cached$evaluatedOnly = cached === null || cached === void 0 ? void 0 : cached.evaluatedOnly) !== null && _cached$evaluatedOnly !== void 0 ? _cached$evaluatedOnly : [];
110
- const mergedOnly = cached !== null && cached !== void 0 && cached.only ? (0, _Entrypoint.mergeOnly)(cached.only, only) : only;
110
+ const evaluatedOnly = changed ? [] : (_cached$evaluatedOnly = cached === null || cached === void 0 ? void 0 : cached.evaluatedOnly) !== null && _cached$evaluatedOnly !== void 0 ? _cached$evaluatedOnly : [];
111
+ const mergedOnly = cached !== null && cached !== void 0 && cached.only ? (0, _Entrypoint.mergeOnly)(cached.only, only) : [...only];
111
112
  if (cached !== null && cached !== void 0 && cached.evaluated) {
112
113
  cached.log('is already evaluated with', cached.evaluatedOnly);
113
114
  }
@@ -127,6 +128,16 @@ class Entrypoint extends _BaseEntrypoint.BaseEntrypoint {
127
128
  return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];
128
129
  }
129
130
  const newEntrypoint = new Entrypoint(services, parent ? [parent] : [], loadedCode, name, mergedOnly, exports, evaluatedOnly, undefined, cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined, cached && 'dependencies' in cached ? cached.dependencies : undefined, cached ? cached.generation + 1 : 1);
131
+ if (!newEntrypoint.ignored && !newEntrypoint.only.includes('*') && !newEntrypoint.only.includes('__wywPreval') && !newEntrypoint.only.includes('side-effect')) {
132
+ const {
133
+ ast
134
+ } = newEntrypoint.loadedAndParsed;
135
+ if (ast && (0, _isStaticallyEvaluatableModule.isStaticallyEvaluatableModule)(ast)) {
136
+ newEntrypoint.log('[entrypoint] promote `only` to "*" for statically evaluatable module');
137
+ newEntrypoint.only.length = 0;
138
+ newEntrypoint.only.push('*');
139
+ }
140
+ }
130
141
  if (cached && !cached.evaluated) {
131
142
  cached.log('is cached, but with different code');
132
143
  cached.supersede(newEntrypoint);
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","_this$supersededWith$","_this$supersededWith","transformedCode","_ref","_this$transformResult","_this$supersededWith2","createRoot","loadedCode","created","create","invariant","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","_cached$evaluatedOnly","cached","get","changed","mergedOnly","mergeOnly","isLoop","map","push","isSuperSet","supersede","newEntrypoint","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies\n );\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n const code =\n this.loadedAndParsed.evaluator === 'ignored'\n ? '[IGNORED]'\n : this.originalCode || EMPTY_FILE;\n\n this.log.extend('source')('created %s (%o)\\n%s', name, only, code);\n }\n\n public get ignored() {\n return this.loadedAndParsed.evaluator === 'ignored';\n }\n\n public get originalCode() {\n return this.loadedAndParsed.code;\n }\n\n public get supersededWith(): Entrypoint | null {\n return this.#supersededWith?.supersededWith ?? this.#supersededWith;\n }\n\n public get transformedCode(): string | null {\n return (\n this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null\n );\n }\n\n public static createRoot(\n services: Services,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint {\n const created = Entrypoint.create(services, null, name, only, loadedCode);\n invariant(created !== 'loop', 'loop detected');\n\n return created;\n }\n\n /**\n * Creates an entrypoint for the specified file.\n * If there is already an entrypoint for this file, there will be four possible outcomes:\n * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,\n * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.\n * It can happen if the file was changed and the watcher notified us about it, or we received a new version\n * of the file from a loader whereas the previous one was loaded from the filesystem.\n * The new entrypoint will be returned.\n * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.\n * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.\n * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.\n */\n protected static create(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint | 'loop' {\n const { cache, eventEmitter } = services;\n return eventEmitter.perf('createEntrypoint', () => {\n const [status, entrypoint] = Entrypoint.innerCreate(\n services,\n parent\n ? {\n evaluated: parent.evaluated,\n log: parent.log,\n name: parent.name,\n parents: parent.parents,\n seqId: parent.seqId,\n }\n : null,\n name,\n only,\n loadedCode\n );\n\n if (status !== 'cached') {\n cache.add('entrypoints', name, entrypoint);\n }\n\n return status === 'loop' ? 'loop' : entrypoint;\n });\n }\n\n private static innerCreate(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): ['loop' | 'created' | 'cached', Entrypoint] {\n const { cache } = services;\n\n const cached = cache.get('entrypoints', name);\n const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = cached?.evaluatedOnly ?? [];\n\n const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : only;\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAIA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAMA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,2BAAA,GAAAN,OAAA;AAGA,MAAMO,UAAU,GAAG,oBAAoB;AAEvC,SAASC,OAAOA,CACdC,IAAY,EACZC,MAAwB,EACxBC,SAAmB,GAAG,EAAE,EACf;EACT,IAAID,MAAM,CAACD,IAAI,KAAKA,IAAI,IAAIE,SAAS,CAACC,QAAQ,CAACF,MAAM,CAACD,IAAI,CAAC,EAAE;IAC3D,OAAO,IAAI;EACb;EAEA,KAAK,MAAMI,CAAC,IAAIH,MAAM,CAACI,OAAO,EAAE;IAC9B,MAAMC,KAAK,GAAGP,OAAO,CAACC,IAAI,EAAEI,CAAC,EAAE,CAAC,GAAGF,SAAS,EAAED,MAAM,CAACD,IAAI,CAAC,CAAC;IAC3D,IAAIM,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;EACF;EAEA,OAAO,KAAK;AACd;AAEO,MAAMC,UAAU,SAASC,8BAAc,CAAC;EAC7BC,SAAS,GAAG,KAAK;EAIvBC,mBAAmB,GAC3B,EAAE;EAEIC,YAAY,GAGhB,IAAIC,GAAG,CAAC,CAAC;EAEb,CAACC,cAAc,GAAY,KAAK;EAEhC,CAACC,cAAc,GAAsB,IAAI;EAEzC,CAACC,mBAAmB,GAAkB,IAAI;EAElCC,WAAWA,CACjBC,QAAkB,EAClBZ,OAA2B,EACXa,WAA+B,EAC/ClB,IAAY,EACZmB,IAAc,EACdC,OAAqD,EACrDC,aAAuB,EACvBC,eAAsD,EACnCC,YAAY,GAAG,IAAIX,GAAG,CAGvC,CAAC,EACMY,YAAY,GAAG,IAAIZ,GAAG,CAAgC,CAAC,EAChEa,UAAU,GAAG,CAAC,EACd;IAAA,IAAAC,cAAA,EAAAC,SAAA;IACA,KAAK,CACHV,QAAQ,EACRI,aAAa,EACbD,OAAO,EACPK,UAAU,EACVzB,IAAI,EACJmB,IAAI,EACJd,OAAO,EACPmB,YACF,CAAC;IAAC,KAtBcN,WAA+B,GAA/BA,WAA+B;IAAA,KAM5BK,YAAY,GAAZA,YAAY;IAAA,KAItBC,YAAY,GAAZA,YAAY;IAcrB,IAAI,CAACF,eAAe,GAClBA,eAAe,aAAfA,eAAe,cAAfA,eAAe,GACfL,QAAQ,CAACW,cAAc,CACrBX,QAAQ,EACRjB,IAAI,EACJkB,WAAW,GAAAQ,cAAA,IAAAC,SAAA,GACXtB,OAAO,CAAC,CAAC,CAAC,cAAAsB,SAAA,uBAAVA,SAAA,CAAYE,GAAG,cAAAH,cAAA,cAAAA,cAAA,GAAIT,QAAQ,CAACY,GAC9B,CAAC;IAEH,IAAI,IAAI,CAACP,eAAe,CAACQ,IAAI,KAAKC,SAAS,EAAE;MAC3Cd,QAAQ,CAACe,KAAK,CAACC,mBAAmB,CAACjC,IAAI,EAAE,IAAI,CAACsB,eAAe,CAACQ,IAAI,CAAC;IACrE;IAEA,MAAMA,IAAI,GACR,IAAI,CAACR,eAAe,CAACY,SAAS,KAAK,SAAS,GACxC,WAAW,GACX,IAAI,CAACC,YAAY,IAAIrC,UAAU;IAErC,IAAI,CAAC+B,GAAG,CAACO,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,EAAEpC,IAAI,EAAEmB,IAAI,EAAEW,IAAI,CAAC;EACpE;EAEA,IAAWO,OAAOA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACf,eAAe,CAACY,SAAS,KAAK,SAAS;EACrD;EAEA,IAAWC,YAAYA,CAAA,EAAG;IACxB,OAAO,IAAI,CAACb,eAAe,CAACQ,IAAI;EAClC;EAEA,IAAWhB,cAAcA,CAAA,EAAsB;IAAA,IAAAwB,qBAAA,EAAAC,oBAAA;IAC7C,QAAAD,qBAAA,IAAAC,oBAAA,GAAO,IAAI,CAAC,CAACzB,cAAc,cAAAyB,oBAAA,uBAApBA,oBAAA,CAAsBzB,cAAc,cAAAwB,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC,CAACxB,cAAc;EACrE;EAEA,IAAW0B,eAAeA,CAAA,EAAkB;IAAA,IAAAC,IAAA,EAAAC,qBAAA,EAAAC,qBAAA;IAC1C,QAAAF,IAAA,IAAAC,qBAAA,GACE,IAAI,CAAC,CAAC3B,mBAAmB,cAAA2B,qBAAA,cAAAA,qBAAA,IAAAC,qBAAA,GAAI,IAAI,CAAC7B,cAAc,cAAA6B,qBAAA,uBAAnBA,qBAAA,CAAqBH,eAAe,cAAAC,IAAA,cAAAA,IAAA,GAAI,IAAI;EAE7E;EAEA,OAAcG,UAAUA,CACtB3B,QAAkB,EAClBjB,IAAY,EACZmB,IAAc,EACd0B,UAA8B,EAClB;IACZ,MAAMC,OAAO,GAAGvC,UAAU,CAACwC,MAAM,CAAC9B,QAAQ,EAAE,IAAI,EAAEjB,IAAI,EAAEmB,IAAI,EAAE0B,UAAU,CAAC;IACzE,IAAAG,sBAAS,EAACF,OAAO,KAAK,MAAM,EAAE,eAAe,CAAC;IAE9C,OAAOA,OAAO;EAChB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAiBC,MAAMA,CACrB9B,QAAkB,EAClBhB,MAA+B,EAC/BD,IAAY,EACZmB,IAAc,EACd0B,UAA8B,EACT;IACrB,MAAM;MAAEb,KAAK;MAAEiB;IAAa,CAAC,GAAGhC,QAAQ;IACxC,OAAOgC,YAAY,CAACC,IAAI,CAAC,kBAAkB,EAAE,MAAM;MACjD,MAAM,CAACC,MAAM,EAAEC,UAAU,CAAC,GAAG7C,UAAU,CAAC8C,WAAW,CACjDpC,QAAQ,EACRhB,MAAM,GACF;QACEQ,SAAS,EAAER,MAAM,CAACQ,SAAS;QAC3BoB,GAAG,EAAE5B,MAAM,CAAC4B,GAAG;QACf7B,IAAI,EAAEC,MAAM,CAACD,IAAI;QACjBK,OAAO,EAAEJ,MAAM,CAACI,OAAO;QACvBiD,KAAK,EAAErD,MAAM,CAACqD;MAChB,CAAC,GACD,IAAI,EACRtD,IAAI,EACJmB,IAAI,EACJ0B,UACF,CAAC;MAED,IAAIM,MAAM,KAAK,QAAQ,EAAE;QACvBnB,KAAK,CAACuB,GAAG,CAAC,aAAa,EAAEvD,IAAI,EAAEoD,UAAU,CAAC;MAC5C;MAEA,OAAOD,MAAM,KAAK,MAAM,GAAG,MAAM,GAAGC,UAAU;IAChD,CAAC,CAAC;EACJ;EAEA,OAAeC,WAAWA,CACxBpC,QAAkB,EAClBhB,MAA+B,EAC/BD,IAAY,EACZmB,IAAc,EACd0B,UAA8B,EACe;IAAA,IAAAW,qBAAA;IAC7C,MAAM;MAAExB;IAAM,CAAC,GAAGf,QAAQ;IAE1B,MAAMwC,MAAM,GAAGzB,KAAK,CAAC0B,GAAG,CAAC,aAAa,EAAE1D,IAAI,CAAC;IAC7C,MAAM2D,OAAO,GACXd,UAAU,KAAKd,SAAS,GACpBC,KAAK,CAACC,mBAAmB,CAACjC,IAAI,EAAE6C,UAAU,CAAC,GAC3C,KAAK;IAEX,IAAI,EAACY,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEhD,SAAS,KAAIgD,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEpB,OAAO,EAAE;MACzC,OAAO,CAAC,QAAQ,EAAEoB,MAAM,CAAC;IAC3B;IAEA,MAAMrC,OAAO,GAAGqC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAErC,OAAO;IAC/B,MAAMC,aAAa,IAAAmC,qBAAA,GAAGC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEpC,aAAa,cAAAmC,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAEjD,MAAMI,UAAU,GAAGH,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEtC,IAAI,GAAG,IAAA0C,qBAAS,EAACJ,MAAM,CAACtC,IAAI,EAAEA,IAAI,CAAC,GAAGA,IAAI;IAErE,IAAIsC,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEhD,SAAS,EAAE;MACrBgD,MAAM,CAAC5B,GAAG,CAAC,2BAA2B,EAAE4B,MAAM,CAACpC,aAAa,CAAC;IAC/D;IAEA,IAAI,CAACsC,OAAO,IAAIF,MAAM,IAAI,CAACA,MAAM,CAAChD,SAAS,EAAE;MAC3C,MAAMqD,MAAM,GAAG7D,MAAM,IAAIF,OAAO,CAACC,IAAI,EAAEC,MAAM,CAAC;MAC9C,IAAI6D,MAAM,EAAE;QACV7D,MAAM,CAAC4B,GAAG,CAAC,iCAAiC,EAAE7B,IAAI,CAAC;MACrD;MAEA,IAAIC,MAAM,IAAI,CAACwD,MAAM,CAACpD,OAAO,CAAC0D,GAAG,CAAE3D,CAAC,IAAKA,CAAC,CAACJ,IAAI,CAAC,CAACG,QAAQ,CAACF,MAAM,CAACD,IAAI,CAAC,EAAE;QACtEyD,MAAM,CAACpD,OAAO,CAAC2D,IAAI,CAAC/D,MAAM,CAAC;MAC7B;MAEA,IAAI,IAAAgE,sBAAU,EAACR,MAAM,CAACtC,IAAI,EAAEyC,UAAU,CAAC,EAAE;QACvCH,MAAM,CAAC5B,GAAG,CAAC,WAAW,EAAE7B,IAAI,CAAC;QAC7B,OAAO,CAAC8D,MAAM,GAAG,MAAM,GAAG,QAAQ,EAAEL,MAAM,CAAC;MAC7C;MAEAA,MAAM,CAAC5B,GAAG,CACR,6DAA6D,EAC7DV,IAAI,EACJsC,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEtC,IACV,CAAC;MAED,OAAO,CAAC2C,MAAM,GAAG,MAAM,GAAG,SAAS,EAAEL,MAAM,CAACS,SAAS,CAACN,UAAU,CAAC,CAAC;IACpE;IAEA,MAAMO,aAAa,GAAG,IAAI5D,UAAU,CAClCU,QAAQ,EACRhB,MAAM,GAAG,CAACA,MAAM,CAAC,GAAG,EAAE,EACtB4C,UAAU,EACV7C,IAAI,EACJ4D,UAAU,EACVxC,OAAO,EACPC,aAAa,EACbU,SAAS,EACT0B,MAAM,IAAI,cAAc,IAAIA,MAAM,GAAGA,MAAM,CAAClC,YAAY,GAAGQ,SAAS,EACpE0B,MAAM,IAAI,cAAc,IAAIA,MAAM,GAAGA,MAAM,CAACjC,YAAY,GAAGO,SAAS,EACpE0B,MAAM,GAAGA,MAAM,CAAChC,UAAU,GAAG,CAAC,GAAG,CACnC,CAAC;IAED,IAAIgC,MAAM,IAAI,CAACA,MAAM,CAAChD,SAAS,EAAE;MAC/BgD,MAAM,CAAC5B,GAAG,CAAC,oCAAoC,CAAC;MAChD4B,MAAM,CAACS,SAAS,CAACC,aAAa,CAAC;IACjC;IAEA,OAAO,CAAC,SAAS,EAAEA,aAAa,CAAC;EACnC;EAEOC,aAAaA,CAACC,UAAiC,EAAQ;IAC5D,IAAI,CAAC9C,YAAY,CAAC+C,MAAM,CAACD,UAAU,CAACE,MAAM,CAAC;IAC3C,IAAI,CAAC/C,YAAY,CAACgD,GAAG,CAACH,UAAU,CAACE,MAAM,EAAEF,UAAU,CAAC;EACtD;EAEOI,cAAcA,CACnBzE,IAAY,EACZqE,UAA0C,EACpC;IACN,IAAI,CAAC9C,YAAY,CAACiD,GAAG,CAACxE,IAAI,EAAEqE,UAAU,CAAC;EACzC;EAEOK,mBAAmBA,CAAA,EAAG;IAC3B,IAAI,IAAI,CAAC5D,cAAc,EAAE;MACvB,IAAI,CAACe,GAAG,CAAC,YAAY,CAAC;MACtB,MAAM,IAAI8C,sBAAU,CAAC,YAAY,CAAC;IACpC;EACF;EAEOC,iBAAiBA,CAAA,EAAG;IACzB,IAAI,IAAI,CAACpC,eAAe,KAAK,IAAI,EAAE;MAAA,IAAAqC,qBAAA;MACjC,IAAI,CAAChD,GAAG,CAAC,iBAAiB,CAAC;MAC3B,MAAM,IAAIiD,sDAA0B,EAAAD,qBAAA,GAAC,IAAI,CAAC/D,cAAc,cAAA+D,qBAAA,cAAAA,qBAAA,GAAI,IAAI,CAAC;IACnE;EACF;EAEOE,YAAYA,CAIjBC,UAAiB,EACjBC,IAAqB,EACrBC,WAA+B,GAAG,IAAI,EACjB;IAAA,IAAAC,mBAAA;IACrB,IAAI,CAAC,IAAI,CAACxE,YAAY,CAACyE,GAAG,CAACJ,UAAU,CAAC,EAAE;MACtC,IAAI,CAACrE,YAAY,CAAC6D,GAAG,CAACQ,UAAU,EAAE,IAAIpE,GAAG,CAAC,CAAC,CAAC;IAC9C;IAEA,MAAMoB,KAAK,GAAG,IAAI,CAACrB,YAAY,CAAC+C,GAAG,CAACsB,UAAU,CAAE;IAChD,MAAMvB,MAAM,GAAGzB,KAAK,CAAC0B,GAAG,CAACuB,IAAI,CAAC;IAC9B,IAAIxB,MAAM,IAAI,GAAA0B,mBAAA,GAAC1B,MAAM,CAACyB,WAAW,cAAAC,mBAAA,eAAlBA,mBAAA,CAAoBE,OAAO,GAAE;MAC1C,OAAO5B,MAAM;IACf;IAEA,MAAM6B,SAAS,GAAG,IAAIC,sBAAU,CAC9BP,UAAU,EACV,IAAI,CAAC/D,QAAQ,EACb,IAAI,EACJgE,IAAI,EACJC,WACF,CAAC;IAEDlD,KAAK,CAACwC,GAAG,CAACS,IAAI,EAAEK,SAAS,CAAC;IAE1B,IAAI,CAACrE,QAAQ,CAACgC,YAAY,CAACuC,eAAe,CAAC,IAAI,CAAClC,KAAK,EAAE;MACrDmC,IAAI,EAAE,eAAe;MACrBT,UAAU;MACVU,SAAS,EAAEJ,SAAS,CAACK;IACvB,CAAC,CAAC;IAEF,OAAOL,SAAS;EAClB;EAEOM,WAAWA,CAChB5F,IAAY,EACZmB,IAAc,EACd0B,UAAmB,EACE;IACrB,OAAOtC,UAAU,CAACwC,MAAM,CAAC,IAAI,CAAC9B,QAAQ,EAAE,IAAI,EAAEjB,IAAI,EAAEmB,IAAI,EAAE0B,UAAU,CAAC;EACvE;EAEOgD,eAAeA,CAAA,EAAG;IACvB,MAAMxE,aAAa,GAAG,IAAAwC,qBAAS,EAAC,IAAI,CAACxC,aAAa,EAAE,IAAI,CAACF,IAAI,CAAC;IAC9D,IAAI,CAACU,GAAG,CAAC,mCAAmC,EAAER,aAAa,CAAC;IAE5D,OAAO,IAAIyE,wCAAmB,CAC5B,IAAI,CAAC7E,QAAQ,EACbI,aAAa,EACb,IAAI,CAAC0E,YAAY,EACjB,IAAI,CAACtE,UAAU,GAAG,CAAC,EACnB,IAAI,CAACzB,IAAI,EACT,IAAI,CAACmB,IAAI,EACT,IAAI,CAACd,OAAO,EACZ,IAAI,CAACmB,YACP,CAAC;EACH;EAEOwE,aAAaA,CAAChG,IAAY,EAAqC;IACpE,OAAO,IAAI,CAACwB,YAAY,CAACkC,GAAG,CAAC1D,IAAI,CAAC;EACpC;EAEOiG,cAAcA,CACnBjG,IAAY,EACgC;IAC5C,OAAO,IAAI,CAACuB,YAAY,CAACmC,GAAG,CAAC1D,IAAI,CAAC;EACpC;EAEOa,cAAcA,CAAA,EAAG;IACtB,OAAO,IAAI,CAAC,CAACA,cAAc;EAC7B;EAEOqF,WAAWA,CAACC,QAA6C,EAAE;IAChE,IAAI,IAAI,CAAC,CAACrF,cAAc,EAAE;MACxBqF,QAAQ,CAAC,IAAI,CAAC,CAACrF,cAAc,CAAC;MAC9B,OAAO,MAAM,CAAC,CAAC;IACjB;IAEA,IAAI,CAACJ,mBAAmB,CAACsD,IAAI,CAACmC,QAAQ,CAAC;IAEvC,OAAO,MAAM;MACX,MAAMC,KAAK,GAAG,IAAI,CAAC1F,mBAAmB,CAAC2F,OAAO,CAACF,QAAQ,CAAC;MACxD,IAAIC,KAAK,IAAI,CAAC,EAAE;QACd,IAAI,CAAC1F,mBAAmB,CAAC4F,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC;MAC3C;IACF,CAAC;EACH;EAEOG,kBAAkBA,CAACC,GAAgC,EAAE;IAAA,IAAAC,SAAA;IAC1D,IAAI,CAAC,CAAC5F,cAAc,GAAG6F,OAAO,CAACF,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEG,QAAQ,CAAC;IAC7C,IAAI,CAAC,CAAC5F,mBAAmB,IAAA0F,SAAA,GAAGD,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAE1E,IAAI,cAAA2E,SAAA,cAAAA,SAAA,GAAI,IAAI;IAE7C,IAAI,CAACxF,QAAQ,CAACgC,YAAY,CAACuC,eAAe,CAAC,IAAI,CAAClC,KAAK,EAAE;MACrDsD,MAAM,EAAEJ,GAAG,KAAK,IAAI;MACpBf,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEQvB,SAASA,CAAC2C,mBAA0C,EAAc;IACxE,MAAM1C,aAAa,GACjB0C,mBAAmB,YAAYtG,UAAU,GACrCsG,mBAAmB,GACnB,IAAItG,UAAU,CACZ,IAAI,CAACU,QAAQ,EACb,IAAI,CAACZ,OAAO,EACZ,IAAI,CAACa,WAAW,EAChB,IAAI,CAAClB,IAAI,EACT6G,mBAAmB,EACnB,IAAI,CAACzF,OAAO,EACZ,IAAI,CAACC,aAAa,EAClB,IAAI,CAACC,eAAe,EACpB,IAAI,CAACC,YAAY,EACjB,IAAI,CAACC,YAAY,EACjB,IAAI,CAACC,UAAU,GAAG,CACpB,CAAC;IAEP,IAAI,CAACR,QAAQ,CAACgC,YAAY,CAACuC,eAAe,CAAC,IAAI,CAAClC,KAAK,EAAE;MACrDmC,IAAI,EAAE,YAAY;MAClBqB,IAAI,EAAE3C,aAAa,CAACb;IACtB,CAAC,CAAC;IACF,IAAI,CAACzB,GAAG,CACN,6BAA6B,EAC7BsC,aAAa,CAACnE,IAAI,EAClB,IAAI,CAACmB,IAAI,EACTgD,aAAa,CAAChD,IAChB,CAAC;IACD,IAAI,CAAC,CAACL,cAAc,GAAGqD,aAAa;IACpC,IAAI,CAACzD,mBAAmB,CAACqG,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAAC7C,aAAa,CAAC,CAAC;IAErE,OAAOA,aAAa;EACtB;AACF;AAAC/C,OAAA,CAAAb,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"file":"Entrypoint.js","names":["_tsInvariant","require","_BaseEntrypoint","_Entrypoint","_isStaticallyEvaluatableModule","_EvaluatedEntrypoint","_AbortError","_BaseAction","_UnprocessedEntrypointError","EMPTY_FILE","hasLoop","name","parent","processed","includes","p","parents","found","Entrypoint","BaseEntrypoint","evaluated","onSupersedeHandlers","actionsCache","Map","hasWywMetadata","supersededWith","transformResultCode","constructor","services","initialCode","only","exports","evaluatedOnly","loadedAndParsed","resolveTasks","dependencies","generation","_parents$0$log","_parents$","loadAndParseFn","log","code","undefined","cache","invalidateIfChanged","evaluator","originalCode","extend","ignored","_this$supersededWith$","_this$supersededWith","transformedCode","_ref","_this$transformResult","_this$supersededWith2","createRoot","loadedCode","created","create","invariant","eventEmitter","perf","status","entrypoint","innerCreate","seqId","add","_cached$evaluatedOnly","cached","get","changed","mergedOnly","mergeOnly","isLoop","map","push","isSuperSet","supersede","newEntrypoint","ast","isStaticallyEvaluatableModule","length","addDependency","dependency","delete","source","set","addResolveTask","assertNotSuperseded","AbortError","assertTransformed","_this$supersededWith3","UnprocessedEntrypointError","createAction","actionType","data","abortSignal","_cached$abortSignal","has","aborted","newAction","BaseAction","entrypointEvent","type","actionIdx","idx","createChild","createEvaluated","EvaluatedEntrypoint","exportsProxy","getDependency","getResolveTask","onSupersede","callback","index","indexOf","splice","setTransformResult","res","_res$code","Boolean","metadata","isNull","newOnlyOrEntrypoint","with","forEach","handler"],"sources":["../../src/transform/Entrypoint.ts"],"sourcesContent":["import { invariant } from 'ts-invariant';\n\nimport type { ParentEntrypoint, ITransformFileResult } from '../types';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport { isSuperSet, mergeOnly } from './Entrypoint.helpers';\nimport { isStaticallyEvaluatableModule } from './isStaticallyEvaluatableModule';\nimport type {\n IEntrypointCode,\n IEntrypointDependency,\n IIgnoredEntrypoint,\n} from './Entrypoint.types';\nimport { EvaluatedEntrypoint } from './EvaluatedEntrypoint';\nimport { AbortError } from './actions/AbortError';\nimport type { ActionByType } from './actions/BaseAction';\nimport { BaseAction } from './actions/BaseAction';\nimport { UnprocessedEntrypointError } from './actions/UnprocessedEntrypointError';\nimport type { Services, ActionTypes, ActionQueueItem } from './types';\n\nconst EMPTY_FILE = '=== empty file ===';\n\nfunction hasLoop(\n name: string,\n parent: ParentEntrypoint,\n processed: string[] = []\n): boolean {\n if (parent.name === name || processed.includes(parent.name)) {\n return true;\n }\n\n for (const p of parent.parents) {\n const found = hasLoop(name, p, [...processed, parent.name]);\n if (found) {\n return found;\n }\n }\n\n return false;\n}\n\nexport class Entrypoint extends BaseEntrypoint {\n public readonly evaluated = false;\n\n public readonly loadedAndParsed: IEntrypointCode | IIgnoredEntrypoint;\n\n protected onSupersedeHandlers: Array<(newEntrypoint: Entrypoint) => void> =\n [];\n\n private actionsCache: Map<\n ActionTypes,\n Map<unknown, BaseAction<ActionQueueItem>>\n > = new Map();\n\n #hasWywMetadata: boolean = false;\n\n #supersededWith: Entrypoint | null = null;\n\n #transformResultCode: string | null = null;\n\n private constructor(\n services: Services,\n parents: ParentEntrypoint[],\n public readonly initialCode: string | undefined,\n name: string,\n only: string[],\n exports: Record<string | symbol, unknown> | undefined,\n evaluatedOnly: string[],\n loadedAndParsed?: IEntrypointCode | IIgnoredEntrypoint,\n protected readonly resolveTasks = new Map<\n string,\n Promise<IEntrypointDependency>\n >(),\n readonly dependencies = new Map<string, IEntrypointDependency>(),\n generation = 1\n ) {\n super(\n services,\n evaluatedOnly,\n exports,\n generation,\n name,\n only,\n parents,\n dependencies\n );\n\n this.loadedAndParsed =\n loadedAndParsed ??\n services.loadAndParseFn(\n services,\n name,\n initialCode,\n parents[0]?.log ?? services.log\n );\n\n if (this.loadedAndParsed.code !== undefined) {\n services.cache.invalidateIfChanged(name, this.loadedAndParsed.code);\n }\n\n const code =\n this.loadedAndParsed.evaluator === 'ignored'\n ? '[IGNORED]'\n : this.originalCode || EMPTY_FILE;\n\n this.log.extend('source')('created %s (%o)\\n%s', name, only, code);\n }\n\n public get ignored() {\n return this.loadedAndParsed.evaluator === 'ignored';\n }\n\n public get originalCode() {\n return this.loadedAndParsed.code;\n }\n\n public get supersededWith(): Entrypoint | null {\n return this.#supersededWith?.supersededWith ?? this.#supersededWith;\n }\n\n public get transformedCode(): string | null {\n return (\n this.#transformResultCode ?? this.supersededWith?.transformedCode ?? null\n );\n }\n\n public static createRoot(\n services: Services,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint {\n const created = Entrypoint.create(services, null, name, only, loadedCode);\n invariant(created !== 'loop', 'loop detected');\n\n return created;\n }\n\n /**\n * Creates an entrypoint for the specified file.\n * If there is already an entrypoint for this file, there will be four possible outcomes:\n * 1. If `loadedCode` is specified and is different from the one that was used to create the existing entrypoint,\n * the existing entrypoint will be superseded by a new one and all cached results for it will be invalidated.\n * It can happen if the file was changed and the watcher notified us about it, or we received a new version\n * of the file from a loader whereas the previous one was loaded from the filesystem.\n * The new entrypoint will be returned.\n * 2. If `only` is subset of the existing entrypoint's `only`, the existing entrypoint will be returned.\n * 3. If `only` is superset of the existing entrypoint's `only`, the existing entrypoint will be superseded and the new one will be returned.\n * 4. If a loop is detected, 'ignored' will be returned, the existing entrypoint will be superseded or not depending on the `only` value.\n */\n protected static create(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): Entrypoint | 'loop' {\n const { cache, eventEmitter } = services;\n return eventEmitter.perf('createEntrypoint', () => {\n const [status, entrypoint] = Entrypoint.innerCreate(\n services,\n parent\n ? {\n evaluated: parent.evaluated,\n log: parent.log,\n name: parent.name,\n parents: parent.parents,\n seqId: parent.seqId,\n }\n : null,\n name,\n only,\n loadedCode\n );\n\n if (status !== 'cached') {\n cache.add('entrypoints', name, entrypoint);\n }\n\n return status === 'loop' ? 'loop' : entrypoint;\n });\n }\n\n private static innerCreate(\n services: Services,\n parent: ParentEntrypoint | null,\n name: string,\n only: string[],\n loadedCode: string | undefined\n ): ['loop' | 'created' | 'cached', Entrypoint] {\n const { cache } = services;\n\n const cached = cache.get('entrypoints', name);\n const changed =\n loadedCode !== undefined\n ? cache.invalidateIfChanged(name, loadedCode)\n : false;\n\n if (!cached?.evaluated && cached?.ignored) {\n return ['cached', cached];\n }\n\n const exports = cached?.exports;\n const evaluatedOnly = changed ? [] : cached?.evaluatedOnly ?? [];\n\n const mergedOnly = cached?.only ? mergeOnly(cached.only, only) : [...only];\n\n if (cached?.evaluated) {\n cached.log('is already evaluated with', cached.evaluatedOnly);\n }\n\n if (!changed && cached && !cached.evaluated) {\n const isLoop = parent && hasLoop(name, parent);\n if (isLoop) {\n parent.log('[createEntrypoint] %s is a loop', name);\n }\n\n if (parent && !cached.parents.map((p) => p.name).includes(parent.name)) {\n cached.parents.push(parent);\n }\n\n if (isSuperSet(cached.only, mergedOnly)) {\n cached.log('is cached', name);\n return [isLoop ? 'loop' : 'cached', cached];\n }\n\n cached.log(\n 'is cached, but with different `only` %o (the cached one %o)',\n only,\n cached?.only\n );\n\n return [isLoop ? 'loop' : 'created', cached.supersede(mergedOnly)];\n }\n\n const newEntrypoint = new Entrypoint(\n services,\n parent ? [parent] : [],\n loadedCode,\n name,\n mergedOnly,\n exports,\n evaluatedOnly,\n undefined,\n cached && 'resolveTasks' in cached ? cached.resolveTasks : undefined,\n cached && 'dependencies' in cached ? cached.dependencies : undefined,\n cached ? cached.generation + 1 : 1\n );\n\n if (\n !newEntrypoint.ignored &&\n !newEntrypoint.only.includes('*') &&\n !newEntrypoint.only.includes('__wywPreval') &&\n !newEntrypoint.only.includes('side-effect')\n ) {\n const { ast } = newEntrypoint.loadedAndParsed;\n\n if (ast && isStaticallyEvaluatableModule(ast)) {\n newEntrypoint.log(\n '[entrypoint] promote `only` to \"*\" for statically evaluatable module'\n );\n newEntrypoint.only.length = 0;\n newEntrypoint.only.push('*');\n }\n }\n\n if (cached && !cached.evaluated) {\n cached.log('is cached, but with different code');\n cached.supersede(newEntrypoint);\n }\n\n return ['created', newEntrypoint];\n }\n\n public addDependency(dependency: IEntrypointDependency): void {\n this.resolveTasks.delete(dependency.source);\n this.dependencies.set(dependency.source, dependency);\n }\n\n public addResolveTask(\n name: string,\n dependency: Promise<IEntrypointDependency>\n ): void {\n this.resolveTasks.set(name, dependency);\n }\n\n public assertNotSuperseded() {\n if (this.supersededWith) {\n this.log('superseded');\n throw new AbortError('superseded');\n }\n }\n\n public assertTransformed() {\n if (this.transformedCode === null) {\n this.log('not transformed');\n throw new UnprocessedEntrypointError(this.supersededWith ?? this);\n }\n }\n\n public createAction<\n TType extends ActionTypes,\n TAction extends ActionByType<TType>,\n >(\n actionType: TType,\n data: TAction['data'],\n abortSignal: AbortSignal | null = null\n ): BaseAction<TAction> {\n if (!this.actionsCache.has(actionType)) {\n this.actionsCache.set(actionType, new Map());\n }\n\n const cache = this.actionsCache.get(actionType)!;\n const cached = cache.get(data);\n if (cached && !cached.abortSignal?.aborted) {\n return cached as BaseAction<TAction>;\n }\n\n const newAction = new BaseAction<TAction>(\n actionType as TAction['type'],\n this.services,\n this,\n data,\n abortSignal\n );\n\n cache.set(data, newAction);\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'actionCreated',\n actionType,\n actionIdx: newAction.idx,\n });\n\n return newAction;\n }\n\n public createChild(\n name: string,\n only: string[],\n loadedCode?: string\n ): Entrypoint | 'loop' {\n return Entrypoint.create(this.services, this, name, only, loadedCode);\n }\n\n public createEvaluated() {\n const evaluatedOnly = mergeOnly(this.evaluatedOnly, this.only);\n this.log('create EvaluatedEntrypoint for %o', evaluatedOnly);\n\n return new EvaluatedEntrypoint(\n this.services,\n evaluatedOnly,\n this.exportsProxy,\n this.generation + 1,\n this.name,\n this.only,\n this.parents,\n this.dependencies\n );\n }\n\n public getDependency(name: string): IEntrypointDependency | undefined {\n return this.dependencies.get(name);\n }\n\n public getResolveTask(\n name: string\n ): Promise<IEntrypointDependency> | undefined {\n return this.resolveTasks.get(name);\n }\n\n public hasWywMetadata() {\n return this.#hasWywMetadata;\n }\n\n public onSupersede(callback: (newEntrypoint: Entrypoint) => void) {\n if (this.#supersededWith) {\n callback(this.#supersededWith);\n return () => {};\n }\n\n this.onSupersedeHandlers.push(callback);\n\n return () => {\n const index = this.onSupersedeHandlers.indexOf(callback);\n if (index >= 0) {\n this.onSupersedeHandlers.splice(index, 1);\n }\n };\n }\n\n public setTransformResult(res: ITransformFileResult | null) {\n this.#hasWywMetadata = Boolean(res?.metadata);\n this.#transformResultCode = res?.code ?? null;\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n isNull: res === null,\n type: 'setTransformResult',\n });\n }\n\n private supersede(newOnlyOrEntrypoint: string[] | Entrypoint): Entrypoint {\n const newEntrypoint =\n newOnlyOrEntrypoint instanceof Entrypoint\n ? newOnlyOrEntrypoint\n : new Entrypoint(\n this.services,\n this.parents,\n this.initialCode,\n this.name,\n newOnlyOrEntrypoint,\n this.exports,\n this.evaluatedOnly,\n this.loadedAndParsed,\n this.resolveTasks,\n this.dependencies,\n this.generation + 1\n );\n\n this.services.eventEmitter.entrypointEvent(this.seqId, {\n type: 'superseded',\n with: newEntrypoint.seqId,\n });\n this.log(\n 'superseded by %s (%o -> %o)',\n newEntrypoint.name,\n this.only,\n newEntrypoint.only\n );\n this.#supersededWith = newEntrypoint;\n this.onSupersedeHandlers.forEach((handler) => handler(newEntrypoint));\n\n return newEntrypoint;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Entrypoint.types.js","names":[],"sources":["../../src/transform/Entrypoint.types.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { Debugger, Evaluator } from '@wyw-in-js/shared';\n\nimport type { Services } from './types';\n\nexport interface IEntrypointCode {\n readonly ast: File;\n code: string;\n evalConfig: TransformOptions;\n evaluator: Evaluator;\n}\n\nexport interface IIgnoredEntrypoint {\n readonly ast?: File;\n readonly code?: string;\n evaluator: 'ignored';\n reason: 'extension' | 'rule';\n}\n\nexport interface IEntrypointDependency {\n only: string[];\n resolved: string | null;\n source: string;\n}\n\nexport type LoadAndParseFn = (\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n) => IEntrypointCode | IIgnoredEntrypoint;\n"],"mappings":""}
1
+ {"version":3,"file":"Entrypoint.types.js","names":[],"sources":["../../src/transform/Entrypoint.types.ts"],"sourcesContent":["import type { TransformOptions } from '@babel/core';\nimport type { File } from '@babel/types';\n\nimport type { Debugger, Evaluator } from '@wyw-in-js/shared';\n\nimport type { Services } from './types';\n\nexport interface IEntrypointCode {\n readonly ast: File;\n code: string;\n evalConfig: TransformOptions;\n evaluator: Evaluator;\n}\n\nexport interface IIgnoredEntrypoint {\n readonly ast?: File;\n readonly code?: string;\n evaluator: 'ignored';\n reason: 'extension' | 'rule';\n}\n\nexport interface IEntrypointDependency {\n only: string[];\n resolved: string | null;\n source: string;\n}\n\nexport type LoadAndParseFn = (\n services: Services,\n name: string,\n loadedCode: string | undefined,\n log: Debugger\n) => IEntrypointCode | IIgnoredEntrypoint;\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"EvaluatedEntrypoint.js","names":["_BaseEntrypoint","require","EvaluatedEntrypoint","BaseEntrypoint","evaluated","ignored","exports"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nexport interface IEvaluatedEntrypoint {\n dependencies: Map<string, IEntrypointDependency>;\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAcO,MAAMC,mBAAmB,SACtBC,8BAAc,CAExB;EACkBC,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"EvaluatedEntrypoint.js","names":["_BaseEntrypoint","require","EvaluatedEntrypoint","BaseEntrypoint","evaluated","ignored","exports"],"sources":["../../src/transform/EvaluatedEntrypoint.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\n\nimport { BaseEntrypoint } from './BaseEntrypoint';\nimport type { IEntrypointDependency } from './Entrypoint.types';\n\nexport interface IEvaluatedEntrypoint {\n dependencies: Map<string, IEntrypointDependency>;\n evaluated: true;\n evaluatedOnly: string[];\n exports: Record<string | symbol, unknown>;\n generation: number;\n ignored: false;\n log: Debugger;\n only: string[];\n}\n\nexport class EvaluatedEntrypoint\n extends BaseEntrypoint\n implements IEvaluatedEntrypoint\n{\n public readonly evaluated = true;\n\n public readonly ignored = false;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAcO,MAAMC,mBAAmB,SACtBC,8BAAc,CAExB;EACkBC,SAAS,GAAG,IAAI;EAEhBC,OAAO,GAAG,KAAK;AACjC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AbortError.js","names":["AbortError","Error","constructor","reason","name","exports","isAborted","value"],"sources":["../../../src/transform/actions/AbortError.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(reason?: string) {\n super(reason);\n this.name = 'AbortError';\n }\n}\n\nexport const isAborted = (value: unknown): value is AbortError =>\n value instanceof AbortError;\n"],"mappings":";;;;;;AAAO,MAAMA,UAAU,SAASC,KAAK,CAAC;EACpCC,WAAWA,CAACC,MAAe,EAAE;IAC3B,KAAK,CAACA,MAAM,CAAC;IACb,IAAI,CAACC,IAAI,GAAG,YAAY;EAC1B;AACF;AAACC,OAAA,CAAAL,UAAA,GAAAA,UAAA;AAEM,MAAMM,SAAS,GAAIC,KAAc,IACtCA,KAAK,YAAYP,UAAU;AAACK,OAAA,CAAAC,SAAA,GAAAA,SAAA"}
1
+ {"version":3,"file":"AbortError.js","names":["AbortError","Error","constructor","reason","name","exports","isAborted","value"],"sources":["../../../src/transform/actions/AbortError.ts"],"sourcesContent":["export class AbortError extends Error {\n constructor(reason?: string) {\n super(reason);\n this.name = 'AbortError';\n }\n}\n\nexport const isAborted = (value: unknown): value is AbortError =>\n value instanceof AbortError;\n"],"mappings":";;;;;;AAAO,MAAMA,UAAU,SAASC,KAAK,CAAC;EACpCC,WAAWA,CAACC,MAAe,EAAE;IAC3B,KAAK,CAACA,MAAM,CAAC;IACb,IAAI,CAACC,IAAI,GAAG,YAAY;EAC1B;AACF;AAACC,OAAA,CAAAL,UAAA,GAAAA,UAAA;AAEM,MAAMM,SAAS,GAAIC,KAAc,IACtCA,KAAK,YAAYP,UAAU;AAACK,OAAA,CAAAC,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -13,6 +13,7 @@ class BaseAction {
13
13
  result = _types.Pending;
14
14
  activeScenario = null;
15
15
  activeScenarioNextResults = [];
16
+ handler = null;
16
17
  constructor(type, services, entrypoint, data, abortSignal) {
17
18
  this.type = type;
18
19
  this.services = services;
@@ -57,6 +58,10 @@ class BaseAction {
57
58
  };
58
59
  }
59
60
  run(handler) {
61
+ if (this.handler && this.handler !== handler) {
62
+ throw new Error(`action handler is already set`);
63
+ }
64
+ this.handler = handler;
60
65
  if (!this.activeScenario) {
61
66
  this.activeScenario = handler.call(this);
62
67
  this.activeScenarioNextResults = [];
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAction.js","names":["require","_types","actionIdx","BaseAction","result","Pending","activeScenario","activeScenarioNextResults","constructor","type","services","entrypoint","data","abortSignal","idx","toString","padStart","log","extend","ref","createAbortSignal","abortController","AbortController","unsubscribeFromParentAbort","onAbort","abort","unsubscribeFromSupersede","onSupersede","signal","Symbol","dispose","getNext","fn","_this$abortSignal","addEventListener","_this$abortSignal2","removeEventListener","run","handler","call","nextIdx","throwFn","e","emitAction","throw","nextFn","arg","next","processNextResult","onError","then","r","done","value","push","processError","length","nextResult","errorInGenerator","recover","activeScenarioError","processNext","rethrowActiveScenarioError","yieldIdx","eventEmitter","action","exports"],"sources":["../../../src/transform/actions/BaseAction.ts"],"sourcesContent":["/* eslint-disable no-plusplus */\nimport '../../utils/dispose-polyfill';\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from '../Entrypoint';\nimport type {\n ActionQueueItem,\n ActionTypes,\n AnyIteratorResult,\n AsyncScenarioForAction,\n Handler,\n IBaseAction,\n Services,\n SyncScenarioForAction,\n TypeOfResult,\n YieldResult,\n} from '../types';\nimport { Pending } from '../types';\n\nlet actionIdx = 0;\n\nexport type ActionByType<TType extends ActionTypes> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\ntype GetBase<TAction extends ActionQueueItem> = IBaseAction<\n TAction,\n TypeOfResult<TAction>,\n TAction['data']\n>;\n\nexport class BaseAction<TAction extends ActionQueueItem>\n implements GetBase<TAction>\n{\n public readonly idx: string;\n\n public result: TypeOfResult<TAction> | typeof Pending = Pending;\n\n private activeScenario:\n | SyncScenarioForAction<TAction>\n | AsyncScenarioForAction<TAction>\n | null = null;\n\n private activeScenarioError?: unknown;\n\n private activeScenarioNextResults: AnyIteratorResult<\n 'async' | 'sync',\n TypeOfResult<TAction>\n >[] = [];\n\n public constructor(\n public readonly type: TAction['type'],\n public readonly services: Services,\n public readonly entrypoint: Entrypoint,\n public readonly data: TAction['data'],\n public readonly abortSignal: AbortSignal | null\n ) {\n actionIdx += 1;\n this.idx = actionIdx.toString(16).padStart(6, '0');\n }\n\n public get log(): Debugger {\n return this.entrypoint.log.extend(this.ref);\n }\n\n public get ref() {\n return `${this.type}@${this.idx}`;\n }\n\n public createAbortSignal(): AbortSignal & Disposable {\n const abortController = new AbortController();\n\n const unsubscribeFromParentAbort = this.onAbort(() => {\n this.entrypoint.log('parent aborted');\n abortController.abort();\n });\n\n const unsubscribeFromSupersede = this.entrypoint.onSupersede(() => {\n this.entrypoint.log('entrypoint superseded, aborting processing');\n abortController.abort();\n });\n\n const abortSignal = abortController.signal as AbortSignal & Disposable;\n abortSignal[Symbol.dispose] = () => {\n unsubscribeFromParentAbort();\n unsubscribeFromSupersede();\n };\n\n return abortSignal;\n }\n\n public *getNext<\n TNextType extends ActionTypes,\n TNextAction extends ActionByType<TNextType> = ActionByType<TNextType>,\n >(\n type: TNextType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal: AbortSignal | null = this.abortSignal\n ): Generator<\n [TNextType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n > {\n return (yield [\n type,\n entrypoint,\n data,\n abortSignal,\n ]) as TypeOfResult<TNextAction>;\n }\n\n public onAbort(fn: () => void): () => void {\n this.abortSignal?.addEventListener('abort', fn);\n\n return () => {\n this.abortSignal?.removeEventListener('abort', fn);\n };\n }\n\n public run<\n TMode extends 'async' | 'sync',\n THandler extends Handler<TMode, TAction> = Handler<TMode, TAction>,\n >(handler: THandler) {\n type IterationResult = AnyIteratorResult<TMode, TypeOfResult<TAction>>;\n\n if (!this.activeScenario) {\n this.activeScenario = handler.call(this);\n this.activeScenarioNextResults = [];\n }\n\n let nextIdx = 0;\n\n const throwFn = (e: unknown) =>\n this.emitAction(nextIdx, () => this.activeScenario!.throw(e));\n\n const nextFn = (arg: YieldResult) =>\n this.emitAction(nextIdx, () => this.activeScenario!.next(arg));\n\n const processNextResult = (\n result: IterationResult,\n onError?: (e: unknown) => void\n ) => {\n if ('then' in result) {\n result.then((r) => {\n if (r.done) {\n this.result = r.value;\n }\n }, onError);\n } else if (result.done) {\n this.result = result.value;\n }\n\n this.activeScenarioNextResults.push(result);\n };\n\n const processError = (e: unknown) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'error was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('error processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = throwFn(e);\n processNextResult(nextResult as IterationResult, processError);\n } catch (errorInGenerator) {\n const { recover } = handler;\n if (recover) {\n const nextResult = {\n done: false,\n value: recover(errorInGenerator, this),\n };\n\n processNextResult(nextResult as IterationResult, processError);\n return;\n }\n\n this.activeScenarioError = errorInGenerator;\n throw errorInGenerator;\n }\n };\n\n const processNext = (arg: YieldResult) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'next was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('next processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = nextFn(arg);\n processNextResult(nextResult as IterationResult, processError);\n } catch (e) {\n processError(e);\n }\n };\n\n return {\n next: (arg: YieldResult): IterationResult => {\n this.rethrowActiveScenarioError();\n processNext(arg);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n throw: (e: unknown): IterationResult => {\n this.rethrowActiveScenarioError();\n processError(e);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n };\n }\n\n protected emitAction<TRes>(yieldIdx: number, fn: () => TRes) {\n return this.services.eventEmitter.action(\n this.type,\n `${this.idx}:${yieldIdx + 1}`,\n this.entrypoint.ref,\n fn\n );\n }\n\n private rethrowActiveScenarioError() {\n if (!this.activeScenarioError) {\n return;\n }\n\n this.log(\n 'scenario has an unhandled error from another branch, rethrow %o',\n this.activeScenarioError\n );\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.activeScenarioError;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseAction.js","names":["require","_types","actionIdx","BaseAction","result","Pending","activeScenario","activeScenarioNextResults","handler","constructor","type","services","entrypoint","data","abortSignal","idx","toString","padStart","log","extend","ref","createAbortSignal","abortController","AbortController","unsubscribeFromParentAbort","onAbort","abort","unsubscribeFromSupersede","onSupersede","signal","Symbol","dispose","getNext","fn","_this$abortSignal","addEventListener","_this$abortSignal2","removeEventListener","run","Error","call","nextIdx","throwFn","e","emitAction","throw","nextFn","arg","next","processNextResult","onError","then","r","done","value","push","processError","length","nextResult","errorInGenerator","recover","activeScenarioError","processNext","rethrowActiveScenarioError","yieldIdx","eventEmitter","action","exports"],"sources":["../../../src/transform/actions/BaseAction.ts"],"sourcesContent":["/* eslint-disable no-plusplus */\nimport '../../utils/dispose-polyfill';\nimport type { Debugger } from '@wyw-in-js/shared';\n\nimport type { Entrypoint } from '../Entrypoint';\nimport type {\n ActionQueueItem,\n ActionTypes,\n AnyIteratorResult,\n AsyncScenarioForAction,\n Handler,\n IBaseAction,\n Services,\n SyncScenarioForAction,\n TypeOfResult,\n YieldResult,\n} from '../types';\nimport { Pending } from '../types';\n\nlet actionIdx = 0;\n\nexport type ActionByType<TType extends ActionTypes> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\ntype GetBase<TAction extends ActionQueueItem> = IBaseAction<\n TAction,\n TypeOfResult<TAction>,\n TAction['data']\n>;\n\nexport class BaseAction<TAction extends ActionQueueItem>\n implements GetBase<TAction>\n{\n public readonly idx: string;\n\n public result: TypeOfResult<TAction> | typeof Pending = Pending;\n\n private activeScenario:\n | SyncScenarioForAction<TAction>\n | AsyncScenarioForAction<TAction>\n | null = null;\n\n private activeScenarioError?: unknown;\n\n private activeScenarioNextResults: AnyIteratorResult<\n 'async' | 'sync',\n TypeOfResult<TAction>\n >[] = [];\n\n private handler: null | unknown = null;\n\n public constructor(\n public readonly type: TAction['type'],\n public readonly services: Services,\n public readonly entrypoint: Entrypoint,\n public readonly data: TAction['data'],\n public readonly abortSignal: AbortSignal | null\n ) {\n actionIdx += 1;\n this.idx = actionIdx.toString(16).padStart(6, '0');\n }\n\n public get log(): Debugger {\n return this.entrypoint.log.extend(this.ref);\n }\n\n public get ref() {\n return `${this.type}@${this.idx}`;\n }\n\n public createAbortSignal(): AbortSignal & Disposable {\n const abortController = new AbortController();\n\n const unsubscribeFromParentAbort = this.onAbort(() => {\n this.entrypoint.log('parent aborted');\n abortController.abort();\n });\n\n const unsubscribeFromSupersede = this.entrypoint.onSupersede(() => {\n this.entrypoint.log('entrypoint superseded, aborting processing');\n abortController.abort();\n });\n\n const abortSignal = abortController.signal as AbortSignal & Disposable;\n abortSignal[Symbol.dispose] = () => {\n unsubscribeFromParentAbort();\n unsubscribeFromSupersede();\n };\n\n return abortSignal;\n }\n\n public *getNext<\n TNextType extends ActionTypes,\n TNextAction extends ActionByType<TNextType> = ActionByType<TNextType>,\n >(\n type: TNextType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal: AbortSignal | null = this.abortSignal\n ): Generator<\n [TNextType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n > {\n return (yield [\n type,\n entrypoint,\n data,\n abortSignal,\n ]) as TypeOfResult<TNextAction>;\n }\n\n public onAbort(fn: () => void): () => void {\n this.abortSignal?.addEventListener('abort', fn);\n\n return () => {\n this.abortSignal?.removeEventListener('abort', fn);\n };\n }\n\n public run<\n TMode extends 'async' | 'sync',\n THandler extends Handler<TMode, TAction> = Handler<TMode, TAction>,\n >(handler: THandler) {\n type IterationResult = AnyIteratorResult<TMode, TypeOfResult<TAction>>;\n\n if (this.handler && this.handler !== handler) {\n throw new Error(`action handler is already set`);\n }\n\n this.handler = handler;\n\n if (!this.activeScenario) {\n this.activeScenario = handler.call(this);\n this.activeScenarioNextResults = [];\n }\n\n let nextIdx = 0;\n\n const throwFn = (e: unknown) =>\n this.emitAction(nextIdx, () => this.activeScenario!.throw(e));\n\n const nextFn = (arg: YieldResult) =>\n this.emitAction(nextIdx, () => this.activeScenario!.next(arg));\n\n const processNextResult = (\n result: IterationResult,\n onError?: (e: unknown) => void\n ) => {\n if ('then' in result) {\n result.then((r) => {\n if (r.done) {\n this.result = r.value;\n }\n }, onError);\n } else if (result.done) {\n this.result = result.value;\n }\n\n this.activeScenarioNextResults.push(result);\n };\n\n const processError = (e: unknown) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'error was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('error processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = throwFn(e);\n processNextResult(nextResult as IterationResult, processError);\n } catch (errorInGenerator) {\n const { recover } = handler;\n if (recover) {\n const nextResult = {\n done: false,\n value: recover(errorInGenerator, this),\n };\n\n processNextResult(nextResult as IterationResult, processError);\n return;\n }\n\n this.activeScenarioError = errorInGenerator;\n throw errorInGenerator;\n }\n };\n\n const processNext = (arg: YieldResult) => {\n if (this.activeScenarioNextResults.length > nextIdx) {\n this.log(\n 'next was already handled in another branch, result idx is %d',\n nextIdx\n );\n return;\n }\n\n this.log('next processing, result idx is %d', nextIdx);\n\n try {\n const nextResult = nextFn(arg);\n processNextResult(nextResult as IterationResult, processError);\n } catch (e) {\n processError(e);\n }\n };\n\n return {\n next: (arg: YieldResult): IterationResult => {\n this.rethrowActiveScenarioError();\n processNext(arg);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n throw: (e: unknown): IterationResult => {\n this.rethrowActiveScenarioError();\n processError(e);\n return this.activeScenarioNextResults[nextIdx++] as IterationResult;\n },\n };\n }\n\n protected emitAction<TRes>(yieldIdx: number, fn: () => TRes) {\n return this.services.eventEmitter.action(\n this.type,\n `${this.idx}:${yieldIdx + 1}`,\n this.entrypoint.ref,\n fn\n );\n }\n\n private rethrowActiveScenarioError() {\n if (!this.activeScenarioError) {\n return;\n }\n\n this.log(\n 'scenario has an unhandled error from another branch, rethrow %o',\n this.activeScenarioError\n );\n\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.activeScenarioError;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"UnprocessedEntrypointError.js","names":["UnprocessedEntrypointError","Error","constructor","entrypoint","idx","exports","isUnprocessedEntrypointError","value"],"sources":["../../../src/transform/actions/UnprocessedEntrypointError.ts"],"sourcesContent":["import type { Entrypoint } from '../Entrypoint';\n\nexport class UnprocessedEntrypointError extends Error {\n constructor(public entrypoint: Entrypoint) {\n super(\n `Entrypoint ${entrypoint.idx} is not processed and can't be evaluated`\n );\n }\n}\n\nexport const isUnprocessedEntrypointError = (\n value: unknown\n): value is UnprocessedEntrypointError =>\n value instanceof UnprocessedEntrypointError;\n"],"mappings":";;;;;;AAEO,MAAMA,0BAA0B,SAASC,KAAK,CAAC;EACpDC,WAAWA,CAAQC,UAAsB,EAAE;IACzC,KAAK,CACF,cAAaA,UAAU,CAACC,GAAI,0CAC/B,CAAC;IAAC,KAHeD,UAAsB,GAAtBA,UAAsB;EAIzC;AACF;AAACE,OAAA,CAAAL,0BAAA,GAAAA,0BAAA;AAEM,MAAMM,4BAA4B,GACvCC,KAAc,IAEdA,KAAK,YAAYP,0BAA0B;AAACK,OAAA,CAAAC,4BAAA,GAAAA,4BAAA"}
1
+ {"version":3,"file":"UnprocessedEntrypointError.js","names":["UnprocessedEntrypointError","Error","constructor","entrypoint","idx","exports","isUnprocessedEntrypointError","value"],"sources":["../../../src/transform/actions/UnprocessedEntrypointError.ts"],"sourcesContent":["import type { Entrypoint } from '../Entrypoint';\n\nexport class UnprocessedEntrypointError extends Error {\n constructor(public entrypoint: Entrypoint) {\n super(\n `Entrypoint ${entrypoint.idx} is not processed and can't be evaluated`\n );\n }\n}\n\nexport const isUnprocessedEntrypointError = (\n value: unknown\n): value is UnprocessedEntrypointError =>\n value instanceof UnprocessedEntrypointError;\n"],"mappings":";;;;;;AAEO,MAAMA,0BAA0B,SAASC,KAAK,CAAC;EACpDC,WAAWA,CAAQC,UAAsB,EAAE;IACzC,KAAK,CACH,cAAcA,UAAU,CAACC,GAAG,0CAC9B,CAAC;IAAC,KAHeD,UAAsB,GAAtBA,UAAsB;EAIzC;AACF;AAACE,OAAA,CAAAL,0BAAA,GAAAA,0BAAA;AAEM,MAAMM,4BAA4B,GACvCC,KAAc,IAEdA,KAAK,YAAYP,0BAA0B;AAACK,OAAA,CAAAC,4BAAA,GAAAA,4BAAA","ignoreList":[]}