UNPKG

2.52 kBJavaScriptView Raw
1import semver from "semver";
2import { version as coreVersion } from "../..//index.js";
3import { assertSimpleType } from "../caching.js";
4export function makeConfigAPI(cache) {
5 const env = value => cache.using(data => {
6 if (typeof value === "undefined") return data.envName;
7 if (typeof value === "function") {
8 return assertSimpleType(value(data.envName));
9 }
10 return (Array.isArray(value) ? value : [value]).some(entry => {
11 if (typeof entry !== "string") {
12 throw new Error("Unexpected non-string value");
13 }
14 return entry === data.envName;
15 });
16 });
17 const caller = cb => cache.using(data => assertSimpleType(cb(data.caller)));
18 return {
19 version: coreVersion,
20 cache: cache.simple(),
21 env,
22 async: () => false,
23 caller,
24 assertVersion
25 };
26}
27export function makePresetAPI(cache, externalDependencies) {
28 const targets = () => JSON.parse(cache.using(data => JSON.stringify(data.targets)));
29 const addExternalDependency = ref => {
30 externalDependencies.push(ref);
31 };
32 return Object.assign({}, makeConfigAPI(cache), {
33 targets,
34 addExternalDependency
35 });
36}
37export function makePluginAPI(cache, externalDependencies) {
38 const assumption = name => cache.using(data => data.assumptions[name]);
39 return Object.assign({}, makePresetAPI(cache, externalDependencies), {
40 assumption
41 });
42}
43function assertVersion(range) {
44 if (typeof range === "number") {
45 if (!Number.isInteger(range)) {
46 throw new Error("Expected string or integer value.");
47 }
48 range = `^${range}.0.0-0`;
49 }
50 if (typeof range !== "string") {
51 throw new Error("Expected string or integer value.");
52 }
53 {
54 range += ` || ^8.0.0-0`;
55 }
56 if (semver.satisfies(coreVersion, range)) return;
57 const limit = Error.stackTraceLimit;
58 if (typeof limit === "number" && limit < 25) {
59 Error.stackTraceLimit = 25;
60 }
61 const err = new Error(`Requires Babel "${range}", but was loaded with "${coreVersion}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`);
62 if (typeof limit === "number") {
63 Error.stackTraceLimit = limit;
64 }
65 throw Object.assign(err, {
66 code: "BABEL_VERSION_UNSUPPORTED",
67 version: coreVersion,
68 range
69 });
70}
71
72//# sourceMappingURL=config-api.js.map