@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.
- package/esm/cache.js +100 -7
- package/esm/cache.js.map +1 -1
- package/esm/debug/fileReporter.js.map +1 -1
- package/esm/module.js +51 -2
- package/esm/module.js.map +1 -1
- package/esm/plugins/shaker.js +152 -13
- package/esm/plugins/shaker.js.map +1 -1
- package/esm/shaker.js +51 -23
- package/esm/shaker.js.map +1 -1
- package/esm/transform/BaseEntrypoint.js +3 -1
- package/esm/transform/BaseEntrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.js +60 -17
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
- package/esm/transform/barrelManifest.js +291 -0
- package/esm/transform/barrelManifest.js.map +1 -0
- package/esm/transform/generators/getExports.js +5 -0
- package/esm/transform/generators/getExports.js.map +1 -1
- package/esm/transform/generators/processEntrypoint.js +27 -1
- package/esm/transform/generators/processEntrypoint.js.map +1 -1
- package/esm/transform/generators/resolveImports.js +29 -5
- package/esm/transform/generators/resolveImports.js.map +1 -1
- package/esm/transform/generators/rewriteBarrelImports.js +733 -0
- package/esm/transform/generators/rewriteBarrelImports.js.map +1 -0
- package/esm/transform/generators/transform.js +154 -21
- package/esm/transform/generators/transform.js.map +1 -1
- package/esm/transform/types.js.map +1 -1
- package/lib/cache.js +103 -7
- package/lib/cache.js.map +1 -1
- package/lib/debug/fileReporter.js.map +1 -1
- package/lib/module.js +51 -2
- package/lib/module.js.map +1 -1
- package/lib/plugins/shaker.js +152 -13
- package/lib/plugins/shaker.js.map +1 -1
- package/lib/shaker.js +58 -26
- package/lib/shaker.js.map +1 -1
- package/lib/transform/BaseEntrypoint.js +3 -1
- package/lib/transform/BaseEntrypoint.js.map +1 -1
- package/lib/transform/Entrypoint.js +61 -17
- package/lib/transform/Entrypoint.js.map +1 -1
- package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
- package/lib/transform/barrelManifest.js +300 -0
- package/lib/transform/barrelManifest.js.map +1 -0
- package/lib/transform/generators/getExports.js +5 -0
- package/lib/transform/generators/getExports.js.map +1 -1
- package/lib/transform/generators/processEntrypoint.js +27 -1
- package/lib/transform/generators/processEntrypoint.js.map +1 -1
- package/lib/transform/generators/resolveImports.js +29 -5
- package/lib/transform/generators/resolveImports.js.map +1 -1
- package/lib/transform/generators/rewriteBarrelImports.js +743 -0
- package/lib/transform/generators/rewriteBarrelImports.js.map +1 -0
- package/lib/transform/generators/transform.js +158 -22
- package/lib/transform/generators/transform.js.map +1 -1
- package/lib/transform/types.js.map +1 -1
- package/package.json +8 -4
- package/types/cache.d.ts +16 -2
- package/types/cache.js +111 -7
- package/types/debug/fileReporter.d.ts +1 -0
- package/types/module.d.ts +3 -0
- package/types/module.js +57 -2
- package/types/plugins/shaker.js +161 -16
- package/types/shaker.d.ts +10 -1
- package/types/shaker.js +56 -28
- package/types/transform/BaseEntrypoint.d.ts +3 -1
- package/types/transform/BaseEntrypoint.js +5 -1
- package/types/transform/Entrypoint.d.ts +9 -0
- package/types/transform/Entrypoint.js +73 -20
- package/types/transform/EvaluatedEntrypoint.d.ts +2 -0
- package/types/transform/barrelManifest.d.ts +42 -0
- package/types/transform/barrelManifest.js +300 -0
- package/types/transform/generators/getExports.js +5 -0
- package/types/transform/generators/processEntrypoint.js +26 -1
- package/types/transform/generators/resolveImports.js +29 -5
- package/types/transform/generators/rewriteBarrelImports.d.ts +15 -0
- package/types/transform/generators/rewriteBarrelImports.js +815 -0
- package/types/transform/generators/transform.js +148 -19
- 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 {};
|