source: trip-planner-front/node_modules/@babel/core/lib/config/validation/options.js@ 188ee53

Last change on this file since 188ee53 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 7.5 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.validate = validate;
7exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs;
8exports.assumptionsNames = void 0;
9
10var _plugin = require("../plugin");
11
12var _removed = require("./removed");
13
14var _optionAssertions = require("./option-assertions");
15
16const ROOT_VALIDATORS = {
17 cwd: _optionAssertions.assertString,
18 root: _optionAssertions.assertString,
19 rootMode: _optionAssertions.assertRootMode,
20 configFile: _optionAssertions.assertConfigFileSearch,
21 caller: _optionAssertions.assertCallerMetadata,
22 filename: _optionAssertions.assertString,
23 filenameRelative: _optionAssertions.assertString,
24 code: _optionAssertions.assertBoolean,
25 ast: _optionAssertions.assertBoolean,
26 cloneInputAst: _optionAssertions.assertBoolean,
27 envName: _optionAssertions.assertString
28};
29const BABELRC_VALIDATORS = {
30 babelrc: _optionAssertions.assertBoolean,
31 babelrcRoots: _optionAssertions.assertBabelrcSearch
32};
33const NONPRESET_VALIDATORS = {
34 extends: _optionAssertions.assertString,
35 ignore: _optionAssertions.assertIgnoreList,
36 only: _optionAssertions.assertIgnoreList,
37 targets: _optionAssertions.assertTargets,
38 browserslistConfigFile: _optionAssertions.assertConfigFileSearch,
39 browserslistEnv: _optionAssertions.assertString
40};
41const COMMON_VALIDATORS = {
42 inputSourceMap: _optionAssertions.assertInputSourceMap,
43 presets: _optionAssertions.assertPluginList,
44 plugins: _optionAssertions.assertPluginList,
45 passPerPreset: _optionAssertions.assertBoolean,
46 assumptions: _optionAssertions.assertAssumptions,
47 env: assertEnvSet,
48 overrides: assertOverridesList,
49 test: _optionAssertions.assertConfigApplicableTest,
50 include: _optionAssertions.assertConfigApplicableTest,
51 exclude: _optionAssertions.assertConfigApplicableTest,
52 retainLines: _optionAssertions.assertBoolean,
53 comments: _optionAssertions.assertBoolean,
54 shouldPrintComment: _optionAssertions.assertFunction,
55 compact: _optionAssertions.assertCompact,
56 minified: _optionAssertions.assertBoolean,
57 auxiliaryCommentBefore: _optionAssertions.assertString,
58 auxiliaryCommentAfter: _optionAssertions.assertString,
59 sourceType: _optionAssertions.assertSourceType,
60 wrapPluginVisitorMethod: _optionAssertions.assertFunction,
61 highlightCode: _optionAssertions.assertBoolean,
62 sourceMaps: _optionAssertions.assertSourceMaps,
63 sourceMap: _optionAssertions.assertSourceMaps,
64 sourceFileName: _optionAssertions.assertString,
65 sourceRoot: _optionAssertions.assertString,
66 parserOpts: _optionAssertions.assertObject,
67 generatorOpts: _optionAssertions.assertObject
68};
69{
70 Object.assign(COMMON_VALIDATORS, {
71 getModuleId: _optionAssertions.assertFunction,
72 moduleRoot: _optionAssertions.assertString,
73 moduleIds: _optionAssertions.assertBoolean,
74 moduleId: _optionAssertions.assertString
75 });
76}
77const assumptionsNames = new Set(["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"]);
78exports.assumptionsNames = assumptionsNames;
79
80function getSource(loc) {
81 return loc.type === "root" ? loc.source : getSource(loc.parent);
82}
83
84function validate(type, opts) {
85 return validateNested({
86 type: "root",
87 source: type
88 }, opts);
89}
90
91function validateNested(loc, opts) {
92 const type = getSource(loc);
93 assertNoDuplicateSourcemap(opts);
94 Object.keys(opts).forEach(key => {
95 const optLoc = {
96 type: "option",
97 name: key,
98 parent: loc
99 };
100
101 if (type === "preset" && NONPRESET_VALIDATORS[key]) {
102 throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`);
103 }
104
105 if (type !== "arguments" && ROOT_VALIDATORS[key]) {
106 throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`);
107 }
108
109 if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) {
110 if (type === "babelrcfile" || type === "extendsfile") {
111 throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`);
112 }
113
114 throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`);
115 }
116
117 const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError;
118 validator(optLoc, opts[key]);
119 });
120 return opts;
121}
122
123function throwUnknownError(loc) {
124 const key = loc.name;
125
126 if (_removed.default[key]) {
127 const {
128 message,
129 version = 5
130 } = _removed.default[key];
131 throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`);
132 } else {
133 const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`);
134 unknownOptErr.code = "BABEL_UNKNOWN_OPTION";
135 throw unknownOptErr;
136 }
137}
138
139function has(obj, key) {
140 return Object.prototype.hasOwnProperty.call(obj, key);
141}
142
143function assertNoDuplicateSourcemap(opts) {
144 if (has(opts, "sourceMap") && has(opts, "sourceMaps")) {
145 throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both");
146 }
147}
148
149function assertEnvSet(loc, value) {
150 if (loc.parent.type === "env") {
151 throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`);
152 }
153
154 const parent = loc.parent;
155 const obj = (0, _optionAssertions.assertObject)(loc, value);
156
157 if (obj) {
158 for (const envName of Object.keys(obj)) {
159 const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]);
160 if (!env) continue;
161 const envLoc = {
162 type: "env",
163 name: envName,
164 parent
165 };
166 validateNested(envLoc, env);
167 }
168 }
169
170 return obj;
171}
172
173function assertOverridesList(loc, value) {
174 if (loc.parent.type === "env") {
175 throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`);
176 }
177
178 if (loc.parent.type === "overrides") {
179 throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`);
180 }
181
182 const parent = loc.parent;
183 const arr = (0, _optionAssertions.assertArray)(loc, value);
184
185 if (arr) {
186 for (const [index, item] of arr.entries()) {
187 const objLoc = (0, _optionAssertions.access)(loc, index);
188 const env = (0, _optionAssertions.assertObject)(objLoc, item);
189 if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`);
190 const overridesLoc = {
191 type: "overrides",
192 index,
193 parent
194 };
195 validateNested(overridesLoc, env);
196 }
197 }
198
199 return arr;
200}
201
202function checkNoUnwrappedItemOptionPairs(items, index, type, e) {
203 if (index === 0) return;
204 const lastItem = items[index - 1];
205 const thisItem = items[index];
206
207 if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
208 e.message += `\n- Maybe you meant to use\n` + `"${type}s": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`;
209 }
210}
Note: See TracBrowser for help on using the repository browser.