UNPKG

owltech

Version:
87 lines (86 loc) 2.56 kB
/** * @license * Copyright 2017 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Standardized Firebase Error. * * Usage: * * // Typescript string literals for type-safe codes * type Err = * 'unknown' | * 'object-not-found' * ; * * // Closure enum for type-safe error codes * // at-enum {string} * var Err = { * UNKNOWN: 'unknown', * OBJECT_NOT_FOUND: 'object-not-found', * } * * let errors: Map<Err, string> = { * 'generic-error': "Unknown error", * 'file-not-found': "Could not find file: {$file}", * }; * * // Type-safe function - must pass a valid error code as param. * let error = new ErrorFactory<Err>('service', 'Service', errors); * * ... * throw error.create(Err.GENERIC); * ... * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName}); * ... * // Service: Could not file file: foo.txt (service/file-not-found). * * catch (e) { * assert(e.message === "Could not find file: foo.txt."); * if (e.code === 'service/file-not-found') { * console.log("Could not read file: " + e['file']); * } * } */ export declare type ErrorList<T> = { [code: string]: string; }; export interface StringLike { toString: () => string; } export declare function patchCapture(captureFake?: any): any; export interface FirebaseError { code: string; message: string; name: string; stack: string; } export declare class FirebaseError implements FirebaseError { code: string; message: string; stack: string; name: string; constructor(code: string, message: string); } export declare class ErrorFactory<T extends string> { private service; private serviceName; private errors; pattern: RegExp; constructor(service: string, serviceName: string, errors: ErrorList<T>); create(code: T, data?: { [prop: string]: StringLike; }): FirebaseError; }