// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // @dart = 2.7 import 'dart:convert'; import 'package:expect/expect.dart'; import 'package:source_maps/source_maps.dart'; import 'tools/load.dart'; import 'tools/save.dart'; import '../helpers/memory_compiler.dart'; String SOURCEMAP = ''' { "version": 3, "file": "out.js", "sourceRoot": "", "sources": ["$sdkPath/_internal/compiler/js_lib/js_primitives.dart","hello_world.dart","$sdkPath/_internal/compiler/js_lib/internal_patch.dart"], "names": ["printString","main","printToConsole"], "mappings": "A;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A;;eAoBAA;;;AAIIA;;;;AAOAA;;;AAKAA;;;AAMAA;;;GAOJA;;sC;;QC5CAC;;ICYEC;GDRFD;;;;A;A;A;;;A;;;A;A;A;A;A;A;A;;;;;;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A;C;;;;;;;;;;;;;;;;;;;;;;;;;;;;A" }'''; const String HUMAN_READABLE_SOURCE_MAP = ''' { "file": "out.js", "sourceRoot": "", "sources": { "0": "out.js.map", "1": "test.dart", "2": "out.js" }, "lines": [ {"target": "3,3-", "source": "1:2,17"}, {"target": "4,3-", "source": "1:3,17"}, {"target": "5,3-15", "source": "1:4,17"}, {"target": "5,15-20", "source": "1:5,17"}, {"target": "5,20-", "source": "1:6,4"}, {"target": "6,3-", "source": "1:7,17"}, {"target": "7,3-", "source": "1:8,17"}, {"target": "8,1-", "source": "1:9,1"}, {"target": "10,3-", "source": "1:11,17"}, {"target": "11,3-", "source": "1:12,17"}, {"target": "12,3-", "source": "1:13,17"}, {"target": "13,3-", "source": "1:14,17"}, {"target": "14,1-", "source": "1:15,4"} ] }'''; void main() { testReadWrite(); testWriteRead(); } void testReadWrite() { SingleMapping sourceMap = new SingleMapping.fromJson(json.decode(SOURCEMAP)); String humanReadable = convertToHumanReadableSourceMap(sourceMap); SingleMapping sourceMap2 = convertFromHumanReadableSourceMap(humanReadable); String humanReadable2 = convertToHumanReadableSourceMap(sourceMap2); SingleMapping sourceMap3 = convertFromHumanReadableSourceMap(humanReadable2); String humanReadable3 = convertToHumanReadableSourceMap(sourceMap3); // Target line entries without sourceUrl are removed. //Expect.deepEquals(sourceMap.toJson(), sourceMap2.toJson()); Expect.deepEquals(sourceMap2.toJson(), sourceMap3.toJson()); Expect.deepEquals(json.decode(humanReadable), json.decode(humanReadable2)); Expect.deepEquals(json.decode(humanReadable2), json.decode(humanReadable3)); } void testWriteRead() { SingleMapping sourceMap = convertFromHumanReadableSourceMap(HUMAN_READABLE_SOURCE_MAP); print(sourceMap); String humanReadable = convertToHumanReadableSourceMap(sourceMap); print(humanReadable); SingleMapping sourceMap2 = convertFromHumanReadableSourceMap(humanReadable); Expect.deepEquals( json.decode(HUMAN_READABLE_SOURCE_MAP), json.decode(humanReadable)); Expect.deepEquals(sourceMap.toJson(), sourceMap2.toJson()); }