firebase-admin-edge 2.0.0 → 3.0.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 (78) hide show
  1. package/README.md +2 -0
  2. package/dist/app-check/app-check.d.ts +7 -2
  3. package/dist/app-check/app-check.d.ts.map +1 -1
  4. package/dist/app-check/app-check.js +6 -5
  5. package/dist/app-check/app-check.js.map +1 -1
  6. package/dist/auth/firebase-admin-auth.d.ts +30 -7
  7. package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
  8. package/dist/auth/firebase-admin-auth.js +138 -11
  9. package/dist/auth/firebase-admin-auth.js.map +1 -1
  10. package/dist/auth/firebase-auth-endpoints.d.ts +29 -0
  11. package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
  12. package/dist/auth/firebase-auth-endpoints.js +84 -0
  13. package/dist/auth/firebase-auth-endpoints.js.map +1 -1
  14. package/dist/auth/firebase-auth.d.ts +6 -4
  15. package/dist/auth/firebase-auth.d.ts.map +1 -1
  16. package/dist/auth/firebase-auth.js +5 -5
  17. package/dist/auth/firebase-auth.js.map +1 -1
  18. package/dist/auth/identity-builder-types.d.ts +36 -0
  19. package/dist/auth/identity-builder-types.d.ts.map +1 -0
  20. package/dist/auth/identity-builder-types.js +2 -0
  21. package/dist/auth/identity-builder-types.js.map +1 -0
  22. package/dist/auth/identity-count-query.d.ts +17 -0
  23. package/dist/auth/identity-count-query.d.ts.map +1 -0
  24. package/dist/auth/identity-count-query.js +51 -0
  25. package/dist/auth/identity-count-query.js.map +1 -0
  26. package/dist/auth/identity-filter.d.ts +9 -0
  27. package/dist/auth/identity-filter.d.ts.map +1 -0
  28. package/dist/auth/identity-filter.js +129 -0
  29. package/dist/auth/identity-filter.js.map +1 -0
  30. package/dist/auth/identity-query.d.ts +11 -0
  31. package/dist/auth/identity-query.d.ts.map +1 -0
  32. package/dist/auth/identity-query.js +122 -0
  33. package/dist/auth/identity-query.js.map +1 -0
  34. package/dist/auth/identity-reference.d.ts +131 -0
  35. package/dist/auth/identity-reference.d.ts.map +1 -0
  36. package/dist/auth/identity-reference.js +293 -0
  37. package/dist/auth/identity-reference.js.map +1 -0
  38. package/dist/auth/identity-types.d.ts +44 -0
  39. package/dist/auth/identity-types.d.ts.map +1 -0
  40. package/dist/auth/identity-types.js +2 -0
  41. package/dist/auth/identity-types.js.map +1 -0
  42. package/dist/auth/identity-write.d.ts +41 -0
  43. package/dist/auth/identity-write.d.ts.map +1 -0
  44. package/dist/auth/identity-write.js +146 -0
  45. package/dist/auth/identity-write.js.map +1 -0
  46. package/dist/auth/identity.d.ts +84 -0
  47. package/dist/auth/identity.d.ts.map +1 -0
  48. package/dist/auth/identity.js +319 -0
  49. package/dist/auth/identity.js.map +1 -0
  50. package/dist/auth/user-import.d.ts +7 -1
  51. package/dist/auth/user-import.d.ts.map +1 -1
  52. package/dist/auth/user-import.js +53 -15
  53. package/dist/auth/user-import.js.map +1 -1
  54. package/dist/auth/user-record.d.ts +1 -0
  55. package/dist/auth/user-record.d.ts.map +1 -1
  56. package/dist/auth/user-record.js +5 -0
  57. package/dist/auth/user-record.js.map +1 -1
  58. package/dist/auth/user-request.d.ts +4 -1
  59. package/dist/auth/user-request.d.ts.map +1 -1
  60. package/dist/auth/user-request.js +7 -4
  61. package/dist/auth/user-request.js.map +1 -1
  62. package/dist/db/firestore.d.ts +7 -1
  63. package/dist/db/firestore.d.ts.map +1 -1
  64. package/dist/db/firestore.js +16 -8
  65. package/dist/db/firestore.js.map +1 -1
  66. package/dist/firebase-edge-server.d.ts +2 -0
  67. package/dist/firebase-edge-server.d.ts.map +1 -1
  68. package/dist/firebase-edge-server.js +37 -5
  69. package/dist/firebase-edge-server.js.map +1 -1
  70. package/dist/index.d.ts +1 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +1 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/storage/storage.d.ts +10 -3
  75. package/dist/storage/storage.d.ts.map +1 -1
  76. package/dist/storage/storage.js +17 -4
  77. package/dist/storage/storage.js.map +1 -1
  78. package/package.json +3 -3
@@ -0,0 +1,122 @@
1
+ import { identityLookupIdentifiers, identityOrIdentifiers, validateIdentityQueryOptions } from './identity-filter.js';
2
+ import { FirebaseEdgeError } from './errors.js';
3
+ /** Execute one backend request, never follow a token or scan for more matches. @internal */
4
+ export async function executeIdentityQuery(auth, options, last = false, pageToken) {
5
+ validateIdentityQueryOptions(options);
6
+ if (typeof last !== 'boolean' ||
7
+ (pageToken !== undefined &&
8
+ (typeof pageToken !== 'string' || pageToken.length === 0))) {
9
+ throw new FirebaseEdgeError({
10
+ code: 'auth/invalid-argument',
11
+ message: 'Use a boolean last flag and a nonempty page token.'
12
+ });
13
+ }
14
+ if (options.identifiers !== undefined ||
15
+ options.filter?.field === 'initialEmail' ||
16
+ options.filter?.operator === 'in') {
17
+ if ((options.identifiers !== undefined &&
18
+ options.filter !== undefined) ||
19
+ options.orderBy ||
20
+ options.offset !== undefined ||
21
+ options.limit !== undefined ||
22
+ last ||
23
+ pageToken !== undefined) {
24
+ throw new FirebaseEdgeError({
25
+ code: 'auth/invalid-argument',
26
+ message: 'Lookup filters do not support sorting, limits, offsets, or page tokens.'
27
+ });
28
+ }
29
+ const identifiers = options.identifiers !== undefined
30
+ ? identityOrIdentifiers(options.identifiers)
31
+ : identityLookupIdentifiers(options.filter.field, options.filter.operator === 'in'
32
+ ? options.filter.value
33
+ : [options.filter.value]);
34
+ const { error, data } = await auth.getUsers(identifiers);
35
+ if (error) {
36
+ return { error, data: null };
37
+ }
38
+ return {
39
+ error: null,
40
+ data: { users: data.users, nextOffset: null, nextPageToken: null }
41
+ };
42
+ }
43
+ const offset = options.offset ?? 0;
44
+ const limit = options.limit ?? 500;
45
+ const orderBy = options.orderBy ?? { field: 'uid', direction: 'asc' };
46
+ const useBatch = !options.filter &&
47
+ !last &&
48
+ offset === 0 &&
49
+ orderBy.field === 'uid' &&
50
+ orderBy.direction === 'asc';
51
+ if (pageToken !== undefined && !useBatch) {
52
+ throw new FirebaseEdgeError({
53
+ code: 'auth/invalid-argument',
54
+ message: 'Page tokens require an unfiltered UID-ascending listing without offset or limitToLast.'
55
+ });
56
+ }
57
+ if (limit > (useBatch ? 1000 : 500)) {
58
+ throw new FirebaseEdgeError({
59
+ code: 'auth/invalid-argument',
60
+ message: useBatch
61
+ ? 'Token listings support at most 1000 users per request.'
62
+ : 'Filtered, sorted, and offset queries support at most 500 users per request.'
63
+ });
64
+ }
65
+ if (last && offset + limit > 500) {
66
+ throw new FirebaseEdgeError({
67
+ code: 'auth/invalid-argument',
68
+ message: 'limitToLast plus offset must not exceed 500 for a single query request.'
69
+ });
70
+ }
71
+ if (useBatch) {
72
+ const { error, data } = await auth.listUsers(limit, pageToken);
73
+ if (error) {
74
+ return { data: null, error };
75
+ }
76
+ return {
77
+ data: {
78
+ users: data.users,
79
+ nextOffset: null,
80
+ nextPageToken: data.pageToken ?? null
81
+ },
82
+ error: null
83
+ };
84
+ }
85
+ const request = last
86
+ ? {
87
+ ...options,
88
+ offset: 0,
89
+ limit: limit + offset,
90
+ orderBy: {
91
+ field: orderBy.field,
92
+ direction: orderBy.direction === 'asc'
93
+ ? 'desc'
94
+ : 'asc'
95
+ }
96
+ }
97
+ : { ...options, orderBy };
98
+ const { error, data } = await auth._queryUsers(request);
99
+ if (error) {
100
+ return { data: null, error };
101
+ }
102
+ if (last) {
103
+ const count = Math.min(limit, Math.max(0, data.length - offset));
104
+ return {
105
+ data: {
106
+ users: data.slice(0, count).reverse(),
107
+ nextOffset: null,
108
+ nextPageToken: null
109
+ },
110
+ error: null
111
+ };
112
+ }
113
+ return {
114
+ data: {
115
+ users: data,
116
+ nextOffset: data.length === limit ? offset + data.length : null,
117
+ nextPageToken: null
118
+ },
119
+ error: null
120
+ };
121
+ }
122
+ //# sourceMappingURL=identity-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-query.js","sourceRoot":"","sources":["../../src/auth/identity-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import type { IdentityUpdateData, IdentitySetData, IdentityWriteResult } from './identity-write.js';
2
+ import type { UserMetadataRequest } from './user-import.js';
3
+ import type { FirebaseAdminAuth } from './firebase-admin-auth.js';
4
+ import { type UserIdentifier } from './user-request.js';
5
+ import type { UserRecord } from './user-record.js';
6
+ import { FirebaseEdgeError } from './errors.js';
7
+ export type IdentityUserRecord<Claims extends object = Record<string, unknown>> = Omit<UserRecord, 'customClaims'> & {
8
+ readonly customClaims?: Partial<Claims>;
9
+ };
10
+ type IdentityWriteResponse = {
11
+ error: null;
12
+ data: IdentityWriteResult;
13
+ } | {
14
+ error: Error;
15
+ data: null;
16
+ };
17
+ export interface IdentityReferenceOptions<Multiple extends boolean = false, Uid extends boolean = false> {
18
+ /** Return an array of matches instead of one user or null. Defaults to false. */
19
+ multiple?: Multiple;
20
+ /** Enable mutations for a single UID identifier. Defaults to false. */
21
+ uidReference?: Uid;
22
+ }
23
+ /** Exact lookup with no query modifiers or count operation. */
24
+ export declare class IdentityReference<Multiple extends boolean = false, Uid extends boolean = false, Claims extends object = Record<string, unknown>> {
25
+ private readonly auth;
26
+ private readonly identifier;
27
+ private readonly multiple;
28
+ private readonly uidReference;
29
+ private claimsResource?;
30
+ private metadataResource?;
31
+ constructor(auth: FirebaseAdminAuth, identifier: UserIdentifier, options?: IdentityReferenceOptions<Multiple, Uid>);
32
+ update(this: IdentityReference<false, true, Claims>, data: IdentityUpdateData<Claims>): Promise<{
33
+ data: null;
34
+ error: FirebaseEdgeError;
35
+ } | {
36
+ data: IdentityWriteResult;
37
+ error: null;
38
+ }>;
39
+ set(this: IdentityReference<false, true, Claims>, data: IdentitySetData<Claims>): Promise<{
40
+ data: null;
41
+ error: FirebaseEdgeError;
42
+ } | {
43
+ data: IdentityWriteResult;
44
+ error: null;
45
+ }>;
46
+ /** Custom-claims operations for a UID reference; accessing this performs no I/O. */
47
+ get claims(): Uid extends true ? Multiple extends false ? IdentityClaims<Claims> : never : never;
48
+ /** Writable timestamps for a UID reference; accessing this performs no I/O. */
49
+ get metadata(): Uid extends true ? Multiple extends false ? IdentityMetadata : never : never;
50
+ delete(this: IdentityReference<false, true, Claims>): Promise<IdentityWriteResponse>;
51
+ private requireUid;
52
+ /** Check whether an exact single-user lookup matches an account. */
53
+ exists(this: IdentityReference<false, Uid, Claims>): Promise<{
54
+ error: null;
55
+ data: boolean;
56
+ } | {
57
+ error: Error;
58
+ data: null;
59
+ }>;
60
+ get(): Promise<{
61
+ error: null;
62
+ data: Multiple extends true ? IdentityUserRecord<Claims>[] : IdentityUserRecord<Claims> | null;
63
+ } | {
64
+ error: Error;
65
+ data: null;
66
+ }>;
67
+ }
68
+ /** Update explicitly supplied account timestamps. Access through user.metadata. */
69
+ declare class IdentityMetadata {
70
+ private readonly auth;
71
+ private readonly uid;
72
+ constructor(auth: FirebaseAdminAuth, uid: string);
73
+ update(metadata: UserMetadataRequest): Promise<{
74
+ data: null;
75
+ error: FirebaseEdgeError;
76
+ } | {
77
+ data: IdentityWriteResult;
78
+ error: null;
79
+ }>;
80
+ get(): Promise<{
81
+ error: Error;
82
+ data: null;
83
+ } | {
84
+ error: null;
85
+ data: import("./firebase-types.js").UserMetadata & {
86
+ toJSON(): object;
87
+ };
88
+ }>;
89
+ revokeTokens(): Promise<IdentityWriteResponse>;
90
+ }
91
+ /** Claims stored on one existing UID. Access through user.claims. */
92
+ declare class IdentityClaims<Claims extends object> {
93
+ private readonly auth;
94
+ private readonly uid;
95
+ constructor(auth: FirebaseAdminAuth, uid: string);
96
+ /** Replace all custom claims; null clears them. No read is required. */
97
+ set(claims: Partial<Claims> | null): Promise<IdentityWriteResponse>;
98
+ get(): Promise<{
99
+ error: Error;
100
+ data: null;
101
+ } | {
102
+ error: null;
103
+ data: Partial<Claims>;
104
+ }>;
105
+ /** Select one literal top-level claim key, not a dotted path. */
106
+ byKey<Key extends Extract<keyof Claims, string>>(key: Key): IdentityClaimKey<Claims, Key>;
107
+ /** Shallow-merge claims using a non-atomic read followed by a write. */
108
+ update(claims: Partial<Claims>): Promise<IdentityWriteResponse>;
109
+ /** Clear all custom claims without deleting the user. */
110
+ delete(): Promise<IdentityWriteResponse>;
111
+ }
112
+ /** One claim value. Updates and deletion preserve other top-level claims. */
113
+ declare class IdentityClaimKey<Claims extends object, Key extends Extract<keyof Claims, string>> {
114
+ private readonly claims;
115
+ private readonly key;
116
+ constructor(claims: IdentityClaims<Claims>, key: Key);
117
+ /** Set or replace this key's value while preserving the other claims. */
118
+ set(value: Exclude<Claims[Key], undefined>): Promise<IdentityWriteResponse>;
119
+ /** Read one own claim value; an absent key returns undefined. */
120
+ get(): Promise<{
121
+ error: null;
122
+ data: Claims[Key] | undefined;
123
+ } | {
124
+ error: Error;
125
+ data: null;
126
+ }>;
127
+ update(value: Exclude<Claims[Key], undefined>): Promise<IdentityWriteResponse>;
128
+ delete(): Promise<IdentityWriteResponse>;
129
+ }
130
+ export {};
131
+ //# sourceMappingURL=identity-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-reference.d.ts","sourceRoot":"","sources":["../../src/auth/identity-reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,293 @@
1
+ import { buildUsersLookupRequest, buildCustomClaimsRequest } from './user-request.js';
2
+ import { ensureError, FirebaseEdgeError } from './errors.js';
3
+ /** Exact lookup with no query modifiers or count operation. */
4
+ export class IdentityReference {
5
+ auth;
6
+ identifier;
7
+ multiple;
8
+ uidReference;
9
+ claimsResource;
10
+ metadataResource;
11
+ constructor(auth, identifier, options = {}) {
12
+ this.auth = auth;
13
+ if (!options ||
14
+ typeof options !== 'object' ||
15
+ Array.isArray(options) ||
16
+ (options.multiple !== undefined &&
17
+ typeof options.multiple !== 'boolean') ||
18
+ (options.uidReference !== undefined &&
19
+ typeof options.uidReference !== 'boolean')) {
20
+ throw new FirebaseEdgeError({
21
+ code: 'auth/invalid-argument',
22
+ message: 'IdentityReference options must be an object with boolean multiple and uidReference settings.'
23
+ });
24
+ }
25
+ const { error } = buildUsersLookupRequest([identifier]);
26
+ if (error) {
27
+ throw error;
28
+ }
29
+ this.identifier = { ...identifier };
30
+ this.multiple = options.multiple ?? false;
31
+ this.uidReference = options.uidReference ?? false;
32
+ }
33
+ update(data) {
34
+ const uid = this.requireUid();
35
+ return this.auth._writeIdentityUser(uid, data);
36
+ }
37
+ set(data) {
38
+ const uid = this.requireUid();
39
+ return this.auth._writeIdentityUser(uid, data, 'set');
40
+ }
41
+ /** Custom-claims operations for a UID reference; accessing this performs no I/O. */
42
+ get claims() {
43
+ const uid = this.requireUid();
44
+ this.claimsResource ??= new IdentityClaims(this.auth, uid);
45
+ return this.claimsResource;
46
+ }
47
+ /** Writable timestamps for a UID reference; accessing this performs no I/O. */
48
+ get metadata() {
49
+ const uid = this.requireUid();
50
+ this.metadataResource ??= new IdentityMetadata(this.auth, uid);
51
+ return this.metadataResource;
52
+ }
53
+ delete() {
54
+ const uid = this.requireUid();
55
+ return identityWriteResult(uid, this.auth.deleteUser(uid));
56
+ }
57
+ requireUid() {
58
+ if (this.multiple ||
59
+ !this.uidReference ||
60
+ !('uid' in this.identifier)) {
61
+ throw new FirebaseEdgeError({
62
+ code: 'auth/invalid-argument',
63
+ message: 'This mutation requires a UID reference.'
64
+ });
65
+ }
66
+ return this.identifier.uid;
67
+ }
68
+ /** Check whether an exact single-user lookup matches an account. */
69
+ async exists() {
70
+ if (this.multiple) {
71
+ return {
72
+ error: new FirebaseEdgeError({
73
+ code: 'auth/invalid-argument',
74
+ message: 'exists requires a single-user lookup.'
75
+ }),
76
+ data: null
77
+ };
78
+ }
79
+ const { error, data } = await this.get();
80
+ if (error) {
81
+ return { error, data: null };
82
+ }
83
+ return { error: null, data: data !== null };
84
+ }
85
+ async get() {
86
+ try {
87
+ const { error, data } = await this.auth.getUsers([this.identifier]);
88
+ if (error) {
89
+ return { error, data: null };
90
+ }
91
+ return {
92
+ error: null,
93
+ data: (this.multiple
94
+ ? data.users
95
+ : (data.users[0] ?? null))
96
+ };
97
+ }
98
+ catch (cause) {
99
+ return { error: ensureError(cause), data: null };
100
+ }
101
+ }
102
+ }
103
+ /** Update explicitly supplied account timestamps. Access through user.metadata. */
104
+ class IdentityMetadata {
105
+ auth;
106
+ uid;
107
+ constructor(auth, uid) {
108
+ this.auth = auth;
109
+ this.uid = uid;
110
+ }
111
+ update(metadata) {
112
+ return this.auth._writeIdentityUser(this.uid, metadata, 'metadata');
113
+ }
114
+ async get() {
115
+ const { error, data } = await readIdentityUser(this.auth, this.uid);
116
+ if (error) {
117
+ return { error, data: null };
118
+ }
119
+ return { error: null, data: data.metadata };
120
+ }
121
+ revokeTokens() {
122
+ return identityWriteResult(this.uid, this.auth.revokeRefreshTokens(this.uid));
123
+ }
124
+ }
125
+ /** Claims stored on one existing UID. Access through user.claims. */
126
+ class IdentityClaims {
127
+ auth;
128
+ uid;
129
+ constructor(auth, uid) {
130
+ this.auth = auth;
131
+ this.uid = uid;
132
+ }
133
+ /** Replace all custom claims; null clears them. No read is required. */
134
+ set(claims) {
135
+ return identityWriteResult(this.uid, this.auth.setCustomUserClaims(this.uid, claims));
136
+ }
137
+ async get() {
138
+ const { error, data } = await readIdentityUser(this.auth, this.uid);
139
+ if (error) {
140
+ return { error, data: null };
141
+ }
142
+ return {
143
+ error: null,
144
+ data: (data.customClaims ?? {})
145
+ };
146
+ }
147
+ /** Select one literal top-level claim key, not a dotted path. */
148
+ byKey(key) {
149
+ if (typeof key !== 'string' || key.length === 0) {
150
+ throw new FirebaseEdgeError({
151
+ code: 'auth/invalid-argument',
152
+ message: 'A claim key must be a nonempty string.'
153
+ });
154
+ }
155
+ const { error } = buildCustomClaimsRequest({ [key]: null });
156
+ if (error) {
157
+ throw error;
158
+ }
159
+ return new IdentityClaimKey(this, key);
160
+ }
161
+ /** Shallow-merge claims using a non-atomic read followed by a write. */
162
+ async update(claims) {
163
+ if (claims === null) {
164
+ return {
165
+ data: null,
166
+ error: new FirebaseEdgeError({
167
+ code: 'auth/invalid-argument',
168
+ message: 'claims.update requires an object; use claims.delete() to clear claims.'
169
+ })
170
+ };
171
+ }
172
+ const { error, data } = buildCustomClaimsRequest(claims);
173
+ if (error) {
174
+ return { data: null, error };
175
+ }
176
+ // Snapshot the patch before the read so caller mutations cannot change it.
177
+ const patch = JSON.parse(data.customAttributes);
178
+ try {
179
+ const { error: readError, data: claims } = await this.get();
180
+ if (readError) {
181
+ return { data: null, error: readError };
182
+ }
183
+ return await this.set({ ...claims, ...patch });
184
+ }
185
+ catch (cause) {
186
+ return { data: null, error: ensureError(cause) };
187
+ }
188
+ }
189
+ /** Clear all custom claims without deleting the user. */
190
+ delete() {
191
+ return this.set(null);
192
+ }
193
+ }
194
+ /** One claim value. Updates and deletion preserve other top-level claims. */
195
+ class IdentityClaimKey {
196
+ claims;
197
+ key;
198
+ constructor(claims, key) {
199
+ this.claims = claims;
200
+ this.key = key;
201
+ }
202
+ /** Set or replace this key's value while preserving the other claims. */
203
+ set(value) {
204
+ return this.update(value);
205
+ }
206
+ /** Read one own claim value; an absent key returns undefined. */
207
+ async get() {
208
+ const { error, data } = await this.claims.get();
209
+ if (error) {
210
+ return { error, data: null };
211
+ }
212
+ return {
213
+ error: null,
214
+ data: Object.hasOwn(data, this.key) ? data[this.key] : undefined
215
+ };
216
+ }
217
+ async update(value) {
218
+ if (value === undefined ||
219
+ typeof value === 'function' ||
220
+ typeof value === 'symbol') {
221
+ return {
222
+ data: null,
223
+ error: new FirebaseEdgeError({
224
+ code: 'auth/invalid-argument',
225
+ message: 'A claim value must be JSON-serializable. Use delete() to remove the field.'
226
+ })
227
+ };
228
+ }
229
+ const { error, data } = buildCustomClaimsRequest({
230
+ [this.key]: value
231
+ });
232
+ if (error) {
233
+ return { error, data: null };
234
+ }
235
+ const patch = JSON.parse(data.customAttributes);
236
+ if (!Object.hasOwn(patch, this.key)) {
237
+ return {
238
+ data: null,
239
+ error: new FirebaseEdgeError({
240
+ code: 'auth/invalid-argument',
241
+ message: 'The claim value was omitted during JSON serialization.'
242
+ })
243
+ };
244
+ }
245
+ return this.claims.update(patch);
246
+ }
247
+ async delete() {
248
+ const { error, data } = await this.claims.get();
249
+ if (error) {
250
+ return { error, data: null };
251
+ }
252
+ const remaining = { ...data };
253
+ delete remaining[this.key];
254
+ return this.claims.set(remaining);
255
+ }
256
+ }
257
+ /** Read one existing account for a claims or metadata operation. */
258
+ async function readIdentityUser(auth, uid) {
259
+ try {
260
+ const { error, data } = await auth.getUsers([{ uid }]);
261
+ if (error) {
262
+ return { error, data: null };
263
+ }
264
+ const user = data.users[0];
265
+ if (!user) {
266
+ return {
267
+ data: null,
268
+ error: new FirebaseEdgeError({
269
+ code: 'auth/user-not-found',
270
+ message: 'The requested user does not exist.'
271
+ })
272
+ };
273
+ }
274
+ return { error: null, data: user };
275
+ }
276
+ catch (cause) {
277
+ return { data: null, error: ensureError(cause) };
278
+ }
279
+ }
280
+ /** Normalize successful single-user writes without reading the account back. */
281
+ async function identityWriteResult(uid, operation) {
282
+ try {
283
+ const { error } = await operation;
284
+ if (error) {
285
+ return { error, data: null };
286
+ }
287
+ return { error: null, data: { uid } };
288
+ }
289
+ catch (cause) {
290
+ return { error: ensureError(cause), data: null };
291
+ }
292
+ }
293
+ //# sourceMappingURL=identity-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-reference.js","sourceRoot":"","sources":["../../src/auth/identity-reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { ProviderIdentifier, UserIdentifier } from './user-request.js';
2
+ import type { IdentityUserRecord } from './identity-reference.js';
3
+ export type IdentityFilterField = IdentityStringFilterField | 'provider';
4
+ export type IdentityStringFilterField = 'uid' | 'email' | 'phoneNumber' | 'initialEmail';
5
+ export type IdentityOrderField = 'uid' | 'displayName' | 'createdAt' | 'lastLoginAt' | 'email';
6
+ export type IdentityDirection = 'asc' | 'desc';
7
+ /** One exact identity, never an implicit conjunction of several identifiers. */
8
+ export type IdentityIdentifier = {
9
+ [K in IdentityStringFilterField]: Record<K, string> & Partial<Record<Exclude<IdentityStringFilterField, K> | 'providerId' | 'providerUid', never>>;
10
+ }[IdentityStringFilterField] | (ProviderIdentifier & Partial<Record<IdentityStringFilterField, never>>);
11
+ /** @internal Validated options passed from the fluent query to the endpoint. */
12
+ export interface IdentityQueryOptions {
13
+ identifiers?: readonly UserIdentifier[];
14
+ filter?: {
15
+ field: IdentityStringFilterField;
16
+ operator?: '==';
17
+ value: string;
18
+ } | {
19
+ field: IdentityStringFilterField;
20
+ operator: 'in';
21
+ value: readonly string[];
22
+ } | {
23
+ field: 'provider';
24
+ operator: 'in';
25
+ value: readonly ProviderIdentifier[];
26
+ };
27
+ orderBy?: {
28
+ field: IdentityOrderField;
29
+ direction: IdentityDirection;
30
+ };
31
+ offset?: number;
32
+ limit?: number;
33
+ }
34
+ export interface IdentityCountResult {
35
+ count: number;
36
+ }
37
+ export interface IdentityQueryResult<Claims extends object = Record<string, unknown>> {
38
+ users: IdentityUserRecord<Claims>[];
39
+ /** Continuation hint for offset queries; null for listings and limitToLast. */
40
+ nextOffset: number | null;
41
+ /** Opaque continuation token for UID-ascending listings; otherwise null. */
42
+ nextPageToken: string | null;
43
+ }
44
+ //# sourceMappingURL=identity-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-types.d.ts","sourceRoot":"","sources":["../../src/auth/identity-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,GAAG,UAAU,CAAC;AACzE,MAAM,MAAM,yBAAyB,GAC/B,KAAK,GACL,OAAO,GACP,aAAa,GACb,cAAc,CAAC;AACrB,MAAM,MAAM,kBAAkB,GACxB,KAAK,GACL,aAAa,GACb,WAAW,GACX,aAAa,GACb,OAAO,CAAC;AACd,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/C,gFAAgF;AAChF,MAAM,MAAM,kBAAkB,GACxB;KACK,CAAC,IAAI,yBAAyB,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAC/C,OAAO,CACH,MAAM,CACA,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC,GACrC,YAAY,GACZ,aAAa,EACf,KAAK,CACR,CACJ;CACR,CAAC,yBAAyB,CAAC,GAC5B,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAE/E,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACjC,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,MAAM,CAAC,EACD;QAAE,KAAK,EAAE,yBAAyB,CAAC;QAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACpE;QACI,KAAK,EAAE,yBAAyB,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC;QACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;KAC5B,GACD;QACI,KAAK,EAAE,UAAU,CAAC;QAClB,QAAQ,EAAE,IAAI,CAAC;QACf,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACxC,CAAC;IACR,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,iBAAiB,CAAA;KAAE,CAAC;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB,CAChC,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE/C,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IACpC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=identity-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-types.js","sourceRoot":"","sources":["../../src/auth/identity-types.ts"],"names":[],"mappings":""}