diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index 12054bad46..c3681cd2e5 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -204,11 +204,16 @@ export function StringLiteral(node: Object) { } // ensure the output is ASCII-safe - const opts = this.format.jsescOption; - if (this.format.jsonCompatibleStrings) { - opts.json = true; - } - const val = jsesc(node.value, opts); + + const val = jsesc( + node.value, + process.env.BABEL_8_BREAKING + ? this.format.jsescOption + : Object.assign( + this.format.jsescOption, + this.format.jsonCompatibleStrings && { json: true }, + ), + ); return this.token(val); } diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js index 176efa0255..da2eb2b3a1 100644 --- a/packages/babel-generator/src/index.js +++ b/packages/babel-generator/src/index.js @@ -46,7 +46,6 @@ function normalizeOptions(code, opts): Format { compact: opts.compact, minified: opts.minified, concise: opts.concise, - jsonCompatibleStrings: opts.jsonCompatibleStrings, indent: { adjustMultilineComment: true, style: " ", @@ -61,6 +60,10 @@ function normalizeOptions(code, opts): Format { recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType, }; + if (!process.env.BABEL_8_BREAKING) { + format.jsonCompatibleStrings = opts.jsonCompatibleStrings; + } + if (format.minified) { format.compact = true; diff --git a/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/input.js b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/input.js new file mode 100644 index 0000000000..b999a74fa0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/input.js @@ -0,0 +1,2 @@ +0; // Not a directive +"©"; diff --git a/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/options.json b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/options.json new file mode 100644 index 0000000000..ba70ab0a06 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "minified": true, + "jsonCompatibleStrings": true +} diff --git a/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/output.js b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/output.js new file mode 100644 index 0000000000..4da42cb397 --- /dev/null +++ b/packages/babel-generator/test/fixtures/escapes/jsonEscape-babel-7/output.js @@ -0,0 +1,2 @@ +0;// Not a directive +"\u00A9"; \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json b/packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json index 96bc693445..06448491ba 100644 --- a/packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json +++ b/packages/babel-generator/test/fixtures/escapes/jsonEscape/options.json @@ -1,4 +1,5 @@ { + "BABEL_8_BREAKING": true, "minified": true, - "jsonCompatibleStrings": true + "jsescOption": { "json": true } }