@dereekb/firebase-server 14.0.1 → 14.1.0

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.
Files changed (34) hide show
  1. package/calcom/index.esm.js +3 -2
  2. package/calcom/package.json +10 -10
  3. package/calcom/src/lib/calcom.oauth.connection.service.d.ts +2 -2
  4. package/discord/index.esm.js +174 -19
  5. package/discord/package.json +10 -10
  6. package/discord/src/lib/discord.oauth.connection.config.d.ts +43 -2
  7. package/discord/src/lib/discord.oauth.connection.module.d.ts +18 -1
  8. package/discord/src/lib/discord.oauth.connection.service.d.ts +40 -3
  9. package/index.esm.js +9 -1
  10. package/mailgun/package.json +9 -9
  11. package/mcp/package.json +11 -11
  12. package/model/index.esm.js +5182 -2369
  13. package/model/package.json +9 -9
  14. package/model/src/lib/userexternalconnection/index.d.ts +2 -0
  15. package/model/src/lib/userexternalconnection/oauth/index.d.ts +1 -0
  16. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.config.d.ts +51 -0
  17. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.controller.d.ts +49 -0
  18. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.refresh.d.ts +35 -0
  19. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.service.d.ts +300 -7
  20. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.state.d.ts +213 -12
  21. package/model/src/lib/userexternalconnection/oauth/userexternalconnection.oauth.throttle.d.ts +81 -0
  22. package/model/src/lib/userexternalconnection/userexternalconnection.action.server.d.ts +214 -1
  23. package/model/src/lib/userexternalconnection/userexternalconnection.error.d.ts +118 -5
  24. package/model/src/lib/userexternalconnection/userexternalconnection.module.d.ts +52 -2
  25. package/model/src/lib/userexternalconnection/userexternalconnection.policy.d.ts +117 -0
  26. package/model/src/lib/userexternalconnection/userexternalconnection.signin.d.ts +286 -0
  27. package/oidc/package.json +10 -10
  28. package/package.json +12 -12
  29. package/src/lib/auth/auth.service.d.ts +26 -0
  30. package/test/package.json +11 -11
  31. package/twilio/package.json +8 -8
  32. package/zoho/index.esm.js +3 -2
  33. package/zoho/package.json +10 -10
  34. package/zoho/src/lib/zoho.oauth.connection.service.d.ts +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -58,17 +58,17 @@
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@cantoo/pdf-lib": "^2.6.5",
61
- "@dereekb/analytics": "14.0.1",
62
- "@dereekb/calcom": "14.0.1",
63
- "@dereekb/date": "14.0.1",
64
- "@dereekb/dbx-core": "14.0.1",
65
- "@dereekb/discord": "14.0.1",
66
- "@dereekb/firebase": "14.0.1",
67
- "@dereekb/model": "14.0.1",
68
- "@dereekb/nestjs": "14.0.1",
69
- "@dereekb/rxjs": "14.0.1",
70
- "@dereekb/util": "14.0.1",
71
- "@dereekb/zoho": "14.0.1",
61
+ "@dereekb/analytics": "14.1.0",
62
+ "@dereekb/calcom": "14.1.0",
63
+ "@dereekb/date": "14.1.0",
64
+ "@dereekb/dbx-core": "14.1.0",
65
+ "@dereekb/discord": "14.1.0",
66
+ "@dereekb/firebase": "14.1.0",
67
+ "@dereekb/model": "14.1.0",
68
+ "@dereekb/nestjs": "14.1.0",
69
+ "@dereekb/rxjs": "14.1.0",
70
+ "@dereekb/util": "14.1.0",
71
+ "@dereekb/zoho": "14.1.0",
72
72
  "@google-cloud/firestore": "^7.11.6",
73
73
  "@google-cloud/storage": "^7.22.0",
74
74
  "@modelcontextprotocol/node": "2.0.0",
@@ -167,6 +167,31 @@ export interface FirebaseServerAuthUserContext extends FirebaseServerAuthUserIde
167
167
  * Removes all custom claims from the user.
168
168
  */
169
169
  clearClaims(): Promise<void>;
170
+ /**
171
+ * Mints a short-lived Firebase Auth custom token the client exchanges via `signInWithCustomToken`.
172
+ *
173
+ * This is how a sign-in performed OUTSIDE Firebase Auth — a third-party OAuth provider Firebase has
174
+ * no native provider for — is bridged back into it: the server authenticates the user against the
175
+ * provider, resolves them to a uid, and mints a token for that uid. The alternative (a generic
176
+ * OIDC/SAML provider) requires the one-way Identity Platform upgrade, which this workspace avoids.
177
+ *
178
+ * ## Two operational notes
179
+ *
180
+ * 1. `createCustomToken` NESTS the developer claims under a `claims` key inside the unexchanged JWT
181
+ * (see `decodeEncodedCreateCustomTokenResult()` in `@dereekb/firebase-server/test`). This is only
182
+ * a property of the token BEFORE it is exchanged — after `signInWithCustomToken`, Firebase spreads
183
+ * them to the top level of the ID token, where security rules read them. Do not pre-flatten.
184
+ * 2. Minting requires `iam.serviceAccounts.signBlob` (the Service Account Token Creator role) when
185
+ * the Admin SDK runs on default credentials rather than an explicit key file. The Auth emulator
186
+ * does not check this, so the standard failure mode is "works locally, 403s in production".
187
+ *
188
+ * The user's STORED custom claims are applied by Firebase on exchange regardless of this argument;
189
+ * `claims` here adds one-off claims to this sign-in only, and does not persist anything.
190
+ *
191
+ * @param claims - Optional additional claims to embed in this token.
192
+ * @returns The custom token to hand to the client.
193
+ */
194
+ mintCustomToken<T extends AuthClaimsObject = AuthClaimsObject>(claims?: Maybe<AuthClaimsUpdate<T>>): Promise<string>;
170
195
  }
171
196
  /**
172
197
  * Base implementation of {@link FirebaseServerAuthUserContext} that manages a single user's
@@ -247,6 +272,7 @@ export declare abstract class AbstractFirebaseServerAuthUserContext<S extends Fi
247
272
  updateClaims<T extends AuthClaimsObject = AuthClaimsObject>(claims: AuthClaimsUpdate<T>): Promise<void>;
248
273
  clearClaims(): Promise<void>;
249
274
  setClaims<T extends AuthClaimsObject = AuthClaimsObject>(claims: Maybe<AuthClaimsUpdate<T>>): Promise<void>;
275
+ mintCustomToken<T extends AuthClaimsObject = AuthClaimsObject>(claims?: Maybe<AuthClaimsUpdate<T>>): Promise<string>;
250
276
  }
251
277
  /**
252
278
  * Read-only auth context derived from a Firebase callable function request.
package/test/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/test",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "type": "module",
5
5
  "peerDependencies": {
6
- "@dereekb/analytics": "14.0.1",
7
- "@dereekb/date": "14.0.1",
8
- "@dereekb/firebase": "14.0.1",
9
- "@dereekb/firebase-server": "14.0.1",
10
- "@dereekb/firebase-server/oidc": "14.0.1",
11
- "@dereekb/model": "14.0.1",
12
- "@dereekb/nestjs": "14.0.1",
13
- "@dereekb/rxjs": "14.0.1",
14
- "@dereekb/util": "14.0.1",
6
+ "@dereekb/analytics": "14.1.0",
7
+ "@dereekb/date": "14.1.0",
8
+ "@dereekb/firebase": "14.1.0",
9
+ "@dereekb/firebase-server": "14.1.0",
10
+ "@dereekb/firebase-server/oidc": "14.1.0",
11
+ "@dereekb/model": "14.1.0",
12
+ "@dereekb/nestjs": "14.1.0",
13
+ "@dereekb/rxjs": "14.1.0",
14
+ "@dereekb/util": "14.1.0",
15
15
  "@google-cloud/firestore": "^7.11.6",
16
16
  "@google-cloud/storage": "^7.22.0",
17
17
  "@nestjs/common": "^12.0.1",
@@ -24,7 +24,7 @@
24
24
  "supertest": "^7.2.2"
25
25
  },
26
26
  "devDependencies": {
27
- "@dereekb/nestjs": "14.0.1"
27
+ "@dereekb/nestjs": "14.1.0"
28
28
  },
29
29
  "exports": {
30
30
  "./package.json": "./package.json",
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/twilio",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "type": "module",
5
5
  "peerDependencies": {
6
- "@dereekb/date": "14.0.1",
7
- "@dereekb/firebase": "14.0.1",
8
- "@dereekb/firebase-server": "14.0.1",
9
- "@dereekb/model": "14.0.1",
10
- "@dereekb/nestjs": "14.0.1",
11
- "@dereekb/rxjs": "14.0.1",
12
- "@dereekb/util": "14.0.1"
6
+ "@dereekb/date": "14.1.0",
7
+ "@dereekb/firebase": "14.1.0",
8
+ "@dereekb/firebase-server": "14.1.0",
9
+ "@dereekb/model": "14.1.0",
10
+ "@dereekb/nestjs": "14.1.0",
11
+ "@dereekb/rxjs": "14.1.0",
12
+ "@dereekb/util": "14.1.0"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",
package/zoho/index.esm.js CHANGED
@@ -1060,9 +1060,10 @@ function _type_of$1(obj) {
1060
1060
  _create_class(ZohoUserExternalConnectionOAuthService, [
1061
1061
  {
1062
1062
  key: "authorizeUrlForState",
1063
- value: function authorizeUrlForState(state) {
1063
+ value: function authorizeUrlForState(input) {
1064
+ // Zoho's authorize URL takes no PKCE challenge, so `input.codeChallenge` is deliberately unused
1064
1065
  return this.authorizeUrlFactory({
1065
- state: state
1066
+ state: input.state
1066
1067
  });
1067
1068
  }
1068
1069
  },
package/zoho/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/zoho",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "type": "module",
5
5
  "peerDependencies": {
6
- "@dereekb/analytics": "14.0.1",
7
- "@dereekb/date": "14.0.1",
8
- "@dereekb/model": "14.0.1",
9
- "@dereekb/nestjs": "14.0.1",
10
- "@dereekb/rxjs": "14.0.1",
11
- "@dereekb/firebase": "14.0.1",
12
- "@dereekb/firebase-server": "14.0.1",
13
- "@dereekb/util": "14.0.1",
14
- "@dereekb/zoho": "14.0.1",
6
+ "@dereekb/analytics": "14.1.0",
7
+ "@dereekb/date": "14.1.0",
8
+ "@dereekb/model": "14.1.0",
9
+ "@dereekb/nestjs": "14.1.0",
10
+ "@dereekb/rxjs": "14.1.0",
11
+ "@dereekb/firebase": "14.1.0",
12
+ "@dereekb/firebase-server": "14.1.0",
13
+ "@dereekb/util": "14.1.0",
14
+ "@dereekb/zoho": "14.1.0",
15
15
  "@nestjs/common": "^12.0.1",
16
16
  "@nestjs/config": "^12.0.0",
17
17
  "express": "^5.2.1"
@@ -1,6 +1,6 @@
1
1
  import { type ZohoAccountsApiUrl, type ZohoAccountsAuthorizeUrlFactory, type ZohoAccountsRefreshTokenFromAuthorizationCodeResponse, type ZohoAccountsUserInfoResponse } from '@dereekb/zoho';
2
2
  import { ZohoAccountsOAuthApi } from '@dereekb/zoho/nestjs';
3
- import { AbstractUserExternalConnectionOAuthService, UserExternalConnectionAccessor, UserExternalConnectionServerActions, UserExternalConnectionStateCoder, type UserExternalConnectionCredentials, type UserExternalConnectionOAuthCallbackQueryValues, type UserExternalConnectionOAuthExchangeInput, type UserExternalConnectionOAuthRefreshCredentialsInput, type UserExternalConnectionOAuthState } from '@dereekb/firebase-server/model';
3
+ import { AbstractUserExternalConnectionOAuthService, UserExternalConnectionAccessor, UserExternalConnectionServerActions, UserExternalConnectionStateCoder, type UserExternalConnectionCredentials, type UserExternalConnectionOAuthCallbackQueryValues, type UserExternalConnectionOAuthExchangeInput, type UserExternalConnectionOAuthRefreshCredentialsInput, type UserExternalConnectionOAuthAuthorizeUrlInput } from '@dereekb/firebase-server/model';
4
4
  import { type Maybe, type WebsiteUrl } from '@dereekb/util';
5
5
  import { ZohoUserExternalConnectionOAuthServiceConfig } from './zoho.oauth.connection.config';
6
6
  /**
@@ -80,7 +80,7 @@ export declare class ZohoUserExternalConnectionOAuthService extends AbstractUser
80
80
  */
81
81
  readonly accountsApiUrl: ZohoAccountsApiUrl;
82
82
  constructor(config: ZohoUserExternalConnectionOAuthServiceConfig, stateCoder: UserExternalConnectionStateCoder, userExternalConnectionActions: UserExternalConnectionServerActions, userExternalConnectionAccessor: UserExternalConnectionAccessor, oauthApi: ZohoAccountsOAuthApi);
83
- protected authorizeUrlForState(state: UserExternalConnectionOAuthState): WebsiteUrl;
83
+ protected authorizeUrlForState(input: UserExternalConnectionOAuthAuthorizeUrlInput): WebsiteUrl;
84
84
  protected credentialsForAuthorizationCode(input: UserExternalConnectionOAuthExchangeInput): Promise<UserExternalConnectionCredentials>;
85
85
  refreshCredentials(input: UserExternalConnectionOAuthRefreshCredentialsInput): Promise<UserExternalConnectionCredentials>;
86
86
  /**