"use strict";
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOneLinerWidth = exports.willFitOnLine = void 0;
const recreateQueryOnelinerFromSyntaxTree_1 = __importDefault(require("./recreateQueryOnelinerFromSyntaxTree"));
/**
 * Checks if a syntax tree or a set of syntax trees can fit on a single line
 * within the maxLineLength constraint.
 */
const willFitOnLine = (syntaxTree, config, horizontalPosition = 0) => {
    const recreatedQuery = (0, recreateQueryOnelinerFromSyntaxTree_1.default)({ globalIndentation: 0 }, horizontalPosition)(syntaxTree);
    return config.globalIndentation + recreatedQuery.length <= config.maxLineLength;
};
exports.willFitOnLine = willFitOnLine;
/**
 * Calculates the width of a syntax tree when formatted as a one-liner.
 */
const getOneLinerWidth = (syntaxTree, horizontalPosition = 0) => {
    const recreatedQuery = (0, recreateQueryOnelinerFromSyntaxTree_1.default)({ globalIndentation: 0 }, horizontalPosition)(syntaxTree);
    return recreatedQuery.trim().length;
};
exports.getOneLinerWidth = getOneLinerWidth;
