"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const supportsColor = require('../../third_party/github.com/chalk/supports-color');
const streamMap = new WeakMap();
function _getRows() {
    return typeof process == 'object' && process.stdout.rows || null;
}
function _getColumns() {
    return typeof process == 'object' && process.stdout.columns || null;
}
function _createCapabilities(stream, isTerminalStream, level = supportsColor.stdout.level) {
    return {
        readable: stream.readable,
        writable: stream.writable,
        text: true,
        colors: level > 0,
        color256: level > 1,
        color16m: level > 2,
        rows: isTerminalStream ? _getRows() : null,
        columns: isTerminalStream ? _getColumns() : null,
    };
}
function getCapabilities(stream, isTerminalStream = !!stream.isTTY) {
    let maybeCaps = streamMap.get(stream);
    if (!maybeCaps) {
        maybeCaps = _createCapabilities(stream, isTerminalStream);
        streamMap.set(stream, maybeCaps);
    }
    return maybeCaps;
}
exports.getCapabilities = getCapabilities;