diff --git a/src/node-transformers/finalizing-transformers/DirectivePlacementTransformer.ts b/src/node-transformers/finalizing-transformers/DirectivePlacementTransformer.ts index 63f41477..8d25c0f9 100644 --- a/src/node-transformers/finalizing-transformers/DirectivePlacementTransformer.ts +++ b/src/node-transformers/finalizing-transformers/DirectivePlacementTransformer.ts @@ -127,21 +127,9 @@ export class DirectivePlacementTransformer extends AbstractNodeTransformer { // append new directive node at the top of lexical scope statements NodeAppender.prepend(nodeWithLexicalScopeStatements, [newDirectiveNode]); - // remove found directive node - let isDirectiveNodeRemoved: boolean = false; - estraverse.replace(nodeWithLexicalScopeStatements, { - enter: (node: ESTree.Node): estraverse.VisitorOption | undefined => { - if (isDirectiveNodeRemoved) { - return estraverse.VisitorOption.Break; - } - - if (node === directiveNode) { - isDirectiveNodeRemoved = true; - - return estraverse.VisitorOption.Remove; - } - } - }); + nodeWithLexicalScopeStatements.body = nodeWithLexicalScopeStatements.body.filter( + (node) => node !== directiveNode + ); } return nodeWithLexicalScopeStatements; diff --git a/src/utils/EscapeSequenceEncoder.ts b/src/utils/EscapeSequenceEncoder.ts index 6db012ab..75511d7c 100644 --- a/src/utils/EscapeSequenceEncoder.ts +++ b/src/utils/EscapeSequenceEncoder.ts @@ -19,6 +19,11 @@ export class EscapeSequenceEncoder implements IEscapeSequenceEncoder { */ private static readonly forceEscapeCharactersRegExp: RegExp = /[\x00-\x1F\x7F-\x9F'"\\\s]/; + /** + * @type {RegExp} + */ + private static readonly replaceRegExp: RegExp = /[\s\S]/g; + /** * @type {Map} */ @@ -37,12 +42,11 @@ export class EscapeSequenceEncoder implements IEscapeSequenceEncoder { } const radix: number = 16; - const replaceRegExp: RegExp = new RegExp('[\\s\\S]', 'g'); let prefix: string; let template: string; - const result: string = string.replace(replaceRegExp, (character: string): string => { + const result: string = string.replace(EscapeSequenceEncoder.replaceRegExp, (character: string): string => { const shouldEncodeCharacter: boolean = encodeAllSymbols || EscapeSequenceEncoder.forceEscapeCharactersRegExp.test(character);