GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: //usr/local/lib/node_modules/firebase-tools/lib/hosting/interactive.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.interactiveCreateHostingSite = void 0;
const error_1 = require("../error");
const utils_1 = require("../utils");
const projectUtils_1 = require("../projectUtils");
const prompt_1 = require("../prompt");
const api_1 = require("./api");
const nameSuggestion = new RegExp("try something like `(.+)`");
const prompt = "Please provide an unique, URL-friendly id for your site. Your site's URL will be <site-id>.web.app. " +
    'We recommend using letters, numbers, and hyphens (e.g. "{project-id}-{random-hash}"):';
async function interactiveCreateHostingSite(siteId, appId, options) {
    const projectId = (0, projectUtils_1.needProjectId)(options);
    const projectNumber = await (0, projectUtils_1.needProjectNumber)(options);
    let id = siteId;
    let newSite;
    let suggestion;
    if (!id) {
        const attempt = await trySiteID(projectNumber, projectId);
        if (attempt.available) {
            suggestion = projectId;
        }
        else {
            suggestion = attempt.suggestion;
        }
    }
    while (!newSite) {
        if (!id || suggestion) {
            id = await (0, prompt_1.promptOnce)({
                type: "input",
                message: prompt,
                validate: (s) => s.length > 0,
                default: suggestion,
            });
        }
        try {
            newSite = await (0, api_1.createSite)(projectNumber, id, appId);
        }
        catch (err) {
            if (!(err instanceof error_1.FirebaseError)) {
                throw err;
            }
            if (options.nonInteractive) {
                throw err;
            }
            id = "";
            suggestion = getSuggestionFromError(err);
        }
    }
    return newSite;
}
exports.interactiveCreateHostingSite = interactiveCreateHostingSite;
async function trySiteID(projectNumber, id) {
    try {
        await (0, api_1.createSite)(projectNumber, id, "", true);
        return { available: true };
    }
    catch (err) {
        if (!(err instanceof error_1.FirebaseError)) {
            throw err;
        }
        const suggestion = getSuggestionFromError(err);
        return { available: false, suggestion };
    }
}
function getSuggestionFromError(err) {
    if (err.status === 400 && err.message.includes("Invalid name:")) {
        const i = err.message.indexOf("Invalid name:");
        (0, utils_1.logWarning)(err.message.substring(i));
        const match = nameSuggestion.exec(err.message);
        if (match) {
            return match[1];
        }
    }
    else {
        (0, utils_1.logWarning)(err.message);
    }
    return;
}