@code-to-json/core
Version:
[](https://travis-ci.org/code-to-json/code-to-json) [](https://d
75 lines • 4.34 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable no-bitwise */
const typescript_1 = require("typescript");
/**
* Get a flag map object of a particular type
* @param type type of flag map
* @see flagsToString
*/
function getFlagMap(type) {
switch (type) {
case 'type':
return typescript_1.TypeFlags;
case 'object':
return typescript_1.ObjectFlags;
case 'node':
return typescript_1.NodeFlags;
case 'nodeBuilder':
return typescript_1.NodeBuilderFlags;
case 'symbol':
return typescript_1.SymbolFlags;
case 'symbolFormat':
return typescript_1.SymbolFormatFlags;
default:
throw new Error(`Unsupported flag type: ${type}`);
}
}
/**
* Parse a flag bitmask into strings
* @param flags
* @param flagMap
* @author Kris Selden <https://github.com/krisselden>
*/
function flagsToString(flags, type) {
let flg = flags;
const flagMap = getFlagMap(type);
const flagNames = [];
const keys = Object.keys(flagMap);
for (let i = 0; i < keys.length && flg !== 0; i++) {
const flagName = keys[i];
const flag = flagMap[flagName];
if (flag === 0) {
// eslint-disable-next-line no-continue
continue;
}
// tslint:disable-next-line no-bitwise
if ((flag & flg) === flag) {
// tslint:disable-next-line no-bitwise
flg &= ~flag;
flagNames.push(flagName);
}
}
if (flagNames.length === 0) {
return undefined;
}
if (flagNames.length === 1) {
return flagNames[0];
}
return flagNames;
}
exports.flagsToString = flagsToString;
function isObjectType(type) {
// tslint:disable-next-line:no-bitwise
return !!(type.flags & typescript_1.TypeFlags.Object);
}
/**
* Get the object flags from a type
* @param type bitmask of object flags
*/
function getObjectFlags(type) {
// tslint:disable-next-line:no-bitwise
return isObjectType(type) ? type.objectFlags : undefined;
}
exports.getObjectFlags = getObjectFlags;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBK0I7QUFDL0IsMkNBU29CO0FBV3BCOzs7O0dBSUc7QUFDSCxTQUFTLFVBQVUsQ0FBMkIsSUFBTztJQUNuRCxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNULE9BQU8sc0JBQVMsQ0FBQztRQUNuQixLQUFLLFFBQVE7WUFDWCxPQUFPLHdCQUFXLENBQUM7UUFDckIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxzQkFBUyxDQUFDO1FBQ25CLEtBQUssYUFBYTtZQUNoQixPQUFPLDZCQUFnQixDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE9BQU8sd0JBQVcsQ0FBQztRQUNyQixLQUFLLGNBQWM7WUFDakIsT0FBTyw4QkFBaUIsQ0FBQztRQUMzQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLElBQUksRUFBRSxDQUFDLENBQUM7S0FDckQ7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixhQUFhLENBQzNCLEtBQWtCLEVBQ2xCLElBQU87SUFFUCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDaEIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFJLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLEVBQWMsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDZCx1Q0FBdUM7WUFDdkMsU0FBUztTQUNWO1FBRUQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3pCLHNDQUFzQztZQUN0QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFCO0tBQ0Y7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzFCLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMxQixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUE5QkQsc0NBOEJDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBVTtJQUM5QixzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxJQUFVO0lBQ3ZDLHNDQUFzQztJQUN0QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNELENBQUM7QUFIRCx3Q0FHQyJ9
;