@wyw-in-js/transform 1.1.0 → 2.0.0-alpha.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 (603) hide show
  1. package/esm/cache.js +426 -289
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js +137 -134
  4. package/esm/debug/fileReporter.js.map +1 -1
  5. package/esm/eval/broker.js +2134 -0
  6. package/esm/eval/broker.js.map +1 -0
  7. package/esm/eval/lru.js +36 -0
  8. package/esm/eval/lru.js.map +1 -0
  9. package/esm/eval/prepareModuleOnDemand.js +21 -0
  10. package/esm/eval/prepareModuleOnDemand.js.map +1 -0
  11. package/esm/eval/protocol.js +2 -0
  12. package/esm/eval/protocol.js.map +1 -0
  13. package/esm/eval/resolverStrategy.js +51 -0
  14. package/esm/eval/resolverStrategy.js.map +1 -0
  15. package/esm/eval/runner.js +1759 -0
  16. package/esm/eval/runner.js.map +1 -0
  17. package/esm/eval/serialize.js +333 -0
  18. package/esm/eval/serialize.js.map +1 -0
  19. package/esm/eval/writeQueue.js +81 -0
  20. package/esm/eval/writeQueue.js.map +1 -0
  21. package/esm/evaluators/index.js +11 -12
  22. package/esm/evaluators/index.js.map +1 -1
  23. package/esm/index.js +25 -29
  24. package/esm/index.js.map +1 -1
  25. package/esm/module.js +896 -520
  26. package/esm/module.js.map +1 -1
  27. package/esm/shaker.js +14 -80
  28. package/esm/shaker.js.map +1 -1
  29. package/esm/transform/BaseEntrypoint.js +162 -164
  30. package/esm/transform/BaseEntrypoint.js.map +1 -1
  31. package/esm/transform/Entrypoint.helpers.js +96 -253
  32. package/esm/transform/Entrypoint.helpers.js.map +1 -1
  33. package/esm/transform/Entrypoint.js +336 -270
  34. package/esm/transform/Entrypoint.js.map +1 -1
  35. package/esm/transform/Entrypoint.types.js +1 -1
  36. package/esm/transform/Entrypoint.types.js.map +1 -1
  37. package/esm/transform/EvaluatedEntrypoint.js +10 -4
  38. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  39. package/esm/transform/actions/AbortError.js +6 -6
  40. package/esm/transform/actions/AbortError.js.map +1 -1
  41. package/esm/transform/actions/BaseAction.js +140 -136
  42. package/esm/transform/actions/BaseAction.js.map +1 -1
  43. package/esm/transform/actions/UnprocessedEntrypointError.js +6 -6
  44. package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
  45. package/esm/transform/actions/actionRunner.js +63 -66
  46. package/esm/transform/actions/actionRunner.js.map +1 -1
  47. package/esm/transform/actions/types.js +1 -1
  48. package/esm/transform/actions/types.js.map +1 -1
  49. package/esm/transform/barrelManifest.types.js +2 -0
  50. package/esm/transform/barrelManifest.types.js.map +1 -0
  51. package/esm/transform/generators/baseProcessingHandlers.js +15 -17
  52. package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
  53. package/esm/transform/generators/collect.js +27 -55
  54. package/esm/transform/generators/collect.js.map +1 -1
  55. package/esm/transform/generators/createStylisPreprocessor.js +353 -321
  56. package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
  57. package/esm/transform/generators/evalFile.js +48 -47
  58. package/esm/transform/generators/evalFile.js.map +1 -1
  59. package/esm/transform/generators/extract.js +78 -90
  60. package/esm/transform/generators/extract.js.map +1 -1
  61. package/esm/transform/generators/getExports.js +57 -74
  62. package/esm/transform/generators/getExports.js.map +1 -1
  63. package/esm/transform/generators/index.js +11 -11
  64. package/esm/transform/generators/index.js.map +1 -1
  65. package/esm/transform/generators/processEntrypoint.js +78 -67
  66. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  67. package/esm/transform/generators/processImports.js +102 -67
  68. package/esm/transform/generators/processImports.js.map +1 -1
  69. package/esm/transform/generators/resolveImports.js +165 -196
  70. package/esm/transform/generators/resolveImports.js.map +1 -1
  71. package/esm/transform/generators/resolveStaticOxcValues.js +2911 -0
  72. package/esm/transform/generators/resolveStaticOxcValues.js.map +1 -0
  73. package/esm/transform/generators/rewriteOxcBarrelImports.js +822 -0
  74. package/esm/transform/generators/rewriteOxcBarrelImports.js.map +1 -0
  75. package/esm/transform/generators/transform.js +239 -248
  76. package/esm/transform/generators/transform.js.map +1 -1
  77. package/esm/transform/generators/workflow.js +87 -90
  78. package/esm/transform/generators/workflow.js.map +1 -1
  79. package/esm/transform/helpers/loadWywOptions.js +154 -74
  80. package/esm/transform/helpers/loadWywOptions.js.map +1 -1
  81. package/esm/transform/helpers/withDefaultServices.js +13 -22
  82. package/esm/transform/helpers/withDefaultServices.js.map +1 -1
  83. package/esm/transform/isStaticallyEvaluatableModule.js +140 -152
  84. package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -1
  85. package/esm/transform/oxcBarrelManifest.js +349 -0
  86. package/esm/transform/oxcBarrelManifest.js.map +1 -0
  87. package/esm/transform/rootLog.js +3 -3
  88. package/esm/transform/rootLog.js.map +1 -1
  89. package/esm/transform/syntax.js +2 -0
  90. package/esm/transform/syntax.js.map +1 -0
  91. package/esm/transform/types.js +2 -2
  92. package/esm/transform/types.js.map +1 -1
  93. package/esm/transform.js +123 -147
  94. package/esm/transform.js.map +1 -1
  95. package/esm/types.js +4 -1
  96. package/esm/types.js.map +1 -1
  97. package/esm/utils/EventEmitter.js +46 -48
  98. package/esm/utils/EventEmitter.js.map +1 -1
  99. package/esm/utils/ShakerMetadata.js +2 -2
  100. package/esm/utils/ShakerMetadata.js.map +1 -1
  101. package/esm/utils/TransformDiagnostics.js +9 -9
  102. package/esm/utils/TransformDiagnostics.js.map +1 -1
  103. package/esm/utils/TransformMetadata.js +24 -26
  104. package/esm/utils/TransformMetadata.js.map +1 -1
  105. package/esm/utils/applyOxcProcessors.js +1217 -0
  106. package/esm/utils/applyOxcProcessors.js.map +1 -0
  107. package/esm/utils/collectOxcExportsAndImports.js +934 -0
  108. package/esm/utils/collectOxcExportsAndImports.js.map +1 -0
  109. package/esm/utils/collectOxcRuntime.js +220 -0
  110. package/esm/utils/collectOxcRuntime.js.map +1 -0
  111. package/esm/utils/collectOxcTemplateDependencies.js +1398 -0
  112. package/esm/utils/collectOxcTemplateDependencies.js.map +1 -0
  113. package/esm/utils/dispose-polyfill.js +3 -4
  114. package/esm/utils/dispose-polyfill.js.map +1 -1
  115. package/esm/utils/getFileIdx.js +6 -6
  116. package/esm/utils/getFileIdx.js.map +1 -1
  117. package/esm/utils/getPluginKey.js +12 -12
  118. package/esm/utils/getPluginKey.js.map +1 -1
  119. package/esm/utils/getVisitorKeys.js +9 -3
  120. package/esm/utils/getVisitorKeys.js.map +1 -1
  121. package/esm/utils/hasCachedWywPrevalExport.js +23 -0
  122. package/esm/utils/hasCachedWywPrevalExport.js.map +1 -0
  123. package/esm/utils/hasWywPreval.js +5 -5
  124. package/esm/utils/hasWywPreval.js.map +1 -1
  125. package/esm/utils/importOverrides.js +75 -90
  126. package/esm/utils/importOverrides.js.map +1 -1
  127. package/esm/utils/isNode.js +2 -2
  128. package/esm/utils/isNode.js.map +1 -1
  129. package/esm/utils/isNotNull.js +2 -2
  130. package/esm/utils/isNotNull.js.map +1 -1
  131. package/esm/utils/isSerializable.js +11 -11
  132. package/esm/utils/isSerializable.js.map +1 -1
  133. package/esm/utils/oxcAstService.js +121 -0
  134. package/esm/utils/oxcAstService.js.map +1 -0
  135. package/esm/utils/oxcEmit.js +447 -0
  136. package/esm/utils/oxcEmit.js.map +1 -0
  137. package/esm/utils/oxcPreevalStage.js +97 -0
  138. package/esm/utils/oxcPreevalStage.js.map +1 -0
  139. package/esm/utils/oxcPreevalTransforms.js +1054 -0
  140. package/esm/utils/oxcPreevalTransforms.js.map +1 -0
  141. package/esm/utils/oxcShaker.js +662 -0
  142. package/esm/utils/oxcShaker.js.map +1 -0
  143. package/esm/utils/parseOxc.js +37 -0
  144. package/esm/utils/parseOxc.js.map +1 -0
  145. package/esm/utils/parseRequest.js +27 -27
  146. package/esm/utils/parseRequest.js.map +1 -1
  147. package/esm/utils/peek.js +1 -1
  148. package/esm/utils/peek.js.map +1 -1
  149. package/esm/utils/processorLookup.js +125 -0
  150. package/esm/utils/processorLookup.js.map +1 -0
  151. package/esm/utils/resolveWithConditions.js +99 -0
  152. package/esm/utils/resolveWithConditions.js.map +1 -0
  153. package/esm/vm/createVmContext.js +140 -141
  154. package/esm/vm/createVmContext.js.map +1 -1
  155. package/esm/vm/process.js +11 -13
  156. package/esm/vm/process.js.map +1 -1
  157. package/package.json +18 -26
  158. package/types/cache.d.ts +17 -8
  159. package/types/cache.js +237 -95
  160. package/types/debug/fileReporter.js +22 -22
  161. package/types/eval/broker.d.ts +88 -0
  162. package/types/eval/broker.js +2262 -0
  163. package/types/eval/lru.d.ts +10 -0
  164. package/types/eval/lru.js +36 -0
  165. package/types/eval/prepareModuleOnDemand.d.ts +7 -0
  166. package/types/eval/prepareModuleOnDemand.js +24 -0
  167. package/types/eval/protocol.d.ts +97 -0
  168. package/types/eval/protocol.js +1 -0
  169. package/types/eval/resolverStrategy.d.ts +13 -0
  170. package/types/eval/resolverStrategy.js +46 -0
  171. package/types/eval/serialize.d.ts +78 -0
  172. package/types/eval/serialize.js +357 -0
  173. package/types/eval/writeQueue.d.ts +13 -0
  174. package/types/eval/writeQueue.js +80 -0
  175. package/types/evaluators/index.d.ts +2 -2
  176. package/types/evaluators/index.js +6 -9
  177. package/types/index.d.ts +3 -6
  178. package/types/index.js +24 -82
  179. package/types/module.d.ts +35 -7
  180. package/types/module.js +535 -163
  181. package/types/shaker.d.ts +2 -10
  182. package/types/shaker.js +10 -100
  183. package/types/transform/BaseEntrypoint.js +6 -11
  184. package/types/transform/Entrypoint.d.ts +15 -15
  185. package/types/transform/Entrypoint.helpers.d.ts +2 -5
  186. package/types/transform/Entrypoint.helpers.js +43 -203
  187. package/types/transform/Entrypoint.js +130 -53
  188. package/types/transform/Entrypoint.types.d.ts +28 -6
  189. package/types/transform/Entrypoint.types.js +1 -2
  190. package/types/transform/EvaluatedEntrypoint.d.ts +13 -2
  191. package/types/transform/EvaluatedEntrypoint.js +7 -6
  192. package/types/transform/actions/AbortError.js +2 -7
  193. package/types/transform/actions/BaseAction.js +4 -8
  194. package/types/transform/actions/UnprocessedEntrypointError.js +2 -7
  195. package/types/transform/actions/actionRunner.js +8 -12
  196. package/types/transform/actions/types.d.ts +2 -2
  197. package/types/transform/actions/types.js +1 -2
  198. package/types/transform/{barrelManifest.d.ts → barrelManifest.types.d.ts} +0 -2
  199. package/types/transform/barrelManifest.types.js +1 -0
  200. package/types/transform/generators/baseProcessingHandlers.d.ts +4 -5
  201. package/types/transform/generators/baseProcessingHandlers.js +10 -14
  202. package/types/transform/generators/collect.js +13 -39
  203. package/types/transform/generators/createStylisPreprocessor.js +19 -60
  204. package/types/transform/generators/evalFile.d.ts +2 -2
  205. package/types/transform/generators/evalFile.js +26 -28
  206. package/types/transform/generators/extract.js +5 -8
  207. package/types/transform/generators/getExports.js +23 -30
  208. package/types/transform/generators/index.d.ts +2 -2
  209. package/types/transform/generators/index.js +11 -14
  210. package/types/transform/generators/processEntrypoint.d.ts +2 -2
  211. package/types/transform/generators/processEntrypoint.js +60 -26
  212. package/types/transform/generators/processImports.d.ts +0 -3
  213. package/types/transform/generators/processImports.js +60 -20
  214. package/types/transform/generators/resolveImports.js +18 -22
  215. package/types/transform/generators/resolveStaticOxcValues.d.ts +2 -0
  216. package/types/transform/generators/resolveStaticOxcValues.js +3235 -0
  217. package/types/transform/generators/{rewriteBarrelImports.d.ts → rewriteOxcBarrelImports.d.ts} +2 -3
  218. package/types/transform/generators/{rewriteBarrelImports.js → rewriteOxcBarrelImports.js} +282 -225
  219. package/types/transform/generators/transform.d.ts +3 -7
  220. package/types/transform/generators/transform.js +203 -199
  221. package/types/transform/generators/workflow.js +62 -45
  222. package/types/transform/helpers/loadWywOptions.js +94 -20
  223. package/types/transform/helpers/withDefaultServices.d.ts +1 -1
  224. package/types/transform/helpers/withDefaultServices.js +6 -44
  225. package/types/transform/isStaticallyEvaluatableModule.d.ts +1 -2
  226. package/types/transform/isStaticallyEvaluatableModule.js +125 -126
  227. package/types/transform/oxcBarrelManifest.d.ts +2 -0
  228. package/types/transform/{barrelManifest.js → oxcBarrelManifest.js} +156 -97
  229. package/types/transform/rootLog.js +2 -5
  230. package/types/transform/syntax.d.ts +38 -0
  231. package/types/transform/syntax.js +1 -0
  232. package/types/transform/types.d.ts +9 -6
  233. package/types/transform/types.js +1 -4
  234. package/types/transform.d.ts +2 -2
  235. package/types/transform.js +88 -101
  236. package/types/types.d.ts +0 -23
  237. package/types/types.js +1 -2
  238. package/types/utils/EventEmitter.js +3 -9
  239. package/types/utils/ShakerMetadata.js +1 -5
  240. package/types/utils/TransformDiagnostics.js +3 -7
  241. package/types/utils/TransformMetadata.js +8 -16
  242. package/types/utils/applyOxcProcessors.d.ts +16 -0
  243. package/types/utils/applyOxcProcessors.js +1391 -0
  244. package/types/utils/collectOxcExportsAndImports.d.ts +35 -0
  245. package/types/utils/collectOxcExportsAndImports.js +957 -0
  246. package/types/utils/collectOxcRuntime.d.ts +14 -0
  247. package/types/utils/collectOxcRuntime.js +250 -0
  248. package/types/utils/collectOxcTemplateDependencies.d.ts +38 -0
  249. package/types/utils/collectOxcTemplateDependencies.js +1580 -0
  250. package/types/utils/getFileIdx.js +1 -4
  251. package/types/utils/getPluginKey.d.ts +5 -2
  252. package/types/utils/getPluginKey.js +2 -6
  253. package/types/utils/getVisitorKeys.d.ts +4 -4
  254. package/types/utils/getVisitorKeys.js +9 -6
  255. package/types/utils/hasCachedWywPrevalExport.d.ts +14 -0
  256. package/types/utils/hasCachedWywPrevalExport.js +30 -0
  257. package/types/utils/hasWywPreval.js +1 -4
  258. package/types/utils/importOverrides.js +17 -27
  259. package/types/utils/isNode.d.ts +2 -2
  260. package/types/utils/isNode.js +2 -6
  261. package/types/utils/isNotNull.js +1 -4
  262. package/types/utils/isSerializable.js +3 -6
  263. package/types/utils/oxcAstService.d.ts +11 -0
  264. package/types/utils/oxcAstService.js +79 -0
  265. package/types/utils/oxcEmit.d.ts +19 -0
  266. package/types/utils/oxcEmit.js +506 -0
  267. package/types/utils/oxcPreevalStage.d.ts +20 -0
  268. package/types/utils/oxcPreevalStage.js +102 -0
  269. package/types/utils/oxcPreevalTransforms.d.ts +13 -0
  270. package/types/utils/oxcPreevalTransforms.js +1179 -0
  271. package/types/utils/oxcShaker.d.ts +13 -0
  272. package/types/utils/oxcShaker.js +751 -0
  273. package/types/utils/parseOxc.d.ts +11 -0
  274. package/types/utils/parseOxc.js +38 -0
  275. package/types/utils/parseRequest.js +2 -7
  276. package/types/utils/peek.js +1 -5
  277. package/types/utils/processorLookup.d.ts +8 -0
  278. package/types/utils/processorLookup.js +135 -0
  279. package/types/utils/resolveWithConditions.d.ts +12 -0
  280. package/types/utils/resolveWithConditions.js +103 -0
  281. package/types/vm/createVmContext.d.ts +2 -2
  282. package/types/vm/createVmContext.js +25 -62
  283. package/types/vm/process.js +20 -26
  284. package/esm/babel.js +0 -2
  285. package/esm/babel.js.map +0 -1
  286. package/esm/options/buildOptions.js +0 -168
  287. package/esm/options/buildOptions.js.map +0 -1
  288. package/esm/options/buildOptions.test.js +0 -138
  289. package/esm/options/buildOptions.test.js.map +0 -1
  290. package/esm/options/loadBabelOptions.js +0 -24
  291. package/esm/options/loadBabelOptions.js.map +0 -1
  292. package/esm/plugins/babel-transform.js +0 -53
  293. package/esm/plugins/babel-transform.js.map +0 -1
  294. package/esm/plugins/collector.js +0 -60
  295. package/esm/plugins/collector.js.map +0 -1
  296. package/esm/plugins/dynamic-import.js +0 -56
  297. package/esm/plugins/dynamic-import.js.map +0 -1
  298. package/esm/plugins/preeval.js +0 -73
  299. package/esm/plugins/preeval.js.map +0 -1
  300. package/esm/plugins/shaker.js +0 -680
  301. package/esm/plugins/shaker.js.map +0 -1
  302. package/esm/transform/barrelManifest.js +0 -291
  303. package/esm/transform/barrelManifest.js.map +0 -1
  304. package/esm/transform/generators/explodeReexports.js +0 -64
  305. package/esm/transform/generators/explodeReexports.js.map +0 -1
  306. package/esm/transform/generators/rewriteBarrelImports.js +0 -733
  307. package/esm/transform/generators/rewriteBarrelImports.js.map +0 -1
  308. package/esm/utils/addIdentifierToWywPreval.js +0 -68
  309. package/esm/utils/addIdentifierToWywPreval.js.map +0 -1
  310. package/esm/utils/collectExportsAndImports.js +0 -1157
  311. package/esm/utils/collectExportsAndImports.js.map +0 -1
  312. package/esm/utils/collectTemplateDependencies.js +0 -228
  313. package/esm/utils/collectTemplateDependencies.js.map +0 -1
  314. package/esm/utils/createId.js +0 -6
  315. package/esm/utils/createId.js.map +0 -1
  316. package/esm/utils/findIdentifiers.js +0 -62
  317. package/esm/utils/findIdentifiers.js.map +0 -1
  318. package/esm/utils/getConstantStringValue.js +0 -58
  319. package/esm/utils/getConstantStringValue.js.map +0 -1
  320. package/esm/utils/getMemberExpressionPropertyName.js +0 -11
  321. package/esm/utils/getMemberExpressionPropertyName.js.map +0 -1
  322. package/esm/utils/getScope.js +0 -6
  323. package/esm/utils/getScope.js.map +0 -1
  324. package/esm/utils/getSource.js +0 -15
  325. package/esm/utils/getSource.js.map +0 -1
  326. package/esm/utils/getTagProcessor.js +0 -404
  327. package/esm/utils/getTagProcessor.js.map +0 -1
  328. package/esm/utils/isExports.js +0 -22
  329. package/esm/utils/isExports.js.map +0 -1
  330. package/esm/utils/isGlobal.js +0 -6
  331. package/esm/utils/isGlobal.js.map +0 -1
  332. package/esm/utils/isNodePath.js +0 -4
  333. package/esm/utils/isNodePath.js.map +0 -1
  334. package/esm/utils/isRemoved.js +0 -46
  335. package/esm/utils/isRemoved.js.map +0 -1
  336. package/esm/utils/isRequire.js +0 -13
  337. package/esm/utils/isRequire.js.map +0 -1
  338. package/esm/utils/isTypedNode.js +0 -6
  339. package/esm/utils/isTypedNode.js.map +0 -1
  340. package/esm/utils/isUnnecessaryReactCall.js +0 -72
  341. package/esm/utils/isUnnecessaryReactCall.js.map +0 -1
  342. package/esm/utils/removeDangerousCode.js +0 -276
  343. package/esm/utils/removeDangerousCode.js.map +0 -1
  344. package/esm/utils/replaceImportMetaEnv.js +0 -44
  345. package/esm/utils/replaceImportMetaEnv.js.map +0 -1
  346. package/esm/utils/scopeHelpers.js +0 -527
  347. package/esm/utils/scopeHelpers.js.map +0 -1
  348. package/esm/utils/traversalCache.js +0 -23
  349. package/esm/utils/traversalCache.js.map +0 -1
  350. package/esm/utils/unwrapExpression.js +0 -18
  351. package/esm/utils/unwrapExpression.js.map +0 -1
  352. package/esm/utils/unwrapSequence.js +0 -14
  353. package/esm/utils/unwrapSequence.js.map +0 -1
  354. package/esm/utils/valueToLiteral.js +0 -59
  355. package/esm/utils/valueToLiteral.js.map +0 -1
  356. package/esm/utils/visitors/JSXElementsRemover.js +0 -51
  357. package/esm/utils/visitors/JSXElementsRemover.js.map +0 -1
  358. package/lib/babel.js +0 -2
  359. package/lib/babel.js.map +0 -1
  360. package/lib/cache.js +0 -308
  361. package/lib/cache.js.map +0 -1
  362. package/lib/debug/fileReporter.js +0 -153
  363. package/lib/debug/fileReporter.js.map +0 -1
  364. package/lib/evaluators/index.js +0 -20
  365. package/lib/evaluators/index.js.map +0 -1
  366. package/lib/index.js +0 -286
  367. package/lib/index.js.map +0 -1
  368. package/lib/module.js +0 -552
  369. package/lib/module.js.map +0 -1
  370. package/lib/options/buildOptions.js +0 -176
  371. package/lib/options/buildOptions.js.map +0 -1
  372. package/lib/options/buildOptions.test.js +0 -141
  373. package/lib/options/buildOptions.test.js.map +0 -1
  374. package/lib/options/loadBabelOptions.js +0 -31
  375. package/lib/options/loadBabelOptions.js.map +0 -1
  376. package/lib/plugins/babel-transform.js +0 -60
  377. package/lib/plugins/babel-transform.js.map +0 -1
  378. package/lib/plugins/collector.js +0 -70
  379. package/lib/plugins/collector.js.map +0 -1
  380. package/lib/plugins/dynamic-import.js +0 -61
  381. package/lib/plugins/dynamic-import.js.map +0 -1
  382. package/lib/plugins/preeval.js +0 -81
  383. package/lib/plugins/preeval.js.map +0 -1
  384. package/lib/plugins/shaker.js +0 -691
  385. package/lib/plugins/shaker.js.map +0 -1
  386. package/lib/shaker.js +0 -95
  387. package/lib/shaker.js.map +0 -1
  388. package/lib/transform/BaseEntrypoint.js +0 -179
  389. package/lib/transform/BaseEntrypoint.js.map +0 -1
  390. package/lib/transform/Entrypoint.helpers.js +0 -279
  391. package/lib/transform/Entrypoint.helpers.js.map +0 -1
  392. package/lib/transform/Entrypoint.js +0 -289
  393. package/lib/transform/Entrypoint.js.map +0 -1
  394. package/lib/transform/Entrypoint.types.js +0 -2
  395. package/lib/transform/Entrypoint.types.js.map +0 -1
  396. package/lib/transform/EvaluatedEntrypoint.js +0 -13
  397. package/lib/transform/EvaluatedEntrypoint.js.map +0 -1
  398. package/lib/transform/actions/AbortError.js +0 -16
  399. package/lib/transform/actions/AbortError.js.map +0 -1
  400. package/lib/transform/actions/BaseAction.js +0 -150
  401. package/lib/transform/actions/BaseAction.js.map +0 -1
  402. package/lib/transform/actions/UnprocessedEntrypointError.js +0 -16
  403. package/lib/transform/actions/UnprocessedEntrypointError.js.map +0 -1
  404. package/lib/transform/actions/actionRunner.js +0 -82
  405. package/lib/transform/actions/actionRunner.js.map +0 -1
  406. package/lib/transform/actions/types.js +0 -2
  407. package/lib/transform/actions/types.js.map +0 -1
  408. package/lib/transform/barrelManifest.js +0 -300
  409. package/lib/transform/barrelManifest.js.map +0 -1
  410. package/lib/transform/generators/baseProcessingHandlers.js +0 -27
  411. package/lib/transform/generators/baseProcessingHandlers.js.map +0 -1
  412. package/lib/transform/generators/collect.js +0 -66
  413. package/lib/transform/generators/collect.js.map +0 -1
  414. package/lib/transform/generators/createStylisPreprocessor.js +0 -372
  415. package/lib/transform/generators/createStylisPreprocessor.js.map +0 -1
  416. package/lib/transform/generators/evalFile.js +0 -57
  417. package/lib/transform/generators/evalFile.js.map +0 -1
  418. package/lib/transform/generators/explodeReexports.js +0 -71
  419. package/lib/transform/generators/explodeReexports.js.map +0 -1
  420. package/lib/transform/generators/extract.js +0 -102
  421. package/lib/transform/generators/extract.js.map +0 -1
  422. package/lib/transform/generators/getExports.js +0 -85
  423. package/lib/transform/generators/getExports.js.map +0 -1
  424. package/lib/transform/generators/index.js +0 -19
  425. package/lib/transform/generators/index.js.map +0 -1
  426. package/lib/transform/generators/processEntrypoint.js +0 -76
  427. package/lib/transform/generators/processEntrypoint.js.map +0 -1
  428. package/lib/transform/generators/processImports.js +0 -82
  429. package/lib/transform/generators/processImports.js.map +0 -1
  430. package/lib/transform/generators/resolveImports.js +0 -221
  431. package/lib/transform/generators/resolveImports.js.map +0 -1
  432. package/lib/transform/generators/rewriteBarrelImports.js +0 -743
  433. package/lib/transform/generators/rewriteBarrelImports.js.map +0 -1
  434. package/lib/transform/generators/transform.js +0 -272
  435. package/lib/transform/generators/transform.js.map +0 -1
  436. package/lib/transform/generators/workflow.js +0 -100
  437. package/lib/transform/generators/workflow.js.map +0 -1
  438. package/lib/transform/helpers/loadWywOptions.js +0 -88
  439. package/lib/transform/helpers/loadWywOptions.js.map +0 -1
  440. package/lib/transform/helpers/withDefaultServices.js +0 -31
  441. package/lib/transform/helpers/withDefaultServices.js.map +0 -1
  442. package/lib/transform/isStaticallyEvaluatableModule.js +0 -159
  443. package/lib/transform/isStaticallyEvaluatableModule.js.map +0 -1
  444. package/lib/transform/rootLog.js +0 -9
  445. package/lib/transform/rootLog.js.map +0 -1
  446. package/lib/transform/types.js +0 -8
  447. package/lib/transform/types.js.map +0 -1
  448. package/lib/transform.js +0 -160
  449. package/lib/transform.js.map +0 -1
  450. package/lib/types.js +0 -2
  451. package/lib/types.js.map +0 -1
  452. package/lib/utils/EventEmitter.js +0 -61
  453. package/lib/utils/EventEmitter.js.map +0 -1
  454. package/lib/utils/ShakerMetadata.js +0 -9
  455. package/lib/utils/ShakerMetadata.js.map +0 -1
  456. package/lib/utils/TransformDiagnostics.js +0 -20
  457. package/lib/utils/TransformDiagnostics.js.map +0 -1
  458. package/lib/utils/TransformMetadata.js +0 -45
  459. package/lib/utils/TransformMetadata.js.map +0 -1
  460. package/lib/utils/addIdentifierToWywPreval.js +0 -75
  461. package/lib/utils/addIdentifierToWywPreval.js.map +0 -1
  462. package/lib/utils/collectExportsAndImports.js +0 -1173
  463. package/lib/utils/collectExportsAndImports.js.map +0 -1
  464. package/lib/utils/collectTemplateDependencies.js +0 -242
  465. package/lib/utils/collectTemplateDependencies.js.map +0 -1
  466. package/lib/utils/createId.js +0 -13
  467. package/lib/utils/createId.js.map +0 -1
  468. package/lib/utils/dispose-polyfill.js +0 -9
  469. package/lib/utils/dispose-polyfill.js.map +0 -1
  470. package/lib/utils/findIdentifiers.js +0 -73
  471. package/lib/utils/findIdentifiers.js.map +0 -1
  472. package/lib/utils/getConstantStringValue.js +0 -66
  473. package/lib/utils/getConstantStringValue.js.map +0 -1
  474. package/lib/utils/getFileIdx.js +0 -16
  475. package/lib/utils/getFileIdx.js.map +0 -1
  476. package/lib/utils/getMemberExpressionPropertyName.js +0 -18
  477. package/lib/utils/getMemberExpressionPropertyName.js.map +0 -1
  478. package/lib/utils/getPluginKey.js +0 -21
  479. package/lib/utils/getPluginKey.js.map +0 -1
  480. package/lib/utils/getScope.js +0 -12
  481. package/lib/utils/getScope.js.map +0 -1
  482. package/lib/utils/getSource.js +0 -24
  483. package/lib/utils/getSource.js.map +0 -1
  484. package/lib/utils/getTagProcessor.js +0 -424
  485. package/lib/utils/getTagProcessor.js.map +0 -1
  486. package/lib/utils/getVisitorKeys.js +0 -11
  487. package/lib/utils/getVisitorKeys.js.map +0 -1
  488. package/lib/utils/hasWywPreval.js +0 -13
  489. package/lib/utils/hasWywPreval.js.map +0 -1
  490. package/lib/utils/importOverrides.js +0 -119
  491. package/lib/utils/importOverrides.js.map +0 -1
  492. package/lib/utils/isExports.js +0 -27
  493. package/lib/utils/isExports.js.map +0 -1
  494. package/lib/utils/isGlobal.js +0 -13
  495. package/lib/utils/isGlobal.js.map +0 -1
  496. package/lib/utils/isNode.js +0 -9
  497. package/lib/utils/isNode.js.map +0 -1
  498. package/lib/utils/isNodePath.js +0 -10
  499. package/lib/utils/isNodePath.js.map +0 -1
  500. package/lib/utils/isNotNull.js +0 -10
  501. package/lib/utils/isNotNull.js.map +0 -1
  502. package/lib/utils/isRemoved.js +0 -52
  503. package/lib/utils/isRemoved.js.map +0 -1
  504. package/lib/utils/isRequire.js +0 -18
  505. package/lib/utils/isRequire.js.map +0 -1
  506. package/lib/utils/isSerializable.js +0 -19
  507. package/lib/utils/isSerializable.js.map +0 -1
  508. package/lib/utils/isTypedNode.js +0 -13
  509. package/lib/utils/isTypedNode.js.map +0 -1
  510. package/lib/utils/isUnnecessaryReactCall.js +0 -81
  511. package/lib/utils/isUnnecessaryReactCall.js.map +0 -1
  512. package/lib/utils/parseRequest.js +0 -37
  513. package/lib/utils/parseRequest.js.map +0 -1
  514. package/lib/utils/peek.js +0 -9
  515. package/lib/utils/peek.js.map +0 -1
  516. package/lib/utils/removeDangerousCode.js +0 -284
  517. package/lib/utils/removeDangerousCode.js.map +0 -1
  518. package/lib/utils/replaceImportMetaEnv.js +0 -50
  519. package/lib/utils/replaceImportMetaEnv.js.map +0 -1
  520. package/lib/utils/scopeHelpers.js +0 -557
  521. package/lib/utils/scopeHelpers.js.map +0 -1
  522. package/lib/utils/traversalCache.js +0 -31
  523. package/lib/utils/traversalCache.js.map +0 -1
  524. package/lib/utils/unwrapExpression.js +0 -25
  525. package/lib/utils/unwrapExpression.js.map +0 -1
  526. package/lib/utils/unwrapSequence.js +0 -20
  527. package/lib/utils/unwrapSequence.js.map +0 -1
  528. package/lib/utils/valueToLiteral.js +0 -65
  529. package/lib/utils/valueToLiteral.js.map +0 -1
  530. package/lib/utils/visitors/JSXElementsRemover.js +0 -57
  531. package/lib/utils/visitors/JSXElementsRemover.js.map +0 -1
  532. package/lib/vm/createVmContext.js +0 -166
  533. package/lib/vm/createVmContext.js.map +0 -1
  534. package/lib/vm/process.js +0 -38
  535. package/lib/vm/process.js.map +0 -1
  536. package/types/babel.d.ts +0 -2
  537. package/types/babel.js +0 -2
  538. package/types/options/buildOptions.d.ts +0 -6
  539. package/types/options/buildOptions.js +0 -178
  540. package/types/options/loadBabelOptions.d.ts +0 -3
  541. package/types/options/loadBabelOptions.js +0 -26
  542. package/types/plugins/babel-transform.d.ts +0 -4
  543. package/types/plugins/babel-transform.js +0 -49
  544. package/types/plugins/collector.d.ts +0 -23
  545. package/types/plugins/collector.js +0 -62
  546. package/types/plugins/dynamic-import.d.ts +0 -6
  547. package/types/plugins/dynamic-import.js +0 -60
  548. package/types/plugins/preeval.d.ts +0 -16
  549. package/types/plugins/preeval.js +0 -69
  550. package/types/plugins/shaker.d.ts +0 -14
  551. package/types/plugins/shaker.js +0 -724
  552. package/types/transform/generators/explodeReexports.d.ts +0 -7
  553. package/types/transform/generators/explodeReexports.js +0 -65
  554. package/types/utils/addIdentifierToWywPreval.d.ts +0 -4
  555. package/types/utils/addIdentifierToWywPreval.js +0 -74
  556. package/types/utils/collectExportsAndImports.d.ts +0 -31
  557. package/types/utils/collectExportsAndImports.js +0 -1147
  558. package/types/utils/collectTemplateDependencies.d.ts +0 -17
  559. package/types/utils/collectTemplateDependencies.js +0 -220
  560. package/types/utils/createId.d.ts +0 -2
  561. package/types/utils/createId.js +0 -9
  562. package/types/utils/findIdentifiers.d.ts +0 -6
  563. package/types/utils/findIdentifiers.js +0 -67
  564. package/types/utils/getConstantStringValue.d.ts +0 -2
  565. package/types/utils/getConstantStringValue.js +0 -94
  566. package/types/utils/getMemberExpressionPropertyName.d.ts +0 -2
  567. package/types/utils/getMemberExpressionPropertyName.js +0 -46
  568. package/types/utils/getScope.d.ts +0 -2
  569. package/types/utils/getScope.js +0 -10
  570. package/types/utils/getSource.d.ts +0 -2
  571. package/types/utils/getSource.js +0 -22
  572. package/types/utils/getTagProcessor.d.ts +0 -13
  573. package/types/utils/getTagProcessor.js +0 -411
  574. package/types/utils/isExports.d.ts +0 -6
  575. package/types/utils/isExports.js +0 -19
  576. package/types/utils/isGlobal.d.ts +0 -2
  577. package/types/utils/isGlobal.js +0 -9
  578. package/types/utils/isNodePath.d.ts +0 -3
  579. package/types/utils/isNodePath.js +0 -6
  580. package/types/utils/isRemoved.d.ts +0 -5
  581. package/types/utils/isRemoved.js +0 -41
  582. package/types/utils/isRequire.d.ts +0 -6
  583. package/types/utils/isRequire.js +0 -14
  584. package/types/utils/isTypedNode.d.ts +0 -5
  585. package/types/utils/isTypedNode.js +0 -9
  586. package/types/utils/isUnnecessaryReactCall.d.ts +0 -3
  587. package/types/utils/isUnnecessaryReactCall.js +0 -75
  588. package/types/utils/removeDangerousCode.d.ts +0 -4
  589. package/types/utils/removeDangerousCode.js +0 -326
  590. package/types/utils/replaceImportMetaEnv.d.ts +0 -3
  591. package/types/utils/replaceImportMetaEnv.js +0 -39
  592. package/types/utils/scopeHelpers.d.ts +0 -12
  593. package/types/utils/scopeHelpers.js +0 -580
  594. package/types/utils/traversalCache.d.ts +0 -4
  595. package/types/utils/traversalCache.js +0 -27
  596. package/types/utils/unwrapExpression.d.ts +0 -2
  597. package/types/utils/unwrapExpression.js +0 -57
  598. package/types/utils/unwrapSequence.d.ts +0 -8
  599. package/types/utils/unwrapSequence.js +0 -16
  600. package/types/utils/valueToLiteral.d.ts +0 -3
  601. package/types/utils/valueToLiteral.js +0 -63
  602. package/types/utils/visitors/JSXElementsRemover.d.ts +0 -3
  603. package/types/utils/visitors/JSXElementsRemover.js +0 -51
@@ -0,0 +1,10 @@
1
+ export declare class LruCache<K, V> {
2
+ private readonly maxSize;
3
+ private readonly map;
4
+ constructor(maxSize: number);
5
+ get(key: K): V | undefined;
6
+ set(key: K, value: V): void;
7
+ has(key: K): boolean;
8
+ delete(key: K): void;
9
+ clear(): void;
10
+ }
@@ -0,0 +1,36 @@
1
+ export class LruCache {
2
+ maxSize;
3
+ map = new Map();
4
+ constructor(maxSize) {
5
+ this.maxSize = Math.max(1, maxSize);
6
+ }
7
+ get(key) {
8
+ const value = this.map.get(key);
9
+ if (value === undefined)
10
+ return undefined;
11
+ this.map.delete(key);
12
+ this.map.set(key, value);
13
+ return value;
14
+ }
15
+ set(key, value) {
16
+ if (this.map.has(key)) {
17
+ this.map.delete(key);
18
+ }
19
+ this.map.set(key, value);
20
+ if (this.map.size > this.maxSize) {
21
+ const firstKey = this.map.keys().next().value;
22
+ if (firstKey !== undefined) {
23
+ this.map.delete(firstKey);
24
+ }
25
+ }
26
+ }
27
+ has(key) {
28
+ return this.map.has(key);
29
+ }
30
+ delete(key) {
31
+ this.map.delete(key);
32
+ }
33
+ clear() {
34
+ this.map.clear();
35
+ }
36
+ }
@@ -0,0 +1,7 @@
1
+ import type { Services } from '../transform/types';
2
+ export type PreparedModule = {
3
+ code: string;
4
+ imports: Map<string, string[]> | null;
5
+ only: string[];
6
+ };
7
+ export declare function prepareModuleOnDemand(services: Services, id: string, only: string[]): PreparedModule;
@@ -0,0 +1,24 @@
1
+ import { oxcShaker } from '../shaker';
2
+ import { Entrypoint } from '../transform/Entrypoint';
3
+ import { prepareCodeForEvalRuntime } from '../transform/generators/transform';
4
+ export function prepareModuleOnDemand(services, id, only) {
5
+ const entrypoint = Entrypoint.createRoot(services, id, only, undefined, {
6
+ mergeCachedOnly: !only.includes('__wywPreval'),
7
+ });
8
+ if (entrypoint.ignored) {
9
+ return {
10
+ code: entrypoint.loadedAndParsed.code ?? '',
11
+ imports: null,
12
+ only: entrypoint.only,
13
+ };
14
+ }
15
+ const ast = entrypoint.loadedAndParsed.evaluator === oxcShaker
16
+ ? null
17
+ : entrypoint.loadedAndParsed.ast;
18
+ const [code, imports] = prepareCodeForEvalRuntime(services, entrypoint, ast);
19
+ return {
20
+ code,
21
+ imports,
22
+ only: entrypoint.only,
23
+ };
24
+ }
@@ -0,0 +1,97 @@
1
+ import type { EvalResolverKind, EvalWarning, FeatureFlags, ImportOverrides } from '@wyw-in-js/shared';
2
+ import type { SerializedError, SerializedValue } from './serialize';
3
+ export type EvalRunnerInitPayload = {
4
+ evalOptions: {
5
+ mode: 'strict' | 'loose';
6
+ require: 'warn-and-run' | 'error' | 'off';
7
+ globals: Record<string, unknown>;
8
+ importOverrides?: ImportOverrides;
9
+ root?: string;
10
+ extensions?: string[];
11
+ };
12
+ features: FeatureFlags<'happyDOM'>;
13
+ entrypoint: string;
14
+ reuseModules?: boolean;
15
+ };
16
+ export type EvalRequest = {
17
+ id: string;
18
+ };
19
+ export type EvalResultPayload = {
20
+ values: Record<string, SerializedValue> | null;
21
+ modules?: Record<string, Record<string, SerializedValue>>;
22
+ };
23
+ export type ResolveRequestPayload = {
24
+ specifier: string;
25
+ importerId: string;
26
+ kind: EvalResolverKind;
27
+ };
28
+ export type ResolveResultPayload = {
29
+ resolvedId: string | null;
30
+ external?: boolean;
31
+ error?: SerializedError;
32
+ };
33
+ export type LoadRequestPayload = {
34
+ id: string;
35
+ importerId?: string | null;
36
+ request?: string | null;
37
+ };
38
+ export type LoadResultPayload = {
39
+ id: string;
40
+ code?: string;
41
+ codeChunk?: string;
42
+ chunkIndex?: number;
43
+ chunkCount?: number;
44
+ map?: unknown;
45
+ hash?: string;
46
+ only?: string[];
47
+ exports?: Record<string, SerializedValue>;
48
+ error?: SerializedError;
49
+ };
50
+ export type InitMessage = {
51
+ type: 'INIT';
52
+ id: string;
53
+ payload: EvalRunnerInitPayload;
54
+ };
55
+ export type InitAckMessage = {
56
+ type: 'INIT_ACK';
57
+ id: string;
58
+ error?: SerializedError;
59
+ modulesReset?: boolean;
60
+ };
61
+ export type EvalMessage = {
62
+ type: 'EVAL';
63
+ id: string;
64
+ payload: EvalRequest;
65
+ };
66
+ export type EvalResultMessage = {
67
+ type: 'EVAL_RESULT';
68
+ id: string;
69
+ payload: EvalResultPayload;
70
+ error?: SerializedError;
71
+ };
72
+ export type ResolveMessage = {
73
+ type: 'RESOLVE';
74
+ id: string;
75
+ payload: ResolveRequestPayload;
76
+ };
77
+ export type ResolveResultMessage = {
78
+ type: 'RESOLVE_RESULT';
79
+ id: string;
80
+ payload: ResolveResultPayload;
81
+ };
82
+ export type LoadMessage = {
83
+ type: 'LOAD';
84
+ id: string;
85
+ payload: LoadRequestPayload;
86
+ };
87
+ export type LoadResultMessage = {
88
+ type: 'LOAD_RESULT';
89
+ id: string;
90
+ payload: LoadResultPayload;
91
+ };
92
+ export type WarnMessage = {
93
+ type: 'WARN';
94
+ payload: EvalWarning;
95
+ };
96
+ export type RunnerToMainMessage = ResolveMessage | LoadMessage | WarnMessage | InitAckMessage | EvalResultMessage;
97
+ export type MainToRunnerMessage = InitMessage | EvalMessage | ResolveResultMessage | LoadResultMessage;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { EvalResolverMode } from '@wyw-in-js/shared';
2
+ export type HybridResolverRoute = 'bundler' | 'oxc';
3
+ export type HybridResolverReason = 'ambiguous-specifier' | 'bundler-owned-prefix' | 'query-or-hash' | 'safe-relative-specifier';
4
+ export type HybridResolverDecision = {
5
+ reason: HybridResolverReason;
6
+ route: HybridResolverRoute;
7
+ };
8
+ export type HybridResolverClassifierOptions = {
9
+ bundlerOwnedPrefixes?: readonly string[];
10
+ };
11
+ export declare const defaultBundlerOwnedSpecifierPrefixes: readonly ["\0", "/@", "virtual:"];
12
+ export declare const getResolverPrecedence: (mode: EvalResolverMode) => readonly string[];
13
+ export declare const classifyHybridResolverSpecifier: (specifier: string, { bundlerOwnedPrefixes, }?: HybridResolverClassifierOptions) => HybridResolverDecision;
@@ -0,0 +1,46 @@
1
+ export const defaultBundlerOwnedSpecifierPrefixes = [
2
+ '\0',
3
+ '/@',
4
+ 'virtual:',
5
+ ];
6
+ export const getResolverPrecedence = (mode) => {
7
+ if (mode === 'hybrid') {
8
+ return [
9
+ 'customResolver',
10
+ 'safeOxcResolver',
11
+ 'bundlerResolver',
12
+ 'nodeFallback',
13
+ ];
14
+ }
15
+ if (mode === 'bundler') {
16
+ return ['customResolver', 'bundlerResolver', 'nodeFallback'];
17
+ }
18
+ if (mode === 'custom') {
19
+ return ['customResolver'];
20
+ }
21
+ return ['nodeFallback'];
22
+ };
23
+ export const classifyHybridResolverSpecifier = (specifier, { bundlerOwnedPrefixes = defaultBundlerOwnedSpecifierPrefixes, } = {}) => {
24
+ if (bundlerOwnedPrefixes.some((prefix) => specifier.startsWith(prefix))) {
25
+ return {
26
+ reason: 'bundler-owned-prefix',
27
+ route: 'bundler',
28
+ };
29
+ }
30
+ if (!specifier.startsWith('./') && !specifier.startsWith('../')) {
31
+ return {
32
+ reason: 'ambiguous-specifier',
33
+ route: 'bundler',
34
+ };
35
+ }
36
+ if (/[?#]/.test(specifier)) {
37
+ return {
38
+ reason: 'query-or-hash',
39
+ route: 'bundler',
40
+ };
41
+ }
42
+ return {
43
+ reason: 'safe-relative-specifier',
44
+ route: 'oxc',
45
+ };
46
+ };
@@ -0,0 +1,78 @@
1
+ export type SerializedError = {
2
+ message: string;
3
+ name?: string;
4
+ stack?: string;
5
+ cause?: SerializedError;
6
+ };
7
+ export type SerializedValue = {
8
+ kind: 'value';
9
+ value: unknown;
10
+ } | {
11
+ kind: 'null';
12
+ } | {
13
+ kind: 'boolean';
14
+ value: boolean;
15
+ } | {
16
+ kind: 'string';
17
+ value: string;
18
+ } | {
19
+ kind: 'number';
20
+ value: number;
21
+ } | {
22
+ kind: 'function';
23
+ } | {
24
+ kind: 'symbol';
25
+ description: string;
26
+ } | {
27
+ kind: 'error';
28
+ error: SerializedError;
29
+ } | {
30
+ kind: 'undefined';
31
+ } | {
32
+ kind: 'bigint';
33
+ value: string;
34
+ } | {
35
+ kind: 'nan';
36
+ } | {
37
+ kind: 'infinity';
38
+ } | {
39
+ kind: '-infinity';
40
+ } | {
41
+ kind: 'array';
42
+ items: SerializedValue[];
43
+ } | {
44
+ kind: 'object';
45
+ entries: Record<string, SerializedValue>;
46
+ };
47
+ declare const ENCODED_GLOBAL_ENVELOPE_KEY = "__wyw_eval_global";
48
+ declare const ENCODED_GLOBAL_SIGNATURE = "wyw-eval-global";
49
+ declare const ENCODED_GLOBAL_VERSION = 1;
50
+ type EncodedFunctionPayload = {
51
+ signature: typeof ENCODED_GLOBAL_SIGNATURE;
52
+ version: typeof ENCODED_GLOBAL_VERSION;
53
+ kind: 'function';
54
+ source: string;
55
+ };
56
+ type EncodedSymbolPayload = {
57
+ signature: typeof ENCODED_GLOBAL_SIGNATURE;
58
+ version: typeof ENCODED_GLOBAL_VERSION;
59
+ kind: 'symbol';
60
+ description: string;
61
+ };
62
+ type EncodedGlobalPayload = EncodedFunctionPayload | EncodedSymbolPayload;
63
+ export type EncodedGlobal = {
64
+ [ENCODED_GLOBAL_ENVELOPE_KEY]: EncodedGlobalPayload;
65
+ };
66
+ type PathSegment = string | number | symbol;
67
+ type SerializeValueOptions = {
68
+ allowFunctions?: boolean;
69
+ allowSymbols?: boolean;
70
+ path?: PathSegment[];
71
+ rootLabel?: string;
72
+ };
73
+ export declare const serializeValue: (value: unknown, options?: SerializeValueOptions) => SerializedValue;
74
+ export declare const deserializeValue: (value: SerializedValue) => unknown;
75
+ export declare const serializePreval: (values: Record<string, unknown>) => Record<string, SerializedValue>;
76
+ export declare const encodeGlobals: (value: unknown) => unknown;
77
+ export declare const decodeGlobals: (value: unknown) => unknown;
78
+ export {};
@@ -0,0 +1,357 @@
1
+ const ENCODED_GLOBAL_ENVELOPE_KEY = '__wyw_eval_global';
2
+ const ENCODED_GLOBAL_SIGNATURE = 'wyw-eval-global';
3
+ const ENCODED_GLOBAL_VERSION = 1;
4
+ const IDENTIFIER_RE = /^[A-Za-z_$][\w$]*$/u;
5
+ const ARRAY_INDEX_RE = /^(?:0|[1-9]\d*)$/;
6
+ const IPC_SUPPORTED_VALUE_HINT = 'Use importOverrides to mock the import or return plain data: null, booleans, strings, numbers, bigint, undefined, arrays, plain objects, and Error.';
7
+ const isPlainObject = (value) => {
8
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
9
+ return false;
10
+ }
11
+ const prototype = Object.getPrototypeOf(value);
12
+ if (prototype === null || prototype === Object.prototype) {
13
+ return true;
14
+ }
15
+ return Object.getPrototypeOf(prototype) === null;
16
+ };
17
+ const isLikeError = (value) => typeof value === 'object' &&
18
+ value !== null &&
19
+ !isPlainObject(value) &&
20
+ 'message' in value &&
21
+ typeof value.message === 'string' &&
22
+ ('stack' in value || 'name' in value);
23
+ const isCallable = (value) => typeof value === 'function';
24
+ const getBoxedPrimitiveValue = (value) => {
25
+ const tag = Object.prototype.toString.call(value);
26
+ if (tag === '[object String]') {
27
+ return { kind: 'string', value: String(value.valueOf()) };
28
+ }
29
+ if (tag === '[object Number]') {
30
+ return { kind: 'number', value: Number(value.valueOf()) };
31
+ }
32
+ if (tag === '[object Boolean]') {
33
+ return { kind: 'boolean', value: Boolean(value.valueOf()) };
34
+ }
35
+ return null;
36
+ };
37
+ const getObjectTypeName = (value) => {
38
+ const { constructor } = value;
39
+ if (constructor &&
40
+ typeof constructor.name === 'string' &&
41
+ constructor.name.length > 0) {
42
+ return constructor.name;
43
+ }
44
+ const tag = Object.prototype.toString.call(value);
45
+ return tag.slice(8, -1) || 'Object';
46
+ };
47
+ const formatPath = (rootLabel, path, identifierRe = IDENTIFIER_RE) => path.reduce((acc, segment) => {
48
+ if (typeof segment === 'number') {
49
+ return `${acc}[${segment}]`;
50
+ }
51
+ if (typeof segment === 'symbol') {
52
+ return `${acc}[${String(segment)}]`;
53
+ }
54
+ if (identifierRe.test(segment)) {
55
+ return `${acc}.${segment}`;
56
+ }
57
+ return `${acc}[${JSON.stringify(segment)}]`;
58
+ }, rootLabel);
59
+ const formatGlobalsPath = (path) => formatPath('eval.globals', path);
60
+ const getEnumerableSymbolKeys = (value) => Object.getOwnPropertySymbols(value).filter((key) => Object.prototype.propertyIsEnumerable.call(value, key));
61
+ const throwUnsupportedIpcValue = (rootLabel, path, description) => {
62
+ throw new Error(`[wyw-in-js] ${rootLabel} contains ${description} at ${formatPath(rootLabel, path)}. ${IPC_SUPPORTED_VALUE_HINT}`);
63
+ };
64
+ const serializeValueAtPath = (value, rootLabel, path, seen, allowFunctions, allowSymbols) => {
65
+ if (value === null) {
66
+ return { kind: 'null' };
67
+ }
68
+ if (value === undefined) {
69
+ return { kind: 'undefined' };
70
+ }
71
+ if (typeof value === 'boolean') {
72
+ return { kind: 'boolean', value };
73
+ }
74
+ if (typeof value === 'string') {
75
+ return { kind: 'string', value };
76
+ }
77
+ if (typeof value === 'number') {
78
+ if (Number.isNaN(value)) {
79
+ return { kind: 'nan' };
80
+ }
81
+ if (value === Infinity) {
82
+ return { kind: 'infinity' };
83
+ }
84
+ if (value === -Infinity) {
85
+ return { kind: '-infinity' };
86
+ }
87
+ return { kind: 'number', value };
88
+ }
89
+ if (typeof value === 'bigint') {
90
+ return { kind: 'bigint', value: value.toString() };
91
+ }
92
+ if (typeof value === 'function') {
93
+ if (allowFunctions) {
94
+ // __wywPreval consumers only rely on function-ness, not implementation
95
+ // identity. Preserve that signal explicitly instead of letting JSON
96
+ // coerce to null/undefined.
97
+ return { kind: 'function' };
98
+ }
99
+ throwUnsupportedIpcValue(rootLabel, path, 'an unsupported function');
100
+ }
101
+ if (typeof value === 'symbol') {
102
+ if (allowSymbols) {
103
+ return { kind: 'symbol', description: value.description ?? '' };
104
+ }
105
+ throwUnsupportedIpcValue(rootLabel, path, 'an unsupported symbol');
106
+ }
107
+ if (typeof value === 'object' && value !== null) {
108
+ const boxed = getBoxedPrimitiveValue(value);
109
+ if (boxed) {
110
+ if (boxed.kind === 'number') {
111
+ if (Number.isNaN(boxed.value)) {
112
+ return { kind: 'nan' };
113
+ }
114
+ if (boxed.value === Infinity) {
115
+ return { kind: 'infinity' };
116
+ }
117
+ if (boxed.value === -Infinity) {
118
+ return { kind: '-infinity' };
119
+ }
120
+ }
121
+ return boxed;
122
+ }
123
+ }
124
+ if (isLikeError(value)) {
125
+ return {
126
+ kind: 'error',
127
+ error: {
128
+ message: value.message,
129
+ name: value.name,
130
+ stack: value.stack,
131
+ },
132
+ };
133
+ }
134
+ const currentPath = formatPath(rootLabel, path);
135
+ const seenAt = seen.get(value);
136
+ if (seenAt) {
137
+ throw new Error(`[wyw-in-js] ${rootLabel} contains a circular reference at ${currentPath} (from ${seenAt}). ${IPC_SUPPORTED_VALUE_HINT}`);
138
+ }
139
+ if (Array.isArray(value)) {
140
+ const symbolKeys = getEnumerableSymbolKeys(value);
141
+ if (symbolKeys.length > 0) {
142
+ throwUnsupportedIpcValue(rootLabel, [...path, symbolKeys[0]], 'an unsupported symbol-keyed property');
143
+ }
144
+ const extraKey = Object.keys(value).find((key) => !ARRAY_INDEX_RE.test(key) || Number(key) >= value.length);
145
+ if (extraKey !== undefined) {
146
+ throwUnsupportedIpcValue(rootLabel, [...path, extraKey], 'an unsupported non-index array property');
147
+ }
148
+ seen.set(value, currentPath);
149
+ try {
150
+ return {
151
+ kind: 'array',
152
+ items: Array.from({ length: value.length }, (_, index) => serializeValueAtPath(value[index], rootLabel, [...path, index], seen, allowFunctions, allowSymbols)),
153
+ };
154
+ }
155
+ finally {
156
+ seen.delete(value);
157
+ }
158
+ }
159
+ if (!isPlainObject(value)) {
160
+ throwUnsupportedIpcValue(rootLabel, path, `an unsupported non-plain object (${getObjectTypeName(value)})`);
161
+ }
162
+ const symbolKeys = getEnumerableSymbolKeys(value);
163
+ if (symbolKeys.length > 0) {
164
+ throwUnsupportedIpcValue(rootLabel, [...path, symbolKeys[0]], 'an unsupported symbol-keyed property');
165
+ }
166
+ seen.set(value, currentPath);
167
+ try {
168
+ return {
169
+ kind: 'object',
170
+ entries: Object.fromEntries(Object.entries(value).map(([key, item]) => [
171
+ key,
172
+ serializeValueAtPath(item, rootLabel, [...path, key], seen, allowFunctions, allowSymbols),
173
+ ])),
174
+ };
175
+ }
176
+ finally {
177
+ seen.delete(value);
178
+ }
179
+ };
180
+ export const serializeValue = (value, options = {}) => serializeValueAtPath(value, options.rootLabel ?? 'value', options.path ?? [], new WeakMap(), options.allowFunctions ?? false, options.allowSymbols ?? false);
181
+ export const deserializeValue = (value) => {
182
+ switch (value.kind) {
183
+ case 'null':
184
+ return null;
185
+ case 'boolean':
186
+ case 'string':
187
+ case 'number':
188
+ return value.value;
189
+ case 'undefined':
190
+ return undefined;
191
+ case 'bigint':
192
+ return BigInt(value.value);
193
+ case 'nan':
194
+ return Number.NaN;
195
+ case 'infinity':
196
+ return Infinity;
197
+ case '-infinity':
198
+ return -Infinity;
199
+ case 'function':
200
+ return () => { };
201
+ case 'symbol':
202
+ // eslint-disable-next-line symbol-description
203
+ return value.description ? Symbol.for(value.description) : Symbol();
204
+ case 'error': {
205
+ const error = new Error(value.error.message);
206
+ if (value.error.name) {
207
+ error.name = value.error.name;
208
+ }
209
+ if (value.error.stack) {
210
+ error.stack = value.error.stack;
211
+ }
212
+ return error;
213
+ }
214
+ case 'array':
215
+ return value.items.map((item) => deserializeValue(item));
216
+ case 'object':
217
+ return Object.fromEntries(Object.entries(value.entries).map(([key, item]) => [
218
+ key,
219
+ deserializeValue(item),
220
+ ]));
221
+ case 'value':
222
+ default:
223
+ return value.value;
224
+ }
225
+ };
226
+ export const serializePreval = (values) => Object.fromEntries(Object.entries(values).map(([key, value]) => [
227
+ key,
228
+ serializeValue(value, {
229
+ allowFunctions: true,
230
+ allowSymbols: true,
231
+ rootLabel: '__wywPreval',
232
+ path: [key],
233
+ }),
234
+ ]));
235
+ const throwUnsupportedNonPlainObject = (value, path) => {
236
+ throw new Error(`[wyw-in-js] eval.globals contains an unsupported non-plain object at ${formatGlobalsPath(path)} (${getObjectTypeName(value)}). ` +
237
+ `Use JSON-like primitives, arrays, plain objects, functions, and symbols.`);
238
+ };
239
+ const restoreFunction = (source, path) => {
240
+ try {
241
+ // eslint-disable-next-line no-eval
242
+ const restored = eval(`(${source})`);
243
+ if (typeof restored !== 'function') {
244
+ throw new TypeError('decoded source is not a function');
245
+ }
246
+ return restored;
247
+ }
248
+ catch (error) {
249
+ throw new Error(`[wyw-in-js] Failed to restore eval.globals function at ${formatGlobalsPath(path)}. ` +
250
+ `Ensure the value is a user-defined function expression/arrow function. ` +
251
+ `Native and bound functions are not supported. ` +
252
+ `Original error: ${String(error)}`);
253
+ }
254
+ };
255
+ const validateFunctionSource = (source, path) => {
256
+ try {
257
+ // eslint-disable-next-line no-eval
258
+ const restored = eval(`(${source})`);
259
+ if (typeof restored !== 'function') {
260
+ throw new TypeError('decoded source is not a function');
261
+ }
262
+ }
263
+ catch (error) {
264
+ throw new Error(`[wyw-in-js] eval.globals contains an unsupported function at ${formatGlobalsPath(path)}. ` +
265
+ `Ensure the value is a user-defined function expression/arrow function. ` +
266
+ `Native and bound functions are not supported. ` +
267
+ `Original error: ${String(error)}`);
268
+ }
269
+ };
270
+ const serializeFunction = (value, path) => {
271
+ const source = value.toString();
272
+ // Validate that the source is restorable before storing it.
273
+ validateFunctionSource(source, path);
274
+ return source;
275
+ };
276
+ const isEncodedGlobalPayload = (value) => {
277
+ if (!isPlainObject(value)) {
278
+ return false;
279
+ }
280
+ if (value.signature !== ENCODED_GLOBAL_SIGNATURE ||
281
+ value.version !== ENCODED_GLOBAL_VERSION) {
282
+ return false;
283
+ }
284
+ if (value.kind === 'function') {
285
+ return typeof value.source === 'string';
286
+ }
287
+ if (value.kind === 'symbol') {
288
+ return typeof value.description === 'string';
289
+ }
290
+ return false;
291
+ };
292
+ const isEncodedGlobal = (value) => {
293
+ if (!isPlainObject(value)) {
294
+ return false;
295
+ }
296
+ const keys = Object.keys(value);
297
+ if (keys.length !== 1 || keys[0] !== ENCODED_GLOBAL_ENVELOPE_KEY) {
298
+ return false;
299
+ }
300
+ return isEncodedGlobalPayload(value[ENCODED_GLOBAL_ENVELOPE_KEY]);
301
+ };
302
+ const encodeGlobalsAtPath = (value, path) => {
303
+ if (isCallable(value)) {
304
+ return {
305
+ [ENCODED_GLOBAL_ENVELOPE_KEY]: {
306
+ signature: ENCODED_GLOBAL_SIGNATURE,
307
+ version: ENCODED_GLOBAL_VERSION,
308
+ kind: 'function',
309
+ source: serializeFunction(value, path),
310
+ },
311
+ };
312
+ }
313
+ if (typeof value === 'symbol') {
314
+ return {
315
+ [ENCODED_GLOBAL_ENVELOPE_KEY]: {
316
+ signature: ENCODED_GLOBAL_SIGNATURE,
317
+ version: ENCODED_GLOBAL_VERSION,
318
+ kind: 'symbol',
319
+ description: value.description ?? '',
320
+ },
321
+ };
322
+ }
323
+ if (Array.isArray(value)) {
324
+ return value.map((item, index) => encodeGlobalsAtPath(item, [...path, index]));
325
+ }
326
+ if (isPlainObject(value)) {
327
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
328
+ key,
329
+ encodeGlobalsAtPath(item, [...path, key]),
330
+ ]));
331
+ }
332
+ if (typeof value === 'object' && value !== null) {
333
+ throwUnsupportedNonPlainObject(value, path);
334
+ }
335
+ return value;
336
+ };
337
+ export const encodeGlobals = (value) => encodeGlobalsAtPath(value, []);
338
+ const decodeGlobalsAtPath = (value, path) => {
339
+ if (Array.isArray(value)) {
340
+ return value.map((item, index) => decodeGlobalsAtPath(item, [...path, index]));
341
+ }
342
+ if (isEncodedGlobal(value)) {
343
+ const payload = value[ENCODED_GLOBAL_ENVELOPE_KEY];
344
+ if (payload.kind === 'function') {
345
+ return restoreFunction(payload.source, path);
346
+ }
347
+ return Symbol(payload.description);
348
+ }
349
+ if (isPlainObject(value)) {
350
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [
351
+ key,
352
+ decodeGlobalsAtPath(item, [...path, key]),
353
+ ]));
354
+ }
355
+ return value;
356
+ };
357
+ export const decodeGlobals = (value) => decodeGlobalsAtPath(value, []);
@@ -0,0 +1,13 @@
1
+ type StreamWriteCallback = (error?: Error | null) => void;
2
+ type QueueWritable = {
3
+ off(event: 'close' | 'drain' | 'error', listener: (...args: unknown[]) => void): void;
4
+ once(event: 'close' | 'drain' | 'error', listener: (...args: unknown[]) => void): void;
5
+ write(chunk: string, callback?: StreamWriteCallback): boolean;
6
+ };
7
+ export type WriteQueue = {
8
+ onIdle(): Promise<void>;
9
+ write(chunk: string): Promise<void>;
10
+ };
11
+ export declare const writeToStream: (stream: QueueWritable, chunk: string, label: string) => Promise<void>;
12
+ export declare const createWriteQueue: (stream: QueueWritable, label: string) => WriteQueue;
13
+ export {};