|
@@ -11443,13 +11443,6 @@ let DeadCodeInjectionIdentifiersTransformer = class DeadCodeInjectionIdentifiers
|
|
constructor(identifierReplacer, randomGenerator, scopeIdentifiersTraverser, identifierNamesCacheStorage, options) {
|
|
constructor(identifierReplacer, randomGenerator, scopeIdentifiersTraverser, identifierNamesCacheStorage, options) {
|
|
super(identifierReplacer, randomGenerator, scopeIdentifiersTraverser, identifierNamesCacheStorage, options);
|
|
super(identifierReplacer, randomGenerator, scopeIdentifiersTraverser, identifierNamesCacheStorage, options);
|
|
}
|
|
}
|
|
- transformNode(programNode, parentNode) {
|
|
|
|
- this.scopeIdentifiersTraverser.traverseScopeThroughIdentifiers(programNode, parentNode, (data) => {
|
|
|
|
- const { isGlobalDeclaration, reference, variableLexicalScopeNode } = data;
|
|
|
|
- this.transformScopeThroughIdentifiers(reference, variableLexicalScopeNode, isGlobalDeclaration);
|
|
|
|
- });
|
|
|
|
- return programNode;
|
|
|
|
- }
|
|
|
|
storeIdentifierName(identifierNode, lexicalScopeNode) {
|
|
storeIdentifierName(identifierNode, lexicalScopeNode) {
|
|
this.identifierReplacer.storeLocalName(identifierNode, lexicalScopeNode);
|
|
this.identifierReplacer.storeLocalName(identifierNode, lexicalScopeNode);
|
|
}
|
|
}
|
|
@@ -13349,12 +13342,6 @@ let ScopeThroughIdentifiersTransformer = class ScopeThroughIdentifiersTransforme
|
|
transformNode(programNode, parentNode) {
|
|
transformNode(programNode, parentNode) {
|
|
this.scopeIdentifiersTraverser.traverseScopeThroughIdentifiers(programNode, parentNode, (data) => {
|
|
this.scopeIdentifiersTraverser.traverseScopeThroughIdentifiers(programNode, parentNode, (data) => {
|
|
const { isGlobalDeclaration, reference, variableLexicalScopeNode } = data;
|
|
const { isGlobalDeclaration, reference, variableLexicalScopeNode } = data;
|
|
- const identifier = reference.identifier;
|
|
|
|
- const identifierName = identifier.name;
|
|
|
|
- const hasIdentifierNameInIdentifierNamesCache = this.identifierNamesCacheStorage.has(identifierName);
|
|
|
|
- if (!hasIdentifierNameInIdentifierNamesCache) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
this.transformScopeThroughIdentifiers(reference, variableLexicalScopeNode, isGlobalDeclaration);
|
|
this.transformScopeThroughIdentifiers(reference, variableLexicalScopeNode, isGlobalDeclaration);
|
|
});
|
|
});
|
|
return programNode;
|
|
return programNode;
|
|
@@ -13368,12 +13355,7 @@ let ScopeThroughIdentifiersTransformer = class ScopeThroughIdentifiersTransforme
|
|
this.replaceIdentifierName(identifier, lexicalScopeNode, reference);
|
|
this.replaceIdentifierName(identifier, lexicalScopeNode, reference);
|
|
}
|
|
}
|
|
storeIdentifierName(identifierNode, lexicalScopeNode, isGlobalDeclaration) {
|
|
storeIdentifierName(identifierNode, lexicalScopeNode, isGlobalDeclaration) {
|
|
- if (isGlobalDeclaration) {
|
|
|
|
- this.identifierReplacer.storeGlobalName(identifierNode, lexicalScopeNode);
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- this.identifierReplacer.storeLocalName(identifierNode, lexicalScopeNode);
|
|
|
|
- }
|
|
|
|
|
|
+ this.identifierReplacer.storeThroughName(identifierNode, lexicalScopeNode);
|
|
}
|
|
}
|
|
replaceIdentifierName(identifierNode, lexicalScopeNode, reference) {
|
|
replaceIdentifierName(identifierNode, lexicalScopeNode, reference) {
|
|
const newIdentifier = this.identifierReplacer
|
|
const newIdentifier = this.identifierReplacer
|
|
@@ -13432,19 +13414,11 @@ let IdentifierReplacer = class IdentifierReplacer {
|
|
this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
|
|
this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);
|
|
}
|
|
}
|
|
storeGlobalName(identifierNode, lexicalScopeNode) {
|
|
storeGlobalName(identifierNode, lexicalScopeNode) {
|
|
- var _a;
|
|
|
|
const identifierName = identifierNode.name;
|
|
const identifierName = identifierNode.name;
|
|
if (this.isReservedName(identifierName)) {
|
|
if (this.isReservedName(identifierName)) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- const valueFromIdentifierNamesCache = (_a = this.identifierNamesCacheStorage.get(identifierName)) !== null && _a !== void 0 ? _a : null;
|
|
|
|
- let newIdentifierName;
|
|
|
|
- if (valueFromIdentifierNamesCache) {
|
|
|
|
- newIdentifierName = valueFromIdentifierNamesCache;
|
|
|
|
- }
|
|
|
|
- else {
|
|
|
|
- newIdentifierName = this.identifierNamesGenerator.generateForGlobalScope();
|
|
|
|
- }
|
|
|
|
|
|
+ const newIdentifierName = this.identifierNamesGenerator.generateForGlobalScope();
|
|
if (!this.blockScopesMap.has(lexicalScopeNode)) {
|
|
if (!this.blockScopesMap.has(lexicalScopeNode)) {
|
|
this.blockScopesMap.set(lexicalScopeNode, new Map());
|
|
this.blockScopesMap.set(lexicalScopeNode, new Map());
|
|
}
|
|
}
|
|
@@ -13464,6 +13438,23 @@ let IdentifierReplacer = class IdentifierReplacer {
|
|
const namesMap = this.blockScopesMap.get(lexicalScopeNode);
|
|
const namesMap = this.blockScopesMap.get(lexicalScopeNode);
|
|
namesMap.set(identifierName, newIdentifierName);
|
|
namesMap.set(identifierName, newIdentifierName);
|
|
}
|
|
}
|
|
|
|
+ storeThroughName(identifierNode, lexicalScopeNode) {
|
|
|
|
+ var _a;
|
|
|
|
+ const identifierName = identifierNode.name;
|
|
|
|
+ if (this.isReservedName(identifierName)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ const newIdentifierName = (_a = this.identifierNamesCacheStorage.get(identifierName)) !== null && _a !== void 0 ? _a : null;
|
|
|
|
+ if (!newIdentifierName) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (!this.blockScopesMap.has(lexicalScopeNode)) {
|
|
|
|
+ this.blockScopesMap.set(lexicalScopeNode, new Map());
|
|
|
|
+ }
|
|
|
|
+ const namesMap = this.blockScopesMap.get(lexicalScopeNode);
|
|
|
|
+ namesMap.set(identifierName, newIdentifierName);
|
|
|
|
+ this.identifierNamesCacheStorage.set(identifierName, newIdentifierName);
|
|
|
|
+ }
|
|
replace(identifierNode, lexicalScopeNode) {
|
|
replace(identifierNode, lexicalScopeNode) {
|
|
let identifierName = identifierNode.name;
|
|
let identifierName = identifierNode.name;
|
|
if (this.blockScopesMap.has(lexicalScopeNode)) {
|
|
if (this.blockScopesMap.has(lexicalScopeNode)) {
|