| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 /** @type {!Array.<string>|undefined} */ this.names; | 42 /** @type {!Array.<string>|undefined} */ this.names; |
| 43 } | 43 } |
| 44 | 44 |
| 45 /** | 45 /** |
| 46 * @constructor | 46 * @constructor |
| 47 */ | 47 */ |
| 48 SourceMapV3.Section = function() | 48 SourceMapV3.Section = function() |
| 49 { | 49 { |
| 50 /** @type {!SourceMapV3} */ this.map; | 50 /** @type {!SourceMapV3} */ this.map; |
| 51 /** @type {!SourceMapV3.Offset} */ this.offset; | 51 /** @type {!SourceMapV3.Offset} */ this.offset; |
| 52 } | 52 }; |
| 53 | 53 |
| 54 /** | 54 /** |
| 55 * @constructor | 55 * @constructor |
| 56 */ | 56 */ |
| 57 SourceMapV3.Offset = function() | 57 SourceMapV3.Offset = function() |
| 58 { | 58 { |
| 59 /** @type {number} */ this.line; | 59 /** @type {number} */ this.line; |
| 60 /** @type {number} */ this.column; | 60 /** @type {number} */ this.column; |
| 61 } | 61 }; |
| 62 | 62 |
| 63 /** | 63 /** |
| 64 * @constructor | 64 * @constructor |
| 65 * @param {number} lineNumber | 65 * @param {number} lineNumber |
| 66 * @param {number} columnNumber | 66 * @param {number} columnNumber |
| 67 * @param {string=} sourceURL | 67 * @param {string=} sourceURL |
| 68 * @param {number=} sourceLineNumber | 68 * @param {number=} sourceLineNumber |
| 69 * @param {number=} sourceColumnNumber | 69 * @param {number=} sourceColumnNumber |
| 70 * @param {string=} name | 70 * @param {string=} name |
| 71 */ | 71 */ |
| 72 WebInspector.SourceMapEntry = function(lineNumber, columnNumber, sourceURL, sour
ceLineNumber, sourceColumnNumber, name) | 72 WebInspector.SourceMapEntry = function(lineNumber, columnNumber, sourceURL, sour
ceLineNumber, sourceColumnNumber, name) |
| 73 { | 73 { |
| 74 this.lineNumber = lineNumber; | 74 this.lineNumber = lineNumber; |
| 75 this.columnNumber = columnNumber; | 75 this.columnNumber = columnNumber; |
| 76 this.sourceURL = sourceURL; | 76 this.sourceURL = sourceURL; |
| 77 this.sourceLineNumber = sourceLineNumber; | 77 this.sourceLineNumber = sourceLineNumber; |
| 78 this.sourceColumnNumber = sourceColumnNumber; | 78 this.sourceColumnNumber = sourceColumnNumber; |
| 79 this.name = name; | 79 this.name = name; |
| 80 } | 80 }; |
| 81 | 81 |
| 82 /** | 82 /** |
| 83 * @interface | 83 * @interface |
| 84 */ | 84 */ |
| 85 WebInspector.SourceMap = function() { } | 85 WebInspector.SourceMap = function() { }; |
| 86 | 86 |
| 87 WebInspector.SourceMap.prototype = { | 87 WebInspector.SourceMap.prototype = { |
| 88 /** | 88 /** |
| 89 * @return {string} | 89 * @return {string} |
| 90 */ | 90 */ |
| 91 compiledURL: function() { }, | 91 compiledURL: function() { }, |
| 92 | 92 |
| 93 /** | 93 /** |
| 94 * @return {string} | 94 * @return {string} |
| 95 */ | 95 */ |
| (...skipping 28 matching lines...) Expand all Loading... |
| 124 * @return {boolean} | 124 * @return {boolean} |
| 125 */ | 125 */ |
| 126 editable: function() { }, | 126 editable: function() { }, |
| 127 | 127 |
| 128 /** | 128 /** |
| 129 * @param {!Array<!WebInspector.TextRange>} ranges | 129 * @param {!Array<!WebInspector.TextRange>} ranges |
| 130 * @param {!Array<string>} texts | 130 * @param {!Array<string>} texts |
| 131 * @return {!Promise<?WebInspector.SourceMap.EditResult>} | 131 * @return {!Promise<?WebInspector.SourceMap.EditResult>} |
| 132 */ | 132 */ |
| 133 editCompiled: function(ranges, texts) { }, | 133 editCompiled: function(ranges, texts) { }, |
| 134 } | 134 }; |
| 135 | 135 |
| 136 /** | 136 /** |
| 137 * @constructor | 137 * @constructor |
| 138 * @param {!WebInspector.SourceMap} map | 138 * @param {!WebInspector.SourceMap} map |
| 139 * @param {!Array<!WebInspector.SourceEdit>} compiledEdits | 139 * @param {!Array<!WebInspector.SourceEdit>} compiledEdits |
| 140 * @param {!Map<string, string>} newSources | 140 * @param {!Map<string, string>} newSources |
| 141 */ | 141 */ |
| 142 WebInspector.SourceMap.EditResult = function(map, compiledEdits, newSources) | 142 WebInspector.SourceMap.EditResult = function(map, compiledEdits, newSources) |
| 143 { | 143 { |
| 144 this.map = map; | 144 this.map = map; |
| 145 this.compiledEdits = compiledEdits; | 145 this.compiledEdits = compiledEdits; |
| 146 this.newSources = newSources; | 146 this.newSources = newSources; |
| 147 } | 147 }; |
| 148 | 148 |
| 149 /** | 149 /** |
| 150 * @interface | 150 * @interface |
| 151 */ | 151 */ |
| 152 WebInspector.SourceMapFactory = function() { } | 152 WebInspector.SourceMapFactory = function() { }; |
| 153 | 153 |
| 154 WebInspector.SourceMapFactory.prototype = { | 154 WebInspector.SourceMapFactory.prototype = { |
| 155 /** | 155 /** |
| 156 * @param {!WebInspector.Target} target | 156 * @param {!WebInspector.Target} target |
| 157 * @param {!WebInspector.SourceMap} sourceMap | 157 * @param {!WebInspector.SourceMap} sourceMap |
| 158 * @return {!Promise<?WebInspector.SourceMap>} | 158 * @return {!Promise<?WebInspector.SourceMap>} |
| 159 */ | 159 */ |
| 160 editableSourceMap: function(target, sourceMap) { }, | 160 editableSourceMap: function(target, sourceMap) { }, |
| 161 } | 161 }; |
| 162 | 162 |
| 163 /** | 163 /** |
| 164 * Implements Source Map V3 model. See https://github.com/google/closure-compile
r/wiki/Source-Maps | 164 * Implements Source Map V3 model. See https://github.com/google/closure-compile
r/wiki/Source-Maps |
| 165 * for format description. | 165 * for format description. |
| 166 * @constructor | 166 * @constructor |
| 167 * @implements {WebInspector.SourceMap} | 167 * @implements {WebInspector.SourceMap} |
| 168 * @param {string} compiledURL | 168 * @param {string} compiledURL |
| 169 * @param {string} sourceMappingURL | 169 * @param {string} sourceMappingURL |
| 170 * @param {!SourceMapV3} payload | 170 * @param {!SourceMapV3} payload |
| 171 */ | 171 */ |
| 172 WebInspector.TextSourceMap = function(compiledURL, sourceMappingURL, payload) | 172 WebInspector.TextSourceMap = function(compiledURL, sourceMappingURL, payload) |
| 173 { | 173 { |
| 174 if (!WebInspector.TextSourceMap.prototype._base64Map) { | 174 if (!WebInspector.TextSourceMap.prototype._base64Map) { |
| 175 const base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
yz0123456789+/"; | 175 const base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx
yz0123456789+/"; |
| 176 WebInspector.TextSourceMap.prototype._base64Map = {}; | 176 WebInspector.TextSourceMap.prototype._base64Map = {}; |
| 177 for (var i = 0; i < base64Digits.length; ++i) | 177 for (var i = 0; i < base64Digits.length; ++i) |
| 178 WebInspector.TextSourceMap.prototype._base64Map[base64Digits.charAt(
i)] = i; | 178 WebInspector.TextSourceMap.prototype._base64Map[base64Digits.charAt(
i)] = i; |
| 179 } | 179 } |
| 180 | 180 |
| 181 this._json = payload; | 181 this._json = payload; |
| 182 this._compiledURL = compiledURL; | 182 this._compiledURL = compiledURL; |
| 183 this._sourceMappingURL = sourceMappingURL; | 183 this._sourceMappingURL = sourceMappingURL; |
| 184 /** @type {?Array<!WebInspector.SourceMapEntry>} */ | 184 /** @type {?Array<!WebInspector.SourceMapEntry>} */ |
| 185 this._mappings = null; | 185 this._mappings = null; |
| 186 /** @type {!Map<string, !WebInspector.TextSourceMap.SourceInfo>} */ | 186 /** @type {!Map<string, !WebInspector.TextSourceMap.SourceInfo>} */ |
| 187 this._sourceInfos = new Map(); | 187 this._sourceInfos = new Map(); |
| 188 this._eachSection(this._parseSources.bind(this)); | 188 this._eachSection(this._parseSources.bind(this)); |
| 189 } | 189 }; |
| 190 | 190 |
| 191 /** | 191 /** |
| 192 * @param {string} sourceMapURL | 192 * @param {string} sourceMapURL |
| 193 * @param {string} compiledURL | 193 * @param {string} compiledURL |
| 194 * @return {!Promise<?WebInspector.TextSourceMap>} | 194 * @return {!Promise<?WebInspector.TextSourceMap>} |
| 195 * @this {WebInspector.TextSourceMap} | 195 * @this {WebInspector.TextSourceMap} |
| 196 */ | 196 */ |
| 197 WebInspector.TextSourceMap.load = function(sourceMapURL, compiledURL) | 197 WebInspector.TextSourceMap.load = function(sourceMapURL, compiledURL) |
| 198 { | 198 { |
| 199 var callback; | 199 var callback; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 218 try { | 218 try { |
| 219 var payload = /** @type {!SourceMapV3} */ (JSON.parse(content)); | 219 var payload = /** @type {!SourceMapV3} */ (JSON.parse(content)); |
| 220 var baseURL = sourceMapURL.startsWith("data:") ? compiledURL : sourc
eMapURL; | 220 var baseURL = sourceMapURL.startsWith("data:") ? compiledURL : sourc
eMapURL; |
| 221 callback(new WebInspector.TextSourceMap(compiledURL, baseURL, payloa
d)); | 221 callback(new WebInspector.TextSourceMap(compiledURL, baseURL, payloa
d)); |
| 222 } catch (e) { | 222 } catch (e) { |
| 223 console.error(e); | 223 console.error(e); |
| 224 WebInspector.console.warn("DevTools failed to parse SourceMap: " + s
ourceMapURL); | 224 WebInspector.console.warn("DevTools failed to parse SourceMap: " + s
ourceMapURL); |
| 225 callback(null); | 225 callback(null); |
| 226 } | 226 } |
| 227 } | 227 } |
| 228 } | 228 }; |
| 229 | 229 |
| 230 WebInspector.TextSourceMap.prototype = { | 230 WebInspector.TextSourceMap.prototype = { |
| 231 /** | 231 /** |
| 232 * @override | 232 * @override |
| 233 * @return {string} | 233 * @return {string} |
| 234 */ | 234 */ |
| 235 compiledURL: function() | 235 compiledURL: function() |
| 236 { | 236 { |
| 237 return this._compiledURL; | 237 return this._compiledURL; |
| 238 }, | 238 }, |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 var endIndex = mappings.upperBound({lineNumber: textRange.endLine, colum
nNumber: textRange.endColumn}, comparator); | 539 var endIndex = mappings.upperBound({lineNumber: textRange.endLine, colum
nNumber: textRange.endColumn}, comparator); |
| 540 | 540 |
| 541 var startMapping = mappings[startIndex]; | 541 var startMapping = mappings[startIndex]; |
| 542 var endMapping = mappings[endIndex]; | 542 var endMapping = mappings[endIndex]; |
| 543 return new WebInspector.TextRange(startMapping.lineNumber, startMapping.
columnNumber, endMapping.lineNumber, endMapping.columnNumber); | 543 return new WebInspector.TextRange(startMapping.lineNumber, startMapping.
columnNumber, endMapping.lineNumber, endMapping.columnNumber); |
| 544 }, | 544 }, |
| 545 | 545 |
| 546 _VLQ_BASE_SHIFT: 5, | 546 _VLQ_BASE_SHIFT: 5, |
| 547 _VLQ_BASE_MASK: (1 << 5) - 1, | 547 _VLQ_BASE_MASK: (1 << 5) - 1, |
| 548 _VLQ_CONTINUATION_MASK: 1 << 5 | 548 _VLQ_CONTINUATION_MASK: 1 << 5 |
| 549 } | 549 }; |
| 550 | 550 |
| 551 /** | 551 /** |
| 552 * @constructor | 552 * @constructor |
| 553 * @param {string} string | 553 * @param {string} string |
| 554 */ | 554 */ |
| 555 WebInspector.TextSourceMap.StringCharIterator = function(string) | 555 WebInspector.TextSourceMap.StringCharIterator = function(string) |
| 556 { | 556 { |
| 557 this._string = string; | 557 this._string = string; |
| 558 this._position = 0; | 558 this._position = 0; |
| 559 } | 559 }; |
| 560 | 560 |
| 561 WebInspector.TextSourceMap.StringCharIterator.prototype = { | 561 WebInspector.TextSourceMap.StringCharIterator.prototype = { |
| 562 /** | 562 /** |
| 563 * @return {string} | 563 * @return {string} |
| 564 */ | 564 */ |
| 565 next: function() | 565 next: function() |
| 566 { | 566 { |
| 567 return this._string.charAt(this._position++); | 567 return this._string.charAt(this._position++); |
| 568 }, | 568 }, |
| 569 | 569 |
| 570 /** | 570 /** |
| 571 * @return {string} | 571 * @return {string} |
| 572 */ | 572 */ |
| 573 peek: function() | 573 peek: function() |
| 574 { | 574 { |
| 575 return this._string.charAt(this._position); | 575 return this._string.charAt(this._position); |
| 576 }, | 576 }, |
| 577 | 577 |
| 578 /** | 578 /** |
| 579 * @return {boolean} | 579 * @return {boolean} |
| 580 */ | 580 */ |
| 581 hasNext: function() | 581 hasNext: function() |
| 582 { | 582 { |
| 583 return this._position < this._string.length; | 583 return this._position < this._string.length; |
| 584 } | 584 } |
| 585 } | 585 }; |
| 586 | 586 |
| 587 /** | 587 /** |
| 588 * @constructor | 588 * @constructor |
| 589 * @param {?string} content | 589 * @param {?string} content |
| 590 * @param {?Array<!WebInspector.SourceMapEntry>} reverseMappings | 590 * @param {?Array<!WebInspector.SourceMapEntry>} reverseMappings |
| 591 */ | 591 */ |
| 592 WebInspector.TextSourceMap.SourceInfo = function(content, reverseMappings) { | 592 WebInspector.TextSourceMap.SourceInfo = function(content, reverseMappings) { |
| 593 this.content = content; | 593 this.content = content; |
| 594 this.reverseMappings = reverseMappings; | 594 this.reverseMappings = reverseMappings; |
| 595 } | 595 }; |
| 596 | 596 |
| 597 WebInspector.TextSourceMap._sourcesListSymbol = Symbol("sourcesList"); | 597 WebInspector.TextSourceMap._sourcesListSymbol = Symbol("sourcesList"); |
| OLD | NEW |