firebase-admin-edge 1.0.11 → 1.0.13

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 (36) hide show
  1. package/README.md +18 -7
  2. package/dist/auth/firebase-admin-auth.js +33 -33
  3. package/dist/auth/firebase-admin-auth.js.map +1 -1
  4. package/dist/auth/firebase-admin-auth.test.js +71 -71
  5. package/dist/auth/firebase-admin-auth.test.js.map +1 -1
  6. package/dist/auth/firebase-auth-endpoints.js +27 -27
  7. package/dist/auth/firebase-auth-endpoints.test.js +29 -29
  8. package/dist/auth/firebase-auth-endpoints.test.js.map +1 -1
  9. package/dist/auth/firebase-auth.js +7 -7
  10. package/dist/auth/firebase-auth.js.map +1 -1
  11. package/dist/auth/firebase-auth.test.js +9 -9
  12. package/dist/auth/firebase-jwt.js +32 -32
  13. package/dist/auth/firebase-jwt.js.map +1 -1
  14. package/dist/auth/firebase-jwt.test.js +14 -14
  15. package/dist/auth/firebase-jwt.test.js.map +1 -1
  16. package/dist/auth/github-oauth.d.ts +16 -0
  17. package/dist/auth/github-oauth.d.ts.map +1 -0
  18. package/dist/auth/github-oauth.js +31 -0
  19. package/dist/auth/github-oauth.js.map +1 -0
  20. package/dist/auth/google-oauth.d.ts.map +1 -1
  21. package/dist/auth/google-oauth.js +16 -15
  22. package/dist/auth/google-oauth.js.map +1 -1
  23. package/dist/auth/google-oauth.test.js +15 -14
  24. package/dist/auth/google-oauth.test.js.map +1 -1
  25. package/dist/firebase-edge-server.d.ts +14 -74
  26. package/dist/firebase-edge-server.d.ts.map +1 -1
  27. package/dist/firebase-edge-server.js +105 -278
  28. package/dist/firebase-edge-server.js.map +1 -1
  29. package/dist/firebase-edge-server.test.js +115 -76
  30. package/dist/firebase-edge-server.test.js.map +1 -1
  31. package/dist/rest-fetch.d.ts.map +1 -1
  32. package/dist/rest-fetch.js +7 -6
  33. package/dist/rest-fetch.js.map +1 -1
  34. package/dist/rest-fetch.test.js +48 -30
  35. package/dist/rest-fetch.test.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -53,35 +53,46 @@ export const firebaseServer = createFirebaseEdgeServer({
53
53
  });
54
54
  ```
55
55
 
56
- ### Get User
56
+ **Get User**
57
57
 
58
58
  ```ts
59
59
  const { data: user } = await firebaseServer.getUser();
60
60
  ```
61
61
 
62
- ### Login With Google Code
62
+ **Login with Code**
63
63
 
64
64
  ```ts
65
- // Currently only supports Google Provider, more coming soon!
65
+ // Currently only supports GitHub and Google login
66
66
 
67
- const { error } = await firebaseServer.signInWithGoogleWithCode(
67
+ const code = url.searchParams.get('code');
68
+ const state = url.searchParams.get('state');
69
+
70
+ const { error } = await firebaseServer.signInWithCode(
68
71
  code,
69
72
  redirect_uri,
73
+ state
70
74
  );
71
75
  ```
72
76
 
73
- ### Create Google Login URL
77
+ **Create Login URL**
74
78
 
75
79
  ```ts
76
- // Normally you need a browser to do this!
80
+ // You don't need a browser with this library!
81
+
82
+ // path - where you want to redirect to after login
83
+ // redirect_uri - is the oAuth redirect url
77
84
 
78
85
  const loginUrl = await firebaseServer.getGoogleLoginURL(redirect_uri, path);
79
86
 
87
+ // OR
88
+
89
+ const loginURL = await firebaseServer.getGitHubLoginURL(redirect_uri, path);
90
+
80
91
  // Your framework redirect method
81
92
  redirect(302, loginUrl);
82
93
  ```
83
94
 
84
- ### Logout
95
+ **Logout**
85
96
 
86
97
  ```ts
87
98
  firebaseServer.signOut();
@@ -1,5 +1,5 @@
1
- import { createSessionCookie, getAccountInfoByUid, } from './firebase-auth-endpoints.js';
2
- import { signJWTCustomToken, verifyJWT, verifySessionJWT, } from './firebase-jwt.js';
1
+ import { createSessionCookie, getAccountInfoByUid } from './firebase-auth-endpoints.js';
2
+ import { signJWTCustomToken, verifyJWT, verifySessionJWT } from './firebase-jwt.js';
3
3
  import { getToken } from './google-oauth.js';
4
4
  export class FirebaseAdminAuth {
5
5
  serviceAccountKey;
@@ -14,7 +14,7 @@ export class FirebaseAdminAuth {
14
14
  if (getTokenError) {
15
15
  return {
16
16
  data: null,
17
- error: getTokenError,
17
+ error: getTokenError
18
18
  };
19
19
  }
20
20
  if (!token) {
@@ -23,20 +23,20 @@ export class FirebaseAdminAuth {
23
23
  error: {
24
24
  code: 500,
25
25
  message: 'No token returned',
26
- errors: [],
27
- },
26
+ errors: []
27
+ }
28
28
  };
29
29
  }
30
30
  const { data, error } = await getAccountInfoByUid(uid, token.access_token, this.serviceAccountKey.project_id, this.fetch);
31
31
  if (error) {
32
32
  return {
33
33
  data: null,
34
- error,
34
+ error
35
35
  };
36
36
  }
37
37
  return {
38
38
  data,
39
- error: null,
39
+ error: null
40
40
  };
41
41
  }
42
42
  async verifyIdToken(idToken, checkRevoked = false) {
@@ -44,7 +44,7 @@ export class FirebaseAdminAuth {
44
44
  if (verifyError) {
45
45
  return {
46
46
  data: null,
47
- error: verifyError,
47
+ error: verifyError
48
48
  };
49
49
  }
50
50
  if (!decodedIdToken) {
@@ -52,21 +52,21 @@ export class FirebaseAdminAuth {
52
52
  data: null,
53
53
  error: {
54
54
  message: 'Could not decode ID token!',
55
- code: 'ERR_DECODE_ID_TOKEN',
56
- },
55
+ code: 'ERR_DECODE_ID_TOKEN'
56
+ }
57
57
  };
58
58
  }
59
59
  if (!checkRevoked) {
60
60
  return {
61
61
  data: decodedIdToken,
62
- error: null,
62
+ error: null
63
63
  };
64
64
  }
65
65
  const { data: user, error: userError } = await this.getUser(decodedIdToken.sub);
66
66
  if (userError) {
67
67
  return {
68
68
  data: null,
69
- error: userError,
69
+ error: userError
70
70
  };
71
71
  }
72
72
  if (!user) {
@@ -74,8 +74,8 @@ export class FirebaseAdminAuth {
74
74
  data: null,
75
75
  error: {
76
76
  message: 'No user record found!',
77
- code: 'ERR_NO_USER',
78
- },
77
+ code: 'ERR_NO_USER'
78
+ }
79
79
  };
80
80
  }
81
81
  if (user.disabled) {
@@ -83,8 +83,8 @@ export class FirebaseAdminAuth {
83
83
  data: null,
84
84
  error: {
85
85
  message: 'User is disabled!',
86
- code: 'ERR_USER_DISABLED',
87
- },
86
+ code: 'ERR_USER_DISABLED'
87
+ }
88
88
  };
89
89
  }
90
90
  if (user.tokensValidAfterTime) {
@@ -98,14 +98,14 @@ export class FirebaseAdminAuth {
98
98
  data: null,
99
99
  error: {
100
100
  message: 'Token has been revoked!',
101
- code: 'ERR_TOKEN_REVOKED',
102
- },
101
+ code: 'ERR_TOKEN_REVOKED'
102
+ }
103
103
  };
104
104
  }
105
105
  }
106
106
  return {
107
107
  data: decodedIdToken,
108
- error: null,
108
+ error: null
109
109
  };
110
110
  }
111
111
  async createSessionCookie(idToken, { expiresIn }) {
@@ -113,7 +113,7 @@ export class FirebaseAdminAuth {
113
113
  if (getTokenError) {
114
114
  return {
115
115
  data: null,
116
- error: getTokenError,
116
+ error: getTokenError
117
117
  };
118
118
  }
119
119
  if (!token) {
@@ -122,20 +122,20 @@ export class FirebaseAdminAuth {
122
122
  error: {
123
123
  code: 500,
124
124
  message: 'No token returned',
125
- errors: [],
126
- },
125
+ errors: []
126
+ }
127
127
  };
128
128
  }
129
129
  const { data, error } = await createSessionCookie(idToken, token.access_token, this.serviceAccountKey.project_id, expiresIn, this.fetch);
130
130
  if (error) {
131
131
  return {
132
132
  data: null,
133
- error,
133
+ error
134
134
  };
135
135
  }
136
136
  return {
137
137
  data,
138
- error: null,
138
+ error: null
139
139
  };
140
140
  }
141
141
  async verifySessionCookie(sessionCookie, checkRevoked = false) {
@@ -143,20 +143,20 @@ export class FirebaseAdminAuth {
143
143
  if (error) {
144
144
  return {
145
145
  data: null,
146
- error,
146
+ error
147
147
  };
148
148
  }
149
149
  if (!checkRevoked) {
150
150
  return {
151
151
  data,
152
- error: null,
152
+ error: null
153
153
  };
154
154
  }
155
155
  const { data: user, error: userError } = await this.getUser(data.sub);
156
156
  if (userError) {
157
157
  return {
158
158
  data: null,
159
- error: userError,
159
+ error: userError
160
160
  };
161
161
  }
162
162
  if (!user) {
@@ -164,13 +164,13 @@ export class FirebaseAdminAuth {
164
164
  data: null,
165
165
  error: {
166
166
  message: 'No user record found!',
167
- code: 'ERR_NO_USER',
168
- },
167
+ code: 'ERR_NO_USER'
168
+ }
169
169
  };
170
170
  }
171
171
  return {
172
172
  data,
173
- error: null,
173
+ error: null
174
174
  };
175
175
  }
176
176
  async createCustomToken(uid, developerClaims = {}) {
@@ -178,18 +178,18 @@ export class FirebaseAdminAuth {
178
178
  if (error) {
179
179
  return {
180
180
  data: null,
181
- error,
181
+ error
182
182
  };
183
183
  }
184
184
  if (!data) {
185
185
  return {
186
186
  data: null,
187
- error: new Error('No custom token returned'),
187
+ error: new Error('No custom token returned')
188
188
  };
189
189
  }
190
190
  return {
191
191
  data,
192
- error: null,
192
+ error: null
193
193
  };
194
194
  }
195
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"firebase-admin-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-admin-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase-admin-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-admin-auth.ts"],"names":[],"mappings":"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"}