first commit
This commit is contained in:
233
app_vue/node_modules/webpack-sources/lib/helpers/createMappingsSerializer.js
generated
vendored
Normal file
233
app_vue/node_modules/webpack-sources/lib/helpers/createMappingsSerializer.js
generated
vendored
Normal file
@ -0,0 +1,233 @@
|
||||
/*
|
||||
MIT License http://www.opensource.org/licenses/mit-license.php
|
||||
Author Tobias Koppers @sokra
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
const ALPHABET =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
|
||||
|
||||
const CONTINUATION_BIT = 0x20;
|
||||
|
||||
/**
|
||||
* @callback MappingsSerializer
|
||||
* @param {number} generatedLine generated line
|
||||
* @param {number} generatedColumn generated column
|
||||
* @param {number} sourceIndex source index
|
||||
* @param {number} originalLine original line
|
||||
* @param {number} originalColumn generated line
|
||||
* @param {number} nameIndex generated line
|
||||
* @returns {string} result
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line valid-jsdoc
|
||||
/**
|
||||
* @param {{ columns?: boolean }=} options options
|
||||
* @returns {MappingsSerializer} mappings serializer
|
||||
*/
|
||||
const createMappingsSerializer = (options) => {
|
||||
const linesOnly = options && options.columns === false;
|
||||
return linesOnly
|
||||
? createLinesOnlyMappingsSerializer()
|
||||
: createFullMappingsSerializer();
|
||||
};
|
||||
|
||||
const createFullMappingsSerializer = () => {
|
||||
let currentLine = 1;
|
||||
let currentColumn = 0;
|
||||
let currentSourceIndex = 0;
|
||||
let currentOriginalLine = 1;
|
||||
let currentOriginalColumn = 0;
|
||||
let currentNameIndex = 0;
|
||||
let activeMapping = false;
|
||||
let activeName = false;
|
||||
let initial = true;
|
||||
// eslint-disable-next-line valid-jsdoc
|
||||
/** @type {MappingsSerializer} */
|
||||
return (
|
||||
generatedLine,
|
||||
generatedColumn,
|
||||
sourceIndex,
|
||||
originalLine,
|
||||
originalColumn,
|
||||
nameIndex
|
||||
) => {
|
||||
if (activeMapping && currentLine === generatedLine) {
|
||||
// A mapping is still active
|
||||
if (
|
||||
sourceIndex === currentSourceIndex &&
|
||||
originalLine === currentOriginalLine &&
|
||||
originalColumn === currentOriginalColumn &&
|
||||
!activeName &&
|
||||
nameIndex < 0
|
||||
) {
|
||||
// avoid repeating the same original mapping
|
||||
return "";
|
||||
}
|
||||
} else {
|
||||
// No mapping is active
|
||||
if (sourceIndex < 0) {
|
||||
// avoid writing unneccessary generated mappings
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {undefined | string} */
|
||||
let str;
|
||||
if (currentLine < generatedLine) {
|
||||
str = ";".repeat(generatedLine - currentLine);
|
||||
currentLine = generatedLine;
|
||||
currentColumn = 0;
|
||||
initial = false;
|
||||
} else if (initial) {
|
||||
str = "";
|
||||
initial = false;
|
||||
} else {
|
||||
str = ",";
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {number} value value
|
||||
* @returns {void}
|
||||
*/
|
||||
const writeValue = (value) => {
|
||||
const sign = (value >>> 31) & 1;
|
||||
const mask = value >> 31;
|
||||
const absValue = (value + mask) ^ mask;
|
||||
let data = (absValue << 1) | sign;
|
||||
for (;;) {
|
||||
const sextet = data & 0x1f;
|
||||
data >>= 5;
|
||||
if (data === 0) {
|
||||
str += ALPHABET[sextet];
|
||||
break;
|
||||
} else {
|
||||
str += ALPHABET[sextet | CONTINUATION_BIT];
|
||||
}
|
||||
}
|
||||
};
|
||||
writeValue(generatedColumn - currentColumn);
|
||||
currentColumn = generatedColumn;
|
||||
if (sourceIndex >= 0) {
|
||||
activeMapping = true;
|
||||
if (sourceIndex === currentSourceIndex) {
|
||||
str += "A";
|
||||
} else {
|
||||
writeValue(sourceIndex - currentSourceIndex);
|
||||
currentSourceIndex = sourceIndex;
|
||||
}
|
||||
writeValue(originalLine - currentOriginalLine);
|
||||
currentOriginalLine = originalLine;
|
||||
if (originalColumn === currentOriginalColumn) {
|
||||
str += "A";
|
||||
} else {
|
||||
writeValue(originalColumn - currentOriginalColumn);
|
||||
currentOriginalColumn = originalColumn;
|
||||
}
|
||||
if (nameIndex >= 0) {
|
||||
writeValue(nameIndex - currentNameIndex);
|
||||
currentNameIndex = nameIndex;
|
||||
activeName = true;
|
||||
} else {
|
||||
activeName = false;
|
||||
}
|
||||
} else {
|
||||
activeMapping = false;
|
||||
}
|
||||
return str;
|
||||
};
|
||||
};
|
||||
|
||||
const createLinesOnlyMappingsSerializer = () => {
|
||||
let lastWrittenLine = 0;
|
||||
let currentLine = 1;
|
||||
let currentSourceIndex = 0;
|
||||
let currentOriginalLine = 1;
|
||||
// eslint-disable-next-line valid-jsdoc
|
||||
/** @type {MappingsSerializer} */
|
||||
return (
|
||||
generatedLine,
|
||||
_generatedColumn,
|
||||
sourceIndex,
|
||||
originalLine,
|
||||
_originalColumn,
|
||||
_nameIndex
|
||||
) => {
|
||||
if (sourceIndex < 0) {
|
||||
// avoid writing generated mappings at all
|
||||
return "";
|
||||
}
|
||||
if (lastWrittenLine === generatedLine) {
|
||||
// avoid writing multiple original mappings per line
|
||||
return "";
|
||||
}
|
||||
/** @type {undefined | string} */
|
||||
let str;
|
||||
/**
|
||||
* @param {number} value value
|
||||
* @returns {void}
|
||||
*/
|
||||
const writeValue = (value) => {
|
||||
const sign = (value >>> 31) & 1;
|
||||
const mask = value >> 31;
|
||||
const absValue = (value + mask) ^ mask;
|
||||
let data = (absValue << 1) | sign;
|
||||
for (;;) {
|
||||
const sextet = data & 0x1f;
|
||||
data >>= 5;
|
||||
if (data === 0) {
|
||||
str += ALPHABET[sextet];
|
||||
break;
|
||||
} else {
|
||||
str += ALPHABET[sextet | CONTINUATION_BIT];
|
||||
}
|
||||
}
|
||||
};
|
||||
lastWrittenLine = generatedLine;
|
||||
if (generatedLine === currentLine + 1) {
|
||||
currentLine = generatedLine;
|
||||
if (sourceIndex === currentSourceIndex) {
|
||||
if (originalLine === currentOriginalLine + 1) {
|
||||
currentOriginalLine = originalLine;
|
||||
return ";AACA";
|
||||
} else {
|
||||
str = ";AA";
|
||||
writeValue(originalLine - currentOriginalLine);
|
||||
currentOriginalLine = originalLine;
|
||||
return str + "A";
|
||||
}
|
||||
} else {
|
||||
str = ";A";
|
||||
writeValue(sourceIndex - currentSourceIndex);
|
||||
currentSourceIndex = sourceIndex;
|
||||
writeValue(originalLine - currentOriginalLine);
|
||||
currentOriginalLine = originalLine;
|
||||
return str + "A";
|
||||
}
|
||||
} else {
|
||||
str = ";".repeat(generatedLine - currentLine);
|
||||
currentLine = generatedLine;
|
||||
if (sourceIndex === currentSourceIndex) {
|
||||
if (originalLine === currentOriginalLine + 1) {
|
||||
currentOriginalLine = originalLine;
|
||||
return str + "AACA";
|
||||
} else {
|
||||
str += "AA";
|
||||
writeValue(originalLine - currentOriginalLine);
|
||||
currentOriginalLine = originalLine;
|
||||
return str + "A";
|
||||
}
|
||||
} else {
|
||||
str += "A";
|
||||
writeValue(sourceIndex - currentSourceIndex);
|
||||
currentSourceIndex = sourceIndex;
|
||||
writeValue(originalLine - currentOriginalLine);
|
||||
currentOriginalLine = originalLine;
|
||||
return str + "A";
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = createMappingsSerializer;
|
Reference in New Issue
Block a user