新增: - backend/venv/ - Python 虚拟环境 - backend/start.sh - 启动脚本(使用虚拟环境) - backend/requirements.txt - 依赖列表 - .gitignore - 忽略虚拟环境和缓存文件 说明: - 每个项目使用独立虚拟环境 - 避免依赖冲突 - 启动脚本自动创建和激活虚拟环境
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
var SourceMapConsumer = require('source-map').SourceMapConsumer;
|
|
|
|
function inputSourceMapTracker() {
|
|
var maps = {};
|
|
|
|
return {
|
|
all: all.bind(null, maps),
|
|
isTracking: isTracking.bind(null, maps),
|
|
originalPositionFor: originalPositionFor.bind(null, maps),
|
|
track: track.bind(null, maps)
|
|
};
|
|
}
|
|
|
|
function all(maps) {
|
|
return maps;
|
|
}
|
|
|
|
function isTracking(maps, source) {
|
|
return source in maps;
|
|
}
|
|
|
|
function originalPositionFor(maps, metadata, range, selectorFallbacks) {
|
|
var line = metadata[0];
|
|
var column = metadata[1];
|
|
var source = metadata[2];
|
|
var position = {
|
|
line: line,
|
|
column: column + range
|
|
};
|
|
var originalPosition;
|
|
|
|
while (!originalPosition && position.column > column) {
|
|
position.column--;
|
|
originalPosition = maps[source].originalPositionFor(position);
|
|
}
|
|
|
|
if (!originalPosition || originalPosition.column < 0) {
|
|
return metadata;
|
|
}
|
|
|
|
if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {
|
|
return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);
|
|
}
|
|
|
|
return originalPosition.line !== null
|
|
? toMetadata(originalPosition)
|
|
: metadata;
|
|
}
|
|
|
|
function toMetadata(asHash) {
|
|
return [asHash.line, asHash.column, asHash.source];
|
|
}
|
|
|
|
function track(maps, source, data) {
|
|
maps[source] = new SourceMapConsumer(data);
|
|
}
|
|
|
|
module.exports = inputSourceMapTracker;
|