UNPKG

next

Version:

The React Framework

74 lines (73 loc) 2.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeSourceMapAfterPostcss = exports.normalizeSourceMap = void 0; var _path = _interopRequireDefault(require("path")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const IS_NATIVE_WIN32_PATH = /^[a-z]:[/\\]|^\\\\/i; const ABSOLUTE_SCHEME = /^[a-z0-9+\-.]+:/i; function getURLType(source) { if (source[0] === '/') { if (source[1] === '/') { return 'scheme-relative'; } return 'path-absolute'; } if (IS_NATIVE_WIN32_PATH.test(source)) { return 'path-absolute'; } return ABSOLUTE_SCHEME.test(source) ? 'absolute' : 'path-relative'; } function normalizeSourceMap(map, resourceContext) { let newMap = map; // Some loader emit source map as string // Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification), and then parse the string as JSON. if (typeof newMap === 'string') { newMap = JSON.parse(newMap); } delete newMap.file; const { sourceRoot } = newMap; delete newMap.sourceRoot; if (newMap.sources) { newMap.sources = newMap.sources.map((source)=>{ const sourceType = getURLType(source); // Do no touch `scheme-relative` and `absolute` URLs if (sourceType === 'path-relative' || sourceType === 'path-absolute') { const absoluteSource = sourceType === 'path-relative' && sourceRoot ? _path.default.resolve(sourceRoot, _path.default.normalize(source)) : _path.default.normalize(source); return _path.default.relative(resourceContext, absoluteSource); } return source; }); } return newMap; } exports.normalizeSourceMap = normalizeSourceMap; function normalizeSourceMapAfterPostcss(map, resourceContext) { const newMap = map; // result.map.file is an optional property that provides the output filename. // Since we don't know the final filename in the webpack build chain yet, it makes no sense to have it. // eslint-disable-next-line no-param-reassign delete newMap.file; // eslint-disable-next-line no-param-reassign newMap.sourceRoot = ''; // eslint-disable-next-line no-param-reassign newMap.sources = newMap.sources.map((source)=>{ if (source.indexOf('<') === 0) { return source; } const sourceType = getURLType(source); // Do no touch `scheme-relative`, `path-absolute` and `absolute` types if (sourceType === 'path-relative') { return _path.default.resolve(resourceContext, source); } return source; }); return newMap; } exports.normalizeSourceMapAfterPostcss = normalizeSourceMapAfterPostcss; //# sourceMappingURL=utils.js.map