UNPKG

3.6 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.createEnvironment = createEnvironment;
7exports.mergeEnvironments = mergeEnvironments;
8exports.getEnvironmentHash = getEnvironmentHash;
9
10var _utils = require("@parcel/utils");
11
12function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
13
14function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
16function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
18const DEFAULT_ENGINES = {
19 browsers: ['> 0.25%'],
20 node: '>= 8.0.0'
21};
22
23function createEnvironment({
24 context,
25 engines,
26 includeNodeModules,
27 outputFormat,
28 isLibrary = false
29} = {}) {
30 if (context == null) {
31 var _engines, _engines2;
32
33 if ((_engines = engines) === null || _engines === void 0 ? void 0 : _engines.node) {
34 context = 'node';
35 } else if ((_engines2 = engines) === null || _engines2 === void 0 ? void 0 : _engines2.browsers) {
36 context = 'browser';
37 } else {
38 context = 'browser';
39 }
40 }
41
42 if (engines == null) {
43 switch (context) {
44 case 'node':
45 case 'electron-main':
46 engines = {
47 node: DEFAULT_ENGINES.node
48 };
49 break;
50
51 case 'browser':
52 case 'web-worker':
53 case 'service-worker':
54 case 'electron-renderer':
55 engines = {
56 browsers: DEFAULT_ENGINES.browsers
57 };
58 break;
59
60 default:
61 engines = {};
62 }
63 }
64
65 if (includeNodeModules == null) {
66 switch (context) {
67 case 'node':
68 case 'electron-main':
69 case 'electron-renderer':
70 includeNodeModules = false;
71 break;
72
73 case 'browser':
74 case 'web-worker':
75 case 'service-worker':
76 default:
77 includeNodeModules = true;
78 break;
79 }
80 }
81
82 if (outputFormat == null) {
83 switch (context) {
84 case 'node':
85 case 'electron-main':
86 case 'electron-renderer':
87 outputFormat = 'commonjs';
88 break;
89
90 default:
91 outputFormat = 'global';
92 break;
93 }
94 }
95
96 return {
97 context,
98 engines,
99 includeNodeModules,
100 outputFormat,
101 isLibrary
102 };
103}
104
105function mergeEnvironments(a, b) {
106 // If merging the same object, avoid copying.
107 if (a === b) {
108 return a;
109 }
110
111 return createEnvironment(_objectSpread({}, a, {}, b));
112}
113
114function getEnvironmentHash(env) {
115 // context is excluded from hash so that assets can be shared between e.g. workers and browser.
116 // Different engines should be sufficient to distinguish multi-target builds.
117 return (0, _utils.md5FromObject)({
118 engines: env.engines,
119 includeNodeModules: env.includeNodeModules,
120 outputFormat: env.outputFormat,
121 isLibrary: env.isLibrary
122 });
123}
\No newline at end of file