mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Merge pull request #291 from javascript-obfuscator/template-literal-error
Template literal error
This commit is contained in:
@@ -3,6 +3,7 @@ Change Log
|
||||
v0.18.0
|
||||
---
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/289
|
||||
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/288
|
||||
|
||||
v0.17.0
|
||||
---
|
||||
|
||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -88,7 +88,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
|
||||
/**
|
||||
* @param {Property} property
|
||||
*/
|
||||
private transformComputedProperty(property: ESTree.Property): void {
|
||||
private transformComputedProperty (property: ESTree.Property): void {
|
||||
if (!NodeGuards.isLiteralNode(property.key) || !(typeof property.key.value === 'string')) {
|
||||
return;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
|
||||
/**
|
||||
* @param {Property} property
|
||||
*/
|
||||
private transformBaseProperty(property: ESTree.Property): void {
|
||||
private transformBaseProperty (property: ESTree.Property): void {
|
||||
if (property.shorthand) {
|
||||
property.shorthand = false;
|
||||
}
|
||||
@@ -115,7 +115,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
|
||||
* @param {string} inputValue
|
||||
* @returns {string}
|
||||
*/
|
||||
private getPropertyKeyValue(inputValue: string): string {
|
||||
private getPropertyKeyValue (inputValue: string): string {
|
||||
return this.options.unicodeEscapeSequence
|
||||
? this.escapeSequenceEncoder.encode(inputValue, true)
|
||||
: inputValue;
|
||||
|
||||
@@ -12,6 +12,7 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio
|
||||
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
||||
import { NodeFactory } from '../../node/NodeFactory';
|
||||
import { NodeGuards } from '../../node/NodeGuards';
|
||||
import { NodeUtils } from '../../node/NodeUtils';
|
||||
|
||||
/**
|
||||
* Transform ES2015 template literals to ES5
|
||||
@@ -102,6 +103,8 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer {
|
||||
nodes.unshift(NodeFactory.literalNode(''));
|
||||
}
|
||||
|
||||
let transformedNode: ESTree.Node;
|
||||
|
||||
if (nodes.length > 1) {
|
||||
let root: ESTree.BinaryExpression = NodeFactory.binaryExpressionNode(
|
||||
'+',
|
||||
@@ -113,9 +116,13 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer {
|
||||
root = NodeFactory.binaryExpressionNode('+', root, node);
|
||||
});
|
||||
|
||||
return root;
|
||||
transformedNode = root;
|
||||
} else {
|
||||
transformedNode = nodes[0];
|
||||
}
|
||||
|
||||
return nodes[0];
|
||||
NodeUtils.parentizeAst(transformedNode);
|
||||
|
||||
return transformedNode;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -121,7 +121,7 @@ describe('ObjectExpressionTransformer', () => {
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should ignore computed property identifier', () => {
|
||||
it('should ignore computed property literal value', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
@@ -144,7 +144,7 @@ describe('ObjectExpressionTransformer', () => {
|
||||
obfuscatedCode = obfuscationResult.getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should ignore computed property identifier', () => {
|
||||
it('should encode computed property literal value', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
+15
@@ -156,4 +156,19 @@ describe('TemplateLiteralTransformer', () => {
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Variant #7: template literal parentize', () => {
|
||||
it('should parentize transformed template literal node', () => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/template-literal-parentize.js');
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
unicodeEscapeSequence: false
|
||||
}
|
||||
);
|
||||
|
||||
assert.match(obfuscationResult.getObfuscatedCode(), /^\[]\['map']\(\(\) *=> *'foo'\);$/);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
[].map(() => `foo`);
|
||||
Reference in New Issue
Block a user