From c391da824905b8b2eef5d52c31f04d18b4021a87 Mon Sep 17 00:00:00 2001 From: KingDarBoja <30560560+KingDarBoja@users.noreply.github.com> Date: Wed, 14 Oct 2026 16:38:36 -0500 Subject: [PATCH] feat(firestore): add support for Firestore pipeline operations --- docs/firestore.md | 11 + src/firestore/lite/pipelines/firebase.ts | 292 ++++++++++++++++++ src/firestore/lite/pipelines/ng-package.json | 6 + src/firestore/lite/pipelines/public_api.ts | 1 + src/firestore/pipelines/firebase.ts | 294 +++++++++++++++++++ src/firestore/pipelines/ng-package.json | 6 + src/firestore/pipelines/pipelines.spec.ts | 19 ++ src/firestore/pipelines/public_api.ts | 1 + tools/build.ts | 2 + 9 files changed, 632 insertions(+) create mode 100644 src/firestore/lite/pipelines/firebase.ts create mode 100644 src/firestore/lite/pipelines/ng-package.json create mode 100644 src/firestore/lite/pipelines/public_api.ts create mode 100644 src/firestore/pipelines/firebase.ts create mode 100644 src/firestore/pipelines/ng-package.json create mode 100644 src/firestore/pipelines/pipelines.spec.ts create mode 100644 src/firestore/pipelines/public_api.ts diff --git a/docs/firestore.md b/docs/firestore.md index 6932d99fd..b12c10543 100644 --- a/docs/firestore.md +++ b/docs/firestore.md @@ -53,6 +53,17 @@ Update the imports from `import { ... } from 'firebase/firestore'` to `import { [Getting Started](https://firebase.google.com/docs/firestore/quickstart#web-modular-api) | [API Reference](https://firebase.google.com/docs/reference/js/firestore) +### Pipeline operations + +Firestore Pipeline operations are available from dedicated entrypoints: + +```ts +import { field, execute } from '@angular/fire/firestore/pipelines'; +import { field as liteField, execute as liteExecute } from '@angular/fire/firestore/lite/pipelines'; +``` + +Choose the Lite path when using Firestore Lite. See Firebase's guides for [getting started with pipelines](https://firebase.google.com/docs/firestore/pipelines/get-started-with-pipelines?hl=en) and [performing joins with sub-pipelines](https://firebase.google.com/docs/firestore/pipelines/perform-joins-with-sub-pipelines). + ### Reading data In Cloud Firestore data is stored in `documents` and `documents` are stored in `collections`. The path to data follows `/` and continues if there are subcollections. For example, `"users/ABC12345/posts/XYZ6789"` represents: diff --git a/src/firestore/lite/pipelines/firebase.ts b/src/firestore/lite/pipelines/firebase.ts new file mode 100644 index 000000000..898c56a9e --- /dev/null +++ b/src/firestore/lite/pipelines/firebase.ts @@ -0,0 +1,292 @@ +// DO NOT MODIFY, this file is autogenerated by tools/build.ts +export * from 'firebase/firestore/lite/pipelines'; +import { ɵzoneWrap } from '@angular/fire'; +import { + abs as _abs, + add as _add, + and as _and, + array as _array, + arrayAgg as _arrayAgg, + arrayAggDistinct as _arrayAggDistinct, + arrayConcat as _arrayConcat, + arrayContains as _arrayContains, + arrayContainsAll as _arrayContainsAll, + arrayContainsAny as _arrayContainsAny, + arrayFilter as _arrayFilter, + arrayFirst as _arrayFirst, + arrayFirstN as _arrayFirstN, + arrayGet as _arrayGet, + arrayIndexOf as _arrayIndexOf, + arrayIndexOfAll as _arrayIndexOfAll, + arrayLast as _arrayLast, + arrayLastIndexOf as _arrayLastIndexOf, + arrayLastN as _arrayLastN, + arrayLength as _arrayLength, + arrayMaximum as _arrayMaximum, + arrayMaximumN as _arrayMaximumN, + arrayMinimum as _arrayMinimum, + arrayMinimumN as _arrayMinimumN, + arraySlice as _arraySlice, + arraySum as _arraySum, + arrayTransform as _arrayTransform, + arrayTransformWithIndex as _arrayTransformWithIndex, + ascending as _ascending, + average as _average, + byteLength as _byteLength, + ceil as _ceil, + charLength as _charLength, + coalesce as _coalesce, + collectionId as _collectionId, + concat as _concat, + conditional as _conditional, + constant as _constant, + cosineDistance as _cosineDistance, + count as _count, + countAll as _countAll, + countDistinct as _countDistinct, + countIf as _countIf, + currentDocument as _currentDocument, + currentTimestamp as _currentTimestamp, + descending as _descending, + divide as _divide, + documentId as _documentId, + documentMatches as _documentMatches, + dotProduct as _dotProduct, + endsWith as _endsWith, + equal as _equal, + equalAny as _equalAny, + euclideanDistance as _euclideanDistance, + execute as _execute, + exists as _exists, + exp as _exp, + field as _field, + first as _first, + floor as _floor, + geoDistance as _geoDistance, + greaterThan as _greaterThan, + greaterThanOrEqual as _greaterThanOrEqual, + ifAbsent as _ifAbsent, + ifError as _ifError, + ifNull as _ifNull, + isAbsent as _isAbsent, + isError as _isError, + isType as _isType, + join as _join, + last as _last, + length as _length, + lessThan as _lessThan, + lessThanOrEqual as _lessThanOrEqual, + like as _like, + ln as _ln, + log as _log, + log10 as _log10, + logicalMaximum as _logicalMaximum, + logicalMinimum as _logicalMinimum, + ltrim as _ltrim, + map as _map, + mapEntries as _mapEntries, + mapGet as _mapGet, + mapKeys as _mapKeys, + mapMerge as _mapMerge, + mapRemove as _mapRemove, + mapSet as _mapSet, + mapValues as _mapValues, + maximum as _maximum, + minimum as _minimum, + mod as _mod, + multiply as _multiply, + nor as _nor, + not as _not, + notEqual as _notEqual, + notEqualAny as _notEqualAny, + or as _or, + parent as _parent, + pow as _pow, + rand as _rand, + regexContains as _regexContains, + regexFind as _regexFind, + regexFindAll as _regexFindAll, + regexMatch as _regexMatch, + reverse as _reverse, + round as _round, + rtrim as _rtrim, + score as _score, + split as _split, + sqrt as _sqrt, + startsWith as _startsWith, + stringConcat as _stringConcat, + stringContains as _stringContains, + stringIndexOf as _stringIndexOf, + stringRepeat as _stringRepeat, + stringReplaceAll as _stringReplaceAll, + stringReplaceOne as _stringReplaceOne, + stringReverse as _stringReverse, + subcollection as _subcollection, + substring as _substring, + subtract as _subtract, + sum as _sum, + switchOn as _switchOn, + timestampAdd as _timestampAdd, + timestampDiff as _timestampDiff, + timestampExtract as _timestampExtract, + timestampSubtract as _timestampSubtract, + timestampToUnixMicros as _timestampToUnixMicros, + timestampToUnixMillis as _timestampToUnixMillis, + timestampToUnixSeconds as _timestampToUnixSeconds, + timestampTruncate as _timestampTruncate, + toLower as _toLower, + toUpper as _toUpper, + trim as _trim, + trunc as _trunc, + type as _type, + unixMicrosToTimestamp as _unixMicrosToTimestamp, + unixMillisToTimestamp as _unixMillisToTimestamp, + unixSecondsToTimestamp as _unixSecondsToTimestamp, + variable as _variable, + vectorLength as _vectorLength, + xor as _xor +} from 'firebase/firestore/lite/pipelines'; + +export const abs = ɵzoneWrap(_abs, true); +export const add = ɵzoneWrap(_add, true); +export const and = ɵzoneWrap(_and, true); +export const array = ɵzoneWrap(_array, true); +export const arrayAgg = ɵzoneWrap(_arrayAgg, true); +export const arrayAggDistinct = ɵzoneWrap(_arrayAggDistinct, true); +export const arrayConcat = ɵzoneWrap(_arrayConcat, true); +export const arrayContains = ɵzoneWrap(_arrayContains, true); +export const arrayContainsAll = ɵzoneWrap(_arrayContainsAll, true); +export const arrayContainsAny = ɵzoneWrap(_arrayContainsAny, true); +export const arrayFilter = ɵzoneWrap(_arrayFilter, true); +export const arrayFirst = ɵzoneWrap(_arrayFirst, true); +export const arrayFirstN = ɵzoneWrap(_arrayFirstN, true); +export const arrayGet = ɵzoneWrap(_arrayGet, true); +export const arrayIndexOf = ɵzoneWrap(_arrayIndexOf, true); +export const arrayIndexOfAll = ɵzoneWrap(_arrayIndexOfAll, true); +export const arrayLast = ɵzoneWrap(_arrayLast, true); +export const arrayLastIndexOf = ɵzoneWrap(_arrayLastIndexOf, true); +export const arrayLastN = ɵzoneWrap(_arrayLastN, true); +export const arrayLength = ɵzoneWrap(_arrayLength, true); +export const arrayMaximum = ɵzoneWrap(_arrayMaximum, true); +export const arrayMaximumN = ɵzoneWrap(_arrayMaximumN, true); +export const arrayMinimum = ɵzoneWrap(_arrayMinimum, true); +export const arrayMinimumN = ɵzoneWrap(_arrayMinimumN, true); +export const arraySlice = ɵzoneWrap(_arraySlice, true); +export const arraySum = ɵzoneWrap(_arraySum, true); +export const arrayTransform = ɵzoneWrap(_arrayTransform, true); +export const arrayTransformWithIndex = ɵzoneWrap(_arrayTransformWithIndex, true); +export const ascending = ɵzoneWrap(_ascending, true); +export const average = ɵzoneWrap(_average, true); +export const byteLength = ɵzoneWrap(_byteLength, true); +export const ceil = ɵzoneWrap(_ceil, true); +export const charLength = ɵzoneWrap(_charLength, true); +export const coalesce = ɵzoneWrap(_coalesce, true); +export const collectionId = ɵzoneWrap(_collectionId, true); +export const concat = ɵzoneWrap(_concat, true); +export const conditional = ɵzoneWrap(_conditional, true); +export const constant = ɵzoneWrap(_constant, true); +export const cosineDistance = ɵzoneWrap(_cosineDistance, true); +export const count = ɵzoneWrap(_count, true); +export const countAll = ɵzoneWrap(_countAll, true); +export const countDistinct = ɵzoneWrap(_countDistinct, true); +export const countIf = ɵzoneWrap(_countIf, true); +export const currentDocument = ɵzoneWrap(_currentDocument, true); +export const currentTimestamp = ɵzoneWrap(_currentTimestamp, true); +export const descending = ɵzoneWrap(_descending, true); +export const divide = ɵzoneWrap(_divide, true); +export const documentId = ɵzoneWrap(_documentId, true); +export const documentMatches = ɵzoneWrap(_documentMatches, true); +export const dotProduct = ɵzoneWrap(_dotProduct, true); +export const endsWith = ɵzoneWrap(_endsWith, true); +export const equal = ɵzoneWrap(_equal, true); +export const equalAny = ɵzoneWrap(_equalAny, true); +export const euclideanDistance = ɵzoneWrap(_euclideanDistance, true); +export const execute = ɵzoneWrap(_execute, true); +export const exists = ɵzoneWrap(_exists, true); +export const exp = ɵzoneWrap(_exp, true); +export const field = ɵzoneWrap(_field, true); +export const first = ɵzoneWrap(_first, true); +export const floor = ɵzoneWrap(_floor, true); +export const geoDistance = ɵzoneWrap(_geoDistance, true); +export const greaterThan = ɵzoneWrap(_greaterThan, true); +export const greaterThanOrEqual = ɵzoneWrap(_greaterThanOrEqual, true); +export const ifAbsent = ɵzoneWrap(_ifAbsent, true); +export const ifError = ɵzoneWrap(_ifError, true); +export const ifNull = ɵzoneWrap(_ifNull, true); +export const isAbsent = ɵzoneWrap(_isAbsent, true); +export const isError = ɵzoneWrap(_isError, true); +export const isType = ɵzoneWrap(_isType, true); +export const join = ɵzoneWrap(_join, true); +export const last = ɵzoneWrap(_last, true); +export const length = ɵzoneWrap(_length, true); +export const lessThan = ɵzoneWrap(_lessThan, true); +export const lessThanOrEqual = ɵzoneWrap(_lessThanOrEqual, true); +export const like = ɵzoneWrap(_like, true); +export const ln = ɵzoneWrap(_ln, true); +export const log = ɵzoneWrap(_log, true); +export const log10 = ɵzoneWrap(_log10, true); +export const logicalMaximum = ɵzoneWrap(_logicalMaximum, true); +export const logicalMinimum = ɵzoneWrap(_logicalMinimum, true); +export const ltrim = ɵzoneWrap(_ltrim, true); +export const map = ɵzoneWrap(_map, true); +export const mapEntries = ɵzoneWrap(_mapEntries, true); +export const mapGet = ɵzoneWrap(_mapGet, true); +export const mapKeys = ɵzoneWrap(_mapKeys, true); +export const mapMerge = ɵzoneWrap(_mapMerge, true); +export const mapRemove = ɵzoneWrap(_mapRemove, true); +export const mapSet = ɵzoneWrap(_mapSet, true); +export const mapValues = ɵzoneWrap(_mapValues, true); +export const maximum = ɵzoneWrap(_maximum, true); +export const minimum = ɵzoneWrap(_minimum, true); +export const mod = ɵzoneWrap(_mod, true); +export const multiply = ɵzoneWrap(_multiply, true); +export const nor = ɵzoneWrap(_nor, true); +export const not = ɵzoneWrap(_not, true); +export const notEqual = ɵzoneWrap(_notEqual, true); +export const notEqualAny = ɵzoneWrap(_notEqualAny, true); +export const or = ɵzoneWrap(_or, true); +export const parent = ɵzoneWrap(_parent, true); +export const pow = ɵzoneWrap(_pow, true); +export const rand = ɵzoneWrap(_rand, true); +export const regexContains = ɵzoneWrap(_regexContains, true); +export const regexFind = ɵzoneWrap(_regexFind, true); +export const regexFindAll = ɵzoneWrap(_regexFindAll, true); +export const regexMatch = ɵzoneWrap(_regexMatch, true); +export const reverse = ɵzoneWrap(_reverse, true); +export const round = ɵzoneWrap(_round, true); +export const rtrim = ɵzoneWrap(_rtrim, true); +export const score = ɵzoneWrap(_score, true); +export const split = ɵzoneWrap(_split, true); +export const sqrt = ɵzoneWrap(_sqrt, true); +export const startsWith = ɵzoneWrap(_startsWith, true); +export const stringConcat = ɵzoneWrap(_stringConcat, true); +export const stringContains = ɵzoneWrap(_stringContains, true); +export const stringIndexOf = ɵzoneWrap(_stringIndexOf, true); +export const stringRepeat = ɵzoneWrap(_stringRepeat, true); +export const stringReplaceAll = ɵzoneWrap(_stringReplaceAll, true); +export const stringReplaceOne = ɵzoneWrap(_stringReplaceOne, true); +export const stringReverse = ɵzoneWrap(_stringReverse, true); +export const subcollection = ɵzoneWrap(_subcollection, true); +export const substring = ɵzoneWrap(_substring, true); +export const subtract = ɵzoneWrap(_subtract, true); +export const sum = ɵzoneWrap(_sum, true); +export const switchOn = ɵzoneWrap(_switchOn, true); +export const timestampAdd = ɵzoneWrap(_timestampAdd, true); +export const timestampDiff = ɵzoneWrap(_timestampDiff, true); +export const timestampExtract = ɵzoneWrap(_timestampExtract, true); +export const timestampSubtract = ɵzoneWrap(_timestampSubtract, true); +export const timestampToUnixMicros = ɵzoneWrap(_timestampToUnixMicros, true); +export const timestampToUnixMillis = ɵzoneWrap(_timestampToUnixMillis, true); +export const timestampToUnixSeconds = ɵzoneWrap(_timestampToUnixSeconds, true); +export const timestampTruncate = ɵzoneWrap(_timestampTruncate, true); +export const toLower = ɵzoneWrap(_toLower, true); +export const toUpper = ɵzoneWrap(_toUpper, true); +export const trim = ɵzoneWrap(_trim, true); +export const trunc = ɵzoneWrap(_trunc, true); +export const type = ɵzoneWrap(_type, true); +export const unixMicrosToTimestamp = ɵzoneWrap(_unixMicrosToTimestamp, true); +export const unixMillisToTimestamp = ɵzoneWrap(_unixMillisToTimestamp, true); +export const unixSecondsToTimestamp = ɵzoneWrap(_unixSecondsToTimestamp, true); +export const variable = ɵzoneWrap(_variable, true); +export const vectorLength = ɵzoneWrap(_vectorLength, true); +export const xor = ɵzoneWrap(_xor, true); diff --git a/src/firestore/lite/pipelines/ng-package.json b/src/firestore/lite/pipelines/ng-package.json new file mode 100644 index 000000000..4878aeacd --- /dev/null +++ b/src/firestore/lite/pipelines/ng-package.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public_api.ts" + } +} diff --git a/src/firestore/lite/pipelines/public_api.ts b/src/firestore/lite/pipelines/public_api.ts new file mode 100644 index 000000000..5588511bf --- /dev/null +++ b/src/firestore/lite/pipelines/public_api.ts @@ -0,0 +1 @@ +export * from './firebase'; diff --git a/src/firestore/pipelines/firebase.ts b/src/firestore/pipelines/firebase.ts new file mode 100644 index 000000000..d3bc88aaf --- /dev/null +++ b/src/firestore/pipelines/firebase.ts @@ -0,0 +1,294 @@ +// DO NOT MODIFY, this file is autogenerated by tools/build.ts +export * from 'firebase/firestore/pipelines'; +import { ɵzoneWrap } from '@angular/fire'; +import { + abs as _abs, + add as _add, + and as _and, + array as _array, + arrayAgg as _arrayAgg, + arrayAggDistinct as _arrayAggDistinct, + arrayConcat as _arrayConcat, + arrayContains as _arrayContains, + arrayContainsAll as _arrayContainsAll, + arrayContainsAny as _arrayContainsAny, + arrayFilter as _arrayFilter, + arrayFirst as _arrayFirst, + arrayFirstN as _arrayFirstN, + arrayGet as _arrayGet, + arrayIndexOf as _arrayIndexOf, + arrayIndexOfAll as _arrayIndexOfAll, + arrayLast as _arrayLast, + arrayLastIndexOf as _arrayLastIndexOf, + arrayLastN as _arrayLastN, + arrayLength as _arrayLength, + arrayMaximum as _arrayMaximum, + arrayMaximumN as _arrayMaximumN, + arrayMinimum as _arrayMinimum, + arrayMinimumN as _arrayMinimumN, + arraySlice as _arraySlice, + arraySum as _arraySum, + arrayTransform as _arrayTransform, + arrayTransformWithIndex as _arrayTransformWithIndex, + ascending as _ascending, + average as _average, + byteLength as _byteLength, + ceil as _ceil, + charLength as _charLength, + coalesce as _coalesce, + collectionId as _collectionId, + concat as _concat, + conditional as _conditional, + constant as _constant, + cosineDistance as _cosineDistance, + count as _count, + countAll as _countAll, + countDistinct as _countDistinct, + countIf as _countIf, + currentDocument as _currentDocument, + currentTimestamp as _currentTimestamp, + descending as _descending, + divide as _divide, + documentId as _documentId, + documentMatches as _documentMatches, + dotProduct as _dotProduct, + endsWith as _endsWith, + equal as _equal, + equalAny as _equalAny, + euclideanDistance as _euclideanDistance, + execute as _execute, + exists as _exists, + exp as _exp, + field as _field, + first as _first, + floor as _floor, + geoDistance as _geoDistance, + greaterThan as _greaterThan, + greaterThanOrEqual as _greaterThanOrEqual, + ifAbsent as _ifAbsent, + ifError as _ifError, + ifNull as _ifNull, + isAbsent as _isAbsent, + isError as _isError, + isType as _isType, + join as _join, + last as _last, + length as _length, + lessThan as _lessThan, + lessThanOrEqual as _lessThanOrEqual, + like as _like, + ln as _ln, + log as _log, + log10 as _log10, + logicalMaximum as _logicalMaximum, + logicalMinimum as _logicalMinimum, + ltrim as _ltrim, + map as _map, + mapEntries as _mapEntries, + mapGet as _mapGet, + mapKeys as _mapKeys, + mapMerge as _mapMerge, + mapRemove as _mapRemove, + mapSet as _mapSet, + mapValues as _mapValues, + maximum as _maximum, + minimum as _minimum, + mod as _mod, + multiply as _multiply, + nor as _nor, + not as _not, + notEqual as _notEqual, + notEqualAny as _notEqualAny, + or as _or, + parent as _parent, + pipelineResultEqual as _pipelineResultEqual, + pow as _pow, + rand as _rand, + regexContains as _regexContains, + regexFind as _regexFind, + regexFindAll as _regexFindAll, + regexMatch as _regexMatch, + reverse as _reverse, + round as _round, + rtrim as _rtrim, + score as _score, + split as _split, + sqrt as _sqrt, + startsWith as _startsWith, + stringConcat as _stringConcat, + stringContains as _stringContains, + stringIndexOf as _stringIndexOf, + stringRepeat as _stringRepeat, + stringReplaceAll as _stringReplaceAll, + stringReplaceOne as _stringReplaceOne, + stringReverse as _stringReverse, + subcollection as _subcollection, + substring as _substring, + subtract as _subtract, + sum as _sum, + switchOn as _switchOn, + timestampAdd as _timestampAdd, + timestampDiff as _timestampDiff, + timestampExtract as _timestampExtract, + timestampSubtract as _timestampSubtract, + timestampToUnixMicros as _timestampToUnixMicros, + timestampToUnixMillis as _timestampToUnixMillis, + timestampToUnixSeconds as _timestampToUnixSeconds, + timestampTruncate as _timestampTruncate, + toLower as _toLower, + toUpper as _toUpper, + trim as _trim, + trunc as _trunc, + type as _type, + unixMicrosToTimestamp as _unixMicrosToTimestamp, + unixMillisToTimestamp as _unixMillisToTimestamp, + unixSecondsToTimestamp as _unixSecondsToTimestamp, + variable as _variable, + vectorLength as _vectorLength, + xor as _xor +} from 'firebase/firestore/pipelines'; + +export const abs = ɵzoneWrap(_abs, true); +export const add = ɵzoneWrap(_add, true); +export const and = ɵzoneWrap(_and, true); +export const array = ɵzoneWrap(_array, true); +export const arrayAgg = ɵzoneWrap(_arrayAgg, true); +export const arrayAggDistinct = ɵzoneWrap(_arrayAggDistinct, true); +export const arrayConcat = ɵzoneWrap(_arrayConcat, true); +export const arrayContains = ɵzoneWrap(_arrayContains, true); +export const arrayContainsAll = ɵzoneWrap(_arrayContainsAll, true); +export const arrayContainsAny = ɵzoneWrap(_arrayContainsAny, true); +export const arrayFilter = ɵzoneWrap(_arrayFilter, true); +export const arrayFirst = ɵzoneWrap(_arrayFirst, true); +export const arrayFirstN = ɵzoneWrap(_arrayFirstN, true); +export const arrayGet = ɵzoneWrap(_arrayGet, true); +export const arrayIndexOf = ɵzoneWrap(_arrayIndexOf, true); +export const arrayIndexOfAll = ɵzoneWrap(_arrayIndexOfAll, true); +export const arrayLast = ɵzoneWrap(_arrayLast, true); +export const arrayLastIndexOf = ɵzoneWrap(_arrayLastIndexOf, true); +export const arrayLastN = ɵzoneWrap(_arrayLastN, true); +export const arrayLength = ɵzoneWrap(_arrayLength, true); +export const arrayMaximum = ɵzoneWrap(_arrayMaximum, true); +export const arrayMaximumN = ɵzoneWrap(_arrayMaximumN, true); +export const arrayMinimum = ɵzoneWrap(_arrayMinimum, true); +export const arrayMinimumN = ɵzoneWrap(_arrayMinimumN, true); +export const arraySlice = ɵzoneWrap(_arraySlice, true); +export const arraySum = ɵzoneWrap(_arraySum, true); +export const arrayTransform = ɵzoneWrap(_arrayTransform, true); +export const arrayTransformWithIndex = ɵzoneWrap(_arrayTransformWithIndex, true); +export const ascending = ɵzoneWrap(_ascending, true); +export const average = ɵzoneWrap(_average, true); +export const byteLength = ɵzoneWrap(_byteLength, true); +export const ceil = ɵzoneWrap(_ceil, true); +export const charLength = ɵzoneWrap(_charLength, true); +export const coalesce = ɵzoneWrap(_coalesce, true); +export const collectionId = ɵzoneWrap(_collectionId, true); +export const concat = ɵzoneWrap(_concat, true); +export const conditional = ɵzoneWrap(_conditional, true); +export const constant = ɵzoneWrap(_constant, true); +export const cosineDistance = ɵzoneWrap(_cosineDistance, true); +export const count = ɵzoneWrap(_count, true); +export const countAll = ɵzoneWrap(_countAll, true); +export const countDistinct = ɵzoneWrap(_countDistinct, true); +export const countIf = ɵzoneWrap(_countIf, true); +export const currentDocument = ɵzoneWrap(_currentDocument, true); +export const currentTimestamp = ɵzoneWrap(_currentTimestamp, true); +export const descending = ɵzoneWrap(_descending, true); +export const divide = ɵzoneWrap(_divide, true); +export const documentId = ɵzoneWrap(_documentId, true); +export const documentMatches = ɵzoneWrap(_documentMatches, true); +export const dotProduct = ɵzoneWrap(_dotProduct, true); +export const endsWith = ɵzoneWrap(_endsWith, true); +export const equal = ɵzoneWrap(_equal, true); +export const equalAny = ɵzoneWrap(_equalAny, true); +export const euclideanDistance = ɵzoneWrap(_euclideanDistance, true); +export const execute = ɵzoneWrap(_execute, true); +export const exists = ɵzoneWrap(_exists, true); +export const exp = ɵzoneWrap(_exp, true); +export const field = ɵzoneWrap(_field, true); +export const first = ɵzoneWrap(_first, true); +export const floor = ɵzoneWrap(_floor, true); +export const geoDistance = ɵzoneWrap(_geoDistance, true); +export const greaterThan = ɵzoneWrap(_greaterThan, true); +export const greaterThanOrEqual = ɵzoneWrap(_greaterThanOrEqual, true); +export const ifAbsent = ɵzoneWrap(_ifAbsent, true); +export const ifError = ɵzoneWrap(_ifError, true); +export const ifNull = ɵzoneWrap(_ifNull, true); +export const isAbsent = ɵzoneWrap(_isAbsent, true); +export const isError = ɵzoneWrap(_isError, true); +export const isType = ɵzoneWrap(_isType, true); +export const join = ɵzoneWrap(_join, true); +export const last = ɵzoneWrap(_last, true); +export const length = ɵzoneWrap(_length, true); +export const lessThan = ɵzoneWrap(_lessThan, true); +export const lessThanOrEqual = ɵzoneWrap(_lessThanOrEqual, true); +export const like = ɵzoneWrap(_like, true); +export const ln = ɵzoneWrap(_ln, true); +export const log = ɵzoneWrap(_log, true); +export const log10 = ɵzoneWrap(_log10, true); +export const logicalMaximum = ɵzoneWrap(_logicalMaximum, true); +export const logicalMinimum = ɵzoneWrap(_logicalMinimum, true); +export const ltrim = ɵzoneWrap(_ltrim, true); +export const map = ɵzoneWrap(_map, true); +export const mapEntries = ɵzoneWrap(_mapEntries, true); +export const mapGet = ɵzoneWrap(_mapGet, true); +export const mapKeys = ɵzoneWrap(_mapKeys, true); +export const mapMerge = ɵzoneWrap(_mapMerge, true); +export const mapRemove = ɵzoneWrap(_mapRemove, true); +export const mapSet = ɵzoneWrap(_mapSet, true); +export const mapValues = ɵzoneWrap(_mapValues, true); +export const maximum = ɵzoneWrap(_maximum, true); +export const minimum = ɵzoneWrap(_minimum, true); +export const mod = ɵzoneWrap(_mod, true); +export const multiply = ɵzoneWrap(_multiply, true); +export const nor = ɵzoneWrap(_nor, true); +export const not = ɵzoneWrap(_not, true); +export const notEqual = ɵzoneWrap(_notEqual, true); +export const notEqualAny = ɵzoneWrap(_notEqualAny, true); +export const or = ɵzoneWrap(_or, true); +export const parent = ɵzoneWrap(_parent, true); +export const pipelineResultEqual = ɵzoneWrap(_pipelineResultEqual, true); +export const pow = ɵzoneWrap(_pow, true); +export const rand = ɵzoneWrap(_rand, true); +export const regexContains = ɵzoneWrap(_regexContains, true); +export const regexFind = ɵzoneWrap(_regexFind, true); +export const regexFindAll = ɵzoneWrap(_regexFindAll, true); +export const regexMatch = ɵzoneWrap(_regexMatch, true); +export const reverse = ɵzoneWrap(_reverse, true); +export const round = ɵzoneWrap(_round, true); +export const rtrim = ɵzoneWrap(_rtrim, true); +export const score = ɵzoneWrap(_score, true); +export const split = ɵzoneWrap(_split, true); +export const sqrt = ɵzoneWrap(_sqrt, true); +export const startsWith = ɵzoneWrap(_startsWith, true); +export const stringConcat = ɵzoneWrap(_stringConcat, true); +export const stringContains = ɵzoneWrap(_stringContains, true); +export const stringIndexOf = ɵzoneWrap(_stringIndexOf, true); +export const stringRepeat = ɵzoneWrap(_stringRepeat, true); +export const stringReplaceAll = ɵzoneWrap(_stringReplaceAll, true); +export const stringReplaceOne = ɵzoneWrap(_stringReplaceOne, true); +export const stringReverse = ɵzoneWrap(_stringReverse, true); +export const subcollection = ɵzoneWrap(_subcollection, true); +export const substring = ɵzoneWrap(_substring, true); +export const subtract = ɵzoneWrap(_subtract, true); +export const sum = ɵzoneWrap(_sum, true); +export const switchOn = ɵzoneWrap(_switchOn, true); +export const timestampAdd = ɵzoneWrap(_timestampAdd, true); +export const timestampDiff = ɵzoneWrap(_timestampDiff, true); +export const timestampExtract = ɵzoneWrap(_timestampExtract, true); +export const timestampSubtract = ɵzoneWrap(_timestampSubtract, true); +export const timestampToUnixMicros = ɵzoneWrap(_timestampToUnixMicros, true); +export const timestampToUnixMillis = ɵzoneWrap(_timestampToUnixMillis, true); +export const timestampToUnixSeconds = ɵzoneWrap(_timestampToUnixSeconds, true); +export const timestampTruncate = ɵzoneWrap(_timestampTruncate, true); +export const toLower = ɵzoneWrap(_toLower, true); +export const toUpper = ɵzoneWrap(_toUpper, true); +export const trim = ɵzoneWrap(_trim, true); +export const trunc = ɵzoneWrap(_trunc, true); +export const type = ɵzoneWrap(_type, true); +export const unixMicrosToTimestamp = ɵzoneWrap(_unixMicrosToTimestamp, true); +export const unixMillisToTimestamp = ɵzoneWrap(_unixMillisToTimestamp, true); +export const unixSecondsToTimestamp = ɵzoneWrap(_unixSecondsToTimestamp, true); +export const variable = ɵzoneWrap(_variable, true); +export const vectorLength = ɵzoneWrap(_vectorLength, true); +export const xor = ɵzoneWrap(_xor, true); diff --git a/src/firestore/pipelines/ng-package.json b/src/firestore/pipelines/ng-package.json new file mode 100644 index 000000000..e5e5ccdfc --- /dev/null +++ b/src/firestore/pipelines/ng-package.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public_api.ts" + } +} diff --git a/src/firestore/pipelines/pipelines.spec.ts b/src/firestore/pipelines/pipelines.spec.ts new file mode 100644 index 000000000..86c5d75f2 --- /dev/null +++ b/src/firestore/pipelines/pipelines.spec.ts @@ -0,0 +1,19 @@ +import { TestBed } from '@angular/core/testing'; +import { constant as liteConstant, field as liteField } from '@angular/fire/firestore/lite/pipelines'; +import { constant as firestoreConstant, field as firestoreField } from '@angular/fire/firestore/pipelines'; + +describe('Firestore pipelines', () => { + it('exposes pipeline expressions for Firestore', () => { + TestBed.runInInjectionContext(() => { + expect(firestoreField('name')).toBeTruthy(); + expect(firestoreConstant('value')).toBeTruthy(); + }); + }); + + it('exposes pipeline expressions for Firestore Lite', () => { + TestBed.runInInjectionContext(() => { + expect(liteField('name')).toBeTruthy(); + expect(liteConstant('value')).toBeTruthy(); + }); + }); +}); diff --git a/src/firestore/pipelines/public_api.ts b/src/firestore/pipelines/public_api.ts new file mode 100644 index 000000000..5588511bf --- /dev/null +++ b/src/firestore/pipelines/public_api.ts @@ -0,0 +1 @@ +export * from './firebase'; diff --git a/tools/build.ts b/tools/build.ts index 53222cda2..97fa8a016 100644 --- a/tools/build.ts +++ b/tools/build.ts @@ -255,6 +255,7 @@ ${exportedZoneWrappedFns} collection: { exportName: 'collectionSnapshots' }, }), reexport('firestore', 'firebase', 'firebase/firestore', tsKeys(), firestoreOverrides), + reexport('firestore/pipelines', 'firebase', 'firebase/firestore/pipelines', tsKeys()), reexport('functions', 'rxfire', 'rxfire/functions', ["httpsCallable"], { httpsCallable: { exportName: 'httpsCallableData' }, }), @@ -300,6 +301,7 @@ ${exportedZoneWrappedFns} collection: { exportName: 'collectionSnapshots' }, }), reexport('firestore/lite', 'firebase', 'firebase/firestore/lite', tsKeys(), firestoreOverrides), + reexport('firestore/lite/pipelines', 'firebase', 'firebase/firestore/lite/pipelines', tsKeys()), ]).then(failOnUnrecognizedOverrides); }