@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
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isStaticallyEvaluatableModule = isStaticallyEvaluatableModule;
7
+ var _types = require("@babel/types");
8
+ function isTypeOnlyImport(statement) {
9
+ if (statement.importKind === 'type') {
10
+ return true;
11
+ }
12
+ return statement.specifiers.every(specifier => (0, _types.isImportSpecifier)(specifier) && specifier.importKind === 'type');
13
+ }
14
+ function isTypeOnlyReExport(statement) {
15
+ if (!statement.source) {
16
+ return false;
17
+ }
18
+ return statement.exportKind === 'type';
19
+ }
20
+ function unwrapExpression(expr) {
21
+ let current = expr;
22
+ for (;;) {
23
+ if ((0, _types.isTSAsExpression)(current)) {
24
+ current = current.expression;
25
+ // eslint-disable-next-line no-continue
26
+ continue;
27
+ }
28
+ if ((0, _types.isTSSatisfiesExpression)(current)) {
29
+ current = current.expression;
30
+ // eslint-disable-next-line no-continue
31
+ continue;
32
+ }
33
+ if ((0, _types.isTSNonNullExpression)(current)) {
34
+ current = current.expression;
35
+ // eslint-disable-next-line no-continue
36
+ continue;
37
+ }
38
+ if ((0, _types.isTSInstantiationExpression)(current)) {
39
+ current = current.expression;
40
+ // eslint-disable-next-line no-continue
41
+ continue;
42
+ }
43
+ if ((0, _types.isParenthesizedExpression)(current)) {
44
+ current = current.expression;
45
+ // eslint-disable-next-line no-continue
46
+ continue;
47
+ }
48
+ return current;
49
+ }
50
+ }
51
+ function isSafeExpression(expr) {
52
+ const unwrapped = unwrapExpression(expr);
53
+ if ((0, _types.isStringLiteral)(unwrapped) || (0, _types.isNumericLiteral)(unwrapped) || (0, _types.isBooleanLiteral)(unwrapped) || (0, _types.isNullLiteral)(unwrapped) || (0, _types.isBigIntLiteral)(unwrapped)) {
54
+ return true;
55
+ }
56
+ if ((0, _types.isArrowFunctionExpression)(unwrapped) || (0, _types.isFunctionExpression)(unwrapped)) {
57
+ return true;
58
+ }
59
+ if ((0, _types.isIdentifier)(unwrapped)) {
60
+ return unwrapped.name === 'undefined' || unwrapped.name === 'NaN' || unwrapped.name === 'Infinity';
61
+ }
62
+ if ((0, _types.isTemplateLiteral)(unwrapped)) {
63
+ return unwrapped.expressions.every(item => (0, _types.isExpression)(item) && isSafeExpression(item));
64
+ }
65
+ if ((0, _types.isUnaryExpression)(unwrapped)) {
66
+ return isSafeExpression(unwrapped.argument);
67
+ }
68
+ if ((0, _types.isBinaryExpression)(unwrapped) || (0, _types.isLogicalExpression)(unwrapped)) {
69
+ return isSafeExpression(unwrapped.left) && isSafeExpression(unwrapped.right);
70
+ }
71
+ if ((0, _types.isConditionalExpression)(unwrapped)) {
72
+ return isSafeExpression(unwrapped.test) && isSafeExpression(unwrapped.consequent) && isSafeExpression(unwrapped.alternate);
73
+ }
74
+ if ((0, _types.isArrayExpression)(unwrapped)) {
75
+ return unwrapped.elements.every(item => {
76
+ if (item === null) return true;
77
+ if ((0, _types.isSpreadElement)(item)) return false;
78
+ return isSafeExpression(item);
79
+ });
80
+ }
81
+ if ((0, _types.isObjectExpression)(unwrapped)) {
82
+ return unwrapped.properties.every(prop => {
83
+ if ((0, _types.isSpreadElement)(prop)) {
84
+ return false;
85
+ }
86
+ if ((0, _types.isObjectMethod)(prop)) {
87
+ return !prop.computed;
88
+ }
89
+ if ((0, _types.isObjectProperty)(prop)) {
90
+ if (prop.computed) {
91
+ return false;
92
+ }
93
+ return (0, _types.isExpression)(prop.value) && isSafeExpression(prop.value);
94
+ }
95
+ return false;
96
+ });
97
+ }
98
+ if ((0, _types.isCallExpression)(unwrapped) || (0, _types.isNewExpression)(unwrapped) || (0, _types.isTaggedTemplateExpression)(unwrapped) || (0, _types.isAwaitExpression)(unwrapped) || (0, _types.isYieldExpression)(unwrapped) || (0, _types.isUpdateExpression)(unwrapped) || (0, _types.isAssignmentExpression)(unwrapped) || (0, _types.isSequenceExpression)(unwrapped)) {
99
+ return false;
100
+ }
101
+ return false;
102
+ }
103
+ function isSafeDeclarator(declarator) {
104
+ if (!declarator.init) {
105
+ return true;
106
+ }
107
+ return isSafeExpression(declarator.init);
108
+ }
109
+ function isSafeVariableDeclaration(decl) {
110
+ return decl.declarations.every(isSafeDeclarator);
111
+ }
112
+ function isSafeStatement(statement) {
113
+ if ((0, _types.isImportDeclaration)(statement)) {
114
+ return isTypeOnlyImport(statement);
115
+ }
116
+ if ((0, _types.isExportAllDeclaration)(statement)) {
117
+ return false;
118
+ }
119
+ if ((0, _types.isExportNamedDeclaration)(statement)) {
120
+ if (!statement.declaration) {
121
+ return !statement.source || isTypeOnlyReExport(statement);
122
+ }
123
+ if ((0, _types.isFunctionDeclaration)(statement.declaration)) {
124
+ return true;
125
+ }
126
+ if ((0, _types.isClassDeclaration)(statement.declaration)) {
127
+ return false;
128
+ }
129
+ if (statement.declaration.type === 'VariableDeclaration') {
130
+ return isSafeVariableDeclaration(statement.declaration);
131
+ }
132
+ return false;
133
+ }
134
+ if ((0, _types.isExportDefaultDeclaration)(statement)) {
135
+ const decl = statement.declaration;
136
+ if ((0, _types.isFunctionDeclaration)(decl) || (0, _types.isFunctionExpression)(decl) || (0, _types.isArrowFunctionExpression)(decl) || (0, _types.isClassExpression)(decl) || (0, _types.isClassDeclaration)(decl)) {
137
+ return false;
138
+ }
139
+ return isSafeExpression(decl);
140
+ }
141
+ if (statement.type === 'VariableDeclaration') {
142
+ return isSafeVariableDeclaration(statement);
143
+ }
144
+ if ((0, _types.isFunctionDeclaration)(statement)) {
145
+ return true;
146
+ }
147
+ if ((0, _types.isEmptyStatement)(statement)) {
148
+ return true;
149
+ }
150
+ if ((0, _types.isExpressionStatement)(statement)) {
151
+ // Directives (like "use strict") are safe.
152
+ return (0, _types.isStringLiteral)(statement.expression);
153
+ }
154
+ return false;
155
+ }
156
+ function isStaticallyEvaluatableModule(ast) {
157
+ return ast.program.body.every(isSafeStatement);
158
+ }
159
+ //# sourceMappingURL=isStaticallyEvaluatableModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isStaticallyEvaluatableModule.js","names":["_types","require","isTypeOnlyImport","statement","importKind","specifiers","every","specifier","isImportSpecifier","isTypeOnlyReExport","source","exportKind","unwrapExpression","expr","current","isTSAsExpression","expression","isTSSatisfiesExpression","isTSNonNullExpression","isTSInstantiationExpression","isParenthesizedExpression","isSafeExpression","unwrapped","isStringLiteral","isNumericLiteral","isBooleanLiteral","isNullLiteral","isBigIntLiteral","isArrowFunctionExpression","isFunctionExpression","isIdentifier","name","isTemplateLiteral","expressions","item","isExpression","isUnaryExpression","argument","isBinaryExpression","isLogicalExpression","left","right","isConditionalExpression","test","consequent","alternate","isArrayExpression","elements","isSpreadElement","isObjectExpression","properties","prop","isObjectMethod","computed","isObjectProperty","value","isCallExpression","isNewExpression","isTaggedTemplateExpression","isAwaitExpression","isYieldExpression","isUpdateExpression","isAssignmentExpression","isSequenceExpression","isSafeDeclarator","declarator","init","isSafeVariableDeclaration","decl","declarations","isSafeStatement","isImportDeclaration","isExportAllDeclaration","isExportNamedDeclaration","declaration","isFunctionDeclaration","isClassDeclaration","type","isExportDefaultDeclaration","isClassExpression","isEmptyStatement","isExpressionStatement","isStaticallyEvaluatableModule","ast","program","body"],"sources":["../../src/transform/isStaticallyEvaluatableModule.ts"],"sourcesContent":["import type {\n Expression,\n ImportDeclaration,\n ExportNamedDeclaration,\n File,\n Statement,\n VariableDeclaration,\n VariableDeclarator,\n} from '@babel/types';\nimport {\n isArrayExpression,\n isArrowFunctionExpression,\n isAssignmentExpression,\n isAwaitExpression,\n isBinaryExpression,\n isBigIntLiteral,\n isBooleanLiteral,\n isCallExpression,\n isClassDeclaration,\n isClassExpression,\n isConditionalExpression,\n isEmptyStatement,\n isExportAllDeclaration,\n isExportDefaultDeclaration,\n isExportNamedDeclaration,\n isExpression,\n isExpressionStatement,\n isFunctionDeclaration,\n isFunctionExpression,\n isIdentifier,\n isImportDeclaration,\n isImportSpecifier,\n isLogicalExpression,\n isNewExpression,\n isNullLiteral,\n isNumericLiteral,\n isObjectExpression,\n isObjectMethod,\n isObjectProperty,\n isParenthesizedExpression,\n isSequenceExpression,\n isSpreadElement,\n isStringLiteral,\n isTaggedTemplateExpression,\n isTemplateLiteral,\n isTSAsExpression,\n isTSInstantiationExpression,\n isTSNonNullExpression,\n isTSSatisfiesExpression,\n isUnaryExpression,\n isUpdateExpression,\n isYieldExpression,\n} from '@babel/types';\n\nfunction isTypeOnlyImport(statement: ImportDeclaration): boolean {\n if (statement.importKind === 'type') {\n return true;\n }\n\n return statement.specifiers.every(\n (specifier) =>\n isImportSpecifier(specifier) && specifier.importKind === 'type'\n );\n}\n\nfunction isTypeOnlyReExport(statement: ExportNamedDeclaration): boolean {\n if (!statement.source) {\n return false;\n }\n\n return statement.exportKind === 'type';\n}\n\nfunction unwrapExpression(expr: Expression): Expression {\n let current: Expression = expr;\n\n for (;;) {\n if (isTSAsExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSSatisfiesExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSNonNullExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isTSInstantiationExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (isParenthesizedExpression(current)) {\n current = current.expression;\n // eslint-disable-next-line no-continue\n continue;\n }\n\n return current;\n }\n}\n\nfunction isSafeExpression(expr: Expression): boolean {\n const unwrapped = unwrapExpression(expr);\n\n if (\n isStringLiteral(unwrapped) ||\n isNumericLiteral(unwrapped) ||\n isBooleanLiteral(unwrapped) ||\n isNullLiteral(unwrapped) ||\n isBigIntLiteral(unwrapped)\n ) {\n return true;\n }\n\n if (isArrowFunctionExpression(unwrapped) || isFunctionExpression(unwrapped)) {\n return true;\n }\n\n if (isIdentifier(unwrapped)) {\n return (\n unwrapped.name === 'undefined' ||\n unwrapped.name === 'NaN' ||\n unwrapped.name === 'Infinity'\n );\n }\n\n if (isTemplateLiteral(unwrapped)) {\n return unwrapped.expressions.every(\n (item) => isExpression(item) && isSafeExpression(item)\n );\n }\n\n if (isUnaryExpression(unwrapped)) {\n return isSafeExpression(unwrapped.argument as Expression);\n }\n\n if (isBinaryExpression(unwrapped) || isLogicalExpression(unwrapped)) {\n return (\n isSafeExpression(unwrapped.left as Expression) &&\n isSafeExpression(unwrapped.right as Expression)\n );\n }\n\n if (isConditionalExpression(unwrapped)) {\n return (\n isSafeExpression(unwrapped.test) &&\n isSafeExpression(unwrapped.consequent) &&\n isSafeExpression(unwrapped.alternate)\n );\n }\n\n if (isArrayExpression(unwrapped)) {\n return unwrapped.elements.every((item) => {\n if (item === null) return true;\n if (isSpreadElement(item)) return false;\n return isSafeExpression(item);\n });\n }\n\n if (isObjectExpression(unwrapped)) {\n return unwrapped.properties.every((prop) => {\n if (isSpreadElement(prop)) {\n return false;\n }\n\n if (isObjectMethod(prop)) {\n return !prop.computed;\n }\n\n if (isObjectProperty(prop)) {\n if (prop.computed) {\n return false;\n }\n\n return isExpression(prop.value) && isSafeExpression(prop.value);\n }\n\n return false;\n });\n }\n\n if (\n isCallExpression(unwrapped) ||\n isNewExpression(unwrapped) ||\n isTaggedTemplateExpression(unwrapped) ||\n isAwaitExpression(unwrapped) ||\n isYieldExpression(unwrapped) ||\n isUpdateExpression(unwrapped) ||\n isAssignmentExpression(unwrapped) ||\n isSequenceExpression(unwrapped)\n ) {\n return false;\n }\n\n return false;\n}\n\nfunction isSafeDeclarator(declarator: VariableDeclarator): boolean {\n if (!declarator.init) {\n return true;\n }\n\n return isSafeExpression(declarator.init);\n}\n\nfunction isSafeVariableDeclaration(decl: VariableDeclaration): boolean {\n return decl.declarations.every(isSafeDeclarator);\n}\n\nfunction isSafeStatement(statement: Statement): boolean {\n if (isImportDeclaration(statement)) {\n return isTypeOnlyImport(statement);\n }\n\n if (isExportAllDeclaration(statement)) {\n return false;\n }\n\n if (isExportNamedDeclaration(statement)) {\n if (!statement.declaration) {\n return !statement.source || isTypeOnlyReExport(statement);\n }\n\n if (isFunctionDeclaration(statement.declaration)) {\n return true;\n }\n\n if (isClassDeclaration(statement.declaration)) {\n return false;\n }\n\n if (statement.declaration.type === 'VariableDeclaration') {\n return isSafeVariableDeclaration(statement.declaration);\n }\n\n return false;\n }\n\n if (isExportDefaultDeclaration(statement)) {\n const decl = statement.declaration;\n if (\n isFunctionDeclaration(decl) ||\n isFunctionExpression(decl) ||\n isArrowFunctionExpression(decl) ||\n isClassExpression(decl) ||\n isClassDeclaration(decl)\n ) {\n return false;\n }\n\n return isSafeExpression(decl as Expression);\n }\n\n if (statement.type === 'VariableDeclaration') {\n return isSafeVariableDeclaration(statement);\n }\n\n if (isFunctionDeclaration(statement)) {\n return true;\n }\n\n if (isEmptyStatement(statement)) {\n return true;\n }\n\n if (isExpressionStatement(statement)) {\n // Directives (like \"use strict\") are safe.\n return isStringLiteral(statement.expression);\n }\n\n return false;\n}\n\nexport function isStaticallyEvaluatableModule(ast: File): boolean {\n return ast.program.body.every(isSafeStatement);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"rootLog.js","names":["_shared","require","rootLog","exports","logger","extend"],"sources":["../../src/transform/rootLog.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\nimport { logger } from '@wyw-in-js/shared';\n\nexport const rootLog: Debugger = logger.extend('transform');\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,OAAiB,GAAAC,OAAA,CAAAD,OAAA,GAAGE,cAAM,CAACC,MAAM,CAAC,WAAW,CAAC"}
1
+ {"version":3,"file":"rootLog.js","names":["_shared","require","rootLog","exports","logger","extend"],"sources":["../../src/transform/rootLog.ts"],"sourcesContent":["import type { Debugger } from '@wyw-in-js/shared';\nimport { logger } from '@wyw-in-js/shared';\n\nexport const rootLog: Debugger = logger.extend('transform');\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAEO,MAAMC,OAAiB,GAAAC,OAAA,CAAAD,OAAA,GAAGE,cAAM,CAACC,MAAM,CAAC,WAAW,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Pending","exports","Symbol"],"sources":["../../src/transform/types.ts"],"sourcesContent":["import type { BabelFileResult } from '@babel/core';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { TransformCacheCollection } from '../cache';\nimport type { Options, ITransformFileResult } from '../types';\nimport type { EventEmitter } from '../utils/EventEmitter';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\n\nimport type { Entrypoint } from './Entrypoint';\nimport type { LoadAndParseFn, IEntrypointDependency } from './Entrypoint.types';\nimport type { BaseAction } from './actions/BaseAction';\nimport type {\n IExtracted,\n IWorkflowActionLinariaResult,\n IWorkflowActionNonLinariaResult,\n} from './actions/types';\n\nexport type Services = {\n babel: Core;\n cache: TransformCacheCollection;\n eventEmitter: EventEmitter;\n loadAndParseFn: LoadAndParseFn;\n log: Debugger;\n options: Options & {\n pluginOptions: StrictOptions;\n };\n};\n\nexport interface IBaseNode {\n type: ActionTypes;\n}\n\nexport type ActionByType<TType extends ActionQueueItem['type']> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\nexport const Pending = Symbol('pending');\n\nexport type YieldResult = Exclude<ActionQueueItem['result'], typeof Pending>;\n\nexport type AnyIteratorResult<TMode extends 'async' | 'sync', TResult> = {\n async: Promise<IteratorResult<YieldArg, TResult>>;\n sync: IteratorResult<YieldArg, TResult>;\n}[TMode];\n\nexport interface IBaseAction<TAction extends ActionQueueItem, TResult, TData>\n extends IBaseNode {\n abortSignal: AbortSignal | null;\n createAbortSignal: () => AbortSignal & Disposable;\n data: TData;\n entrypoint: Entrypoint;\n getNext: GetNext;\n idx: string;\n result: TResult | typeof Pending;\n run: <TMode extends 'async' | 'sync'>(\n handler: Handler<TMode, TAction>\n ) => {\n next: (arg: YieldResult) => AnyIteratorResult<TMode, TResult>;\n throw(e: unknown): AnyIteratorResult<TMode, TResult>;\n };\n services: Services;\n}\n\ntype NextParams<\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n> = [\n type: TType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal?: AbortSignal | null,\n];\n\nexport type YieldArg = {\n [K in ActionQueueItem['type']]: NextParams<K>;\n}[ActionQueueItem['type']];\n\nexport type SyncScenarioFor<TResult> = {\n [Symbol.iterator](): SyncScenarioFor<TResult>;\n next(arg: YieldResult): IteratorResult<YieldArg, TResult>;\n return(value: TResult): IteratorResult<YieldArg, TResult>;\n throw(e: unknown): IteratorResult<YieldArg, TResult>;\n};\n\nexport type AsyncScenarioFor<TResult> = {\n [Symbol.asyncIterator](): AsyncScenarioFor<TResult>;\n next(arg: YieldResult): Promise<IteratorResult<YieldArg, TResult>>;\n return(\n value: TResult | PromiseLike<TResult>\n ): Promise<IteratorResult<YieldArg, TResult>>;\n throw(e: unknown): Promise<IteratorResult<YieldArg, TResult>>;\n};\n\nexport type SyncScenarioForAction<TAction extends ActionQueueItem> =\n SyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type AsyncScenarioForAction<TAction extends ActionQueueItem> =\n AsyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type Handler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n> = ((this: BaseAction<TAction>) => {\n async: AsyncScenarioForAction<TAction>;\n sync: SyncScenarioForAction<TAction>;\n}[TMode]) & {\n recover?: (e: unknown, action: BaseAction<TAction>) => YieldArg;\n};\n\nexport type Handlers<TMode extends 'async' | 'sync'> = {\n [TAction in ActionQueueItem as TAction['type']]: Handler<TMode, TAction>;\n};\n\nexport type TypeOfResult<T extends ActionQueueItem> = Exclude<\n T['result'],\n typeof Pending\n>;\n\nexport type GetNext = <\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n>(\n ...args: NextParams<TType, TNextAction>\n) => Generator<\n [TType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n>;\n\nexport interface ICollectActionResult {\n ast: BabelFileResult['ast']; // FIXME: looks like this is not used\n code: BabelFileResult['code'];\n map?: BabelFileResult['map'];\n metadata?: WYWTransformMetadata | null;\n}\n\nexport interface ICollectAction\n extends IBaseAction<\n ICollectAction,\n ICollectActionResult,\n { valueCache: ValueCache }\n > {\n type: 'collect';\n}\n\nexport interface IEvalAction\n extends IBaseAction<IEvalAction, [ValueCache, string[]] | null, undefined> {\n type: 'evalFile';\n}\n\nexport interface IExplodeReexportsAction\n extends IBaseAction<IExplodeReexportsAction, void, undefined> {\n type: 'explodeReexports';\n}\n\nexport interface IExtractAction\n extends IBaseAction<\n IExtractAction,\n IExtracted,\n { processors: { artifacts: Artifact[] }[] }\n > {\n type: 'extract';\n}\n\nexport interface IGetExportsAction\n extends IBaseAction<IGetExportsAction, string[], undefined> {\n type: 'getExports';\n}\n\nexport interface IProcessEntrypointAction\n extends IBaseAction<IProcessEntrypointAction, void, undefined> {\n type: 'processEntrypoint';\n}\n\nexport interface IProcessImportsAction\n extends IBaseAction<\n IProcessImportsAction,\n void,\n {\n resolved: IEntrypointDependency[];\n }\n > {\n type: 'processImports';\n}\n\nexport interface IResolveImportsAction\n extends IBaseAction<\n IResolveImportsAction,\n IEntrypointDependency[],\n {\n imports: Map<string, string[]> | null;\n }\n > {\n type: 'resolveImports';\n}\n\nexport interface ITransformAction\n extends IBaseAction<ITransformAction, ITransformFileResult, undefined> {\n type: 'transform';\n}\n\nexport interface IWorkflowAction\n extends IBaseAction<\n IWorkflowAction,\n IWorkflowActionLinariaResult | IWorkflowActionNonLinariaResult,\n undefined\n > {\n type: 'workflow';\n}\n\nexport type ActionQueueItem =\n | IEvalAction\n | IExplodeReexportsAction\n | IExtractAction\n | IGetExportsAction\n | ICollectAction\n | IProcessEntrypointAction\n | IProcessImportsAction\n | IResolveImportsAction\n | ITransformAction\n | IWorkflowAction;\n\nexport type ActionTypes = ActionQueueItem['type'];\n"],"mappings":";;;;;;AA0CO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAGE,MAAM,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"types.js","names":["Pending","exports","Symbol"],"sources":["../../src/transform/types.ts"],"sourcesContent":["import type { BabelFileResult } from '@babel/core';\n\nimport type { ValueCache } from '@wyw-in-js/processor-utils';\nimport type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';\n\nimport type { Core } from '../babel';\nimport type { TransformCacheCollection } from '../cache';\nimport type { Options, ITransformFileResult } from '../types';\nimport type { EventEmitter } from '../utils/EventEmitter';\nimport type { WYWTransformMetadata } from '../utils/TransformMetadata';\n\nimport type { Entrypoint } from './Entrypoint';\nimport type { LoadAndParseFn, IEntrypointDependency } from './Entrypoint.types';\nimport type { BaseAction } from './actions/BaseAction';\nimport type {\n IExtracted,\n IWorkflowActionLinariaResult,\n IWorkflowActionNonLinariaResult,\n} from './actions/types';\n\nexport type Services = {\n babel: Core;\n cache: TransformCacheCollection;\n emitWarning?: (message: string) => void;\n eventEmitter: EventEmitter;\n loadAndParseFn: LoadAndParseFn;\n log: Debugger;\n options: Options & {\n pluginOptions: StrictOptions;\n };\n};\n\nexport interface IBaseNode {\n type: ActionTypes;\n}\n\nexport type ActionByType<TType extends ActionQueueItem['type']> = Extract<\n ActionQueueItem,\n {\n type: TType;\n }\n>;\n\nexport const Pending = Symbol('pending');\n\nexport type YieldResult = Exclude<ActionQueueItem['result'], typeof Pending>;\n\nexport type AnyIteratorResult<TMode extends 'async' | 'sync', TResult> = {\n async: Promise<IteratorResult<YieldArg, TResult>>;\n sync: IteratorResult<YieldArg, TResult>;\n}[TMode];\n\nexport interface IBaseAction<TAction extends ActionQueueItem, TResult, TData>\n extends IBaseNode {\n abortSignal: AbortSignal | null;\n createAbortSignal: () => AbortSignal & Disposable;\n data: TData;\n entrypoint: Entrypoint;\n getNext: GetNext;\n idx: string;\n result: TResult | typeof Pending;\n run: <TMode extends 'async' | 'sync'>(\n handler: Handler<TMode, TAction>\n ) => {\n next: (arg: YieldResult) => AnyIteratorResult<TMode, TResult>;\n throw(e: unknown): AnyIteratorResult<TMode, TResult>;\n };\n services: Services;\n}\n\ntype NextParams<\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n> = [\n type: TType,\n entrypoint: Entrypoint,\n data: TNextAction['data'],\n abortSignal?: AbortSignal | null,\n];\n\nexport type YieldArg = {\n [K in ActionQueueItem['type']]: NextParams<K>;\n}[ActionQueueItem['type']];\n\nexport type SyncScenarioFor<TResult> = {\n [Symbol.iterator](): SyncScenarioFor<TResult>;\n next(arg: YieldResult): IteratorResult<YieldArg, TResult>;\n return(value: TResult): IteratorResult<YieldArg, TResult>;\n throw(e: unknown): IteratorResult<YieldArg, TResult>;\n};\n\nexport type AsyncScenarioFor<TResult> = {\n [Symbol.asyncIterator](): AsyncScenarioFor<TResult>;\n next(arg: YieldResult): Promise<IteratorResult<YieldArg, TResult>>;\n return(\n value: TResult | PromiseLike<TResult>\n ): Promise<IteratorResult<YieldArg, TResult>>;\n throw(e: unknown): Promise<IteratorResult<YieldArg, TResult>>;\n};\n\nexport type SyncScenarioForAction<TAction extends ActionQueueItem> =\n SyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type AsyncScenarioForAction<TAction extends ActionQueueItem> =\n AsyncScenarioFor<TypeOfResult<TAction>>;\n\nexport type Handler<\n TMode extends 'async' | 'sync',\n TAction extends ActionQueueItem,\n> = ((this: BaseAction<TAction>) => {\n async: AsyncScenarioForAction<TAction>;\n sync: SyncScenarioForAction<TAction>;\n}[TMode]) & {\n recover?: (e: unknown, action: BaseAction<TAction>) => YieldArg;\n};\n\nexport type Handlers<TMode extends 'async' | 'sync'> = {\n [TAction in ActionQueueItem as TAction['type']]: Handler<TMode, TAction>;\n};\n\nexport type TypeOfResult<T extends ActionQueueItem> = Exclude<\n T['result'],\n typeof Pending\n>;\n\nexport type GetNext = <\n TType extends ActionTypes,\n TNextAction extends ActionByType<TType> = ActionByType<TType>,\n>(\n ...args: NextParams<TType, TNextAction>\n) => Generator<\n [TType, Entrypoint, TNextAction['data'], AbortSignal | null],\n TypeOfResult<TNextAction>,\n YieldResult\n>;\n\nexport interface ICollectActionResult {\n ast: BabelFileResult['ast']; // FIXME: looks like this is not used\n code: BabelFileResult['code'];\n map?: BabelFileResult['map'];\n metadata?: WYWTransformMetadata | null;\n}\n\nexport interface ICollectAction\n extends IBaseAction<\n ICollectAction,\n ICollectActionResult,\n { valueCache: ValueCache }\n > {\n type: 'collect';\n}\n\nexport interface IEvalAction\n extends IBaseAction<IEvalAction, [ValueCache, string[]] | null, undefined> {\n type: 'evalFile';\n}\n\nexport interface IExplodeReexportsAction\n extends IBaseAction<IExplodeReexportsAction, void, undefined> {\n type: 'explodeReexports';\n}\n\nexport interface IExtractAction\n extends IBaseAction<\n IExtractAction,\n IExtracted,\n { processors: { artifacts: Artifact[] }[] }\n > {\n type: 'extract';\n}\n\nexport interface IGetExportsAction\n extends IBaseAction<IGetExportsAction, string[], undefined> {\n type: 'getExports';\n}\n\nexport interface IProcessEntrypointAction\n extends IBaseAction<IProcessEntrypointAction, void, undefined> {\n type: 'processEntrypoint';\n}\n\nexport interface IProcessImportsAction\n extends IBaseAction<\n IProcessImportsAction,\n void,\n {\n resolved: IEntrypointDependency[];\n }\n > {\n type: 'processImports';\n}\n\nexport interface IResolveImportsAction\n extends IBaseAction<\n IResolveImportsAction,\n IEntrypointDependency[],\n {\n imports: Map<string, string[]> | null;\n }\n > {\n type: 'resolveImports';\n}\n\nexport interface ITransformAction\n extends IBaseAction<ITransformAction, ITransformFileResult, undefined> {\n type: 'transform';\n}\n\nexport interface IWorkflowAction\n extends IBaseAction<\n IWorkflowAction,\n IWorkflowActionLinariaResult | IWorkflowActionNonLinariaResult,\n undefined\n > {\n type: 'workflow';\n}\n\nexport type ActionQueueItem =\n | IEvalAction\n | IExplodeReexportsAction\n | IExtractAction\n | IGetExportsAction\n | ICollectAction\n | IProcessEntrypointAction\n | IProcessImportsAction\n | IResolveImportsAction\n | ITransformAction\n | IWorkflowAction;\n\nexport type ActionTypes = ActionQueueItem['type'];\n"],"mappings":";;;;;;AA2CO,MAAMA,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAGE,MAAM,CAAC,SAAS,CAAC","ignoreList":[]}
package/lib/transform.js CHANGED
@@ -23,6 +23,8 @@ var _withDefaultServices = require("./transform/helpers/withDefaultServices");
23
23
  * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.
24
24
  */
25
25
 
26
+ const memoizedSyncResolve = new WeakMap();
27
+ const memoizedAsyncResolve = new WeakMap();
26
28
  function transformSync(partialServices, originalCode, syncResolve, customHandlers = {}) {
27
29
  const {
28
30
  options
@@ -47,13 +49,16 @@ function transformSync(partialServices, originalCode, syncResolve, customHandler
47
49
  };
48
50
  }
49
51
  const workflowAction = entrypoint.createAction('workflow', undefined);
52
+ if (!memoizedSyncResolve.has(syncResolve)) {
53
+ memoizedSyncResolve.set(syncResolve, function resolveImports() {
54
+ return _resolveImports.syncResolveImports.call(this, syncResolve);
55
+ });
56
+ }
50
57
  try {
51
58
  const result = (0, _actionRunner.syncActionRunner)(workflowAction, {
52
59
  ..._generators.baseHandlers,
53
60
  ...customHandlers,
54
- resolveImports() {
55
- return _resolveImports.syncResolveImports.call(this, syncResolve);
56
- }
61
+ resolveImports: memoizedSyncResolve.get(syncResolve)
57
62
  });
58
63
  entrypoint.log('%s is ready', entrypoint.name);
59
64
  return result;
@@ -103,13 +108,17 @@ async function transform(partialServices, originalCode, asyncResolve, customHand
103
108
  };
104
109
  }
105
110
  const workflowAction = entrypoint.createAction('workflow', undefined);
111
+ if (!memoizedAsyncResolve.has(asyncResolve)) {
112
+ const resolveImports = function resolveImports() {
113
+ return _resolveImports.asyncResolveImports.call(this, asyncResolve);
114
+ };
115
+ memoizedAsyncResolve.set(asyncResolve, resolveImports);
116
+ }
106
117
  try {
107
118
  const result = await (0, _actionRunner.asyncActionRunner)(workflowAction, {
108
119
  ..._generators.baseHandlers,
109
120
  ...customHandlers,
110
- resolveImports() {
111
- return _resolveImports.asyncResolveImports.call(this, asyncResolve);
112
- }
121
+ resolveImports: memoizedAsyncResolve.get(asyncResolve)
113
122
  });
114
123
  entrypoint.log('%s is ready', entrypoint.name);
115
124
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","names":["_shared","require","_loadWywOptions","_cache","_Entrypoint","_actionRunner","_generators","_resolveImports","_withDefaultServices","transformSync","partialServices","originalCode","syncResolve","customHandlers","options","pluginOptions","loadWywOptions","services","withDefaultServices","isFeatureEnabled","features","filename","cache","TransformCacheCollection","entrypoint","Entrypoint","createRoot","ignored","code","sourceMap","inputSourceMap","workflowAction","createAction","undefined","result","syncActionRunner","baseHandlers","resolveImports","syncResolveImports","call","log","name","err","console","error","transform","asyncResolve","asyncActionRunner","asyncResolveImports"],"sources":["../src/transform.ts"],"sourcesContent":["/**\n * This file exposes sync and async transform functions that:\n * - parse the passed code to AST\n * - builds a dependency graph for the file\n * - shakes each dependency and removes unused code\n * - runs generated code in a sandbox\n * - collects artifacts\n * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.\n */\n\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { PartialOptions } from './transform/helpers/loadWywOptions';\nimport { loadWywOptions } from './transform/helpers/loadWywOptions';\nimport { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n asyncActionRunner,\n syncActionRunner,\n} from './transform/actions/actionRunner';\nimport { baseHandlers } from './transform/generators';\nimport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nimport { withDefaultServices } from './transform/helpers/withDefaultServices';\nimport type {\n Handlers,\n IResolveImportsAction,\n Services,\n} from './transform/types';\nimport type { Result } from './types';\n\ntype PartialServices = Partial<Omit<Services, 'options'>> & {\n options: Omit<Services['options'], 'pluginOptions'> & {\n pluginOptions?: PartialOptions;\n };\n};\n\ntype AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;\n\nexport function transformSync(\n partialServices: PartialServices,\n originalCode: string,\n syncResolve: (what: string, importer: string, stack: string[]) => string,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Result {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n try {\n const result = syncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports() {\n return syncResolveImports.call(this, syncResolve);\n },\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n\nexport async function transform(\n partialServices: PartialServices,\n originalCode: string,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Promise<Result> {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n /*\n * This method can be run simultaneously for multiple files.\n * A shared cache is accessible for all runs, but each run has its own queue\n * to maintain the correct processing order. The cache stores the outcome\n * of tree-shaking, and if the result is already stored in the cache\n * but the \"only\" option has changed, the file will be re-processed using\n * the combined \"only\" option.\n */\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n try {\n const result = await asyncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports(this: IResolveImportsAction) {\n return asyncResolveImports.call(this, asyncResolve);\n },\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","names":["_shared","require","_loadWywOptions","_cache","_Entrypoint","_actionRunner","_generators","_resolveImports","_withDefaultServices","memoizedSyncResolve","WeakMap","memoizedAsyncResolve","transformSync","partialServices","originalCode","syncResolve","customHandlers","options","pluginOptions","loadWywOptions","services","withDefaultServices","isFeatureEnabled","features","filename","cache","TransformCacheCollection","entrypoint","Entrypoint","createRoot","ignored","code","sourceMap","inputSourceMap","workflowAction","createAction","undefined","has","set","resolveImports","syncResolveImports","call","result","syncActionRunner","baseHandlers","get","log","name","err","console","error","transform","asyncResolve","asyncResolveImports","asyncActionRunner"],"sources":["../src/transform.ts"],"sourcesContent":["/**\n * This file exposes sync and async transform functions that:\n * - parse the passed code to AST\n * - builds a dependency graph for the file\n * - shakes each dependency and removes unused code\n * - runs generated code in a sandbox\n * - collects artifacts\n * - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.\n */\n\nimport { isFeatureEnabled } from '@wyw-in-js/shared';\n\nimport type { PartialOptions } from './transform/helpers/loadWywOptions';\nimport { loadWywOptions } from './transform/helpers/loadWywOptions';\nimport { TransformCacheCollection } from './cache';\nimport { Entrypoint } from './transform/Entrypoint';\nimport {\n asyncActionRunner,\n syncActionRunner,\n} from './transform/actions/actionRunner';\nimport { baseHandlers } from './transform/generators';\nimport {\n asyncResolveImports,\n syncResolveImports,\n} from './transform/generators/resolveImports';\nimport { withDefaultServices } from './transform/helpers/withDefaultServices';\nimport type {\n Handler,\n Handlers,\n IResolveImportsAction,\n Services,\n} from './transform/types';\nimport type { Result } from './types';\n\ntype PartialServices = Partial<Omit<Services, 'options'>> & {\n options: Omit<Services['options'], 'pluginOptions'> & {\n pluginOptions?: PartialOptions;\n };\n};\n\ntype AllHandlers<TMode extends 'async' | 'sync'> = Handlers<TMode>;\n\nconst memoizedSyncResolve = new WeakMap<\n (what: string, importer: string, stack: string[]) => string | null,\n Handler<'sync', IResolveImportsAction>\n>();\n\nconst memoizedAsyncResolve = new WeakMap<\n (what: string, importer: string, stack: string[]) => Promise<string | null>,\n Handler<'async' | 'sync', IResolveImportsAction>\n>();\n\nexport function transformSync(\n partialServices: PartialServices,\n originalCode: string,\n syncResolve: (what: string, importer: string, stack: string[]) => string,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Result {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n if (!memoizedSyncResolve.has(syncResolve)) {\n memoizedSyncResolve.set(\n syncResolve,\n function resolveImports(this: IResolveImportsAction) {\n return syncResolveImports.call(this, syncResolve);\n }\n );\n }\n\n try {\n const result = syncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports: memoizedSyncResolve.get(syncResolve)!,\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n\nexport async function transform(\n partialServices: PartialServices,\n originalCode: string,\n asyncResolve: (\n what: string,\n importer: string,\n stack: string[]\n ) => Promise<string | null>,\n customHandlers: Partial<AllHandlers<'sync'>> = {}\n): Promise<Result> {\n const { options } = partialServices;\n const pluginOptions = loadWywOptions(options.pluginOptions);\n const services = withDefaultServices({\n ...partialServices,\n options: {\n ...options,\n pluginOptions,\n },\n });\n\n if (\n !isFeatureEnabled(pluginOptions.features, 'globalCache', options.filename)\n ) {\n // If global cache is disabled, we need to create a new cache for each file\n services.cache = new TransformCacheCollection();\n }\n\n /*\n * This method can be run simultaneously for multiple files.\n * A shared cache is accessible for all runs, but each run has its own queue\n * to maintain the correct processing order. The cache stores the outcome\n * of tree-shaking, and if the result is already stored in the cache\n * but the \"only\" option has changed, the file will be re-processed using\n * the combined \"only\" option.\n */\n const entrypoint = Entrypoint.createRoot(\n services,\n options.filename,\n ['__wywPreval'],\n originalCode\n );\n\n if (entrypoint.ignored) {\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n const workflowAction = entrypoint.createAction('workflow', undefined);\n\n if (!memoizedAsyncResolve.has(asyncResolve)) {\n const resolveImports = function resolveImports(\n this: IResolveImportsAction\n ) {\n return asyncResolveImports.call(this, asyncResolve);\n };\n\n memoizedAsyncResolve.set(asyncResolve, resolveImports);\n }\n\n try {\n const result = await asyncActionRunner(workflowAction, {\n ...baseHandlers,\n ...customHandlers,\n resolveImports: memoizedAsyncResolve.get(asyncResolve)!,\n });\n\n entrypoint.log('%s is ready', entrypoint.name);\n\n return result;\n } catch (err) {\n entrypoint.log('Unhandled error %O', err);\n\n if (\n isFeatureEnabled(pluginOptions.features, 'softErrors', options.filename)\n ) {\n // eslint-disable-next-line no-console\n console.error(`Error during transform of ${entrypoint.name}:`, err);\n\n return {\n code: originalCode,\n sourceMap: options.inputSourceMap,\n };\n }\n\n throw err;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { BabelFile, PluginPass } from '@babel/core';\nimport type { NodePath } from '@babel/traverse';\nimport type { File, Program } from '@babel/types';\nimport type { RawSourceMap } from 'source-map';\n\nimport type { BaseProcessor } from '@wyw-in-js/processor-utils';\nimport type {\n Debugger,\n Replacement,\n Rules,\n StrictOptions,\n} from '@wyw-in-js/shared';\n\nimport type { WYWTransformMetadata } from './utils/TransformMetadata';\n\nexport type PluginOptions = StrictOptions & {\n configFile?: string | false;\n stage?: Stage;\n};\n\nexport type ParentEntrypoint = {\n evaluated: boolean;\n log: Debugger;\n name: string;\n parents: ParentEntrypoint[];\n seqId: number;\n};\n\nexport type Dependencies = string[];\n\nexport interface IPluginState extends PluginPass {\n dependencies: Dependencies;\n file: BabelFile & {\n metadata: {\n wywInJS?: WYWTransformMetadata;\n };\n };\n processors: BaseProcessor[];\n}\n\nexport interface ITransformFileResult {\n code: string;\n metadata: WYWTransformMetadata | null;\n}\n\nexport type Stage = 'preeval' | 'collect';\n\nexport type Result = {\n code: string;\n cssSourceMapText?: string;\n cssText?: string;\n dependencies?: string[];\n replacements?: Replacement[];\n rules?: Rules;\n sourceMap?: RawSourceMap | null;\n};\n\nexport type Options = {\n filename: string;\n inputSourceMap?: RawSourceMap;\n keepComments?: boolean | RegExp;\n outputFilename?: string;\n pluginOptions?: Partial<PluginOptions>;\n prefixer?: boolean;\n preprocessor?: Preprocessor;\n root?: string;\n};\n\nexport type PreprocessorFn = (selector: string, cssText: string) => string;\nexport type Preprocessor = 'none' | 'stylis' | PreprocessorFn | void;\n\nexport type MissedBabelCoreTypes = {\n File: new (\n options: { filename: string },\n file: { ast: File; code: string }\n ) => { path: NodePath<Program> };\n};\n\nexport type JSONValue =\n | null\n | string\n | number\n | boolean\n | JSONObject\n | JSONArray;\n\nexport interface JSONObject {\n [x: string]: JSONValue;\n}\n\nexport type JSONArray = Array<JSONValue>;\n\nexport type Serializable = JSONValue;\n\n/**\n * CSS-related types\n */\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"EventEmitter.js","names":["isOnActionStartArgs","args","exports","isOnActionFinishArgs","EventEmitter","dummy","constructor","onEvent","onAction","onEntrypointEvent","action","actonType","idx","entrypointRef","fn","id","performance","now","result","Promise","then","e","entrypointEvent","sequenceId","event","perf","method","labels","single","datetime","Date"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["export type OnEvent = (\n labels: Record<string, unknown>,\n type: 'start' | 'finish' | 'single',\n event?: unknown\n) => void;\n\nexport interface IActionCreated {\n actionIdx: string;\n actionType: string;\n type: 'actionCreated';\n}\n\nexport interface ICreatedEvent {\n class: string;\n evaluatedOnly: string[];\n filename: string;\n generation: number;\n idx: string;\n isExportsInherited: boolean;\n only: string[];\n parentId: number | null;\n type: 'created';\n}\n\nexport interface ISupersededEvent {\n type: 'superseded';\n with: number;\n}\n\nexport interface ISetTransformResultEvent {\n isNull: boolean;\n type: 'setTransformResult';\n}\n\nexport type EntrypointEvent =\n | IActionCreated\n | ICreatedEvent\n | ISupersededEvent\n | ISetTransformResultEvent;\n\nexport type OnEntrypointEvent = (\n idx: number,\n timestamp: number,\n event: EntrypointEvent\n) => void;\n\nexport type OnActionStartArgs = [\n phase: 'start',\n timestamp: number,\n type: string,\n idx: string,\n entrypointRef: string,\n];\n\nexport type OnActionFinishArgs = [\n phase: 'finish' | 'fail',\n timestamp: number,\n id: number,\n isAsync: boolean,\n error?: unknown,\n];\n\nexport const isOnActionStartArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionStartArgs => {\n return args[0] === 'start';\n};\n\nexport const isOnActionFinishArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionFinishArgs => {\n return args[0] === 'finish' || args[0] === 'fail';\n};\n\nexport interface OnAction {\n (...args: OnActionStartArgs): number;\n (...args: OnActionFinishArgs): void;\n}\n\nexport class EventEmitter {\n static dummy = new EventEmitter(\n () => {},\n () => 0,\n () => {}\n );\n\n constructor(\n protected onEvent: OnEvent,\n protected onAction: OnAction,\n protected onEntrypointEvent: OnEntrypointEvent\n ) {}\n\n public action<TRes>(\n actonType: string,\n idx: string,\n entrypointRef: string,\n fn: () => TRes\n ) {\n const id = this.onAction(\n 'start',\n performance.now(),\n actonType,\n idx,\n entrypointRef\n );\n\n try {\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onAction('finish', performance.now(), id, true),\n (e) => this.onAction('fail', performance.now(), id, true, e)\n );\n } else {\n this.onAction('finish', performance.now(), id, false);\n }\n\n return result;\n } catch (e) {\n this.onAction('fail', performance.now(), id, false, e);\n throw e;\n }\n }\n\n public entrypointEvent(sequenceId: number, event: EntrypointEvent) {\n this.onEntrypointEvent(sequenceId, performance.now(), event);\n }\n\n public perf<TRes>(method: string, fn: () => TRes): TRes {\n const labels = { method };\n\n this.onEvent(labels, 'start');\n\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onEvent(labels, 'finish'),\n () => this.onEvent(labels, 'finish')\n );\n } else {\n this.onEvent(labels, 'finish');\n }\n\n return result;\n }\n\n public single(labels: Record<string, unknown>) {\n this.onEvent(\n {\n ...labels,\n datetime: new Date(),\n },\n 'single'\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EventEmitter.js","names":["isOnActionStartArgs","args","exports","isOnActionFinishArgs","EventEmitter","dummy","constructor","onEvent","onAction","onEntrypointEvent","action","actonType","idx","entrypointRef","fn","id","performance","now","result","Promise","then","e","entrypointEvent","sequenceId","event","perf","method","labels","single","datetime","Date"],"sources":["../../src/utils/EventEmitter.ts"],"sourcesContent":["export type OnEvent = (\n labels: Record<string, unknown>,\n type: 'start' | 'finish' | 'single',\n event?: unknown\n) => void;\n\nexport interface IActionCreated {\n actionIdx: string;\n actionType: string;\n type: 'actionCreated';\n}\n\nexport interface ICreatedEvent {\n class: string;\n evaluatedOnly: string[];\n filename: string;\n generation: number;\n idx: string;\n isExportsInherited: boolean;\n only: string[];\n parentId: number | null;\n type: 'created';\n}\n\nexport interface ISupersededEvent {\n type: 'superseded';\n with: number;\n}\n\nexport interface ISetTransformResultEvent {\n isNull: boolean;\n type: 'setTransformResult';\n}\n\nexport type EntrypointEvent =\n | IActionCreated\n | ICreatedEvent\n | ISupersededEvent\n | ISetTransformResultEvent;\n\nexport type OnEntrypointEvent = (\n idx: number,\n timestamp: number,\n event: EntrypointEvent\n) => void;\n\nexport type OnActionStartArgs = [\n phase: 'start',\n timestamp: number,\n type: string,\n idx: string,\n entrypointRef: string,\n];\n\nexport type OnActionFinishArgs = [\n phase: 'finish' | 'fail',\n timestamp: number,\n id: number,\n isAsync: boolean,\n error?: unknown,\n];\n\nexport const isOnActionStartArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionStartArgs => {\n return args[0] === 'start';\n};\n\nexport const isOnActionFinishArgs = (\n args: OnActionStartArgs | OnActionFinishArgs\n): args is OnActionFinishArgs => {\n return args[0] === 'finish' || args[0] === 'fail';\n};\n\nexport interface OnAction {\n (...args: OnActionStartArgs): number;\n (...args: OnActionFinishArgs): void;\n}\n\nexport class EventEmitter {\n static dummy = new EventEmitter(\n () => {},\n () => 0,\n () => {}\n );\n\n constructor(\n protected onEvent: OnEvent,\n protected onAction: OnAction,\n protected onEntrypointEvent: OnEntrypointEvent\n ) {}\n\n public action<TRes>(\n actonType: string,\n idx: string,\n entrypointRef: string,\n fn: () => TRes\n ) {\n const id = this.onAction(\n 'start',\n performance.now(),\n actonType,\n idx,\n entrypointRef\n );\n\n try {\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onAction('finish', performance.now(), id, true),\n (e) => this.onAction('fail', performance.now(), id, true, e)\n );\n } else {\n this.onAction('finish', performance.now(), id, false);\n }\n\n return result;\n } catch (e) {\n this.onAction('fail', performance.now(), id, false, e);\n throw e;\n }\n }\n\n public entrypointEvent(sequenceId: number, event: EntrypointEvent) {\n this.onEntrypointEvent(sequenceId, performance.now(), event);\n }\n\n public perf<TRes>(method: string, fn: () => TRes): TRes {\n const labels = { method };\n\n this.onEvent(labels, 'start');\n\n const result = fn();\n if (result instanceof Promise) {\n result.then(\n () => this.onEvent(labels, 'finish'),\n () => this.onEvent(labels, 'finish')\n );\n } else {\n this.onEvent(labels, 'finish');\n }\n\n return result;\n }\n\n public single(labels: Record<string, unknown>) {\n this.onEvent(\n {\n ...labels,\n datetime: new Date(),\n },\n 'single'\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ShakerMetadata.js","names":["hasShakerMetadata","metadata","undefined","exports"],"sources":["../../src/utils/ShakerMetadata.ts"],"sourcesContent":["export interface IShakerMetadata {\n imports: Map<string, string[]>;\n}\n\nexport interface IMetadata {\n wywEvaluator: IShakerMetadata;\n}\n\nexport const hasShakerMetadata = (\n metadata: object | undefined\n): metadata is IMetadata =>\n metadata !== undefined && 'wywEvaluator' in metadata;\n"],"mappings":";;;;;;AAQO,MAAMA,iBAAiB,GAC5BC,QAA4B,IAE5BA,QAAQ,KAAKC,SAAS,IAAI,cAAc,IAAID,QAAQ;AAACE,OAAA,CAAAH,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"file":"ShakerMetadata.js","names":["hasShakerMetadata","metadata","undefined","exports"],"sources":["../../src/utils/ShakerMetadata.ts"],"sourcesContent":["export interface IShakerMetadata {\n imports: Map<string, string[]>;\n}\n\nexport interface IMetadata {\n wywEvaluator: IShakerMetadata;\n}\n\nexport const hasShakerMetadata = (\n metadata: object | undefined\n): metadata is IMetadata =>\n metadata !== undefined && 'wywEvaluator' in metadata;\n"],"mappings":";;;;;;AAQO,MAAMA,iBAAiB,GAC5BC,QAA4B,IAE5BA,QAAQ,KAAKC,SAAS,IAAI,cAAc,IAAID,QAAQ;AAACE,OAAA,CAAAH,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TransformMetadata.js","names":["withTransformMetadata","value","wywInJS","exports","getTransformMetadata","metadata","undefined"],"sources":["../../src/utils/TransformMetadata.ts"],"sourcesContent":["import type { Artifact, Replacement, Rules } from '@wyw-in-js/shared';\n\nexport type WYWTransformMetadata = {\n dependencies: string[];\n processors: { artifacts: Artifact[] }[];\n replacements: Replacement[];\n rules: Rules;\n};\n\nexport const withTransformMetadata = (\n value: unknown\n): value is { wywInJS: WYWTransformMetadata } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { wywInJS: unknown }).wywInJS === 'object';\n\nexport const getTransformMetadata = (\n value: unknown\n): WYWTransformMetadata | undefined => {\n if (withTransformMetadata(value) && value.wywInJS !== null) {\n const metadata = value.wywInJS;\n // eslint-disable-next-line no-param-reassign\n delete (value as { wywInJS: unknown }).wywInJS;\n return metadata;\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;AASO,MAAMA,qBAAqB,GAChCC,KAAc,IAEd,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAQA,KAAK,CAA0BC,OAAO,KAAK,QAAQ;AAACC,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAEvD,MAAMI,oBAAoB,GAC/BH,KAAc,IACuB;EACrC,IAAID,qBAAqB,CAACC,KAAK,CAAC,IAAIA,KAAK,CAACC,OAAO,KAAK,IAAI,EAAE;IAC1D,MAAMG,QAAQ,GAAGJ,KAAK,CAACC,OAAO;IAC9B;IACA,OAAQD,KAAK,CAA0BC,OAAO;IAC9C,OAAOG,QAAQ;EACjB;EAEA,OAAOC,SAAS;AAClB,CAAC;AAACH,OAAA,CAAAC,oBAAA,GAAAA,oBAAA"}
1
+ {"version":3,"file":"TransformMetadata.js","names":["withTransformMetadata","value","wywInJS","exports","getTransformMetadata","metadata","undefined"],"sources":["../../src/utils/TransformMetadata.ts"],"sourcesContent":["import type { Artifact, Replacement, Rules } from '@wyw-in-js/shared';\n\nexport type WYWTransformMetadata = {\n dependencies: string[];\n processors: { artifacts: Artifact[] }[];\n replacements: Replacement[];\n rules: Rules;\n};\n\nexport const withTransformMetadata = (\n value: unknown\n): value is { wywInJS: WYWTransformMetadata } =>\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { wywInJS: unknown }).wywInJS === 'object';\n\nexport const getTransformMetadata = (\n value: unknown\n): WYWTransformMetadata | undefined => {\n if (withTransformMetadata(value) && value.wywInJS !== null) {\n const metadata = value.wywInJS;\n // eslint-disable-next-line no-param-reassign\n delete (value as { wywInJS: unknown }).wywInJS;\n return metadata;\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;AASO,MAAMA,qBAAqB,GAChCC,KAAc,IAEd,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,OAAQA,KAAK,CAA0BC,OAAO,KAAK,QAAQ;AAACC,OAAA,CAAAH,qBAAA,GAAAA,qBAAA;AAEvD,MAAMI,oBAAoB,GAC/BH,KAAc,IACuB;EACrC,IAAID,qBAAqB,CAACC,KAAK,CAAC,IAAIA,KAAK,CAACC,OAAO,KAAK,IAAI,EAAE;IAC1D,MAAMG,QAAQ,GAAGJ,KAAK,CAACC,OAAO;IAC9B;IACA,OAAQD,KAAK,CAA0BC,OAAO;IAC9C,OAAOG,QAAQ;EACjB;EAEA,OAAOC,SAAS;AAClB,CAAC;AAACH,OAAA,CAAAC,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"addIdentifierToWywPreval.js","names":["_createId","require","_scopeHelpers","getOrAddWywPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","createId","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToWywPreval","name","newProperty","key","value","shorthand","reference"],"sources":["../../src/utils/addIdentifierToWywPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddWywPreval(scope: Scope): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__wywPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__wywPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__wywPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __wywPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__wywPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__wywPreval', object);\n return object;\n}\n\nexport function addIdentifierToWywPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddWywPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":";;;;;;;AAUA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,SAASE,iBAAiBA,CAACC,KAAY,EAA8B;EAC1E,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,aAAa,CAAC;EAC/C,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAE,IAAAU,kBAAQ,EAAC,SAAS,CAAC;UAC3BC,QAAQ,EAAE,IAAAD,kBAAQ,EAAC,aAAa,CAAC;UACjCJ,IAAI,EAAE;QACR,CAAC;QACDM,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdP,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMZ,YAAoC,GAAG;MAC3Ca,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE,IAAAT,kBAAQ,EAAC,aAAa,CAAC;UAC3BU,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdP,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDe,IAAI,EAAE,OAAO;QACbf,IAAI,EAAE;MACR,CAAC;MACDgB,UAAU,EAAE,EAAE;MACdhB,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAlB,WAAW,CAACyB,OAAO,CAAC,aAAa,EAAEvB,MAAM,CAAC;EAC1C,OAAOA,MAAM;AACf;AAEO,SAASwB,wBAAwBA,CAAC7B,KAAY,EAAE8B,IAAY,EAAE;EACnE,MAAM7B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,iBAAiB,CAACE,SAAS,CAAC;EAC3C,MAAM8B,WAA2B,GAAG;IAClCpB,IAAI,EAAE,gBAAgB;IACtBqB,GAAG,EAAE,IAAAjB,kBAAQ,EAACe,IAAI,CAAC;IACnBG,KAAK,EAAE,IAAAlB,kBAAQ,EAACe,IAAI,CAAC;IACrBhB,QAAQ,EAAE,KAAK;IACfoB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGd,MAAM,CAACe,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpE,IAAAI,uBAAS,EAAChB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D"}
1
+ {"version":3,"file":"addIdentifierToWywPreval.js","names":["_createId","require","_scopeHelpers","getOrAddWywPreval","scope","rootScope","getProgramParent","programPath","path","object","getData","node","sourceType","prevalExport","expression","type","operator","left","computed","createId","property","right","properties","inserted","pushContainer","get","declaration","declarations","id","init","kind","specifiers","setData","addIdentifierToWywPreval","name","newProperty","key","value","shorthand","reference"],"sources":["../../src/utils/addIdentifierToWywPreval.ts"],"sourcesContent":["import type { NodePath, Scope } from '@babel/traverse';\nimport type {\n ExportNamedDeclaration,\n ExpressionStatement,\n Identifier,\n ObjectExpression,\n ObjectProperty,\n Program,\n} from '@babel/types';\n\nimport { createId } from './createId';\nimport { reference } from './scopeHelpers';\n\nexport function getOrAddWywPreval(scope: Scope): NodePath<ObjectExpression> {\n const rootScope = scope.getProgramParent();\n const programPath = rootScope.path as NodePath<Program>;\n\n let object = programPath.getData('__wywPreval');\n if (object) {\n return object;\n }\n\n if (programPath.node.sourceType === 'script') {\n // CJS exports.__wywPreval = {};\n const prevalExport: ExpressionStatement = {\n expression: {\n type: 'AssignmentExpression',\n operator: '=',\n left: {\n computed: false,\n object: createId('exports'),\n property: createId('__wywPreval'),\n type: 'MemberExpression',\n },\n right: {\n properties: [],\n type: 'ObjectExpression',\n },\n },\n type: 'ExpressionStatement',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get('expression.right') as NodePath<ObjectExpression>;\n } else {\n // ESM export const __wywPreval = {};\n const prevalExport: ExportNamedDeclaration = {\n declaration: {\n declarations: [\n {\n id: createId('__wywPreval'),\n init: {\n properties: [],\n type: 'ObjectExpression',\n },\n type: 'VariableDeclarator',\n },\n ],\n kind: 'const',\n type: 'VariableDeclaration',\n },\n specifiers: [],\n type: 'ExportNamedDeclaration',\n };\n\n const [inserted] = programPath.pushContainer('body', [prevalExport]);\n object = inserted.get(\n 'declaration.declarations.0.init'\n ) as NodePath<ObjectExpression>;\n }\n\n programPath.setData('__wywPreval', object);\n return object;\n}\n\nexport function addIdentifierToWywPreval(scope: Scope, name: string) {\n const rootScope = scope.getProgramParent();\n const object = getOrAddWywPreval(rootScope);\n const newProperty: ObjectProperty = {\n type: 'ObjectProperty',\n key: createId(name),\n value: createId(name),\n computed: false,\n shorthand: false,\n };\n\n const [inserted] = object.pushContainer('properties', [newProperty]);\n reference(inserted.get('value') as NodePath<Identifier>);\n}\n"],"mappings":";;;;;;;AAUA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,SAASE,iBAAiBA,CAACC,KAAY,EAA8B;EAC1E,MAAMC,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMC,WAAW,GAAGF,SAAS,CAACG,IAAyB;EAEvD,IAAIC,MAAM,GAAGF,WAAW,CAACG,OAAO,CAAC,aAAa,CAAC;EAC/C,IAAID,MAAM,EAAE;IACV,OAAOA,MAAM;EACf;EAEA,IAAIF,WAAW,CAACI,IAAI,CAACC,UAAU,KAAK,QAAQ,EAAE;IAC5C;IACA,MAAMC,YAAiC,GAAG;MACxCC,UAAU,EAAE;QACVC,IAAI,EAAE,sBAAsB;QAC5BC,QAAQ,EAAE,GAAG;QACbC,IAAI,EAAE;UACJC,QAAQ,EAAE,KAAK;UACfT,MAAM,EAAE,IAAAU,kBAAQ,EAAC,SAAS,CAAC;UAC3BC,QAAQ,EAAE,IAAAD,kBAAQ,EAAC,aAAa,CAAC;UACjCJ,IAAI,EAAE;QACR,CAAC;QACDM,KAAK,EAAE;UACLC,UAAU,EAAE,EAAE;UACdP,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CAAC,kBAAkB,CAA+B;EACzE,CAAC,MAAM;IACL;IACA,MAAMZ,YAAoC,GAAG;MAC3Ca,WAAW,EAAE;QACXC,YAAY,EAAE,CACZ;UACEC,EAAE,EAAE,IAAAT,kBAAQ,EAAC,aAAa,CAAC;UAC3BU,IAAI,EAAE;YACJP,UAAU,EAAE,EAAE;YACdP,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC,CACF;QACDe,IAAI,EAAE,OAAO;QACbf,IAAI,EAAE;MACR,CAAC;MACDgB,UAAU,EAAE,EAAE;MACdhB,IAAI,EAAE;IACR,CAAC;IAED,MAAM,CAACQ,QAAQ,CAAC,GAAGhB,WAAW,CAACiB,aAAa,CAAC,MAAM,EAAE,CAACX,YAAY,CAAC,CAAC;IACpEJ,MAAM,GAAGc,QAAQ,CAACE,GAAG,CACnB,iCACF,CAA+B;EACjC;EAEAlB,WAAW,CAACyB,OAAO,CAAC,aAAa,EAAEvB,MAAM,CAAC;EAC1C,OAAOA,MAAM;AACf;AAEO,SAASwB,wBAAwBA,CAAC7B,KAAY,EAAE8B,IAAY,EAAE;EACnE,MAAM7B,SAAS,GAAGD,KAAK,CAACE,gBAAgB,CAAC,CAAC;EAC1C,MAAMG,MAAM,GAAGN,iBAAiB,CAACE,SAAS,CAAC;EAC3C,MAAM8B,WAA2B,GAAG;IAClCpB,IAAI,EAAE,gBAAgB;IACtBqB,GAAG,EAAE,IAAAjB,kBAAQ,EAACe,IAAI,CAAC;IACnBG,KAAK,EAAE,IAAAlB,kBAAQ,EAACe,IAAI,CAAC;IACrBhB,QAAQ,EAAE,KAAK;IACfoB,SAAS,EAAE;EACb,CAAC;EAED,MAAM,CAACf,QAAQ,CAAC,GAAGd,MAAM,CAACe,aAAa,CAAC,YAAY,EAAE,CAACW,WAAW,CAAC,CAAC;EACpE,IAAAI,uBAAS,EAAChB,QAAQ,CAACE,GAAG,CAAC,OAAO,CAAyB,CAAC;AAC1D","ignoreList":[]}
@@ -11,6 +11,7 @@ var _isExports = require("./isExports");
11
11
  var _isNotNull = require("./isNotNull");
12
12
  var _isRequire = require("./isRequire");
13
13
  var _isTypedNode = require("./isTypedNode");
14
+ var _getConstantStringValue = require("./getConstantStringValue");
14
15
  var _traversalCache = require("./traversalCache");
15
16
  /* eslint @typescript-eslint/no-use-before-define: ["error", { "functions": false }] */
16
17
  /* eslint-disable no-restricted-syntax,no-continue */
@@ -196,6 +197,25 @@ function exportFromVariableDeclarator(path) {
196
197
  [destructed.as.node.name]: init
197
198
  }), {});
198
199
  }
200
+ if (id.isArrayPattern()) {
201
+ // It is `export const [a, , b, ...rest] = arr;`
202
+ const exported = new Set();
203
+ id.traverse({
204
+ Identifier(identifier) {
205
+ if (identifier.isBindingIdentifier()) {
206
+ exported.add(identifier.node.name);
207
+ }
208
+ }
209
+ });
210
+ if (exported.size === 0) {
211
+ return {};
212
+ }
213
+ const result = {};
214
+ exported.forEach(name => {
215
+ result[name] = init;
216
+ });
217
+ return result;
218
+ }
199
219
 
200
220
  // What else it can be?
201
221
  debug('exportFromVariableDeclarator: unknown type of id %o', id.node.type);
@@ -210,11 +230,14 @@ function collectFromDynamicImport(path, state) {
210
230
  return;
211
231
  }
212
232
  const [sourcePath] = callExpression.get('arguments');
213
- if (!sourcePath || !sourcePath.isStringLiteral()) {
214
- // Import should have at least one argument, and it should be StringLiteral
233
+ if (!sourcePath || !sourcePath.isExpression()) {
234
+ // Import should have at least one argument
235
+ return;
236
+ }
237
+ const source = (0, _getConstantStringValue.getConstantStringValue)(sourcePath.node);
238
+ if (source === null) {
215
239
  return;
216
240
  }
217
- const source = sourcePath.node.value;
218
241
  let {
219
242
  parentPath: container,
220
243
  key
@@ -357,11 +380,14 @@ function collectFromRequire(path, state) {
357
380
  return;
358
381
  }
359
382
  const [sourcePath] = callExpression.get('arguments');
360
- if (!sourcePath || !sourcePath.isStringLiteral()) {
361
- // Import should have at least one argument, and it should be StringLiteral
383
+ if (!sourcePath || !sourcePath.isExpression()) {
384
+ // Import should have at least one argument
385
+ return;
386
+ }
387
+ const source = (0, _getConstantStringValue.getConstantStringValue)(sourcePath.node);
388
+ if (source === null) {
362
389
  return;
363
390
  }
364
- const source = sourcePath.node.value;
365
391
  const {
366
392
  parentPath: container,
367
393
  key
@@ -488,6 +514,67 @@ function collectFromRequire(path, state) {
488
514
  });
489
515
  }
490
516
  }
517
+ function collectFromWywDynamicImport(path, state) {
518
+ if (!path.isIdentifier({
519
+ name: '__wyw_dynamic_import'
520
+ })) {
521
+ return;
522
+ }
523
+ const {
524
+ parentPath: callExpression
525
+ } = path;
526
+ if (!callExpression.isCallExpression()) {
527
+ return;
528
+ }
529
+ const [sourcePath] = callExpression.get('arguments');
530
+ if (!sourcePath || !sourcePath.isExpression()) {
531
+ return;
532
+ }
533
+ const source = (0, _getConstantStringValue.getConstantStringValue)(sourcePath.node);
534
+ if (source === null) {
535
+ return;
536
+ }
537
+ let {
538
+ parentPath: container,
539
+ key
540
+ } = callExpression;
541
+ let isAwaited = false;
542
+ if (container.isAwaitExpression()) {
543
+ // If it's not awaited import, it imports the full namespace
544
+ isAwaited = true;
545
+ key = container.key;
546
+ container = container.parentPath;
547
+ }
548
+
549
+ // Is it `const something = await __wyw_dynamic_import("something")`?
550
+ if (key === 'init' && container.isVariableDeclarator()) {
551
+ importFromVariableDeclarator(container, isAwaited).forEach(prop => {
552
+ if (prop.what === '*') {
553
+ const unfolded = unfoldNamespaceImport({
554
+ imported: '*',
555
+ local: prop.as,
556
+ source,
557
+ type: 'dynamic'
558
+ });
559
+ state.imports.push(...unfolded);
560
+ return;
561
+ }
562
+ state.imports.push({
563
+ imported: prop.what,
564
+ local: prop.as,
565
+ source,
566
+ type: 'dynamic'
567
+ });
568
+ });
569
+ return;
570
+ }
571
+ state.imports.push({
572
+ imported: '*',
573
+ local: path,
574
+ source,
575
+ type: 'dynamic'
576
+ });
577
+ }
491
578
  function collectFromVariableDeclarator(path, state) {
492
579
  let found = false;
493
580
  path.traverse({
@@ -676,6 +763,10 @@ function collectFromExports(path, state) {
676
763
  function collectFromRequireOrExports(path, state) {
677
764
  if ((0, _isRequire.isRequire)(path)) {
678
765
  collectFromRequire(path, state);
766
+ } else if (path.isIdentifier({
767
+ name: '__wyw_dynamic_import'
768
+ })) {
769
+ collectFromWywDynamicImport(path, state);
679
770
  } else if ((0, _isExports.isExports)(path)) {
680
771
  collectFromExports(path, state);
681
772
  }