1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.extractCSS = exports.injectCSS = exports.injectStyleLoader = exports.CSS = exports.img = exports.url = exports.markdown = exports.JS = exports.extractCSSPlugin = undefined;
|
7 |
|
8 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
9 |
|
10 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
11 |
|
12 | var _stringify = require('babel-runtime/core-js/json/stringify');
|
13 |
|
14 | var _stringify2 = _interopRequireDefault(_stringify);
|
15 |
|
16 | var _extends2 = require('babel-runtime/helpers/extends');
|
17 |
|
18 | var _extends3 = _interopRequireDefault(_extends2);
|
19 |
|
20 | exports.defaultConfig = defaultConfig;
|
21 | exports.mergeConfig = mergeConfig;
|
22 | exports.moduleRequest = moduleRequest;
|
23 | exports.loader = loader;
|
24 | exports.configureWebpack = configureWebpack;
|
25 | exports.readConfigSync = readConfigSync;
|
26 |
|
27 | var _invariant = require('invariant');
|
28 |
|
29 | var _invariant2 = _interopRequireDefault(_invariant);
|
30 |
|
31 | var _fs = require('fs');
|
32 |
|
33 | var _fs2 = _interopRequireDefault(_fs);
|
34 |
|
35 | var _path = require('path');
|
36 |
|
37 | var _path2 = _interopRequireDefault(_path);
|
38 |
|
39 | var _webpack = require('webpack');
|
40 |
|
41 | var _webpack2 = _interopRequireDefault(_webpack);
|
42 |
|
43 | var _babelCore = require('babel-core');
|
44 |
|
45 | var _extractTextWebpackPlugin = require('extract-text-webpack-plugin');
|
46 |
|
47 | var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
|
48 |
|
49 | var _minimatch = require('minimatch');
|
50 |
|
51 | var _utils = require('./compiler/utils');
|
52 |
|
53 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
54 |
|
55 | /**
|
56 | * @copyright 2016-present, Sitegen team
|
57 | */
|
58 |
|
59 | var BABEL_PRESET_ES2015 = require.resolve('babel-preset-es2015');
|
60 | var BABEL_PRESET_STAGE_1 = require.resolve('babel-preset-stage-1');
|
61 | var BABEL_PRESET_REACT = require.resolve('babel-preset-react');
|
62 |
|
63 | function defaultConfig(_ref) {
|
64 | var env = _ref.env;
|
65 |
|
66 |
|
67 | var deployCSS = env.development ? injectCSS : extractCSS;
|
68 |
|
69 | return {
|
70 |
|
71 | devtool: env.development ? 'cheap-module-source-map' : undefined,
|
72 |
|
73 | babel: {
|
74 | presets: [BABEL_PRESET_ES2015, BABEL_PRESET_STAGE_1, BABEL_PRESET_REACT]
|
75 | },
|
76 |
|
77 | loaders: {
|
78 | '**/*.js': JS,
|
79 | '**/*.md': [JS, markdown]
|
80 | },
|
81 |
|
82 | globalLoaders: {
|
83 | '**/*.css': deployCSS(CSS({ minimize: env.production })),
|
84 | '**/*.png': img,
|
85 | '**/*.jpg': img,
|
86 | '**/*.jpeg': img,
|
87 | '**/*.gif': img,
|
88 | '**/*.ico': img
|
89 | },
|
90 |
|
91 | plugins: [(env.content || env.production) && extractCSSPlugin, env.production && new _webpack2.default.optimize.UglifyJsPlugin({
|
92 | compress: { warnings: false }
|
93 | })]
|
94 | };
|
95 | }
|
96 |
|
97 | function mergeConfig() {
|
98 | for (var _len = arguments.length, config = Array(_len), _key = 0; _key < _len; _key++) {
|
99 | config[_key] = arguments[_key];
|
100 | }
|
101 |
|
102 | config = config.filter(Boolean);
|
103 | (0, _invariant2.default)(config.length > 0, 'Trying to merge empty list of configurations');
|
104 | if (config.length === 1) {
|
105 | return config[0];
|
106 | } else {
|
107 | return config.reduce(mergeConfigImpl);
|
108 | }
|
109 | }
|
110 |
|
111 | function mergeArray(a, b) {
|
112 | return [].concat(a).concat(b).filter(Boolean);
|
113 | }
|
114 |
|
115 | function mergeConfigImpl(a, b) {
|
116 | return (0, _extends3.default)({}, a, b, {
|
117 | entry: mergeArray(a.entry, b.entry),
|
118 | babel: (0, _extends3.default)({}, a.babel, b.babel, {
|
119 | presets: mergeArray(a.presets, b.presets),
|
120 | plugins: mergeArray(a.babel && a.babel.plugins, b.babel && b.babel.plugins)
|
121 | }),
|
122 | output: (0, _extends3.default)({}, a.output, b.output),
|
123 | loaders: (0, _extends3.default)({}, a.loaders, b.loaders),
|
124 | globalLoaders: (0, _extends3.default)({}, a.globalLoaders, b.globalLoaders),
|
125 | plugins: mergeArray(a.plugins, b.plugins)
|
126 | });
|
127 | }
|
128 |
|
129 | function moduleRequest(id) {
|
130 | for (var _len2 = arguments.length, loader = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
131 | loader[_key2 - 1] = arguments[_key2];
|
132 | }
|
133 |
|
134 | loader.reverse();
|
135 | return normalizeLoader(loader) + '!' + id;
|
136 | }
|
137 |
|
138 | function loader(loader) {
|
139 | return loaderImpl({ loader: loader });
|
140 | }
|
141 |
|
142 | function loaderImpl(config) {
|
143 | var mergeQuery = config.mergeQuery || function (a, b) {
|
144 | return (0, _extends3.default)({}, a, b);
|
145 | };
|
146 | var configurator = function configurator(query) {
|
147 | return loaderImpl((0, _extends3.default)({}, config, {
|
148 | query: mergeQuery(config.query, query)
|
149 | }));
|
150 | };
|
151 | configurator.config = config;
|
152 | configurator.toLoaderString = function toLoaderString() {
|
153 | return normalizeLoader(config);
|
154 | };
|
155 | configurator.toString = configurator.toLoaderString;
|
156 | return configurator;
|
157 | }
|
158 |
|
159 | function normalizeLoader(element) {
|
160 | if (Array.isArray(element)) {
|
161 | return element.map(normalizeLoader).join('!');
|
162 | } else if (typeof element === 'string') {
|
163 | return element;
|
164 | } else if (element.toLoaderString) {
|
165 | return element.toLoaderString();
|
166 | } else {
|
167 | if (element.query) {
|
168 | return element.loader + '?' + (0, _stringify2.default)(element.query);
|
169 | } else {
|
170 | return element.loader;
|
171 | }
|
172 | }
|
173 | }
|
174 |
|
175 | function makePatterMatcher(pattern) {
|
176 | var patterMatcher = new _minimatch.Minimatch(pattern);
|
177 |
|
178 | var matcher = function matcher(filename) {
|
179 | return patterMatcher.match(filename);
|
180 | };
|
181 | matcher.toString = function () {
|
182 | return '[PatternMatcher ' + pattern + ']';
|
183 | };
|
184 | matcher.inspect = matcher.toString;
|
185 |
|
186 | return matcher;
|
187 | }
|
188 |
|
189 | function configureWebpackLoader(context, pattern, loader, global) {
|
190 | if (!global) {
|
191 | pattern = _path2.default.join(context, pattern);
|
192 | }
|
193 | var test = makePatterMatcher(pattern);
|
194 | return {
|
195 | loader: normalizeLoader(loader),
|
196 | test: test
|
197 | };
|
198 | }
|
199 |
|
200 | function configureWebpackLoaderList(context, loaders, global) {
|
201 | var result = [];
|
202 | for (var pattern in loaders) {
|
203 | var _loader = loaders[pattern];
|
204 | result.push(configureWebpackLoader(context, pattern, _loader, global));
|
205 | }
|
206 | return result;
|
207 | }
|
208 |
|
209 | function configureWebpack(_ref2) {
|
210 | var context = _ref2.context;
|
211 | var loaders = _ref2.loaders;
|
212 | var globalLoaders = _ref2.globalLoaders;
|
213 | var config = (0, _objectWithoutProperties3.default)(_ref2, ['context', 'loaders', 'globalLoaders']);
|
214 |
|
215 | loaders = configureWebpackLoaderList(context, loaders);
|
216 | globalLoaders = configureWebpackLoaderList(context, globalLoaders, true);
|
217 | return (0, _extends3.default)({}, config, {
|
218 | context: context,
|
219 | output: (0, _extends3.default)({}, config.output, {
|
220 | path: _path2.default.resolve(config.context, config.output.path)
|
221 | }),
|
222 | module: {
|
223 | loaders: loaders.concat(globalLoaders)
|
224 | }
|
225 | });
|
226 | }
|
227 |
|
228 | function readConfigSync(filename) {
|
229 | var source = _fs2.default.readFileSync(filename, 'utf8');
|
230 | source = (0, _babelCore.transform)(source, {
|
231 | filename: filename,
|
232 | presets: [BABEL_PRESET_ES2015, BABEL_PRESET_STAGE_1]
|
233 | }).code;
|
234 | return (0, _utils.evalAsModule)(source, filename);
|
235 | }
|
236 |
|
237 | var extractCSSPlugin = exports.extractCSSPlugin = new _extractTextWebpackPlugin2.default('bundle.css');
|
238 |
|
239 | var JS = exports.JS = loader(require.resolve('babel-loader'));
|
240 |
|
241 | var markdown = exports.markdown = loader(require.resolve('reactdown/webpack'));
|
242 |
|
243 | var url = exports.url = loader(require.resolve('url-loader'));
|
244 |
|
245 | var img = exports.img = url({ limit: 10000 });
|
246 |
|
247 | var CSS = exports.CSS = loader(require.resolve('css-loader'));
|
248 |
|
249 | var injectStyleLoader = exports.injectStyleLoader = loader(require.resolve('style-loader'));
|
250 |
|
251 | var injectCSS = exports.injectCSS = function injectCSS() {
|
252 | for (var _len3 = arguments.length, loader = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
253 | loader[_key3] = arguments[_key3];
|
254 | }
|
255 |
|
256 | return normalizeLoader([injectStyleLoader].concat(loader)).split('!');
|
257 | };
|
258 |
|
259 | var extractCSS = exports.extractCSS = function extractCSS() {
|
260 | for (var _len4 = arguments.length, loader = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
261 | loader[_key4] = arguments[_key4];
|
262 | }
|
263 |
|
264 | return extractCSSPlugin.extract(normalizeLoader(injectStyleLoader), normalizeLoader(loader)).split('!');
|
265 | };
|
266 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbmRyZXlwb3BwL1dvcmtzcGFjZS9zaXRlZ2VuL3NyYy9jb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQWlCZ0IsYSxHQUFBLGE7UUF1Q0EsVyxHQUFBLFc7UUE0Q0EsYSxHQUFBLGE7UUFLQSxNLEdBQUEsTTtRQWtFQSxnQixHQUFBLGdCO1FBZ0JBLGMsR0FBQSxjOztBQXZMaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU0sc0JBQXNCLFFBQVEsT0FBUixDQUFnQixxQkFBaEIsQ0FBNUI7QUFDQSxJQUFNLHVCQUF1QixRQUFRLE9BQVIsQ0FBZ0Isc0JBQWhCLENBQTdCO0FBQ0EsSUFBTSxxQkFBcUIsUUFBUSxPQUFSLENBQWdCLG9CQUFoQixDQUEzQjs7QUFFTyxTQUFTLGFBQVQsT0FBOEI7QUFBQSxNQUFOLEdBQU0sUUFBTixHQUFNOzs7QUFFbkMsTUFBSSxZQUFZLElBQUksV0FBSixHQUFrQixTQUFsQixHQUE4QixVQUE5Qzs7QUFFQSxTQUFPOztBQUVMLGFBQVMsSUFBSSxXQUFKLEdBQWtCLHlCQUFsQixHQUE4QyxTQUZsRDs7QUFJTCxXQUFPO0FBQ0wsZUFBUyxDQUNQLG1CQURPLEVBRVAsb0JBRk8sRUFHUCxrQkFITztBQURKLEtBSkY7O0FBWUwsYUFBUztBQUNQLGlCQUFXLEVBREo7QUFFUCxpQkFBVyxDQUFDLEVBQUQsRUFBSyxRQUFMO0FBRkosS0FaSjs7QUFpQkwsbUJBQWU7QUFDYixrQkFBWSxVQUFVLElBQUksRUFBQyxVQUFVLElBQUksVUFBZixFQUFKLENBQVYsQ0FEQztBQUViLGtCQUFZLEdBRkM7QUFHYixrQkFBWSxHQUhDO0FBSWIsbUJBQWEsR0FKQTtBQUtiLGtCQUFZLEdBTEM7QUFNYixrQkFBWTtBQU5DLEtBakJWOztBQTBCTCxhQUFTLENBQ1AsQ0FBQyxJQUFJLE9BQUosSUFBZSxJQUFJ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SUFBSSxvQkFBTSxJQUFJLEVBQUMsT0FBTyxLQUFSLEVBQUosQ0FBVjs7QUFFQSxJQUFJLG9CQUFNLE9BQU8sUUFBUSxPQUFSLENBQWdCLFlBQWhCLENBQVAsQ0FBVjs7QUFHQSxJQUFJLGdEQUFvQixPQUFPLFFBQVEsT0FBUixDQUFnQixjQUFoQixDQUFQLENBQXhCOztBQUVBLElBQUksZ0NBQVksU0FBWixTQUFZO0FBQUEscUNBQUksTUFBSjtBQUFJLFVBQUo7QUFBQTs7QUFBQSxTQUNyQixnQkFBZ0IsQ0FBQyxpQkFBRCxFQUFvQixNQUFwQixDQUEyQixNQUEzQixDQUFoQixFQUFvRCxLQUFwRCxDQUEwRCxHQUExRCxDQURxQjtBQUFBLENBQWhCOztBQUdBLElBQUksa0NBQWEsU0FBYixVQUFhO0FBQUEscUNBQUksTUFBSjtBQUFJLFVBQUo7QUFBQTs7QUFBQSxTQUN0QixpQkFBaUIsT0FBakIsQ0FDRSxnQkFBZ0IsaUJBQWhCLENBREYsRUFFRSxnQkFBZ0IsTUFBaEIsQ0FGRixFQUdFLEtBSEYsQ0FHUSxHQUhSLENBRHNCO0FBQUEsQ0FBakIiLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IDIwMTYtcHJlc2VudCwgU2l0ZWdlbiB0ZWFtXG4gKi9cblxuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHdlYnBhY2sgZnJvbSAnd2VicGFjayc7XG5pbXBvcnQge3RyYW5zZm9ybX0gZnJvbSAnYmFiZWwtY29yZSc7XG5pbXBvcnQgRXh0cmFjdFRleHRQbHVnaW4gZnJvbSAnZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luJztcbmltcG9ydCB7TWluaW1hdGNofSBmcm9tICdtaW5pbWF0Y2gnO1xuaW1wb3J0IHtldmFsQXNNb2R1bGV9IGZyb20gJy4vY29tcGlsZXIvdXRpbHMnO1xuXG5jb25zdCBCQUJFTF9QUkVTRVRfRVMyMDE1ID0gcmVxdWlyZS5yZXNvbHZlKCdiYWJlbC1wcmVzZXQtZXMyMDE1Jyk7XG5jb25zdCBCQUJFTF9QUkVTRVRfU1RBR0VfMSA9IHJlcXVpcmUucmVzb2x2ZSgnYmFiZWwtcHJlc2V0LXN0YWdlLTEnKTtcbmNvbnN0IEJBQkVMX1BSRVNFVF9SRUFDVCA9IHJlcXVpcmUucmVzb2x2ZSgnYmFiZWwtcHJlc2V0LXJlYWN0Jyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0Q29uZmlnKHtlbnZ9KSB7XG5cbiAgbGV0IGRlcGxveUNTUyA9IGVudi5kZXZlbG9wbWVudCA/IGluamVjdENTUyA6IGV4dHJhY3RDU1M7XG5cbiAgcmV0dXJuIHtcblxuICAgIGRldnRvb2w6IGVudi5kZXZlbG9wbWVudCA/ICdjaGVhcC1tb2R1bGUtc291cmNlLW1hcCcgOiB1bmRlZmluZWQsXG5cbiAgICBiYWJlbDoge1xuICAgICAgcHJlc2V0czogW1xuICAgICAgICBCQUJFTF9QUkVTRVRfRVMyMDE1LFxuICAgICAgICBCQUJFTF9QUkVTRVRfU1RBR0VfMSxcbiAgICAgICAgQkFCRUxfUFJFU0VUX1JFQUNUXG4gICAgICBdXG4gICAgfSxcblxuICAgIGxvYWRlcnM6IHtcbiAgICAgICcqKi8qLmpzJzogSlMsXG4gICAgICAnKiovKi5tZCc6IFtKUywgbWFya2Rvd25dLFxuICAgIH0sXG5cbiAgICBnbG9iYWxMb2FkZXJzOiB7XG4gICAgICAnKiovKi5jc3MnOiBkZXBsb3lDU1MoQ1NTKHttaW5pbWl6ZTogZW52LnByb2R1Y3Rpb259KSksXG4gICAgICAnKiovKi5wbmcnOiBpbWcsXG4gICAgICAnKiovKi5qcGcnOiBpbWcsXG4gICAgICAnKiovKi5qcGVnJzogaW1nLFxuICAgICAgJyoqLyouZ2lmJzogaW1nLFxuICAgICAgJyoqLyouaWNvJzogaW1nLFxuICAgIH0sXG5cbiAgICBwbHVnaW5zOiBbXG4gICAgICAoZW52LmNvbnRlbnQgfHwgZW52LnByb2R1Y3Rpb24pICYmIGV4dHJhY3RDU1NQbHVnaW4sXG4gICAgICBlbnYucHJvZHVjdGlvbiAmJiBuZXcgd2VicGFjay5vcHRpbWl6ZS5VZ2xpZnlKc1BsdWdpbih7XG4gICAgICAgIGNvbXByZXNzOiB7d2FybmluZ3M6IGZhbHNlfVxuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKC4uLmNvbmZpZykge1xuICBjb25maWcgPSBjb25maWcuZmlsdGVyKEJvb2xlYW4pO1xuICBpbnZhcmlhbnQoXG4gICAgY29uZmlnLmxlbmd0aCA+IDAsXG4gICAgJ1RyeWluZyB0byBtZXJnZSBlbXB0eSBsaXN0IG9mIGNvbmZpZ3VyYXRpb25zJ1xuICApO1xuICBpZiAoY29uZmlnLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBjb25maWdbMF07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbmZpZy5yZWR1Y2UobWVyZ2VDb25maWdJbXBsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUFycmF5KGEsIGIpIHtcbiAgcmV0dXJuIFtdLmNvbmNhdChhKS5jb25jYXQoYikuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZ0ltcGwoYSwgYikge1xuICByZXR1cm4ge1xuICAgIC4uLmEsXG4gICAgLi4uYixcbiAgICBlbnRyeTogbWVyZ2VBcnJheShhLmVudHJ5LCBiLmVudHJ5KSxcbiAgICBiYWJlbDoge1xuICAgICAgLi4uYS5iYWJlbCxcbiAgICAgIC4uLmIuYmFiZWwsXG4gICAgICBwcmVzZXRzOiBtZXJnZUFycmF5KGEucHJlc2V0cywgYi5wcmVzZXRzKSxcbiAgICAgIHBsdWdpbnM6IG1lcmdlQXJyYXkoYS5iYWJlbCAmJiBhLmJhYmVsLnBsdWdpbnMsIGIuYmFiZWwgJiYgYi5iYWJlbC5wbHVnaW5zKSxcbiAgICB9LFxuICAgIG91dHB1dDoge1xuICAgICAgLi4uYS5vdXRwdXQsXG4gICAgICAuLi5iLm91dHB1dCxcbiAgICB9LFxuICAgIGxvYWRlcnM6IHtcbiAgICAgIC4uLmEubG9hZGVycyxcbiAgICAgIC4uLmIubG9hZGVyc1xuICAgIH0sXG4gICAgZ2xvYmFsTG9hZGVyczoge1xuICAgICAgLi4uYS5nbG9iYWxMb2FkZXJzLFxuICAgICAgLi4uYi5nbG9iYWxMb2FkZXJzXG4gICAgfSxcbiAgICBwbHVnaW5zOiBtZXJnZUFycmF5KGEucGx1Z2lucywgYi5wbHVnaW5zKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZHVsZVJlcXVlc3QoaWQsIC4uLmxvYWRlcikge1xuICBsb2FkZXIucmV2ZXJzZSgpO1xuICByZXR1cm4gYCR7bm9ybWFsaXplTG9hZGVyKGxvYWRlcil9ISR7aWR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRlcihsb2FkZXIpIHtcbiAgcmV0dXJuIGxvYWRlckltcGwoe2xvYWRlcn0pO1xufVxuXG5mdW5jdGlvbiBsb2FkZXJJbXBsKGNvbmZpZykge1xuICBsZXQgbWVyZ2VRdWVyeSA9IGNvbmZpZy5tZXJnZVF1ZXJ5IHx8ICgoYSwgYikgPT4gKHsuLi5hLCAuLi5ifSkpO1xuICBsZXQgY29uZmlndXJhdG9yID0gZnVuY3Rpb24gY29uZmlndXJhdG9yKHF1ZXJ5KSB7XG4gICAgcmV0dXJuIGxvYWRlckltcGwoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgcXVlcnk6IG1lcmdlUXVlcnkoY29uZmlnLnF1ZXJ5LCBxdWVyeSksXG4gICAgfSk7XG4gIH07XG4gIGNvbmZpZ3VyYXRvci5jb25maWcgPSBjb25maWc7XG4gIGNvbmZpZ3VyYXRvci50b0xvYWRlclN0cmluZyA9IGZ1bmN0aW9uIHRvTG9hZGVyU3RyaW5nKCkge1xuICAgIHJldHVybiBub3JtYWxpemVMb2FkZXIoY29uZmlnKTtcbiAgfTtcbiAgY29uZmlndXJhdG9yLnRvU3RyaW5nID0gY29uZmlndXJhdG9yLnRvTG9hZGVyU3RyaW5nO1xuICByZXR1cm4gY29uZmlndXJhdG9yO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVMb2FkZXIoZWxlbWVudCkge1xuICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSkge1xuICAgIHJldHVybiBlbGVtZW50Lm1hcChub3JtYWxpemVMb2FkZXIpLmpvaW4oJyEnKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSBlbHNlIGlmIChlbGVtZW50LnRvTG9hZGVyU3RyaW5nKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudG9Mb2FkZXJTdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubG9hZGVyICsgJz8nICsgSlNPTi5zdHJpbmdpZnkoZWxlbWVudC5xdWVyeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlbGVtZW50LmxvYWRlcjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFrZVBhdHRlck1hdGNoZXIocGF0dGVybikge1xuICBsZXQgcGF0dGVyTWF0Y2hlciA9IG5ldyBNaW5pbWF0Y2gocGF0dGVybik7XG5cbiAgbGV0IG1hdGNoZXIgPSBmaWxlbmFtZSA9PiBwYXR0ZXJNYXRjaGVyLm1hdGNoKGZpbGVuYW1lKTtcbiAgbWF0Y2hlci50b1N0cmluZyA9ICgpID0+IGBbUGF0dGVybk1hdGNoZXIgJHtwYXR0ZXJufV1gO1xuICBtYXRjaGVyLmluc3BlY3QgPSBtYXRjaGVyLnRvU3RyaW5nO1xuXG4gIHJldHVybiBtYXRjaGVyO1xufVxuXG5mdW5jdGlvbiBjb25maWd1cmVXZWJwYWNrTG9hZGVyKGNvbnRleHQsIHBhdHRlcm4sIGxvYWRlciwgZ2xvYmFsKSB7XG4gIGlmICghZ2xvYmFsKSB7XG4gICAgcGF0dGVybiA9IHBhdGguam9pbihjb250ZXh0LCBwYXR0ZXJuKTtcbiAgfVxuICBsZXQgdGVzdCA9IG1ha2VQYXR0ZXJNYXRjaGVyKHBhdHRlcm4pO1xuICByZXR1cm4ge1xuICAgIGxvYWRlcjogbm9ybWFsaXplTG9hZGVyKGxvYWRlciksXG4gICAgdGVzdCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29uZmlndXJlV2VicGFja0xvYWRlckxpc3QoY29udGV4dCwgbG9hZGVycywgZ2xvYmFsKSB7XG4gIGxldCByZXN1bHQgPSBbXTtcbiAgZm9yIChsZXQgcGF0dGVybiBpbiBsb2FkZXJzKSB7XG4gICAgbGV0IGxvYWRlciA9IGxvYWRlcnNbcGF0dGVybl07XG4gICAgcmVzdWx0LnB1c2goY29uZmlndXJlV2VicGFja0xvYWRlcihjb250ZXh0LCBwYXR0ZXJuLCBsb2FkZXIsIGdsb2JhbCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVXZWJwYWNrKHtjb250ZXh0LCBsb2FkZXJzLCBnbG9iYWxMb2FkZXJzLCAuLi5jb25maWd9KSB7XG4gIGxvYWRlcnMgPSBjb25maWd1cmVXZWJwYWNrTG9hZGVyTGlzdChjb250ZXh0LCBsb2FkZXJzKTtcbiAgZ2xvYmFsTG9hZGVycyA9IGNvbmZpZ3VyZVdlYnBhY2tMb2FkZXJMaXN0KGNvbnRleHQsIGdsb2JhbExvYWRlcnMsIHRydWUpO1xuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBjb250ZXh0LFxuICAgIG91dHB1dDoge1xuICAgICAgLi4uY29uZmlnLm91dHB1dCxcbiAgICAgIHBhdGg6IHBhdGgucmVzb2x2ZShjb25maWcuY29udGV4dCwgY29uZmlnLm91dHB1dC5wYXRoKVxuICAgIH0sXG4gICAgbW9kdWxlOiB7XG4gICAgICBsb2FkZXJzOiBsb2FkZXJzLmNvbmNhdChnbG9iYWxMb2FkZXJzKSxcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29uZmlnU3luYyhmaWxlbmFtZSkge1xuICBsZXQgc291cmNlID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpO1xuICBzb3VyY2UgPSB0cmFuc2Zvcm0oc291cmNlLCB7XG4gICAgZmlsZW5hbWUsXG4gICAgcHJlc2V0czogW0JBQkVMX1BSRVNFVF9FUzIwMTUsIEJBQkVMX1BSRVNFVF9TVEFHRV8xXVxuICB9KS5jb2RlO1xuICByZXR1cm4gZXZhbEFzTW9kdWxlKHNvdXJjZSwgZmlsZW5hbWUpO1xufVxuXG5leHBvcnQgbGV0IGV4dHJhY3RDU1NQbHVnaW4gPSBuZXcgRXh0cmFjdFRleHRQbHVnaW4oJ2J1bmRsZS5jc3MnKTtcblxuZXhwb3J0IGxldCBKUyA9IGxvYWRlcihyZXF1aXJlLnJlc29sdmUoJ2JhYmVsLWxvYWRlcicpKTtcblxuZXhwb3J0IGxldCBtYXJrZG93biA9IGxvYWRlcihyZXF1aXJlLnJlc29sdmUoJ3JlYWN0ZG93bi93ZWJwYWNrJykpO1xuXG5leHBvcnQgbGV0IHVybCA9IGxvYWRlcihyZXF1aXJlLnJlc29sdmUoJ3VybC1sb2FkZXInKSk7XG5cbmV4cG9ydCBsZXQgaW1nID0gdXJsKHtsaW1pdDogMTAwMDB9KTtcblxuZXhwb3J0IGxldCBDU1MgPSBsb2FkZXIocmVxdWlyZS5yZXNvbHZlKCdjc3MtbG9hZGVyJykpO1xuXG5cbmV4cG9ydCBsZXQgaW5qZWN0U3R5bGVMb2FkZXIgPSBsb2FkZXIocmVxdWlyZS5yZXNvbHZlKCdzdHlsZS1sb2FkZXInKSk7XG5cbmV4cG9ydCBsZXQgaW5qZWN0Q1NTID0gKC4uLmxvYWRlcikgPT5cbiAgbm9ybWFsaXplTG9hZGVyKFtpbmplY3RTdHlsZUxvYWRlcl0uY29uY2F0KGxvYWRlcikpLnNwbGl0KCchJyk7XG5cbmV4cG9ydCBsZXQgZXh0cmFjdENTUyA9ICguLi5sb2FkZXIpID0+XG4gIGV4dHJhY3RDU1NQbHVnaW4uZXh0cmFjdChcbiAgICBub3JtYWxpemVMb2FkZXIoaW5qZWN0U3R5bGVMb2FkZXIpLFxuICAgIG5vcm1hbGl6ZUxvYWRlcihsb2FkZXIpXG4gICkuc3BsaXQoJyEnKTtcbiJdfQ== |
\ | No newline at end of file |