UNPKG

@code-to-json/core

Version:

[![Build Status](https://travis-ci.org/code-to-json/code-to-json.svg?branch=master)](https://travis-ci.org/code-to-json/code-to-json) [![Build Status](https://dev.azure.com/code-to-json/code-to-json/_apis/build/status/code-to-json.code-to-json)](https://d

75 lines 4.34 kB
"use strict"; 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