@dereekb/firebase-server 13.1.0 → 13.2.1
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 +477 -24
- package/index.cjs.js.map +1 -1
- package/index.esm.js +468 -26
- package/index.esm.js.map +1 -1
- package/mailgun/package.json +8 -8
- package/model/package.json +8 -8
- package/package.json +9 -9
- package/src/lib/auth/auth.service.d.ts +370 -85
- package/src/lib/firestore/index.d.ts +1 -0
- package/src/lib/firestore/snapshot/index.d.ts +1 -0
- package/src/lib/firestore/snapshot/snapshot.field.d.ts +80 -0
- package/src/lib/nest/model/api.details.d.ts +249 -0
- package/src/lib/nest/model/call.model.function.d.ts +3 -2
- package/src/lib/nest/model/index.d.ts +1 -0
- package/src/lib/nest/model/specifier.function.d.ts +2 -1
- package/test/package.json +8 -8
- package/zoho/package.json +8 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './snapshot.field';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type Maybe, type Getter, type GetterOrValue } from '@dereekb/util';
|
|
2
|
+
import { type FirestoreModelFieldMapFunctionsConfig } from '@dereekb/firebase';
|
|
3
|
+
/**
|
|
4
|
+
* The source for the encryption secret.
|
|
5
|
+
*
|
|
6
|
+
* - If a string, it is used directly as the hex-encoded key (64 hex chars = 32 bytes).
|
|
7
|
+
* - If a Getter, it is called each time to retrieve the key (useful for rotation or lazy loading).
|
|
8
|
+
* - If an object with `env`, the key is read from the specified environment variable.
|
|
9
|
+
*/
|
|
10
|
+
export type FirestoreEncryptedFieldSecretSource = string | Getter<string> | {
|
|
11
|
+
env: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Configuration for encrypted Firestore fields.
|
|
15
|
+
*
|
|
16
|
+
* @template T - The JSON-serializable value type stored in the model.
|
|
17
|
+
*/
|
|
18
|
+
export interface FirestoreEncryptedFieldConfig<T> {
|
|
19
|
+
/**
|
|
20
|
+
* The encryption secret source.
|
|
21
|
+
*
|
|
22
|
+
* Expects a 64-character hex string representing a 32-byte AES-256 key.
|
|
23
|
+
*/
|
|
24
|
+
readonly secret: FirestoreEncryptedFieldSecretSource;
|
|
25
|
+
/**
|
|
26
|
+
* Default model value when the Firestore data is null/undefined.
|
|
27
|
+
*/
|
|
28
|
+
readonly default?: GetterOrValue<T>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Configuration for optional encrypted Firestore fields.
|
|
32
|
+
*
|
|
33
|
+
* @template T - The JSON-serializable value type stored in the model.
|
|
34
|
+
*/
|
|
35
|
+
export interface OptionalFirestoreEncryptedFieldConfig<T> {
|
|
36
|
+
/**
|
|
37
|
+
* The encryption secret source.
|
|
38
|
+
*
|
|
39
|
+
* Expects a 64-character hex string representing a 32-byte AES-256 key.
|
|
40
|
+
*/
|
|
41
|
+
readonly secret: FirestoreEncryptedFieldSecretSource;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates a Firestore field mapping that encrypts/decrypts a JSON-serializable value
|
|
45
|
+
* using AES-256-GCM. The value is stored in Firestore as a base64-encoded string.
|
|
46
|
+
*
|
|
47
|
+
* The encryption key is resolved from the configured secret source on each read/write,
|
|
48
|
+
* allowing for key rotation via environment variable changes.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const jwksField = firestoreEncryptedField<JWKSet>({
|
|
53
|
+
* secret: { env: 'FIRESTORE_ENCRYPTION_KEY' },
|
|
54
|
+
* default: () => ({ keys: [] })
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @template T - The JSON-serializable value type.
|
|
59
|
+
* @param config - Encryption field configuration.
|
|
60
|
+
* @returns A field mapping configuration for encrypted values.
|
|
61
|
+
*/
|
|
62
|
+
export declare function firestoreEncryptedField<T>(config: FirestoreEncryptedFieldConfig<T>): FirestoreModelFieldMapFunctionsConfig<T, string>;
|
|
63
|
+
/**
|
|
64
|
+
* Creates a Firestore field mapping for an optional encrypted field.
|
|
65
|
+
*
|
|
66
|
+
* When the value is null/undefined, it is stored/read as null. When present, it is
|
|
67
|
+
* encrypted/decrypted using AES-256-GCM.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const optionalSecretField = optionalFirestoreEncryptedField<OAuthClientSecret>({
|
|
72
|
+
* secret: { env: 'FIRESTORE_ENCRYPTION_KEY' }
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @template T - The JSON-serializable value type.
|
|
77
|
+
* @param config - Encryption field configuration.
|
|
78
|
+
* @returns A field mapping configuration for optional encrypted values.
|
|
79
|
+
*/
|
|
80
|
+
export declare function optionalFirestoreEncryptedField<T>(config: OptionalFirestoreEncryptedFieldConfig<T>): FirestoreModelFieldMapFunctionsConfig<Maybe<T>, Maybe<string>>;
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { type Maybe } from '@dereekb/util';
|
|
2
|
+
/**
|
|
3
|
+
* Reference to a type that can produce a JSON Schema representation.
|
|
4
|
+
*
|
|
5
|
+
* Compatible with ArkType's Type.toJsonSchema() and any other schema library.
|
|
6
|
+
* The optional `options` parameter allows callers to pass configuration (e.g.,
|
|
7
|
+
* ArkType's fallback handlers for predicates that can't be represented in JSON Schema).
|
|
8
|
+
*/
|
|
9
|
+
export interface JsonSchemaRef {
|
|
10
|
+
toJsonSchema(options?: object): object;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* MCP-specific customization for a model function.
|
|
14
|
+
*
|
|
15
|
+
* When omitted, defaults are auto-generated from the handler's position in the call model tree.
|
|
16
|
+
*/
|
|
17
|
+
export interface OnCallModelFunctionMcpDetails {
|
|
18
|
+
/**
|
|
19
|
+
* Custom tool description for the MCP tool.
|
|
20
|
+
*/
|
|
21
|
+
readonly description?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Custom tool name override.
|
|
24
|
+
*/
|
|
25
|
+
readonly name?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* API details metadata for a single model call handler function.
|
|
29
|
+
*
|
|
30
|
+
* Carries schema info (input/output types) and MCP-specific customization.
|
|
31
|
+
* Attached to handler functions via withApiDetails().
|
|
32
|
+
*/
|
|
33
|
+
export interface OnCallModelFunctionApiDetails {
|
|
34
|
+
/**
|
|
35
|
+
* The input parameter type. Must implement toJsonSchema() for MCP tool input schema generation.
|
|
36
|
+
*/
|
|
37
|
+
readonly inputType?: JsonSchemaRef;
|
|
38
|
+
/**
|
|
39
|
+
* The output result type. Optional — many handlers return void or generic results.
|
|
40
|
+
*/
|
|
41
|
+
readonly outputType?: JsonSchemaRef;
|
|
42
|
+
/**
|
|
43
|
+
* MCP-specific customization. Auto-generated if omitted.
|
|
44
|
+
*/
|
|
45
|
+
readonly mcp?: OnCallModelFunctionMcpDetails;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Ref interface for objects (functions) that carry handler-level _apiDetails.
|
|
49
|
+
*/
|
|
50
|
+
export interface OnCallModelFunctionApiDetailsRef {
|
|
51
|
+
readonly _apiDetails?: OnCallModelFunctionApiDetails;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* API details aggregated at the specifier level.
|
|
55
|
+
*
|
|
56
|
+
* Produced by onCallSpecifierHandler when its handlers carry _apiDetails.
|
|
57
|
+
* Maps specifier keys (e.g., '_', 'username', 'fromUpload') to handler-level details.
|
|
58
|
+
*/
|
|
59
|
+
export interface OnCallSpecifierApiDetails {
|
|
60
|
+
readonly specifiers: {
|
|
61
|
+
readonly [key: string]: OnCallModelFunctionApiDetails | undefined;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* API details aggregated at the CRUD model level.
|
|
66
|
+
*
|
|
67
|
+
* Produced by onCallCreateModel/onCallReadModel/etc.
|
|
68
|
+
* Maps model type strings (e.g., 'profile', 'guestbook') to either handler-level
|
|
69
|
+
* details (for direct handlers) or specifier-level details (for specifier handlers).
|
|
70
|
+
*/
|
|
71
|
+
export interface OnCallCrudModelApiDetails {
|
|
72
|
+
readonly modelTypes: {
|
|
73
|
+
readonly [key: string]: OnCallModelFunctionApiDetails | OnCallSpecifierApiDetails | undefined;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* API details aggregated at the top call model level.
|
|
78
|
+
*
|
|
79
|
+
* Produced by onCallModel. Maps CRUD operation strings to their model-level details.
|
|
80
|
+
*/
|
|
81
|
+
export interface OnCallModelApiDetails {
|
|
82
|
+
readonly create?: OnCallCrudModelApiDetails;
|
|
83
|
+
readonly read?: OnCallCrudModelApiDetails;
|
|
84
|
+
readonly update?: OnCallCrudModelApiDetails;
|
|
85
|
+
readonly delete?: OnCallCrudModelApiDetails;
|
|
86
|
+
readonly [call: string]: OnCallCrudModelApiDetails | undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Union of all API details types at any aggregation level.
|
|
90
|
+
*/
|
|
91
|
+
export type OnCallApiDetails = OnCallModelFunctionApiDetails | OnCallSpecifierApiDetails | OnCallCrudModelApiDetails | OnCallModelApiDetails;
|
|
92
|
+
/**
|
|
93
|
+
* Ref interface for functions at any level of the call model tree.
|
|
94
|
+
*/
|
|
95
|
+
export interface OnCallApiDetailsRef {
|
|
96
|
+
readonly _apiDetails?: OnCallApiDetails;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Whether the details are specifier-level (has specifiers map).
|
|
100
|
+
*/
|
|
101
|
+
export declare function isOnCallSpecifierApiDetails(details: OnCallApiDetails): details is OnCallSpecifierApiDetails;
|
|
102
|
+
/**
|
|
103
|
+
* Whether the details are CRUD-model-level (has modelTypes map).
|
|
104
|
+
*/
|
|
105
|
+
export declare function isOnCallCrudModelApiDetails(details: OnCallApiDetails): details is OnCallCrudModelApiDetails;
|
|
106
|
+
/**
|
|
107
|
+
* Whether the details are handler-level (leaf node — no specifiers or modelTypes).
|
|
108
|
+
*/
|
|
109
|
+
export declare function isOnCallHandlerApiDetails(details: OnCallApiDetails): details is OnCallModelFunctionApiDetails;
|
|
110
|
+
/**
|
|
111
|
+
* Configuration for withApiDetails().
|
|
112
|
+
*
|
|
113
|
+
* Combines API metadata, auth configuration, and the handler function into a single config object.
|
|
114
|
+
*/
|
|
115
|
+
export interface WithApiDetailsConfig<F extends (...args: any[]) => any> extends OnCallModelFunctionApiDetails {
|
|
116
|
+
/**
|
|
117
|
+
* When true, marks the handler as not requiring auth (equivalent to optionalAuthContext).
|
|
118
|
+
* Sets `_requireAuth = false` on the function, allowing it to be called without auth data.
|
|
119
|
+
*
|
|
120
|
+
* This replaces the need to compose withApiDetails + optionalAuthContext separately,
|
|
121
|
+
* which would lose _apiDetails since optionalAuthContext creates a new wrapper function.
|
|
122
|
+
*/
|
|
123
|
+
readonly optionalAuth?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* The handler function.
|
|
126
|
+
*/
|
|
127
|
+
readonly fn: F;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Attaches API details metadata to a handler function.
|
|
131
|
+
*
|
|
132
|
+
* The handler function is provided in the config object alongside its metadata.
|
|
133
|
+
* The function is returned unchanged but with the _apiDetails property set.
|
|
134
|
+
* Compatible with all handler types (create, read, update, delete, specifier).
|
|
135
|
+
*
|
|
136
|
+
* When `optionalAuth: true` is set, also marks the function as not requiring auth
|
|
137
|
+
* (same effect as optionalAuthContext). This avoids the composition issue where
|
|
138
|
+
* optionalAuthContext(withApiDetails(...)) would lose the _apiDetails.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // Handler with api details (auth required by default)
|
|
143
|
+
* export const createGuestbook: DemoCreateModelFunction<CreateGuestbookParams> = withApiDetails({
|
|
144
|
+
* inputType: createGuestbookParamsType,
|
|
145
|
+
* fn: async (request) => {
|
|
146
|
+
* const { nest, auth, data } = request;
|
|
147
|
+
* const result = await nest.guestbookActions.createGuestbook(data);
|
|
148
|
+
* return onCallCreateModelResultWithDocs(await result());
|
|
149
|
+
* }
|
|
150
|
+
* });
|
|
151
|
+
*
|
|
152
|
+
* // Handler with optional auth
|
|
153
|
+
* export const profileCreate: DemoCreateModelFunction<{}> = withApiDetails({
|
|
154
|
+
* optionalAuth: true,
|
|
155
|
+
* fn: async (request) => { ... }
|
|
156
|
+
* });
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function withApiDetails<F extends (...args: any[]) => any>(config: WithApiDetailsConfig<F>): F & OnCallModelFunctionApiDetailsRef;
|
|
160
|
+
/**
|
|
161
|
+
* Reads _apiDetails from a function if present.
|
|
162
|
+
*/
|
|
163
|
+
export declare function readApiDetails(fn: Maybe<OnCallApiDetailsRef>): OnCallApiDetails | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* Aggregates _apiDetails from a specifier handler config object.
|
|
166
|
+
*
|
|
167
|
+
* Returns OnCallSpecifierApiDetails if any handlers have _apiDetails, otherwise undefined.
|
|
168
|
+
*/
|
|
169
|
+
export declare function aggregateSpecifierApiDetails(config: {
|
|
170
|
+
readonly [key: string]: Maybe<OnCallApiDetailsRef>;
|
|
171
|
+
}): OnCallSpecifierApiDetails | undefined;
|
|
172
|
+
/**
|
|
173
|
+
* Aggregates _apiDetails from a model type map (used by onCallCreateModel, etc.).
|
|
174
|
+
*
|
|
175
|
+
* Returns OnCallCrudModelApiDetails if any handlers have _apiDetails, otherwise undefined.
|
|
176
|
+
*/
|
|
177
|
+
export declare function aggregateCrudModelApiDetails(map: {
|
|
178
|
+
readonly [key: string]: Maybe<OnCallApiDetailsRef>;
|
|
179
|
+
}): OnCallCrudModelApiDetails | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* Aggregates _apiDetails from the top-level call model map.
|
|
182
|
+
*
|
|
183
|
+
* Returns OnCallModelApiDetails if any CRUD handlers have _apiDetails, otherwise undefined.
|
|
184
|
+
*/
|
|
185
|
+
export declare function aggregateModelApiDetails(map: {
|
|
186
|
+
readonly [key: string]: Maybe<OnCallApiDetailsRef>;
|
|
187
|
+
}): OnCallModelApiDetails | undefined;
|
|
188
|
+
/**
|
|
189
|
+
* Handler or specifier-level details for a single CRUD call on a model type.
|
|
190
|
+
*/
|
|
191
|
+
export type ModelCallApiDetails = OnCallModelFunctionApiDetails | OnCallSpecifierApiDetails;
|
|
192
|
+
/**
|
|
193
|
+
* CRUD calls available for a single model type.
|
|
194
|
+
*
|
|
195
|
+
* Keyed by call type ('create', 'read', 'update', 'delete').
|
|
196
|
+
* Each value is either handler-level details (direct handler) or specifier-level details.
|
|
197
|
+
*/
|
|
198
|
+
export interface ModelCallsApiDetails {
|
|
199
|
+
readonly create?: ModelCallApiDetails;
|
|
200
|
+
readonly read?: ModelCallApiDetails;
|
|
201
|
+
readonly update?: ModelCallApiDetails;
|
|
202
|
+
readonly delete?: ModelCallApiDetails;
|
|
203
|
+
readonly [call: string]: ModelCallApiDetails | undefined;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* API details organized by model type first, then by CRUD call type.
|
|
207
|
+
*
|
|
208
|
+
* This is the consumer-friendly view of the call model tree — models are the top-level
|
|
209
|
+
* grouping, with their available CRUD operations nested underneath.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```typescript
|
|
213
|
+
* const details = getModelApiDetails(callModelFn);
|
|
214
|
+
* const storageFileGroupCalls = details.models['storageFileGroup'].calls;
|
|
215
|
+
* // => { update: { specifiers: { _: {...}, regenerateContent: {...} } } }
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
export interface ModelApiDetailsResult {
|
|
219
|
+
readonly models: {
|
|
220
|
+
readonly [modelType: string]: ModelApiDetailsModelEntry;
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* API details for a single model type.
|
|
225
|
+
*/
|
|
226
|
+
export interface ModelApiDetailsModelEntry {
|
|
227
|
+
/**
|
|
228
|
+
* The CRUD calls available for this model type.
|
|
229
|
+
*/
|
|
230
|
+
readonly calls: ModelCallsApiDetails;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Extracts and pivots API details from a call model function into a model-first view.
|
|
234
|
+
*
|
|
235
|
+
* The internal aggregation tree is organized as CRUD → modelType. This function
|
|
236
|
+
* pivots it to modelType → CRUD, which is the natural shape for MCP tool generation
|
|
237
|
+
* and schema introspection.
|
|
238
|
+
*
|
|
239
|
+
* @param callModelFn The function returned by onCallModel(), or any object with _apiDetails.
|
|
240
|
+
* @returns Model-first API details, or undefined if no _apiDetails are present.
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* const details = getModelApiDetails(demoCallModel);
|
|
245
|
+
* // details.models['guestbook'].calls.create => { inputType: createGuestbookParamsType }
|
|
246
|
+
* // details.models['profile'].calls.update => { specifiers: { _: {...}, username: {...} } }
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
export declare function getModelApiDetails(callModelFn: Maybe<OnCallApiDetailsRef>): ModelApiDetailsResult | undefined;
|
|
@@ -3,6 +3,7 @@ import { type FirestoreModelIdentity, type FirestoreModelType, type FirestoreMod
|
|
|
3
3
|
import { type OnCallWithAuthAwareNestContext, type OnCallWithAuthAwareNestRequireAuthRef, type OnCallWithNestContext } from '../function/call';
|
|
4
4
|
import { type AssertModelCrudRequestFunctionContextCrudType, type AssertModelCrudRequestFunction } from './crud.assert.function';
|
|
5
5
|
import { type NestContextCallableRequest } from '../function/nest';
|
|
6
|
+
import { type OnCallApiDetailsRef } from './api.details';
|
|
6
7
|
export type OnCallModelMap = {
|
|
7
8
|
readonly [call: OnCallFunctionType]: OnCallWithNestContext<any, OnCallTypedModelParams>;
|
|
8
9
|
};
|
|
@@ -15,7 +16,7 @@ export interface OnCallModelConfig {
|
|
|
15
16
|
* @param map
|
|
16
17
|
* @returns
|
|
17
18
|
*/
|
|
18
|
-
export declare function onCallModel(map: OnCallModelMap, config?: OnCallModelConfig): OnCallWithNestContext<unknown, OnCallTypedModelParams
|
|
19
|
+
export declare function onCallModel(map: OnCallModelMap, config?: OnCallModelConfig): OnCallWithNestContext<unknown, OnCallTypedModelParams> & OnCallApiDetailsRef;
|
|
19
20
|
export declare function onCallModelMissingCallTypeError(): import("firebase-functions/https").HttpsError;
|
|
20
21
|
export declare function onCallModelUnknownCallTypeError(call: OnCallFunctionType): import("firebase-functions/https").HttpsError;
|
|
21
22
|
export type OnCallWithCallTypeModelMap<N, T extends FirestoreModelIdentity = FirestoreModelIdentity> = {
|
|
@@ -27,4 +28,4 @@ export interface OnCallWithCallTypeModelConfig<N> {
|
|
|
27
28
|
readonly preAssert?: AssertModelCrudRequestFunction<N, OnCallTypedModelParams>;
|
|
28
29
|
readonly throwOnUnknownModelType: (modelType: FirestoreModelType) => Error;
|
|
29
30
|
}
|
|
30
|
-
export declare function _onCallWithCallTypeFunction<N>(map: OnCallWithCallTypeModelMap<N>, config: OnCallWithCallTypeModelConfig<N>): OnCallWithAuthAwareNestContext<N, OnCallTypedModelParams, unknown
|
|
31
|
+
export declare function _onCallWithCallTypeFunction<N>(map: OnCallWithCallTypeModelMap<N>, config: OnCallWithCallTypeModelConfig<N>): OnCallWithAuthAwareNestContext<N, OnCallTypedModelParams, unknown> & OnCallApiDetailsRef;
|
|
@@ -2,6 +2,7 @@ import { type ModelFirebaseCrudFunctionSpecifier, type ModelFirebaseCrudFunction
|
|
|
2
2
|
import { type Maybe, type PromiseOrValue } from '@dereekb/util';
|
|
3
3
|
import { type NestContextCallableRequestWithOptionalAuth, type NestContextCallableRequestWithAuth } from '../function/nest';
|
|
4
4
|
import { type OnCallWithAuthAwareNestRequireAuthRef, type OnCallWithNestContext } from '../function/call';
|
|
5
|
+
import { type OnCallApiDetailsRef } from './api.details';
|
|
5
6
|
export type OnCallSpecifierHandlerNestContextRequest<N, I = unknown> = NestContextCallableRequestWithAuth<N, I> & ModelFirebaseCrudFunctionSpecifierRef;
|
|
6
7
|
export type OnCallSpecifierHandlerFunctionWithAuth<N, I = unknown, O = unknown> = ((request: OnCallSpecifierHandlerNestContextRequest<N, I>) => PromiseOrValue<O>) & {
|
|
7
8
|
readonly _requiresAuth?: true;
|
|
@@ -18,5 +19,5 @@ export type OnCallSpecifierHandlerConfig<N> = {
|
|
|
18
19
|
readonly _?: Maybe<OnCallSpecifierHandlerFunction<N, any, any>>;
|
|
19
20
|
readonly [key: string]: Maybe<OnCallSpecifierHandlerFunction<N, any, any>>;
|
|
20
21
|
};
|
|
21
|
-
export declare function onCallSpecifierHandler<N, I = any, O = any>(config: OnCallSpecifierHandlerConfig<N>): OnCallWithNestContext<N, I, O> & OnCallWithAuthAwareNestRequireAuthRef;
|
|
22
|
+
export declare function onCallSpecifierHandler<N, I = any, O = any>(config: OnCallSpecifierHandlerConfig<N>): OnCallWithNestContext<N, I, O> & OnCallWithAuthAwareNestRequireAuthRef & OnCallApiDetailsRef;
|
|
22
23
|
export declare function unknownModelCrudFunctionSpecifierError(specifier: ModelFirebaseCrudFunctionSpecifier): import("firebase-functions/https").HttpsError;
|
package/test/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/test",
|
|
3
|
-
"version": "13.1
|
|
3
|
+
"version": "13.2.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/date": "13.1
|
|
6
|
-
"@dereekb/firebase": "13.1
|
|
7
|
-
"@dereekb/firebase-server": "13.1
|
|
8
|
-
"@dereekb/model": "13.1
|
|
9
|
-
"@dereekb/nestjs": "13.1
|
|
10
|
-
"@dereekb/rxjs": "13.1
|
|
11
|
-
"@dereekb/util": "13.1
|
|
5
|
+
"@dereekb/date": "13.2.1",
|
|
6
|
+
"@dereekb/firebase": "13.2.1",
|
|
7
|
+
"@dereekb/firebase-server": "13.2.1",
|
|
8
|
+
"@dereekb/model": "13.2.1",
|
|
9
|
+
"@dereekb/nestjs": "13.2.1",
|
|
10
|
+
"@dereekb/rxjs": "13.2.1",
|
|
11
|
+
"@dereekb/util": "13.2.1",
|
|
12
12
|
"@google-cloud/firestore": "^7.11.6",
|
|
13
13
|
"@google-cloud/storage": "^7.19.0",
|
|
14
14
|
"@nestjs/common": "^11.0.0",
|
package/zoho/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/firebase-server/zoho",
|
|
3
|
-
"version": "13.1
|
|
3
|
+
"version": "13.2.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@dereekb/date": "13.1
|
|
6
|
-
"@dereekb/model": "13.1
|
|
7
|
-
"@dereekb/nestjs": "13.1
|
|
8
|
-
"@dereekb/rxjs": "13.1
|
|
9
|
-
"@dereekb/firebase": "13.1
|
|
10
|
-
"@dereekb/util": "13.1
|
|
11
|
-
"@dereekb/zoho": "13.1
|
|
5
|
+
"@dereekb/date": "13.2.1",
|
|
6
|
+
"@dereekb/model": "13.2.1",
|
|
7
|
+
"@dereekb/nestjs": "13.2.1",
|
|
8
|
+
"@dereekb/rxjs": "13.2.1",
|
|
9
|
+
"@dereekb/firebase": "13.2.1",
|
|
10
|
+
"@dereekb/util": "13.2.1",
|
|
11
|
+
"@dereekb/zoho": "13.2.1"
|
|
12
12
|
},
|
|
13
13
|
"exports": {
|
|
14
14
|
"./package.json": "./package.json",
|