Skip to content

Update error handling for TS v4.4 unknown variables #6362

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions packages/firestore/src/api/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,15 +328,16 @@ function setPersistenceProviders(
await setOnlineComponentProvider(client, onlineComponentProvider);
persistenceResult.resolve();
} catch (e) {
if (!canFallbackFromIndexedDbError(e)) {
throw e;
const error = e as FirestoreError | DOMException;
if (!canFallbackFromIndexedDbError(error)) {
throw error;
}
console.warn(
'Error enabling offline persistence. Falling back to ' +
'persistence disabled: ' +
e
error
);
persistenceResult.reject(e);
persistenceResult.reject(error);
}
})
.then(() => persistenceResult.promise);
Expand Down Expand Up @@ -419,7 +420,7 @@ export function clearIndexedDbPersistence(firestore: Firestore): Promise<void> {
);
deferred.resolve();
} catch (e) {
deferred.reject(e);
deferred.reject(e as Error | undefined);
}
});
return deferred.promise;
Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/src/api/index_configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ function tryParseJson(json: string): Record<string, unknown> {
} catch (e) {
throw new FirestoreError(
Code.INVALID_ARGUMENT,
'Failed to parse JSON:' + e.message
'Failed to parse JSON:' + (e as Error)?.message
);
}
}
Expand Down
6 changes: 3 additions & 3 deletions packages/firestore/src/core/firestore_client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ export class FirestoreClient {
deferred.resolve();
} catch (e) {
const firestoreError = wrapInUserErrorIfRecoverable(
e,
e as Error,
`Failed to shutdown persistence`
);
deferred.reject(firestoreError);
Expand Down Expand Up @@ -525,7 +525,7 @@ async function readDocumentFromCache(
}
} catch (e) {
const firestoreError = wrapInUserErrorIfRecoverable(
e,
e as Error,
`Failed to get document '${docKey} from cache`
);
result.reject(firestoreError);
Expand Down Expand Up @@ -623,7 +623,7 @@ async function executeQueryFromCache(
result.resolve(viewChange.snapshot!);
} catch (e) {
const firestoreError = wrapInUserErrorIfRecoverable(
e,
e as Error,
`Failed to execute query '${query} against cache`
);
result.reject(firestoreError);
Expand Down
15 changes: 9 additions & 6 deletions packages/firestore/src/core/sync_engine_impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,10 @@ export async function syncEngineWrite(
} catch (e) {
// If we can't persist the mutation, we reject the user callback and
// don't send the mutation. The user can then retry the write.
const error = wrapInUserErrorIfRecoverable(e, `Failed to persist write`);
const error = wrapInUserErrorIfRecoverable(
e as Error,
`Failed to persist write`
);
userCallback.reject(error);
}
}
Expand Down Expand Up @@ -532,7 +535,7 @@ export async function syncEngineApplyRemoteEvent(
remoteEvent
);
} catch (error) {
await ignoreIfPrimaryLeaseLoss(error);
await ignoreIfPrimaryLeaseLoss(error as FirestoreError);
}
}

Expand Down Expand Up @@ -684,7 +687,7 @@ export async function syncEngineApplySuccessfulWrite(
);
await syncEngineEmitNewSnapsAndNotifyLocalStore(syncEngineImpl, changes);
} catch (error) {
await ignoreIfPrimaryLeaseLoss(error);
await ignoreIfPrimaryLeaseLoss(error as FirestoreError);
}
}

Expand Down Expand Up @@ -715,7 +718,7 @@ export async function syncEngineRejectFailedWrite(
);
await syncEngineEmitNewSnapsAndNotifyLocalStore(syncEngineImpl, changes);
} catch (error) {
await ignoreIfPrimaryLeaseLoss(error);
await ignoreIfPrimaryLeaseLoss(error as FirestoreError);
}
}

Expand Down Expand Up @@ -752,7 +755,7 @@ export async function syncEngineRegisterPendingWritesCallback(
syncEngineImpl.pendingWritesCallbacks.set(highestBatchId, callbacks);
} catch (e) {
const firestoreError = wrapInUserErrorIfRecoverable(
e,
e as Error,
'Initialization of waitForPendingWrites() operation failed'
);
callback.reject(firestoreError);
Expand Down Expand Up @@ -1628,7 +1631,7 @@ async function loadBundleImpl(
return Promise.resolve(result.changedCollectionGroups);
} catch (e) {
logWarn(LOG_TAG, `Loading bundle failed with ${e}`);
task._failWith(e);
task._failWith(e as FirestoreError);
return Promise.resolve(new Set<string>());
}
}
2 changes: 1 addition & 1 deletion packages/firestore/src/core/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export class Transaction {
try {
this.write(data.toMutation(key, this.preconditionForUpdate(key)));
} catch (e) {
this.lastWriteError = e;
this.lastWriteError = e as FirestoreError | null;
}
this.writtenDocs.add(key.toString());
}
Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/src/core/transaction_runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export class TransactionRunner<T> {
return userPromise;
} catch (error) {
// Do not retry errors thrown by user provided updateFunction.
this.deferred.reject(error);
this.deferred.reject(error as Error);
return null;
}
}
Expand Down
5 changes: 3 additions & 2 deletions packages/firestore/src/local/index_backfiller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { FirestoreError } from '../api';
import { DocumentMap } from '../model/collections';
import {
IndexOffset,
Expand Down Expand Up @@ -90,14 +91,14 @@ export class IndexBackfillerScheduler implements Scheduler {
const documentsProcessed = await this.backfiller.backfill();
logDebug(LOG_TAG, `Documents written: ${documentsProcessed}`);
} catch (e) {
if (isIndexedDbTransactionError(e)) {
if (isIndexedDbTransactionError(e as Error)) {
logDebug(
LOG_TAG,
'Ignoring IndexedDB error during index backfill: ',
e
);
} else {
await ignoreIfPrimaryLeaseLoss(e);
await ignoreIfPrimaryLeaseLoss(e as FirestoreError);
}
}
await this.schedule(REGULAR_BACKFILL_DELAY_MS);
Expand Down
4 changes: 2 additions & 2 deletions packages/firestore/src/local/local_store_impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ export async function localStoreNotifyLocalViewChanges(
}
);
} catch (e) {
if (isIndexedDbTransactionError(e)) {
if (isIndexedDbTransactionError(e as Error)) {
// If `notifyLocalViewChanges` fails, we did not advance the sequence
// number for the documents that were included in this transaction.
// This might trigger them to be deleted earlier than they otherwise
Expand Down Expand Up @@ -1039,7 +1039,7 @@ export async function localStoreReleaseTarget(
);
}
} catch (e) {
if (isIndexedDbTransactionError(e)) {
if (isIndexedDbTransactionError(e as Error)) {
// All `releaseTarget` does is record the final metadata state for the
// target, but we've been recording this periodically during target
// activity. If we lose this write this could cause a very slight
Expand Down
5 changes: 3 additions & 2 deletions packages/firestore/src/local/lru_garbage_collector_impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* limitations under the License.
*/

import { FirestoreError } from '../api';
import { ListenSequence } from '../core/listen_sequence';
import { ListenSequenceNumber } from '../core/types';
import { debugAssert } from '../util/assert';
Expand Down Expand Up @@ -159,14 +160,14 @@ export class LruScheduler implements Scheduler {
try {
await this.localStore.collectGarbage(this.garbageCollector);
} catch (e) {
if (isIndexedDbTransactionError(e)) {
if (isIndexedDbTransactionError(e as Error)) {
logDebug(
LOG_TAG,
'Ignoring IndexedDB error during garbage collection: ',
e
);
} else {
await ignoreIfPrimaryLeaseLoss(e);
await ignoreIfPrimaryLeaseLoss(e as FirestoreError);
}
}
await this.scheduleGC(REGULAR_GC_DELAY_MS);
Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/src/local/persistence_promise.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ export class PersistencePromise<T> {
return PersistencePromise.resolve(result);
}
} catch (e) {
return PersistencePromise.reject<R>(e);
return PersistencePromise.reject<R>(e as Error);
}
}

Expand Down
5 changes: 3 additions & 2 deletions packages/firestore/src/local/simple_db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export class SimpleDbTransaction {
db.transaction(objectStoreNames, mode)
);
} catch (e) {
throw new IndexedDbTransactionError(action, e);
throw new IndexedDbTransactionError(action, e as Error);
}
}

Expand Down Expand Up @@ -434,7 +434,8 @@ export class SimpleDb {
// caller.
await transaction.completionPromise;
return transactionFnResult;
} catch (error) {
} catch (e) {
const error = e as Error;
// TODO(schmidt-sebastian): We could probably be smarter about this and
// not retry exceptions that are likely unrecoverable (such as quota
// exceeded errors).
Expand Down
6 changes: 3 additions & 3 deletions packages/firestore/src/remote/remote_store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ async function onWatchStreamChange(
watchChange.targetIds.join(','),
e
);
await disableNetworkUntilRecovery(remoteStoreImpl, e);
await disableNetworkUntilRecovery(remoteStoreImpl, e as FirestoreError);
}
return;
}
Expand Down Expand Up @@ -481,7 +481,7 @@ async function onWatchStreamChange(
}
} catch (e) {
logDebug(LOG_TAG, 'Failed to raise snapshot:', e);
await disableNetworkUntilRecovery(remoteStoreImpl, e);
await disableNetworkUntilRecovery(remoteStoreImpl, e as FirestoreError);
}
}
}
Expand Down Expand Up @@ -675,7 +675,7 @@ export async function fillWritePipeline(
addToWritePipeline(remoteStoreImpl, batch);
}
} catch (e) {
await disableNetworkUntilRecovery(remoteStoreImpl, e);
await disableNetworkUntilRecovery(remoteStoreImpl, e as FirestoreError);
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/src/util/async_queue_impl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ export class AsyncQueueImpl implements AsyncQueue {
this.retryableOps.shift();
this.backoff.reset();
} catch (e) {
if (isIndexedDbTransactionError(e)) {
if (isIndexedDbTransactionError(e as Error)) {
logDebug(LOG_TAG, 'Operation failed with retryable error: ' + e);
} else {
throw e; // Failure will be handled by AsyncQueue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import {
setDoc,
updateDoc,
arrayRemove,
arrayUnion
arrayUnion,
FirestoreError
} from '../util/firebase_export';
import { apiDescribe, withTestDb, withTestDoc } from '../util/helpers';

Expand Down Expand Up @@ -191,7 +192,7 @@ apiDescribe('Array Transforms:', (persistence: boolean) => {
try {
await getDocFromCache(docRef);
} catch (err) {
expect(err.code).to.equal('unavailable');
expect((err as FirestoreError).code).to.equal('unavailable');
errCaught = true;
}
expect(errCaught).to.be.true;
Expand Down
4 changes: 3 additions & 1 deletion packages/firestore/test/lite/integration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,9 @@ describe('Firestore', () => {
getDoc(doc(firestore, 'coll/doc'));
expect.fail();
} catch (e) {
expect(e.message).to.equal('The client has already been terminated.');
expect((e as Error)?.message).to.equal(
'The client has already been terminated.'
);
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1246,9 +1246,9 @@ describe('IndexedDbSchema: createOrUpgradeDb', () => {
);
await db.ensureDb(this.test!.fullTitle());
} catch (e) {
error = e;
error = e as FirestoreError;
expect(
e.message.indexOf('A newer version of the Firestore SDK')
error?.message?.indexOf('A newer version of the Firestore SDK')
).to.not.equal(-1);
}
expect(error).to.not.be.null;
Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/test/unit/util/async_queue.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ function defer<T>(op: () => T): Promise<T> {
try {
resolve(op());
} catch (e) {
reject(e);
reject(e as Error);
}
}, 0);
});
Expand Down
4 changes: 2 additions & 2 deletions packages/messaging/src/internals/requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export async function requestGetToken(
responseData = await response.json();
} catch (err) {
throw ERROR_FACTORY.create(ErrorCode.TOKEN_SUBSCRIBE_FAILED, {
errorInfo: err
errorInfo: (err as Error)?.toString()
});
}

Expand Down Expand Up @@ -98,7 +98,7 @@ export async function requestUpdateToken(
responseData = await response.json();
} catch (err) {
throw ERROR_FACTORY.create(ErrorCode.TOKEN_UPDATE_FAILED, {
errorInfo: err
errorInfo: (err as Error)?.toString()
});
}

Expand Down