firebase-tools
Version:
Command-Line Interface for Firebase
99 lines (98 loc) • 4.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.displayDeveloperTOSWarning = exports.acceptLatestAppDeveloperTOS = exports.acceptLatestPublisherTOS = exports.acceptPublisherTOS = exports.getPublisherTOSStatus = exports.acceptAppDeveloperTOS = exports.getAppDeveloperTOSStatus = void 0;
const apiv2_1 = require("../apiv2");
const api_1 = require("../api");
const logger_1 = require("../logger");
const prompt_1 = require("../prompt");
const error_1 = require("../error");
const extensionsHelper_1 = require("./extensionsHelper");
const utils = require("../utils");
const VERSION = "v1";
const extensionsTosUrl = (tos) => `https://firebase.google.com/terms/extensions/${tos}`;
const apiClient = new apiv2_1.Client({ urlPrefix: (0, api_1.extensionsTOSOrigin)(), apiVersion: VERSION });
async function getAppDeveloperTOSStatus(projectId) {
const res = await apiClient.get(`/projects/${projectId}/appdevtos`);
return res.body;
}
exports.getAppDeveloperTOSStatus = getAppDeveloperTOSStatus;
async function acceptAppDeveloperTOS(projectId, tosVersion, instanceId = "") {
const res = await apiClient.post(`/projects/${projectId}/appdevtos:accept`, {
name: `project/${projectId}/appdevtos`,
instanceId,
version: tosVersion,
});
return res.body;
}
exports.acceptAppDeveloperTOS = acceptAppDeveloperTOS;
async function getPublisherTOSStatus(projectId) {
const res = await apiClient.get(`/projects/${projectId}/publishertos`);
return res.body;
}
exports.getPublisherTOSStatus = getPublisherTOSStatus;
async function acceptPublisherTOS(projectId, tosVersion) {
const res = await apiClient.post(`/projects/${projectId}/publishertos:accept`, {
name: `project/${projectId}/publishertos`,
version: tosVersion,
});
return res.body;
}
exports.acceptPublisherTOS = acceptPublisherTOS;
async function acceptLatestPublisherTOS(options, projectId) {
try {
logger_1.logger.debug(`Checking if latest publisher TOS has been accepted by ${projectId}...`);
const currentAcceptance = await getPublisherTOSStatus(projectId);
if (currentAcceptance.lastAcceptedVersion) {
logger_1.logger.debug(`Already accepted version ${currentAcceptance.lastAcceptedVersion} of Extensions publisher TOS.`);
return currentAcceptance;
}
else {
const tosLink = extensionsTosUrl("publisher");
logger_1.logger.info(`To continue, you must accept the Firebase Extensions Publisher Terms of Service: ${tosLink}`);
if (await (0, prompt_1.confirm)({
message: "Do you accept the Firebase Extensions Publisher Terms of Service?",
nonInteractive: options.nonInteractive,
force: options.force,
})) {
return acceptPublisherTOS(projectId, currentAcceptance.latestTosVersion);
}
}
}
catch (err) {
logger_1.logger.debug(`Error when checking Publisher TOS for ${projectId}. This is expected if authenticated via a service account: ${err}`);
return;
}
throw new error_1.FirebaseError("You must accept the terms of service to continue.");
}
exports.acceptLatestPublisherTOS = acceptLatestPublisherTOS;
async function acceptLatestAppDeveloperTOS(options, projectId, instanceIds) {
try {
logger_1.logger.debug(`Checking if latest AppDeveloper TOS has been accepted by ${projectId}...`);
displayDeveloperTOSWarning();
const currentAcceptance = await getAppDeveloperTOSStatus(projectId);
if (currentAcceptance.lastAcceptedVersion) {
logger_1.logger.debug(`User Terms of Service aready accepted on project ${projectId}.`);
}
else if (!(await (0, prompt_1.confirm)({
message: "Do you accept the Firebase Extensions User Terms of Service?",
nonInteractive: options.nonInteractive,
force: options.force,
}))) {
throw new error_1.FirebaseError("You must accept the terms of service to continue.");
}
const tosPromises = instanceIds.map((instanceId) => {
return acceptAppDeveloperTOS(projectId, currentAcceptance.latestTosVersion, instanceId);
});
return Promise.all(tosPromises);
}
catch (err) {
logger_1.logger.debug(`Error when checking App Developer TOS for ${projectId}. This is expected if authenticated via a service account: ${err}`);
return [];
}
}
exports.acceptLatestAppDeveloperTOS = acceptLatestAppDeveloperTOS;
function displayDeveloperTOSWarning() {
const tosLink = extensionsTosUrl("user");
utils.logLabeledBullet(extensionsHelper_1.logPrefix, `By installing an extension instance onto a Firebase project, you accept the Firebase Extensions User Terms of Service: ${tosLink}`);
}
exports.displayDeveloperTOSWarning = displayDeveloperTOSWarning;
;