@dereekb/firebase-server 13.6.10 → 13.6.12
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 +233 -89
- package/index.esm.js +234 -90
- package/mailgun/package.json +9 -9
- package/model/index.cjs.js +207 -63
- package/model/index.esm.js +208 -66
- package/model/package.json +9 -9
- package/model/src/lib/storagefile/storagefile.action.server.d.ts +69 -5
- package/oidc/package.json +10 -10
- package/package.json +10 -10
- package/src/lib/nest/app.d.ts +1 -1
- package/src/lib/nest/nest.provider.d.ts +82 -0
- package/test/package.json +10 -10
- package/zoho/package.json +9 -9
|
@@ -89,6 +89,31 @@ export declare abstract class AbstractFirebaseNestContext<A, Y extends FirebaseM
|
|
|
89
89
|
model(context: AuthDataRef, buildFn?: BuildFunction<FirebaseAppModelContext<A>>): InContextFirebaseModelsService<Y>;
|
|
90
90
|
useModel<T extends FirebaseModelsServiceTypes<Y>, O>(type: T, select: UseModelInput<FirebaseAppModelContext<A>, Y, T, O>): Promise<O>;
|
|
91
91
|
useModel<T extends FirebaseModelsServiceTypes<Y>>(type: T, select: UseModelInputForRolesReader<FirebaseAppModelContext<A>, Y, T>): Promise<FirebaseModelsServiceSelectionResultRolesReader<Y, T>>;
|
|
92
|
+
/**
|
|
93
|
+
* Loads and checks permissions for multiple models of the same type in parallel.
|
|
94
|
+
*
|
|
95
|
+
* Uses {@link performAsyncTasks} internally. The `use` function receives the array of
|
|
96
|
+
* successful {@link ContextGrantedModelRolesReader} values and an array of failed items.
|
|
97
|
+
*
|
|
98
|
+
* @param type - the model type to load
|
|
99
|
+
* @param select - selection params including keys array, roles, and use function
|
|
100
|
+
* @returns the result of the use function
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* const result = await nest.useMultipleModels('storageFile', {
|
|
105
|
+
* request,
|
|
106
|
+
* keys: ['storageFile/abc', 'storageFile/def'],
|
|
107
|
+
* roles: 'download',
|
|
108
|
+
* throwOnFirstError: false,
|
|
109
|
+
* use: (successful, failed) => ({
|
|
110
|
+
* documents: successful.map((r) => r.document),
|
|
111
|
+
* errors: failed
|
|
112
|
+
* })
|
|
113
|
+
* });
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
useMultipleModels<T extends FirebaseModelsServiceTypes<Y>, O>(type: T, select: UseMultipleModelsInput<FirebaseAppModelContext<A>, Y, T, O>): Promise<O>;
|
|
92
117
|
}
|
|
93
118
|
/**
|
|
94
119
|
* Input for {@link AbstractFirebaseNestContext.useModel} when only a roles reader is needed (no custom use function).
|
|
@@ -103,3 +128,60 @@ export type UseModelInputForRolesReader<C extends FirebaseModelServiceContext, Y
|
|
|
103
128
|
export type UseModelInput<C extends FirebaseModelServiceContext, Y extends FirebaseModelsService<any, C>, T extends FirebaseModelsServiceTypes<Y>, O> = UseModelInputForRolesReader<C, Y, T> & {
|
|
104
129
|
readonly use: UseFirebaseModelsServiceSelectionUseFunction<Y, T, O>;
|
|
105
130
|
};
|
|
131
|
+
/**
|
|
132
|
+
* Extracts the key type from a {@link UseFirebaseModelsServiceSelection} for a given model type.
|
|
133
|
+
*/
|
|
134
|
+
export type UseFirebaseModelsServiceSelectionKeyType<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> = UseFirebaseModelsServiceSelection<Y, T> extends {
|
|
135
|
+
key: infer K;
|
|
136
|
+
} ? K : never;
|
|
137
|
+
/**
|
|
138
|
+
* Input for {@link AbstractFirebaseNestContext.useMultipleModels}.
|
|
139
|
+
*
|
|
140
|
+
* Takes an array of keys and a `use` function that receives the successful roles readers
|
|
141
|
+
* and a {@link UseMultipleModelsFailure} describing any errors. Shared `roles` and `rolesSetIncludes` apply to all keys.
|
|
142
|
+
*/
|
|
143
|
+
export type UseMultipleModelsInput<C extends FirebaseModelServiceContext, Y extends FirebaseModelsService<any, C>, T extends FirebaseModelsServiceTypes<Y>, O> = Omit<UseModelInputForRolesReader<C, Y, T>, 'key'> & {
|
|
144
|
+
readonly keys: UseFirebaseModelsServiceSelectionKeyType<Y, T>[];
|
|
145
|
+
readonly use: UseMultipleModelsUseFunction<Y, T, O>;
|
|
146
|
+
/**
|
|
147
|
+
* When true, throws the first error directly without calling `use`.
|
|
148
|
+
*
|
|
149
|
+
* Defaults to true (unless `useOnFirstError` is set).
|
|
150
|
+
*/
|
|
151
|
+
readonly throwOnFirstError?: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* When true, calls `use` on the first error with an empty successful array
|
|
154
|
+
* and `abortedEarly: true` in the failure object.
|
|
155
|
+
*
|
|
156
|
+
* Takes precedence over `throwOnFirstError` when both are set.
|
|
157
|
+
*/
|
|
158
|
+
readonly useOnFirstError?: boolean;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Use function for {@link UseMultipleModelsInput}.
|
|
162
|
+
*
|
|
163
|
+
* Receives the successful roles readers and a failure object containing any errors.
|
|
164
|
+
*/
|
|
165
|
+
export type UseMultipleModelsUseFunction<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>, O> = (successful: FirebaseModelsServiceSelectionResultRolesReader<Y, T>[], failure: UseMultipleModelsFailure<Y, T>) => Promise<O> | O;
|
|
166
|
+
/**
|
|
167
|
+
* Failure information passed to the {@link UseMultipleModelsUseFunction}.
|
|
168
|
+
*
|
|
169
|
+
* Contains the array of failed items and whether the operation was aborted early
|
|
170
|
+
* (via `useOnFirstError`) before all keys were processed.
|
|
171
|
+
*/
|
|
172
|
+
export interface UseMultipleModelsFailure<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> {
|
|
173
|
+
readonly errors: UseMultipleModelsFailedItem<Y, T>[];
|
|
174
|
+
/**
|
|
175
|
+
* True when the operation was aborted on the first error (via `useOnFirstError`).
|
|
176
|
+
*
|
|
177
|
+
* When true, the successful array will be empty and not all keys may have been attempted.
|
|
178
|
+
*/
|
|
179
|
+
readonly abortedEarly: boolean;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Represents a key that failed permission checking in {@link AbstractFirebaseNestContext.useMultipleModels}.
|
|
183
|
+
*/
|
|
184
|
+
export interface UseMultipleModelsFailedItem<Y extends FirebaseModelsService<any, any>, T extends FirebaseModelsServiceTypes<Y>> {
|
|
185
|
+
readonly key: UseFirebaseModelsServiceSelectionKeyType<Y, T>;
|
|
186
|
+
readonly error: unknown;
|
|
187
|
+
}
|
package/test/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "13.6.
|
|
3
|
+
"version": "13.6.12",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.6.
|
|
6
|
-
"@dereekb/date": "13.6.
|
|
7
|
-
"@dereekb/firebase": "13.6.
|
|
8
|
-
"@dereekb/firebase-server": "13.6.
|
|
9
|
-
"@dereekb/model": "13.6.
|
|
10
|
-
"@dereekb/nestjs": "13.6.
|
|
11
|
-
"@dereekb/rxjs": "13.6.
|
|
12
|
-
"@dereekb/util": "13.6.
|
|
5
|
+
"@dereekb/analytics": "13.6.12",
|
|
6
|
+
"@dereekb/date": "13.6.12",
|
|
7
|
+
"@dereekb/firebase": "13.6.12",
|
|
8
|
+
"@dereekb/firebase-server": "13.6.12",
|
|
9
|
+
"@dereekb/model": "13.6.12",
|
|
10
|
+
"@dereekb/nestjs": "13.6.12",
|
|
11
|
+
"@dereekb/rxjs": "13.6.12",
|
|
12
|
+
"@dereekb/util": "13.6.12",
|
|
13
13
|
"@google-cloud/firestore": "^7.11.6",
|
|
14
14
|
"@google-cloud/storage": "^7.19.0",
|
|
15
15
|
"@nestjs/common": "^11.1.17",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"make-error": "^1.3.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@dereekb/nestjs": "13.6.
|
|
24
|
+
"@dereekb/nestjs": "13.6.12"
|
|
25
25
|
},
|
|
26
26
|
"exports": {
|
|
27
27
|
"./package.json": "./package.json",
|
package/zoho/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/zoho",
|
|
3
|
-
"version": "13.6.
|
|
3
|
+
"version": "13.6.12",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/analytics": "13.6.
|
|
6
|
-
"@dereekb/date": "13.6.
|
|
7
|
-
"@dereekb/model": "13.6.
|
|
8
|
-
"@dereekb/nestjs": "13.6.
|
|
9
|
-
"@dereekb/rxjs": "13.6.
|
|
10
|
-
"@dereekb/firebase": "13.6.
|
|
11
|
-
"@dereekb/util": "13.6.
|
|
12
|
-
"@dereekb/zoho": "13.6.
|
|
5
|
+
"@dereekb/analytics": "13.6.12",
|
|
6
|
+
"@dereekb/date": "13.6.12",
|
|
7
|
+
"@dereekb/model": "13.6.12",
|
|
8
|
+
"@dereekb/nestjs": "13.6.12",
|
|
9
|
+
"@dereekb/rxjs": "13.6.12",
|
|
10
|
+
"@dereekb/firebase": "13.6.12",
|
|
11
|
+
"@dereekb/util": "13.6.12",
|
|
12
|
+
"@dereekb/zoho": "13.6.12"
|
|
13
13
|
},
|
|
14
14
|
"exports": {
|
|
15
15
|
"./package.json": "./package.json",
|