[6a3a178] | 1 | 'use strict';
|
---|
| 2 |
|
---|
| 3 | var PACKAGE_NAME = require('../../package.json').name,
|
---|
| 4 | PADDING = (new Array(11)).join(' ');
|
---|
| 5 |
|
---|
| 6 | /**
|
---|
| 7 | * Format a debug message
|
---|
| 8 | * @param {{resourcePath:string, loaders:Array, loaderIndex:number}} context A loader or compilation
|
---|
| 9 | * @param {{input:Array.<string>, absolute:Array.<string>, output:Array.<string>, root:string}} info Source-map info
|
---|
| 10 | * @returns {string} An encoded debug string
|
---|
| 11 | */
|
---|
| 12 | function debugMessage(context, info) {
|
---|
| 13 | return [
|
---|
| 14 | ' ',
|
---|
| 15 | PACKAGE_NAME + ':',
|
---|
| 16 | ' ' + context.resourcePath,
|
---|
| 17 | formatField('@', precedingRequest(context)),
|
---|
| 18 | formatField('INPUT', info.input || '(source-map absent)'),
|
---|
| 19 | formatField('ABSOLUTE', info.absolute),
|
---|
| 20 | formatField('OUTPUT', info.output),
|
---|
| 21 | formatField('ROOT', info.root)
|
---|
| 22 | ]
|
---|
| 23 | .filter(Boolean)
|
---|
| 24 | .join('\n');
|
---|
| 25 | }
|
---|
| 26 |
|
---|
| 27 | module.exports = debugMessage;
|
---|
| 28 |
|
---|
| 29 | /**
|
---|
| 30 | * Find the request that precedes this loader in the loader chain
|
---|
| 31 | * @param {{loaders:Array, loaderIndex:number}} loader The loader context
|
---|
| 32 | * @returns {string} The request of the preceding loader
|
---|
| 33 | */
|
---|
| 34 | function precedingRequest(loader) {
|
---|
| 35 | var isLoader = ('loaderIndex' in loader) && ('loaders' in loader) && Array.isArray(loader.loaders);
|
---|
| 36 | if (isLoader) {
|
---|
| 37 | var index = loader.loaderIndex + 1;
|
---|
| 38 | return (index in loader.loaders) ? loader.loaders[index].request : '(no preceding loader)';
|
---|
| 39 | }
|
---|
| 40 | }
|
---|
| 41 |
|
---|
| 42 | /**
|
---|
| 43 | * Where the data is truthy then format it with a right-aligned title.
|
---|
| 44 | * @param {string} title
|
---|
| 45 | * @param {*} data The data to display
|
---|
| 46 | * @returns {boolean|string} False where data is falsey, else formatted message
|
---|
| 47 | */
|
---|
| 48 | function formatField(title, data) {
|
---|
| 49 | return !!data && (rightAlign(title) + formatData(data));
|
---|
| 50 |
|
---|
| 51 | function rightAlign(text) {
|
---|
| 52 | return (PADDING + text + ' ').slice(-PADDING.length);
|
---|
| 53 | }
|
---|
| 54 |
|
---|
| 55 | function formatData(data) {
|
---|
| 56 | return Array.isArray(data) ? data.join('\n' + PADDING) : data;
|
---|
| 57 | }
|
---|
| 58 | } |
---|