@stevenkellner/team-conduct-api 1.0.36 → 2.0.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.
Files changed (218) hide show
  1. package/lib/src/firebase/FirebaseConfiguration.d.ts +45 -1
  2. package/lib/src/firebase/FirebaseConfiguration.js +44 -0
  3. package/lib/src/firebase/Firestore.d.ts +196 -0
  4. package/lib/src/firebase/Firestore.js +235 -0
  5. package/lib/src/{FirestoreScheme.d.ts → firebase/FirestoreScheme.d.ts} +15 -1
  6. package/lib/src/firebase/Messaging.d.ts +64 -0
  7. package/lib/src/firebase/checkAuthentication.d.ts +37 -0
  8. package/lib/src/{checkAuthentication.js → firebase/checkAuthentication.js} +26 -1
  9. package/lib/src/firebase/index.d.ts +4 -0
  10. package/lib/src/firebase/index.js +4 -0
  11. package/lib/src/firebase/pushNotification.d.ts +39 -0
  12. package/lib/src/firebase/pushNotification.js +88 -0
  13. package/lib/src/functions/fine/add.d.ts +10 -13
  14. package/lib/src/functions/fine/add.js +3 -30
  15. package/lib/src/functions/fine/delete.d.ts +10 -13
  16. package/lib/src/functions/fine/delete.js +3 -27
  17. package/lib/src/functions/fine/update.d.ts +10 -13
  18. package/lib/src/functions/fine/update.js +3 -28
  19. package/lib/src/functions/fineTemplate/add.d.ts +6 -9
  20. package/lib/src/functions/fineTemplate/add.js +3 -12
  21. package/lib/src/functions/fineTemplate/delete.d.ts +6 -9
  22. package/lib/src/functions/fineTemplate/delete.js +3 -12
  23. package/lib/src/functions/fineTemplate/update.d.ts +6 -9
  24. package/lib/src/functions/fineTemplate/update.js +3 -12
  25. package/lib/src/functions/invitation/getInvitation.d.ts +40 -43
  26. package/lib/src/functions/invitation/getInvitation.js +57 -88
  27. package/lib/src/functions/invitation/invite.d.ts +1 -2
  28. package/lib/src/functions/invitation/invite.js +3 -18
  29. package/lib/src/functions/invitation/register.d.ts +6 -11
  30. package/lib/src/functions/invitation/register.js +3 -39
  31. package/lib/src/functions/invitation/withdraw.d.ts +1 -2
  32. package/lib/src/functions/invitation/withdraw.js +3 -13
  33. package/lib/src/functions/notification/register.d.ts +7 -10
  34. package/lib/src/functions/notification/register.js +3 -15
  35. package/lib/src/functions/notification/subscribe.d.ts +8 -11
  36. package/lib/src/functions/notification/subscribe.js +3 -14
  37. package/lib/src/functions/paypalMe/edit.d.ts +6 -9
  38. package/lib/src/functions/paypalMe/edit.js +3 -14
  39. package/lib/src/functions/person/add.d.ts +7 -10
  40. package/lib/src/functions/person/add.js +3 -12
  41. package/lib/src/functions/person/delete.d.ts +6 -9
  42. package/lib/src/functions/person/delete.js +3 -14
  43. package/lib/src/functions/person/update.d.ts +7 -10
  44. package/lib/src/functions/person/update.js +3 -13
  45. package/lib/src/functions/team/new.d.ts +9 -12
  46. package/lib/src/functions/team/new.js +3 -22
  47. package/lib/src/functions/user/kickout.d.ts +6 -9
  48. package/lib/src/functions/user/kickout.js +3 -25
  49. package/lib/src/functions/user/login.d.ts +1 -2
  50. package/lib/src/functions/user/login.js +3 -13
  51. package/lib/src/functions/user/roleEdit.d.ts +8 -11
  52. package/lib/src/functions/user/roleEdit.js +3 -18
  53. package/lib/src/index.d.ts +0 -5
  54. package/lib/src/index.js +0 -5
  55. package/lib/src/locales/de.d.ts +10 -67
  56. package/lib/src/locales/de.js +8 -0
  57. package/lib/src/locales/en.d.ts +10 -0
  58. package/lib/src/locales/en.js +19 -2
  59. package/lib/src/types/Configuration.d.ts +33 -15
  60. package/lib/src/types/Configuration.js +24 -12
  61. package/lib/src/types/Currency.d.ts +20 -0
  62. package/lib/src/types/Currency.js +19 -0
  63. package/lib/src/types/Fine.d.ts +41 -0
  64. package/lib/src/types/Fine.js +32 -0
  65. package/lib/src/types/FineAmount.d.ts +160 -9
  66. package/lib/src/types/FineAmount.js +128 -7
  67. package/lib/src/types/FineTemplate.d.ts +41 -0
  68. package/lib/src/types/FineTemplate.js +32 -0
  69. package/lib/src/types/FineTemplateRepetition.d.ts +72 -10
  70. package/lib/src/types/FineTemplateRepetition.js +66 -12
  71. package/lib/src/types/Invitation.d.ts +48 -0
  72. package/lib/src/types/Invitation.js +39 -0
  73. package/lib/src/types/Locale.d.ts +16 -0
  74. package/lib/src/types/Locale.js +16 -0
  75. package/lib/src/types/Localization.d.ts +74 -74
  76. package/lib/src/types/Localization.js +80 -41
  77. package/lib/src/types/MoneyAmount.d.ts +67 -1
  78. package/lib/src/types/MoneyAmount.js +62 -0
  79. package/lib/src/types/NotificationProperties.d.ts +70 -9
  80. package/lib/src/types/NotificationProperties.js +49 -5
  81. package/lib/src/types/PayedState.d.ts +25 -9
  82. package/lib/src/types/PayedState.js +17 -27
  83. package/lib/src/types/Person.d.ts +45 -0
  84. package/lib/src/types/Person.js +36 -0
  85. package/lib/src/types/PersonPrivateProperties.d.ts +28 -0
  86. package/lib/src/types/PersonPrivateProperties.js +25 -0
  87. package/lib/src/types/PersonSignInProperties.d.ts +30 -0
  88. package/lib/src/types/PersonSignInProperties.js +27 -0
  89. package/lib/src/types/Pluralization.d.ts +46 -0
  90. package/lib/src/types/Pluralization.js +46 -0
  91. package/lib/src/types/Team.d.ts +38 -0
  92. package/lib/src/types/Team.js +29 -0
  93. package/lib/src/types/User.d.ts +68 -3
  94. package/lib/src/types/User.js +59 -5
  95. package/lib/src/types/UserRole.d.ts +26 -4
  96. package/lib/src/types/UserRole.js +25 -9
  97. package/lib/src/types/index.d.ts +2 -0
  98. package/lib/src/types/index.js +2 -0
  99. package/lib/test/firebase/FirebaseConfiguration.test.js +155 -0
  100. package/lib/test/firebase/Firestore.test.js +46 -0
  101. package/lib/test/firebase/checkAuthentication.test.d.ts +1 -0
  102. package/lib/test/firebase/checkAuthentication.test.js +305 -0
  103. package/lib/test/firebase/firebase-utils.d.ts +32 -0
  104. package/lib/test/firebase/firebase-utils.js +131 -0
  105. package/lib/test/firebase/pushNotification.test.d.ts +1 -0
  106. package/lib/test/firebase/pushNotification.test.js +300 -0
  107. package/lib/test/locales/localization.de.test.d.ts +1 -0
  108. package/lib/test/locales/localization.de.test.js +144 -0
  109. package/lib/test/locales/localization.en.test.d.ts +1 -0
  110. package/lib/test/locales/localization.en.test.js +144 -0
  111. package/lib/test/types/Configuration.test.d.ts +1 -0
  112. package/lib/test/types/Configuration.test.js +84 -0
  113. package/lib/test/types/Currency.test.d.ts +1 -0
  114. package/lib/test/types/Currency.test.js +41 -0
  115. package/lib/test/types/Fine.test.d.ts +1 -0
  116. package/lib/test/types/Fine.test.js +265 -0
  117. package/lib/test/types/FineAmount.test.d.ts +1 -0
  118. package/lib/test/types/FineAmount.test.js +445 -0
  119. package/lib/test/types/FineTemplate.test.d.ts +1 -0
  120. package/lib/test/types/FineTemplate.test.js +271 -0
  121. package/lib/test/types/FineTemplateRepetition.test.d.ts +1 -0
  122. package/lib/test/types/FineTemplateRepetition.test.js +361 -0
  123. package/lib/test/types/Invitation.test.d.ts +1 -0
  124. package/lib/test/types/Invitation.test.js +269 -0
  125. package/lib/test/types/Locale.test.d.ts +1 -0
  126. package/lib/test/types/Locale.test.js +46 -0
  127. package/lib/test/types/Localization.test.d.ts +1 -0
  128. package/lib/test/types/Localization.test.js +241 -0
  129. package/lib/test/types/MoneyAmount.test.d.ts +1 -0
  130. package/lib/test/types/MoneyAmount.test.js +276 -0
  131. package/lib/test/types/NotificationProperties.test.d.ts +1 -0
  132. package/lib/test/types/NotificationProperties.test.js +258 -0
  133. package/lib/test/types/PayedState.test.d.ts +1 -0
  134. package/lib/test/types/PayedState.test.js +105 -0
  135. package/lib/test/types/Person.test.d.ts +1 -0
  136. package/lib/test/types/Person.test.js +266 -0
  137. package/lib/test/types/PersonPrivateProperties.test.d.ts +1 -0
  138. package/lib/test/types/PersonPrivateProperties.test.js +155 -0
  139. package/lib/test/types/PersonSignInProperties.test.d.ts +1 -0
  140. package/lib/test/types/PersonSignInProperties.test.js +208 -0
  141. package/lib/test/types/Pluralization.test.d.ts +1 -0
  142. package/lib/test/types/Pluralization.test.js +206 -0
  143. package/lib/test/types/Team.test.d.ts +1 -0
  144. package/lib/test/types/Team.test.js +145 -0
  145. package/lib/test/types/User.test.d.ts +1 -0
  146. package/lib/test/types/User.test.js +232 -0
  147. package/lib/test/types/UserRole.test.d.ts +1 -0
  148. package/lib/test/types/UserRole.test.js +140 -0
  149. package/lib/tsconfig.tsbuildinfo +1 -1
  150. package/package.json +10 -9
  151. package/src/firebase/FirebaseConfiguration.ts +49 -1
  152. package/src/firebase/Firestore.ts +248 -0
  153. package/src/{FirestoreScheme.ts → firebase/FirestoreScheme.ts} +15 -1
  154. package/src/firebase/Messaging.ts +64 -0
  155. package/src/{checkAuthentication.ts → firebase/checkAuthentication.ts} +39 -1
  156. package/src/firebase/index.ts +5 -0
  157. package/src/firebase/pushNotification.ts +90 -0
  158. package/src/functions/fine/add.ts +10 -48
  159. package/src/functions/fine/delete.ts +9 -43
  160. package/src/functions/fine/update.ts +10 -44
  161. package/src/functions/fineTemplate/add.ts +7 -23
  162. package/src/functions/fineTemplate/delete.ts +7 -23
  163. package/src/functions/fineTemplate/update.ts +7 -24
  164. package/src/functions/index.ts +0 -1
  165. package/src/functions/invitation/getInvitation.ts +81 -118
  166. package/src/functions/invitation/invite.ts +2 -25
  167. package/src/functions/invitation/register.ts +9 -60
  168. package/src/functions/invitation/withdraw.ts +2 -16
  169. package/src/functions/notification/register.ts +7 -26
  170. package/src/functions/notification/subscribe.ts +8 -26
  171. package/src/functions/paypalMe/edit.ts +7 -25
  172. package/src/functions/person/add.ts +8 -24
  173. package/src/functions/person/delete.ts +6 -25
  174. package/src/functions/person/update.ts +8 -25
  175. package/src/functions/team/new.ts +12 -42
  176. package/src/functions/user/kickout.ts +8 -41
  177. package/src/functions/user/login.ts +2 -16
  178. package/src/functions/user/roleEdit.ts +8 -32
  179. package/src/index.ts +0 -5
  180. package/src/locales/de.ts +10 -1
  181. package/src/locales/en.ts +21 -2
  182. package/src/types/Configuration.ts +33 -23
  183. package/src/types/Currency.ts +24 -0
  184. package/src/types/Fine.ts +41 -0
  185. package/src/types/FineAmount.ts +162 -11
  186. package/src/types/FineTemplate.ts +41 -0
  187. package/src/types/FineTemplateRepetition.ts +75 -17
  188. package/src/types/Invitation.ts +48 -0
  189. package/src/types/Locale.ts +20 -0
  190. package/src/types/Localization.ts +96 -41
  191. package/src/types/MoneyAmount.ts +67 -1
  192. package/src/types/NotificationProperties.ts +67 -9
  193. package/src/types/PayedState.ts +25 -30
  194. package/src/types/Person.ts +45 -0
  195. package/src/types/PersonPrivateProperties.ts +28 -1
  196. package/src/types/PersonSignInProperties.ts +30 -0
  197. package/src/types/Pluralization.ts +46 -0
  198. package/src/types/Team.ts +38 -0
  199. package/src/types/User.ts +70 -4
  200. package/src/types/UserRole.ts +32 -16
  201. package/src/types/index.ts +2 -0
  202. package/lib/src/Firestore.d.ts +0 -24
  203. package/lib/src/Firestore.js +0 -62
  204. package/lib/src/checkAuthentication.d.ts +0 -6
  205. package/lib/src/firebaseFunctionsContext.d.ts +0 -39
  206. package/lib/src/firebaseFunctionsContext.js +0 -43
  207. package/lib/src/pushNotification.d.ts +0 -3
  208. package/lib/src/pushNotification.js +0 -35
  209. package/lib/test/localization-utils.d.ts +0 -1
  210. package/lib/test/localization-utils.js +0 -24
  211. package/lib/test/localization.de.test.js +0 -151
  212. package/lib/test/localization.en.test.js +0 -145
  213. package/src/Firestore.ts +0 -75
  214. package/src/firebaseFunctionsContext.ts +0 -48
  215. package/src/pushNotification.ts +0 -37
  216. /package/lib/src/{FirestoreScheme.js → firebase/FirestoreScheme.js} +0 -0
  217. /package/lib/test/{localization.de.test.d.ts → firebase/FirebaseConfiguration.test.d.ts} +0 -0
  218. /package/lib/test/{localization.en.test.d.ts → firebase/Firestore.test.d.ts} +0 -0
@@ -1,24 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PersonAddFunction = void 0;
3
+ exports.PersonAddFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
5
  const types_1 = require("../../types");
6
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
- const checkAuthentication_1 = require("../../checkAuthentication");
8
- const Firestore_1 = require("../../Firestore");
9
- class PersonAddFunction extends firebase_function_1.FirebaseFunction {
7
+ class PersonAddFunctionBase extends firebase_function_1.FirebaseFunction {
10
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
9
  teamId: types_1.Team.Id.builder,
12
10
  id: types_1.Person.Id.builder,
13
11
  properties: types_1.PersonPrivateProperties.builder
14
12
  });
15
13
  returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
16
- async execute(parameters) {
17
- await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'person-manager');
18
- const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).snapshot();
19
- if (personSnapshot.exists)
20
- throw new firebase_function_1.FunctionsError('already-exists', 'Person already exists');
21
- await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).set(new types_1.Person(parameters.id, parameters.properties));
22
- }
23
14
  }
24
- exports.PersonAddFunction = PersonAddFunction;
15
+ exports.PersonAddFunctionBase = PersonAddFunctionBase;
@@ -1,17 +1,14 @@
1
1
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
2
  import { Person, Team } from '../../types';
3
3
  import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
- export declare namespace PersonDeleteFunction {
5
- type Parameters = {
6
- teamId: Team.Id;
7
- id: Person.Id;
8
- };
9
- }
10
- export declare class PersonDeleteFunction extends FirebaseFunction<PersonDeleteFunction.Parameters, void> {
4
+ export type PersonDeleteFunctionParameters = {
5
+ teamId: Team.Id;
6
+ id: Person.Id;
7
+ };
8
+ export declare abstract class PersonDeleteFunctionBase extends FirebaseFunction<PersonDeleteFunctionParameters, void> {
11
9
  parametersBuilder: ObjectTypeBuilder<{
12
10
  teamId: string;
13
11
  id: string;
14
- }, PersonDeleteFunction.Parameters>;
12
+ }, PersonDeleteFunctionParameters>;
15
13
  returnTypeBuilder: ValueTypeBuilder<void>;
16
- execute(parameters: PersonDeleteFunction.Parameters): Promise<void>;
17
14
  }
@@ -1,25 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PersonDeleteFunction = void 0;
3
+ exports.PersonDeleteFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
5
  const types_1 = require("../../types");
6
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
- const checkAuthentication_1 = require("../../checkAuthentication");
8
- const Firestore_1 = require("../../Firestore");
9
- class PersonDeleteFunction extends firebase_function_1.FirebaseFunction {
7
+ class PersonDeleteFunctionBase extends firebase_function_1.FirebaseFunction {
10
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
9
  teamId: types_1.Team.Id.builder,
12
10
  id: types_1.Person.Id.builder
13
11
  });
14
12
  returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
- async execute(parameters) {
16
- await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'person-manager');
17
- const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).snapshot();
18
- if (!personSnapshot.exists)
19
- throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
20
- if (personSnapshot.data.signInProperties !== null)
21
- throw new firebase_function_1.FunctionsError('failed-precondition', 'Person is signed in');
22
- await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).remove();
23
- }
24
13
  }
25
- exports.PersonDeleteFunction = PersonDeleteFunction;
14
+ exports.PersonDeleteFunctionBase = PersonDeleteFunctionBase;
@@ -1,14 +1,12 @@
1
1
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
2
  import { Person, PersonPrivateProperties, Team } from '../../types';
3
3
  import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
- export declare namespace PersonUpdateFunction {
5
- type Parameters = {
6
- teamId: Team.Id;
7
- id: Person.Id;
8
- properties: PersonPrivateProperties;
9
- };
10
- }
11
- export declare class PersonUpdateFunction extends FirebaseFunction<PersonUpdateFunction.Parameters, void> {
4
+ export type PersonUpdateFunctionParameters = {
5
+ teamId: Team.Id;
6
+ id: Person.Id;
7
+ properties: PersonPrivateProperties;
8
+ };
9
+ export declare abstract class PersonUpdateFunctionBase extends FirebaseFunction<PersonUpdateFunctionParameters, void> {
12
10
  parametersBuilder: ObjectTypeBuilder<{
13
11
  teamId: string;
14
12
  id: string;
@@ -16,7 +14,6 @@ export declare class PersonUpdateFunction extends FirebaseFunction<PersonUpdateF
16
14
  firstName: string;
17
15
  lastName: string | null;
18
16
  };
19
- }, PersonUpdateFunction.Parameters>;
17
+ }, PersonUpdateFunctionParameters>;
20
18
  returnTypeBuilder: ValueTypeBuilder<void>;
21
- execute(parameters: PersonUpdateFunction.Parameters): Promise<void>;
22
19
  }
@@ -1,25 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PersonUpdateFunction = void 0;
3
+ exports.PersonUpdateFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
5
  const types_1 = require("../../types");
6
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
- const checkAuthentication_1 = require("../../checkAuthentication");
8
- const Firestore_1 = require("../../Firestore");
9
- class PersonUpdateFunction extends firebase_function_1.FirebaseFunction {
7
+ class PersonUpdateFunctionBase extends firebase_function_1.FirebaseFunction {
10
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
9
  teamId: types_1.Team.Id.builder,
12
10
  id: types_1.Person.Id.builder,
13
11
  properties: types_1.PersonPrivateProperties.builder
14
12
  });
15
13
  returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
16
- async execute(parameters) {
17
- await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'person-manager');
18
- const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).snapshot();
19
- if (!personSnapshot.exists)
20
- throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
21
- const person = types_1.Person.builder.build(personSnapshot.data);
22
- await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.id).set(new types_1.Person(parameters.id, parameters.properties, person.fineIds, person.signInProperties));
23
- }
24
14
  }
25
- exports.PersonUpdateFunction = PersonUpdateFunction;
15
+ exports.PersonUpdateFunctionBase = PersonUpdateFunctionBase;
@@ -1,16 +1,14 @@
1
1
  import { ObjectTypeBuilder } from '@stevenkellner/typescript-common-functionality';
2
2
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
3
3
  import { Person, PersonPrivateProperties, User, Team } from '../../types';
4
- export declare namespace TeamNewFunction {
5
- type Parameters = {
6
- id: Team.Id;
7
- name: string;
8
- paypalMeLink: string | null;
9
- personId: Person.Id;
10
- personProperties: PersonPrivateProperties;
11
- };
12
- }
13
- export declare class TeamNewFunction extends FirebaseFunction<TeamNewFunction.Parameters, User> {
4
+ export type TeamNewFunctionParameters = {
5
+ id: Team.Id;
6
+ name: string;
7
+ paypalMeLink: string | null;
8
+ personId: Person.Id;
9
+ personProperties: PersonPrivateProperties;
10
+ };
11
+ export declare abstract class TeamNewFunctionBase extends FirebaseFunction<TeamNewFunctionParameters, User> {
14
12
  parametersBuilder: ObjectTypeBuilder<{
15
13
  id: string;
16
14
  name: string;
@@ -20,7 +18,6 @@ export declare class TeamNewFunction extends FirebaseFunction<TeamNewFunction.Pa
20
18
  firstName: string;
21
19
  lastName: string | null;
22
20
  };
23
- }, TeamNewFunction.Parameters>;
21
+ }, TeamNewFunctionParameters>;
24
22
  returnTypeBuilder: User.TypeBuilder;
25
- execute(parameters: TeamNewFunction.Parameters): Promise<User>;
26
23
  }
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TeamNewFunction = void 0;
3
+ exports.TeamNewFunctionBase = void 0;
4
4
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
5
5
  const firebase_function_1 = require("@stevenkellner/firebase-function");
6
6
  const types_1 = require("../../types");
7
- const Firestore_1 = require("../../Firestore");
8
- class TeamNewFunction extends firebase_function_1.FirebaseFunction {
7
+ class TeamNewFunctionBase extends firebase_function_1.FirebaseFunction {
9
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
10
9
  id: types_1.Team.Id.builder,
11
10
  name: new typescript_common_functionality_1.ValueTypeBuilder(),
@@ -14,23 +13,5 @@ class TeamNewFunction extends firebase_function_1.FirebaseFunction {
14
13
  personProperties: types_1.PersonPrivateProperties.builder
15
14
  });
16
15
  returnTypeBuilder = types_1.User.builder;
17
- async execute(parameters) {
18
- if (this.userId === null)
19
- throw new firebase_function_1.FunctionsError('permission-denied', 'User is not authenticated');
20
- const userId = types_1.User.Id.builder.build(this.userId);
21
- const teamSnapshot = await Firestore_1.Firestore.shared.team(parameters.id).snapshot();
22
- if (teamSnapshot.exists)
23
- throw new firebase_function_1.FunctionsError('already-exists', 'Team already exists');
24
- const userSnapshot = await Firestore_1.Firestore.shared.user(userId).snapshot();
25
- let user = new types_1.User(userId);
26
- if (userSnapshot.exists)
27
- user = types_1.User.builder.build(userSnapshot.data);
28
- user.teams.set(parameters.id, new types_1.User.TeamProperties(parameters.name, parameters.personId));
29
- await Firestore_1.Firestore.shared.user(userId).set(user);
30
- await Firestore_1.Firestore.shared.team(parameters.id).set(new types_1.Team(parameters.id, parameters.name, parameters.paypalMeLink));
31
- const signInProperties = new types_1.PersonSignInProperties(userId, typescript_common_functionality_1.UtcDate.now, new types_1.NotificationProperties(), types_1.UserRole.all);
32
- await Firestore_1.Firestore.shared.person(parameters.id, parameters.personId).set(new types_1.Person(parameters.personId, parameters.personProperties, [], signInProperties));
33
- return user;
34
- }
35
16
  }
36
- exports.TeamNewFunction = TeamNewFunction;
17
+ exports.TeamNewFunctionBase = TeamNewFunctionBase;
@@ -1,17 +1,14 @@
1
1
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
2
  import { Team, User } from '../../types';
3
3
  import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
- export declare namespace UserKickoutFunction {
5
- type Parameters = {
6
- teamId: Team.Id;
7
- userId: User.Id;
8
- };
9
- }
10
- export declare class UserKickoutFunction extends FirebaseFunction<UserKickoutFunction.Parameters, void> {
4
+ export type UserKickoutFunctionParameters = {
5
+ teamId: Team.Id;
6
+ userId: User.Id;
7
+ };
8
+ export declare abstract class UserKickoutFunctionBase extends FirebaseFunction<UserKickoutFunctionParameters, void> {
11
9
  parametersBuilder: ObjectTypeBuilder<{
12
10
  teamId: string;
13
11
  userId: string;
14
- }, UserKickoutFunction.Parameters>;
12
+ }, UserKickoutFunctionParameters>;
15
13
  returnTypeBuilder: ValueTypeBuilder<void>;
16
- execute(parameters: UserKickoutFunction.Parameters): Promise<void>;
17
14
  }
@@ -1,36 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserKickoutFunction = void 0;
3
+ exports.UserKickoutFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
5
  const types_1 = require("../../types");
6
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
- const Firestore_1 = require("../../Firestore");
8
- const checkAuthentication_1 = require("../../checkAuthentication");
9
- class UserKickoutFunction extends firebase_function_1.FirebaseFunction {
7
+ class UserKickoutFunctionBase extends firebase_function_1.FirebaseFunction {
10
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
9
  teamId: types_1.Team.Id.builder,
12
10
  userId: types_1.User.Id.builder
13
11
  });
14
12
  returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
- async execute(parameters) {
16
- const userId = await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'team-manager');
17
- if (userId.value === parameters.userId.value)
18
- throw new firebase_function_1.FunctionsError('invalid-argument', 'You cannot kick yourself out of a team.');
19
- const userSnapshot = await Firestore_1.Firestore.shared.user(parameters.userId).snapshot();
20
- if (!userSnapshot.exists)
21
- throw new firebase_function_1.FunctionsError('not-found', 'User not found.');
22
- const user = types_1.User.builder.build(userSnapshot.data);
23
- const userTeamProperties = user.teams.getOptional(parameters.teamId);
24
- if (userTeamProperties === null)
25
- throw new firebase_function_1.FunctionsError('not-found', 'User is not a member of the team.');
26
- const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, userTeamProperties.personId).snapshot();
27
- if (!personSnapshot.exists)
28
- throw new firebase_function_1.FunctionsError('not-found', 'Person not found.');
29
- const person = types_1.Person.builder.build(personSnapshot.data);
30
- person.signInProperties = null;
31
- await Firestore_1.Firestore.shared.person(parameters.teamId, userTeamProperties.personId).set(person);
32
- user.teams.delete(parameters.teamId);
33
- await Firestore_1.Firestore.shared.user(parameters.userId).set(user);
34
- }
35
13
  }
36
- exports.UserKickoutFunction = UserKickoutFunction;
14
+ exports.UserKickoutFunctionBase = UserKickoutFunctionBase;
@@ -1,8 +1,7 @@
1
1
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
2
  import { User } from '../../types';
3
3
  import { ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
- export declare class UserLoginFunction extends FirebaseFunction<null, User> {
4
+ export declare abstract class UserLoginFunctionBase extends FirebaseFunction<null, User> {
5
5
  parametersBuilder: ValueTypeBuilder<null>;
6
6
  returnTypeBuilder: User.TypeBuilder;
7
- execute(): Promise<User>;
8
7
  }
@@ -1,21 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserLoginFunction = void 0;
3
+ exports.UserLoginFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
5
  const types_1 = require("../../types");
6
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
- const Firestore_1 = require("../../Firestore");
8
- class UserLoginFunction extends firebase_function_1.FirebaseFunction {
7
+ class UserLoginFunctionBase extends firebase_function_1.FirebaseFunction {
9
8
  parametersBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
10
9
  returnTypeBuilder = types_1.User.builder;
11
- async execute() {
12
- if (this.userId === null)
13
- throw new firebase_function_1.FunctionsError('unauthenticated', 'User is not authenticated.');
14
- const userId = types_1.User.Id.builder.build(this.userId);
15
- const userSnapshot = await Firestore_1.Firestore.shared.user(userId).snapshot();
16
- if (!userSnapshot.exists)
17
- throw new firebase_function_1.FunctionsError('not-found', 'User not found.');
18
- return types_1.User.builder.build(userSnapshot.data);
19
- }
20
10
  }
21
- exports.UserLoginFunction = UserLoginFunction;
11
+ exports.UserLoginFunctionBase = UserLoginFunctionBase;
@@ -1,19 +1,16 @@
1
1
  import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
2
  import { Person, Team, UserRole } from '../../types';
3
3
  import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
- export declare namespace UserRoleEditFunction {
5
- type Parameters = {
6
- teamId: Team.Id;
7
- personId: Person.Id;
8
- roles: UserRole[];
9
- };
10
- }
11
- export declare class UserRoleEditFunction extends FirebaseFunction<UserRoleEditFunction.Parameters, void> {
4
+ export type UserRoleEditFunctionParameters = {
5
+ teamId: Team.Id;
6
+ personId: Person.Id;
7
+ roles: UserRole[];
8
+ };
9
+ export declare abstract class UserRoleEditFunctionBase extends FirebaseFunction<UserRoleEditFunctionParameters, void> {
12
10
  parametersBuilder: ObjectTypeBuilder<{
13
11
  teamId: string;
14
12
  personId: string;
15
- roles: UserRole[];
16
- }, UserRoleEditFunction.Parameters>;
13
+ roles: ("person-manager" | "fineTemplate-manager" | "fine-manager" | "fine-can-add" | "team-manager")[];
14
+ }, UserRoleEditFunctionParameters>;
17
15
  returnTypeBuilder: ValueTypeBuilder<void>;
18
- execute(parameters: UserRoleEditFunction.Parameters): Promise<void>;
19
16
  }
@@ -1,30 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UserRoleEditFunction = void 0;
3
+ exports.UserRoleEditFunctionBase = void 0;
4
4
  const firebase_function_1 = require("@stevenkellner/firebase-function");
5
- const checkAuthentication_1 = require("../../checkAuthentication");
6
5
  const types_1 = require("../../types");
7
6
  const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
8
- const Firestore_1 = require("../../Firestore");
9
- class UserRoleEditFunction extends firebase_function_1.FirebaseFunction {
7
+ class UserRoleEditFunctionBase extends firebase_function_1.FirebaseFunction {
10
8
  parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
9
  teamId: types_1.Team.Id.builder,
12
10
  personId: types_1.Person.Id.builder,
13
11
  roles: new typescript_common_functionality_1.ArrayTypeBuilder(new typescript_common_functionality_1.ValueTypeBuilder())
14
12
  });
15
13
  returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
16
- async execute(parameters) {
17
- const userId = await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'team-manager');
18
- const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).snapshot();
19
- if (!personSnapshot.exists)
20
- throw new firebase_function_1.FunctionsError('not-found', 'User does not exist');
21
- const person = types_1.Person.builder.build(personSnapshot.data);
22
- if (person.signInProperties === null)
23
- throw new firebase_function_1.FunctionsError('permission-denied', 'User is not signed in');
24
- if (person.signInProperties.userId.value === userId.value && !parameters.roles.includes('team-manager'))
25
- throw new firebase_function_1.FunctionsError('unavailable', 'User cannot remove their own team-manager role');
26
- person.signInProperties.roles = parameters.roles;
27
- await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).set(person);
28
- }
29
14
  }
30
- exports.UserRoleEditFunction = UserRoleEditFunction;
15
+ exports.UserRoleEditFunctionBase = UserRoleEditFunctionBase;
@@ -1,8 +1,3 @@
1
1
  export * from './firebase';
2
2
  export * from './functions';
3
3
  export * from './types';
4
- export * from './checkAuthentication';
5
- export * from './firebaseFunctionsContext';
6
- export * from './Firestore';
7
- export * from './FirestoreScheme';
8
- export * from './pushNotification';
package/lib/src/index.js CHANGED
@@ -17,8 +17,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./firebase"), exports);
18
18
  __exportStar(require("./functions"), exports);
19
19
  __exportStar(require("./types"), exports);
20
- __exportStar(require("./checkAuthentication"), exports);
21
- __exportStar(require("./firebaseFunctionsContext"), exports);
22
- __exportStar(require("./Firestore"), exports);
23
- __exportStar(require("./FirestoreScheme"), exports);
24
- __exportStar(require("./pushNotification"), exports);
@@ -1,67 +1,10 @@
1
- import { Pluralization } from '../types/Pluralization';
2
- export declare const localizationDE: {
3
- notification: {
4
- fine: {
5
- new: {
6
- title: string;
7
- body: string;
8
- };
9
- reminder: {
10
- title: string;
11
- body: string;
12
- };
13
- stateChange: {
14
- title: string;
15
- bodyPayed: string;
16
- bodyUnpayed: string;
17
- bodyDeleted: string;
18
- };
19
- };
20
- };
21
- fineAmount: {
22
- item: {
23
- type: {
24
- crateOfBeer: {
25
- name: string;
26
- withCount: Pluralization;
27
- withoutCount: Pluralization;
28
- };
29
- };
30
- };
31
- };
32
- fineTemplateRepetition: {
33
- item: {
34
- minute: {
35
- name: string;
36
- withCount: Pluralization;
37
- withoutCount: Pluralization;
38
- };
39
- day: {
40
- name: string;
41
- withCount: Pluralization;
42
- withoutCount: Pluralization;
43
- };
44
- item: {
45
- name: string;
46
- withCount: Pluralization;
47
- withoutCount: Pluralization;
48
- };
49
- count: {
50
- name: string;
51
- withCount: Pluralization;
52
- withoutCount: Pluralization;
53
- };
54
- };
55
- };
56
- payedState: {
57
- payed: string;
58
- notPayed: string;
59
- };
60
- userRole: {
61
- personManager: string;
62
- fineTemplateManager: string;
63
- fineManager: string;
64
- fineCanAdd: string;
65
- teamManager: string;
66
- };
67
- };
1
+ import { LocalizationDict } from '../types/Localization';
2
+ /**
3
+ * German (de) localization strings for the application.
4
+ * Contains translations for notifications, fine amounts, fine template repetitions,
5
+ * payment states, and user roles.
6
+ *
7
+ * Supports template variables using {{variableName}} syntax that will be replaced
8
+ * at runtime with actual values.
9
+ */
10
+ export declare const localizationDE: LocalizationDict;
@@ -2,6 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.localizationDE = void 0;
4
4
  const Pluralization_1 = require("../types/Pluralization");
5
+ /**
6
+ * German (de) localization strings for the application.
7
+ * Contains translations for notifications, fine amounts, fine template repetitions,
8
+ * payment states, and user roles.
9
+ *
10
+ * Supports template variables using {{variableName}} syntax that will be replaced
11
+ * at runtime with actual values.
12
+ */
5
13
  exports.localizationDE = {
6
14
  notification: {
7
15
  fine: {
@@ -1,4 +1,14 @@
1
1
  import { Pluralization } from '../types/Pluralization';
2
+ /**
3
+ * English (en) localization strings for the application.
4
+ * Contains translations for notifications, fine amounts, fine template repetitions,
5
+ * payment states, and user roles.
6
+ *
7
+ * Supports template variables using {{variableName}} syntax that will be replaced
8
+ * at runtime with actual values.
9
+ *
10
+ * This serves as the base localization - other locales should match this structure.
11
+ */
2
12
  export declare const localizationEN: {
3
13
  notification: {
4
14
  fine: {
@@ -2,7 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.localizationEN = void 0;
4
4
  const Pluralization_1 = require("../types/Pluralization");
5
- exports.localizationEN = {
5
+ /**
6
+ * Helper function to ensure a value satisfies the Localization structure
7
+ * while preserving its concrete type (as const) for type inference.
8
+ * @param value - The localization object to validate
9
+ * @returns The same value with its inferred type preserved
10
+ */
11
+ const satisfiesLocalization = (value) => value;
12
+ /**
13
+ * English (en) localization strings for the application.
14
+ * Contains translations for notifications, fine amounts, fine template repetitions,
15
+ * payment states, and user roles.
16
+ *
17
+ * Supports template variables using {{variableName}} syntax that will be replaced
18
+ * at runtime with actual values.
19
+ *
20
+ * This serves as the base localization - other locales should match this structure.
21
+ */
22
+ exports.localizationEN = satisfiesLocalization({
6
23
  notification: {
7
24
  fine: {
8
25
  new: {
@@ -97,4 +114,4 @@ exports.localizationEN = {
97
114
  fineCanAdd: 'Can add fines',
98
115
  teamManager: 'Team Manager'
99
116
  }
100
- };
117
+ });
@@ -1,28 +1,46 @@
1
- import { localizations } from './Localization';
2
- import { Flattable, ITypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
1
+ import { Flattable, ITypeBuilder } from '@stevenkellner/typescript-common-functionality';
2
+ import { Currency } from './Currency';
3
+ import { Locale } from './Locale';
4
+ /**
5
+ * Represents the configuration settings that will be passed to the functions parameters.
6
+ * Contains currency and locale preferences.
7
+ */
3
8
  export declare class Configuration implements Flattable<Configuration.Flatten> {
4
- currency: Configuration.Currency;
5
- locale: Configuration.Locale;
6
- constructor(currency: Configuration.Currency, locale: Configuration.Locale);
9
+ currency: Currency;
10
+ locale: Locale;
11
+ /**
12
+ * Creates a new Configuration instance.
13
+ * @param currency - The currency to use for monetary values (EUR, USD, ...)
14
+ * @param locale - The locale for localization (language/region)
15
+ */
16
+ constructor(currency: Currency, locale: Locale);
17
+ /**
18
+ * Returns the flattened representation of the configuration.
19
+ * @returns The flattened configuration object
20
+ */
7
21
  get flatten(): Configuration.Flatten;
8
22
  }
9
23
  export declare namespace Configuration {
10
- type Currency = 'EUR' | 'USD';
11
- namespace Currency {
12
- const all: Currency[];
13
- const builder: ValueTypeBuilder<Currency>;
14
- }
15
- type Locale = keyof typeof localizations;
16
- namespace Locale {
17
- const all: Locale[];
18
- const builder: ValueTypeBuilder<"en" | "de">;
19
- }
24
+ /**
25
+ * Flattened representation of Configuration for serialization.
26
+ */
20
27
  type Flatten = {
21
28
  currency: Currency;
22
29
  locale: Locale;
23
30
  };
31
+ /**
32
+ * TypeBuilder for constructing Configuration instances from flattened data.
33
+ */
24
34
  class TypeBuilder implements ITypeBuilder<Flatten, Configuration> {
35
+ /**
36
+ * Builds a Configuration instance from flattened data.
37
+ * @param flatten - The flattened configuration data
38
+ * @returns A new Configuration instance
39
+ */
25
40
  build(flatten: Flatten): Configuration;
26
41
  }
42
+ /**
43
+ * Singleton builder instance for Configuration.
44
+ */
27
45
  const builder: TypeBuilder;
28
46
  }