From 81f3b2931a7c7361c0b2a5012a2257039e628c1e Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 19:07:25 -0400 Subject: [PATCH 1/7] Fix array-contains --- packages/firestore/src/remote/serializer.ts | 2 +- .../test/unit/remote/node/serializer.test.ts | 35 ++++++++++++++----- .../test/unit/specs/listen_spec.test.ts | 20 +++++++++++ 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/packages/firestore/src/remote/serializer.ts b/packages/firestore/src/remote/serializer.ts index bb864ad1572..8b6481ad5ce 100644 --- a/packages/firestore/src/remote/serializer.ts +++ b/packages/firestore/src/remote/serializer.ts @@ -1282,7 +1282,7 @@ export class JsonProtoSerializer { } fromFieldFilter(filter: api.Filter): Filter { - return new FieldFilter( + return Filter.create( this.fromFieldPathReference(filter.fieldFilter!.field!), this.fromOperatorName(filter.fieldFilter!.op!), this.fromValue(filter.fieldFilter!.value!) diff --git a/packages/firestore/test/unit/remote/node/serializer.test.ts b/packages/firestore/test/unit/remote/node/serializer.test.ts index 146d6aaaeed..f8f28055030 100644 --- a/packages/firestore/test/unit/remote/node/serializer.test.ts +++ b/packages/firestore/test/unit/remote/node/serializer.test.ts @@ -25,6 +25,9 @@ import { GeoPoint } from '../../../../src/api/geo_point'; import { Timestamp } from '../../../../src/api/timestamp'; import { DatabaseId } from '../../../../src/core/database_info'; import { + ArrayContainsAnyFilter, + ArrayContainsFilter, + InFilter, Direction, FieldFilter, Operator, @@ -693,7 +696,9 @@ describe('Serializer', () => { value: { stringValue: 'food' } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(FieldFilter); }); it('converts LessThan', () => { @@ -706,7 +711,9 @@ describe('Serializer', () => { value: { integerValue: '42' } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(FieldFilter); }); it('converts LessThanOrEqual', () => { @@ -719,7 +726,9 @@ describe('Serializer', () => { value: { stringValue: 'food' } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(FieldFilter); }); it('converts GreaterThan', () => { @@ -732,7 +741,9 @@ describe('Serializer', () => { value: { booleanValue: false } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(FieldFilter); }); it('converts GreaterThanOrEqual', () => { @@ -745,7 +756,9 @@ describe('Serializer', () => { value: { doubleValue: 1e100 } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(FieldFilter); }); it('converts array-contains', () => { @@ -758,7 +771,9 @@ describe('Serializer', () => { value: { integerValue: '42' } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(ArrayContainsFilter); }); it('converts IN', () => { @@ -779,7 +794,9 @@ describe('Serializer', () => { } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(InFilter); }); it('converts array-contains-any', () => { @@ -800,7 +817,9 @@ describe('Serializer', () => { } } }); - expect(s.fromFieldFilter(actual)).to.deep.equal(input); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(ArrayContainsAnyFilter); }); }); diff --git a/packages/firestore/test/unit/specs/listen_spec.test.ts b/packages/firestore/test/unit/specs/listen_spec.test.ts index d706ba00867..c4fe6104721 100644 --- a/packages/firestore/test/unit/specs/listen_spec.test.ts +++ b/packages/firestore/test/unit/specs/listen_spec.test.ts @@ -607,6 +607,26 @@ describeSpec('Listens:', [], () => { .expectEvents(query, {}); }); + specTest('Array-contains queries support resuming', [], () => { + const query = Query.atPath(path('collection')).addFilter(filter('array', 'array-contains', 42)); + const docA = doc('collection/a', 2000, { foo: 'bar', array: [1, 42, 3] }); + return spec() + .withGCEnabled(false) + .userListens(query) + .watchAcksFull(query, 1000) + .expectEvents(query, {}) + .watchSends({ affects: [query] }, docA) + .watchSnapshots(2000, [query], 'resume-token-2000') + .watchSnapshots(2000) + .expectEvents(query, { added: [docA] }) + .userUnlistens(query) + .watchRemoves(query) + .userListens(query, 'resume-token-2000') + .expectEvents(query, { added: [docA], fromCache: true }) + .watchAcksFull(query, 3000) + .expectEvents(query, {}); + }); + specTest('Persists global resume tokens on unlisten', [], () => { const query = Query.atPath(path('collection')); const docA = doc('collection/a', 1000, { key: 'a' }); From e2ac222f2477db943e7694ff02de8ec791d4e399 Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 19:07:39 -0400 Subject: [PATCH 2/7] [AUTOMATED]: Prettier Code Styling --- commits.txt | 26 +++++++++++++++ .../test/unit/specs/listen_spec.test.ts | 4 ++- repro/.firebaserc | 5 +++ repro/firebase.json | 6 ++++ repro/firestore.indexes.json | 14 ++++++++ repro/firestore.rules | 7 ++++ repro/index.html | 32 +++++++++++++++++++ 7 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 commits.txt create mode 100644 repro/.firebaserc create mode 100644 repro/firebase.json create mode 100644 repro/firestore.indexes.json create mode 100644 repro/firestore.rules create mode 100644 repro/index.html diff --git a/commits.txt b/commits.txt new file mode 100644 index 00000000000..b49859a864e --- /dev/null +++ b/commits.txt @@ -0,0 +1,26 @@ +a6b81804b00002e78cad267fbb8a215c2a06a9f9 Publish firebase@6.2.2 +cbdc78984495d4e07af94d675e6807edae44b467 Roll back import of newer AsyncStorage (#1902) +74a397afa3ef6509fb8bc8850b3bbd6c1220ea18 Refactor Filters (#1894) +3caea2bf50f570ea1b03a99e72cad00bf6cc49b2 Merge branch 'release' Release 6.2.1 +6ec76614a16a70c75a93cfb8494ee99234f7b849 enable eslint for Storage (#1850) +32cb0e121254cce2d626f713b3875bf8f79c288b Make IOS_INDEXEDDB_BUG1 error more prominent when it happens (so it shows up in the error surfaced repeatedly by the AsyncQueue). (#1896) +7a52f753c94d326e690ccafed48d82c8959dcf72 Fix the implementation of Bound.isEqual (#1893) +ae2698f3e8f4e6ae3f464d6d071b2ef6c624da33 Update Fireperf HttpMethod from hardcoded value '1' to networkRequest object value. (#1887) + +6ae2cbfa9f7711d6643cfeac648408d772b5e211 Publish firebase@6.2.1 +5856b9d60ea6c98b5f534a1893572d8437c04a43 Update React Native AsyncStorage import (#1879) +dce78ca0899e9fbbef208047622e0afb1045f267 Fix a few linter issues (#1892) +7866e2235998de53458c11a063c0fc588d982ae1 Enable noImplicitAny Typescript compiler flag (#1862) +9f109f85ad0d99f6c13e68dcb549a0b852e35a2a enable eslint for functions (#1864) +1804b1d920a99170acce981098e5a4eedcedface enable eslint for installations (#1877) +ba19625aa16f1ae21e6196b4e74ef753c5920073 Merge with firebase 6.2.0 +c55d1e9e269db59a74ea745e8744e8c33d57c007 Check that self.firebase is not undefined (#1868) +fb45cd65e27ec858ca7170d5d8a9f47f49a70dcd Upgrade faye-websocket from 0.11.1 to 0.11.3 (#1880) +5511cbd6c2659868bae524209a833b6894ddc8c9 add code fonts (#1871) +b91f690d83aba450697e5c73ea5523fcf1d58b83 Fix storage Reference.put param type (#1876) +9678bf9a5692b0a33822cfdef27ddb27834cebb2 Add IN and ARRAY_CONTAINS_ANY (not publicly exposed) (#1843) +dd098c6a87f23ddf54a7f9b21b87f7bb3fd56bdd Migrate messaging to eslint (#1872) +fd5a31a6bba01b79f9fd269c96926c8aa6248701 Generate a new token after getId calls if there is no valid token (#1869) +99e6cc8267d4eea4b2893a45d097c6cb20eddd15 Add support for running Firestore integration tests against the emulator (#1851) +3f2c7bf8a08978bea065ac1706af016e8646f234 Check that window is complete in BrowserConnectivityMonitor (#1870) +73f10767a8473468aa6fb6300abe93f998b59ecf Minor style changes for a RTDB comment block (#1857) diff --git a/packages/firestore/test/unit/specs/listen_spec.test.ts b/packages/firestore/test/unit/specs/listen_spec.test.ts index c4fe6104721..d02de62d35b 100644 --- a/packages/firestore/test/unit/specs/listen_spec.test.ts +++ b/packages/firestore/test/unit/specs/listen_spec.test.ts @@ -608,7 +608,9 @@ describeSpec('Listens:', [], () => { }); specTest('Array-contains queries support resuming', [], () => { - const query = Query.atPath(path('collection')).addFilter(filter('array', 'array-contains', 42)); + const query = Query.atPath(path('collection')).addFilter( + filter('array', 'array-contains', 42) + ); const docA = doc('collection/a', 2000, { foo: 'bar', array: [1, 42, 3] }); return spec() .withGCEnabled(false) diff --git a/repro/.firebaserc b/repro/.firebaserc new file mode 100644 index 00000000000..e3771b198d0 --- /dev/null +++ b/repro/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "varconst-11-a51fd" + } +} diff --git a/repro/firebase.json b/repro/firebase.json new file mode 100644 index 00000000000..d4d918a83f2 --- /dev/null +++ b/repro/firebase.json @@ -0,0 +1,6 @@ +{ + "firestore": { + "rules": "firestore.rules", + "indexes": "firestore.indexes.json" + } +} diff --git a/repro/firestore.indexes.json b/repro/firestore.indexes.json new file mode 100644 index 00000000000..2a6adac181a --- /dev/null +++ b/repro/firestore.indexes.json @@ -0,0 +1,14 @@ +{ + // Example: + // + // "indexes": [ + // { + // "collectionId": "widgets", + // "fields": [ + // { "fieldPath": "foo", "mode": "ASCENDING" }, + // { "fieldPath": "bar", "mode": "DESCENDING" } + // ] + // } + // ] + "indexes": [] +} \ No newline at end of file diff --git a/repro/firestore.rules b/repro/firestore.rules new file mode 100644 index 00000000000..31eda1745ae --- /dev/null +++ b/repro/firestore.rules @@ -0,0 +1,7 @@ +service cloud.firestore { + match /databases/{database}/documents { + match /{document=**} { + allow read, write; + } + } +} diff --git a/repro/index.html b/repro/index.html new file mode 100644 index 00000000000..1143e6f3496 --- /dev/null +++ b/repro/index.html @@ -0,0 +1,32 @@ + + + + From f415822ac3490c9810ec26291a1fa06e1e1179ba Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 20:13:54 -0400 Subject: [PATCH 3/7] Review feedback --- packages/firestore/src/api/database.ts | 2 +- packages/firestore/src/core/query.ts | 104 +++++++++--------- packages/firestore/src/remote/serializer.ts | 6 +- .../test/unit/remote/node/serializer.test.ts | 18 ++- packages/firestore/test/util/helpers.ts | 2 +- 5 files changed, 74 insertions(+), 58 deletions(-) diff --git a/packages/firestore/src/api/database.ts b/packages/firestore/src/api/database.ts index 0dd4458e560..8b2e4410050 100644 --- a/packages/firestore/src/api/database.ts +++ b/packages/firestore/src/api/database.ts @@ -1515,7 +1515,7 @@ export class Query implements firestore.Query { value ); } - const filter = Filter.create(fieldPath, operator, fieldValue); + const filter = FieldFilter.create(fieldPath, operator, fieldValue); this.validateNewFilter(filter); return new Query(this._query.addFilter(filter), this.firestore); } diff --git a/packages/firestore/src/core/query.ts b/packages/firestore/src/core/query.ts index dfb44a053db..712123f522c 100644 --- a/packages/firestore/src/core/query.ts +++ b/packages/firestore/src/core/query.ts @@ -443,57 +443,6 @@ export abstract class Filter { abstract matches(doc: Document): boolean; abstract canonicalId(): string; abstract isEqual(filter: Filter): boolean; - - /** - * Creates a filter based on the provided arguments. - */ - static create(field: FieldPath, op: Operator, value: FieldValue): Filter { - if (field.isKeyField()) { - assert( - value instanceof RefValue, - 'Comparing on key, but filter value not a RefValue' - ); - assert( - op !== Operator.ARRAY_CONTAINS && - op !== Operator.ARRAY_CONTAINS_ANY && - op !== Operator.IN, - `'${op.toString()}' queries don't make sense on document keys.` - ); - return new KeyFieldFilter(field, op, value as RefValue); - } else if (value.isEqual(NullValue.INSTANCE)) { - if (op !== Operator.EQUAL) { - throw new FirestoreError( - Code.INVALID_ARGUMENT, - 'Invalid query. You can only perform equals comparisons on null.' - ); - } - return new FieldFilter(field, op, value); - } else if (value.isEqual(DoubleValue.NAN)) { - if (op !== Operator.EQUAL) { - throw new FirestoreError( - Code.INVALID_ARGUMENT, - 'Invalid query. You can only perform equals comparisons on NaN.' - ); - } - return new FieldFilter(field, op, value); - } else if (op === Operator.ARRAY_CONTAINS) { - return new ArrayContainsFilter(field, value); - } else if (op === Operator.IN) { - assert( - value instanceof ArrayValue, - 'IN filter has invalid value: ' + value.toString() - ); - return new InFilter(field, value as ArrayValue); - } else if (op === Operator.ARRAY_CONTAINS_ANY) { - assert( - value instanceof ArrayValue, - 'ARRAY_CONTAINS_ANY filter has invalid value: ' + value.toString() - ); - return new ArrayContainsAnyFilter(field, value as ArrayValue); - } else { - return new FieldFilter(field, op, value); - } - } } export class Operator { @@ -541,7 +490,7 @@ export class Operator { } export class FieldFilter extends Filter { - constructor( + protected constructor( public field: FieldPath, public op: Operator, public value: FieldValue @@ -549,6 +498,57 @@ export class FieldFilter extends Filter { super(); } + /** + * Creates a filter based on the provided arguments. + */ + static create(field: FieldPath, op: Operator, value: FieldValue): FieldFilter { + if (field.isKeyField()) { + assert( + value instanceof RefValue, + 'Comparing on key, but filter value not a RefValue' + ); + assert( + op !== Operator.ARRAY_CONTAINS && + op !== Operator.ARRAY_CONTAINS_ANY && + op !== Operator.IN, + `'${op.toString()}' queries don't make sense on document keys.` + ); + return new KeyFieldFilter(field, op, value as RefValue); + } else if (value.isEqual(NullValue.INSTANCE)) { + if (op !== Operator.EQUAL) { + throw new FirestoreError( + Code.INVALID_ARGUMENT, + 'Invalid query. You can only perform equals comparisons on null.' + ); + } + return new FieldFilter(field, op, value); + } else if (value.isEqual(DoubleValue.NAN)) { + if (op !== Operator.EQUAL) { + throw new FirestoreError( + Code.INVALID_ARGUMENT, + 'Invalid query. You can only perform equals comparisons on NaN.' + ); + } + return new FieldFilter(field, op, value); + } else if (op === Operator.ARRAY_CONTAINS) { + return new ArrayContainsFilter(field, value); + } else if (op === Operator.IN) { + assert( + value instanceof ArrayValue, + 'IN filter has invalid value: ' + value.toString() + ); + return new InFilter(field, value as ArrayValue); + } else if (op === Operator.ARRAY_CONTAINS_ANY) { + assert( + value instanceof ArrayValue, + 'ARRAY_CONTAINS_ANY filter has invalid value: ' + value.toString() + ); + return new ArrayContainsAnyFilter(field, value as ArrayValue); + } else { + return new FieldFilter(field, op, value); + } + } + matches(doc: Document): boolean { const other = doc.field(this.field); diff --git a/packages/firestore/src/remote/serializer.ts b/packages/firestore/src/remote/serializer.ts index 8b6481ad5ce..31cd5095e42 100644 --- a/packages/firestore/src/remote/serializer.ts +++ b/packages/firestore/src/remote/serializer.ts @@ -1282,7 +1282,7 @@ export class JsonProtoSerializer { } fromFieldFilter(filter: api.Filter): Filter { - return Filter.create( + return FieldFilter.create( this.fromFieldPathReference(filter.fieldFilter!.field!), this.fromOperatorName(filter.fieldFilter!.op!), this.fromValue(filter.fieldFilter!.value!) @@ -1323,12 +1323,12 @@ export class JsonProtoSerializer { const nanField = this.fromFieldPathReference( filter.unaryFilter!.field! ); - return new FieldFilter(nanField, Operator.EQUAL, DoubleValue.NAN); + return FieldFilter.create(nanField, Operator.EQUAL, DoubleValue.NAN); case 'IS_NULL': const nullField = this.fromFieldPathReference( filter.unaryFilter!.field! ); - return new FieldFilter(nullField, Operator.EQUAL, NullValue.INSTANCE); + return FieldFilter.create(nullField, Operator.EQUAL, NullValue.INSTANCE); case 'OPERATOR_UNSPECIFIED': return fail('Unspecified filter'); default: diff --git a/packages/firestore/test/unit/remote/node/serializer.test.ts b/packages/firestore/test/unit/remote/node/serializer.test.ts index f8f28055030..e57e43cd02a 100644 --- a/packages/firestore/test/unit/remote/node/serializer.test.ts +++ b/packages/firestore/test/unit/remote/node/serializer.test.ts @@ -30,6 +30,7 @@ import { InFilter, Direction, FieldFilter, + KeyFieldFilter, Operator, OrderBy, Query @@ -687,7 +688,7 @@ describe('Serializer', () => { it('makes dotted-property names', () => { const path = new FieldPath(['item', 'part', 'top']); - const input = new FieldFilter(path, Operator.EQUAL, wrap('food')); + const input = FieldFilter.create(path, Operator.EQUAL, wrap('food')); const actual = s.toUnaryOrFieldFilter(input); expect(actual).to.deep.equal({ fieldFilter: { @@ -761,6 +762,21 @@ describe('Serializer', () => { expect(roundtripped).to.be.instanceof(FieldFilter); }); + it('converts key field', () => { + const input = filter(DOCUMENT_KEY_NAME, '==', ref('project/database', 'coll/doc')); + const actual = s.toUnaryOrFieldFilter(input); + expect(actual).to.deep.equal({ + fieldFilter: { + field: { fieldPath: '__name__' }, + op: 'EQUAL', + value: { referenceValue: 'projects/project/databases/database/documents/coll/doc' } + } + }); + const roundtripped = s.fromFieldFilter(actual); + expect(roundtripped).to.deep.equal(input); + expect(roundtripped).to.be.instanceof(KeyFieldFilter); + }); + it('converts array-contains', () => { const input = filter('field', 'array-contains', 42); const actual = s.toUnaryOrFieldFilter(input); diff --git a/packages/firestore/test/util/helpers.ts b/packages/firestore/test/util/helpers.ts index d03c7276f59..ac2963be6c0 100644 --- a/packages/firestore/test/util/helpers.ts +++ b/packages/firestore/test/util/helpers.ts @@ -190,7 +190,7 @@ export function blob(...bytes: number[]): Blob { export function filter(path: string, op: string, value: unknown): FieldFilter { const dataValue = wrap(value); const operator = Operator.fromString(op); - const filter = Filter.create(field(path), operator, dataValue); + const filter = FieldFilter.create(field(path), operator, dataValue); if (filter instanceof FieldFilter) { return filter; From a84e4de5bf87930641583ae4b9a1cff4b2367cc6 Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 20:14:04 -0400 Subject: [PATCH 4/7] [AUTOMATED]: Prettier Code Styling --- packages/firestore/src/core/query.ts | 6 +++++- packages/firestore/src/remote/serializer.ts | 6 +++++- .../test/unit/remote/node/serializer.test.ts | 11 +++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/firestore/src/core/query.ts b/packages/firestore/src/core/query.ts index 712123f522c..221803bb95f 100644 --- a/packages/firestore/src/core/query.ts +++ b/packages/firestore/src/core/query.ts @@ -501,7 +501,11 @@ export class FieldFilter extends Filter { /** * Creates a filter based on the provided arguments. */ - static create(field: FieldPath, op: Operator, value: FieldValue): FieldFilter { + static create( + field: FieldPath, + op: Operator, + value: FieldValue + ): FieldFilter { if (field.isKeyField()) { assert( value instanceof RefValue, diff --git a/packages/firestore/src/remote/serializer.ts b/packages/firestore/src/remote/serializer.ts index 31cd5095e42..307b84bab9e 100644 --- a/packages/firestore/src/remote/serializer.ts +++ b/packages/firestore/src/remote/serializer.ts @@ -1328,7 +1328,11 @@ export class JsonProtoSerializer { const nullField = this.fromFieldPathReference( filter.unaryFilter!.field! ); - return FieldFilter.create(nullField, Operator.EQUAL, NullValue.INSTANCE); + return FieldFilter.create( + nullField, + Operator.EQUAL, + NullValue.INSTANCE + ); case 'OPERATOR_UNSPECIFIED': return fail('Unspecified filter'); default: diff --git a/packages/firestore/test/unit/remote/node/serializer.test.ts b/packages/firestore/test/unit/remote/node/serializer.test.ts index e57e43cd02a..eb846a73f81 100644 --- a/packages/firestore/test/unit/remote/node/serializer.test.ts +++ b/packages/firestore/test/unit/remote/node/serializer.test.ts @@ -763,13 +763,20 @@ describe('Serializer', () => { }); it('converts key field', () => { - const input = filter(DOCUMENT_KEY_NAME, '==', ref('project/database', 'coll/doc')); + const input = filter( + DOCUMENT_KEY_NAME, + '==', + ref('project/database', 'coll/doc') + ); const actual = s.toUnaryOrFieldFilter(input); expect(actual).to.deep.equal({ fieldFilter: { field: { fieldPath: '__name__' }, op: 'EQUAL', - value: { referenceValue: 'projects/project/databases/database/documents/coll/doc' } + value: { + referenceValue: + 'projects/project/databases/database/documents/coll/doc' + } } }); const roundtripped = s.fromFieldFilter(actual); From ec32b9d2c1337e9cbdac9e1a9481141fea6eb764 Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 20:18:15 -0400 Subject: [PATCH 5/7] Remove accidental --- commits.txt | 26 -------------------------- repro/.firebaserc | 5 ----- repro/firebase.json | 6 ------ repro/firestore.indexes.json | 14 -------------- repro/firestore.rules | 7 ------- repro/index.html | 32 -------------------------------- 6 files changed, 90 deletions(-) delete mode 100644 commits.txt delete mode 100644 repro/.firebaserc delete mode 100644 repro/firebase.json delete mode 100644 repro/firestore.indexes.json delete mode 100644 repro/firestore.rules delete mode 100644 repro/index.html diff --git a/commits.txt b/commits.txt deleted file mode 100644 index b49859a864e..00000000000 --- a/commits.txt +++ /dev/null @@ -1,26 +0,0 @@ -a6b81804b00002e78cad267fbb8a215c2a06a9f9 Publish firebase@6.2.2 -cbdc78984495d4e07af94d675e6807edae44b467 Roll back import of newer AsyncStorage (#1902) -74a397afa3ef6509fb8bc8850b3bbd6c1220ea18 Refactor Filters (#1894) -3caea2bf50f570ea1b03a99e72cad00bf6cc49b2 Merge branch 'release' Release 6.2.1 -6ec76614a16a70c75a93cfb8494ee99234f7b849 enable eslint for Storage (#1850) -32cb0e121254cce2d626f713b3875bf8f79c288b Make IOS_INDEXEDDB_BUG1 error more prominent when it happens (so it shows up in the error surfaced repeatedly by the AsyncQueue). (#1896) -7a52f753c94d326e690ccafed48d82c8959dcf72 Fix the implementation of Bound.isEqual (#1893) -ae2698f3e8f4e6ae3f464d6d071b2ef6c624da33 Update Fireperf HttpMethod from hardcoded value '1' to networkRequest object value. (#1887) - -6ae2cbfa9f7711d6643cfeac648408d772b5e211 Publish firebase@6.2.1 -5856b9d60ea6c98b5f534a1893572d8437c04a43 Update React Native AsyncStorage import (#1879) -dce78ca0899e9fbbef208047622e0afb1045f267 Fix a few linter issues (#1892) -7866e2235998de53458c11a063c0fc588d982ae1 Enable noImplicitAny Typescript compiler flag (#1862) -9f109f85ad0d99f6c13e68dcb549a0b852e35a2a enable eslint for functions (#1864) -1804b1d920a99170acce981098e5a4eedcedface enable eslint for installations (#1877) -ba19625aa16f1ae21e6196b4e74ef753c5920073 Merge with firebase 6.2.0 -c55d1e9e269db59a74ea745e8744e8c33d57c007 Check that self.firebase is not undefined (#1868) -fb45cd65e27ec858ca7170d5d8a9f47f49a70dcd Upgrade faye-websocket from 0.11.1 to 0.11.3 (#1880) -5511cbd6c2659868bae524209a833b6894ddc8c9 add code fonts (#1871) -b91f690d83aba450697e5c73ea5523fcf1d58b83 Fix storage Reference.put param type (#1876) -9678bf9a5692b0a33822cfdef27ddb27834cebb2 Add IN and ARRAY_CONTAINS_ANY (not publicly exposed) (#1843) -dd098c6a87f23ddf54a7f9b21b87f7bb3fd56bdd Migrate messaging to eslint (#1872) -fd5a31a6bba01b79f9fd269c96926c8aa6248701 Generate a new token after getId calls if there is no valid token (#1869) -99e6cc8267d4eea4b2893a45d097c6cb20eddd15 Add support for running Firestore integration tests against the emulator (#1851) -3f2c7bf8a08978bea065ac1706af016e8646f234 Check that window is complete in BrowserConnectivityMonitor (#1870) -73f10767a8473468aa6fb6300abe93f998b59ecf Minor style changes for a RTDB comment block (#1857) diff --git a/repro/.firebaserc b/repro/.firebaserc deleted file mode 100644 index e3771b198d0..00000000000 --- a/repro/.firebaserc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "projects": { - "default": "varconst-11-a51fd" - } -} diff --git a/repro/firebase.json b/repro/firebase.json deleted file mode 100644 index d4d918a83f2..00000000000 --- a/repro/firebase.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "firestore": { - "rules": "firestore.rules", - "indexes": "firestore.indexes.json" - } -} diff --git a/repro/firestore.indexes.json b/repro/firestore.indexes.json deleted file mode 100644 index 2a6adac181a..00000000000 --- a/repro/firestore.indexes.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - // Example: - // - // "indexes": [ - // { - // "collectionId": "widgets", - // "fields": [ - // { "fieldPath": "foo", "mode": "ASCENDING" }, - // { "fieldPath": "bar", "mode": "DESCENDING" } - // ] - // } - // ] - "indexes": [] -} \ No newline at end of file diff --git a/repro/firestore.rules b/repro/firestore.rules deleted file mode 100644 index 31eda1745ae..00000000000 --- a/repro/firestore.rules +++ /dev/null @@ -1,7 +0,0 @@ -service cloud.firestore { - match /databases/{database}/documents { - match /{document=**} { - allow read, write; - } - } -} diff --git a/repro/index.html b/repro/index.html deleted file mode 100644 index 1143e6f3496..00000000000 --- a/repro/index.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - From af30584308252025e7ba61147488df184f1d5afe Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 20:28:09 -0400 Subject: [PATCH 6/7] Appease linter --- packages/firestore/test/unit/remote/node/serializer.test.ts | 2 +- packages/firestore/test/util/helpers.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/firestore/test/unit/remote/node/serializer.test.ts b/packages/firestore/test/unit/remote/node/serializer.test.ts index eb846a73f81..eb3ca73b881 100644 --- a/packages/firestore/test/unit/remote/node/serializer.test.ts +++ b/packages/firestore/test/unit/remote/node/serializer.test.ts @@ -27,8 +27,8 @@ import { DatabaseId } from '../../../../src/core/database_info'; import { ArrayContainsAnyFilter, ArrayContainsFilter, - InFilter, Direction, + InFilter, FieldFilter, KeyFieldFilter, Operator, diff --git a/packages/firestore/test/util/helpers.ts b/packages/firestore/test/util/helpers.ts index ac2963be6c0..1deb75bb1f5 100644 --- a/packages/firestore/test/util/helpers.ts +++ b/packages/firestore/test/util/helpers.ts @@ -30,7 +30,6 @@ import { Bound, Direction, FieldFilter, - Filter, Operator, OrderBy } from '../../src/core/query'; From 4d3f1c05e86b47ddccc8f611f4ff186fbbc908b9 Mon Sep 17 00:00:00 2001 From: Konstantin Varlamov Date: Mon, 24 Jun 2019 20:43:15 -0400 Subject: [PATCH 7/7] Appease linter --- packages/firestore/test/unit/remote/node/serializer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firestore/test/unit/remote/node/serializer.test.ts b/packages/firestore/test/unit/remote/node/serializer.test.ts index eb3ca73b881..17917b9200d 100644 --- a/packages/firestore/test/unit/remote/node/serializer.test.ts +++ b/packages/firestore/test/unit/remote/node/serializer.test.ts @@ -28,8 +28,8 @@ import { ArrayContainsAnyFilter, ArrayContainsFilter, Direction, - InFilter, FieldFilter, + InFilter, KeyFieldFilter, Operator, OrderBy,