diff --git a/etc/firebase-admin.api.md b/etc/firebase-admin.api.md
index 6c80d32f91..69b9052166 100644
--- a/etc/firebase-admin.api.md
+++ b/etc/firebase-admin.api.md
@@ -270,14 +270,6 @@ export namespace firestore {
import WhereFilterOp = _firestore.WhereFilterOp;
import WriteBatch = _firestore.WriteBatch;
import WriteResult = _firestore.WriteResult;
- import PartialWithFieldValue = _firestore.PartialWithFieldValue;
- import WithFieldValue = _firestore.WithFieldValue;
- import Primitive = _firestore.Primitive;
- import NestedUpdateFields = _firestore.NestedUpdateFields;
- import ChildUpdateFields = _firestore.ChildUpdateFields;
- import AddPrefixToKeys = _firestore.AddPrefixToKeys;
- import UnionToIntersection = _firestore.UnionToIntersection;
- import ReadOnlyTransactionOptions = _firestore.ReadOnlyTransactionOptions;
import setLogFunction = _firestore.setLogFunction;
}
diff --git a/etc/firebase-admin.firestore.api.md b/etc/firebase-admin.firestore.api.md
index 0e957df024..5a9bdd35df 100644
--- a/etc/firebase-admin.firestore.api.md
+++ b/etc/firebase-admin.firestore.api.md
@@ -6,12 +6,10 @@
///
-import { AddPrefixToKeys } from '@google-cloud/firestore';
import { Agent } from 'http';
import { BulkWriter } from '@google-cloud/firestore';
import { BulkWriterOptions } from '@google-cloud/firestore';
import { BundleBuilder } from '@google-cloud/firestore';
-import { ChildUpdateFields } from '@google-cloud/firestore';
import { CollectionGroup } from '@google-cloud/firestore';
import { CollectionReference } from '@google-cloud/firestore';
import { DocumentChange } from '@google-cloud/firestore';
@@ -25,40 +23,30 @@ import { Firestore } from '@google-cloud/firestore';
import { FirestoreDataConverter } from '@google-cloud/firestore';
import { GeoPoint } from '@google-cloud/firestore';
import { GrpcStatus } from '@google-cloud/firestore';
-import { NestedUpdateFields } from '@google-cloud/firestore';
import { OrderByDirection } from '@google-cloud/firestore';
-import { PartialWithFieldValue } from '@google-cloud/firestore';
import { Precondition } from '@google-cloud/firestore';
-import { Primitive } from '@google-cloud/firestore';
import { Query } from '@google-cloud/firestore';
import { QueryDocumentSnapshot } from '@google-cloud/firestore';
import { QueryPartition } from '@google-cloud/firestore';
import { QuerySnapshot } from '@google-cloud/firestore';
-import { ReadOnlyTransactionOptions } from '@google-cloud/firestore';
import { ReadOptions } from '@google-cloud/firestore';
import { setLogFunction } from '@google-cloud/firestore';
import { SetOptions } from '@google-cloud/firestore';
import { Settings } from '@google-cloud/firestore';
import { Timestamp } from '@google-cloud/firestore';
import { Transaction } from '@google-cloud/firestore';
-import { UnionToIntersection } from '@google-cloud/firestore';
import { UpdateData } from '@google-cloud/firestore';
import { v1 } from '@google-cloud/firestore';
import { WhereFilterOp } from '@google-cloud/firestore';
-import { WithFieldValue } from '@google-cloud/firestore';
import { WriteBatch } from '@google-cloud/firestore';
import { WriteResult } from '@google-cloud/firestore';
-export { AddPrefixToKeys }
-
export { BulkWriter }
export { BulkWriterOptions }
export { BundleBuilder }
-export { ChildUpdateFields }
-
export { CollectionGroup }
export { CollectionReference }
@@ -90,16 +78,10 @@ export function getFirestore(app?: App): Firestore;
export { GrpcStatus }
-export { NestedUpdateFields }
-
export { OrderByDirection }
-export { PartialWithFieldValue }
-
export { Precondition }
-export { Primitive }
-
export { Query }
export { QueryDocumentSnapshot }
@@ -108,8 +90,6 @@ export { QueryPartition }
export { QuerySnapshot }
-export { ReadOnlyTransactionOptions }
-
export { ReadOptions }
export { setLogFunction }
@@ -122,16 +102,12 @@ export { Timestamp }
export { Transaction }
-export { UnionToIntersection }
-
export { UpdateData }
export { v1 }
export { WhereFilterOp }
-export { WithFieldValue }
-
export { WriteBatch }
export { WriteResult }
diff --git a/package-lock.json b/package-lock.json
index 5f2771d587..f254a39564 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -590,9 +590,9 @@
}
},
"@google-cloud/firestore": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-5.0.2.tgz",
- "integrity": "sha512-xlGcNYaW0nvUMzNn2+pLfbEBVt6oysVqtM89faMgZWkWfEtvIQGS0h5PRdLlcqufNzRCX3yIGv29Pb+03ys+VA==",
+ "version": "4.15.1",
+ "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.15.1.tgz",
+ "integrity": "sha512-2PWsCkEF1W02QbghSeRsNdYKN1qavrHBP3m72gPDMHQSYrGULOaTi7fSJquQmAtc4iPVB2/x6h80rdLHTATQtA==",
"optional": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -9378,9 +9378,9 @@
}
},
"typescript": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
- "integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
+ "version": "3.9.10",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
+ "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
"dev": true
},
"unbox-primitive": {
diff --git a/package.json b/package.json
index 36971927a2..b9b49b5b85 100644
--- a/package.json
+++ b/package.json
@@ -168,7 +168,7 @@
"node-forge": "^1.0.0"
},
"optionalDependencies": {
- "@google-cloud/firestore": "^5.0.1",
+ "@google-cloud/firestore": "^4.5.0",
"@google-cloud/storage": "^5.3.0"
},
"devDependencies": {
@@ -218,7 +218,7 @@
"sinon": "^9.0.0",
"sinon-chai": "^3.0.0",
"ts-node": "^10.2.0",
- "typescript": "^4.4.3",
+ "typescript": "^3.7.3",
"yargs": "^17.0.1"
}
}
diff --git a/src/firestore/firestore-namespace.ts b/src/firestore/firestore-namespace.ts
index a6ccc5c1d7..8fcdc43b00 100644
--- a/src/firestore/firestore-namespace.ts
+++ b/src/firestore/firestore-namespace.ts
@@ -57,14 +57,6 @@ export namespace firestore {
export import WhereFilterOp = _firestore.WhereFilterOp;
export import WriteBatch = _firestore.WriteBatch;
export import WriteResult = _firestore.WriteResult;
- export import PartialWithFieldValue = _firestore.PartialWithFieldValue;
- export import WithFieldValue = _firestore.WithFieldValue;
- export import Primitive = _firestore.Primitive;
- export import NestedUpdateFields = _firestore.NestedUpdateFields;
- export import ChildUpdateFields = _firestore.ChildUpdateFields;
- export import AddPrefixToKeys = _firestore.AddPrefixToKeys;
- export import UnionToIntersection = _firestore.UnionToIntersection;
- export import ReadOnlyTransactionOptions = _firestore.ReadOnlyTransactionOptions;
export import setLogFunction = _firestore.setLogFunction;
}
diff --git a/src/firestore/index.ts b/src/firestore/index.ts
index 0f5dfc4ecd..305f5f9da8 100644
--- a/src/firestore/index.ts
+++ b/src/firestore/index.ts
@@ -26,11 +26,9 @@ import { FirebaseApp } from '../app/firebase-app';
import { FirestoreService } from './firestore-internal';
export {
- AddPrefixToKeys,
BulkWriter,
BulkWriterOptions,
BundleBuilder,
- ChildUpdateFields,
CollectionGroup,
CollectionReference,
DocumentChange,
@@ -44,25 +42,19 @@ export {
FirestoreDataConverter,
GeoPoint,
GrpcStatus,
- NestedUpdateFields,
OrderByDirection,
- PartialWithFieldValue,
Precondition,
- Primitive,
Query,
QueryDocumentSnapshot,
QueryPartition,
QuerySnapshot,
ReadOptions,
- ReadOnlyTransactionOptions,
Settings,
SetOptions,
Timestamp,
Transaction,
UpdateData,
- UnionToIntersection,
WhereFilterOp,
- WithFieldValue,
WriteBatch,
WriteResult,
v1,
diff --git a/test/integration/auth.spec.ts b/test/integration/auth.spec.ts
index c9054f1a2b..2308ca6879 100644
--- a/test/integration/auth.spec.ts
+++ b/test/integration/auth.spec.ts
@@ -1259,7 +1259,7 @@ describe('admin.auth', () => {
const actualTenantObj = actualTenant.toJSON();
if (authEmulatorHost) {
// Not supported in Auth Emulator
- delete (actualTenantObj as {testPhoneNumbers?: Record}).testPhoneNumbers;
+ delete (actualTenantObj as {testPhoneNumbers: Record}).testPhoneNumbers;
delete expectedCreatedTenant.testPhoneNumbers;
}
expect(actualTenantObj).to.deep.equal(expectedCreatedTenant);
@@ -1617,7 +1617,7 @@ describe('admin.auth', () => {
const actualTenantObj = actualTenant.toJSON();
if (authEmulatorHost) {
// Not supported in Auth Emulator
- delete (actualTenantObj as {testPhoneNumbers?: Record}).testPhoneNumbers;
+ delete (actualTenantObj as {testPhoneNumbers: Record}).testPhoneNumbers;
delete expectedCreatedTenant.testPhoneNumbers;
}
expect(actualTenantObj).to.deep.equal(expectedCreatedTenant);
@@ -1649,7 +1649,7 @@ describe('admin.auth', () => {
.then((actualTenant) => {
const actualTenantObj = actualTenant.toJSON();
// Not supported in Auth Emulator
- delete (actualTenantObj as {testPhoneNumbers?: Record}).testPhoneNumbers;
+ delete (actualTenantObj as {testPhoneNumbers: Record}).testPhoneNumbers;
delete expectedUpdatedTenant.testPhoneNumbers;
expect(actualTenantObj).to.deep.equal(expectedUpdatedTenant);
return getAuth().tenantManager().updateTenant(createdTenantId, updatedOptions2);
@@ -1657,7 +1657,7 @@ describe('admin.auth', () => {
.then((actualTenant) => {
const actualTenantObj = actualTenant.toJSON();
// Not supported in Auth Emulator
- delete (actualTenantObj as {testPhoneNumbers?: Record}).testPhoneNumbers;
+ delete (actualTenantObj as {testPhoneNumbers: Record}).testPhoneNumbers;
delete expectedUpdatedTenant2.testPhoneNumbers;
expect(actualTenantObj).to.deep.equal(expectedUpdatedTenant2);
});
@@ -2150,8 +2150,8 @@ describe('admin.auth', () => {
// Not supported in ID token,
delete decodedIdToken.nonce;
// exp and iat may vary depending on network connection latency.
- delete (decodedIdToken as any).exp;
- delete (decodedIdToken as any).iat;
+ delete decodedIdToken.exp;
+ delete decodedIdToken.iat;
expect(decodedIdToken).to.deep.equal(payloadClaims);
});
});
diff --git a/test/integration/postcheck/package.json b/test/integration/postcheck/package.json
index 6345381702..854c355a68 100644
--- a/test/integration/postcheck/package.json
+++ b/test/integration/postcheck/package.json
@@ -10,7 +10,7 @@
"devDependencies": {
"@types/chai": "^4.0.0",
"@types/mocha": "^2.2.48",
- "@types/node": "^10.10.0",
+ "@types/node": ">=12.12.47",
"chai": "^4.2.0",
"mocha": "^8.0.0",
"ts-node": "^9.0.0",
diff --git a/test/unit/auth/tenant.spec.ts b/test/unit/auth/tenant.spec.ts
index 3843a41bb7..0f14856faa 100644
--- a/test/unit/auth/tenant.spec.ts
+++ b/test/unit/auth/tenant.spec.ts
@@ -86,7 +86,7 @@ describe('Tenant', () => {
it('should return the expected server request without multi-factor and phone config', () => {
const tenantOptionsClientRequest = deepCopy(clientRequestWithoutMfa);
const tenantOptionsServerRequest = deepCopy(serverRequestWithoutMfa);
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
expect(Tenant.buildServerRequest(tenantOptionsClientRequest, !createRequest))
.to.deep.equal(tenantOptionsServerRequest);
});
@@ -94,7 +94,7 @@ describe('Tenant', () => {
it('should return the expected server request with multi-factor and phone config', () => {
const tenantOptionsClientRequest = deepCopy(clientRequest);
const tenantOptionsServerRequest = deepCopy(serverRequest);
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
expect(Tenant.buildServerRequest(tenantOptionsClientRequest, !createRequest))
.to.deep.equal(tenantOptionsServerRequest);
});
@@ -134,7 +134,7 @@ describe('Tenant', () => {
const tenantOptionsClientRequest = deepCopy(clientRequest);
const tenantOptionsServerRequest = deepCopy(serverRequest);
tenantOptionsClientRequest.testPhoneNumbers = null;
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
tenantOptionsServerRequest.testPhoneNumbers = {};
expect(Tenant.buildServerRequest(tenantOptionsClientRequest, !createRequest))
@@ -181,7 +181,7 @@ describe('Tenant', () => {
it('should return the expected server request without multi-factor and phone config', () => {
const tenantOptionsClientRequest: CreateTenantRequest = deepCopy(clientRequestWithoutMfa);
const tenantOptionsServerRequest: TenantServerResponse = deepCopy(serverRequestWithoutMfa);
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
expect(Tenant.buildServerRequest(tenantOptionsClientRequest, createRequest))
.to.deep.equal(tenantOptionsServerRequest);
@@ -190,7 +190,7 @@ describe('Tenant', () => {
it('should return the expected server request with multi-factor and phone config', () => {
const tenantOptionsClientRequest: CreateTenantRequest = deepCopy(clientRequest);
const tenantOptionsServerRequest: TenantServerResponse = deepCopy(serverRequest);
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
expect(Tenant.buildServerRequest(tenantOptionsClientRequest, createRequest))
.to.deep.equal(tenantOptionsServerRequest);
@@ -224,7 +224,7 @@ describe('Tenant', () => {
const tenantOptionsClientRequest = deepCopy(clientRequest);
const tenantOptionsServerRequest = deepCopy(serverRequest);
tenantOptionsClientRequest.testPhoneNumbers = null;
- delete (tenantOptionsServerRequest as any).name;
+ delete tenantOptionsServerRequest.name;
tenantOptionsServerRequest.testPhoneNumbers = {};
expect(() => {
diff --git a/test/unit/security-rules/security-rules.spec.ts b/test/unit/security-rules/security-rules.spec.ts
index 380583d4cd..70611d7db5 100644
--- a/test/unit/security-rules/security-rules.spec.ts
+++ b/test/unit/security-rules/security-rules.spec.ts
@@ -825,7 +825,7 @@ describe('SecurityRules', () => {
it('should resolve with RulesetMetadataList when the response contains no page token', () => {
const response = deepCopy(LIST_RULESETS_RESPONSE);
- delete (response as any).nextPageToken;
+ delete response.nextPageToken;
const stub = sinon
.stub(SecurityRulesApiClient.prototype, 'listRulesets')
.resolves(response);