"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getResourceRuntime = exports.formatTimestamp = exports.getRandomString = exports.convertOfficialExtensionsToList = exports.convertExtensionOptionToLabeledList = exports.onceWithJoin = void 0;
const prompt_1 = require("../prompt");
const types_1 = require("./types");
async function onceWithJoin(question) {
    const response = await (0, prompt_1.promptOnce)(question);
    if (Array.isArray(response)) {
        return response.join(",");
    }
    return response;
}
exports.onceWithJoin = onceWithJoin;
function convertExtensionOptionToLabeledList(options) {
    return options.map((option) => {
        return {
            checked: false,
            name: option.label,
            value: option.value,
        };
    });
}
exports.convertExtensionOptionToLabeledList = convertExtensionOptionToLabeledList;
function convertOfficialExtensionsToList(officialExts) {
    const l = Object.entries(officialExts).map(([key, entry]) => {
        return {
            checked: false,
            value: `${entry.publisher}/${key}`,
        };
    });
    l.sort((a, b) => a.value.localeCompare(b.value));
    return l;
}
exports.convertOfficialExtensionsToList = convertOfficialExtensionsToList;
function getRandomString(length) {
    const SUFFIX_CHAR_SET = "abcdefghijklmnopqrstuvwxyz0123456789";
    let result = "";
    for (let i = 0; i < length; i++) {
        result += SUFFIX_CHAR_SET.charAt(Math.floor(Math.random() * SUFFIX_CHAR_SET.length));
    }
    return result;
}
exports.getRandomString = getRandomString;
function formatTimestamp(timestamp) {
    if (!timestamp) {
        return "";
    }
    const withoutMs = timestamp.split(".")[0];
    return withoutMs.replace("T", " ");
}
exports.formatTimestamp = formatTimestamp;
function getResourceRuntime(resource) {
    var _a, _b, _c;
    switch (resource.type) {
        case types_1.FUNCTIONS_RESOURCE_TYPE:
            return (_a = resource.properties) === null || _a === void 0 ? void 0 : _a.runtime;
        case types_1.FUNCTIONS_V2_RESOURCE_TYPE:
            return (_c = (_b = resource.properties) === null || _b === void 0 ? void 0 : _b.buildConfig) === null || _c === void 0 ? void 0 : _c.runtime;
        default:
            return undefined;
    }
}
exports.getResourceRuntime = getResourceRuntime;