|
@@ -1,4 +1,4 @@
|
|
-import { inject, injectable, } from 'inversify';
|
|
|
|
|
|
+import { inject, injectable} from 'inversify';
|
|
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
|
|
import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
|
|
|
|
|
|
import * as ESTree from 'estree';
|
|
import * as ESTree from 'estree';
|
|
@@ -12,6 +12,7 @@ import { NodeTransformationStage } from '../../enums/node-transformers/NodeTrans
|
|
|
|
|
|
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
|
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
|
import { NodeGuards } from '../../node/NodeGuards';
|
|
import { NodeGuards } from '../../node/NodeGuards';
|
|
|
|
+import { NodeLiteralUtils } from '../../node/NodeLiteralUtils';
|
|
|
|
|
|
@injectable()
|
|
@injectable()
|
|
export class RenamePropertiesTransformer extends AbstractNodeTransformer {
|
|
export class RenamePropertiesTransformer extends AbstractNodeTransformer {
|
|
@@ -59,6 +60,15 @@ export class RenamePropertiesTransformer extends AbstractNodeTransformer {
|
|
*/
|
|
*/
|
|
public getVisitor (nodeTransformationStage: NodeTransformationStage): IVisitor | null {
|
|
public getVisitor (nodeTransformationStage: NodeTransformationStage): IVisitor | null {
|
|
switch (nodeTransformationStage) {
|
|
switch (nodeTransformationStage) {
|
|
|
|
+ case NodeTransformationStage.Preparing:
|
|
|
|
+ return {
|
|
|
|
+ enter: (node: ESTree.Node, parentNode: ESTree.Node | null): void => {
|
|
|
|
+ if (parentNode) {
|
|
|
|
+ this.prepareNode(node, parentNode);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
case NodeTransformationStage.RenameProperties:
|
|
case NodeTransformationStage.RenameProperties:
|
|
return {
|
|
return {
|
|
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
|
|
enter: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
|
|
@@ -73,6 +83,19 @@ export class RenamePropertiesTransformer extends AbstractNodeTransformer {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * @param {Node} node
|
|
|
|
+ * @param {Node} parentNode
|
|
|
|
+ */
|
|
|
|
+ public prepareNode (
|
|
|
|
+ node: ESTree.Node,
|
|
|
|
+ parentNode: ESTree.Node
|
|
|
|
+ ): void {
|
|
|
|
+ if (this.options.renamePropertiesAutoExclude) {
|
|
|
|
+ this.analyzeAutoExcludedPropertyNames(node, parentNode);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @param {Node} node
|
|
* @param {Node} node
|
|
* @param {NodeGuards} parentNode
|
|
* @param {NodeGuards} parentNode
|
|
@@ -136,4 +159,27 @@ export class RenamePropertiesTransformer extends AbstractNodeTransformer {
|
|
|
|
|
|
return methodDefinitionNode;
|
|
return methodDefinitionNode;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * @param {Node} node
|
|
|
|
+ * @param {Node} parentNode
|
|
|
|
+ */
|
|
|
|
+ private analyzeAutoExcludedPropertyNames (
|
|
|
|
+ node: ESTree.Node,
|
|
|
|
+ parentNode: ESTree.Node
|
|
|
|
+ ): void {
|
|
|
|
+ if (!NodeGuards.isLiteralNode(node) || !NodeLiteralUtils.isStringLiteralNode(node)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (
|
|
|
|
+ (NodeGuards.isPropertyNode(parentNode) && parentNode.key === node)
|
|
|
|
+ || NodeGuards.isMemberExpressionNode(parentNode) && parentNode.property === node
|
|
|
|
+ || NodeGuards.isMethodDefinitionNode(parentNode) && parentNode.key === node
|
|
|
|
+ ) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.renamePropertiesReplacer.excludePropertyName(node.value);
|
|
|
|
+ }
|
|
}
|
|
}
|