1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | function _interopNamespace(e) {
|
8 | if (e && e.__esModule) { return e; } else {
|
9 | var n = {};
|
10 | if (e) {
|
11 | Object.keys(e).forEach(function (k) {
|
12 | var d = Object.getOwnPropertyDescriptor(e, k);
|
13 | Object.defineProperty(n, k, d.get ? d : {
|
14 | enumerable: true,
|
15 | get: function () {
|
16 | return e[k];
|
17 | }
|
18 | });
|
19 | });
|
20 | }
|
21 | n['default'] = e;
|
22 | return n;
|
23 | }
|
24 | }
|
25 |
|
26 | var path = require('path');
|
27 | var readPkg = _interopDefault(require('read-pkg'));
|
28 | var camelcase = _interopDefault(require('camelcase'));
|
29 | var builtinModules = _interopDefault(require('builtin-modules'));
|
30 | var lodash = require('lodash');
|
31 | var addShebang = _interopDefault(require('rollup-plugin-add-shebang'));
|
32 | var babel = _interopDefault(require('rollup-plugin-babel'));
|
33 | var commonjs = _interopDefault(require('rollup-plugin-commonjs'));
|
34 | var exportEquals = _interopDefault(require('rollup-plugin-export-equals'));
|
35 | var json = _interopDefault(require('rollup-plugin-json'));
|
36 | var nodeResolve = _interopDefault(require('rollup-plugin-node-resolve'));
|
37 | var stripShebang = _interopDefault(require('rollup-plugin-strip-shebang'));
|
38 | var rollupPluginTerser = require('rollup-plugin-terser');
|
39 | var typescript2 = _interopDefault(require('rollup-plugin-typescript2'));
|
40 | var slash = _interopDefault(require('slash'));
|
41 |
|
42 | function error(msg) {
|
43 | return new TypeError(msg);
|
44 | }
|
45 | function invalidPkgField(field, type) {
|
46 | return error("Invalid package.json \"" + field + "\" field. It has to be of type " + type);
|
47 | }
|
48 | function invalidOption(option, type) {
|
49 | return error("Invalid \"" + option + "\" option. It has to be " + type);
|
50 | }
|
51 |
|
52 | var keys = Object.keys;
|
53 | function setProp(name, value, target) {
|
54 | target[name] = value;
|
55 | return target;
|
56 | }
|
57 | function createObject(names, value) {
|
58 | return names.reduce(function (result, key) {
|
59 | return setProp(key, value, result);
|
60 | }, {});
|
61 | }
|
62 |
|
63 | function keysOrNull(deps) {
|
64 | return deps ? keys(deps) : null;
|
65 | }
|
66 |
|
67 | function isNull(value) {
|
68 | return value == null;
|
69 | }
|
70 | function isObject(value) {
|
71 | return !!value && typeof value === "object";
|
72 | }
|
73 | function isString(value) {
|
74 | return typeof value === "string";
|
75 | }
|
76 | function isBool(value) {
|
77 | return value === true || value === false;
|
78 | }
|
79 | var isArray = Array.isArray;
|
80 | function isDictionary(value) {
|
81 | return isObject(value) && !isArray(value);
|
82 | }
|
83 | function isStringOrNull(value) {
|
84 | return isNull(value) || isString(value);
|
85 | }
|
86 | function isDictionaryOrNull(value) {
|
87 | return isNull(value) || isDictionary(value);
|
88 | }
|
89 |
|
90 | function normalizeBuildFlag(build, key, def) {
|
91 | return !build || isNull(build[key]) ? def : !!build[key];
|
92 | }
|
93 |
|
94 | function isBrowserFormat(value) {
|
95 | return isNull(value) || value === "iife" || value === "amd" || value === "umd";
|
96 | }
|
97 |
|
98 | function isValidGlobals(value) {
|
99 | return isNull(value) || isObject(value) && (isArray(value) ? value.every(function (item) {
|
100 | return isString(item);
|
101 | }) : keys(value).every(function (key) {
|
102 | return isString(key) && isString(value[key]);
|
103 | }));
|
104 | }
|
105 | function normalizeGlobals(globals) {
|
106 | return !globals ? null : isArray(globals) ? globals.reduce(function (result, value) {
|
107 | return setProp(value, value, result);
|
108 | }, {}) : globals;
|
109 | }
|
110 | function normalizeBuildGlobals(build, def) {
|
111 | return !build || isNull(build.globals) ? def : normalizeGlobals(build.globals);
|
112 | }
|
113 |
|
114 | function isMinString(value) {
|
115 | return value === "main" || value === "module" || value === "browser" || value === "bin";
|
116 | }
|
117 | function isValidMinOption(value) {
|
118 | return isNull(value) || isBool(value) || isMinString(value) || isArray(value) && value.every(function (item) {
|
119 | return isMinString(item);
|
120 | });
|
121 | }
|
122 | function normalizeMinOption(min) {
|
123 | var keys = ["main", "module", "browser", "bin"];
|
124 | return !min ? createObject(keys, false) : min === true ? createObject(keys, true) : isArray(min) ? min.reduce(function (result, field) {
|
125 | return setProp(field, true, result);
|
126 | }, createObject(keys, false)) : setProp(min, true, createObject(keys, false));
|
127 | }
|
128 | function normalizeBuildMin(build, field, def) {
|
129 | return !build || isNull(build.min) ? def[field] : build.min;
|
130 | }
|
131 |
|
132 | function isModuleString(value) {
|
133 | return value === "main" || value === "browser" || value === "bin";
|
134 | }
|
135 | function isModuleOption(value) {
|
136 | return isNull(value) || isBool(value) || isModuleString(value) || isArray(value) && value.every(function (item) {
|
137 | return isModuleString(item);
|
138 | });
|
139 | }
|
140 | function normalizeModuleOption(option) {
|
141 | var keys = ["main", "browser", "bin"];
|
142 | return !option ? createObject(keys, false) : option === true ? createObject(keys, true) : isArray(option) ? option.reduce(function (result, field) {
|
143 | return setProp(field, true, result);
|
144 | }, createObject(keys, false)) : setProp(option, true, createObject(keys, false));
|
145 | }
|
146 | function normalizeBuildModule(build, key, field, def) {
|
147 | return !build || isNull(build[key]) ? def[field] : build[key];
|
148 | }
|
149 |
|
150 | function normalizeBuildName(cwd, browserName, nameOption, pkgName) {
|
151 | return browserName || nameOption || pkgName && camelcase(path.basename(pkgName)) || camelcase(path.basename(cwd)) || null;
|
152 | }
|
153 |
|
154 | function normalizeSourcemap(sourcemap) {
|
155 | return sourcemap === "inline" ? "inline" : sourcemap !== false;
|
156 | }
|
157 | function normalizeBuildSourcemap(build, def) {
|
158 | return !build || isNull(build.sourcemap) ? def : normalizeSourcemap(build.sourcemap);
|
159 | }
|
160 |
|
161 | function invalidKeys(object, list) {
|
162 | var invalid = keys(object).filter(function (key) {
|
163 | return list.indexOf(key) === -1;
|
164 | });
|
165 | return invalid.length ? invalid : null;
|
166 | }
|
167 | function listInList(input, model) {
|
168 | return input.every(function (str) {
|
169 | return model.indexOf(str) >= 0;
|
170 | });
|
171 | }
|
172 | function allKeysInList(object, model) {
|
173 | return listInList(keys(object), model);
|
174 | }
|
175 |
|
176 | function _await(value, then, direct) {
|
177 | if (direct) {
|
178 | return then ? then(value) : value;
|
179 | }
|
180 |
|
181 | if (!value || !value.then) {
|
182 | value = Promise.resolve(value);
|
183 | }
|
184 |
|
185 | return then ? value.then(then) : value;
|
186 | }
|
187 |
|
188 | var analizePkg = _async(function (cwd, inputPkg) {
|
189 | return _await(inputPkg || readPkg({
|
190 | cwd: cwd,
|
191 | normalize: false
|
192 | }), function (pkg) {
|
193 | if (!isDictionary(pkg)) {
|
194 | throw error("Invalid package.json content");
|
195 | }
|
196 |
|
197 | var pkgName = pkg.name,
|
198 | pkgMain = pkg.main,
|
199 | pkgModule = pkg.module,
|
200 | pkgJsNextMain = pkg["jsnext:main"],
|
201 | pkgBrowser = pkg.browser,
|
202 | pkgBin = pkg.bin,
|
203 | pkgTypes = pkg.types,
|
204 | typings = pkg.typings,
|
205 | runtimeDependencies = pkg.dependencies,
|
206 | peerDependencies = pkg.peerDependencies,
|
207 | optionalDependencies = pkg.optionalDependencies,
|
208 | bundlibOptions = pkg.bundlib;
|
209 |
|
210 | if (!isDictionaryOrNull(bundlibOptions)) {
|
211 | throw invalidPkgField("bundlib", "Object");
|
212 | }
|
213 |
|
214 | var invalidOptions = bundlibOptions && invalidKeys(bundlibOptions, ["input", "extend", "esModule", "interop", "equals", "sourcemap", "format", "name", "id", "globals", "min", "cache", "main", "module", "browser", "bin", "types"]);
|
215 |
|
216 | if (invalidOptions) {
|
217 | var optionNames = invalidOptions.map(function (name) {
|
218 | return "\"" + name + "\"";
|
219 | }).join(", ");
|
220 | throw error("Unknown options found: (" + optionNames + ")");
|
221 | }
|
222 |
|
223 | var _ref = bundlibOptions || {},
|
224 | inputOption = _ref.input,
|
225 | sourcemapOption = _ref.sourcemap,
|
226 | esModule = _ref.esModule,
|
227 | interop = _ref.interop,
|
228 | extend = _ref.extend,
|
229 | equals = _ref.equals,
|
230 | browserFormat = _ref.format,
|
231 | browserName = _ref.name,
|
232 | amdId = _ref.id,
|
233 | browserGlobals = _ref.globals,
|
234 | min = _ref.min,
|
235 | cacheOption = _ref.cache,
|
236 | mainOptions = _ref.main,
|
237 | moduleOptions = _ref.module,
|
238 | browserOptions = _ref.browser,
|
239 | binaryOptionsOrInput = _ref.bin,
|
240 | typesOptions = _ref.types;
|
241 |
|
242 | var binaryOptions = isString(binaryOptionsOrInput) ? null : binaryOptionsOrInput;
|
243 |
|
244 | if (!isStringOrNull(inputOption) && !(isDictionary(inputOption) && allKeysInList(inputOption, ["api", "bin"]) && keys(inputOption).every(function (key) {
|
245 | return isString(inputOption[key]);
|
246 | }))) {
|
247 | throw invalidOption("input", "string | { api?: string, bin?: string }");
|
248 | }
|
249 |
|
250 | if (!isNull(sourcemapOption) && !isBool(sourcemapOption) && sourcemapOption !== "inline") {
|
251 | throw invalidOption("sourcemap", 'boolean | "inline"');
|
252 | }
|
253 |
|
254 | if (!isModuleOption(esModule)) {
|
255 | throw invalidOption("esModule", 'boolean | "main" | "browser" | "bin" | Array<"main" | "browser" | "bin">');
|
256 | }
|
257 |
|
258 | if (!isModuleOption(interop)) {
|
259 | throw invalidOption("interop", 'boolean | "main" | "browser" | "bin" | Array<"main" | "browser" | "bin">');
|
260 | }
|
261 |
|
262 | if (!isBrowserFormat(browserFormat)) {
|
263 | throw invalidOption("format", '"amd" | "iife" | "amd"');
|
264 | }
|
265 |
|
266 | if (!isStringOrNull(browserName)) {
|
267 | throw invalidOption("name", "string");
|
268 | }
|
269 |
|
270 | if (!isStringOrNull(amdId)) {
|
271 | throw invalidOption("id", "string");
|
272 | }
|
273 |
|
274 | if (!isValidGlobals(browserGlobals)) {
|
275 | throw invalidOption("globals", "Object<string, string> | string[]");
|
276 | }
|
277 |
|
278 | if (!isValidMinOption(min)) {
|
279 | throw invalidOption("min", 'boolean | "main" | "module" | "browser" | "bin" | Array<"main" | "module" | "browser" | "bin">');
|
280 | }
|
281 |
|
282 | if (!isStringOrNull(cacheOption)) {
|
283 | throw invalidOption("cache", "string");
|
284 | }
|
285 |
|
286 | if (!isNull(mainOptions) && mainOptions !== false && !(isDictionary(mainOptions) && allKeysInList(mainOptions, ["sourcemap", "esModule", "interop", "min"]))) {
|
287 | throw invalidOption("main", 'false | { sourcemap?: boolean | "inline", esModule?: boolean, interop?: boolean, min?: boolean }');
|
288 | }
|
289 |
|
290 | if (!isNull(moduleOptions) && moduleOptions !== false && !(isDictionary(moduleOptions) && allKeysInList(moduleOptions, ["sourcemap", "min"]))) {
|
291 | throw invalidOption("module", 'false | { sourcemap?: boolean | "inline", min?: boolean }');
|
292 | }
|
293 |
|
294 | if (!isNull(browserOptions) && browserOptions !== false && !(isDictionary(browserOptions) && allKeysInList(browserOptions, ["sourcemap", "esModule", "interop", "min", "format", "name", "id", "globals", "extend"]) && isBrowserFormat(browserOptions.format) && ["name", "id"].every(function (key) {
|
295 | return isStringOrNull(browserOptions[key]);
|
296 | }) && isValidGlobals(browserOptions.globals))) {
|
297 | throw invalidOption("browser", 'false | { sourcemap?: boolean | "inline", esModule?: boolean, interop?: boolean, min?: boolean, ... }');
|
298 | }
|
299 |
|
300 | if (!isNull(binaryOptionsOrInput) && !isString(binaryOptionsOrInput) && binaryOptionsOrInput !== false && !(isDictionary(binaryOptionsOrInput) && allKeysInList(binaryOptionsOrInput, ["sourcemap", "esModule", "interop", "min"]))) {
|
301 | throw invalidOption("bin", 'false | { sourcemap?: boolean | "inline", esModule?: boolean, interop?: boolean, min?: boolean }');
|
302 | }
|
303 |
|
304 | if (!isNull(typesOptions) && typesOptions !== false && !(isDictionary(typesOptions) && allKeysInList(typesOptions, ["equals"]))) {
|
305 | throw invalidOption("types", "false | { equals?: boolean }");
|
306 | }
|
307 |
|
308 | if (mainOptions !== false && !isStringOrNull(pkgMain)) {
|
309 | throw invalidPkgField("main", "string");
|
310 | }
|
311 |
|
312 | if (moduleOptions !== false && !isStringOrNull(pkgModule)) {
|
313 | throw invalidPkgField("module", "string");
|
314 | }
|
315 |
|
316 | if (!pkgModule && moduleOptions !== false && !isStringOrNull(pkgJsNextMain)) {
|
317 | throw invalidPkgField("jsnext:main", "string");
|
318 | }
|
319 |
|
320 | if (browserOptions !== false && !isStringOrNull(pkgBrowser)) {
|
321 | throw invalidPkgField("browser", "string");
|
322 | }
|
323 |
|
324 | if (binaryOptions !== false && !isStringOrNull(pkgBin)) {
|
325 | throw invalidPkgField("bin", "string");
|
326 | }
|
327 |
|
328 | if (!isDictionaryOrNull(runtimeDependencies)) {
|
329 | throw invalidPkgField("dependencies", "Object");
|
330 | }
|
331 |
|
332 | if (!isDictionaryOrNull(peerDependencies)) {
|
333 | throw invalidPkgField("peerDependencies", "Object");
|
334 | }
|
335 |
|
336 | if (!isDictionaryOrNull(optionalDependencies)) {
|
337 | throw invalidPkgField("optionalDependencies", "Object");
|
338 | }
|
339 |
|
340 | var esModuleFile = pkgModule || pkgJsNextMain;
|
341 | var typesPath = pkgTypes || typings;
|
342 | var apiInput = isStringOrNull(inputOption) ? inputOption : inputOption.api;
|
343 | var binInput = isStringOrNull(inputOption) ? null : inputOption.bin;
|
344 |
|
345 | if (isString(binaryOptionsOrInput) && !binInput) {
|
346 | binInput = binaryOptionsOrInput;
|
347 | }
|
348 |
|
349 | var input = {
|
350 | api: path.resolve(cwd, apiInput || "src/index.ts"),
|
351 | bin: path.resolve(cwd, binInput || "src-bin/index.ts")
|
352 | };
|
353 | var globalSourcemap = normalizeSourcemap(sourcemapOption);
|
354 | var globalESModule = normalizeModuleOption(esModule);
|
355 | var globalInterop = normalizeModuleOption(interop);
|
356 | var globalMin = normalizeMinOption(min);
|
357 | var mainOutput = mainOptions === false || !pkgMain ? null : {
|
358 | path: path.resolve(cwd, pkgMain),
|
359 | sourcemap: normalizeBuildSourcemap(mainOptions, globalSourcemap),
|
360 | esModule: normalizeBuildModule(mainOptions, "esModule", "main", globalESModule),
|
361 | interop: normalizeBuildModule(mainOptions, "interop", "main", globalInterop),
|
362 | min: normalizeBuildMin(mainOptions, "main", globalMin)
|
363 | };
|
364 | var moduleOutput = moduleOptions === false || !esModuleFile ? null : {
|
365 | path: path.resolve(cwd, esModuleFile),
|
366 | sourcemap: normalizeBuildSourcemap(moduleOptions, globalSourcemap),
|
367 | min: normalizeBuildMin(moduleOptions, "module", globalMin)
|
368 | };
|
369 | var browserOutput = browserOptions === false || !pkgBrowser ? null : {
|
370 | path: path.resolve(cwd, pkgBrowser),
|
371 | sourcemap: normalizeBuildSourcemap(browserOptions, globalSourcemap),
|
372 | esModule: normalizeBuildModule(browserOptions, "esModule", "browser", globalESModule),
|
373 | interop: normalizeBuildModule(browserOptions, "interop", "browser", globalInterop),
|
374 | min: normalizeBuildMin(browserOptions, "browser", globalMin),
|
375 | format: browserOptions && !isNull(browserOptions.format) ? browserOptions.format : browserFormat || "umd",
|
376 | name: normalizeBuildName(cwd, browserOptions ? browserOptions.name : null, browserName, pkgName),
|
377 | id: browserOptions && browserOptions.id || amdId || null,
|
378 | globals: normalizeBuildGlobals(browserOptions, normalizeGlobals(browserGlobals)),
|
379 | extend: normalizeBuildFlag(browserOptions, "extend", !!extend)
|
380 | };
|
381 | var binaryOutput = binaryOptions === false || !pkgBin ? null : {
|
382 | path: path.resolve(cwd, pkgBin),
|
383 | sourcemap: normalizeBuildSourcemap(binaryOptions, globalSourcemap),
|
384 | esModule: normalizeBuildModule(binaryOptions, "esModule", "bin", globalESModule),
|
385 | interop: normalizeBuildModule(binaryOptions, "interop", "bin", globalInterop),
|
386 | min: normalizeBuildMin(binaryOptions, "bin", globalMin)
|
387 | };
|
388 | var typesOutput = typesOptions === false || !typesPath ? null : {
|
389 | path: path.resolve(cwd, typesPath),
|
390 | equals: normalizeBuildFlag(typesOptions, "equals", !!equals)
|
391 | };
|
392 | var output = {
|
393 | main: mainOutput,
|
394 | module: moduleOutput,
|
395 | browser: browserOutput,
|
396 | bin: binaryOutput,
|
397 | types: typesOutput
|
398 | };
|
399 | var dependencies = {
|
400 | runtime: keysOrNull(runtimeDependencies),
|
401 | peer: keysOrNull(peerDependencies),
|
402 | optional: keysOrNull(optionalDependencies)
|
403 | };
|
404 | var cache = path.resolve(cwd, cacheOption || "node_modules/.cache/bundlib");
|
405 | return {
|
406 | cwd: cwd,
|
407 | pkg: pkg,
|
408 | input: input,
|
409 | output: output,
|
410 | dependencies: dependencies,
|
411 | cache: cache
|
412 | };
|
413 | }, inputPkg);
|
414 | });
|
415 |
|
416 | function _async(f) {
|
417 | return function () {
|
418 | for (var args = [], i = 0; i < arguments.length; i++) {
|
419 | args[i] = arguments[i];
|
420 | }
|
421 |
|
422 | try {
|
423 | return Promise.resolve(f.apply(this, args));
|
424 | } catch (e) {
|
425 | return Promise.reject(e);
|
426 | }
|
427 | };
|
428 | }
|
429 |
|
430 | function mapIdExternal(cwd, outputDir, map) {
|
431 | var normalizedMap = keys(map).reduce(function (result, source) {
|
432 | return setProp(slash(path.resolve(cwd, source)), path.resolve(cwd, map[source]), result);
|
433 | }, {});
|
434 | return {
|
435 | name: "api",
|
436 | resolveId: function resolveId(moduleId, from) {
|
437 | var resolved = !from ? moduleId : path.join(path.dirname(from), moduleId);
|
438 | var target = normalizedMap[slash(resolved)] || normalizedMap[slash(resolved + ".ts")] || normalizedMap[slash(path.join(resolved, "index.ts"))];
|
439 |
|
440 | if (!target) {
|
441 | return null;
|
442 | }
|
443 |
|
444 | var relativeTarget = path.relative(outputDir, target);
|
445 | return {
|
446 | id: !relativeTarget ? "." : relativeTarget[0] === "." ? relativeTarget : path.join(".", relativeTarget),
|
447 | external: true,
|
448 | moduleSideEffects: false
|
449 | };
|
450 | }
|
451 | };
|
452 | }
|
453 |
|
454 | function arrayToExternal(modules) {
|
455 | var cache = {};
|
456 | return function (source, _, isResolved) {
|
457 | if (isResolved || source[0] === ".") {
|
458 | return;
|
459 | }
|
460 |
|
461 | return cache[source] || modules.some(function (moduleName) {
|
462 | if (source === moduleName) {
|
463 | return cache[source] = true;
|
464 | }
|
465 |
|
466 | var len = moduleName.length;
|
467 |
|
468 | if (source.substr(0, len) === moduleName && source[len].match(/^[/\\]$/)) {
|
469 | return cache[source] = true;
|
470 | }
|
471 |
|
472 | return false;
|
473 | });
|
474 | };
|
475 | }
|
476 |
|
477 | function createOutput(format, file, sourcemap, esModule, interop, extra) {
|
478 | var options = {
|
479 | file: file,
|
480 | format: format,
|
481 | sourcemap: sourcemap,
|
482 | esModule: esModule,
|
483 | interop: interop
|
484 | };
|
485 | return extra ? Object.assign(options, extra) : options;
|
486 | }
|
487 |
|
488 | function createConfig(input, output, external, plugins, chokidar) {
|
489 | return {
|
490 | input: input,
|
491 | output: output,
|
492 | external: !external ? function () {
|
493 | return false;
|
494 | } : arrayToExternal(external),
|
495 | plugins: plugins.filter(Boolean),
|
496 | watch: {
|
497 | chokidar: chokidar,
|
498 | exclude: ["node_modules/**"]
|
499 | }
|
500 | };
|
501 | }
|
502 | function createModuleConfig(input, format, file, sourcemap, esModule, interop, external, plugins, chokidar) {
|
503 | var output = createOutput(format, file, sourcemap, esModule, interop);
|
504 | return createConfig(input, output, external, plugins, chokidar);
|
505 | }
|
506 | function createBrowserConfig(input, format, file, sourcemap, esModule, interop, plugins, chokidar, name, extend, globals, id) {
|
507 | var extra = {
|
508 | name: name,
|
509 | extend: extend,
|
510 | globals: globals || {}
|
511 | };
|
512 |
|
513 | if (id && (format === "umd" || format === "amd")) {
|
514 | extra.amd = {
|
515 | id: id
|
516 | };
|
517 | }
|
518 |
|
519 | var output = createOutput(format, file, sourcemap, esModule, interop, extra);
|
520 | return createConfig(input, output, keysOrNull(globals), plugins, chokidar);
|
521 | }
|
522 |
|
523 | function extensionMatch(filename, extensions) {
|
524 | return extensions.indexOf(path.extname(filename).toLowerCase()) >= 0;
|
525 | }
|
526 |
|
527 | function renamePre(filename, pre) {
|
528 | var _parse = path.parse(filename),
|
529 | dir = _parse.dir,
|
530 | name = _parse.name,
|
531 | ext = _parse.ext;
|
532 |
|
533 | return path.join(dir, name + "." + pre + ext);
|
534 | }
|
535 | function renameMin(filename) {
|
536 | return renamePre(filename, "min");
|
537 | }
|
538 |
|
539 | function _await$1(value, then, direct) {
|
540 | if (direct) {
|
541 | return then ? then(value) : value;
|
542 | }
|
543 |
|
544 | if (!value || !value.then) {
|
545 | value = Promise.resolve(value);
|
546 | }
|
547 |
|
548 | return then ? value.then(then) : value;
|
549 | }
|
550 |
|
551 | var pkgToConfigs = _async$1(function (_ref, _ref2) {
|
552 | var cwd = _ref.cwd,
|
553 | pkg = _ref.pkg,
|
554 | input = _ref.input,
|
555 | dependencies = _ref.dependencies,
|
556 | cache = _ref.cache,
|
557 | output = _ref.output;
|
558 | var dev = _ref2.dev,
|
559 | watch = _ref2.watch;
|
560 | var apiInput = input.api,
|
561 | binInput = input.bin;
|
562 | var cjsOutput = output.main,
|
563 | esOutput = output.module,
|
564 | browserOutput = output.browser,
|
565 | binaryOutput = output.bin,
|
566 | typesOutput = output.types;
|
567 | var runtimeDeps = dependencies.runtime,
|
568 | peerDeps = dependencies.peer,
|
569 | optionalDeps = dependencies.optional;
|
570 |
|
571 | if (browserOutput && (browserOutput.format === "iife" || browserOutput.format === "umd") && !browserOutput.name) {
|
572 | throw error("option 'name' is required for IIFE and UMD builds");
|
573 | }
|
574 |
|
575 | var typescriptOnlyExtensions = [".ts", ".tsx"];
|
576 | var javascriptExtensions = [".js", ".jsx", ".mjs", ".node"];
|
577 | var isTypescriptAPIInput = extensionMatch(apiInput, typescriptOnlyExtensions);
|
578 | var isTypescriptBinaryInput = extensionMatch(binInput, typescriptOnlyExtensions);
|
579 |
|
580 | if (typesOutput && !isTypescriptAPIInput) {
|
581 | throw error("can't generate types from javascript source");
|
582 | }
|
583 |
|
584 | var typescriptExtensions = [].concat(typescriptOnlyExtensions, javascriptExtensions);
|
585 | var apiExtensions = isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions;
|
586 | var binaryExtensions = isTypescriptBinaryInput ? typescriptExtensions : javascriptExtensions;
|
587 | var production = !dev;
|
588 | var apiFolder = path.dirname(apiInput);
|
589 | var apiFolderContent = apiExtensions.map(function (ext) {
|
590 | return path.resolve(apiFolder, "**/*" + ext);
|
591 | });
|
592 | var cwdFolderContent = binaryExtensions.map(function (ext) {
|
593 | return path.resolve(cwd, "**/*" + ext);
|
594 | });
|
595 | var typesFilename = renamePre(path.basename(apiInput), "d");
|
596 | var typesOutputDir = typesOutput ? typesOutput.path : null;
|
597 |
|
598 | if (typesOutputDir && extensionMatch(typesOutputDir, [".ts"])) {
|
599 | typesOutputDir = path.dirname(typesOutputDir);
|
600 | }
|
601 |
|
602 | var external = lodash.union(runtimeDeps, peerDeps, optionalDeps, builtinModules);
|
603 | var installedDeps = lodash.union(runtimeDeps, keysOrNull(pkg.devDependencies));
|
604 | var useUserTypescript = (isTypescriptAPIInput || isTypescriptBinaryInput) && installedDeps.indexOf("typescript") >= 0;
|
605 | var useChokidar = !!watch && installedDeps.indexOf("chokidar") >= 0;
|
606 | return _await$1(useUserTypescript ? null : new Promise(function (resolve) { resolve(_interopNamespace(require('typescript'))); }), function (typescript) {
|
607 | var exclude = /node_modules/;
|
608 |
|
609 | function createPlugins(inputIsTypescript, extensions, outputFile, sourcemap, mini, browser, bin) {
|
610 | var sourcemapBool = !!sourcemap;
|
611 | var declarationDir = inputIsTypescript && !configs.length && !bin && typesOutputDir;
|
612 | var tsInclude = bin ? cwdFolderContent : apiFolderContent;
|
613 | var cacheRoot = path.join(cache, "rpt2");
|
614 |
|
615 | var _shebang;
|
616 |
|
617 | return [bin && stripShebang({
|
618 | capture: function capture(shebangFromFile) {
|
619 | return _shebang = shebangFromFile;
|
620 | },
|
621 | sourcemap: sourcemapBool
|
622 | }), bin && cjsOutput && outputFile && mapIdExternal(cwd, path.dirname(outputFile), setProp(apiInput, cwd, {})), nodeResolve({
|
623 | preferBuiltins: !browser,
|
624 | extensions: extensions
|
625 | }), browser && commonjs({
|
626 | sourceMap: sourcemapBool
|
627 | }), inputIsTypescript && typescript2({
|
628 | typescript: typescript = typescript || require(require.resolve("typescript", {
|
629 | paths: [cwd]
|
630 | })),
|
631 | include: tsInclude,
|
632 | cacheRoot: cacheRoot,
|
633 | useTsconfigDeclarationDir: true,
|
634 | tsconfigDefaults: {
|
635 | include: tsInclude,
|
636 | exclude: [],
|
637 | compilerOptions: {
|
638 | esModuleInterop: true,
|
639 | resolveJsonModule: true,
|
640 | allowSyntheticDefaultImports: true
|
641 | }
|
642 | },
|
643 | tsconfigOverride: {
|
644 | compilerOptions: {
|
645 | target: "esnext",
|
646 | module: "esnext",
|
647 | moduleResolution: "node",
|
648 | sourceMap: sourcemapBool,
|
649 | declaration: !!declarationDir,
|
650 | declarationDir: declarationDir || "",
|
651 | allowJs: !typesOutputDir,
|
652 | emitDeclarationOnly: false
|
653 | }
|
654 | }
|
655 | }), json(), declarationDir && typesOutput && typesOutput.equals && exportEquals({
|
656 | file: path.resolve(cwd, path.join(declarationDir, typesFilename))
|
657 | }), babel({
|
658 | extensions: extensions,
|
659 | exclude: exclude,
|
660 | babelrc: true,
|
661 | presets: [[require.resolve("@babel/preset-env"), {
|
662 | loose: true
|
663 | }], require.resolve("@babel/preset-react")],
|
664 | plugins: [require.resolve("@babel/plugin-syntax-dynamic-import"), require.resolve("babel-plugin-transform-async-to-promises")]
|
665 | }), bin && outputFile && addShebang({
|
666 | include: outputFile,
|
667 | shebang: function shebang() {
|
668 | return _shebang || "#!/usr/bin/env node";
|
669 | }
|
670 | }), mini && rollupPluginTerser.terser({
|
671 | sourcemap: sourcemapBool,
|
672 | toplevel: true,
|
673 | module: true
|
674 | })];
|
675 | }
|
676 |
|
677 | var configs = [];
|
678 |
|
679 | if (esOutput) {
|
680 | var path$1 = esOutput.path,
|
681 | sourcemap = esOutput.sourcemap,
|
682 | min = esOutput.min;
|
683 | configs.push(createModuleConfig(apiInput, "es", path$1, sourcemap, true, false, external, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, path$1, sourcemap, production && !min, false, false), useChokidar));
|
684 |
|
685 | if (min) {
|
686 | configs.push(createModuleConfig(apiInput, "es", renameMin(path$1), sourcemap, true, false, external, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, path$1, sourcemap, true, false, false), useChokidar));
|
687 | }
|
688 | }
|
689 |
|
690 | if (cjsOutput) {
|
691 | var _path = cjsOutput.path,
|
692 | _sourcemap = cjsOutput.sourcemap,
|
693 | esModule = cjsOutput.esModule,
|
694 | interop = cjsOutput.interop,
|
695 | _min = cjsOutput.min;
|
696 | configs.push(createModuleConfig(apiInput, "cjs", _path, _sourcemap, esModule, interop, external, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, _path, _sourcemap, production && !_min, false, false), useChokidar));
|
697 |
|
698 | if (_min) {
|
699 | configs.push(createModuleConfig(apiInput, "cjs", renameMin(_path), _sourcemap, esModule, interop, external, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, _path, _sourcemap, true, false, false), useChokidar));
|
700 | }
|
701 | }
|
702 |
|
703 | if (browserOutput) {
|
704 | var _path2 = browserOutput.path,
|
705 | _sourcemap2 = browserOutput.sourcemap,
|
706 | _esModule = browserOutput.esModule,
|
707 | _interop = browserOutput.interop,
|
708 | format = browserOutput.format,
|
709 | name = browserOutput.name,
|
710 | extend = browserOutput.extend,
|
711 | id = browserOutput.id,
|
712 | globals = browserOutput.globals,
|
713 | _min2 = browserOutput.min;
|
714 | configs.push(createBrowserConfig(apiInput, format, _path2, _sourcemap2, _esModule, _interop, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, null, _sourcemap2, production && !_min2, true, false), useChokidar, name, extend, globals, id));
|
715 |
|
716 | if (_min2) {
|
717 | configs.push(createBrowserConfig(apiInput, format, renameMin(_path2), _sourcemap2, _esModule, _interop, createPlugins(isTypescriptAPIInput, isTypescriptAPIInput ? typescriptExtensions : javascriptExtensions, null, _sourcemap2, true, true, false), useChokidar, name, extend, globals, id));
|
718 | }
|
719 | }
|
720 |
|
721 | if (binaryOutput) {
|
722 | var _path3 = binaryOutput.path,
|
723 | _sourcemap3 = binaryOutput.sourcemap,
|
724 | _esModule2 = binaryOutput.esModule,
|
725 | _interop2 = binaryOutput.interop,
|
726 | _min3 = binaryOutput.min;
|
727 | configs.push(createModuleConfig(binInput, "cjs", _path3, _sourcemap3, _esModule2, _interop2, external, createPlugins(isTypescriptBinaryInput, isTypescriptBinaryInput ? typescriptExtensions : javascriptExtensions, _path3, _sourcemap3, production && !_min3, false, true), useChokidar));
|
728 |
|
729 | if (_min3) {
|
730 | configs.push(createModuleConfig(binInput, "cjs", renameMin(_path3), _sourcemap3, _esModule2, _interop2, external, createPlugins(isTypescriptBinaryInput, isTypescriptBinaryInput ? typescriptExtensions : javascriptExtensions, _path3, _sourcemap3, true, false, true), useChokidar));
|
731 | }
|
732 | }
|
733 |
|
734 | return configs;
|
735 | }, useUserTypescript);
|
736 | });
|
737 |
|
738 | function _async$1(f) {
|
739 | return function () {
|
740 | for (var args = [], i = 0; i < arguments.length; i++) {
|
741 | args[i] = arguments[i];
|
742 | }
|
743 |
|
744 | try {
|
745 | return Promise.resolve(f.apply(this, args));
|
746 | } catch (e) {
|
747 | return Promise.reject(e);
|
748 | }
|
749 | };
|
750 | }
|
751 |
|
752 | function _await$2(value, then, direct) {
|
753 | if (direct) {
|
754 | return then ? then(value) : value;
|
755 | }
|
756 |
|
757 | if (!value || !value.then) {
|
758 | value = Promise.resolve(value);
|
759 | }
|
760 |
|
761 | return then ? value.then(then) : value;
|
762 | }
|
763 |
|
764 | var configsFromPkg = _async$2(function (cwd, options, pkgJson) {
|
765 | return _await$2(analizePkg(cwd, pkgJson), function (_analizePkg) {
|
766 | return _await$2(pkgToConfigs(_analizePkg, options || {}));
|
767 | });
|
768 | });
|
769 |
|
770 | function _async$2(f) {
|
771 | return function () {
|
772 | for (var args = [], i = 0; i < arguments.length; i++) {
|
773 | args[i] = arguments[i];
|
774 | }
|
775 |
|
776 | try {
|
777 | return Promise.resolve(f.apply(this, args));
|
778 | } catch (e) {
|
779 | return Promise.reject(e);
|
780 | }
|
781 | };
|
782 | }
|
783 |
|
784 | exports.analizePkg = analizePkg;
|
785 | exports.configsFromPkg = configsFromPkg;
|
786 |
|