packtory 0.0.87 → 0.0.88
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/dead-code-eliminator/analyzed-bundle.d.ts +1 -0
- package/dead-code-eliminator/analyzed-bundle.d.ts.map +1 -1
- package/dead-code-eliminator/analyzed-bundle.js.map +1 -1
- package/dead-code-eliminator/code-file-analyzer.js +10 -3
- package/dead-code-eliminator/code-file-analyzer.js.map +1 -1
- package/dead-code-eliminator/dependency-metadata.js +206 -0
- package/dead-code-eliminator/dependency-metadata.js.map +1 -0
- package/dead-code-eliminator/eliminator.js +5 -294
- package/dead-code-eliminator/eliminator.js.map +1 -1
- package/dead-code-eliminator/expression-unwrapping.js.map +1 -1
- package/dead-code-eliminator/imported-expression-origin.js +23 -11
- package/dead-code-eliminator/imported-expression-origin.js.map +1 -1
- package/dead-code-eliminator/liveness/asset-side-effects.js +10 -0
- package/dead-code-eliminator/liveness/asset-side-effects.js.map +1 -0
- package/dead-code-eliminator/liveness/boolean-facts.js +99 -0
- package/dead-code-eliminator/liveness/boolean-facts.js.map +1 -0
- package/dead-code-eliminator/liveness/external-module-resolution.js +173 -0
- package/dead-code-eliminator/liveness/external-module-resolution.js.map +1 -0
- package/dead-code-eliminator/liveness/external-purity-summary.js +295 -0
- package/dead-code-eliminator/liveness/external-purity-summary.js.map +1 -0
- package/dead-code-eliminator/liveness/external-purity.js +40 -0
- package/dead-code-eliminator/liveness/external-purity.js.map +1 -0
- package/dead-code-eliminator/liveness/module-analysis.js +28 -0
- package/dead-code-eliminator/liveness/module-analysis.js.map +1 -0
- package/dead-code-eliminator/liveness/resource-retention.js +79 -0
- package/dead-code-eliminator/liveness/resource-retention.js.map +1 -0
- package/dead-code-eliminator/liveness/runtime-code.js +16 -0
- package/dead-code-eliminator/liveness/runtime-code.js.map +1 -0
- package/dead-code-eliminator/load-bundle.js +25 -9
- package/dead-code-eliminator/load-bundle.js.map +1 -1
- package/dead-code-eliminator/pure-expression.js +18 -6
- package/dead-code-eliminator/pure-expression.js.map +1 -1
- package/dead-code-eliminator/reachability/local-seed-gathering.js +1 -2
- package/dead-code-eliminator/reachability/local-seed-gathering.js.map +1 -1
- package/dead-code-eliminator/side-effect-classifier.js +23 -10
- package/dead-code-eliminator/side-effect-classifier.js.map +1 -1
- package/dead-code-eliminator/side-effects-field.js +2 -2
- package/dead-code-eliminator/side-effects-field.js.map +1 -1
- package/dead-code-eliminator/statement-classifiers.js +2 -7
- package/dead-code-eliminator/statement-classifiers.js.map +1 -1
- package/dead-code-eliminator/transform/declaration-removal.js +4 -0
- package/dead-code-eliminator/transform/declaration-removal.js.map +1 -1
- package/package.json +3 -3
- package/packages/package-processor.composition.d.ts.map +1 -1
- package/packages/package-processor.composition.js +1 -2
- package/packages/package-processor.composition.js.map +1 -1
- package/packtory/package-processor-build.js +6 -1
- package/packtory/package-processor-build.js.map +1 -1
- package/packtory/stages/package-analysis-stage.js +27 -0
- package/packtory/stages/package-analysis-stage.js.map +1 -1
- package/sbom.cdx.json +15 -15
|
@@ -20,6 +20,7 @@ export type AnalyzedBundle = Except<LinkedBundle, 'contents'> & {
|
|
|
20
20
|
export type EliminationInput = {
|
|
21
21
|
readonly bundle: LinkedBundle;
|
|
22
22
|
readonly transformationsEnabled: boolean;
|
|
23
|
+
readonly substitutionPublicModuleSourceFilePaths: ReadonlySet<string>;
|
|
23
24
|
readonly deadCodeElimination?: DeadCodeEliminationSettings | undefined;
|
|
24
25
|
};
|
|
25
26
|
export type DeadCodeEliminator = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzed-bundle.d.ts","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/analyzed-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAErF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IACxD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,KAAK,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;CAC1F,CAAC;AAEF,wBAAgB,uBAAuB,IAAI,YAAY,CAMtD"}
|
|
1
|
+
{"version":3,"file":"analyzed-bundle.d.ts","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/analyzed-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC/F,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAErF,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,oBAAoB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IACxD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,uCAAuC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;CAC1E,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,KAAK,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;CAC1F,CAAC;AAEF,wBAAgB,uBAAuB,IAAI,YAAY,CAMtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzed-bundle.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/analyzed-bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyzed-bundle.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/analyzed-bundle.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,uBAAuB;IACnC,OAAO;QACH,iBAAiB,EAAE,IAAI,GAAG,EAAU;QACpC,oBAAoB,EAAE,EAAE;QACxB,iBAAiB,EAAE,IAAI,GAAG,EAAU;KACvC,CAAC;AACN,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createEmptyFileAnalysis } from "./analyzed-bundle.js";
|
|
2
|
+
import { buildModuleAnalysis } from "./liveness/module-analysis.js";
|
|
2
3
|
import { bindingId } from "./reachability/binding-id.js";
|
|
3
|
-
import { classifySideEffects } from "./side-effect-classifier.js";
|
|
4
4
|
import { applyRemovalPlan } from "./transform/declaration-remover.js";
|
|
5
5
|
const noTransforms = [];
|
|
6
6
|
function allBindingNamesFor(loaded) {
|
|
@@ -21,9 +21,16 @@ function transformSourceFile(sourceFile, surviving) {
|
|
|
21
21
|
return { transformedCode: sourceFile.getFullText(), atoms: result.atoms };
|
|
22
22
|
}
|
|
23
23
|
function analyzeCodeFile(loaded, context) {
|
|
24
|
-
const
|
|
24
|
+
const moduleAnalysis = buildModuleAnalysis({
|
|
25
|
+
sourceFilePath: loaded.resource.fileDescription.sourceFilePath,
|
|
26
|
+
targetFilePath: loaded.resource.fileDescription.targetFilePath,
|
|
27
|
+
sourceFile: loaded.sourceFile,
|
|
28
|
+
bindings: loaded.bindings,
|
|
29
|
+
deadCodeElimination: context.deadCodeElimination
|
|
30
|
+
});
|
|
31
|
+
const sideEffectStatements = moduleAnalysis.effects;
|
|
25
32
|
const reachableBindings = reachableBindingsFor(loaded, context.reachable);
|
|
26
|
-
const shouldTransform = context.transformationsEnabled
|
|
33
|
+
const shouldTransform = context.transformationsEnabled;
|
|
27
34
|
const survivingBindings = shouldTransform ? reachableBindings : allBindingNamesFor(loaded);
|
|
28
35
|
return {
|
|
29
36
|
analysis: { survivingBindings, sideEffectStatements, sideEffectImports: new Set() },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-file-analyzer.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/code-file-analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAkD,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"code-file-analyzer.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/code-file-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { getModuleReferenceLiterals } from "../dependency-scanner/source-file-references.js";
|
|
3
|
+
import { isCodeTargetPath } from "./liveness/runtime-code.js";
|
|
4
|
+
const scopedPackageSegmentCount = 2;
|
|
5
|
+
function packageNameFromSpecifier(specifier) {
|
|
6
|
+
if (!specifier.startsWith('@')) {
|
|
7
|
+
return specifier.split('/', 1)[0] ?? specifier;
|
|
8
|
+
}
|
|
9
|
+
const [scope, name] = specifier.split('/', scopedPackageSegmentCount);
|
|
10
|
+
if (name === undefined) {
|
|
11
|
+
throw new Error(`Invalid package specifier "${specifier}"`);
|
|
12
|
+
}
|
|
13
|
+
return `${scope}/${name}`;
|
|
14
|
+
}
|
|
15
|
+
function isRelativeOrAbsoluteSpecifier(specifier) {
|
|
16
|
+
return specifier.startsWith('.') || path.isAbsolute(specifier);
|
|
17
|
+
}
|
|
18
|
+
function isPackageSpecifier(specifier) {
|
|
19
|
+
return !isRelativeOrAbsoluteSpecifier(specifier) && !specifier.startsWith('#');
|
|
20
|
+
}
|
|
21
|
+
function collectImportSpecifiers(sourceFile) {
|
|
22
|
+
return getModuleReferenceLiterals(sourceFile)
|
|
23
|
+
.map(function (literal) {
|
|
24
|
+
return literal.getLiteralValue();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function addPackageSpecifier(specifiersByName, specifier) {
|
|
28
|
+
const name = packageNameFromSpecifier(specifier);
|
|
29
|
+
const specifiers = new Set(specifiersByName.get(name));
|
|
30
|
+
specifiers.add(specifier);
|
|
31
|
+
const next = new Map(specifiersByName);
|
|
32
|
+
next.set(name, specifiers);
|
|
33
|
+
return next;
|
|
34
|
+
}
|
|
35
|
+
function packageSpecifiersFor(resource, sourceFilesByPath) {
|
|
36
|
+
let specifiersByName = new Map();
|
|
37
|
+
const sourceFile = sourceFilesByPath.get(resource.fileDescription.sourceFilePath);
|
|
38
|
+
if (sourceFile === undefined) {
|
|
39
|
+
return specifiersByName;
|
|
40
|
+
}
|
|
41
|
+
for (const specifier of collectImportSpecifiers(sourceFile)) {
|
|
42
|
+
if (isPackageSpecifier(specifier)) {
|
|
43
|
+
specifiersByName = addPackageSpecifier(specifiersByName, specifier);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return specifiersByName;
|
|
47
|
+
}
|
|
48
|
+
function localCandidates(sourceFilePath, specifier) {
|
|
49
|
+
const resolved = path.resolve(path.dirname(sourceFilePath), specifier);
|
|
50
|
+
const candidates = [resolved];
|
|
51
|
+
if (sourceFilePath.endsWith('.d.ts')) {
|
|
52
|
+
candidates.push(resolved.replace(/\.js$/u, '.d.ts'));
|
|
53
|
+
}
|
|
54
|
+
candidates.push(`${resolved}.js`, `${resolved}.jsx`, `${resolved}.ts`, `${resolved}.tsx`, `${resolved}.json`);
|
|
55
|
+
return candidates;
|
|
56
|
+
}
|
|
57
|
+
function survivingLocalPaths(resource, sourceFilesByPath) {
|
|
58
|
+
const paths = new Set();
|
|
59
|
+
for (const [sourceFilePath, sourceFile] of sourceFilesByPath) {
|
|
60
|
+
if (sourceFilePath === resource.fileDescription.sourceFilePath) {
|
|
61
|
+
for (const specifier of collectImportSpecifiers(sourceFile)) {
|
|
62
|
+
if (isRelativeOrAbsoluteSpecifier(specifier)) {
|
|
63
|
+
for (const candidate of localCandidates(resource.fileDescription.sourceFilePath, specifier)) {
|
|
64
|
+
paths.add(candidate);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return paths;
|
|
71
|
+
}
|
|
72
|
+
function recomputeDirectDependencies(resource, sourceFilesByPath) {
|
|
73
|
+
if (!isCodeTargetPath(resource.fileDescription.targetFilePath)) {
|
|
74
|
+
return resource;
|
|
75
|
+
}
|
|
76
|
+
const survivingPaths = survivingLocalPaths(resource, sourceFilesByPath);
|
|
77
|
+
return {
|
|
78
|
+
...resource,
|
|
79
|
+
directDependencies: new Set(Array.from(resource.directDependencies).filter(function (dependency) {
|
|
80
|
+
return survivingPaths.has(dependency) || dependency.endsWith('.map');
|
|
81
|
+
}))
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function referencedPackagesByPath(contents, sourceFilesByPath) {
|
|
85
|
+
return new Map(contents.map(function (resource) {
|
|
86
|
+
return [resource.fileDescription.sourceFilePath, packageSpecifiersFor(resource, sourceFilesByPath)];
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
function legacyDependencyReference(dependency, sourceFilePath) {
|
|
90
|
+
return {
|
|
91
|
+
sourceFilePath,
|
|
92
|
+
sourceSpecifier: dependency.name,
|
|
93
|
+
emittedSpecifier: dependency.name
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function legacyDependencyReferences(dependency) {
|
|
97
|
+
const [sourceFilePath, ...rest] = dependency.referencedFrom;
|
|
98
|
+
return [
|
|
99
|
+
legacyDependencyReference(dependency, sourceFilePath),
|
|
100
|
+
...rest.map(function (filePath) {
|
|
101
|
+
return legacyDependencyReference(dependency, filePath);
|
|
102
|
+
})
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
function dependencyReferences(dependency) {
|
|
106
|
+
return dependency.references ?? legacyDependencyReferences(dependency);
|
|
107
|
+
}
|
|
108
|
+
function isSameDependencyReference(left, right) {
|
|
109
|
+
return left.sourceFilePath === right.sourceFilePath &&
|
|
110
|
+
left.sourceSpecifier === right.sourceSpecifier &&
|
|
111
|
+
left.emittedSpecifier === right.emittedSpecifier;
|
|
112
|
+
}
|
|
113
|
+
function uniqueDependencyReferences(references) {
|
|
114
|
+
const [firstReference, ...rest] = references;
|
|
115
|
+
const unique = [firstReference];
|
|
116
|
+
for (const reference of rest) {
|
|
117
|
+
const isNewReference = unique.every(function (value) {
|
|
118
|
+
return !isSameDependencyReference(value, reference);
|
|
119
|
+
});
|
|
120
|
+
if (isNewReference) {
|
|
121
|
+
unique.push(reference);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return unique;
|
|
125
|
+
}
|
|
126
|
+
function mergeDependencySourcePaths(dependency, reference) {
|
|
127
|
+
const sourcePaths = new Set([...dependency.referencedFrom, reference.sourceFilePath]);
|
|
128
|
+
sourcePaths.delete(dependency.referencedFrom[0]);
|
|
129
|
+
return [dependency.referencedFrom[0], ...sourcePaths];
|
|
130
|
+
}
|
|
131
|
+
function mergeDependencyReferences(dependency, reference) {
|
|
132
|
+
const [firstReference, ...rest] = dependencyReferences(dependency);
|
|
133
|
+
return uniqueDependencyReferences([firstReference, ...rest, reference]);
|
|
134
|
+
}
|
|
135
|
+
function addReference(dependencies, dependencyName, reference) {
|
|
136
|
+
const dependency = dependencies.get(dependencyName);
|
|
137
|
+
if (dependency === undefined) {
|
|
138
|
+
dependencies.set(dependencyName, {
|
|
139
|
+
name: dependencyName,
|
|
140
|
+
referencedFrom: [reference.sourceFilePath],
|
|
141
|
+
references: [reference]
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
dependencies.set(dependencyName, {
|
|
146
|
+
name: dependencyName,
|
|
147
|
+
referencedFrom: mergeDependencySourcePaths(dependency, reference),
|
|
148
|
+
references: mergeDependencyReferences(dependency, reference)
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function shouldPreserveDependencyReference(dependency, reference, packagesByPath, preservedReferencePaths) {
|
|
152
|
+
if (preservedReferencePaths.has(reference.sourceFilePath)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
const emittedSpecifiers = packagesByPath.get(reference.sourceFilePath)?.get(dependency.name);
|
|
156
|
+
if (emittedSpecifiers === undefined) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
return dependency.references === undefined ||
|
|
160
|
+
emittedSpecifiers.has(reference.emittedSpecifier);
|
|
161
|
+
}
|
|
162
|
+
function recomputeDependencies(dependencies, packagesByPath, preservedReferencePaths) {
|
|
163
|
+
const recomputed = new Map();
|
|
164
|
+
for (const dependency of dependencies.values()) {
|
|
165
|
+
for (const reference of dependencyReferences(dependency)) {
|
|
166
|
+
if (shouldPreserveDependencyReference(dependency, reference, packagesByPath, preservedReferencePaths)) {
|
|
167
|
+
addReference(recomputed, dependency.name, reference);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return recomputed;
|
|
172
|
+
}
|
|
173
|
+
function declarationSourcePaths(contents) {
|
|
174
|
+
const paths = new Set();
|
|
175
|
+
for (const resource of contents) {
|
|
176
|
+
if (resource.fileDescription.targetFilePath.endsWith('.d.ts')) {
|
|
177
|
+
paths.add(resource.fileDescription.sourceFilePath);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return paths;
|
|
181
|
+
}
|
|
182
|
+
function filterSubstitutedSourcePaths(substitutedSourceFilePathsByPackageName, linkedBundleDependencies) {
|
|
183
|
+
return new Map(Array.from(substitutedSourceFilePathsByPackageName).filter(function ([packageName]) {
|
|
184
|
+
return linkedBundleDependencies.has(packageName);
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
export function indexSourceFiles(loaded) {
|
|
188
|
+
return new Map(loaded.fileBindings.map(function (binding) {
|
|
189
|
+
return [binding.sourceFilePath, binding.sourceFile];
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
export function recomputeDependencyMetadata(bundle, contents, sourceFileIndex) {
|
|
193
|
+
const recomputedContents = contents.map(function (resource) {
|
|
194
|
+
return recomputeDirectDependencies(resource, sourceFileIndex);
|
|
195
|
+
});
|
|
196
|
+
const packagesByPath = referencedPackagesByPath(recomputedContents, sourceFileIndex);
|
|
197
|
+
const preservedReferencePaths = declarationSourcePaths(recomputedContents);
|
|
198
|
+
const linkedBundleDependencies = recomputeDependencies(bundle.linkedBundleDependencies, packagesByPath, preservedReferencePaths);
|
|
199
|
+
return {
|
|
200
|
+
contents: recomputedContents,
|
|
201
|
+
externalDependencies: recomputeDependencies(bundle.externalDependencies, packagesByPath, preservedReferencePaths),
|
|
202
|
+
linkedBundleDependencies,
|
|
203
|
+
substitutedSourceFilePathsByPackageName: filterSubstitutedSourcePaths(bundle.substitutedSourceFilePathsByPackageName, linkedBundleDependencies)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=dependency-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-metadata.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/dependency-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,295 +1,11 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { getModuleReferenceLiterals } from "../dependency-scanner/source-file-references.js";
|
|
3
1
|
import { buildAnalyzedResource } from "./code-file-analyzer.js";
|
|
4
2
|
import { buildCrossBundleSeeds } from "./cross-bundle/cross-bundle-seeds.js";
|
|
3
|
+
import { indexSourceFiles, recomputeDependencyMetadata } from "./dependency-metadata.js";
|
|
5
4
|
import { maybeEmitElimination } from "./elimination-emitter.js";
|
|
6
5
|
import { loadBundle } from "./load-bundle.js";
|
|
6
|
+
import { pruneContents } from "./liveness/resource-retention.js";
|
|
7
7
|
import { buildMapPathTransformIndex, recomposePairedSourceMaps } from "./source-map-recomposition.js";
|
|
8
8
|
import { computeSideEffectsField } from "./side-effects-field.js";
|
|
9
|
-
const scopedPackageSegmentCount = 2;
|
|
10
|
-
const codeFileExtensions = new Set(['.cjs', '.cts', '.js', '.jsx', '.mjs', '.mts', '.ts', '.tsx']);
|
|
11
|
-
const declarationCodeFileExtensions = ['.d.ts', '.d.cts', '.d.mts'];
|
|
12
|
-
function packageNameFromSpecifier(specifier) {
|
|
13
|
-
if (!specifier.startsWith('@')) {
|
|
14
|
-
return specifier.split('/', 1)[0] ?? specifier;
|
|
15
|
-
}
|
|
16
|
-
const [scope, name] = specifier.split('/', scopedPackageSegmentCount);
|
|
17
|
-
if (name === undefined) {
|
|
18
|
-
throw new Error(`Invalid package specifier "${specifier}"`);
|
|
19
|
-
}
|
|
20
|
-
return `${scope}/${name}`;
|
|
21
|
-
}
|
|
22
|
-
function isRelativeOrAbsoluteSpecifier(specifier) {
|
|
23
|
-
return specifier.startsWith('.') || path.isAbsolute(specifier);
|
|
24
|
-
}
|
|
25
|
-
function isPackageSpecifier(specifier) {
|
|
26
|
-
return !isRelativeOrAbsoluteSpecifier(specifier) && !specifier.startsWith('#');
|
|
27
|
-
}
|
|
28
|
-
function collectImportSpecifiers(sourceFile) {
|
|
29
|
-
return getModuleReferenceLiterals(sourceFile)
|
|
30
|
-
.map(function (literal) {
|
|
31
|
-
return literal.getLiteralValue();
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
function isCodeFilePath(filePath) {
|
|
35
|
-
return codeFileExtensions.has(path.extname(filePath));
|
|
36
|
-
}
|
|
37
|
-
function isDeclarationCodeFilePath(filePath) {
|
|
38
|
-
return declarationCodeFileExtensions.some(function (extension) {
|
|
39
|
-
return filePath.endsWith(extension);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
function isRuntimeCodeFilePath(filePath) {
|
|
43
|
-
return isCodeFilePath(filePath) && !isDeclarationCodeFilePath(filePath);
|
|
44
|
-
}
|
|
45
|
-
function addPackageSpecifier(specifiersByName, specifier) {
|
|
46
|
-
const name = packageNameFromSpecifier(specifier);
|
|
47
|
-
const specifiers = new Set(specifiersByName.get(name));
|
|
48
|
-
specifiers.add(specifier);
|
|
49
|
-
const next = new Map(specifiersByName);
|
|
50
|
-
next.set(name, specifiers);
|
|
51
|
-
return next;
|
|
52
|
-
}
|
|
53
|
-
function packageSpecifiersFor(resource, sourceFilesByPath) {
|
|
54
|
-
let specifiersByName = new Map();
|
|
55
|
-
const sourceFile = sourceFilesByPath.get(resource.fileDescription.sourceFilePath);
|
|
56
|
-
if (sourceFile === undefined) {
|
|
57
|
-
return specifiersByName;
|
|
58
|
-
}
|
|
59
|
-
for (const specifier of collectImportSpecifiers(sourceFile)) {
|
|
60
|
-
if (isPackageSpecifier(specifier)) {
|
|
61
|
-
specifiersByName = addPackageSpecifier(specifiersByName, specifier);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return specifiersByName;
|
|
65
|
-
}
|
|
66
|
-
function localCandidates(sourceFilePath, specifier) {
|
|
67
|
-
const resolved = path.resolve(path.dirname(sourceFilePath), specifier);
|
|
68
|
-
const candidates = [resolved];
|
|
69
|
-
if (sourceFilePath.endsWith('.d.ts')) {
|
|
70
|
-
candidates.push(resolved.replace(/\.js$/u, '.d.ts'));
|
|
71
|
-
}
|
|
72
|
-
candidates.push(`${resolved}.js`, `${resolved}.jsx`, `${resolved}.ts`, `${resolved}.tsx`, `${resolved}.json`);
|
|
73
|
-
return candidates;
|
|
74
|
-
}
|
|
75
|
-
function survivingLocalPaths(resource, sourceFilesByPath) {
|
|
76
|
-
const paths = new Set();
|
|
77
|
-
for (const [sourceFilePath, sourceFile] of sourceFilesByPath) {
|
|
78
|
-
if (sourceFilePath === resource.fileDescription.sourceFilePath) {
|
|
79
|
-
for (const specifier of collectImportSpecifiers(sourceFile)) {
|
|
80
|
-
if (isRelativeOrAbsoluteSpecifier(specifier)) {
|
|
81
|
-
for (const candidate of localCandidates(resource.fileDescription.sourceFilePath, specifier)) {
|
|
82
|
-
paths.add(candidate);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return paths;
|
|
89
|
-
}
|
|
90
|
-
function recomputeDirectDependencies(resource, sourceFilesByPath) {
|
|
91
|
-
if (!isCodeFilePath(resource.fileDescription.targetFilePath)) {
|
|
92
|
-
return resource;
|
|
93
|
-
}
|
|
94
|
-
const survivingPaths = survivingLocalPaths(resource, sourceFilesByPath);
|
|
95
|
-
return {
|
|
96
|
-
...resource,
|
|
97
|
-
directDependencies: new Set(Array.from(resource.directDependencies).filter(function (dependency) {
|
|
98
|
-
return survivingPaths.has(dependency) || dependency.endsWith('.map');
|
|
99
|
-
}))
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function referencedPackagesByPath(contents, sourceFilesByPath) {
|
|
103
|
-
return new Map(contents.map(function (resource) {
|
|
104
|
-
return [resource.fileDescription.sourceFilePath, packageSpecifiersFor(resource, sourceFilesByPath)];
|
|
105
|
-
}));
|
|
106
|
-
}
|
|
107
|
-
function legacyDependencyReference(dependency, sourceFilePath) {
|
|
108
|
-
return {
|
|
109
|
-
sourceFilePath,
|
|
110
|
-
sourceSpecifier: dependency.name,
|
|
111
|
-
emittedSpecifier: dependency.name
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
function legacyDependencyReferences(dependency) {
|
|
115
|
-
const [sourceFilePath, ...rest] = dependency.referencedFrom;
|
|
116
|
-
return [
|
|
117
|
-
legacyDependencyReference(dependency, sourceFilePath),
|
|
118
|
-
...rest.map(function (filePath) {
|
|
119
|
-
return legacyDependencyReference(dependency, filePath);
|
|
120
|
-
})
|
|
121
|
-
];
|
|
122
|
-
}
|
|
123
|
-
function dependencyReferences(dependency) {
|
|
124
|
-
return dependency.references ?? legacyDependencyReferences(dependency);
|
|
125
|
-
}
|
|
126
|
-
function isSameDependencyReference(left, right) {
|
|
127
|
-
return left.sourceFilePath === right.sourceFilePath &&
|
|
128
|
-
left.sourceSpecifier === right.sourceSpecifier &&
|
|
129
|
-
left.emittedSpecifier === right.emittedSpecifier;
|
|
130
|
-
}
|
|
131
|
-
function uniqueDependencyReferences(references) {
|
|
132
|
-
const [firstReference, ...rest] = references;
|
|
133
|
-
const unique = [firstReference];
|
|
134
|
-
for (const reference of rest) {
|
|
135
|
-
const isNewReference = unique.every(function (value) {
|
|
136
|
-
return !isSameDependencyReference(value, reference);
|
|
137
|
-
});
|
|
138
|
-
if (isNewReference) {
|
|
139
|
-
unique.push(reference);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return unique;
|
|
143
|
-
}
|
|
144
|
-
function mergeDependencySourcePaths(dependency, reference) {
|
|
145
|
-
const sourcePaths = new Set([...dependency.referencedFrom, reference.sourceFilePath]);
|
|
146
|
-
sourcePaths.delete(dependency.referencedFrom[0]);
|
|
147
|
-
return [dependency.referencedFrom[0], ...sourcePaths];
|
|
148
|
-
}
|
|
149
|
-
function mergeDependencyReferences(dependency, reference) {
|
|
150
|
-
const [firstReference, ...rest] = dependencyReferences(dependency);
|
|
151
|
-
return uniqueDependencyReferences([firstReference, ...rest, reference]);
|
|
152
|
-
}
|
|
153
|
-
function addReference(dependencies, dependencyName, reference) {
|
|
154
|
-
const dependency = dependencies.get(dependencyName);
|
|
155
|
-
if (dependency === undefined) {
|
|
156
|
-
dependencies.set(dependencyName, {
|
|
157
|
-
name: dependencyName,
|
|
158
|
-
referencedFrom: [reference.sourceFilePath],
|
|
159
|
-
references: [reference]
|
|
160
|
-
});
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
dependencies.set(dependencyName, {
|
|
164
|
-
name: dependencyName,
|
|
165
|
-
referencedFrom: mergeDependencySourcePaths(dependency, reference),
|
|
166
|
-
references: mergeDependencyReferences(dependency, reference)
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
function shouldPreserveDependencyReference(dependency, reference, packagesByPath, preservedReferencePaths) {
|
|
170
|
-
if (preservedReferencePaths.has(reference.sourceFilePath)) {
|
|
171
|
-
return true;
|
|
172
|
-
}
|
|
173
|
-
const emittedSpecifiers = packagesByPath.get(reference.sourceFilePath)?.get(dependency.name);
|
|
174
|
-
if (emittedSpecifiers === undefined) {
|
|
175
|
-
return false;
|
|
176
|
-
}
|
|
177
|
-
return dependency.references === undefined ||
|
|
178
|
-
emittedSpecifiers.has(reference.emittedSpecifier);
|
|
179
|
-
}
|
|
180
|
-
function recomputeDependencies(dependencies, packagesByPath, preservedReferencePaths) {
|
|
181
|
-
const recomputed = new Map();
|
|
182
|
-
for (const dependency of dependencies.values()) {
|
|
183
|
-
for (const reference of dependencyReferences(dependency)) {
|
|
184
|
-
if (shouldPreserveDependencyReference(dependency, reference, packagesByPath, preservedReferencePaths)) {
|
|
185
|
-
addReference(recomputed, dependency.name, reference);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return recomputed;
|
|
190
|
-
}
|
|
191
|
-
function declarationSourcePaths(contents) {
|
|
192
|
-
const paths = new Set();
|
|
193
|
-
for (const resource of contents) {
|
|
194
|
-
if (resource.fileDescription.targetFilePath.endsWith('.d.ts')) {
|
|
195
|
-
paths.add(resource.fileDescription.sourceFilePath);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return paths;
|
|
199
|
-
}
|
|
200
|
-
function filterSubstitutedSourcePaths(substitutedSourceFilePathsByPackageName, linkedBundleDependencies) {
|
|
201
|
-
return new Map(Array.from(substitutedSourceFilePathsByPackageName).filter(function ([packageName]) {
|
|
202
|
-
return linkedBundleDependencies.has(packageName);
|
|
203
|
-
}));
|
|
204
|
-
}
|
|
205
|
-
function recomputeDependencyMetadata(bundle, contents, sourceFilesByPath) {
|
|
206
|
-
const recomputedContents = contents.map(function (resource) {
|
|
207
|
-
return recomputeDirectDependencies(resource, sourceFilesByPath);
|
|
208
|
-
});
|
|
209
|
-
const packagesByPath = referencedPackagesByPath(recomputedContents, sourceFilesByPath);
|
|
210
|
-
const preservedReferencePaths = declarationSourcePaths(recomputedContents);
|
|
211
|
-
const linkedBundleDependencies = recomputeDependencies(bundle.linkedBundleDependencies, packagesByPath, preservedReferencePaths);
|
|
212
|
-
return {
|
|
213
|
-
contents: recomputedContents,
|
|
214
|
-
externalDependencies: recomputeDependencies(bundle.externalDependencies, packagesByPath, preservedReferencePaths),
|
|
215
|
-
linkedBundleDependencies,
|
|
216
|
-
substitutedSourceFilePathsByPackageName: filterSubstitutedSourcePaths(bundle.substitutedSourceFilePathsByPackageName, linkedBundleDependencies)
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
function rootSourceFilePaths(bundle) {
|
|
220
|
-
const paths = new Set();
|
|
221
|
-
for (const root of Object.values(bundle.roots)) {
|
|
222
|
-
paths.add(root.js.sourceFilePath);
|
|
223
|
-
}
|
|
224
|
-
return paths;
|
|
225
|
-
}
|
|
226
|
-
function resourceHasSurvivingRuntime(resource) {
|
|
227
|
-
return resource.analysis.sideEffectStatements.length > 0 || resource.analysis.survivingBindings.size > 0;
|
|
228
|
-
}
|
|
229
|
-
function shouldSeedResource(resource, rootPaths) {
|
|
230
|
-
return (rootPaths.has(resource.fileDescription.sourceFilePath) ||
|
|
231
|
-
resource.isExplicitlyIncluded ||
|
|
232
|
-
!isRuntimeCodeFilePath(resource.fileDescription.targetFilePath) ||
|
|
233
|
-
resourceHasSurvivingRuntime(resource));
|
|
234
|
-
}
|
|
235
|
-
function indexResourcesBySourcePath(contents) {
|
|
236
|
-
return new Map(contents.map(function (resource) {
|
|
237
|
-
return [resource.fileDescription.sourceFilePath, resource];
|
|
238
|
-
}));
|
|
239
|
-
}
|
|
240
|
-
function retentionSeeds(contents, rootPaths) {
|
|
241
|
-
return contents
|
|
242
|
-
.filter(function (resource) {
|
|
243
|
-
return shouldSeedResource(resource, rootPaths);
|
|
244
|
-
})
|
|
245
|
-
.map(function (resource) {
|
|
246
|
-
return resource.fileDescription.sourceFilePath;
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
function retainedSourcePaths(bundle, contents) {
|
|
250
|
-
const rootPaths = rootSourceFilePaths(bundle);
|
|
251
|
-
const resourcesBySourcePath = indexResourcesBySourcePath(contents);
|
|
252
|
-
const pending = Array.from(retentionSeeds(contents, rootPaths));
|
|
253
|
-
const retained = new Set();
|
|
254
|
-
function retain(sourceFilePath) {
|
|
255
|
-
const resource = resourcesBySourcePath.get(sourceFilePath);
|
|
256
|
-
if (resource !== undefined && !retained.has(sourceFilePath)) {
|
|
257
|
-
retained.add(sourceFilePath);
|
|
258
|
-
pending.push(...resource.directDependencies);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
for (const sourceFilePath of pending) {
|
|
262
|
-
retain(sourceFilePath);
|
|
263
|
-
}
|
|
264
|
-
return retained;
|
|
265
|
-
}
|
|
266
|
-
function isPrunedRuntimeCode(resource, retained) {
|
|
267
|
-
return (!retained.has(resource.fileDescription.sourceFilePath) &&
|
|
268
|
-
isRuntimeCodeFilePath(resource.fileDescription.targetFilePath));
|
|
269
|
-
}
|
|
270
|
-
function prunedMapTargetPaths(contents, retained) {
|
|
271
|
-
return new Set(contents
|
|
272
|
-
.filter(function (resource) {
|
|
273
|
-
return isPrunedRuntimeCode(resource, retained);
|
|
274
|
-
})
|
|
275
|
-
.map(function (resource) {
|
|
276
|
-
return `${resource.fileDescription.targetFilePath}.map`;
|
|
277
|
-
}));
|
|
278
|
-
}
|
|
279
|
-
function pruneContents(bundle, contents, transformationsEnabled) {
|
|
280
|
-
if (!transformationsEnabled) {
|
|
281
|
-
return contents;
|
|
282
|
-
}
|
|
283
|
-
const retained = retainedSourcePaths(bundle, contents);
|
|
284
|
-
const prunedMapTargets = prunedMapTargetPaths(contents, retained);
|
|
285
|
-
return contents.filter(function (resource) {
|
|
286
|
-
if (resource.isExplicitlyIncluded) {
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
return (retained.has(resource.fileDescription.sourceFilePath) &&
|
|
290
|
-
!prunedMapTargets.has(resource.fileDescription.targetFilePath));
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
9
|
function crossBundleInputFrom(loaded) {
|
|
294
10
|
const sourceFiles = [];
|
|
295
11
|
for (const entry of loaded.loaded) {
|
|
@@ -304,11 +20,6 @@ function crossBundleInputFrom(loaded) {
|
|
|
304
20
|
localReachable: loaded.reachability.localReachable
|
|
305
21
|
};
|
|
306
22
|
}
|
|
307
|
-
function indexSourceFiles(loaded) {
|
|
308
|
-
return new Map(loaded.fileBindings.map(function (binding) {
|
|
309
|
-
return [binding.sourceFilePath, binding.sourceFile];
|
|
310
|
-
}));
|
|
311
|
-
}
|
|
312
23
|
function analyzeBundleWithSeeds(loaded, externalSeeds) {
|
|
313
24
|
const context = {
|
|
314
25
|
reachable: loaded.reachability.expandWith(externalSeeds),
|
|
@@ -323,10 +34,10 @@ function analyzeBundleWithSeeds(loaded, externalSeeds) {
|
|
|
323
34
|
return output.resource;
|
|
324
35
|
});
|
|
325
36
|
const finalContents = recomposePairedSourceMaps(contents, transformsByMapPath);
|
|
326
|
-
const
|
|
327
|
-
const prePruneMetadata = recomputeDependencyMetadata(loaded.input.bundle, finalContents,
|
|
37
|
+
const sourceFileIndex = indexSourceFiles(loaded);
|
|
38
|
+
const prePruneMetadata = recomputeDependencyMetadata(loaded.input.bundle, finalContents, sourceFileIndex);
|
|
328
39
|
const prunedContents = pruneContents(loaded.input.bundle, prePruneMetadata.contents, loaded.input.transformationsEnabled);
|
|
329
|
-
const dependencyMetadata = recomputeDependencyMetadata(loaded.input.bundle, prunedContents,
|
|
40
|
+
const dependencyMetadata = recomputeDependencyMetadata(loaded.input.bundle, prunedContents, sourceFileIndex);
|
|
330
41
|
return {
|
|
331
42
|
...loaded.input.bundle,
|
|
332
43
|
...dependencyMetadata,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eliminator.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/eliminator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eliminator.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/eliminator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-unwrapping.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/expression-unwrapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAmB,MAAM,UAAU,CAAC;AAEhE,SAAS,uBAAuB,CAAC,
|
|
1
|
+
{"version":3,"file":"expression-unwrapping.js","sourceRoot":"","sources":["../../../../source/dead-code-eliminator/expression-unwrapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,WAAW,EAAmB,MAAM,UAAU,CAAC;AAEhE,SAAS,uBAAuB,CAAC,UAAkC;IAC/D,IAAI,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1F,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC;IACD,IACI,WAAW,CAAC,yBAAyB,CAAC,UAAU,CAAC;QACjD,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC;QACvC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC7C,CAAC;QACC,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAID,MAAM,UAAU,gBAAgB,CAAC,UAAkC;IAC/D,MAAM,cAAc,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AACxF,CAAC"}
|