UNPKG

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