@stevenkellner/team-conduct-api 2.0.13 → 2.0.15

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.
@@ -1,5 +1,6 @@
1
1
  import { FirestoreScheme } from './FirestoreScheme';
2
2
  import { Messaging } from './Messaging';
3
+ import { Firestore as FirebaseFirestore } from 'firebase-admin/firestore';
3
4
  /**
4
5
  * Singleton configuration manager for Firebase services.
5
6
  *
@@ -12,6 +13,7 @@ export declare class FirebaseConfiguration {
12
13
  */
13
14
  static readonly shared: FirebaseConfiguration;
14
15
  private configured;
16
+ private _firebaseFirestore;
15
17
  private _baseFirestoreDocument;
16
18
  private _messaging;
17
19
  /**
@@ -28,6 +30,7 @@ export declare class FirebaseConfiguration {
28
30
  * @throws Error if already configured
29
31
  */
30
32
  configure(configuration: {
33
+ firebaseFirestore: FirebaseFirestore;
31
34
  baseFirestoreDocument: FirestoreScheme;
32
35
  messaging: Messaging;
33
36
  }): void;
@@ -39,9 +42,11 @@ export declare class FirebaseConfiguration {
39
42
  * @param configuration - New configuration object containing Firestore and Messaging services
40
43
  */
41
44
  reconfigure(configuration: {
45
+ firebaseFirestore: FirebaseFirestore;
42
46
  baseFirestoreDocument: FirestoreScheme;
43
47
  messaging: Messaging;
44
48
  }): void;
49
+ get firebaseFirestore(): FirebaseFirestore;
45
50
  /**
46
51
  * Gets the base Firestore document reference.
47
52
  *
@@ -13,6 +13,7 @@ class FirebaseConfiguration {
13
13
  */
14
14
  static shared = new FirebaseConfiguration();
15
15
  configured = false;
16
+ _firebaseFirestore = null;
16
17
  _baseFirestoreDocument = null;
17
18
  _messaging = null;
18
19
  /**
@@ -31,6 +32,7 @@ class FirebaseConfiguration {
31
32
  configure(configuration) {
32
33
  if (this.configured)
33
34
  throw new Error('Configuration is already configured');
35
+ this._firebaseFirestore = configuration.firebaseFirestore;
34
36
  this._baseFirestoreDocument = configuration.baseFirestoreDocument;
35
37
  this._messaging = configuration.messaging;
36
38
  this.configured = true;
@@ -46,6 +48,11 @@ class FirebaseConfiguration {
46
48
  this.configured = false;
47
49
  this.configure(configuration);
48
50
  }
51
+ get firebaseFirestore() {
52
+ if (!this.configured || !this._firebaseFirestore)
53
+ throw new Error('Configuration.firebaseFirestore is not configured');
54
+ return this._firebaseFirestore;
55
+ }
49
56
  /**
50
57
  * Gets the base Firestore document reference.
51
58
  *
@@ -1,4 +1,4 @@
1
- import { FirestoreCollection, FirestoreDocument, UserAuthId } from '@stevenkellner/firebase-function';
1
+ import { FirestoreBatch, FirestoreCollection, FirestoreDocument, UserAuthId } from '@stevenkellner/firebase-function';
2
2
  import { FirestoreScheme } from './FirestoreScheme';
3
3
  import { Fine, FineTemplate, Invitation, Person, User, Team } from '../types';
4
4
  /**
@@ -68,6 +68,7 @@ export declare class Firestore {
68
68
  * @private
69
69
  */
70
70
  protected get base(): FirestoreScheme;
71
+ batch(): FirestoreBatch;
71
72
  /**
72
73
  * Gets a reference to a team document.
73
74
  *
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Firestore = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
4
5
  const _1 = require(".");
5
6
  /**
6
7
  * Accessor class for Firestore documents and collections.
@@ -75,6 +76,9 @@ class Firestore {
75
76
  get base() {
76
77
  return _1.FirebaseConfiguration.shared.baseFirestoreDocument;
77
78
  }
79
+ batch() {
80
+ return new firebase_function_1.FirestoreBatch(_1.FirebaseConfiguration.shared.firebaseFirestore);
81
+ }
78
82
  /**
79
83
  * Gets a reference to a team document.
80
84
  *
@@ -4,11 +4,18 @@ import { ObjectTypeBuilder } from '@stevenkellner/typescript-common-functionalit
4
4
  export declare namespace UserRegisterFunction {
5
5
  type Parameters = {
6
6
  userId: User.Id;
7
+ signInType: User.SignInType;
7
8
  };
8
9
  }
9
10
  export declare class UserRegisterFunction implements FirebaseFunction<UserRegisterFunction.Parameters, User> {
10
11
  parametersBuilder: ObjectTypeBuilder<{
11
12
  userId: string;
13
+ signInType: {
14
+ type: "email";
15
+ email: string;
16
+ } | {
17
+ type: "google" | "apple";
18
+ };
12
19
  }, UserRegisterFunction.Parameters>;
13
20
  returnTypeBuilder: User.TypeBuilder;
14
21
  }
@@ -5,7 +5,8 @@ const types_1 = require("../../types");
5
5
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
6
6
  class UserRegisterFunction {
7
7
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
8
- userId: types_1.User.Id.builder
8
+ userId: types_1.User.Id.builder,
9
+ signInType: types_1.User.SignInType.builder
9
10
  });
10
11
  returnTypeBuilder = types_1.User.builder;
11
12
  }
@@ -21,6 +21,7 @@ describe('FirebaseConfiguration', () => {
21
21
  // For now, we'll test the error cases that don't require full configuration.
22
22
  it('should throw error when configuring twice', () => {
23
23
  // Create a mock configuration
24
+ const mockFirebaseFirestore = {};
24
25
  const mockFirestore = {};
25
26
  const mockMessaging = {
26
27
  sendEachForMulticast: async () => ({
@@ -35,11 +36,13 @@ describe('FirebaseConfiguration', () => {
35
36
  // If already configured, this should throw
36
37
  try {
37
38
  FirebaseConfiguration_1.FirebaseConfiguration.shared.configure({
39
+ firebaseFirestore: mockFirebaseFirestore,
38
40
  baseFirestoreDocument: mockFirestore,
39
41
  messaging: mockMessaging
40
42
  });
41
43
  // If it succeeds, try configuring again to test the double-configuration error
42
44
  FirebaseConfiguration_1.FirebaseConfiguration.shared.configure({
45
+ firebaseFirestore: mockFirebaseFirestore,
43
46
  baseFirestoreDocument: mockFirestore,
44
47
  messaging: mockMessaging
45
48
  });
@@ -127,6 +127,7 @@ async function expectThrowsFunctionsError(fn, expectedCode, message = null) {
127
127
  }
128
128
  function configureFirebase(collections, messaging) {
129
129
  src_1.FirebaseConfiguration.shared.reconfigure({
130
+ firebaseFirestore: undefined,
130
131
  baseFirestoreDocument: Document.colls(collections),
131
132
  messaging: messaging
132
133
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stevenkellner/team-conduct-api",
3
- "version": "2.0.13",
3
+ "version": "2.0.15",
4
4
  "description": "Firebase API for Team Conduct",
5
5
  "license": "MIT",
6
6
  "author": "Steven Kellner",
@@ -22,7 +22,7 @@
22
22
  "release": "npm run rebuild && npm run lint && npm version patch && git push --follow-tags"
23
23
  },
24
24
  "dependencies": {
25
- "@stevenkellner/firebase-function": "^1.4.143",
25
+ "@stevenkellner/firebase-function": "^1.4.144",
26
26
  "@stevenkellner/typescript-common-functionality": "^1.0.61"
27
27
  },
28
28
  "devDependencies": {
@@ -1,5 +1,6 @@
1
1
  import { FirestoreScheme } from './FirestoreScheme';
2
2
  import { Messaging } from './Messaging';
3
+ import { Firestore as FirebaseFirestore } from 'firebase-admin/firestore';
3
4
 
4
5
  /**
5
6
  * Singleton configuration manager for Firebase services.
@@ -16,6 +17,8 @@ export class FirebaseConfiguration {
16
17
 
17
18
  private configured: boolean = false;
18
19
 
20
+ private _firebaseFirestore: FirebaseFirestore | null = null;
21
+
19
22
  private _baseFirestoreDocument: FirestoreScheme | null = null;
20
23
 
21
24
  private _messaging: Messaging | null = null;
@@ -35,11 +38,13 @@ export class FirebaseConfiguration {
35
38
  * @throws Error if already configured
36
39
  */
37
40
  public configure(configuration: {
41
+ firebaseFirestore: FirebaseFirestore,
38
42
  baseFirestoreDocument: FirestoreScheme,
39
43
  messaging: Messaging
40
44
  }) {
41
45
  if (this.configured)
42
46
  throw new Error('Configuration is already configured');
47
+ this._firebaseFirestore = configuration.firebaseFirestore;
43
48
  this._baseFirestoreDocument = configuration.baseFirestoreDocument;
44
49
  this._messaging = configuration.messaging;
45
50
  this.configured = true;
@@ -53,6 +58,7 @@ export class FirebaseConfiguration {
53
58
  * @param configuration - New configuration object containing Firestore and Messaging services
54
59
  */
55
60
  public reconfigure(configuration: {
61
+ firebaseFirestore: FirebaseFirestore,
56
62
  baseFirestoreDocument: FirestoreScheme,
57
63
  messaging: Messaging
58
64
  }) {
@@ -60,6 +66,12 @@ export class FirebaseConfiguration {
60
66
  this.configure(configuration);
61
67
  }
62
68
 
69
+ public get firebaseFirestore(): FirebaseFirestore {
70
+ if (!this.configured || !this._firebaseFirestore)
71
+ throw new Error('Configuration.firebaseFirestore is not configured');
72
+ return this._firebaseFirestore;
73
+ }
74
+
63
75
  /**
64
76
  * Gets the base Firestore document reference.
65
77
  *
@@ -1,4 +1,4 @@
1
- import { FirestoreCollection, FirestoreDocument, UserAuthId } from '@stevenkellner/firebase-function';
1
+ import { FirestoreBatch, FirestoreCollection, FirestoreDocument, UserAuthId } from '@stevenkellner/firebase-function';
2
2
  import { FirestoreScheme } from './FirestoreScheme';
3
3
  import { Fine, FineTemplate, Invitation, Person, User, Team } from '../types';
4
4
  import { FirebaseConfiguration } from '.';
@@ -81,6 +81,10 @@ export class Firestore {
81
81
  return FirebaseConfiguration.shared.baseFirestoreDocument;
82
82
  }
83
83
 
84
+ public batch(): FirestoreBatch {
85
+ return new FirestoreBatch(FirebaseConfiguration.shared.firebaseFirestore);
86
+ }
87
+
84
88
  /**
85
89
  * Gets a reference to a team document.
86
90
  *
@@ -5,14 +5,16 @@ import { Flattable, ObjectTypeBuilder } from '@stevenkellner/typescript-common-f
5
5
  export namespace UserRegisterFunction {
6
6
 
7
7
  export type Parameters = {
8
- userId: User.Id
8
+ userId: User.Id,
9
+ signInType: User.SignInType
9
10
  };
10
11
  }
11
12
 
12
13
  export class UserRegisterFunction implements FirebaseFunction<UserRegisterFunction.Parameters, User> {
13
14
 
14
15
  public parametersBuilder = new ObjectTypeBuilder<Flattable.Flatten<UserRegisterFunction.Parameters>, UserRegisterFunction.Parameters>({
15
- userId: User.Id.builder
16
+ userId: User.Id.builder,
17
+ signInType: User.SignInType.builder
16
18
  });
17
19
 
18
20
  public returnTypeBuilder = User.builder;