UNPKG

7.36 kBJavaScriptView Raw
1'use strict';
2
3var _Object$keys = require('babel-runtime/core-js/object/keys')['default'];
4
5var _getIterator = require('babel-runtime/core-js/get-iterator')['default'];
6
7var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
8
9exports.__esModule = true;
10exports.default_webpack_assets = default_webpack_assets;
11exports.normalize_options = normalize_options;
12exports.alias = alias;
13
14var _path = require('path');
15
16var _path2 = _interopRequireDefault(_path);
17
18var _helpers = require('./helpers');
19
20// returns a stub for webpack-assets.json if it doesn't exist yet
21// (because node.js and webpack are being run in parallel in development mode)
22
23function default_webpack_assets() {
24 var webpack_assets = {
25 javascript: {},
26 styles: {},
27 assets: {}
28 };
29
30 return webpack_assets;
31}
32
33// adds missing fields, etc
34
35function normalize_options(options) {
36 // parameters check
37 for (var _iterator = _Object$keys(options), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
38 var _ref;
39
40 if (_isArray) {
41 if (_i >= _iterator.length) break;
42 _ref = _iterator[_i++];
43 } else {
44 _i = _iterator.next();
45 if (_i.done) break;
46 _ref = _i.value;
47 }
48
49 var key = _ref;
50
51 switch (key) {
52 case 'assets':
53 if (!_helpers.is_object(options[key])) {
54 throw new Error('"' + key + '" configuration parameter must be ' + 'an object');
55 }
56 break;
57
58 case 'debug':
59 if (typeof options[key] !== 'boolean') {
60 throw new Error('"' + key + '" configuration parameter must be ' + 'a boolean');
61 }
62 break;
63
64 case 'webpack_assets_file_path':
65 if (typeof options[key] !== 'string') {
66 throw new Error('"' + key + '" configuration parameter must be ' + 'a string');
67 }
68 break;
69
70 case 'alias':
71 if (!_helpers.is_object(options[key])) {
72 throw new Error('"' + key + '" configuration parameter must be ' + 'an object');
73 }
74 break;
75
76 default:
77 throw new Error('Unknown configuration parameter "' + key + '"');
78 }
79 }
80
81 // if no assets specified (for whatever reason), make it an empty array
82 if (!options.assets) {
83 // options.assets = {}
84 throw new Error('You must specify "assets" parameter in webpack-isomorphic-tools configuration');
85 }
86
87 // webpack-assets.json path, relative to the project base path
88 options.webpack_assets_file_path = options.webpack_assets_file_path || 'webpack-assets.json';
89
90 // if Webpack aliases are supplied, validate them
91 if (options.alias) {
92 for (var _iterator2 = _Object$keys(options.alias), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
93 var _ref2;
94
95 if (_isArray2) {
96 if (_i2 >= _iterator2.length) break;
97 _ref2 = _iterator2[_i2++];
98 } else {
99 _i2 = _iterator2.next();
100 if (_i2.done) break;
101 _ref2 = _i2.value;
102 }
103
104 var key = _ref2;
105
106 if (typeof options.alias[key] !== 'string') {
107 throw new Error('Invalid alias for "' + key + '": "' + options.alias[key] + '"');
108 }
109 }
110 }
111
112 // generate names (if required) for each user defined asset type, normalize extensions
113 for (var _iterator3 = _Object$keys(options.assets), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
114 var _ref3;
115
116 if (_isArray3) {
117 if (_i3 >= _iterator3.length) break;
118 _ref3 = _iterator3[_i3++];
119 } else {
120 _i3 = _iterator3.next();
121 if (_i3.done) break;
122 _ref3 = _i3.value;
123 }
124
125 var asset_type = _ref3;
126
127 var description = options.assets[asset_type];
128
129 // normalize extensions
130 if (description.extension) {
131 // sanity check
132 if (Array.isArray(description.extension)) {
133 throw new Error('Use "extensions" key instead of "extension" for specifying an array of file extensions for assets of type "' + asset_type + '"');
134 }
135
136 // sanity check
137 if (typeof description.extension !== 'string') {
138 throw new Error('"extension" value must be a string for assets of type "' + asset_type + '"');
139 }
140
141 // normalize
142 description.extensions = [description.extension];
143 delete description.extension;
144 }
145
146 // sanity check
147 if (!description.extensions) {
148 throw new Error('You must specify file extensions for assets of type "' + asset_type + '"');
149 }
150
151 // parameters check
152 for (var _iterator4 = _Object$keys(description), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
153 var _ref4;
154
155 if (_isArray4) {
156 if (_i4 >= _iterator4.length) break;
157 _ref4 = _iterator4[_i4++];
158 } else {
159 _i4 = _iterator4.next();
160 if (_i4.done) break;
161 _ref4 = _i4.value;
162 }
163
164 var key = _ref4;
165
166 switch (key) {
167 case 'extensions':
168 break;
169
170 case 'exclude':
171 if (!Array.isArray(description[key])) {
172 throw new Error('"' + key + '" must be an array for asset type "' + asset_type + '"');
173 }
174 for (var _iterator5 = description[key], _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
175 var _ref5;
176
177 if (_isArray5) {
178 if (_i5 >= _iterator5.length) break;
179 _ref5 = _iterator5[_i5++];
180 } else {
181 _i5 = _iterator5.next();
182 if (_i5.done) break;
183 _ref5 = _i5.value;
184 }
185
186 var exclusion = _ref5;
187
188 if (typeof exclusion !== 'string' && !(exclusion instanceof RegExp) && typeof exclusion !== 'function') {
189 throw new Error('Unsupported object type for exclusion "' + exclusion + '" for asset type "' + asset_type + '"');
190 }
191 }
192 break;
193
194 case 'include':
195 if (!Array.isArray(description[key])) {
196 throw new Error('"' + key + '" must be an array for asset type "' + asset_type + '"');
197 }
198 for (var _iterator6 = description[key], _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
199 var _ref6;
200
201 if (_isArray6) {
202 if (_i6 >= _iterator6.length) break;
203 _ref6 = _iterator6[_i6++];
204 } else {
205 _i6 = _iterator6.next();
206 if (_i6.done) break;
207 _ref6 = _i6.value;
208 }
209
210 var inclusion = _ref6;
211
212 if (typeof inclusion !== 'string' && !(inclusion instanceof RegExp) && typeof inclusion !== 'function') {
213 throw new Error('Unsupported object type for inclusion "' + inclusion + '" for asset type "' + asset_type + '"');
214 }
215 }
216 break;
217
218 case 'filter':
219 case 'parser':
220 case 'path':
221 if (typeof description[key] !== 'function') {
222 throw new Error('"' + key + '" must be a function for asset type "' + asset_type + '"');
223 }
224 break;
225
226 default:
227 throw new Error('Unknown property "' + key + '" for asset type "' + asset_type + '"');
228 }
229 }
230 }
231}
232
233function alias(path, aliases) {
234 // if it's a path to a file - don't interfere
235 if (_helpers.starts_with(path, '.') || _helpers.starts_with(path, '/')) {
236 return;
237 }
238
239 // extract module name from the path
240 var slash_index = path.indexOf('/');
241 var module_name = slash_index >= 0 ? path.substring(0, slash_index) : path;
242 var rest = slash_index >= 0 ? path.substring(slash_index) : '';
243
244 // find an alias
245 var alias = aliases[module_name];
246
247 // if an alias is found, require() the correct path
248 if (alias) {
249 return alias + rest;
250 }
251}
252//# sourceMappingURL=common.js.map
\No newline at end of file