Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
3b49905
wip: pipelines
MarkDuckworth Oct 14, 2024
a30f9ae
Fix circular deps
MarkDuckworth Oct 14, 2024
dbc7c12
Expose pipeline in lite-api
MarkDuckworth Oct 16, 2024
27213de
Refactoring to support lite-api
MarkDuckworth Oct 16, 2024
0676397
api-review folder updates
MarkDuckworth Oct 16, 2024
2cd396a
Adding missing protobufjs-cli
MarkDuckworth Oct 16, 2024
0c76ca0
Update API reports
MarkDuckworth Oct 16, 2024
5e9774b
fixes
MarkDuckworth Oct 16, 2024
22913b1
Merge branch 'markduckworth/ppl' of github.com:firebase/firebase-js-s…
MarkDuckworth Oct 16, 2024
2f3d48a
yarn.lock
MarkDuckworth Oct 16, 2024
076236e
Fixes. Passing integration tests.
MarkDuckworth Oct 28, 2024
8af0c57
Update API reports
MarkDuckworth Oct 28, 2024
57d1bf9
Move call to readUserData for code readability
MarkDuckworth Oct 29, 2024
022d276
Merge branch 'markduckworth/ppl' of github.com:firebase/firebase-js-s…
MarkDuckworth Oct 29, 2024
4f9a5fc
Made ProtoSerializable generic and used by Pipeline and Stage
MarkDuckworth Oct 29, 2024
6717ed4
Fixing build and lint issues
MarkDuckworth Oct 31, 2024
3ab4f5c
Update API reports
MarkDuckworth Oct 31, 2024
fc4f263
Merge branch 'main' of github.com:firebase/firebase-js-sdk into markd…
MarkDuckworth Oct 31, 2024
fd20eff
Adding new bundle size test
MarkDuckworth Oct 31, 2024
90a5e3c
experimentation with augmentation for ppl
MarkDuckworth Nov 4, 2024
585d52e
Update API reports
MarkDuckworth Nov 4, 2024
4b67f8a
Documentation and .d.ts improvements
MarkDuckworth Nov 5, 2024
26c76f3
Merge branch 'markduckworth/ppl-augment' of github.com:firebase/fireb…
MarkDuckworth Nov 5, 2024
ca0ffd9
Update API reports
MarkDuckworth Nov 5, 2024
2d386c8
Update the bundle definition for the pipeline bundle test
MarkDuckworth Nov 6, 2024
c621b81
Update the bundle definition adding a pipeline test with and function
MarkDuckworth Nov 6, 2024
773ab02
Typo
MarkDuckworth Nov 6, 2024
ad82093
Merge branch 'markduckworth/ppl-augment' of github.com:firebase/fireb…
MarkDuckworth Nov 6, 2024
682997d
And/or overloads. Pipeline serialization for console.
MarkDuckworth Nov 11, 2024
8eb9082
Cast Firestore
MarkDuckworth Nov 11, 2024
6a2abf3
And/or overloads
MarkDuckworth Nov 11, 2024
422cbd6
Update API reports
MarkDuckworth Nov 11, 2024
c78bae9
Fix and/or overloads
MarkDuckworth Nov 13, 2024
56c4e4a
Merge branch 'markduckworth/ppl-augment' of github.com:firebase/fireb…
MarkDuckworth Nov 13, 2024
bcfaf2a
Modular-style pipeline and execute methods for experimentation. Plus …
MarkDuckworth Nov 13, 2024
5425705
Update API reports
MarkDuckworth Nov 13, 2024
9a1ffa6
Merge branch 'console' of github.com:firebase/firebase-js-sdk into fe…
MarkDuckworth Nov 13, 2024
edc1ea5
Docgen
MarkDuckworth Nov 13, 2024
6859582
Merge branch 'feat/pipelines' of github.com:firebase/firebase-js-sdk …
MarkDuckworth Nov 13, 2024
9c4d556
license headers
MarkDuckworth Nov 13, 2024
1aef450
docgen
MarkDuckworth Nov 13, 2024
b20afe6
docs-devsite fix
MarkDuckworth Nov 13, 2024
877bf3c
Skipping pipeline tests for CI
MarkDuckworth Nov 13, 2024
1f7b071
Update API reports
MarkDuckworth Nov 13, 2024
d9b6e9a
reverting changes to docs-devsite
MarkDuckworth Nov 13, 2024
18e3477
Merge branch 'feat/pipelines' of github.com:firebase/firebase-js-sdk …
MarkDuckworth Nov 13, 2024
703b18f
revert and/or overloads
MarkDuckworth Nov 13, 2024
75e35c8
Update API reports
MarkDuckworth Nov 13, 2024
4bb953a
Fix bundle definition
MarkDuckworth Nov 15, 2024
8b6855c
Merge branch 'feat/pipelines' of github.com:firebase/firebase-js-sdk …
MarkDuckworth Nov 15, 2024
92c651f
Fix imports
MarkDuckworth Nov 15, 2024
cc3146c
Re-adding circular dependency check.
MarkDuckworth Nov 19, 2024
d2e8d60
Addressing review comments.
MarkDuckworth Nov 19, 2024
fafadbc
PPL to Console (#8638)
MarkDuckworth Nov 20, 2024
0750f35
Merge branch 'console' of github.com:firebase/firebase-js-sdk into fe…
MarkDuckworth Nov 20, 2024
ecd931d
New bundle analysis to evaluate useFirestorePipelines vs execute
MarkDuckworth Nov 25, 2024
63b8854
Fix build. Finish rename. Rename useFirestorePipelines to useFluentPi…
MarkDuckworth Nov 26, 2024
a9a0b82
Remove type references from the core Firestore API surface. This will…
MarkDuckworth Dec 10, 2024
df90a2e
Fixes for Constant.of(...) (#8677)
MarkDuckworth Dec 18, 2024
fb5df42
PPL multiple entry points (#8717)
MarkDuckworth Jan 27, 2025
09508e9
Merge branch 'main' of github.com:firebase/firebase-js-sdk into feat/…
MarkDuckworth Mar 12, 2025
d18310a
Markduckworth/ppl mep (#8801)
MarkDuckworth Mar 21, 2025
b180898
Port improved whereConditionsFromCursor from Android
MarkDuckworth Mar 26, 2025
6cc2ee6
Port improved whereConditionsFromCursor from Android (#8867)
MarkDuckworth Mar 26, 2025
8e9fdbe
Merge branch 'feat/pipelines' of github.com:firebase/firebase-js-sdk …
MarkDuckworth Apr 3, 2025
609d082
Pipeline and test cleanup
MarkDuckworth Apr 8, 2025
3d6bbf3
Test fixes and re-enabling tests for features that were added on backend
MarkDuckworth Apr 8, 2025
32ee331
Additional test cleanup
MarkDuckworth Apr 8, 2025
7532899
Merge commit '88a8055808bdbd1c75011a94d11062460027d931' into feat/pip…
MarkDuckworth Apr 8, 2025
bb8fc27
fix tests and enable only pipeline tests
MarkDuckworth Apr 8, 2025
03eb22e
Comment cleanup
MarkDuckworth Apr 11, 2025
1645cd6
Cleanup
MarkDuckworth Apr 29, 2025
41bde42
Build and test fixes
MarkDuckworth Jun 16, 2025
33a4a2d
Merge branch 'main' of github.com:firebase/firebase-js-sdk into feat/…
MarkDuckworth Jun 27, 2025
2802f8a
Merge branch 'main' of github.com:firebase/firebase-js-sdk into feat/…
MarkDuckworth Sep 29, 2025
c407cb9
Implementing features from API audit and node backport (#9284)
MarkDuckworth Oct 8, 2025
beda76e
Fix pipelines CI (#9306)
MarkDuckworth Oct 9, 2025
3456581
fix typings:public script for firestore
MarkDuckworth Oct 10, 2025
d34d930
only run pipeline tests when pointing to the enterprise db
MarkDuckworth Oct 9, 2025
adba599
send api key to DBE requests (#9331)
MarkDuckworth Oct 20, 2025
0ec6389
backport fixes in the console to feat/pipelines (#9340)
MarkDuckworth Oct 22, 2025
07ca9c6
Throw on duplicate alias (#9343)
MarkDuckworth Oct 28, 2025
0b2845a
Pipeline fix tests and exports (#9342)
MarkDuckworth Oct 28, 2025
319a396
Add support for sending the API key for web channel streams (#9354)
MarkDuckworth Oct 29, 2025
0aca735
Merge branch 'main' of github.com:firebase/firebase-js-sdk into feat/…
MarkDuckworth Oct 29, 2025
3dc7b96
add beta tags to pipelines api. Add missing tsdoc comments
MarkDuckworth Oct 29, 2025
d571641
Yarn format
MarkDuckworth Oct 29, 2025
8512f64
add functions timestampTrunc, split, and type
MarkDuckworth Oct 31, 2025
29e1965
Add valueToTrim parameter to trim
MarkDuckworth Oct 31, 2025
f607f00
pass value to trim
MarkDuckworth Oct 31, 2025
d3eed35
Add Bytes to arg type for trim
MarkDuckworth Oct 31, 2025
5206828
clean up integration tests so they pass in classic and enterprise DBs
MarkDuckworth Nov 3, 2025
659ee21
Merge branch 'main' of github.com:firebase/firebase-js-sdk into feat/…
MarkDuckworth Nov 3, 2025
7fea6f4
Missing file
MarkDuckworth Nov 3, 2025
8561514
cleanup
MarkDuckworth Nov 3, 2025
f9c4cde
Fix api review files and missing export TimeGranularity
MarkDuckworth Nov 5, 2025
e4cdd2e
fixed private constructor on aggregatefunction
MarkDuckworth Nov 5, 2025
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
1,362 changes: 1,362 additions & 0 deletions common/api-review/firestore-lite-pipelines.api.md

Large diffs are not rendered by default.

1,401 changes: 1,401 additions & 0 deletions common/api-review/firestore-pipelines.api.md

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions integration/firestore/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,23 @@ function copyTests() {
/\s+from '\.(\.\/util)?\/firebase_export';/,
` from '${resolve(__dirname, './firebase_export')}';

if (typeof process === 'undefined') {
process = { env: { INCLUDE_FIRESTORE_PERSISTENCE: '${isPersistenceEnabled()}' } } as any;
} else {
process.env.INCLUDE_FIRESTORE_PERSISTENCE = '${isPersistenceEnabled()}';
}
`
)
)
.pipe(
replace(
/**
* This regex is designed to match the Firebase import in our
* integration tests.
*/
/\s+from '\.(\.\/util)?\/pipeline_export';/,
` from '${resolve(__dirname, './pipeline_export')}';

if (typeof process === 'undefined') {
process = { env: { INCLUDE_FIRESTORE_PERSISTENCE: '${isPersistenceEnabled()}' } } as any;
} else {
Expand Down
21 changes: 21 additions & 0 deletions integration/firestore/pipeline_export.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* @license
* Copyright 2025 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.
*/

// This file replaces "packages/firestore/test/integration/util/pipeline_export"
// and depends on the minified sources.

export * from '@firebase/firestore/pipelines';
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@
"postinstall-postinstall": "2.1.0",
"prettier": "2.8.8",
"protractor": "5.4.2",
"protobufjs-cli": "^1.1.3",
"request": "2.88.2",
"semver": "7.7.1",
"simple-git": "3.27.0",
Expand Down
18 changes: 18 additions & 0 deletions packages/firebase/firestore/lite/pipelines/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @license
* Copyright 2024 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.
*/

export * from '@firebase/firestore/lite/pipelines';
7 changes: 7 additions & 0 deletions packages/firebase/firestore/lite/pipelines/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "firebase/firestore/lite/pipelines",
"main": "dist/pipelines.cjs.js",
"browser": "dist/esm/pipelines.esm.js",
"module": "dist/esm/pipelines.esm.js",
"typings": "dist/firestore/lite/pipelines/index.d.ts"
}
2 changes: 1 addition & 1 deletion packages/firebase/firestore/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
"browser": "dist/esm/index.esm.js",
"module": "dist/esm/index.esm.js",
"typings": "dist/firestore/index.d.ts"
}
}
21 changes: 21 additions & 0 deletions packages/firebase/firestore/pipelines/index.cdn.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/**
* @license
* Copyright 2024 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.
*/

export * from '@firebase/firestore';

import * as pipelines from '@firebase/firestore/pipelines';
export { pipelines };
18 changes: 18 additions & 0 deletions packages/firebase/firestore/pipelines/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* @license
* Copyright 2024 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.
*/

export * from '@firebase/firestore/pipelines';
7 changes: 7 additions & 0 deletions packages/firebase/firestore/pipelines/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "firebase/firestore/pipelines",
"main": "dist/pipelines.cjs.js",
"browser": "dist/esm/pipelines.esm.js",
"module": "dist/esm/pipelines.esm.js",
"typings": "dist/firestore/pipelines/index.d.ts"
}
2 changes: 1 addition & 1 deletion packages/firebase/gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const replace = require('gulp-replace');

const pkgJson = require('./package.json');
const files = pkgJson.components.map(component => {
const componentName = component.replace('/', '-');
const componentName = component.replaceAll('/', '-');
return `firebase-${componentName}.js`;
});
const FIREBASE_APP_URL = `https://www.gstatic.com/firebasejs/${pkgJson.version}/firebase-app.js`;
Expand Down
26 changes: 26 additions & 0 deletions packages/firebase/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,18 @@
},
"default": "./firestore/dist/esm/index.esm.js"
},
"./firestore/pipelines": {
"types": "./firestore/pipelines/dist/firestore/pipelines/index.d.ts",
"node": {
"require": "./firestore/pipelines/dist/pipelines.cjs.js",
"import": "./firestore/pipelines/dist/pipelines.mjs"
},
"browser": {
"require": "./firestore/pipelines/dist/pipelines.cjs.js",
"import": "./firestore/pipelines/dist/esm/pipelines.esm.js"
},
"default": "./firestore/pipelines/dist/esm/pipelines.esm.js"
},
"./firestore/lite": {
"types": "./firestore/lite/dist/firestore/lite/index.d.ts",
"node": {
Expand All @@ -143,6 +155,18 @@
},
"default": "./firestore/lite/dist/esm/index.esm.js"
},
"./firestore/lite/pipelines": {
"types": "./firestore/lite/pipelines/dist/firestore/lite/pipelines/index.d.ts",
"node": {
"require": "./firestore/lite/pipelines/dist/pipelines.cjs.js",
"import": "./firestore/lite/pipelines/dist/pipelines.mjs"
},
"browser": {
"require": "./firestore/lite/pipelines/dist/pipelines.cjs.js",
"import": "./firestore/lite/pipelines/dist/esm/pipelines.esm.js"
},
"default": "./firestore/lite/pipelines/dist/esm/pipelines.esm.js"
},
"./functions": {
"types": "./functions/dist/functions/index.d.ts",
"node": {
Expand Down Expand Up @@ -453,6 +477,8 @@
"functions",
"firestore",
"firestore/lite",
"firestore/pipelines",
"firestore/lite/pipelines",
"installations",
"storage",
"performance",
Expand Down
7 changes: 5 additions & 2 deletions packages/firebase/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import pkg from './package.json';
import { resolve } from 'path';
import { existsSync } from 'fs';
import resolveModule from '@rollup/plugin-node-resolve';
import rollupTypescriptPlugin from 'rollup-plugin-typescript2';
import sourcemaps from 'rollup-plugin-sourcemaps';
Expand Down Expand Up @@ -149,10 +150,12 @@ const cdnBuilds = [
.map(component => {
// It is needed for handling sub modules, for example firestore/lite which should produce firebase-firestore-lite.js
// Otherwise, we will create a directory with '/' in the name.
const componentName = component.replace('/', '-');
const componentName = component.replaceAll('/', '-');

return {
input: `${component}/index.ts`,
input: existsSync(`${component}/index.cdn.ts`)
? `${component}/index.cdn.ts`
: `${component}/index.ts`,
output: {
file: `firebase-${componentName}.js`,
sourcemap: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/firestore/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ module.exports = {
tsconfigRootDir: __dirname
},
plugins: ['import'],
ignorePatterns: ['compat/*'],
ignorePatterns: ['compat/*', 'pipelines.d.ts'],
rules: {
'no-console': ['error', { allow: ['warn', 'error'] }],
'@typescript-eslint/no-unused-vars': [
Expand Down
2 changes: 2 additions & 0 deletions packages/firestore/externs.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
"packages/app-check-interop-types/index.d.ts",
"packages/auth-interop-types/index.d.ts",
"packages/firestore/dist/lite/internal.d.ts",
"packages/firestore/dist/lite/internal.pipelines.d.ts",
"packages/firestore/dist/internal.d.ts",
"packages/firestore/dist/internal.pipelines.d.ts",
"packages/firestore-types/index.d.ts",
"packages/firebase/compat/index.d.ts",
"packages/component/dist/src/component.d.ts",
Expand Down
14 changes: 14 additions & 0 deletions packages/firestore/lite/pipelines/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "@firebase/firestore-lite-pipelines",
"description": "Pipelines for the lite Firestore SDK",
"main": "../../dist/lite/pipelines.node.cjs.js",
"main-esm": "../../dist/lite/pipelines.node.mjs",
"module": "../../dist/lite/pipelines.browser.esm.js",
"browser": "../../dist/lite/pipelines.browser.esm.js",
"react-native": "../../dist/lite/pipelines.rn.esm.js",
"typings": "./pipelines.d.ts",
"private": true,
"engines": {
"node": ">=20.0.0"
}
}
28 changes: 28 additions & 0 deletions packages/firestore/lite/pipelines/pipelines.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @license
* Copyright 2024 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 { PipelineSource, Pipeline } from '../../dist/lite/pipelines';

// Augument the Firestore class with the pipeline() method.
// This is stripped from dist/lite/pipelines.d.ts during the build
// so it needs to be re-added here.
declare module '@firebase/firestore/lite' {
interface Firestore {
pipeline(): PipelineSource<Pipeline>;
}
}

export * from '../../dist/lite/pipelines';
Loading
Loading