@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,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExports = exports.findExportsInImports = void 0;
3
+ exports.findExportsInImports = findExportsInImports;
4
+ exports.getExports = getExports;
4
5
  const collectExportsAndImports_1 = require("../../utils/collectExportsAndImports");
5
6
  function findExportsInImports(entrypoint, imports) {
6
7
  const results = [];
@@ -21,7 +22,6 @@ function findExportsInImports(entrypoint, imports) {
21
22
  }
22
23
  return results;
23
24
  }
24
- exports.findExportsInImports = findExportsInImports;
25
25
  function* getExports() {
26
26
  const { entrypoint, services: { cache }, } = this;
27
27
  const { loadedAndParsed } = entrypoint;
@@ -62,4 +62,3 @@ function* getExports() {
62
62
  cache.add('exports', entrypoint.name, result);
63
63
  return result;
64
64
  }
65
- exports.getExports = getExports;
@@ -2,7 +2,7 @@
2
2
  var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
3
3
  if (value !== null && value !== void 0) {
4
4
  if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
5
- var dispose;
5
+ var dispose, inner;
6
6
  if (async) {
7
7
  if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
8
8
  dispose = value[Symbol.asyncDispose];
@@ -10,8 +10,10 @@ var __addDisposableResource = (this && this.__addDisposableResource) || function
10
10
  if (dispose === void 0) {
11
11
  if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
12
12
  dispose = value[Symbol.dispose];
13
+ if (async) inner = dispose;
13
14
  }
14
15
  if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
16
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
15
17
  env.stack.push({ value: value, dispose: dispose, async: async });
16
18
  }
17
19
  else if (async) {
@@ -25,17 +27,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
25
27
  env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
26
28
  env.hasError = true;
27
29
  }
30
+ var r, s = 0;
28
31
  function next() {
29
- while (env.stack.length) {
30
- var rec = env.stack.pop();
32
+ while (r = env.stack.pop()) {
31
33
  try {
32
- var result = rec.dispose && rec.dispose.call(rec.value);
33
- if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
34
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
35
+ if (r.dispose) {
36
+ var result = r.dispose.call(r.value);
37
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
38
+ }
39
+ else s |= 1;
34
40
  }
35
41
  catch (e) {
36
42
  fail(e);
37
43
  }
38
44
  }
45
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
39
46
  if (env.hasError) throw env.error;
40
47
  }
41
48
  return next();
@@ -45,7 +52,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
45
52
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
46
53
  });
47
54
  Object.defineProperty(exports, "__esModule", { value: true });
48
- exports.processEntrypoint = void 0;
55
+ exports.processEntrypoint = processEntrypoint;
49
56
  const AbortError_1 = require("../actions/AbortError");
50
57
  /**
51
58
  * The first stage of processing an entrypoint.
@@ -85,4 +92,3 @@ function* processEntrypoint() {
85
92
  throw e;
86
93
  }
87
94
  }
88
- exports.processEntrypoint = processEntrypoint;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processImports = void 0;
3
+ exports.processImports = processImports;
4
4
  /**
5
5
  * Creates new entrypoints and emits processEntrypoint for each resolved import
6
6
  */
@@ -18,4 +18,3 @@ function* processImports() {
18
18
  yield* this.getNext('processEntrypoint', nextEntrypoint, undefined, null);
19
19
  }
20
20
  }
21
- exports.processImports = processImports;
@@ -1,9 +1,45 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asyncResolveImports = exports.syncResolveImports = void 0;
3
+ exports.syncResolveImports = syncResolveImports;
4
+ exports.asyncResolveImports = asyncResolveImports;
4
5
  /* eslint-disable no-continue,no-await-in-loop,require-yield */
5
6
  const getFileIdx_1 = require("../../utils/getFileIdx");
6
7
  const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
8
+ const importOverrides_1 = require("../../utils/importOverrides");
9
+ function applyImportOverrides(services, entrypoint, resolvedImports) {
10
+ const overrides = services.options.pluginOptions.importOverrides;
11
+ if (!overrides || Object.keys(overrides).length === 0) {
12
+ return resolvedImports;
13
+ }
14
+ const { root } = services.options;
15
+ const importer = entrypoint.name;
16
+ const stack = (0, Entrypoint_helpers_1.getStack)(entrypoint);
17
+ return resolvedImports.map((dependency) => {
18
+ const { key } = (0, importOverrides_1.toImportKey)({
19
+ source: dependency.source,
20
+ resolved: dependency.resolved,
21
+ root,
22
+ });
23
+ const override = overrides[key];
24
+ if (!override) {
25
+ return dependency;
26
+ }
27
+ const nextOnly = (0, importOverrides_1.applyImportOverrideToOnly)(dependency.only, override);
28
+ const nextResolved = override.mock
29
+ ? (0, importOverrides_1.resolveMockSpecifier)({
30
+ mock: override.mock,
31
+ importer,
32
+ root,
33
+ stack,
34
+ })
35
+ : dependency.resolved;
36
+ return {
37
+ ...dependency,
38
+ only: nextOnly,
39
+ resolved: nextResolved,
40
+ };
41
+ });
42
+ }
7
43
  function emitDependency(emitter, entrypoint, imports) {
8
44
  emitter.single({
9
45
  type: 'dependency',
@@ -52,11 +88,11 @@ function* syncResolveImports(resolve) {
52
88
  resolved,
53
89
  };
54
90
  });
55
- const filteredImports = filterUnresolved(entrypoint, resolvedImports);
91
+ const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
92
+ const filteredImports = filterUnresolved(entrypoint, overriddenImports);
56
93
  emitDependency(eventEmitter, entrypoint, filteredImports);
57
94
  return filteredImports;
58
95
  }
59
- exports.syncResolveImports = syncResolveImports;
60
96
  /**
61
97
  * Asynchronously resolves specified imports with a provided resolver.
62
98
  */
@@ -117,8 +153,8 @@ async function* asyncResolveImports(resolve) {
117
153
  return resolveTask;
118
154
  }));
119
155
  log('resolved %d imports', resolvedImports.length);
120
- const filteredImports = filterUnresolved(entrypoint, resolvedImports);
156
+ const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
157
+ const filteredImports = filterUnresolved(entrypoint, overriddenImports);
121
158
  emitDependency(eventEmitter, entrypoint, filteredImports);
122
159
  return filteredImports;
123
160
  }
124
- exports.asyncResolveImports = asyncResolveImports;
@@ -7,7 +7,7 @@ type PrepareCodeFn = (services: Services, item: Entrypoint, originalAst: File) =
7
7
  imports: Map<string, string[]> | null,
8
8
  metadata: WYWTransformMetadata | null
9
9
  ];
10
- export declare const prepareCode: (services: Services, item: Entrypoint, originalAst: File) => [code: string, imports: Map<string, string[]> | null, metadata: WYWTransformMetadata | null];
10
+ export declare const prepareCode: (services: Services, item: Entrypoint, originalAst: File) => ReturnType<PrepareCodeFn>;
11
11
  export declare function internalTransform(this: ITransformAction, prepareFn: PrepareCodeFn): SyncScenarioForAction<ITransformAction>;
12
12
  /**
13
13
  * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transform = exports.internalTransform = exports.prepareCode = void 0;
6
+ exports.prepareCode = void 0;
7
+ exports.internalTransform = internalTransform;
8
+ exports.transform = transform;
4
9
  const buildOptions_1 = require("../../options/buildOptions");
10
+ const dynamic_import_1 = __importDefault(require("../../plugins/dynamic-import"));
11
+ const preeval_1 = __importDefault(require("../../plugins/preeval"));
5
12
  const TransformMetadata_1 = require("../../utils/TransformMetadata");
6
13
  const getPluginKey_1 = require("../../utils/getPluginKey");
7
14
  const EMPTY_FILE = '=== empty file ===';
@@ -14,10 +21,13 @@ function runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, ev
14
21
  const plugins = [
15
22
  ...preShakePlugins,
16
23
  [
17
- require.resolve('../../plugins/preeval'),
18
- { ...pluginOptions, eventEmitter },
24
+ preeval_1.default,
25
+ {
26
+ ...pluginOptions,
27
+ eventEmitter,
28
+ },
19
29
  ],
20
- [require.resolve('../../plugins/dynamic-import')],
30
+ dynamic_import_1.default,
21
31
  ...(evalConfig.plugins ?? []).filter((i) => !hasKeyInList(i, pluginOptions.highPriorityPlugins)),
22
32
  ];
23
33
  const transformConfig = (0, buildOptions_1.buildOptions)({
@@ -53,6 +63,8 @@ const prepareCode = (services, item, originalAst) => {
53
63
  onlyExports: only,
54
64
  highPriorityPlugins: pluginOptions.highPriorityPlugins,
55
65
  features: pluginOptions.features,
66
+ importOverrides: pluginOptions.importOverrides,
67
+ root: options.root,
56
68
  };
57
69
  const [, transformedCode, imports] = eventEmitter.perf('transform:evaluator', () => evaluator(evalConfig, preevalStageResult.ast, preevalStageResult.code, evaluatorConfig, babel));
58
70
  log('[evaluator:end]');
@@ -103,7 +115,6 @@ function* internalTransform(prepareFn) {
103
115
  metadata,
104
116
  };
105
117
  }
106
- exports.internalTransform = internalTransform;
107
118
  /**
108
119
  * Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
109
120
  * Emits resolveImports and processImports events.
@@ -111,4 +122,3 @@ exports.internalTransform = internalTransform;
111
122
  function transform() {
112
123
  return internalTransform.call(this, exports.prepareCode);
113
124
  }
114
- exports.transform = transform;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.workflow = void 0;
3
+ exports.workflow = workflow;
4
4
  const AbortError_1 = require("../actions/AbortError");
5
5
  /**
6
6
  * The entry point for file processing. Sequentially calls `processEntrypoint`,
@@ -74,4 +74,3 @@ function* workflow() {
74
74
  sourceMap: collectStageResult.map,
75
75
  };
76
76
  }
77
- exports.workflow = workflow;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.loadWywOptions = void 0;
3
+ exports.loadWywOptions = loadWywOptions;
4
4
  const cosmiconfig_1 = require("cosmiconfig");
5
5
  const shaker_1 = require("../../shaker");
6
6
  const searchPlaces = [
@@ -23,11 +23,15 @@ const explorerSync = (0, cosmiconfig_1.cosmiconfigSync)('wyw-in-js', { searchPla
23
23
  const cache = new WeakMap();
24
24
  const defaultOverrides = {};
25
25
  const nodeModulesRegExp = /[\\/]node_modules[\\/]/;
26
+ const defaultImportLoaders = {
27
+ raw: 'raw',
28
+ url: 'url',
29
+ };
26
30
  function loadWywOptions(overrides = defaultOverrides) {
27
31
  if (cache.has(overrides)) {
28
32
  return cache.get(overrides);
29
33
  }
30
- const { configFile, ignore, rules, babelOptions = {}, ...rest } = overrides;
34
+ const { configFile, ignore, rules, babelOptions = {}, importLoaders: overridesImportLoaders, ...rest } = overrides;
31
35
  const result =
32
36
  // eslint-disable-next-line no-nested-ternary
33
37
  configFile === false
@@ -43,6 +47,9 @@ function loadWywOptions(overrides = defaultOverrides) {
43
47
  useBabelConfigs: true,
44
48
  useWeakRefInEval: true,
45
49
  };
50
+ const config = (result?.config ?? {});
51
+ const configImportLoaders = config.importLoaders;
52
+ const configFeatures = config.features;
46
53
  const options = {
47
54
  displayName: false,
48
55
  evaluate: true,
@@ -70,15 +77,19 @@ function loadWywOptions(overrides = defaultOverrides) {
70
77
  ],
71
78
  babelOptions,
72
79
  highPriorityPlugins: ['module-resolver'],
73
- ...(result ? result.config : {}),
80
+ ...config,
74
81
  ...rest,
82
+ importLoaders: {
83
+ ...defaultImportLoaders,
84
+ ...(configImportLoaders ?? {}),
85
+ ...(overridesImportLoaders ?? {}),
86
+ },
75
87
  features: {
76
88
  ...defaultFeatures,
77
- ...(result ? result.config.features : {}),
89
+ ...(configFeatures ?? {}),
78
90
  ...rest.features,
79
91
  },
80
92
  };
81
93
  cache.set(overrides, options);
82
94
  return options;
83
95
  }
84
- exports.loadWywOptions = loadWywOptions;
@@ -1,5 +1,5 @@
1
1
  import type { Services } from '../types';
2
2
  type RequiredServices = 'options';
3
3
  export type PartialServices = Partial<Omit<Services, RequiredServices>> & Pick<Services, RequiredServices>;
4
- export declare const withDefaultServices: ({ babel, cache, eventEmitter, loadAndParseFn, log, options, }: PartialServices) => Services;
4
+ export declare const withDefaultServices: ({ babel, cache, emitWarning, eventEmitter, loadAndParseFn, log, options, }: PartialServices) => Services;
5
5
  export {};
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.withDefaultServices = void 0;
27
37
  const babelCore = __importStar(require("@babel/core"));
@@ -29,9 +39,10 @@ const cache_1 = require("../../cache");
29
39
  const EventEmitter_1 = require("../../utils/EventEmitter");
30
40
  const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
31
41
  const rootLog_1 = require("../rootLog");
32
- const withDefaultServices = ({ babel = babelCore, cache = new cache_1.TransformCacheCollection(), eventEmitter = EventEmitter_1.EventEmitter.dummy, loadAndParseFn = Entrypoint_helpers_1.loadAndParse, log = rootLog_1.rootLog, options, }) => ({
42
+ const withDefaultServices = ({ babel = babelCore, cache = new cache_1.TransformCacheCollection(), emitWarning, eventEmitter = EventEmitter_1.EventEmitter.dummy, loadAndParseFn = Entrypoint_helpers_1.loadAndParse, log = rootLog_1.rootLog, options, }) => ({
33
43
  babel,
34
44
  cache,
45
+ emitWarning,
35
46
  eventEmitter,
36
47
  loadAndParseFn,
37
48
  log,
@@ -0,0 +1,2 @@
1
+ import type { File } from '@babel/types';
2
+ export declare function isStaticallyEvaluatableModule(ast: File): boolean;
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStaticallyEvaluatableModule = isStaticallyEvaluatableModule;
4
+ const types_1 = require("@babel/types");
5
+ function isTypeOnlyImport(statement) {
6
+ if (statement.importKind === 'type') {
7
+ return true;
8
+ }
9
+ return statement.specifiers.every((specifier) => (0, types_1.isImportSpecifier)(specifier) && specifier.importKind === 'type');
10
+ }
11
+ function isTypeOnlyReExport(statement) {
12
+ if (!statement.source) {
13
+ return false;
14
+ }
15
+ return statement.exportKind === 'type';
16
+ }
17
+ function unwrapExpression(expr) {
18
+ let current = expr;
19
+ for (;;) {
20
+ if ((0, types_1.isTSAsExpression)(current)) {
21
+ current = current.expression;
22
+ // eslint-disable-next-line no-continue
23
+ continue;
24
+ }
25
+ if ((0, types_1.isTSSatisfiesExpression)(current)) {
26
+ current = current.expression;
27
+ // eslint-disable-next-line no-continue
28
+ continue;
29
+ }
30
+ if ((0, types_1.isTSNonNullExpression)(current)) {
31
+ current = current.expression;
32
+ // eslint-disable-next-line no-continue
33
+ continue;
34
+ }
35
+ if ((0, types_1.isTSInstantiationExpression)(current)) {
36
+ current = current.expression;
37
+ // eslint-disable-next-line no-continue
38
+ continue;
39
+ }
40
+ if ((0, types_1.isParenthesizedExpression)(current)) {
41
+ current = current.expression;
42
+ // eslint-disable-next-line no-continue
43
+ continue;
44
+ }
45
+ return current;
46
+ }
47
+ }
48
+ function isSafeExpression(expr) {
49
+ const unwrapped = unwrapExpression(expr);
50
+ if ((0, types_1.isStringLiteral)(unwrapped) ||
51
+ (0, types_1.isNumericLiteral)(unwrapped) ||
52
+ (0, types_1.isBooleanLiteral)(unwrapped) ||
53
+ (0, types_1.isNullLiteral)(unwrapped) ||
54
+ (0, types_1.isBigIntLiteral)(unwrapped)) {
55
+ return true;
56
+ }
57
+ if ((0, types_1.isArrowFunctionExpression)(unwrapped) || (0, types_1.isFunctionExpression)(unwrapped)) {
58
+ return true;
59
+ }
60
+ if ((0, types_1.isIdentifier)(unwrapped)) {
61
+ return (unwrapped.name === 'undefined' ||
62
+ unwrapped.name === 'NaN' ||
63
+ unwrapped.name === 'Infinity');
64
+ }
65
+ if ((0, types_1.isTemplateLiteral)(unwrapped)) {
66
+ return unwrapped.expressions.every((item) => (0, types_1.isExpression)(item) && isSafeExpression(item));
67
+ }
68
+ if ((0, types_1.isUnaryExpression)(unwrapped)) {
69
+ return isSafeExpression(unwrapped.argument);
70
+ }
71
+ if ((0, types_1.isBinaryExpression)(unwrapped) || (0, types_1.isLogicalExpression)(unwrapped)) {
72
+ return (isSafeExpression(unwrapped.left) &&
73
+ isSafeExpression(unwrapped.right));
74
+ }
75
+ if ((0, types_1.isConditionalExpression)(unwrapped)) {
76
+ return (isSafeExpression(unwrapped.test) &&
77
+ isSafeExpression(unwrapped.consequent) &&
78
+ isSafeExpression(unwrapped.alternate));
79
+ }
80
+ if ((0, types_1.isArrayExpression)(unwrapped)) {
81
+ return unwrapped.elements.every((item) => {
82
+ if (item === null)
83
+ return true;
84
+ if ((0, types_1.isSpreadElement)(item))
85
+ return false;
86
+ return isSafeExpression(item);
87
+ });
88
+ }
89
+ if ((0, types_1.isObjectExpression)(unwrapped)) {
90
+ return unwrapped.properties.every((prop) => {
91
+ if ((0, types_1.isSpreadElement)(prop)) {
92
+ return false;
93
+ }
94
+ if ((0, types_1.isObjectMethod)(prop)) {
95
+ return !prop.computed;
96
+ }
97
+ if ((0, types_1.isObjectProperty)(prop)) {
98
+ if (prop.computed) {
99
+ return false;
100
+ }
101
+ return (0, types_1.isExpression)(prop.value) && isSafeExpression(prop.value);
102
+ }
103
+ return false;
104
+ });
105
+ }
106
+ if ((0, types_1.isCallExpression)(unwrapped) ||
107
+ (0, types_1.isNewExpression)(unwrapped) ||
108
+ (0, types_1.isTaggedTemplateExpression)(unwrapped) ||
109
+ (0, types_1.isAwaitExpression)(unwrapped) ||
110
+ (0, types_1.isYieldExpression)(unwrapped) ||
111
+ (0, types_1.isUpdateExpression)(unwrapped) ||
112
+ (0, types_1.isAssignmentExpression)(unwrapped) ||
113
+ (0, types_1.isSequenceExpression)(unwrapped)) {
114
+ return false;
115
+ }
116
+ return false;
117
+ }
118
+ function isSafeDeclarator(declarator) {
119
+ if (!declarator.init) {
120
+ return true;
121
+ }
122
+ return isSafeExpression(declarator.init);
123
+ }
124
+ function isSafeVariableDeclaration(decl) {
125
+ return decl.declarations.every(isSafeDeclarator);
126
+ }
127
+ function isSafeStatement(statement) {
128
+ if ((0, types_1.isImportDeclaration)(statement)) {
129
+ return isTypeOnlyImport(statement);
130
+ }
131
+ if ((0, types_1.isExportAllDeclaration)(statement)) {
132
+ return false;
133
+ }
134
+ if ((0, types_1.isExportNamedDeclaration)(statement)) {
135
+ if (!statement.declaration) {
136
+ return !statement.source || isTypeOnlyReExport(statement);
137
+ }
138
+ if ((0, types_1.isFunctionDeclaration)(statement.declaration)) {
139
+ return true;
140
+ }
141
+ if ((0, types_1.isClassDeclaration)(statement.declaration)) {
142
+ return false;
143
+ }
144
+ if (statement.declaration.type === 'VariableDeclaration') {
145
+ return isSafeVariableDeclaration(statement.declaration);
146
+ }
147
+ return false;
148
+ }
149
+ if ((0, types_1.isExportDefaultDeclaration)(statement)) {
150
+ const decl = statement.declaration;
151
+ if ((0, types_1.isFunctionDeclaration)(decl) ||
152
+ (0, types_1.isFunctionExpression)(decl) ||
153
+ (0, types_1.isArrowFunctionExpression)(decl) ||
154
+ (0, types_1.isClassExpression)(decl) ||
155
+ (0, types_1.isClassDeclaration)(decl)) {
156
+ return false;
157
+ }
158
+ return isSafeExpression(decl);
159
+ }
160
+ if (statement.type === 'VariableDeclaration') {
161
+ return isSafeVariableDeclaration(statement);
162
+ }
163
+ if ((0, types_1.isFunctionDeclaration)(statement)) {
164
+ return true;
165
+ }
166
+ if ((0, types_1.isEmptyStatement)(statement)) {
167
+ return true;
168
+ }
169
+ if ((0, types_1.isExpressionStatement)(statement)) {
170
+ // Directives (like "use strict") are safe.
171
+ return (0, types_1.isStringLiteral)(statement.expression);
172
+ }
173
+ return false;
174
+ }
175
+ function isStaticallyEvaluatableModule(ast) {
176
+ return ast.program.body.every(isSafeStatement);
177
+ }
@@ -1,3 +1,2 @@
1
- /// <reference types="debug" />
2
1
  import type { Debugger } from '@wyw-in-js/shared';
3
2
  export declare const rootLog: Debugger;
@@ -1,4 +1,3 @@
1
- /// <reference types="debug" />
2
1
  import type { BabelFileResult } from '@babel/core';
3
2
  import type { ValueCache } from '@wyw-in-js/processor-utils';
4
3
  import type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';
@@ -14,6 +13,7 @@ import type { IExtracted, IWorkflowActionLinariaResult, IWorkflowActionNonLinari
14
13
  export type Services = {
15
14
  babel: Core;
16
15
  cache: TransformCacheCollection;
16
+ emitWarning?: (message: string) => void;
17
17
  eventEmitter: EventEmitter;
18
18
  loadAndParseFn: LoadAndParseFn;
19
19
  log: Debugger;
@@ -9,7 +9,8 @@
9
9
  * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.transform = exports.transformSync = void 0;
12
+ exports.transformSync = transformSync;
13
+ exports.transform = transform;
13
14
  const shared_1 = require("@wyw-in-js/shared");
14
15
  const loadWywOptions_1 = require("./transform/helpers/loadWywOptions");
15
16
  const cache_1 = require("./cache");
@@ -18,6 +19,8 @@ const actionRunner_1 = require("./transform/actions/actionRunner");
18
19
  const generators_1 = require("./transform/generators");
19
20
  const resolveImports_1 = require("./transform/generators/resolveImports");
20
21
  const withDefaultServices_1 = require("./transform/helpers/withDefaultServices");
22
+ const memoizedSyncResolve = new WeakMap();
23
+ const memoizedAsyncResolve = new WeakMap();
21
24
  function transformSync(partialServices, originalCode, syncResolve, customHandlers = {}) {
22
25
  const { options } = partialServices;
23
26
  const pluginOptions = (0, loadWywOptions_1.loadWywOptions)(options.pluginOptions);
@@ -40,13 +43,16 @@ function transformSync(partialServices, originalCode, syncResolve, customHandler
40
43
  };
41
44
  }
42
45
  const workflowAction = entrypoint.createAction('workflow', undefined);
46
+ if (!memoizedSyncResolve.has(syncResolve)) {
47
+ memoizedSyncResolve.set(syncResolve, function resolveImports() {
48
+ return resolveImports_1.syncResolveImports.call(this, syncResolve);
49
+ });
50
+ }
43
51
  try {
44
52
  const result = (0, actionRunner_1.syncActionRunner)(workflowAction, {
45
53
  ...generators_1.baseHandlers,
46
54
  ...customHandlers,
47
- resolveImports() {
48
- return resolveImports_1.syncResolveImports.call(this, syncResolve);
49
- },
55
+ resolveImports: memoizedSyncResolve.get(syncResolve),
50
56
  });
51
57
  entrypoint.log('%s is ready', entrypoint.name);
52
58
  return result;
@@ -64,7 +70,6 @@ function transformSync(partialServices, originalCode, syncResolve, customHandler
64
70
  throw err;
65
71
  }
66
72
  }
67
- exports.transformSync = transformSync;
68
73
  async function transform(partialServices, originalCode, asyncResolve, customHandlers = {}) {
69
74
  const { options } = partialServices;
70
75
  const pluginOptions = (0, loadWywOptions_1.loadWywOptions)(options.pluginOptions);
@@ -95,13 +100,17 @@ async function transform(partialServices, originalCode, asyncResolve, customHand
95
100
  };
96
101
  }
97
102
  const workflowAction = entrypoint.createAction('workflow', undefined);
103
+ if (!memoizedAsyncResolve.has(asyncResolve)) {
104
+ const resolveImports = function resolveImports() {
105
+ return resolveImports_1.asyncResolveImports.call(this, asyncResolve);
106
+ };
107
+ memoizedAsyncResolve.set(asyncResolve, resolveImports);
108
+ }
98
109
  try {
99
110
  const result = await (0, actionRunner_1.asyncActionRunner)(workflowAction, {
100
111
  ...generators_1.baseHandlers,
101
112
  ...customHandlers,
102
- resolveImports() {
103
- return resolveImports_1.asyncResolveImports.call(this, asyncResolve);
104
- },
113
+ resolveImports: memoizedAsyncResolve.get(asyncResolve),
105
114
  });
106
115
  entrypoint.log('%s is ready', entrypoint.name);
107
116
  return result;
@@ -119,4 +128,3 @@ async function transform(partialServices, originalCode, asyncResolve, customHand
119
128
  throw err;
120
129
  }
121
130
  }
122
- exports.transform = transform;
package/types/types.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="debug" />
2
1
  import type { BabelFile, PluginPass } from '@babel/core';
3
2
  import type { NodePath } from '@babel/traverse';
4
3
  import type { File, Program } from '@babel/types';
@@ -44,6 +43,7 @@ export type Result = {
44
43
  export type Options = {
45
44
  filename: string;
46
45
  inputSourceMap?: RawSourceMap;
46
+ keepComments?: boolean | RegExp;
47
47
  outputFilename?: string;
48
48
  pluginOptions?: Partial<PluginOptions>;
49
49
  prefixer?: boolean;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addIdentifierToWywPreval = exports.getOrAddWywPreval = void 0;
3
+ exports.getOrAddWywPreval = getOrAddWywPreval;
4
+ exports.addIdentifierToWywPreval = addIdentifierToWywPreval;
4
5
  const createId_1 = require("./createId");
5
6
  const scopeHelpers_1 = require("./scopeHelpers");
6
7
  function getOrAddWywPreval(scope) {
@@ -58,7 +59,6 @@ function getOrAddWywPreval(scope) {
58
59
  programPath.setData('__wywPreval', object);
59
60
  return object;
60
61
  }
61
- exports.getOrAddWywPreval = getOrAddWywPreval;
62
62
  function addIdentifierToWywPreval(scope, name) {
63
63
  const rootScope = scope.getProgramParent();
64
64
  const object = getOrAddWywPreval(rootScope);
@@ -72,4 +72,3 @@ function addIdentifierToWywPreval(scope, name) {
72
72
  const [inserted] = object.pushContainer('properties', [newProperty]);
73
73
  (0, scopeHelpers_1.reference)(inserted.get('value'));
74
74
  }
75
- exports.addIdentifierToWywPreval = addIdentifierToWywPreval;