You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

59 lines
1.4 KiB

"use strict";
exports.__esModule = true;
exports.default = createMetaResolver;
var _utils = require("./utils");
const PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
function createMetaResolver(polyfills) {
const {
static: staticP,
instance: instanceP,
global: globalP
} = polyfills;
return meta => {
if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) {
return {
kind: "global",
desc: globalP[meta.name],
name: meta.name
};
}
if (meta.kind === "property" || meta.kind === "in") {
const {
placement,
object,
key
} = meta;
if (object && placement === "static") {
if (globalP && PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) {
return {
kind: "global",
desc: globalP[key],
name: key
};
}
if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) {
return {
kind: "static",
desc: staticP[object][key],
name: `${object}$${key}`
};
}
}
if (instanceP && (0, _utils.has)(instanceP, key)) {
return {
kind: "instance",
desc: instanceP[key],
name: `${key}`
};
}
}
};
}