[go: nahoru, domu]

Skip to content

Commit

Permalink
Convert FirebaseError to TypeScript (#1521)
Browse files Browse the repository at this point in the history
* Convert FirebaseError to TypeScript

* Use named export of FirebaseError

* Assign properties in FirebaseError constructor in alphabetical order

* Remove newlines between class properties

* Avoid destruction of properties

* Add basic tests for FirestoreError

* Rename a test file

* Don't enforce all options to exist in FirebaseError class definition

* Describe complex typings so it is more understandable
  • Loading branch information
merlinnot authored and bkendall committed Jul 23, 2019
1 parent 7c67993 commit 15a582c
Show file tree
Hide file tree
Showing 78 changed files with 150 additions and 92 deletions.
2 changes: 1 addition & 1 deletion src/RulesDeploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import fs = require("fs");

import gcp = require("./gcp");
import logger = require("./logger");
import FirebaseError = require("./error");
import { FirebaseError } from "./error";
import utils = require("./utils");

import { prompt } from "./prompt";
Expand Down
2 changes: 1 addition & 1 deletion src/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var _ = require("lodash");
var querystring = require("querystring");
var request = require("request");

var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var logger = require("./logger");
var responseToError = require("./responseToError");
var scopes = require("./scopes");
Expand Down
2 changes: 1 addition & 1 deletion src/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ var url = require("url");

var api = require("./api");
var configstore = require("./configstore");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var logger = require("./logger");
var { prompt } = require("./prompt");
var scopes = require("./scopes");
Expand Down
2 changes: 1 addition & 1 deletion src/checkDupHostingKeys.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var _ = require("lodash");
var utils = require("./utils");
var clc = require("cli-color");
var Config = require("./config");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var logger = require("./logger");

module.exports = function(options) {
Expand Down
2 changes: 1 addition & 1 deletion src/checkValidTargetFilters.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

var _ = require("lodash");

var FirebaseError = require("./error");
var { FirebaseError } = require("./error");

module.exports = function(options) {
function numFilters(targetTypes) {
Expand Down
2 changes: 1 addition & 1 deletion src/command.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var _ = require("lodash");
var track = require("./track");
var logger = require("./logger");
var utils = require("./utils");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var clc = require("cli-color");
var RC = require("./rc");
var Config = require("./config");
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-get.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");

var utils = require("../utils");
var querystring = require("querystring");
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-push.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");

var utils = require("../utils");
var clc = require("cli-color");
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-set.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");

var utils = require("../utils");
var clc = require("cli-color");
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-settings-get.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as request from "request";
import * as responseToError from "../responseToError";
import * as Command from "../command";
import * as logger from "../logger";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as requirePermissions from "../requirePermissions";
import * as utils from "../utils";
import * as api from "../api";
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-settings-set.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import * as request from "request";
import * as responseToError from "../responseToError";
import * as Command from "../command";
import * as logger from "../logger";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as requirePermissions from "../requirePermissions";
import * as utils from "../utils";
import * as api from "../api";
Expand Down
2 changes: 1 addition & 1 deletion src/commands/database-update.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var requirePermissions = require("../requirePermissions");
var request = require("request");
var api = require("../api");
var responseToError = require("../responseToError");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");

var utils = require("../utils");
var clc = require("cli-color");
Expand Down
2 changes: 1 addition & 1 deletion src/commands/emulators-exec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import * as clc from "cli-color";

import * as Command from "../command";
import { Emulators } from "../emulator/types";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as utils from "../utils";
import * as logger from "../logger";
import * as controller from "../emulator/controller";
Expand Down
2 changes: 1 addition & 1 deletion src/commands/functions-log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import * as opn from "open";
import * as qs from "querystring";

import * as Command from "../command";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as gcp from "../gcp";
import * as getProjectId from "../getProjectId";
import * as logger from "../logger";
Expand Down
2 changes: 1 addition & 1 deletion src/commands/open.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as _ from "lodash";
import * as clc from "cli-color";
import * as open from "open";

import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as api from "../api";
import * as Command from "../command";
import * as logger from "../logger";
Expand Down
2 changes: 1 addition & 1 deletion src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var fs = require("fs-extra");
var path = require("path");

var detectProjectRoot = require("./detectProjectRoot");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var fsutils = require("./fsutils");
var loadCJSON = require("./loadCJSON");
var parseBoltRules = require("./parseBoltRules");
Expand Down
2 changes: 1 addition & 1 deletion src/database/listRemote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as request from "request";
import { Response } from "request";
import * as responseToError from "../responseToError";
import * as utils from "../utils";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as logger from "../logger";
import * as api from "../api";

Expand Down
2 changes: 1 addition & 1 deletion src/database/removeRemote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as request from "request";
import { Response } from "request";
import * as responseToError from "../responseToError";
import * as utils from "../utils";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as logger from "../logger";
import * as api from "../api";

Expand Down
2 changes: 1 addition & 1 deletion src/deploy/database/prepare.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var _ = require("lodash");
var clc = require("cli-color");
var path = require("path");

var FirebaseError = require("../../error");
var { FirebaseError } = require("../../error");
var parseBoltRules = require("../../parseBoltRules");
var rtdb = require("../../rtdb");
var utils = require("../../utils");
Expand Down
2 changes: 1 addition & 1 deletion src/deploy/functions/release.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
var clc = require("cli-color");
var _ = require("lodash");

var FirebaseError = require("../../error");
var { FirebaseError } = require("../../error");
var gcp = require("../../gcp");
var logger = require("../../logger");
var track = require("../../track");
Expand Down
2 changes: 1 addition & 1 deletion src/deploy/functions/validate.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as FirebaseError from "../../error";
import { FirebaseError } from "../../error";
import * as _ from "lodash";
import * as path from "path";
import * as clc from "cli-color";
Expand Down
2 changes: 1 addition & 1 deletion src/deploy/hosting/prepare.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const clc = require("cli-color");
const api = require("../../api");
const convertConfig = require("./convertConfig");
const deploymentTool = require("../../deploymentTool");
const FirebaseError = require("../../error");
const { FirebaseError } = require("../../error");
const fsutils = require("../../fsutils");
const normalizedHostingConfigs = require("../../hosting/normalizedHostingConfigs");
const { resolveProjectPath } = require("../../projectPath");
Expand Down
2 changes: 1 addition & 1 deletion src/deploy/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var clc = require("cli-color");
var _ = require("lodash");
var getProjectId = require("../getProjectId");
var utils = require("../utils");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");
var track = require("../track");
var lifecycleHooks = require("./lifecycleHooks");

Expand Down
2 changes: 1 addition & 1 deletion src/deploy/lifecycleHooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const _ = require("lodash");
const utils = require("../utils");
const clc = require("cli-color");
const childProcess = require("child_process");
const FirebaseError = require("../error");
const { FirebaseError } = require("../error");
const getProjectId = require("../getProjectId");
const logger = require("../logger");
const path = require("path");
Expand Down
2 changes: 1 addition & 1 deletion src/emulator/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { FunctionsEmulator } from "../emulator/functionsEmulator";
import { DatabaseEmulator, DatabaseEmulatorArgs } from "../emulator/databaseEmulator";
import { FirestoreEmulator, FirestoreEmulatorArgs } from "../emulator/firestoreEmulator";
import { HostingEmulator } from "../emulator/hostingEmulator";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as getProjectId from "../getProjectId";

export const VALID_EMULATOR_STRINGS: string[] = ALL_EMULATORS;
Expand Down
2 changes: 1 addition & 1 deletion src/emulator/download.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as crypto from "crypto";
import * as request from "request";
import * as ProgressBar from "progress";

import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as utils from "../utils";
import { Emulators, JavaEmulatorDetails } from "./types";
import * as javaEmulators from "../serve/javaEmulators";
Expand Down
2 changes: 1 addition & 1 deletion src/emulator/emulatorServer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { EmulatorInstance } from "./types";
import { EmulatorRegistry } from "./registry";
import * as controller from "./controller";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";

/**
* Wrapper object to expose an EmulatorInstance for "firebase serve" that
Expand Down
2 changes: 1 addition & 1 deletion src/emulator/functionsEmulatorShell.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { FunctionsEmulator } from "./functionsEmulator";
import { EmulatedTriggerDefinition, getFunctionRegion } from "./functionsEmulatorShared";
import * as utils from "../utils";
import * as logger from "../logger";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import { LegacyEvent } from "./events/types";

interface FunctionsShellController {
Expand Down
2 changes: 1 addition & 1 deletion src/emulator/registry.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as clc from "cli-color";

import { ALL_EMULATORS, EmulatorInstance, Emulators } from "./types";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";
import * as utils from "../utils";
import * as controller from "./controller";

Expand Down
2 changes: 1 addition & 1 deletion src/ensureCloudResourceLocation.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as FirebaseError from "./error";
import { FirebaseError } from "./error";

/**
* Simple helper function that returns an error with a helpful
Expand Down
17 changes: 0 additions & 17 deletions src/error.js

This file was deleted.

34 changes: 34 additions & 0 deletions src/error.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { defaultTo } from "lodash";

interface FirebaseErrorOptions {
children?: unknown[];
context?: unknown;
exit?: number;
original?: Error;
status?: number;
}

const DEFAULT_CHILDREN: NonNullable<FirebaseErrorOptions["children"]> = [];
const DEFAULT_EXIT: NonNullable<FirebaseErrorOptions["exit"]> = 1;
const DEFAULT_STATUS: NonNullable<FirebaseErrorOptions["status"]> = 500;

export class FirebaseError extends Error {
readonly children: unknown[];
readonly context: unknown | undefined;
readonly exit: number;
readonly message: string;
readonly name = "FirebaseError";
readonly original: Error | undefined;
readonly status: number;

constructor(message: string, options: FirebaseErrorOptions = {}) {
super();

this.children = defaultTo(options.children, DEFAULT_CHILDREN);
this.context = options.context;
this.exit = defaultTo(options.exit, DEFAULT_EXIT);
this.message = message;
this.original = options.original;
this.status = defaultTo(options.status, DEFAULT_STATUS);
}
}
2 changes: 1 addition & 1 deletion src/errorOut.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

var logError = require("./logError");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");

module.exports = function(client, error) {
if (error.name !== "FirebaseError") {
Expand Down
2 changes: 1 addition & 1 deletion src/filterTargets.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

var _ = require("lodash");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");

module.exports = function(options, validTargets) {
var targets = validTargets.filter(function(t) {
Expand Down
2 changes: 1 addition & 1 deletion src/firestore/delete.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var ProgressBar = require("progress");

var api = require("../api");
var firestore = require("../gcp/firestore");
var FirebaseError = require("../error");
var { FirebaseError } = require("../error");
var logger = require("../logger");
var utils = require("../utils");

Expand Down
2 changes: 1 addition & 1 deletion src/firestore/encodeFirestoreValue.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as _ from "lodash";

import * as FirebaseError from "../error";
import { FirebaseError } from "../error";

function isPlainObject(input: any): boolean {
return (
Expand Down
2 changes: 1 addition & 1 deletion src/firestore/util.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";

interface IndexName {
projectId: string;
Expand Down
2 changes: 1 addition & 1 deletion src/firestore/validator.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as clc from "cli-color";
import * as FirebaseError from "../error";
import { FirebaseError } from "../error";

/**
* Throw an error if 'obj' does not have a value for the property 'prop'.
Expand Down
2 changes: 1 addition & 1 deletion src/functionsConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var _ = require("lodash");

var clc = require("cli-color");
var api = require("./api");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var runtimeconfig = require("./gcp/runtimeconfig");
var getProjectId = require("./getProjectId");
var ensureApiEnabled = require("./ensureApiEnabled").ensure;
Expand Down
2 changes: 1 addition & 1 deletion src/functionsConfigClone.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
var _ = require("lodash");

var clc = require("cli-color");
var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var functionsConfig = require("./functionsConfig");
var runtimeconfig = require("./gcp/runtimeconfig");

Expand Down
2 changes: 1 addition & 1 deletion src/functionsDeployHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
var _ = require("lodash");
var clc = require("cli-color");

var FirebaseError = require("./error");
var { FirebaseError } = require("./error");
var logger = require("./logger");
var track = require("./track");
var utils = require("./utils");
Expand Down
Loading

0 comments on commit 15a582c

Please sign in to comment.