voluptasmollitia
Version:
Monorepo for the Firebase JavaScript SDK
81 lines (75 loc) • 3.44 kB
text/typescript
/**
* @license
* Copyright 2019 Google LLC
*
* 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.
*/
import { ErrorFactory, ErrorMap } from '@firebase/util';
export const enum AnalyticsError {
ALREADY_EXISTS = 'already-exists',
ALREADY_INITIALIZED = 'already-initialized',
INTEROP_COMPONENT_REG_FAILED = 'interop-component-reg-failed',
INVALID_ANALYTICS_CONTEXT = 'invalid-analytics-context',
INDEXEDDB_UNAVAILABLE = 'indexeddb-unavailable',
FETCH_THROTTLE = 'fetch-throttle',
CONFIG_FETCH_FAILED = 'config-fetch-failed',
NO_API_KEY = 'no-api-key',
NO_APP_ID = 'no-app-id'
}
const ERRORS: ErrorMap<AnalyticsError> = {
[]:
'A Firebase Analytics instance with the appId {$id} ' +
' already exists. ' +
'Only one Firebase Analytics instance can be created for each appId.',
[]:
'Firebase Analytics has already been initialized.' +
'settings() must be called before initializing any Analytics instance' +
'or it will have no effect.',
[]:
'Firebase Analytics Interop Component failed to instantiate: {$reason}',
[]:
'Firebase Analytics is not supported in this environment. ' +
'Wrap initialization of analytics in analytics.isSupported() ' +
'to prevent initialization in unsupported environments. Details: {$errorInfo}',
[]:
'IndexedDB unavailable or restricted in this environment. ' +
'Wrap initialization of analytics in analytics.isSupported() ' +
'to prevent initialization in unsupported environments. Details: {$errorInfo}',
[]:
'The config fetch request timed out while in an exponential backoff state.' +
' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',
[]:
'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',
[]:
'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field to' +
'contain a valid API key.',
[]:
'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field to' +
'contain a valid app ID.'
};
interface ErrorParams {
[]: { id: string };
[]: { reason: Error };
[]: { throttleEndTimeMillis: number };
[]: {
httpStatus: number;
responseMessage: string;
};
[]: { errorInfo: string };
[]: { errorInfo: string };
}
export const ERROR_FACTORY = new ErrorFactory<AnalyticsError, ErrorParams>(
'analytics',
'Analytics',
ERRORS
);