@stevenkellner/team-conduct-api 1.0.4 → 1.0.5

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 (128) hide show
  1. package/lib/src/Firestore.d.ts +15 -0
  2. package/lib/src/Firestore.js +53 -0
  3. package/{src/FirestoreScheme.ts → lib/src/FirestoreScheme.d.ts} +12 -13
  4. package/lib/src/FirestoreScheme.js +2 -0
  5. package/lib/src/checkAuthentication.d.ts +2 -0
  6. package/lib/src/checkAuthentication.js +31 -0
  7. package/lib/src/firebase/FirebaseConfiguration.d.ts +15 -0
  8. package/{src/firebase/FirebaseConfiguration.ts → lib/src/firebase/FirebaseConfiguration.js} +13 -24
  9. package/{src/firebase/Messaging.ts → lib/src/firebase/Messaging.d.ts} +0 -3
  10. package/lib/src/firebase/Messaging.js +2 -0
  11. package/lib/src/firebase/index.js +18 -0
  12. package/lib/src/firebaseFunctionCreators.d.ts +50 -0
  13. package/lib/src/firebaseFunctionCreators.js +58 -0
  14. package/lib/src/functions/fine/add.d.ts +37 -0
  15. package/lib/src/functions/fine/add.js +71 -0
  16. package/lib/src/functions/fine/delete.d.ts +24 -0
  17. package/lib/src/functions/fine/delete.js +71 -0
  18. package/lib/src/functions/fine/update.d.ts +38 -0
  19. package/lib/src/functions/fine/update.js +73 -0
  20. package/lib/src/functions/fineTemplate/add.d.ts +32 -0
  21. package/lib/src/functions/fineTemplate/add.js +23 -0
  22. package/lib/src/functions/fineTemplate/delete.d.ts +17 -0
  23. package/lib/src/functions/fineTemplate/delete.js +23 -0
  24. package/lib/src/functions/fineTemplate/update.d.ts +32 -0
  25. package/lib/src/functions/fineTemplate/update.js +23 -0
  26. package/lib/src/functions/invitation/invite.d.ts +7 -0
  27. package/lib/src/functions/invitation/invite.js +23 -0
  28. package/lib/src/functions/invitation/register.d.ts +7 -0
  29. package/lib/src/functions/invitation/register.js +43 -0
  30. package/lib/src/functions/invitation/withdraw.d.ts +8 -0
  31. package/lib/src/functions/invitation/withdraw.js +21 -0
  32. package/lib/src/functions/notification/register.d.ts +19 -0
  33. package/lib/src/functions/notification/register.js +27 -0
  34. package/lib/src/functions/notification/subscribe.d.ts +19 -0
  35. package/lib/src/functions/notification/subscribe.js +26 -0
  36. package/lib/src/functions/paypalMe/edit.d.ts +17 -0
  37. package/lib/src/functions/paypalMe/edit.js +25 -0
  38. package/lib/src/functions/person/add.d.ts +22 -0
  39. package/lib/src/functions/person/add.js +24 -0
  40. package/lib/src/functions/person/delete.d.ts +17 -0
  41. package/lib/src/functions/person/delete.js +25 -0
  42. package/lib/src/functions/person/update.d.ts +22 -0
  43. package/lib/src/functions/person/update.js +25 -0
  44. package/lib/src/functions/team/new.d.ts +26 -0
  45. package/lib/src/functions/team/new.js +36 -0
  46. package/lib/src/functions/user/login.d.ts +8 -0
  47. package/lib/src/functions/user/login.js +21 -0
  48. package/lib/src/functions/user/roleEdit.d.ts +19 -0
  49. package/lib/src/functions/user/roleEdit.js +30 -0
  50. package/lib/src/pushNotification.d.ts +3 -0
  51. package/lib/src/pushNotification.js +35 -0
  52. package/lib/src/types/Configuration.d.ts +27 -0
  53. package/lib/src/types/Configuration.js +38 -0
  54. package/lib/src/types/Fine.d.ts +30 -0
  55. package/lib/src/types/Fine.js +42 -0
  56. package/lib/src/types/FineAmount.d.ts +51 -0
  57. package/lib/src/types/FineAmount.js +124 -0
  58. package/lib/src/types/FineTemplate.d.ts +28 -0
  59. package/lib/src/types/FineTemplate.js +40 -0
  60. package/lib/src/types/FineTemplateRepetition.d.ts +22 -0
  61. package/lib/src/types/FineTemplateRepetition.js +38 -0
  62. package/lib/src/types/Invitation.d.ts +25 -0
  63. package/lib/src/types/Invitation.js +42 -0
  64. package/lib/src/types/MoneyAmount.d.ts +17 -0
  65. package/lib/src/types/MoneyAmount.js +68 -0
  66. package/lib/src/types/NotificationProperties.d.ts +28 -0
  67. package/lib/src/types/NotificationProperties.js +50 -0
  68. package/lib/src/types/PayedState.d.ts +6 -0
  69. package/lib/src/types/PayedState.js +9 -0
  70. package/lib/src/types/Person.d.ts +29 -0
  71. package/lib/src/types/Person.js +41 -0
  72. package/lib/src/types/PersonPrivateProperties.d.ts +17 -0
  73. package/lib/src/types/PersonPrivateProperties.js +27 -0
  74. package/lib/src/types/PersonSignInProperties.d.ts +24 -0
  75. package/lib/src/types/PersonSignInProperties.js +36 -0
  76. package/lib/src/types/Team.d.ts +24 -0
  77. package/lib/src/types/Team.js +35 -0
  78. package/lib/src/types/User.d.ts +40 -0
  79. package/lib/src/types/User.js +58 -0
  80. package/lib/src/types/UserRole.d.ts +6 -0
  81. package/lib/src/types/UserRole.js +14 -0
  82. package/lib/src/types/index.js +31 -0
  83. package/lib/tsconfig.tsbuildinfo +1 -0
  84. package/package.json +4 -1
  85. package/eslint.config.js +0 -72
  86. package/src/Firestore.ts +0 -63
  87. package/src/checkAuthentication.ts +0 -36
  88. package/src/firebaseFunctionCreators.ts +0 -56
  89. package/src/functions/fine/add.ts +0 -54
  90. package/src/functions/fine/delete.ts +0 -54
  91. package/src/functions/fine/update.ts +0 -55
  92. package/src/functions/fineTemplate/add.ts +0 -34
  93. package/src/functions/fineTemplate/delete.ts +0 -34
  94. package/src/functions/fineTemplate/update.ts +0 -34
  95. package/src/functions/invitation/invite.ts +0 -28
  96. package/src/functions/invitation/register.ts +0 -54
  97. package/src/functions/invitation/withdraw.ts +0 -24
  98. package/src/functions/notification/register.ts +0 -39
  99. package/src/functions/notification/subscribe.ts +0 -38
  100. package/src/functions/paypalMe/edit.ts +0 -36
  101. package/src/functions/person/add.ts +0 -36
  102. package/src/functions/person/delete.ts +0 -37
  103. package/src/functions/person/update.ts +0 -37
  104. package/src/functions/team/new.ts +0 -54
  105. package/src/functions/user/login.ts +0 -25
  106. package/src/functions/user/roleEdit.ts +0 -44
  107. package/src/locales/de.json +0 -30
  108. package/src/locales/en.json +0 -30
  109. package/src/pushNotification.ts +0 -37
  110. package/src/types/Configuration.ts +0 -54
  111. package/src/types/Fine.ts +0 -59
  112. package/src/types/FineAmount.ts +0 -123
  113. package/src/types/FineTemplate.ts +0 -55
  114. package/src/types/FineTemplateRepetition.ts +0 -54
  115. package/src/types/Invitation.ts +0 -56
  116. package/src/types/MoneyAmount.ts +0 -41
  117. package/src/types/NotificationProperties.ts +0 -67
  118. package/src/types/PayedState.ts +0 -12
  119. package/src/types/Person.ts +0 -56
  120. package/src/types/PersonPrivateProperties.ts +0 -37
  121. package/src/types/PersonSignInProperties.ts +0 -42
  122. package/src/types/Team.ts +0 -49
  123. package/src/types/User.ts +0 -76
  124. package/src/types/UserRole.ts +0 -19
  125. package/tsconfig.json +0 -117
  126. /package/{index.ts → lib/index.d.ts} +0 -0
  127. /package/{src/firebase/index.ts → lib/src/firebase/index.d.ts} +0 -0
  128. /package/{src/types/index.ts → lib/src/types/index.d.ts} +0 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FineUpdateFunction = void 0;
37
+ const Configuration_1 = require("../../types/Configuration");
38
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
39
+ const pushNotification_1 = require("../../pushNotification");
40
+ const types_1 = require("../../types");
41
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
42
+ const checkAuthentication_1 = require("../../checkAuthentication");
43
+ const Firestore_1 = require("../../Firestore");
44
+ const i18n = __importStar(require("i18n"));
45
+ class FineUpdateFunction extends firebase_function_1.FirebaseFunction {
46
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
47
+ teamId: types_1.Team.Id.builder,
48
+ personId: types_1.Person.Id.builder,
49
+ fine: types_1.Fine.builder,
50
+ configuration: Configuration_1.Configuration.builder
51
+ });
52
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
53
+ async execute(parameters) {
54
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'fine-manager');
55
+ const fineSnapshot = await Firestore_1.Firestore.shared.fine(parameters.teamId, parameters.fine.id).snapshot();
56
+ if (!fineSnapshot.exists)
57
+ throw new firebase_function_1.FunctionsError('not-found', 'Fine not found');
58
+ await Firestore_1.Firestore.shared.fine(parameters.teamId, parameters.fine.id).set(parameters.fine);
59
+ i18n.setLocale(parameters.configuration.locale);
60
+ if (parameters.fine.payedState !== fineSnapshot.data.payedState) {
61
+ let body;
62
+ if (parameters.fine.payedState === 'payed')
63
+ body = i18n.__('notification.fine.state-change.body-payed', parameters.fine.amount.formatted(parameters.configuration), parameters.fine.reason);
64
+ else
65
+ body = i18n.__('notification.fine.state-change.body-unpayed', parameters.fine.reason, parameters.fine.amount.formatted(parameters.configuration));
66
+ await (0, pushNotification_1.pushNotification)(parameters.teamId, parameters.personId, 'fine-state-change', {
67
+ title: i18n.__('notification.fine.state-change.title'),
68
+ body: body
69
+ });
70
+ }
71
+ }
72
+ }
73
+ exports.FineUpdateFunction = FineUpdateFunction;
@@ -0,0 +1,32 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { FineTemplate, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace FineTemplateAddFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ fineTemplate: FineTemplate;
8
+ };
9
+ }
10
+ export declare class FineTemplateAddFunction extends FirebaseFunction<FineTemplateAddFunction.Parameters, void> {
11
+ parametersBuilder: ObjectTypeBuilder<{
12
+ teamId: string;
13
+ fineTemplate: {
14
+ id: FineTemplate.Id.Flatten;
15
+ reason: string;
16
+ amount: {
17
+ type: "money";
18
+ amount: import("../../types").MoneyAmount.Flatten;
19
+ } | {
20
+ type: "item";
21
+ item: import("../../types").FineAmount.Item.Type;
22
+ count: number;
23
+ };
24
+ repetition: {
25
+ item: import("../../types").FineTemplateRepetition.Item;
26
+ maxCount: number | null;
27
+ } | null;
28
+ };
29
+ }, FineTemplateAddFunction.Parameters>;
30
+ returnTypeBuilder: ValueTypeBuilder<void>;
31
+ execute(parameters: FineTemplateAddFunction.Parameters): Promise<void>;
32
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FineTemplateAddFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 FineTemplateAddFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ fineTemplate: types_1.FineTemplate.builder
13
+ });
14
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
+ async execute(parameters) {
16
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'fineTemplate-manager');
17
+ const fineTemplateSnapshot = await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.fineTemplate.id).snapshot();
18
+ if (fineTemplateSnapshot.exists)
19
+ throw new firebase_function_1.FunctionsError('already-exists', 'FineTemplate already exists');
20
+ await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.fineTemplate.id).set(parameters.fineTemplate);
21
+ }
22
+ }
23
+ exports.FineTemplateAddFunction = FineTemplateAddFunction;
@@ -0,0 +1,17 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { FineTemplate, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace FineTemplateDeleteFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ id: FineTemplate.Id;
8
+ };
9
+ }
10
+ export declare class FineTemplateDeleteFunction extends FirebaseFunction<FineTemplateDeleteFunction.Parameters, void> {
11
+ parametersBuilder: ObjectTypeBuilder<{
12
+ teamId: string;
13
+ id: string;
14
+ }, FineTemplateDeleteFunction.Parameters>;
15
+ returnTypeBuilder: ValueTypeBuilder<void>;
16
+ execute(parameters: FineTemplateDeleteFunction.Parameters): Promise<void>;
17
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FineTemplateDeleteFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 FineTemplateDeleteFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ id: types_1.FineTemplate.Id.builder
13
+ });
14
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
+ async execute(parameters) {
16
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'fineTemplate-manager');
17
+ const fineTemplateSnapshot = await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.id).snapshot();
18
+ if (!fineTemplateSnapshot.exists)
19
+ throw new firebase_function_1.FunctionsError('not-found', 'FineTemplate not found');
20
+ await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.id).remove();
21
+ }
22
+ }
23
+ exports.FineTemplateDeleteFunction = FineTemplateDeleteFunction;
@@ -0,0 +1,32 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { FineTemplate, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace FineTemplateUpdateFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ fineTemplate: FineTemplate;
8
+ };
9
+ }
10
+ export declare class FineTemplateUpdateFunction extends FirebaseFunction<FineTemplateUpdateFunction.Parameters, void> {
11
+ parametersBuilder: ObjectTypeBuilder<{
12
+ teamId: string;
13
+ fineTemplate: {
14
+ id: FineTemplate.Id.Flatten;
15
+ reason: string;
16
+ amount: {
17
+ type: "money";
18
+ amount: import("../../types").MoneyAmount.Flatten;
19
+ } | {
20
+ type: "item";
21
+ item: import("../../types").FineAmount.Item.Type;
22
+ count: number;
23
+ };
24
+ repetition: {
25
+ item: import("../../types").FineTemplateRepetition.Item;
26
+ maxCount: number | null;
27
+ } | null;
28
+ };
29
+ }, FineTemplateUpdateFunction.Parameters>;
30
+ returnTypeBuilder: ValueTypeBuilder<void>;
31
+ execute(parameters: FineTemplateUpdateFunction.Parameters): Promise<void>;
32
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FineTemplateUpdateFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 FineTemplateUpdateFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ fineTemplate: types_1.FineTemplate.builder
13
+ });
14
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
+ async execute(parameters) {
16
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'fineTemplate-manager');
17
+ const fineTemplateSnapshot = await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.fineTemplate.id).snapshot();
18
+ if (!fineTemplateSnapshot.exists)
19
+ throw new firebase_function_1.FunctionsError('not-found', 'FineTemplate not found');
20
+ await Firestore_1.Firestore.shared.fineTemplate(parameters.teamId, parameters.fineTemplate.id).set(parameters.fineTemplate);
21
+ }
22
+ }
23
+ exports.FineTemplateUpdateFunction = FineTemplateUpdateFunction;
@@ -0,0 +1,7 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Invitation } from '../../types';
3
+ export declare class InvitationInviteFunction extends FirebaseFunction<Invitation, Invitation.Id> {
4
+ parametersBuilder: Invitation.TypeBuilder;
5
+ returnTypeBuilder: import("@stevenkellner/typescript-common-functionality").Tagged.TypeBuilder<string, "invitation">;
6
+ execute(invitation: Invitation): Promise<Invitation.Id>;
7
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvitationInviteFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
6
+ const checkAuthentication_1 = require("../../checkAuthentication");
7
+ const Firestore_1 = require("../../Firestore");
8
+ class InvitationInviteFunction extends firebase_function_1.FirebaseFunction {
9
+ parametersBuilder = types_1.Invitation.builder;
10
+ returnTypeBuilder = types_1.Invitation.Id.builder;
11
+ async execute(invitation) {
12
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, invitation.teamId, 'team-manager');
13
+ const personSnapshot = await Firestore_1.Firestore.shared.person(invitation.teamId, invitation.personId).snapshot();
14
+ if (!personSnapshot.exists)
15
+ throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
16
+ if (personSnapshot.data.signInProperties !== null)
17
+ throw new firebase_function_1.FunctionsError('already-exists', 'Person already has an account');
18
+ const invitationId = invitation.createId();
19
+ await Firestore_1.Firestore.shared.invitation(invitationId).set(invitation);
20
+ return invitationId;
21
+ }
22
+ }
23
+ exports.InvitationInviteFunction = InvitationInviteFunction;
@@ -0,0 +1,7 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Invitation, User } from '../../types';
3
+ export declare class InvitationRegisterFunction extends FirebaseFunction<Invitation.Id, User> {
4
+ parametersBuilder: import("@stevenkellner/typescript-common-functionality").Tagged.TypeBuilder<string, "invitation">;
5
+ returnTypeBuilder: User.TypeBuilder;
6
+ execute(invitationId: Invitation.Id): Promise<User>;
7
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvitationRegisterFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
6
+ const Firestore_1 = require("../../Firestore");
7
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
8
+ class InvitationRegisterFunction extends firebase_function_1.FirebaseFunction {
9
+ parametersBuilder = types_1.Invitation.Id.builder;
10
+ returnTypeBuilder = types_1.User.builder;
11
+ async execute(invitationId) {
12
+ if (this.userId === null)
13
+ throw new firebase_function_1.FunctionsError('unauthenticated', 'User not authenticated');
14
+ const userId = types_1.User.Id.builder.build(this.userId);
15
+ const invitationSnapshot = await Firestore_1.Firestore.shared.invitation(invitationId).snapshot();
16
+ if (!invitationSnapshot.exists)
17
+ throw new firebase_function_1.FunctionsError('not-found', 'Invitation not found');
18
+ const invitation = types_1.Invitation.builder.build(invitationSnapshot.data);
19
+ const userSnapshot = await Firestore_1.Firestore.shared.user(userId).snapshot();
20
+ let user = new types_1.User(userId);
21
+ if (userSnapshot.exists)
22
+ user = types_1.User.builder.build(userSnapshot.data);
23
+ if (user.teams.has(invitation.teamId))
24
+ throw new firebase_function_1.FunctionsError('already-exists', 'User already in team');
25
+ const teamSnapshot = await Firestore_1.Firestore.shared.team(invitation.teamId).snapshot();
26
+ if (!teamSnapshot.exists)
27
+ throw new firebase_function_1.FunctionsError('not-found', 'Team not found');
28
+ const team = types_1.Team.builder.build(teamSnapshot.data);
29
+ const personSnapshot = await Firestore_1.Firestore.shared.person(invitation.teamId, invitation.personId).snapshot();
30
+ if (!personSnapshot.exists)
31
+ throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
32
+ const person = types_1.Person.builder.build(personSnapshot.data);
33
+ if (person.signInProperties !== null)
34
+ throw new firebase_function_1.FunctionsError('already-exists', 'Person already registered');
35
+ await Firestore_1.Firestore.shared.invitation(invitationId).remove();
36
+ user.teams.set(invitation.teamId, new types_1.User.TeamProperties(team.name, invitation.personId));
37
+ await Firestore_1.Firestore.shared.user(userId).set(user);
38
+ person.signInProperties = new types_1.PersonSignInProperties(userId, typescript_common_functionality_1.UtcDate.now);
39
+ await Firestore_1.Firestore.shared.person(invitation.teamId, invitation.personId).set(person);
40
+ return user;
41
+ }
42
+ }
43
+ exports.InvitationRegisterFunction = InvitationRegisterFunction;
@@ -0,0 +1,8 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Invitation } from '../../types';
3
+ import { ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare class InvitationWithdrawFunction extends FirebaseFunction<Invitation, void> {
5
+ parametersBuilder: Invitation.TypeBuilder;
6
+ returnTypeBuilder: ValueTypeBuilder<void>;
7
+ execute(invitation: Invitation): Promise<void>;
8
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvitationWithdrawFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
6
+ const checkAuthentication_1 = require("../../checkAuthentication");
7
+ const Firestore_1 = require("../../Firestore");
8
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
9
+ class InvitationWithdrawFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = types_1.Invitation.builder;
11
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
12
+ async execute(invitation) {
13
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, invitation.teamId, 'team-manager');
14
+ const invitationId = invitation.createId();
15
+ const invitationSnapshot = await Firestore_1.Firestore.shared.invitation(invitationId).snapshot();
16
+ if (!invitationSnapshot.exists)
17
+ throw new firebase_function_1.FunctionsError('not-found', 'Invitation not found');
18
+ await Firestore_1.Firestore.shared.invitation(invitationId).remove();
19
+ }
20
+ }
21
+ exports.InvitationWithdrawFunction = InvitationWithdrawFunction;
@@ -0,0 +1,19 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Person, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace NotificationRegisterFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ personId: Person.Id;
8
+ token: string;
9
+ };
10
+ }
11
+ export declare class NotificationRegisterFunction extends FirebaseFunction<NotificationRegisterFunction.Parameters, void> {
12
+ parametersBuilder: ObjectTypeBuilder<{
13
+ teamId: string;
14
+ personId: string;
15
+ token: string;
16
+ }, NotificationRegisterFunction.Parameters>;
17
+ returnTypeBuilder: ValueTypeBuilder<void>;
18
+ execute(parameters: NotificationRegisterFunction.Parameters): Promise<void>;
19
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationRegisterFunction = void 0;
4
+ const NotificationProperties_1 = require("../../types/NotificationProperties");
5
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
6
+ const types_1 = require("../../types");
7
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
8
+ const Firestore_1 = require("../../Firestore");
9
+ class NotificationRegisterFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ personId: types_1.Person.Id.builder,
13
+ token: new typescript_common_functionality_1.ValueTypeBuilder()
14
+ });
15
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
16
+ async execute(parameters) {
17
+ const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).snapshot();
18
+ if (!personSnapshot.exists)
19
+ throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
20
+ const person = types_1.Person.builder.build(personSnapshot.data);
21
+ if (person.signInProperties === null)
22
+ throw new firebase_function_1.FunctionsError('unauthenticated', 'Person not signed in');
23
+ person.signInProperties.notificationProperties.tokens.set(NotificationProperties_1.NotificationProperties.TokenId.create(parameters.token), parameters.token);
24
+ await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).set(person);
25
+ }
26
+ }
27
+ exports.NotificationRegisterFunction = NotificationRegisterFunction;
@@ -0,0 +1,19 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { NotificationProperties, Person, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace NotificationSubscribeFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ personId: Person.Id;
8
+ subscriptions: NotificationProperties.Subscription[];
9
+ };
10
+ }
11
+ export declare class NotificationSubscribeFunction extends FirebaseFunction<NotificationSubscribeFunction.Parameters, void> {
12
+ parametersBuilder: ObjectTypeBuilder<{
13
+ teamId: string;
14
+ personId: string;
15
+ subscriptions: NotificationProperties.Subscription[];
16
+ }, NotificationSubscribeFunction.Parameters>;
17
+ returnTypeBuilder: ValueTypeBuilder<void>;
18
+ execute(parameters: NotificationSubscribeFunction.Parameters): Promise<void>;
19
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationSubscribeFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
6
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
7
+ const Firestore_1 = require("../../Firestore");
8
+ class NotificationSubscribeFunction extends firebase_function_1.FirebaseFunction {
9
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
10
+ teamId: types_1.Team.Id.builder,
11
+ personId: types_1.Person.Id.builder,
12
+ subscriptions: new typescript_common_functionality_1.ArrayTypeBuilder(new typescript_common_functionality_1.ValueTypeBuilder())
13
+ });
14
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
+ async execute(parameters) {
16
+ const personSnapshot = await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).snapshot();
17
+ if (!personSnapshot.exists)
18
+ throw new firebase_function_1.FunctionsError('not-found', 'Person not found');
19
+ const person = types_1.Person.builder.build(personSnapshot.data);
20
+ if (person.signInProperties === null)
21
+ throw new firebase_function_1.FunctionsError('unauthenticated', 'Person not signed in');
22
+ person.signInProperties.notificationProperties.subscriptions = parameters.subscriptions;
23
+ await Firestore_1.Firestore.shared.person(parameters.teamId, parameters.personId).set(person);
24
+ }
25
+ }
26
+ exports.NotificationSubscribeFunction = NotificationSubscribeFunction;
@@ -0,0 +1,17 @@
1
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
2
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
3
+ import { Team } from '../../types';
4
+ export declare namespace PaypalMeEditFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ paypalMeLink: string | null;
8
+ };
9
+ }
10
+ export declare class PaypalMeEditFunction extends FirebaseFunction<PaypalMeEditFunction.Parameters, void> {
11
+ parametersBuilder: ObjectTypeBuilder<{
12
+ teamId: string;
13
+ paypalMeLink: string | null;
14
+ }, PaypalMeEditFunction.Parameters>;
15
+ returnTypeBuilder: ValueTypeBuilder<void>;
16
+ execute(parameters: PaypalMeEditFunction.Parameters): Promise<void>;
17
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PaypalMeEditFunction = void 0;
4
+ const typescript_common_functionality_1 = require("@stevenkellner/typescript-common-functionality");
5
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
6
+ const types_1 = require("../../types");
7
+ const checkAuthentication_1 = require("../../checkAuthentication");
8
+ const Firestore_1 = require("../../Firestore");
9
+ class PaypalMeEditFunction extends firebase_function_1.FirebaseFunction {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ paypalMeLink: new typescript_common_functionality_1.ValueTypeBuilder()
13
+ });
14
+ returnTypeBuilder = new typescript_common_functionality_1.ValueTypeBuilder();
15
+ async execute(parameters) {
16
+ await (0, checkAuthentication_1.checkAuthentication)(this.userId, parameters.teamId, 'team-manager');
17
+ const teamSnapshot = await Firestore_1.Firestore.shared.team(parameters.teamId).snapshot();
18
+ if (!teamSnapshot.exists)
19
+ throw new firebase_function_1.FunctionsError('not-found', 'Team not found');
20
+ const team = types_1.Team.builder.build(teamSnapshot.data);
21
+ team.paypalMeLink = parameters.paypalMeLink;
22
+ await Firestore_1.Firestore.shared.team(parameters.teamId).set(team);
23
+ }
24
+ }
25
+ exports.PaypalMeEditFunction = PaypalMeEditFunction;
@@ -0,0 +1,22 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Person, PersonPrivateProperties, Team } from '../../types';
3
+ import { ObjectTypeBuilder, ValueTypeBuilder } from '@stevenkellner/typescript-common-functionality';
4
+ export declare namespace PersonAddFunction {
5
+ type Parameters = {
6
+ teamId: Team.Id;
7
+ id: Person.Id;
8
+ properties: PersonPrivateProperties;
9
+ };
10
+ }
11
+ export declare class PersonAddFunction extends FirebaseFunction<PersonAddFunction.Parameters, void> {
12
+ parametersBuilder: ObjectTypeBuilder<{
13
+ teamId: string;
14
+ id: string;
15
+ properties: {
16
+ firstName: string;
17
+ lastName: string | null;
18
+ };
19
+ }, PersonAddFunction.Parameters>;
20
+ returnTypeBuilder: ValueTypeBuilder<void>;
21
+ execute(parameters: PersonAddFunction.Parameters): Promise<void>;
22
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonAddFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ id: types_1.Person.Id.builder,
13
+ properties: types_1.PersonPrivateProperties.builder
14
+ });
15
+ 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
+ }
24
+ exports.PersonAddFunction = PersonAddFunction;
@@ -0,0 +1,17 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Person, Team } from '../../types';
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> {
11
+ parametersBuilder: ObjectTypeBuilder<{
12
+ teamId: string;
13
+ id: string;
14
+ }, PersonDeleteFunction.Parameters>;
15
+ returnTypeBuilder: ValueTypeBuilder<void>;
16
+ execute(parameters: PersonDeleteFunction.Parameters): Promise<void>;
17
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonDeleteFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ id: types_1.Person.Id.builder
13
+ });
14
+ 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
+ }
25
+ exports.PersonDeleteFunction = PersonDeleteFunction;
@@ -0,0 +1,22 @@
1
+ import { FirebaseFunction } from '@stevenkellner/firebase-function';
2
+ import { Person, PersonPrivateProperties, Team } from '../../types';
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> {
12
+ parametersBuilder: ObjectTypeBuilder<{
13
+ teamId: string;
14
+ id: string;
15
+ properties: {
16
+ firstName: string;
17
+ lastName: string | null;
18
+ };
19
+ }, PersonUpdateFunction.Parameters>;
20
+ returnTypeBuilder: ValueTypeBuilder<void>;
21
+ execute(parameters: PersonUpdateFunction.Parameters): Promise<void>;
22
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonUpdateFunction = void 0;
4
+ const firebase_function_1 = require("@stevenkellner/firebase-function");
5
+ const types_1 = require("../../types");
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 {
10
+ parametersBuilder = new typescript_common_functionality_1.ObjectTypeBuilder({
11
+ teamId: types_1.Team.Id.builder,
12
+ id: types_1.Person.Id.builder,
13
+ properties: types_1.PersonPrivateProperties.builder
14
+ });
15
+ 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
+ }
25
+ exports.PersonUpdateFunction = PersonUpdateFunction;