1+ 'use strict' ;
2+
3+ Object . defineProperty ( exports , "__esModule" , {
4+ value : true
5+ } ) ;
6+
7+ var _stringify = require ( 'babel-runtime/core-js/json/stringify' ) ;
8+
9+ var _stringify2 = _interopRequireDefault ( _stringify ) ;
10+
11+ var _keys = require ( 'babel-runtime/core-js/object/keys' ) ;
12+
13+ var _keys2 = _interopRequireDefault ( _keys ) ;
14+
15+ var _postcss = require ( 'postcss' ) ;
16+
17+ var _postcss2 = _interopRequireDefault ( _postcss ) ;
18+
19+ var _postcssJs = require ( 'postcss-js' ) ;
20+
21+ var _postcssJs2 = _interopRequireDefault ( _postcssJs ) ;
22+
23+ var _postcssCssnext = require ( 'postcss-cssnext' ) ;
24+
25+ var _postcssCssnext2 = _interopRequireDefault ( _postcssCssnext ) ;
26+
27+ var _postcssImport = require ( 'postcss-import' ) ;
28+
29+ var _postcssImport2 = _interopRequireDefault ( _postcssImport ) ;
30+
31+ var _compose = require ( 'lodash/fp/compose' ) ;
32+
33+ var _compose2 = _interopRequireDefault ( _compose ) ;
34+
35+ var _get = require ( 'lodash/fp/get' ) ;
36+
37+ var _get2 = _interopRequireDefault ( _get ) ;
38+
39+ var _cond = require ( 'lodash/fp/cond' ) ;
40+
41+ var _cond2 = _interopRequireDefault ( _cond ) ;
42+
43+ var _lowerFirst = require ( 'lodash/lowerFirst' ) ;
44+
45+ var _lowerFirst2 = _interopRequireDefault ( _lowerFirst ) ;
46+
47+ var _loaderUtils = require ( 'loader-utils' ) ;
48+
49+ var _loaderUtils2 = _interopRequireDefault ( _loaderUtils ) ;
50+
51+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
52+
53+ var isDev = function isDev ( ) {
54+ return process . env . NODE_ENV === 'development' ;
55+ } ;
56+ var isProd = function isProd ( ) {
57+ return ! isDev ( ) ;
58+ } ;
59+
60+ var transform = function transform ( data ) {
61+ if ( ! data ) {
62+ return { } ;
63+ }
64+ return ( 0 , _keys2 . default ) ( data ) . reduce ( function ( acc , k ) {
65+ var v = data [ k ] ;
66+
67+ k = k . replace ( / ^ - + / , '' ) ; // strips '-'
68+ k = ( 0 , _lowerFirst2 . default ) ( k ) ;
69+ acc [ k ] = v . endsWith ( 'px' ) ? parseInt ( v , 10 ) : v ;
70+ return acc ;
71+ } , { } ) ;
72+ } ;
73+
74+ var toProdExport = function toProdExport ( code ) {
75+ return 'export default ' + code ;
76+ } ;
77+ var toDevExport = function toDevExport ( code ) {
78+ return 'let config = ' + code + ';\nif (typeof global.Proxy !== \'undefined\') {\n config = new Proxy(config, {\n get(target, key) {\n if (key !== \'__esModule\' && !target[key]) {\n console.error(`No variable found, check variable key: ["${key.toString()}"]`);\n }\n \n return target[key];\n },\n \n set(target, key) {\n throw new Error(\'Config variables are immutable \' + key);\n }\n });\n}\nexport default config' ;
79+ } ;
80+ var toES5Export = function toES5Export ( code ) {
81+ return 'module.exports = ' + code ;
82+ } ;
83+
84+ var toExport = ( 0 , _cond2 . default ) ( [ [ isDev , toDevExport ] , [ isProd , toProdExport ] ] ) ;
85+
86+ var toString = function toString ( data ) {
87+ return '' + ( 0 , _stringify2 . default ) ( data , null , '\t' ) ;
88+ } ;
89+ var toData = ( 0 , _compose2 . default ) ( transform , ( 0 , _get2 . default ) ( ':root' ) ) ;
90+ var toConfig = ( 0 , _compose2 . default ) ( toExport , toString , toData ) ;
91+ var toES5Config = ( 0 , _compose2 . default ) ( toES5Export , toString , toData ) ;
92+
93+ var getPostcss = function getPostcss ( async ) {
94+ return ( 0 , _postcss2 . default ) ( ) . use ( ( 0 , _postcssImport2 . default ) ( { async : async } ) ) . use ( ( 0 , _postcssCssnext2 . default ) ( {
95+ features : {
96+ customProperties : { preserve : 'computed' }
97+ }
98+ } ) ) ;
99+ } ;
100+
101+ var objectify = function objectify ( root , filepath ) {
102+ // removes imported rules, so we have only computed output
103+ root . walkRules ( function ( r ) {
104+ if ( r . source . input . file !== filepath ) {
105+ r . remove ( ) ;
106+ }
107+ } ) ;
108+ return _postcssJs2 . default . objectify ( root ) ;
109+ } ;
110+
111+ var loader = function loader ( source ) {
112+ var _this = this ;
113+
114+ if ( this . cacheable ) {
115+ this . cacheable ( ) ;
116+ }
117+
118+ var options = _loaderUtils2 . default . parseQuery ( this . query ) ;
119+ var _done = this . async ( ) ;
120+
121+ var transformToConfig = options . es5 ? toES5Config : toConfig ;
122+ var end = function end ( err ) {
123+ var data = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ;
124+ var map = arguments [ 2 ] ;
125+
126+ if ( err ) {
127+ _done ( err ) ;
128+ }
129+ return _done ( null , transformToConfig ( data ) , map ) ;
130+ } ;
131+
132+ var emitWarnings = function emitWarnings ( result ) {
133+ return result ;
134+ } ;
135+
136+ var onError = function onError ( error ) {
137+ if ( error . name === 'CssSyntaxError' ) {
138+ _this . emitError ( error . message + error . showSourceCode ( ) ) ;
139+ end ( ) ;
140+ } else {
141+ end ( error ) ;
142+ }
143+ } ;
144+
145+ getPostcss ( true ) . process ( source , {
146+ from : this . resourcePath
147+ } ) . then ( emitWarnings ) . then ( function ( result ) {
148+ return end ( null , objectify ( result . root , _this . resourcePath ) , result . map ) ;
149+ } ) . catch ( onError ) ;
150+ } ;
151+
152+ loader . sync = function sync ( source , filepath ) {
153+ var options = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : { } ;
154+
155+ var transformToConfig = options . es5 ? toES5Config : toConfig ;
156+ var root = getPostcss ( false ) . process ( source , { from : filepath } ) . root ;
157+
158+ return transformToConfig ( objectify ( root , filepath ) ) ;
159+ } ;
160+
161+ exports . default = loader ;
162+ module . exports = exports [ 'default' ] ;
0 commit comments