From 1d85f2e8f9e322706b249dcb2e72309e921d6e22 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Mon, 16 Nov 2015 09:09:20 -0800 Subject: [PATCH 1/2] pretty print source maps --- pkg/dev_compiler/lib/src/codegen/js_printer.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/dev_compiler/lib/src/codegen/js_printer.dart b/pkg/dev_compiler/lib/src/codegen/js_printer.dart index 6aeef5d7e0f0..2e9080b42cde 100644 --- a/pkg/dev_compiler/lib/src/codegen/js_printer.dart +++ b/pkg/dev_compiler/lib/src/codegen/js_printer.dart @@ -4,6 +4,7 @@ library dev_compiler.src.codegen.js_printer; +import 'dart:convert' show JSON, JsonEncoder; import 'dart:io' show Directory, File, Platform, Process; import 'package:analyzer/src/generated/ast.dart'; @@ -40,10 +41,12 @@ String writeJsLibrary(JS.Program jsTree, String outputPath, String text; if (context is SourceMapPrintingContext) { var printer = context.printer; - printer.add('//# sourceMappingURL=$outFilename.map'); + printer.add('//# sourceMappingURL=$outFilename.map\n'); // Write output file and source map text = printer.text; - new File('$outputPath.map').writeAsStringSync(printer.map); + var sourceMap = JSON.decode(printer.map); + var sourceMapText = new JsonEncoder.withIndent(' ').convert(sourceMap); + new File('$outputPath.map').writeAsStringSync('$sourceMapText\n'); } else { text = (context as JS.SimpleJavaScriptPrintingContext).getText(); } From 0cbc2ffcc77a8e808dddbe2719cd1675fa09b60f Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Mon, 16 Nov 2015 09:35:25 -0800 Subject: [PATCH 2/2] more compact source map format --- pkg/dev_compiler/lib/src/codegen/js_printer.dart | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/dev_compiler/lib/src/codegen/js_printer.dart b/pkg/dev_compiler/lib/src/codegen/js_printer.dart index 2e9080b42cde..021678f2a59e 100644 --- a/pkg/dev_compiler/lib/src/codegen/js_printer.dart +++ b/pkg/dev_compiler/lib/src/codegen/js_printer.dart @@ -46,6 +46,15 @@ String writeJsLibrary(JS.Program jsTree, String outputPath, text = printer.text; var sourceMap = JSON.decode(printer.map); var sourceMapText = new JsonEncoder.withIndent(' ').convert(sourceMap); + // Convert: + // "names": [ + // "state", + // "print" + // ] + // to: + // "names": ["state","print"] + sourceMapText = + sourceMapText.replaceAll('\n ', '').replaceAll('\n ]', ']'); new File('$outputPath.map').writeAsStringSync('$sourceMapText\n'); } else { text = (context as JS.SimpleJavaScriptPrintingContext).getText();