@wyw-in-js/transform 1.0.6 → 1.0.7

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 (77) hide show
  1. package/esm/cache.js +100 -7
  2. package/esm/cache.js.map +1 -1
  3. package/esm/debug/fileReporter.js.map +1 -1
  4. package/esm/module.js +51 -2
  5. package/esm/module.js.map +1 -1
  6. package/esm/plugins/shaker.js +152 -13
  7. package/esm/plugins/shaker.js.map +1 -1
  8. package/esm/shaker.js +51 -23
  9. package/esm/shaker.js.map +1 -1
  10. package/esm/transform/BaseEntrypoint.js +3 -1
  11. package/esm/transform/BaseEntrypoint.js.map +1 -1
  12. package/esm/transform/Entrypoint.js +60 -17
  13. package/esm/transform/Entrypoint.js.map +1 -1
  14. package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
  15. package/esm/transform/barrelManifest.js +291 -0
  16. package/esm/transform/barrelManifest.js.map +1 -0
  17. package/esm/transform/generators/getExports.js +5 -0
  18. package/esm/transform/generators/getExports.js.map +1 -1
  19. package/esm/transform/generators/processEntrypoint.js +27 -1
  20. package/esm/transform/generators/processEntrypoint.js.map +1 -1
  21. package/esm/transform/generators/resolveImports.js +29 -5
  22. package/esm/transform/generators/resolveImports.js.map +1 -1
  23. package/esm/transform/generators/rewriteBarrelImports.js +733 -0
  24. package/esm/transform/generators/rewriteBarrelImports.js.map +1 -0
  25. package/esm/transform/generators/transform.js +154 -21
  26. package/esm/transform/generators/transform.js.map +1 -1
  27. package/esm/transform/types.js.map +1 -1
  28. package/lib/cache.js +103 -7
  29. package/lib/cache.js.map +1 -1
  30. package/lib/debug/fileReporter.js.map +1 -1
  31. package/lib/module.js +51 -2
  32. package/lib/module.js.map +1 -1
  33. package/lib/plugins/shaker.js +152 -13
  34. package/lib/plugins/shaker.js.map +1 -1
  35. package/lib/shaker.js +58 -26
  36. package/lib/shaker.js.map +1 -1
  37. package/lib/transform/BaseEntrypoint.js +3 -1
  38. package/lib/transform/BaseEntrypoint.js.map +1 -1
  39. package/lib/transform/Entrypoint.js +61 -17
  40. package/lib/transform/Entrypoint.js.map +1 -1
  41. package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
  42. package/lib/transform/barrelManifest.js +300 -0
  43. package/lib/transform/barrelManifest.js.map +1 -0
  44. package/lib/transform/generators/getExports.js +5 -0
  45. package/lib/transform/generators/getExports.js.map +1 -1
  46. package/lib/transform/generators/processEntrypoint.js +27 -1
  47. package/lib/transform/generators/processEntrypoint.js.map +1 -1
  48. package/lib/transform/generators/resolveImports.js +29 -5
  49. package/lib/transform/generators/resolveImports.js.map +1 -1
  50. package/lib/transform/generators/rewriteBarrelImports.js +743 -0
  51. package/lib/transform/generators/rewriteBarrelImports.js.map +1 -0
  52. package/lib/transform/generators/transform.js +158 -22
  53. package/lib/transform/generators/transform.js.map +1 -1
  54. package/lib/transform/types.js.map +1 -1
  55. package/package.json +8 -4
  56. package/types/cache.d.ts +16 -2
  57. package/types/cache.js +111 -7
  58. package/types/debug/fileReporter.d.ts +1 -0
  59. package/types/module.d.ts +3 -0
  60. package/types/module.js +57 -2
  61. package/types/plugins/shaker.js +161 -16
  62. package/types/shaker.d.ts +10 -1
  63. package/types/shaker.js +56 -28
  64. package/types/transform/BaseEntrypoint.d.ts +3 -1
  65. package/types/transform/BaseEntrypoint.js +5 -1
  66. package/types/transform/Entrypoint.d.ts +9 -0
  67. package/types/transform/Entrypoint.js +73 -20
  68. package/types/transform/EvaluatedEntrypoint.d.ts +2 -0
  69. package/types/transform/barrelManifest.d.ts +42 -0
  70. package/types/transform/barrelManifest.js +300 -0
  71. package/types/transform/generators/getExports.js +5 -0
  72. package/types/transform/generators/processEntrypoint.js +26 -1
  73. package/types/transform/generators/resolveImports.js +29 -5
  74. package/types/transform/generators/rewriteBarrelImports.d.ts +15 -0
  75. package/types/transform/generators/rewriteBarrelImports.js +815 -0
  76. package/types/transform/generators/transform.js +148 -19
  77. package/types/transform/types.d.ts +2 -0
@@ -40,11 +40,12 @@ function applyImportOverrides(services, entrypoint, resolvedImports) {
40
40
  };
41
41
  });
42
42
  }
43
- function emitDependency(emitter, entrypoint, imports) {
43
+ function emitDependency(emitter, entrypoint, imports, phase) {
44
44
  emitter.single({
45
45
  type: 'dependency',
46
46
  file: entrypoint.name,
47
47
  only: entrypoint.only,
48
+ phase,
48
49
  imports: imports.map(({ resolved, only }) => ({
49
50
  from: resolved,
50
51
  what: only,
@@ -61,19 +62,32 @@ function filterUnresolved(entrypoint, resolvedImports) {
61
62
  return true;
62
63
  });
63
64
  }
65
+ function getPreResolvedImports(preResolved) {
66
+ return new Map((preResolved ?? []).map((dependency) => [dependency.source, dependency]));
67
+ }
64
68
  /**
65
69
  * Synchronously resolves specified imports with a provided resolver.
66
70
  */
67
71
  function* syncResolveImports(resolve) {
68
72
  const { data: { imports }, entrypoint, services: { eventEmitter }, } = this;
69
73
  const listOfImports = Array.from(imports?.entries() ?? []);
74
+ const preResolvedImports = getPreResolvedImports(this.data.preResolved);
70
75
  const { log } = entrypoint;
71
76
  if (listOfImports.length === 0) {
72
- emitDependency(eventEmitter, entrypoint, []);
77
+ emitDependency(eventEmitter, entrypoint, [], this.data.phase);
73
78
  log('%s has no imports', entrypoint.name);
74
79
  return [];
75
80
  }
76
81
  const resolvedImports = listOfImports.map(([source, only]) => {
82
+ const preResolved = preResolvedImports.get(source);
83
+ if (preResolved) {
84
+ const mergedOnly = (0, Entrypoint_helpers_1.mergeOnly)(preResolved.only, only);
85
+ log('[sync-resolve] ♻️ %s -> %s (only: %o)', source, preResolved.resolved, mergedOnly);
86
+ return {
87
+ ...preResolved,
88
+ only: mergedOnly,
89
+ };
90
+ }
77
91
  let resolved = null;
78
92
  try {
79
93
  resolved = resolve(source, entrypoint.name, (0, Entrypoint_helpers_1.getStack)(entrypoint));
@@ -90,7 +104,7 @@ function* syncResolveImports(resolve) {
90
104
  });
91
105
  const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
92
106
  const filteredImports = filterUnresolved(entrypoint, overriddenImports);
93
- emitDependency(eventEmitter, entrypoint, filteredImports);
107
+ emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);
94
108
  return filteredImports;
95
109
  }
96
110
  /**
@@ -99,9 +113,10 @@ function* syncResolveImports(resolve) {
99
113
  async function* asyncResolveImports(resolve) {
100
114
  const { data: { imports }, entrypoint, services: { eventEmitter }, } = this;
101
115
  const listOfImports = Array.from(imports?.entries() ?? []);
116
+ const preResolvedImports = getPreResolvedImports(this.data.preResolved);
102
117
  const { log } = entrypoint;
103
118
  if (listOfImports.length === 0) {
104
- emitDependency(eventEmitter, entrypoint, []);
119
+ emitDependency(eventEmitter, entrypoint, [], this.data.phase);
105
120
  log('%s has no imports', entrypoint.name);
106
121
  return [];
107
122
  }
@@ -124,6 +139,15 @@ async function* asyncResolveImports(resolve) {
124
139
  };
125
140
  };
126
141
  const resolvedImports = await Promise.all(listOfImports.map(([source, importsOnly]) => {
142
+ const preResolved = preResolvedImports.get(source);
143
+ if (preResolved) {
144
+ const mergedOnly = (0, Entrypoint_helpers_1.mergeOnly)(preResolved.only, importsOnly);
145
+ log('[async-resolve] ♻️ %s (%o) in %s -> %s', source, mergedOnly, entrypoint.name, preResolved.resolved);
146
+ return {
147
+ ...preResolved,
148
+ only: mergedOnly,
149
+ };
150
+ }
127
151
  const cached = entrypoint.getDependency(source);
128
152
  if (cached) {
129
153
  return {
@@ -155,6 +179,6 @@ async function* asyncResolveImports(resolve) {
155
179
  log('resolved %d imports', resolvedImports.length);
156
180
  const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
157
181
  const filteredImports = filterUnresolved(entrypoint, overriddenImports);
158
- emitDependency(eventEmitter, entrypoint, filteredImports);
182
+ emitDependency(eventEmitter, entrypoint, filteredImports, this.data.phase);
159
183
  return filteredImports;
160
184
  }
@@ -0,0 +1,15 @@
1
+ import * as t from '@babel/types';
2
+ import type { IEntrypointDependency } from '../Entrypoint.types';
3
+ import type { ITransformAction } from '../types';
4
+ type RewriteResult = {
5
+ ast: t.File;
6
+ code: string;
7
+ fullyRewrittenSources: string[];
8
+ imports: Map<string, string[]> | null;
9
+ optimizedCount: number;
10
+ partialFallbackSources: string[];
11
+ preResolvedImports: IEntrypointDependency[];
12
+ skippedCount: number;
13
+ };
14
+ export declare function rewriteOptimizedBarrelImports(this: ITransformAction, ast: t.File, code: string, resolvedImports: IEntrypointDependency[]): Generator<any, RewriteResult, any>;
15
+ export {};