clear
This commit is contained in:
119
node_modules/clean-css/lib/source-maps/track.js
generated
vendored
Normal file
119
node_modules/clean-css/lib/source-maps/track.js
generated
vendored
Normal file
@@ -0,0 +1,119 @@
|
||||
var escapePrefix = '__ESCAPED_';
|
||||
|
||||
function trackPrefix(value, context, interestingContent) {
|
||||
if (!interestingContent && value.indexOf('\n') == -1) {
|
||||
if (value.indexOf(escapePrefix) === 0) {
|
||||
return value;
|
||||
} else {
|
||||
context.column += value.length;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var withoutContent = 0;
|
||||
var split = value.split('\n');
|
||||
var total = split.length;
|
||||
var shift = 0;
|
||||
|
||||
while (true) {
|
||||
if (withoutContent == total - 1)
|
||||
break;
|
||||
|
||||
var part = split[withoutContent];
|
||||
if (/\S/.test(part))
|
||||
break;
|
||||
|
||||
shift += part.length + 1;
|
||||
withoutContent++;
|
||||
}
|
||||
|
||||
context.line += withoutContent;
|
||||
context.column = withoutContent > 0 ? 0 : context.column;
|
||||
context.column += /^(\s)*/.exec(split[withoutContent])[0].length;
|
||||
|
||||
return value.substring(shift).trimLeft();
|
||||
}
|
||||
|
||||
function sourceFor(originalMetadata, contextMetadata, context) {
|
||||
var source = originalMetadata.source || contextMetadata.source;
|
||||
|
||||
if (source && context.resolvePath)
|
||||
return context.resolvePath(contextMetadata.source, source);
|
||||
|
||||
return source;
|
||||
}
|
||||
|
||||
function snapshot(data, context, fallbacks) {
|
||||
var metadata = {
|
||||
line: context.line,
|
||||
column: context.column,
|
||||
source: context.source
|
||||
};
|
||||
var sourceContent = null;
|
||||
var sourceMetadata = context.sourceMapTracker.isTracking(metadata.source) ?
|
||||
context.sourceMapTracker.originalPositionFor(metadata, data, fallbacks || 0) :
|
||||
{};
|
||||
|
||||
metadata.line = sourceMetadata.line || metadata.line;
|
||||
metadata.column = sourceMetadata.column || metadata.column;
|
||||
metadata.source = sourceMetadata.sourceResolved ?
|
||||
sourceMetadata.source :
|
||||
sourceFor(sourceMetadata, metadata, context);
|
||||
|
||||
if (context.sourceMapInlineSources) {
|
||||
var sourceMapSourcesContent = context.sourceMapTracker.sourcesContentFor(context.source);
|
||||
sourceContent = sourceMapSourcesContent && sourceMapSourcesContent[metadata.source] ?
|
||||
sourceMapSourcesContent :
|
||||
context.sourceReader.sourceAt(context.source);
|
||||
}
|
||||
|
||||
return sourceContent ?
|
||||
[metadata.line, metadata.column, metadata.source, sourceContent] :
|
||||
[metadata.line, metadata.column, metadata.source];
|
||||
}
|
||||
|
||||
function trackSuffix(data, context) {
|
||||
var parts = data.split('\n');
|
||||
|
||||
for (var i = 0, l = parts.length; i < l; i++) {
|
||||
var part = parts[i];
|
||||
var cursor = 0;
|
||||
|
||||
if (i > 0) {
|
||||
context.line++;
|
||||
context.column = 0;
|
||||
}
|
||||
|
||||
while (true) {
|
||||
var next = part.indexOf(escapePrefix, cursor);
|
||||
|
||||
if (next == -1) {
|
||||
context.column += part.substring(cursor).length;
|
||||
break;
|
||||
}
|
||||
|
||||
context.column += next - cursor;
|
||||
cursor += next - cursor;
|
||||
|
||||
var escaped = part.substring(next, part.indexOf('__', next + 1) + 2);
|
||||
var encodedValues = escaped.substring(escaped.indexOf('(') + 1, escaped.indexOf(')')).split(',');
|
||||
context.line += ~~encodedValues[0];
|
||||
context.column = (~~encodedValues[0] === 0 ? context.column : 0) + ~~encodedValues[1];
|
||||
cursor += escaped.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function track(data, context, snapshotMetadata, fallbacks) {
|
||||
var untracked = trackPrefix(data, context, snapshotMetadata);
|
||||
var metadata = snapshotMetadata ?
|
||||
snapshot(untracked, context, fallbacks) :
|
||||
[];
|
||||
|
||||
if (untracked)
|
||||
trackSuffix(untracked, context);
|
||||
|
||||
return metadata;
|
||||
}
|
||||
|
||||
module.exports = track;
|
||||
Reference in New Issue
Block a user