@dereekb/firebase 10.1.7 → 10.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs.js
CHANGED
|
@@ -4141,6 +4141,10 @@ function firestoreFieldConfigToModelMapFunctionsRef(config) {
|
|
|
4141
4141
|
*/
|
|
4142
4142
|
function firestoreObjectArray(config) {
|
|
4143
4143
|
var _a, _b;
|
|
4144
|
+
const {
|
|
4145
|
+
filterUnique: inputFilterUnique
|
|
4146
|
+
} = config;
|
|
4147
|
+
const filterUnique = inputFilterUnique !== null && inputFilterUnique !== void 0 ? inputFilterUnique : util.MAP_IDENTITY;
|
|
4144
4148
|
const objectField = (_a = config.objectField) !== null && _a !== void 0 ? _a : firestoreFieldConfigToModelMapFunctionsRef(config.firestoreField);
|
|
4145
4149
|
const sortFn = util.sortValuesFunctionOrMapIdentityWithSortRef(config);
|
|
4146
4150
|
const {
|
|
@@ -4150,14 +4154,14 @@ function firestoreObjectArray(config) {
|
|
|
4150
4154
|
const to = x => {
|
|
4151
4155
|
// remove null/undefined values from each field when converting to in order to mirror firestore usage (undefined is treated like null)
|
|
4152
4156
|
const base = baseTo(x);
|
|
4153
|
-
const
|
|
4154
|
-
return
|
|
4157
|
+
const nullishfilteredOut = util.filterNullAndUndefinedValues(base);
|
|
4158
|
+
return nullishfilteredOut;
|
|
4155
4159
|
};
|
|
4156
4160
|
return firestoreField({
|
|
4157
4161
|
default: (_b = config.default) !== null && _b !== void 0 ? _b : () => [],
|
|
4158
4162
|
defaultBeforeSave: config.defaultBeforeSave,
|
|
4159
|
-
fromData: input => sortFn(input.map(x => from(x)), false),
|
|
4160
|
-
toData: input => util.filterMaybeValues(sortFn(input, true)).map(x => to(x))
|
|
4163
|
+
fromData: input => sortFn(filterUnique(input.map(x => from(x))), false),
|
|
4164
|
+
toData: input => util.filterMaybeValues(sortFn(filterUnique(input), true)).map(x => to(x)) // filter then sort then map
|
|
4161
4165
|
});
|
|
4162
4166
|
}
|
|
4163
4167
|
/**
|
package/index.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { increment, onSnapshot, getDoc, deleteDoc, setDoc, updateDoc, doc, collectionGroup, collection, runTransaction, writeBatch, limit as limit$1, limitToLast as limitToLast$1, orderBy as orderBy$1, documentId, where as where$1, startAt as startAt$1, startAfter as startAfter$1, endAt as endAt$1, endBefore as endBefore$1, getDocs, query } from 'firebase/firestore';
|
|
2
|
-
import { cachedGetter, mergeModifiers, asArray, filterUndefinedValues, objectHasNoKeys, filterFalsyAndEmptyValues, build, wrapUseAsyncFunction, makeWithFactory, performMakeLoop, runAsyncTasksForValues, filterMaybeValues, useAsync, toModelFieldConversions, makeModelMapFunctions, modifyModelMapFunctions, assignValuesToPOJOFunction, KeyValueTypleValueFilter, asObjectCopyFactory, passThrough, isEqualToValueDecisionFunction, transformStringFunctionConfig, transformStringFunction, isDate, transformNumberFunction, sortValuesFunctionOrMapIdentityWithSortRef, unique, isMapIdentityFunction, chainMapSameFunctions, filterUniqueFunction, filterUniqueTransform, filterFromPOJOFunction, mapObjectMapFunction, copyObject, mapObjectMap, filterEmptyValues, modelFieldMapFunctions, toModelMapFunctions, latLngStringFunction, DEFAULT_LAT_LNG_STRING_VALUE, sortAscendingIndexNumberRefFunction, bitwiseSetDencoder, filterNullAndUndefinedValues, convertToArray, pushItemOrArrayItemsIntoArray, separateValues, UTF_8_START_CHARACTER, UTF_PRIVATE_USAGE_AREA_START, mergeArraysIntoArray, lastValue, flattenArrayOrValueArray, performAsyncTasks, batch, asGetter, getValueFromGetter, mapIdentityFunction, performTasksFromFactoryInParallelFunction, allowValueOnceFilter, flattenArray, groupValues, forEachInIterable, arrayToObject, takeFront, isOddNumber, objectToMap, ServerErrorResponse, toReadableError, capitalizeFirstLetter, lowercaseFirstLetter, toRelativeSlashPathStartType, mappedUseFunction, iterableToArray, setContainsAllValues, usePromise, slashPathFactory, errorMessageContainsString } from '@dereekb/util';
|
|
2
|
+
import { cachedGetter, mergeModifiers, asArray, filterUndefinedValues, objectHasNoKeys, filterFalsyAndEmptyValues, build, wrapUseAsyncFunction, makeWithFactory, performMakeLoop, runAsyncTasksForValues, filterMaybeValues, useAsync, toModelFieldConversions, makeModelMapFunctions, modifyModelMapFunctions, assignValuesToPOJOFunction, KeyValueTypleValueFilter, asObjectCopyFactory, passThrough, isEqualToValueDecisionFunction, transformStringFunctionConfig, transformStringFunction, isDate, transformNumberFunction, sortValuesFunctionOrMapIdentityWithSortRef, unique, isMapIdentityFunction, chainMapSameFunctions, filterUniqueFunction, filterUniqueTransform, filterFromPOJOFunction, mapObjectMapFunction, copyObject, mapObjectMap, filterEmptyValues, modelFieldMapFunctions, toModelMapFunctions, latLngStringFunction, DEFAULT_LAT_LNG_STRING_VALUE, sortAscendingIndexNumberRefFunction, bitwiseSetDencoder, MAP_IDENTITY, filterNullAndUndefinedValues, convertToArray, pushItemOrArrayItemsIntoArray, separateValues, UTF_8_START_CHARACTER, UTF_PRIVATE_USAGE_AREA_START, mergeArraysIntoArray, lastValue, flattenArrayOrValueArray, performAsyncTasks, batch, asGetter, getValueFromGetter, mapIdentityFunction, performTasksFromFactoryInParallelFunction, allowValueOnceFilter, flattenArray, groupValues, forEachInIterable, arrayToObject, takeFront, isOddNumber, objectToMap, ServerErrorResponse, toReadableError, capitalizeFirstLetter, lowercaseFirstLetter, toRelativeSlashPathStartType, mappedUseFunction, iterableToArray, setContainsAllValues, usePromise, slashPathFactory, errorMessageContainsString } from '@dereekb/util';
|
|
3
3
|
import { filterMaybe, lazyFrom, itemAccumulator, ItemPageIterator, MappedPageItemIterationInstance } from '@dereekb/rxjs';
|
|
4
4
|
import { from, map, combineLatest, shareReplay, of, exhaustMap, Observable, switchMap, timer, skip } from 'rxjs';
|
|
5
5
|
import { UNKNOWN_WEBSITE_LINK_TYPE, decodeWebsiteLinkEncodedDataToWebsiteFileLink, encodeWebsiteFileLinkToWebsiteLinkEncodedData, AbstractModelPermissionService, grantedRoleMapReader, noAccessRoleMap, fullAccessRoleMap } from '@dereekb/model';
|
|
@@ -4392,6 +4392,10 @@ function firestoreFieldConfigToModelMapFunctionsRef(config) {
|
|
|
4392
4392
|
*/
|
|
4393
4393
|
function firestoreObjectArray(config) {
|
|
4394
4394
|
var _objectField, _config$default9;
|
|
4395
|
+
const {
|
|
4396
|
+
filterUnique: inputFilterUnique
|
|
4397
|
+
} = config;
|
|
4398
|
+
const filterUnique = inputFilterUnique != null ? inputFilterUnique : MAP_IDENTITY;
|
|
4395
4399
|
const objectField = (_objectField = config.objectField) != null ? _objectField : firestoreFieldConfigToModelMapFunctionsRef(config.firestoreField);
|
|
4396
4400
|
const sortFn = sortValuesFunctionOrMapIdentityWithSortRef(config);
|
|
4397
4401
|
const {
|
|
@@ -4401,14 +4405,15 @@ function firestoreObjectArray(config) {
|
|
|
4401
4405
|
const to = x => {
|
|
4402
4406
|
// remove null/undefined values from each field when converting to in order to mirror firestore usage (undefined is treated like null)
|
|
4403
4407
|
const base = baseTo(x);
|
|
4404
|
-
const
|
|
4405
|
-
return
|
|
4408
|
+
const nullishfilteredOut = filterNullAndUndefinedValues(base);
|
|
4409
|
+
return nullishfilteredOut;
|
|
4406
4410
|
};
|
|
4407
4411
|
return firestoreField({
|
|
4408
4412
|
default: (_config$default9 = config.default) != null ? _config$default9 : () => [],
|
|
4409
4413
|
defaultBeforeSave: config.defaultBeforeSave,
|
|
4410
|
-
fromData: input => sortFn(input.map(x => from(x)), false),
|
|
4411
|
-
|
|
4414
|
+
fromData: input => sortFn(filterUnique(input.map(x => from(x))), false),
|
|
4415
|
+
// map then filter then sort
|
|
4416
|
+
toData: input => filterMaybeValues(sortFn(filterUnique(input), true)).map(x => to(x)) // filter then sort then map
|
|
4412
4417
|
});
|
|
4413
4418
|
}
|
|
4414
4419
|
|
package/package.json
CHANGED
|
@@ -325,7 +325,12 @@ export declare const firestoreModelIdGrantedRoleArrayMap: () => FirestoreModelFi
|
|
|
325
325
|
/**
|
|
326
326
|
* firestoreObjectArray configuration
|
|
327
327
|
*/
|
|
328
|
-
export type FirestoreObjectArrayFieldConfig<T extends object, O extends object = FirestoreModelData<T>> = DefaultMapConfiguredFirestoreFieldConfig<T[], O[]> & (FirestoreObjectArrayFieldConfigObjectFieldInput<T, O> | FirestoreObjectArrayFieldConfigFirestoreFieldInput<T, O>) & Partial<SortCompareFunctionRef<T
|
|
328
|
+
export type FirestoreObjectArrayFieldConfig<T extends object, O extends object = FirestoreModelData<T>> = DefaultMapConfiguredFirestoreFieldConfig<T[], O[]> & (FirestoreObjectArrayFieldConfigObjectFieldInput<T, O> | FirestoreObjectArrayFieldConfigFirestoreFieldInput<T, O>) & Partial<SortCompareFunctionRef<T>> & {
|
|
329
|
+
/**
|
|
330
|
+
* Filters the objects array uniquely.
|
|
331
|
+
*/
|
|
332
|
+
readonly filterUnique?: FilterUniqueFunction<T, any>;
|
|
333
|
+
};
|
|
329
334
|
export type FirestoreObjectArrayFieldConfigObjectFieldInput<T extends object, O extends object = FirestoreModelData<T>> = {
|
|
330
335
|
/**
|
|
331
336
|
* The field to use for conversion.
|
package/test/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [10.1.8](https://github.com/dereekb/dbx-components/compare/v10.1.7-dev...v10.1.8) (2024-04-02)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
5
9
|
## [10.1.7](https://github.com/dereekb/dbx-components/compare/v10.1.6-dev...v10.1.7) (2024-03-28)
|
|
6
10
|
|
|
7
11
|
|