@tramvai/cli 5.46.1 → 5.47.1

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 (49) hide show
  1. package/lib/library/babel/index.d.ts +1 -1
  2. package/lib/library/babel/index.d.ts.map +1 -1
  3. package/lib/library/babel/index.js +5 -23
  4. package/lib/library/babel/index.js.map +1 -1
  5. package/lib/library/swc/index.d.ts.map +1 -1
  6. package/lib/library/swc/index.js +6 -20
  7. package/lib/library/swc/index.js.map +1 -1
  8. package/lib/library/webpack/application/client/common.d.ts.map +1 -1
  9. package/lib/library/webpack/application/client/common.js +6 -1
  10. package/lib/library/webpack/application/client/common.js.map +1 -1
  11. package/lib/library/webpack/plugins/PolyfillCondition.d.ts +8 -0
  12. package/lib/library/webpack/plugins/PolyfillCondition.d.ts.map +1 -0
  13. package/lib/library/webpack/plugins/PolyfillCondition.js +46 -0
  14. package/lib/library/webpack/plugins/PolyfillCondition.js.map +1 -0
  15. package/lib/library/webpack/utils/polyfills/const.d.ts +3 -0
  16. package/lib/library/webpack/utils/polyfills/const.d.ts.map +1 -0
  17. package/lib/library/webpack/utils/polyfills/const.js +49 -0
  18. package/lib/library/webpack/utils/polyfills/const.js.map +1 -0
  19. package/lib/library/webpack/utils/polyfills/polyfillCondition.d.ts +8 -0
  20. package/lib/library/webpack/utils/polyfills/polyfillCondition.d.ts.map +1 -0
  21. package/lib/library/webpack/utils/polyfills/polyfillCondition.js +51 -0
  22. package/lib/library/webpack/utils/polyfills/polyfillCondition.js.map +1 -0
  23. package/lib/library/webpack/utils/polyfills/specToFeature.d.ts +7 -0
  24. package/lib/library/webpack/utils/polyfills/specToFeature.d.ts.map +1 -0
  25. package/lib/library/webpack/utils/polyfills/specToFeature.js +207 -0
  26. package/lib/library/webpack/utils/polyfills/specToFeature.js.map +1 -0
  27. package/lib/library/webpack/utils/transpiler.d.ts +2 -0
  28. package/lib/library/webpack/utils/transpiler.d.ts.map +1 -1
  29. package/lib/library/webpack/utils/transpiler.js +25 -3
  30. package/lib/library/webpack/utils/transpiler.js.map +1 -1
  31. package/lib/schema/autogeneratedSchema.json +3 -6
  32. package/lib/typings/configEntry/cli.d.ts +1 -2
  33. package/lib/typings/configEntry/cli.d.ts.map +1 -1
  34. package/package.json +5 -3
  35. package/schema.json +3 -6
  36. package/src/library/babel/index.ts +5 -28
  37. package/src/library/babel/plugins/lazy-component/lazy-component.spec.ts +2 -1
  38. package/src/library/babel/plugins/lazy-component/legacy-universal-replace.spec.ts +2 -1
  39. package/src/library/swc/index.ts +7 -26
  40. package/src/library/webpack/application/client/common.ts +7 -1
  41. package/src/library/webpack/plugins/PolyfillCondition.ts +62 -0
  42. package/src/library/webpack/utils/polyfills/__integration__/__snapshots__/condition.test.ts.snap +1348 -0
  43. package/src/library/webpack/utils/polyfills/__integration__/condition.test.ts +128 -0
  44. package/src/library/webpack/utils/polyfills/const.ts +46 -0
  45. package/src/library/webpack/utils/polyfills/polyfillCondition.ts +63 -0
  46. package/src/library/webpack/utils/polyfills/specToFeature.ts +243 -0
  47. package/src/library/webpack/utils/transpiler.ts +32 -2
  48. package/src/schema/autogeneratedSchema.json +3 -6
  49. package/src/typings/configEntry/cli.ts +1 -2
@@ -0,0 +1,62 @@
1
+ import {
2
+ getPolyfillCondition,
3
+ getMaxBrowserVersionsByFeatures,
4
+ } from '../utils/polyfills/polyfillCondition';
5
+
6
+ const TARGET_PLUGIN_NAME = 'stats-writer-plugin';
7
+
8
+ export default class PolyfillConditionPlugin {
9
+ constructor(private options: { filename: string }) {
10
+ this.options = options;
11
+ }
12
+
13
+ apply(compiler) {
14
+ compiler.hooks.thisCompilation.tap(TARGET_PLUGIN_NAME, (compilation) => {
15
+ compilation.hooks.processAssets.tap(
16
+ {
17
+ name: TARGET_PLUGIN_NAME,
18
+ stage: compilation.constructor.PROCESS_ASSETS_STAGE_REPORT,
19
+ },
20
+ () => {
21
+ const { entrypoints } = compilation;
22
+ const polyfillEntrypoint = entrypoints.get('polyfill');
23
+
24
+ // If no polyfill entrypoint presented do nothing
25
+ if (!polyfillEntrypoint) return;
26
+
27
+ const polyfillChunk = polyfillEntrypoint.getEntrypointChunk();
28
+ const polyfillModules = compilation.chunkGraph.getChunkModulesIterable(polyfillChunk);
29
+ const coreJsModules = [];
30
+
31
+ for (const module of polyfillModules) {
32
+ if (module.resource && /\/core-js\/modules\//.test(module.resource)) {
33
+ coreJsModules.push(module);
34
+ }
35
+ }
36
+
37
+ const features = coreJsModules.map((module) =>
38
+ getFeatureNameFromModulePath(module.resource)
39
+ );
40
+
41
+ const browserVersionsByFeatures = getMaxBrowserVersionsByFeatures(features);
42
+ const polyfillCondition = getPolyfillCondition(browserVersionsByFeatures);
43
+ const { filename } = this.options;
44
+ const statsJSON = JSON.parse(compilation.assets[filename].source().toString());
45
+
46
+ statsJSON.polyfillCondition = polyfillCondition;
47
+ statsJSON.features = browserVersionsByFeatures;
48
+
49
+ compilation.updateAsset(
50
+ filename,
51
+ new compiler.webpack.sources.RawSource(JSON.stringify(statsJSON))
52
+ );
53
+ }
54
+ );
55
+ });
56
+ }
57
+ }
58
+
59
+ // node_modules/core-js/modules/es.array.push.js => es.array.push
60
+ function getFeatureNameFromModulePath(modulePath) {
61
+ return modulePath.split('/').at(-1).replace(/\.js$/, '');
62
+ }