1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.checkFunctionsSDKVersion = exports.getLatestSDKVersion = exports.getFunctionsSDKVersion = exports.findModuleVersion = exports.FUNCTIONS_SDK_VERSION_TOO_OLD_WARNING = void 0;
- const fs = require("fs");
- const path = require("path");
- const clc = require("colorette");
- const semver = require("semver");
- const spawn = require("cross-spawn");
- const utils = require("../../../../utils");
- const logger_1 = require("../../../../logger");
- const track_1 = require("../../../../track");
- const MIN_SDK_VERSION = "2.0.0";
- exports.FUNCTIONS_SDK_VERSION_TOO_OLD_WARNING = clc.bold(clc.yellow("functions: ")) +
- "You must have a " +
- clc.bold("firebase-functions") +
- " version that is at least 2.0.0. Please run " +
- clc.bold("npm i --save firebase-functions@latest") +
- " in the functions folder.";
- function findModuleVersion(name, resolvedPath) {
- let searchPath = path.dirname(resolvedPath);
- while (true) {
- if (searchPath === "/" || path.basename(searchPath) === "node_modules") {
- logger_1.logger.debug(`Failed to find version of module ${name}: reached end of search path ${searchPath}`);
- return;
- }
- const maybePackageJson = path.join(searchPath, "package.json");
- if (fs.existsSync(maybePackageJson)) {
- const pkg = require(maybePackageJson);
- if (pkg.name === name) {
- return pkg.version;
- }
- logger_1.logger.debug(`Failed to find version of module ${name}: instead found ${pkg.name} at ${searchPath}`);
- return;
- }
- searchPath = path.dirname(searchPath);
- }
- }
- exports.findModuleVersion = findModuleVersion;
- function getFunctionsSDKVersion(sourceDir) {
- try {
- return findModuleVersion("firebase-functions", require.resolve("firebase-functions", { paths: [sourceDir] }));
- }
- catch (e) {
- if (e.code === "MODULE_NOT_FOUND") {
- utils.logLabeledWarning("functions", "Couldn't find firebase-functions package in your source code. Have you run 'npm install'?");
- }
- logger_1.logger.debug("getFunctionsSDKVersion encountered error:", e);
- return;
- }
- }
- exports.getFunctionsSDKVersion = getFunctionsSDKVersion;
- function getLatestSDKVersion() {
- var _a;
- const child = spawn.sync("npm", ["show", "firebase-functions", "--json=true"], {
- encoding: "utf8",
- });
- if (child.error) {
- logger_1.logger.debug("checkFunctionsSDKVersion was unable to fetch information from NPM", child.error.stack);
- return;
- }
- const output = JSON.parse(child.stdout);
- if (Object.keys(output).length === 0) {
- return;
- }
- return (_a = output["dist-tags"]) === null || _a === void 0 ? void 0 : _a["latest"];
- }
- exports.getLatestSDKVersion = getLatestSDKVersion;
- function checkFunctionsSDKVersion(currentVersion) {
- try {
- if (semver.lt(currentVersion, MIN_SDK_VERSION)) {
- void (0, track_1.track)("functions_runtime_notices", "functions_sdk_too_old");
- utils.logWarning(exports.FUNCTIONS_SDK_VERSION_TOO_OLD_WARNING);
- }
- const latest = exports.getLatestSDKVersion();
- if (!latest) {
- return;
- }
- if (semver.eq(currentVersion, latest)) {
- return;
- }
- utils.logWarning(clc.bold(clc.yellow("functions: ")) +
- "package.json indicates an outdated version of firebase-functions. Please upgrade using " +
- clc.bold("npm install --save firebase-functions@latest") +
- " in your functions directory.");
- if (semver.major(currentVersion) < semver.major(latest)) {
- utils.logWarning(clc.bold(clc.yellow("functions: ")) +
- "Please note that there will be breaking changes when you upgrade.");
- }
- }
- catch (e) {
- logger_1.logger.debug("checkFunctionsSDKVersion encountered error:", e);
- return;
- }
- }
- exports.checkFunctionsSDKVersion = checkFunctionsSDKVersion;
|