Master Sync 10/25 (#970)

* Add emulator:run

* Cleanup

* Download emulators if needed

* Cleanup

* Remove unused dep

* Use CACHE_DIR

* Allow FIREBASE_EMULATORS_PATH to override the cache dir

* Format

* Simplify emulator remote storage

* Use fs-extra

* Hide emulator:run behind preview

* Cleanup

* Fix URL

* Remove old commands

* Point at real artifacts

* make emulators executable after downloading

* Allow --yes flag for emulator

* Prompt for emulator download

* Linter

* Emulator CLI per API Review (#318)

* Emulator CLI per API Review

* Cleanup

* Address comments

* Linter

* Add a useful error message for when the emulator cannot start because… (#329)

* Add a useful error message for when the emulator cannot start because Java is not installed

* linter

* action item

* Add start time to profiler dump (#323)

* Set emulator version for initial release (#336)

* Typescript (#338)

* The path structure layout seems like it changed (#341)

* The path structure layout seems like it changed

* Update src/auth.js

Co-Authored-By: ryanpbrewster <RyanPBrewster@gmail.com>

* Update functions init templates to v2.1.0 (#969) (#343)
This commit is contained in:
Bryan Kendall
2018-10-25 16:19:35 -07:00
committed by GitHub
parent 8b54e70bc4
commit 78f11b62ab
218 changed files with 622 additions and 405 deletions

View File

@@ -1,3 +1,3 @@
/templates
/node_modules
/coverage
coverage
node_modules
templates

2
.gitignore vendored
View File

@@ -11,3 +11,5 @@ yarn.lock
.DS_Store
.idea
*.iml
lib/

View File

@@ -1,2 +1,3 @@
/templates
/node_modules
/lib/**/*

View File

@@ -0,0 +1,2 @@
important - As of v6.0.0, the Firebase CLI is transpiled from the `src` directory using TypeScript. Some deep requires of files may have changed, and `npm run build` must be run in the checked out repo directory (or when installed from git via `npm`) before the CLI can be used.
important - As of v6.0.0, the Firebase CLI is only going to be supported with Node >= 6.0.0.

View File

@@ -1,66 +0,0 @@
/**************/
/* REQUIRES */
/**************/
var gulp = require("gulp");
// File I/O
var exit = require("gulp-exit");
var eslint = require("gulp-eslint");
// Testing
var mocha = require("gulp-mocha");
var istanbul = require("gulp-istanbul");
var _ = require("lodash");
/****************/
/* FILE PATHS */
/****************/
var paths = {
js: ["index.js", "lib/**/*.js", "commands/**/*.js"],
tests: ["test/**/*.spec.js"],
scripts: ["scripts/*.js"],
};
/***********/
/* TASKS */
/***********/
// Lints the JavaScript files
gulp.task("lint", function() {
var filesToLint = _.union(paths.js, paths.tests, paths.scripts);
return gulp
.src(filesToLint)
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
// Runs the Mocha test suite
gulp.task("test", function() {
return gulp
.src(paths.js)
.pipe(istanbul())
.pipe(istanbul.hookRequire())
.on("finish", function() {
gulp
.src(paths.tests)
.pipe(
mocha({
reporter: "spec",
timeout: 5000,
})
)
.pipe(istanbul.writeReports())
.pipe(exit());
});
});
// Reruns the linter every time a JavaScript file changes
gulp.task("watch", function() {
gulp.watch(paths.js, gulp.series("lint"));
});
// Default task
gulp.task("default", gulp.series("lint", "test"));

4
mocha.opts Normal file
View File

@@ -0,0 +1,4 @@
--require ts-node/register
--recursive
--timeout=1000
src/test/**/*.{ts,js}

View File

@@ -2,16 +2,27 @@
"name": "firebase-tools",
"version": "5.1.1",
"description": "Command-Line Interface for Firebase",
"main": "index.js",
"main": "./lib/index.js",
"bin": {
"firebase": "./bin/firebase"
"firebase": "./lib/bin/firebase.js"
},
"scripts": {
"format": "prettier --write '**/*.js' 'bin/*'",
"lint": "eslint '**/*.js'",
"mocha": "nyc mocha test/**/*.spec.js --timeout=1000",
"build": "tsc",
"build:watch": "tsc --watch",
"clean": "rm -rf lib",
"format": "prettier --write 'src/**/*.{js,ts}'",
"lint": "npm run lint:js && npm run lint:ts",
"lint:js": "eslint 'src/**/*.js'",
"lint:ts": "tslint --project tsconfig.json --config tslint.json",
"mocha": "nyc mocha --opts mocha.opts",
"prepublish": "npm run clean && npm run build",
"prepare": "npm run clean && npm run build",
"test": "npm run lint && npm run mocha"
},
"files": [
"lib",
"templates"
],
"repository": {
"type": "git",
"url": "https://github.com/firebase/firebase-tools.git"
@@ -29,7 +40,7 @@
],
"preferGlobal": true,
"engines": {
"node": "^4.5 || >=5.10"
"node": ">= 6.0.0"
},
"engineStrict": true,
"author": "Firebase (https://firebase.google.com/)",
@@ -37,13 +48,6 @@
"bugs": {
"url": "https://github.com/firebase/firebase-tools/issues"
},
"files": [
"bin/**",
"lib/**",
"commands/**",
"templates/**",
"index.js"
],
"homepage": "https://github.com/firebase/firebase-tools",
"dependencies": {
"JSONStream": "^1.2.1",
@@ -86,11 +90,15 @@
"winston": "^1.0.1"
},
"devDependencies": {
"@types/chai": "^4.1.6",
"@types/glob": "^7.1.1",
"@types/mocha": "^5.2.5",
"@types/node": "^10.12.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"coveralls": "^3.0.1",
"eslint": "^4.19.1",
"eslint-plugin-prettier": "^2.6.0",
"eslint": "^5.7.0",
"eslint-plugin-prettier": "^3.0.0",
"gulp": "^4.0.0",
"gulp-eslint": "^4.0.2",
"gulp-exit": "0.0.2",
@@ -99,9 +107,13 @@
"mocha": "^5.0.5",
"nock": "^9.3.3",
"nyc": "^11.9.0",
"prettier": "1.11.1",
"prettier": "1.14.3",
"sinon": "^6.3.4",
"sinon-chai": "^3.2.0"
"sinon-chai": "^3.2.0",
"ts-node": "^7.0.1",
"tslint": "^5.11.0",
"tslint-plugin-prettier": "^2.0.0",
"typescript": "^3.1.3"
},
"optionalDependencies": {
"@google-cloud/functions-emulator": "^1.0.0-beta.5"

View File

@@ -4,8 +4,8 @@ var os = require("os");
var path = require("path");
var _ = require("lodash");
var api = require("../lib/api");
var utils = require("../lib/utils");
var api = require("./api");
var utils = require("./utils");
var EXPORTED_JSON_KEYS = [
"localId",

View File

@@ -3,9 +3,9 @@
var clc = require("cli-color");
var _ = require("lodash");
var api = require("../lib/api");
var logger = require("../lib/logger");
var utils = require("../lib/utils");
var api = require("./api");
var logger = require("./logger");
var utils = require("./utils");
var ALLOWED_JSON_KEYS = [
"localId",

View File

@@ -1,24 +1,24 @@
#!/usr/bin/env node
"use strict";
var pkg = require("../package.json");
var pkg = require("../../package.json");
var updateNotifier = require("update-notifier")({ pkg: pkg });
updateNotifier.notify({ defer: true });
var client = require("..");
var errorOut = require("../lib/errorOut");
var errorOut = require("../errorOut");
var winston = require("winston");
var logger = require("../lib/logger");
var logger = require("../logger");
var fs = require("fs");
var fsutils = require("../lib/fsutils");
var fsutils = require("../fsutils");
var path = require("path");
var clc = require("cli-color");
var ansiStrip = require("cli-color/strip");
var configstore = require("../lib/configstore");
var configstore = require("../configstore");
var _ = require("lodash");
var args = process.argv.slice(2);
var handlePreviewToggles = require("../lib/handlePreviewToggles");
var utils = require("../lib/utils");
var handlePreviewToggles = require("../handlePreviewToggles");
var utils = require("../utils");
var cmd;
var logFilename = path.join(process.cwd(), "/firebase-debug.log");
@@ -56,7 +56,7 @@ if (utils.envOverrides.length) {
logger.debug(_.repeat("-", 70));
logger.debug();
require("../lib/fetchMOTD")();
require("../fetchMOTD")();
process.on("exit", function(code) {
code = process.exitCode || code;

View File

@@ -11,7 +11,7 @@ var getProjectId = require("./getProjectId");
var RC = require("./rc");
var Config = require("./config");
var detectProjectRoot = require("./detectProjectRoot");
var configstore = require("../lib/configstore");
var configstore = require("./configstore");
var Command = function(cmd) {
this._cmd = cmd;

View File

@@ -4,11 +4,11 @@ var clc = require("cli-color");
var fs = require("fs");
var os = require("os");
var Command = require("../lib/command");
var accountExporter = require("../lib/accountExporter");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var accountExporter = require("../accountExporter");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var MAX_BATCH_SIZE = 1000;

View File

@@ -6,12 +6,12 @@ var fs = require("fs");
var jsonStream = require("JSONStream");
var _ = require("lodash");
var Command = require("../lib/command");
var accountImporter = require("../lib/accountImporter");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var Command = require("../command");
var accountImporter = require("../accountImporter");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var MAX_BATCH_SIZE = 1000;
var validateOptions = accountImporter.validateOptions;

View File

@@ -1,14 +1,14 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../lib/api");
var responseToError = require("../lib/responseToError");
var FirebaseError = require("../lib/error");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var utils = require("../lib/utils");
var utils = require("../utils");
var querystring = require("querystring");
var _ = require("lodash");
var fs = require("fs");

View File

@@ -2,11 +2,11 @@
var _ = require("lodash");
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var profiler = require("../lib/profiler");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var profiler = require("../profiler");
var description = "profile the Realtime Database and generate a usage report";

View File

@@ -1,16 +1,16 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../lib/api");
var responseToError = require("../lib/responseToError");
var FirebaseError = require("../lib/error");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var utils = require("../lib/utils");
var utils = require("../utils");
var clc = require("cli-color");
var logger = require("../lib/logger");
var logger = require("../logger");
var fs = require("fs");
var _ = require("lodash");

View File

@@ -1,15 +1,15 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../lib/api");
var responseToError = require("../lib/responseToError");
var FirebaseError = require("../lib/error");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var utils = require("../lib/utils");
var prompt = require("../lib/prompt");
var utils = require("../utils");
var prompt = require("../prompt");
var clc = require("cli-color");
var _ = require("lodash");

View File

@@ -1,18 +1,18 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../lib/api");
var responseToError = require("../lib/responseToError");
var FirebaseError = require("../lib/error");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var utils = require("../lib/utils");
var utils = require("../utils");
var clc = require("cli-color");
var logger = require("../lib/logger");
var logger = require("../logger");
var fs = require("fs");
var prompt = require("../lib/prompt");
var prompt = require("../prompt");
var _ = require("lodash");
module.exports = new Command("database:set <path> [infile]")

View File

@@ -1,18 +1,18 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../lib/api");
var responseToError = require("../lib/responseToError");
var FirebaseError = require("../lib/error");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var utils = require("../lib/utils");
var utils = require("../utils");
var clc = require("cli-color");
var logger = require("../lib/logger");
var logger = require("../logger");
var fs = require("fs");
var prompt = require("../lib/prompt");
var prompt = require("../prompt");
var _ = require("lodash");
module.exports = new Command("database:update <path> [infile]")

View File

@@ -2,15 +2,15 @@
var _ = require("lodash");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var checkDupHostingKeys = require("../lib/checkDupHostingKeys");
var checkValidTargetFilters = require("../lib/checkValidTargetFilters");
var checkFirebaseSDKVersion = require("../lib/checkFirebaseSDKVersion");
var Command = require("../lib/command");
var deploy = require("../lib/deploy");
var requireConfig = require("../lib/requireConfig");
var filterTargets = require("../lib/filterTargets");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var checkDupHostingKeys = require("../checkDupHostingKeys");
var checkValidTargetFilters = require("../checkValidTargetFilters");
var checkFirebaseSDKVersion = require("../checkFirebaseSDKVersion");
var Command = require("../command");
var deploy = require("../deploy");
var requireConfig = require("../requireConfig");
var filterTargets = require("../filterTargets");
// in order of least time-consuming to most time-consuming
var VALID_TARGETS = ["database", "storage", "firestore", "functions", "hosting"];

View File

@@ -1,9 +1,9 @@
"use strict";
var Command = require("../lib/command");
var requirePermissions = require("../lib/requirePermissions");
var requireConfig = require("../lib/requireConfig");
var action = require("../lib/functionsShellCommandAction");
var Command = require("../command");
var requirePermissions = require("../requirePermissions");
var requireConfig = require("../requireConfig");
var action = require("../functionsShellCommandAction");
module.exports = new Command("experimental:functions:shell")
.description(

View File

@@ -1,11 +1,11 @@
"use strict";
var clc = require("cli-color");
var Command = require("../lib/command");
var FirestoreDelete = require("../lib/firestore/delete");
var prompt = require("../lib/prompt");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var Command = require("../command");
var FirestoreDelete = require("../firestore/delete");
var prompt = require("../prompt");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var _getConfirmationMessage = function(deleteOp, options) {
if (options.allCollections) {

View File

@@ -1,9 +1,9 @@
"use strict";
var Command = require("../lib/command");
var firestoreIndexes = require("../lib/firestore/indexes.js");
var requirePermissions = require("../lib/requirePermissions");
var logger = require("../lib/logger");
var Command = require("../command");
var firestoreIndexes = require("../firestore/indexes.js");
var requirePermissions = require("../requirePermissions");
var logger = require("../logger");
var _ = require("lodash");
var _prettyPrint = function(indexes) {

View File

@@ -1,13 +1,13 @@
"use strict";
var clc = require("cli-color");
var Command = require("../lib/command");
var functionsConfig = require("../lib/functionsConfig");
var functionsConfigClone = require("../lib/functionsConfigClone");
var getProjectId = require("../lib/getProjectId");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var logger = require("../lib/logger");
var Command = require("../command");
var functionsConfig = require("../functionsConfig");
var functionsConfigClone = require("../functionsConfigClone");
var getProjectId = require("../getProjectId");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var logger = require("../logger");
module.exports = new Command("functions:config:clone")
.description("clone environment config from another project")

View File

@@ -1,11 +1,11 @@
"use strict";
var _ = require("lodash");
var Command = require("../lib/command");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var functionsConfig = require("../lib/functionsConfig");
var Command = require("../command");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var functionsConfig = require("../functionsConfig");
function _materialize(projectId, path) {
if (_.isUndefined(path)) {

View File

@@ -2,12 +2,12 @@
var _ = require("lodash");
var Command = require("../lib/command");
var getProjectId = require("../lib/getProjectId");
var requirePermissions = require("../lib/requirePermissions");
var runtimeconfig = require("../lib/gcp/runtimeconfig");
var functionsConfig = require("../lib/functionsConfig");
var logger = require("../lib/logger");
var Command = require("../command");
var getProjectId = require("../getProjectId");
var requirePermissions = require("../requirePermissions");
var runtimeconfig = require("../gcp/runtimeconfig");
var functionsConfig = require("../functionsConfig");
var logger = require("../logger");
module.exports = new Command("functions:config:legacy")
.description("get legacy functions config variables")

View File

@@ -2,12 +2,12 @@
var clc = require("cli-color");
var Command = require("../lib/command");
var getProjectId = require("../lib/getProjectId");
var requirePermissions = require("../lib/requirePermissions");
var logger = require("../lib/logger");
var utils = require("../lib/utils");
var functionsConfig = require("../lib/functionsConfig");
var Command = require("../command");
var getProjectId = require("../getProjectId");
var requirePermissions = require("../requirePermissions");
var logger = require("../logger");
var utils = require("../utils");
var functionsConfig = require("../functionsConfig");
module.exports = new Command("functions:config:set [values...]")
.description("set environment config with key=value syntax")

View File

@@ -3,13 +3,13 @@
var _ = require("lodash");
var clc = require("cli-color");
var Command = require("../lib/command");
var functionsConfig = require("../lib/functionsConfig");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var runtimeconfig = require("../lib/gcp/runtimeconfig");
var Command = require("../command");
var functionsConfig = require("../functionsConfig");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var runtimeconfig = require("../gcp/runtimeconfig");
module.exports = new Command("functions:config:unset [keys...]")
.description("unset environment config at the specified path(s)")

View File

@@ -2,15 +2,15 @@
var _ = require("lodash");
var Command = require("../lib/command");
var Command = require("../command");
var clc = require("cli-color");
var cloudfunctions = require("../lib/gcp/cloudfunctions");
var functionsDelete = require("../lib/functionsDelete");
var getProjectId = require("../lib/getProjectId");
var helper = require("../lib/functionsDeployHelper");
var prompt = require("../lib/prompt");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var cloudfunctions = require("../gcp/cloudfunctions");
var functionsDelete = require("../functionsDelete");
var getProjectId = require("../getProjectId");
var helper = require("../functionsDeployHelper");
var prompt = require("../prompt");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
module.exports = new Command("functions:delete [filters...]")
.description("delete one or more Cloud Functions by name or group name.")

View File

@@ -2,12 +2,12 @@
var _ = require("lodash");
var Command = require("../lib/command");
var FirebaseError = require("../lib/error");
var gcp = require("../lib/gcp");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var FirebaseError = require("../error");
var gcp = require("../gcp");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var open = require("opn");
module.exports = new Command("functions:log")

View File

@@ -1,9 +1,9 @@
"use strict";
var Command = require("../lib/command");
var requirePermissions = require("../lib/requirePermissions");
var requireConfig = require("../lib/requireConfig");
var action = require("../lib/functionsShellCommandAction");
var Command = require("../command");
var requirePermissions = require("../requirePermissions");
var requireConfig = require("../requireConfig");
var action = require("../functionsShellCommandAction");
module.exports = new Command("functions:shell")
.description("launch full Node shell with emulated functions")

View File

@@ -1,10 +1,10 @@
"use strict";
var Command = require("../lib/command");
var Command = require("../command");
var clc = require("cli-color");
var logger = require("../lib/logger");
var utils = require("../lib/utils");
var logger = require("../logger");
var utils = require("../utils");
module.exports = new Command("help [command]")
.description("display help information")

View File

@@ -1,11 +1,11 @@
"use strict";
var Command = require("../lib/command");
var requireInstance = require("../lib/requireInstance");
var requirePermissions = require("../lib/requirePermissions");
var api = require("../lib/api");
var utils = require("../lib/utils");
var prompt = require("../lib/prompt");
var Command = require("../command");
var requireInstance = require("../requireInstance");
var requirePermissions = require("../requirePermissions");
var api = require("../api");
var utils = require("../utils");
var prompt = require("../prompt");
var clc = require("cli-color");
module.exports = new Command("hosting:disable")

View File

@@ -1,6 +1,6 @@
"use strict";
var previews = require("../lib/previews");
var previews = require("../previews");
module.exports = function(client) {
var loadCommand = function(name) {
var cmd = require("./" + name);
@@ -74,6 +74,13 @@ module.exports = function(client) {
web: loadCommand("setup-web"),
};
if (previews.emulators) {
client.setup.emulators = {
database: loadCommand("setup-emulators-database"),
firestore: loadCommand("setup-emulators-firestore"),
};
}
client.target = loadCommand("target");
client.target.apply = loadCommand("target-apply");
client.target.clear = loadCommand("target-clear");

View File

@@ -5,16 +5,16 @@ var fs = require("fs");
var homeDir = require("user-home");
var path = require("path");
var Command = require("../lib/command");
var Config = require("../lib/config");
var fsutils = require("../lib/fsutils");
var init = require("../lib/init");
var logger = require("../lib/logger");
var prompt = require("../lib/prompt");
var requireAuth = require("../lib/requireAuth");
var utils = require("../lib/utils");
var Command = require("../command");
var Config = require("../config");
var fsutils = require("../fsutils");
var init = require("../init");
var logger = require("../logger");
var prompt = require("../prompt");
var requireAuth = require("../requireAuth");
var utils = require("../utils");
var TEMPLATE_ROOT = path.resolve(__dirname, "../templates/");
var TEMPLATE_ROOT = path.resolve(__dirname, "../../templates/");
var BANNER_TEXT = fs.readFileSync(path.join(TEMPLATE_ROOT, "banner.txt"), "utf8");
var GITIGNORE_TEMPLATE = fs.readFileSync(path.join(TEMPLATE_ROOT, "_gitignore"), "utf8");

View File

@@ -2,12 +2,12 @@
var clc = require("cli-color");
var Command = require("../lib/command");
var getProjectId = require("../lib/getProjectId");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var kits = require("../lib/kits");
var Command = require("../command");
var getProjectId = require("../getProjectId");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var kits = require("../kits");
// TODO: add option for urlPath to be inserted or parse urlPath for name if needed
module.exports = new Command("kits:install <githubRepo>")

View File

@@ -2,13 +2,13 @@
var clc = require("cli-color");
var _ = require("lodash");
var Command = require("../lib/command");
var gcp = require("../lib/gcp");
var pollKits = require("../lib/kits/pollKits");
var getProjectId = require("../lib/getProjectId");
var prompt = require("../lib/prompt");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var Command = require("../command");
var gcp = require("../gcp");
var pollKits = require("../kits/pollKits");
var getProjectId = require("../getProjectId");
var prompt = require("../prompt");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var DEFAULT_REGION = gcp.cloudfunctions.DEFAULT_REGION;

View File

@@ -1,12 +1,12 @@
"use strict";
var Command = require("../lib/command");
var api = require("../lib/api");
var requireAuth = require("../lib/requireAuth");
var Command = require("../command");
var api = require("../api");
var requireAuth = require("../requireAuth");
var clc = require("cli-color");
var Table = require("cli-table");
var _ = require("lodash");
var logger = require("../lib/logger");
var logger = require("../logger");
module.exports = new Command("list")
.description("list the Firebase projects you have access to")

View File

@@ -1,10 +1,10 @@
"use strict";
var Command = require("../lib/command");
var Command = require("../command");
var clc = require("cli-color");
var utils = require("../lib/utils");
var logger = require("../lib/logger");
var auth = require("../lib/auth");
var utils = require("../utils");
var logger = require("../logger");
var auth = require("../auth");
module.exports = new Command("login:ci")
.description("generate an access token for use in non-interactive environments")

View File

@@ -1,13 +1,13 @@
"use strict";
var Command = require("../lib/command");
var logger = require("../lib/logger");
var configstore = require("../lib/configstore");
var Command = require("../command");
var logger = require("../logger");
var configstore = require("../configstore");
var clc = require("cli-color");
var utils = require("../lib/utils");
var prompt = require("../lib/prompt");
var utils = require("../utils");
var prompt = require("../prompt");
var auth = require("../lib/auth");
var auth = require("../auth");
module.exports = new Command("login")
.description("log the CLI into Firebase")

View File

@@ -1,13 +1,13 @@
"use strict";
var Command = require("../lib/command");
var configstore = require("../lib/configstore");
var logger = require("../lib/logger");
var Command = require("../command");
var configstore = require("../configstore");
var logger = require("../logger");
var clc = require("cli-color");
var utils = require("../lib/utils");
var api = require("../lib/api");
var auth = require("../lib/auth");
var utils = require("../utils");
var api = require("../api");
var auth = require("../auth");
var _ = require("lodash");
module.exports = new Command("logout")

View File

@@ -4,12 +4,12 @@ var _ = require("lodash");
var clc = require("cli-color");
var open = require("opn");
var api = require("../lib/api");
var Command = require("../lib/command");
var logger = require("../lib/logger");
var prompt = require("../lib/prompt");
var requirePermissions = require("../lib/requirePermissions");
var utils = require("../lib/utils");
var api = require("../api");
var Command = require("../command");
var logger = require("../logger");
var prompt = require("../prompt");
var requirePermissions = require("../requirePermissions");
var utils = require("../utils");
var LINKS = [
{ name: "Project Dashboard", arg: "dashboard", consoleUrl: "/overview" },

View File

@@ -2,29 +2,34 @@
var clc = require("cli-color");
var Command = require("../lib/command");
var logger = require("../lib/logger");
var utils = require("../lib/utils");
var requirePermissions = require("../lib/requirePermissions");
var requireConfig = require("../lib/requireConfig");
var checkDupHostingKeys = require("../lib/checkDupHostingKeys");
var serve = require("../lib/serve/index");
var filterTargets = require("../lib/filterTargets");
var getProjectNumber = require("../lib/getProjectNumber");
var Command = require("../command");
var logger = require("../logger");
var utils = require("../utils");
var requirePermissions = require("../requirePermissions");
var requireConfig = require("../requireConfig");
var checkDupHostingKeys = require("../checkDupHostingKeys");
var serve = require("../serve/index");
var filterTargets = require("../filterTargets");
var getProjectNumber = require("../getProjectNumber");
var previews = require("../previews");
var VALID_TARGETS = ["functions", "hosting"];
if (previews.emulators) {
VALID_TARGETS = ["functions", "hosting", "database", "firestore"];
}
module.exports = new Command("serve")
.description("start a local server for your static assets")
.option("-p, --port <port>", "the port on which to listen (default: 5000)", 5000)
.option("-o, --host <host>", "the host on which to listen (default: localhost)", "localhost")
.option(
"--only <targets>",
"only serve specified targets (valid targets are: functions, hosting)"
"only serve specified targets (valid targets are: " + VALID_TARGETS.join(", ") + ")"
)
.option(
"--except <targets>",
"serve all except specified targets (valid targets are: functions, hosting)"
"serve all except specified targets (valid targets are: " + VALID_TARGETS.join(", ") + ")"
)
.before(requireConfig)
.before(requirePermissions)

View File

@@ -0,0 +1,10 @@
"use strict";
const Command = require("../command");
const downloadEmulator = require("../emulator/download");
const name = "database";
module.exports = new Command("setup:emulators:" + name)
.description("downloads the " + name + " emulator")
.action(downloadEmulator.bind(this, name));

View File

@@ -0,0 +1,10 @@
"use strict";
const Command = require("../command");
const downloadEmulator = require("../emulator/download");
const name = "firestore";
module.exports = new Command("setup:emulators:" + name)
.description("downloads the " + name + " emulator")
.action(downloadEmulator.bind(this, name));

View File

@@ -2,12 +2,12 @@
var fs = require("fs");
var Command = require("../lib/command");
var fetchWebSetup = require("../lib/fetchWebSetup");
var logger = require("../lib/logger");
var requirePermissions = require("../lib/requirePermissions");
var Command = require("../command");
var fetchWebSetup = require("../fetchWebSetup");
var logger = require("../logger");
var requirePermissions = require("../requirePermissions");
var JS_TEMPLATE = fs.readFileSync(__dirname + "/../templates/setup/web.js", "utf8");
var JS_TEMPLATE = fs.readFileSync(__dirname + "/../../templates/setup/web.js", "utf8");
module.exports = new Command("setup:web")
.description("display this project's setup information for the Firebase JS SDK")

View File

@@ -3,10 +3,10 @@
var _ = require("lodash");
var clc = require("cli-color");
var Command = require("../lib/command");
var logger = require("../lib/logger");
var requireConfig = require("../lib/requireConfig");
var utils = require("../lib/utils");
var Command = require("../command");
var logger = require("../logger");
var requireConfig = require("../requireConfig");
var utils = require("../utils");
module.exports = new Command("target:apply <type> <name> <resources...>")
.description("apply a deploy target to a resource")

View File

@@ -2,9 +2,9 @@
var clc = require("cli-color");
var Command = require("../lib/command");
var requireConfig = require("../lib/requireConfig");
var utils = require("../lib/utils");
var Command = require("../command");
var requireConfig = require("../requireConfig");
var utils = require("../utils");
module.exports = new Command("target:clear <type> <target>")
.description("clear all resources from a named resource target")

View File

@@ -2,9 +2,9 @@
var clc = require("cli-color");
var Command = require("../lib/command");
var requireConfig = require("../lib/requireConfig");
var utils = require("../lib/utils");
var Command = require("../command");
var requireConfig = require("../requireConfig");
var utils = require("../utils");
module.exports = new Command("target:remove <type> <resource>")
.description("remove a resource target")

View File

@@ -3,10 +3,10 @@
var _ = require("lodash");
var clc = require("cli-color");
var Command = require("../lib/command");
var logger = require("../lib/logger");
var requireConfig = require("../lib/requireConfig");
var utils = require("../lib/utils");
var Command = require("../command");
var logger = require("../logger");
var requireConfig = require("../requireConfig");
var utils = require("../utils");
function _logTargets(type, targets) {
logger.info(clc.cyan("[ " + type + " ]"));

View File

@@ -3,13 +3,13 @@
var _ = require("lodash");
var clc = require("cli-color");
var Command = require("../lib/command");
var Config = require("../lib/config");
var identifierToProjectId = require("../lib/identifierToProjectId");
var logger = require("../lib/logger");
var prompt = require("../lib/prompt");
var requireAuth = require("../lib/requireAuth");
var utils = require("../lib/utils");
var Command = require("../command");
var Config = require("../config");
var identifierToProjectId = require("../identifierToProjectId");
var logger = require("../logger");
var prompt = require("../prompt");
var requireAuth = require("../requireAuth");
var utils = require("../utils");
var MOVE_KEYS = {
rules: "database.rules",

View File

@@ -1,13 +1,13 @@
"use strict";
var Command = require("../lib/command");
var logger = require("../lib/logger");
var requireAuth = require("../lib/requireAuth");
var api = require("../lib/api");
var Command = require("../command");
var logger = require("../logger");
var requireAuth = require("../requireAuth");
var api = require("../api");
var clc = require("cli-color");
var utils = require("../lib/utils");
var utils = require("../utils");
var _ = require("lodash");
var prompt = require("../lib/prompt");
var prompt = require("../prompt");
var listAliases = function(options) {
if (options.rc.hasProjects) {

View File

@@ -1,10 +1,10 @@
"use strict";
var logger = require("../../logger");
var utils = require("../../utils");
var track = require("../../track");
var listFiles = require("../../listFiles");
const Uploader = require("./uploader");
var { listFiles } = require("../../listFiles");
var logger = require("../../logger");
var track = require("../../track");
var utils = require("../../utils");
var clc = require("cli-color");
var SPINNER = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];

View File

@@ -26,7 +26,7 @@ function _progressMessage(message, current, total) {
"/" +
total +
"] (" +
clc.bold.green(Math.floor(current * 1.0 / total * 100).toString() + "%") +
clc.bold.green(Math.floor(((current * 1.0) / total) * 100).toString() + "%") +
")"
);
}

46
src/emulator/constants.js Normal file
View File

@@ -0,0 +1,46 @@
"use strict";
var userHome = require("user-home");
var path = require("path");
const CACHE_DIR =
process.env.FIREBASE_EMULATORS_PATH || path.join(userHome, ".cache", "firebase", "emulators");
const _emulators = {
database: {
name: "database",
instance: null,
port: 9000,
stdout: null,
cacheDir: CACHE_DIR,
remoteUrl:
"https://storage.googleapis.com/firebase-preview-drop/emulator/firebase-database-emulator-v3.5.0.jar",
localPath: path.join(CACHE_DIR, "firebase-database-emulator-v3.5.0.jar"),
},
firestore: {
name: "firestore",
instance: null,
port: 8080,
stdout: null,
cacheDir: CACHE_DIR,
remoteUrl:
"https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.2.0.jar",
localPath: path.join(CACHE_DIR, "cloud-firestore-emulator-v1.2.0.jar"),
},
};
const _commands = {
database: {
binary: "java",
args: ["-jar", _emulators.database.localPath, "--port", _emulators.database.port],
},
firestore: {
binary: "java",
args: ["-jar", _emulators.firestore.localPath, "--port", _emulators.firestore.port],
},
};
module.exports = {
emulators: _emulators,
commands: _commands,
};

23
src/emulator/download.js Normal file
View File

@@ -0,0 +1,23 @@
"use strict";
const fs = require("fs-extra");
const request = require("request");
const emulatorConstants = require("./constants");
const utils = require("../utils");
module.exports = name => {
return new Promise((resolve, reject) => {
utils.logLabeledBullet(name, "downloading emulator...");
let emulator = emulatorConstants.emulators[name];
fs.ensureDirSync(emulator.cacheDir);
let req = request.get(emulator.remoteUrl);
let writeStream = fs.createWriteStream(emulator.localPath);
req.on("error", err => reject(err));
req.on("end", () => {
writeStream.close();
fs.chmodSync(emulator.localPath, 0o755);
resolve();
});
req.pipe(writeStream);
});
};

View File

@@ -1,7 +1,7 @@
"use strict";
var _ = require("lodash");
var FirebaseError = require("../lib/error");
var FirebaseError = require("./error");
module.exports = function(options, validTargets) {
var targets = validTargets.filter(function(t) {

View File

@@ -3,11 +3,11 @@
var clc = require("cli-color");
var ProgressBar = require("progress");
var api = require("../../lib/api");
var firestore = require("../../lib/gcp/firestore");
var FirebaseError = require("../../lib/error");
var logger = require("../../lib/logger");
var utils = require("../../lib/utils");
var api = require("../api");
var firestore = require("../gcp/firestore");
var FirebaseError = require("../error");
var logger = require("../logger");
var utils = require("../utils");
/**
* Construct a new Firestore delete operation.

View File

@@ -1,9 +1,9 @@
"use strict";
var api = require("../../lib/api");
var api = require("../api");
var clc = require("cli-color");
var FirebaseError = require("../../lib/error");
var loadCJSON = require("../../lib/loadCJSON");
var FirebaseError = require("../error");
var loadCJSON = require("../loadCJSON");
var VALID_INDEX_MODES = ["ASCENDING", "DESCENDING", "ARRAY_CONTAINS"];

Some files were not shown because too many files have changed in this diff Show More