44 */
55'use strict' ;
66
7- var os = require ( 'os' ) ,
8- path = require ( 'path' ) ,
9- fs = require ( 'fs' ) ,
10- util = require ( 'util' ) ,
11- loaderUtils = require ( 'loader-utils' ) ,
12- SourceMapConsumer = require ( 'source-map' ) . SourceMapConsumer ;
7+ const os = require ( 'os' ) ;
8+ const path = require ( 'path' ) ;
9+ const fs = require ( 'fs' ) ;
10+ const util = require ( 'util' ) ;
11+ const loaderUtils = require ( 'loader-utils' ) ;
12+ const SourceMapConsumer = require ( 'source-map' ) . SourceMapConsumer ;
1313
14- var adjustSourceMap = require ( 'adjust-sourcemap-loader/lib/process' ) ;
14+ const adjustSourceMap = require ( 'adjust-sourcemap-loader/lib/process' ) ;
1515
16- var valueProcessor = require ( './lib/value-processor' ) ,
17- joinFn = require ( './lib/join-function' ) ,
18- logToTestHarness = require ( './lib/log-to-test-harness' ) ;
16+ const valueProcessor = require ( './lib/value-processor' ) ;
17+ const joinFn = require ( './lib/join-function' ) ;
18+ const logToTestHarness = require ( './lib/log-to-test-harness' ) ;
1919
2020const DEPRECATED_OPTIONS = {
2121 engine : [
2222 'DEP_RESOLVE_URL_LOADER_OPTION_ENGINE' ,
23- 'the "engine" option is deprecated , "postcss" engine is the default, there are no other available engines '
23+ 'the "engine" option has been removed , "postcss" is the only available parser '
2424 ] ,
2525 keepQuery : [
2626 'DEP_RESOLVE_URL_LOADER_OPTION_KEEP_QUERY' ,
@@ -55,7 +55,7 @@ function resolveUrlLoader(content, sourceMap) {
5555 /* jshint validthis:true */
5656
5757 // details of the file being processed
58- var loader = this ;
58+ const loader = this ;
5959
6060 // a relative loader.context is a problem
6161 if ( / ^ \. / . test ( loader . context ) ) {
@@ -66,24 +66,20 @@ function resolveUrlLoader(content, sourceMap) {
6666 }
6767
6868 // infer webpack version from new loader features
69- var isWebpackGte5 = 'getOptions' in loader && typeof loader . getOptions === 'function' ;
69+ const isWebpackGte5 = 'getOptions' in loader && typeof loader . getOptions === 'function' ;
7070
71- // webpack 1: prefer loader query, else options object
72- // webpack 2: prefer loader options
73- // webpack 3: deprecate loader.options object
74- // webpack 4: loader.options no longer defined
75- var rawOptions = loaderUtils . getOptions ( loader ) ,
76- options = Object . assign (
71+ // use loader.getOptions where available otherwise use loaderUtils
72+ const rawOptions = isWebpackGte5 ? loader . getOptions ( ) : loaderUtils . getOptions ( loader ) ;
73+ const options = Object . assign (
7774 {
7875 sourceMap : loader . sourceMap ,
79- engine : 'postcss' ,
8076 silent : false ,
8177 removeCR : os . EOL . includes ( '\r' ) ,
8278 root : false ,
8379 debug : false ,
8480 join : joinFn . defaultJoin
8581 } ,
86- rawOptions
82+ rawOptions ,
8783 ) ;
8884
8985 // maybe log options for the test harness
@@ -95,7 +91,7 @@ function resolveUrlLoader(content, sourceMap) {
9591 }
9692
9793 // deprecated options
98- var deprecatedItems = Object . entries ( DEPRECATED_OPTIONS ) . filter ( ( [ key ] ) => key in rawOptions ) ;
94+ const deprecatedItems = Object . entries ( DEPRECATED_OPTIONS ) . filter ( ( [ key ] ) => key in rawOptions ) ;
9995 if ( deprecatedItems . length ) {
10096 deprecatedItems . forEach ( ( [ , value ] ) => handleAsDeprecated ( ...value ) ) ;
10197 }
@@ -114,7 +110,7 @@ function resolveUrlLoader(content, sourceMap) {
114110 }
115111
116112 // validate the result of calling the join option
117- var joinProper = options . join ( options , loader ) ;
113+ const joinProper = options . join ( options , loader ) ;
118114 if ( typeof joinProper !== 'function' ) {
119115 return handleAsError (
120116 'loader misconfiguration' ,
@@ -129,7 +125,7 @@ function resolveUrlLoader(content, sourceMap) {
129125
130126 // validate root option
131127 if ( typeof options . root === 'string' ) {
132- var isValid = ( options . root === '' ) ||
128+ const isValid = ( options . root === '' ) ||
133129 ( path . isAbsolute ( options . root ) && fs . existsSync ( options . root ) && fs . statSync ( options . root ) . isDirectory ( ) ) ;
134130
135131 if ( ! isValid ) {
@@ -149,7 +145,8 @@ function resolveUrlLoader(content, sourceMap) {
149145 loader . cacheable ( ) ;
150146
151147 // incoming source-map
152- var sourceMapConsumer , absSourceMap ;
148+ let absSourceMap = null ;
149+ let sourceMapConsumer = null ;
153150 if ( sourceMap ) {
154151
155152 // support non-standard string encoded source-map (per less-loader)
@@ -186,20 +183,10 @@ function resolveUrlLoader(content, sourceMap) {
186183 ) ;
187184 }
188185
189- // choose a CSS engine
190- var enginePath = / ^ [ \w - ] + $ / . test ( options . engine ) && path . join ( __dirname , 'lib' , 'engine' , options . engine + '.js' ) ;
191- var isValidEngine = fs . existsSync ( enginePath ) ;
192- if ( ! isValidEngine ) {
193- return handleAsError (
194- 'loader misconfiguration' ,
195- '"engine" option is not valid'
196- ) ;
197- }
198-
199186 // allow engine to throw at initialisation
200- var engine ;
187+ let engine = null ;
201188 try {
202- engine = require ( enginePath ) ;
189+ engine = require ( './lib/engine/postcss' ) ;
203190 } catch ( error ) {
204191 return handleAsError (
205192 'error initialising' ,
@@ -208,7 +195,7 @@ function resolveUrlLoader(content, sourceMap) {
208195 }
209196
210197 // process async
211- var callback = loader . async ( ) ;
198+ const callback = loader . async ( ) ;
212199 Promise
213200 . resolve ( engine ( loader . resourcePath , content , {
214201 outputSourceMap : ! ! options . sourceMap ,
@@ -234,7 +221,7 @@ function resolveUrlLoader(content, sourceMap) {
234221 // webpack4 and earlier: source-map sources are relative to the file being processed
235222 // webpack5: source-map sources are relative to the project root but without a leading slash
236223 if ( options . sourceMap ) {
237- var finalMap = adjustSourceMap ( loader , {
224+ const finalMap = adjustSourceMap ( loader , {
238225 format : isWebpackGte5 ? 'projectRelative' : 'sourceRelative'
239226 } , result . map ) ;
240227 callback ( null , result . content , finalMap ) ;
0 commit comments