Skip to content

Commit a1f59fa

Browse files
feat: support array pipeline expression helpers
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 1583bd0 commit a1f59fa

4 files changed

Lines changed: 419 additions & 166 deletions

File tree

.github/scripts/compare-types/configs/firestore-pipelines.ts

Lines changed: 36 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -19,101 +19,62 @@
1919

2020
import type { PackageConfig } from '../src/types';
2121

22-
2322
const config: PackageConfig = {
2423
nameMapping: {},
2524
missingInRN: [
26-
{
27-
name: 'arrayIndexOf',
28-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
29-
},
30-
{
31-
name: 'arrayIndexOfAll',
32-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
33-
},
34-
{
35-
name: 'arrayLast',
36-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
37-
},
38-
{
39-
name: 'arrayLastIndexOf',
40-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
41-
},
42-
{
43-
name: 'arrayLastN',
44-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
45-
},
46-
{
47-
name: 'arrayMaximum',
48-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
49-
},
50-
{
51-
name: 'arrayMaximumN',
52-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
53-
},
54-
{
55-
name: 'arrayMinimum',
56-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
57-
},
58-
{
59-
name: 'arrayMinimumN',
60-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
61-
},
62-
{
63-
name: 'arraySlice',
64-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
65-
},
66-
{
67-
name: 'arrayTransform',
68-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
69-
},
70-
{
71-
name: 'arrayTransformWithIndex',
72-
reason: 'Newer firebase-js-sdk array expression helper not yet exposed by RN Firebase pipelines.',
73-
},
7425
{
7526
name: 'coalesce',
7627
reason: 'Newer firebase-js-sdk expression helper not yet exposed by RN Firebase pipelines.',
7728
},
7829
{
7930
name: 'currentDocument',
80-
reason: 'Newer firebase-js-sdk document expression helper not yet exposed by RN Firebase pipelines.',
31+
reason:
32+
'Newer firebase-js-sdk document expression helper not yet exposed by RN Firebase pipelines.',
8133
},
8234
{
8335
name: 'documentMatches',
84-
reason: 'Newer firebase-js-sdk document expression helper not yet exposed by RN Firebase pipelines.',
36+
reason:
37+
'Newer firebase-js-sdk document expression helper not yet exposed by RN Firebase pipelines.',
8538
},
8639
{
8740
name: 'geoDistance',
88-
reason: 'Newer firebase-js-sdk geospatial expression helper not yet exposed by RN Firebase pipelines.',
41+
reason:
42+
'Newer firebase-js-sdk geospatial expression helper not yet exposed by RN Firebase pipelines.',
8943
},
9044
{
9145
name: 'ifNull',
92-
reason: 'Newer firebase-js-sdk null-handling expression helper not yet exposed by RN Firebase pipelines.',
46+
reason:
47+
'Newer firebase-js-sdk null-handling expression helper not yet exposed by RN Firebase pipelines.',
9348
},
9449
{
9550
name: 'nor',
96-
reason: 'Newer firebase-js-sdk boolean expression helper not yet exposed by RN Firebase pipelines.',
51+
reason:
52+
'Newer firebase-js-sdk boolean expression helper not yet exposed by RN Firebase pipelines.',
9753
},
9854
{
9955
name: 'score',
100-
reason: 'Newer firebase-js-sdk search score expression helper not yet exposed by RN Firebase pipelines.',
56+
reason:
57+
'Newer firebase-js-sdk search score expression helper not yet exposed by RN Firebase pipelines.',
10158
},
10259
{
10360
name: 'subcollection',
104-
reason: 'Newer firebase-js-sdk subcollection stage helper not yet exposed by RN Firebase pipelines.',
61+
reason:
62+
'Newer firebase-js-sdk subcollection stage helper not yet exposed by RN Firebase pipelines.',
10563
},
10664
{
10765
name: 'switchOn',
108-
reason: 'Newer firebase-js-sdk conditional expression helper not yet exposed by RN Firebase pipelines.',
66+
reason:
67+
'Newer firebase-js-sdk conditional expression helper not yet exposed by RN Firebase pipelines.',
10968
},
11069
{
11170
name: 'timestampDiff',
112-
reason: 'Newer firebase-js-sdk timestamp expression helper not yet exposed by RN Firebase pipelines.',
71+
reason:
72+
'Newer firebase-js-sdk timestamp expression helper not yet exposed by RN Firebase pipelines.',
11373
},
11474
{
11575
name: 'timestampExtract',
116-
reason: 'Newer firebase-js-sdk timestamp expression helper not yet exposed by RN Firebase pipelines.',
76+
reason:
77+
'Newer firebase-js-sdk timestamp expression helper not yet exposed by RN Firebase pipelines.',
11778
},
11879
{
11980
name: 'DefineStageOptions',
@@ -125,15 +86,18 @@ const config: PackageConfig = {
12586
},
12687
{
12788
name: 'SearchStageOptions',
128-
reason: 'Newer firebase-js-sdk search stage options type not yet exposed by RN Firebase pipelines.',
89+
reason:
90+
'Newer firebase-js-sdk search stage options type not yet exposed by RN Firebase pipelines.',
12991
},
13092
{
13193
name: 'SubcollectionStageOptions',
132-
reason: 'Newer firebase-js-sdk subcollection stage options type not yet exposed by RN Firebase pipelines.',
94+
reason:
95+
'Newer firebase-js-sdk subcollection stage options type not yet exposed by RN Firebase pipelines.',
13396
},
13497
{
13598
name: 'TimePart',
136-
reason: 'Newer firebase-js-sdk timestamp extraction type not yet exposed by RN Firebase pipelines.',
99+
reason:
100+
'Newer firebase-js-sdk timestamp extraction type not yet exposed by RN Firebase pipelines.',
137101
},
138102
{
139103
name: 'TimeUnit',
@@ -143,25 +107,30 @@ const config: PackageConfig = {
143107
extraInRN: [
144108
{
145109
name: 'Type',
146-
reason: 'RN Firebase exposes a local type discriminator alias for pipeline expression helpers.',
110+
reason:
111+
'RN Firebase exposes a local type discriminator alias for pipeline expression helpers.',
147112
},
148113
],
149114
differentShape: [
150115
{
151116
name: 'isType',
152-
reason: 'RN Firebase accepts its local `Type` alias where the firebase-js-sdk declaration accepts a string.',
117+
reason:
118+
'RN Firebase accepts its local `Type` alias where the firebase-js-sdk declaration accepts a string.',
153119
},
154120
{
155121
name: 'ExpressionType',
156-
reason: 'RN Firebase has not yet exposed the newer firebase-js-sdk `PipelineValue` expression kind.',
122+
reason:
123+
'RN Firebase has not yet exposed the newer firebase-js-sdk `PipelineValue` expression kind.',
157124
},
158125
{
159126
name: 'StageOptions',
160-
reason: 'Declaration formatting differs for the raw options object, but the public shape is equivalent.',
127+
reason:
128+
'Declaration formatting differs for the raw options object, but the public shape is equivalent.',
161129
},
162130
{
163131
name: 'TimeGranularity',
164-
reason: 'RN Firebase uses the existing `isoWeek` and `isoYear` casing while the firebase-js-sdk declaration includes lowercase variants.',
132+
reason:
133+
'RN Firebase uses the existing `isoWeek` and `isoYear` casing while the firebase-js-sdk declaration includes lowercase variants.',
165134
},
166135
],
167136
};

0 commit comments

Comments
 (0)