@glissandoo/lib 1.125.0 → 1.127.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 (46) hide show
  1. package/functions/apiKey.d.ts +23 -0
  2. package/functions/apiKey.js +2 -0
  3. package/functions/event.d.ts +13 -0
  4. package/functions/group.d.ts +1 -0
  5. package/functions/groupPlayer.d.ts +6 -0
  6. package/functions/index.d.ts +6 -0
  7. package/functions/index.js +6 -0
  8. package/functions/regions.js +6 -0
  9. package/functions/user.d.ts +1 -0
  10. package/helpers/appScenes.d.ts +1 -0
  11. package/helpers/appScenes.js +1 -0
  12. package/helpers/errors.d.ts +5 -0
  13. package/helpers/errors.js +5 -0
  14. package/helpers/plans.d.ts +2 -0
  15. package/helpers/plans.js +5 -1
  16. package/lang/ca.json +2 -0
  17. package/lang/de.json +2 -0
  18. package/lang/en.json +2 -0
  19. package/lang/es.json +2 -0
  20. package/lang/eu.json +2 -0
  21. package/lang/fr.json +2 -0
  22. package/lang/gl.json +2 -0
  23. package/lang/it.json +2 -0
  24. package/lang/nl.json +2 -0
  25. package/lang/pt.json +2 -0
  26. package/models/Evento/Player/basic.d.ts +0 -1
  27. package/models/Evento/Player/basic.js +0 -3
  28. package/models/Evento/Player/index.d.ts +0 -1
  29. package/models/Evento/Player/index.js +0 -3
  30. package/models/Evento/index.d.ts +3 -0
  31. package/models/Evento/index.js +10 -0
  32. package/models/Evento/types.d.ts +2 -0
  33. package/models/Evento/types.js +1 -0
  34. package/models/Group/Player/index.d.ts +2 -0
  35. package/models/Group/Player/index.js +6 -0
  36. package/models/Group/index.d.ts +16 -2
  37. package/models/Group/index.js +20 -3
  38. package/models/Group/types.d.ts +26 -4
  39. package/models/Group/types.js +9 -1
  40. package/models/Notification/types.d.ts +1 -0
  41. package/models/Notification/types.js +1 -0
  42. package/models/Partnership/index.d.ts +1 -1
  43. package/models/Partnership/types.d.ts +17 -3
  44. package/package.json +1 -1
  45. package/types/supabase/generated.d.ts +17 -0
  46. package/types/supabase/generated.ts +17 -0
@@ -0,0 +1,23 @@
1
+ export declare namespace ApiKeyFbFunctionsTypes {
2
+ interface ApiKeySummary {
3
+ id: string;
4
+ name: string;
5
+ createdAt: string;
6
+ }
7
+ interface CreateParams {
8
+ name: string;
9
+ }
10
+ interface CreateResult extends ApiKeySummary {
11
+ key: string;
12
+ }
13
+ type ListParams = void;
14
+ interface ListResult {
15
+ keys: ApiKeySummary[];
16
+ }
17
+ interface RevokeParams {
18
+ id: string;
19
+ }
20
+ interface RevokeResult {
21
+ id: string;
22
+ }
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -10,6 +10,19 @@ export declare namespace EventoFbFunctionsTypes {
10
10
  Future = "future",
11
11
  All = "all"
12
12
  }
13
+ export interface RefreshGuestInviteCodeParams {
14
+ eventId: string;
15
+ }
16
+ export interface RefreshGuestInviteCodeResult {
17
+ code: string;
18
+ }
19
+ export interface VerifyGuestInviteCodeParams {
20
+ eventId: string;
21
+ code: string;
22
+ }
23
+ export interface VerifyGuestInviteCodeResult {
24
+ alreadyJoined: boolean;
25
+ }
13
26
  export interface PublishParams {
14
27
  type: EventType;
15
28
  displayName: string | null;
@@ -69,6 +69,7 @@ export declare namespace GroupFbFunctionsTypes {
69
69
  interface GetByIdResult extends GroupBasicData {
70
70
  id: string;
71
71
  instruments: GroupData['instruments'];
72
+ customFields: GroupData['customFields'];
72
73
  }
73
74
  interface GetByInvitationLinkParams {
74
75
  invitationLink: string;
@@ -36,6 +36,7 @@ export declare namespace GroupPlayerFbFunctionsTypes {
36
36
  groupId: string;
37
37
  mainInstrument: InstrumentId;
38
38
  instruments: InstrumentId[];
39
+ customFields?: Record<string, string | number | boolean | null>;
39
40
  }
40
41
  type JoinGroupResult = void;
41
42
  interface LeaveParams {
@@ -47,6 +48,11 @@ export declare namespace GroupPlayerFbFunctionsTypes {
47
48
  userIds: string[];
48
49
  }
49
50
  type RemoveResult = void;
51
+ interface PromoteGuestParams {
52
+ groupId: string;
53
+ userId: string;
54
+ }
55
+ type PromoteGuestResult = void;
50
56
  interface UpdateInstrumentsParams {
51
57
  playerId?: string;
52
58
  groupId: string;
@@ -1,5 +1,8 @@
1
1
  export declare enum FbFunctionName {
2
2
  PublicApi = "api",
3
+ ApiKeyCreate = "apiKey-create",
4
+ ApiKeyList = "apiKey-list",
5
+ ApiKeyRevoke = "apiKey-revoke",
3
6
  AuthGetToken = "authGetToken",
4
7
  AuthLogin = "authLogin",
5
8
  AuthLogout = "authLogout",
@@ -59,6 +62,8 @@ export declare enum FbFunctionName {
59
62
  EventoMyPayments = "event-myPayments",
60
63
  EventPublish = "event-publish",
61
64
  EventRemove = "event-remove",
65
+ EventRefreshGuestInviteCode = "event-refreshGuestInviteCode",
66
+ EventVerifyGuestInviteCode = "event-verifyGuestInviteCode",
62
67
  EventRepertoryDownload = "eventRepertory-download",
63
68
  EventRepertoryDownloadPdf = "eventRepertory-downloadPdf",
64
69
  EventRepertoryEdit = "eventRepertory-edit",
@@ -103,6 +108,7 @@ export declare enum FbFunctionName {
103
108
  GroupPlayerLinkFakeAccount = "groupPlayer-linkFakeAccount",
104
109
  GroupPlayerOnUpdate = "groupPlayer-onUpdate",
105
110
  GroupPlayerRemove = "groupPlayer-remove",
111
+ GroupPlayerPromoteGuest = "groupPlayer-promoteGuest",
106
112
  GroupPlayerEditFakeInfo = "groupPlayer-editFakeInfo",
107
113
  GroupPlayerSetPermissions = "groupPlayer-updatePermis",
108
114
  GroupPlayerUpdateInstruments = "groupPlayer-updateInstruments",
@@ -4,6 +4,9 @@ exports.FbFunctionName = void 0;
4
4
  var FbFunctionName;
5
5
  (function (FbFunctionName) {
6
6
  FbFunctionName["PublicApi"] = "api";
7
+ FbFunctionName["ApiKeyCreate"] = "apiKey-create";
8
+ FbFunctionName["ApiKeyList"] = "apiKey-list";
9
+ FbFunctionName["ApiKeyRevoke"] = "apiKey-revoke";
7
10
  FbFunctionName["AuthGetToken"] = "authGetToken";
8
11
  FbFunctionName["AuthLogin"] = "authLogin";
9
12
  FbFunctionName["AuthLogout"] = "authLogout";
@@ -63,6 +66,8 @@ var FbFunctionName;
63
66
  FbFunctionName["EventoMyPayments"] = "event-myPayments";
64
67
  FbFunctionName["EventPublish"] = "event-publish";
65
68
  FbFunctionName["EventRemove"] = "event-remove";
69
+ FbFunctionName["EventRefreshGuestInviteCode"] = "event-refreshGuestInviteCode";
70
+ FbFunctionName["EventVerifyGuestInviteCode"] = "event-verifyGuestInviteCode";
66
71
  FbFunctionName["EventRepertoryDownload"] = "eventRepertory-download";
67
72
  FbFunctionName["EventRepertoryDownloadPdf"] = "eventRepertory-downloadPdf";
68
73
  FbFunctionName["EventRepertoryEdit"] = "eventRepertory-edit";
@@ -107,6 +112,7 @@ var FbFunctionName;
107
112
  FbFunctionName["GroupPlayerLinkFakeAccount"] = "groupPlayer-linkFakeAccount";
108
113
  FbFunctionName["GroupPlayerOnUpdate"] = "groupPlayer-onUpdate";
109
114
  FbFunctionName["GroupPlayerRemove"] = "groupPlayer-remove";
115
+ FbFunctionName["GroupPlayerPromoteGuest"] = "groupPlayer-promoteGuest";
110
116
  FbFunctionName["GroupPlayerEditFakeInfo"] = "groupPlayer-editFakeInfo";
111
117
  FbFunctionName["GroupPlayerSetPermissions"] = "groupPlayer-updatePermis";
112
118
  FbFunctionName["GroupPlayerUpdateInstruments"] = "groupPlayer-updateInstruments";
@@ -11,6 +11,9 @@ var GCloudRegions;
11
11
  const defaultRegion = GCloudRegions.UsCentral1;
12
12
  const regionByFunctions = {
13
13
  [index_1.FbFunctionName.PublicApi]: GCloudRegions.EuropeWest6,
14
+ [index_1.FbFunctionName.ApiKeyCreate]: GCloudRegions.EuropeWest6,
15
+ [index_1.FbFunctionName.ApiKeyList]: GCloudRegions.EuropeWest6,
16
+ [index_1.FbFunctionName.ApiKeyRevoke]: GCloudRegions.EuropeWest6,
14
17
  [index_1.FbFunctionName.AuthGetToken]: GCloudRegions.EuropeWest6,
15
18
  [index_1.FbFunctionName.AuthLogin]: GCloudRegions.EuropeWest6,
16
19
  [index_1.FbFunctionName.AuthLogout]: GCloudRegions.EuropeWest6,
@@ -70,6 +73,8 @@ const regionByFunctions = {
70
73
  [index_1.FbFunctionName.EventoMyPayments]: GCloudRegions.EuropeWest6,
71
74
  [index_1.FbFunctionName.EventPublish]: GCloudRegions.UsCentral1,
72
75
  [index_1.FbFunctionName.EventRemove]: GCloudRegions.UsCentral1,
76
+ [index_1.FbFunctionName.EventRefreshGuestInviteCode]: GCloudRegions.EuropeWest6,
77
+ [index_1.FbFunctionName.EventVerifyGuestInviteCode]: GCloudRegions.EuropeWest6,
73
78
  [index_1.FbFunctionName.EventRepertoryDownload]: GCloudRegions.EuropeWest6,
74
79
  [index_1.FbFunctionName.EventRepertoryDownloadPdf]: GCloudRegions.EuropeWest6,
75
80
  [index_1.FbFunctionName.EventRepertoryEdit]: GCloudRegions.UsCentral1,
@@ -115,6 +120,7 @@ const regionByFunctions = {
115
120
  [index_1.FbFunctionName.GroupPlayerLeave]: GCloudRegions.UsCentral1,
116
121
  [index_1.FbFunctionName.GroupPlayerOnUpdate]: GCloudRegions.UsCentral1,
117
122
  [index_1.FbFunctionName.GroupPlayerRemove]: GCloudRegions.UsCentral1,
123
+ [index_1.FbFunctionName.GroupPlayerPromoteGuest]: GCloudRegions.EuropeWest6,
118
124
  [index_1.FbFunctionName.GroupPlayerSetPermissions]: GCloudRegions.EuropeWest6,
119
125
  [index_1.FbFunctionName.GroupPlayerUpdateInstruments]: GCloudRegions.UsCentral1,
120
126
  [index_1.FbFunctionName.GroupPaymentCreate]: GCloudRegions.EuropeWest6,
@@ -26,6 +26,7 @@ export declare namespace UserFbFunctionsTypes {
26
26
  interface JoinEventParams {
27
27
  eventId: string;
28
28
  instrument?: string;
29
+ code: string;
29
30
  }
30
31
  type JoinEventResult = void;
31
32
  interface RecoveryPasswordParams {
@@ -78,6 +78,7 @@ export declare enum AppScenes {
78
78
  Join = "Join",
79
79
  JoinImageProfile = "AddProfileImage",
80
80
  JoinInstrument = "SelectGroupInstrument",
81
+ JoinCompleteProfile = "JoinCompleteProfile",
81
82
  JoinView = "JoinView",
82
83
  Login = "Login",
83
84
  GroupPaymentDetail = "GroupPaymentDetail",
@@ -82,6 +82,7 @@ var AppScenes;
82
82
  AppScenes["Join"] = "Join";
83
83
  AppScenes["JoinImageProfile"] = "AddProfileImage";
84
84
  AppScenes["JoinInstrument"] = "SelectGroupInstrument";
85
+ AppScenes["JoinCompleteProfile"] = "JoinCompleteProfile";
85
86
  AppScenes["JoinView"] = "JoinView";
86
87
  AppScenes["Login"] = "Login";
87
88
  AppScenes["GroupPaymentDetail"] = "GroupPaymentDetail";
@@ -8,6 +8,7 @@ export declare enum HttpsErrorMessages {
8
8
  InvalidGroupPartnership = "error.group.partnership",
9
9
  InvalidAdminGroup = "error.group.noAdmin",
10
10
  InvalidPermissionsGroup = "error.group.noPermissions",
11
+ GuestCannotBeAdmin = "error.group.guestCannotBeAdmin",
11
12
  InvalidAdminAction = "error.federation.admin",
12
13
  InvalidLinkInvitation = "groupPlayer.join.linkNoValid",
13
14
  InvalidJoinPlayer = "groupPlayer.join.isPlayer",
@@ -20,6 +21,10 @@ export declare enum HttpsErrorMessages {
20
21
  InvalidEventPlayer = "error.event.noPlayer",
21
22
  InvalidMaxNumberEvents = "error.event.maxEventsPublish",
22
23
  InvalidMaxCapacityEvent = "error.event.capacityCompleted",
24
+ EventInvitationLinkNotActive = "error.event.invitationLinkNotActive",
25
+ EventNotAcceptingJoins = "error.event.notAcceptingJoins",
26
+ EventGuestsLimitReached = "error.event.guestsLimitReached",
27
+ EventInvitationCodeInvalid = "error.event.invitationCodeInvalid",
23
28
  InvalidScoreNotByInstrumentsEventRepertory = "error.eventRepertory.scoreNotByInstruments",
24
29
  InvalidUser = "error.user.noValid",
25
30
  InvalidSuperAdmin = "error.superadmin.noValid",
package/helpers/errors.js CHANGED
@@ -9,6 +9,7 @@ var HttpsErrorMessages;
9
9
  HttpsErrorMessages["InvalidGroupPartnership"] = "error.group.partnership";
10
10
  HttpsErrorMessages["InvalidAdminGroup"] = "error.group.noAdmin";
11
11
  HttpsErrorMessages["InvalidPermissionsGroup"] = "error.group.noPermissions";
12
+ HttpsErrorMessages["GuestCannotBeAdmin"] = "error.group.guestCannotBeAdmin";
12
13
  HttpsErrorMessages["InvalidAdminAction"] = "error.federation.admin";
13
14
  HttpsErrorMessages["InvalidLinkInvitation"] = "groupPlayer.join.linkNoValid";
14
15
  HttpsErrorMessages["InvalidJoinPlayer"] = "groupPlayer.join.isPlayer";
@@ -21,6 +22,10 @@ var HttpsErrorMessages;
21
22
  HttpsErrorMessages["InvalidEventPlayer"] = "error.event.noPlayer";
22
23
  HttpsErrorMessages["InvalidMaxNumberEvents"] = "error.event.maxEventsPublish";
23
24
  HttpsErrorMessages["InvalidMaxCapacityEvent"] = "error.event.capacityCompleted";
25
+ HttpsErrorMessages["EventInvitationLinkNotActive"] = "error.event.invitationLinkNotActive";
26
+ HttpsErrorMessages["EventNotAcceptingJoins"] = "error.event.notAcceptingJoins";
27
+ HttpsErrorMessages["EventGuestsLimitReached"] = "error.event.guestsLimitReached";
28
+ HttpsErrorMessages["EventInvitationCodeInvalid"] = "error.event.invitationCodeInvalid";
24
29
  HttpsErrorMessages["InvalidScoreNotByInstrumentsEventRepertory"] = "error.eventRepertory.scoreNotByInstruments";
25
30
  HttpsErrorMessages["InvalidUser"] = "error.user.noValid";
26
31
  HttpsErrorMessages["InvalidSuperAdmin"] = "error.superadmin.noValid";
@@ -11,6 +11,8 @@ export declare enum PlanPeriod {
11
11
  Monthly = "monthly"
12
12
  }
13
13
  export declare const membersPerPlan: Record<PlansGroup, number>;
14
+ export declare const MAX_GUESTS_PER_EVENT = 10;
15
+ export declare const GUEST_INVITE_CODE_LENGTH = 6;
14
16
  export declare const pricesPerPlan: Record<PlanPeriod, Record<PlansGroup, number>>;
15
17
  export declare const planGroupTiers: {
16
18
  min: number;
package/helpers/plans.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.planGroupTiers = exports.pricesPerPlan = exports.membersPerPlan = exports.PlanPeriod = exports.PlansGroup = void 0;
3
+ exports.planGroupTiers = exports.pricesPerPlan = exports.GUEST_INVITE_CODE_LENGTH = exports.MAX_GUESTS_PER_EVENT = exports.membersPerPlan = exports.PlanPeriod = exports.PlansGroup = void 0;
4
4
  var PlansGroup;
5
5
  (function (PlansGroup) {
6
6
  PlansGroup["Piano"] = "piano";
@@ -23,6 +23,10 @@ exports.membersPerPlan = {
23
23
  [PlansGroup.Fortissimo]: 100,
24
24
  [PlansGroup.Tutti]: 1000,
25
25
  };
26
+ // Max reinforcements (guests) allowed per event, independent of the plan tier.
27
+ exports.MAX_GUESTS_PER_EVENT = 10;
28
+ // Number of digits of the event guest invitation code.
29
+ exports.GUEST_INVITE_CODE_LENGTH = 6;
26
30
  exports.pricesPerPlan = {
27
31
  [PlanPeriod.Monthly]: {
28
32
  [PlansGroup.Piano]: 0,
package/lang/ca.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} ha deixat un comentari en una publicació",
28
28
  "communication.newComment.title": "💬 Nou comentari",
29
29
  "event": "Esdeveniment",
30
+ "event.guest.joined.text": "{string:user.0.displayName} s'ha unit com a reforç a {string:event.0.displayName}",
31
+ "event.guest.joined.title": "🎺 Nou reforç",
30
32
  "group.delete.text": "El grup {string:group.0.displayName} ha sigut eliminat",
31
33
  "group.delete.title": "Grup eliminat",
32
34
  "group.onboarding.attendance.text": "Qui està disponible per a l'assaig? 😍 Descobreix-ho amb llistes senzilles d'assistència 🙋‍♀️",
package/lang/de.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} hat einen Kommentar zu einem Beitrag hinterlassen",
28
28
  "communication.newComment.title": "💬 Neuer Kommentar",
29
29
  "event": "Veranstaltung",
30
+ "event.guest.joined.text": "{string:user.0.displayName} ist {string:event.0.displayName} als Verstärkung beigetreten",
31
+ "event.guest.joined.title": "🎺 Neue Verstärkung",
30
32
  "group.delete.text": "Die Gruppe {string:group.0.displayName} wurde gelöscht",
31
33
  "group.delete.title": "Gruppe gelöscht",
32
34
  "group.onboarding.attendance.text": "Wer ist bei der Probe verfügbar? 😍 Erfahre es über einfache Anwesenheitslisten 🙋‍♀️",
package/lang/en.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} left a comment on a post",
28
28
  "communication.newComment.title": "💬 New comment",
29
29
  "event": "Event",
30
+ "event.guest.joined.text": "{string:user.0.displayName} has joined {string:event.0.displayName} as a reinforcement",
31
+ "event.guest.joined.title": "🎺 New reinforcement",
30
32
  "group.delete.text": "The group {string:group.0.displayName} has been deleted",
31
33
  "group.delete.title": "Group deleted",
32
34
  "group.onboarding.attendance.text": "Who's available for rehearsal? 😍 Find out through simple attendance lists 🙋‍♀️",
package/lang/es.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} ha dejado un comentario en una publicación",
28
28
  "communication.newComment.title": "💬 Nuevo comentario",
29
29
  "event": "Evento",
30
+ "event.guest.joined.text": "{string:user.0.displayName} se ha unido como refuerzo a {string:event.0.displayName}",
31
+ "event.guest.joined.title": "🎺 Nuevo refuerzo",
30
32
  "group.delete.text": "El grupo {string:group.0.displayName} ha sido eliminado",
31
33
  "group.delete.title": "Grupo eliminado",
32
34
  "group.onboarding.attendance.text": "¿Quién está disponible para el ensayo? 😍 Descúbrelo a través de listas sencillas de asistencia 🙋‍♀️",
package/lang/eu.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} erabiltzaileak iruzkin bat utzi du argitalpen batean",
28
28
  "communication.newComment.title": "💬 Iruzkin berria",
29
29
  "event": "Ekitaldia",
30
+ "event.guest.joined.text": "{string:user.0.displayName} indargarri gisa batu da {string:event.0.displayName} ekitaldira",
31
+ "event.guest.joined.title": "🎺 Indargarri berria",
30
32
  "group.delete.text": "{string:group.0.displayName} taldea ezabatu da",
31
33
  "group.delete.title": "Taldea ezabatuta",
32
34
  "group.onboarding.attendance.text": "Nork parte har dezake entseguan? 😍 Ezagutu erantzun sinpleekin 🙋‍♀️",
package/lang/fr.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} a laissé un commentaire sur une publication",
28
28
  "communication.newComment.title": "💬 Nouveau commentaire",
29
29
  "event": "Événement",
30
+ "event.guest.joined.text": "{string:user.0.displayName} a rejoint {string:event.0.displayName} en renfort",
31
+ "event.guest.joined.title": "🎺 Nouveau renfort",
30
32
  "group.delete.text": "Le groupe {string:group.0.displayName} a été supprimé",
31
33
  "group.delete.title": "Groupe supprimé",
32
34
  "group.onboarding.attendance.text": "Qui est disponible pour la répétition ? 😍 Découvrez-le grâce à des listes de présence simples 🙋‍♀️",
package/lang/gl.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} deixou un comentario nunha publicación",
28
28
  "communication.newComment.title": "💬 Novo comentario",
29
29
  "event": "Evento",
30
+ "event.guest.joined.text": "{string:user.0.displayName} uniuse como reforzo a {string:event.0.displayName}",
31
+ "event.guest.joined.title": "🎺 Novo reforzo",
30
32
  "group.delete.text": "O grupo {string:group.0.displayName} foi eliminado",
31
33
  "group.delete.title": "Grupo eliminado",
32
34
  "group.onboarding.attendance.text": "¿Quen está dispoñible para o ensaio? 😍 Descúbreo con listas sinxelas de asistencia 🙋‍♀️",
package/lang/it.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} ha lasciato un commento su un post",
28
28
  "communication.newComment.title": "💬 Nuovo commento",
29
29
  "event": "Evento",
30
+ "event.guest.joined.text": "{string:user.0.displayName} si è unito a {string:event.0.displayName} come rinforzo",
31
+ "event.guest.joined.title": "🎺 Nuovo rinforzo",
30
32
  "group.delete.text": "Il gruppo {string:group.0.displayName} è stato eliminato",
31
33
  "group.delete.title": "Gruppo eliminato",
32
34
  "group.onboarding.attendance.text": "Chi è disponibile per la prova? 😍 Scoprilo tramite semplici liste di presenza 🙋‍♀️",
package/lang/nl.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} heeft een reactie achtergelaten op een bericht",
28
28
  "communication.newComment.title": "💬 Nieuwe reactie",
29
29
  "event": "Evenement",
30
+ "event.guest.joined.text": "{string:user.0.displayName} heeft zich als versterking bij {string:event.0.displayName} aangesloten",
31
+ "event.guest.joined.title": "🎺 Nieuwe versterking",
30
32
  "group.delete.text": "De groep {string:group.0.displayName} is verwijderd",
31
33
  "group.delete.title": "Groep verwijderd",
32
34
  "group.onboarding.attendance.text": "Wie is beschikbaar voor de repetitie? 😍 Ontdek het via eenvoudige aanwezigheidslijsten 🙋‍♀️",
package/lang/pt.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "communication.newComment.text": "{string:user.0.displayName} deixou um comentário em uma publicação",
28
28
  "communication.newComment.title": "💬 Novo comentário",
29
29
  "event": "Evento",
30
+ "event.guest.joined.text": "{string:user.0.displayName} juntou-se a {string:event.0.displayName} como reforço",
31
+ "event.guest.joined.title": "🎺 Novo reforço",
30
32
  "group.delete.text": "O grupo {string:group.0.displayName} foi excluído",
31
33
  "group.delete.title": "Grupo excluído",
32
34
  "group.onboarding.attendance.text": "Quem está disponível para o ensaio? 😍 Descubra por meio de listas simples de presença 🙋‍♀️",
@@ -12,7 +12,6 @@ export default class EventoPlayerBasic {
12
12
  get photoURL(): string;
13
13
  get mainInstrument(): import("../../../helpers/instruments").InstrumentId;
14
14
  get isGuest(): boolean;
15
- get isGroupPlayer(): boolean;
16
15
  get status(): EventPlayerStatus | null;
17
16
  get reason(): import("./types").EventPlayerReason | null;
18
17
  get note(): string | null;
@@ -31,9 +31,6 @@ class EventoPlayerBasic {
31
31
  get isGuest() {
32
32
  return this.data.isGuest || false;
33
33
  }
34
- get isGroupPlayer() {
35
- return !this.isGuest;
36
- }
37
34
  get status() {
38
35
  return this.data.status || null;
39
36
  }
@@ -9,7 +9,6 @@ export default class EventoPlayer extends PlayerBasic<EventPlayerData> {
9
9
  get eventId(): string;
10
10
  get status(): EventPlayerStatus | null;
11
11
  get isGuest(): boolean;
12
- get isGroupPlayer(): boolean;
13
12
  get isConfirmed(): boolean;
14
13
  get isDeclined(): boolean;
15
14
  get isPending(): boolean;
@@ -27,9 +27,6 @@ class EventoPlayer extends basic_1.default {
27
27
  get isGuest() {
28
28
  return this.data.isGuest || false;
29
29
  }
30
- get isGroupPlayer() {
31
- return !this.isGuest;
32
- }
33
30
  get isConfirmed() {
34
31
  return this.status === types_1.EventPlayerStatus.Confirmed;
35
32
  }
@@ -26,10 +26,13 @@ export default class Evento extends EventoPromoter<EventData> {
26
26
  get playerIds(): string[];
27
27
  get players(): Record<string, import("./types").EventPlayerBasicData>;
28
28
  get playersCount(): number;
29
+ get guestIds(): string[];
30
+ get guestsCount(): number;
29
31
  get repertory(): Record<string, import("./types").EventThemeBasicData>;
30
32
  get repertoryIds(): string[];
31
33
  get repertoryCount(): number;
32
34
  get activeInvitationLink(): boolean;
35
+ get guestInviteCode(): string | null;
33
36
  get invitationLink(): string;
34
37
  get shortDynamicLink(): string;
35
38
  get deletedAt(): FirebaseFirestore.Timestamp | null;
@@ -62,6 +62,13 @@ class Evento extends promoter_1.default {
62
62
  get playersCount() {
63
63
  return this.data.playerIds.length;
64
64
  }
65
+ // Ids of reinforcements (guests) currently participating in this event.
66
+ get guestIds() {
67
+ return this.playerIds.filter((playerId) => this.players[playerId]?.isGuest === true);
68
+ }
69
+ get guestsCount() {
70
+ return this.guestIds.length;
71
+ }
65
72
  get repertory() {
66
73
  return this.data.repertory || {};
67
74
  }
@@ -74,6 +81,9 @@ class Evento extends promoter_1.default {
74
81
  get activeInvitationLink() {
75
82
  return this.data.activeInvitationLink || false;
76
83
  }
84
+ get guestInviteCode() {
85
+ return this.data.guestInviteCode || null;
86
+ }
77
87
  get invitationLink() {
78
88
  const link = `https://glissandoo.com/joinevent/${this.id}`;
79
89
  if (lang_1.LanguagesTypes.ES === this.lang) {
@@ -23,6 +23,7 @@ export declare enum EventHistoryAction {
23
23
  EditReminders = "edit_reminders",
24
24
  PlayerAdd = "player_add",
25
25
  PlayerRemove = "player_remove",
26
+ GuestJoined = "guest_joined",
26
27
  PlayerStatusChange = "player_status_change",
27
28
  RepertoireAdd = "repertoire_add",
28
29
  RepertoireRemove = "repertoire_remove",
@@ -158,6 +159,7 @@ export interface EventData extends EventPromoterData {
158
159
  repertory: Record<string, EventThemeBasicData>;
159
160
  relEvents: string[];
160
161
  activeInvitationLink: boolean;
162
+ guestInviteCode: string | null;
161
163
  shortDynamicLink: string | null;
162
164
  invitationLink: string | null;
163
165
  notifyAt: Timestamp;
@@ -18,6 +18,7 @@ var EventHistoryAction;
18
18
  EventHistoryAction["EditReminders"] = "edit_reminders";
19
19
  EventHistoryAction["PlayerAdd"] = "player_add";
20
20
  EventHistoryAction["PlayerRemove"] = "player_remove";
21
+ EventHistoryAction["GuestJoined"] = "guest_joined";
21
22
  EventHistoryAction["PlayerStatusChange"] = "player_status_change";
22
23
  EventHistoryAction["RepertoireAdd"] = "repertoire_add";
23
24
  EventHistoryAction["RepertoireRemove"] = "repertoire_remove";
@@ -14,6 +14,8 @@ export default class GroupPlayer extends UserExtended<GroupPlayerData> {
14
14
  get instrumentsLastUpdatedBy(): string | null;
15
15
  get role(): GroupPlayerRole;
16
16
  get isAdmin(): boolean;
17
+ get isGuest(): boolean;
18
+ get isMember(): boolean;
17
19
  get permissions(): import("../types").AdminPermissions[];
18
20
  get joinedAt(): FirebaseFirestore.Timestamp;
19
21
  get leavedAt(): FirebaseFirestore.Timestamp | null;
@@ -38,6 +38,12 @@ class GroupPlayer extends extended_1.default {
38
38
  get isAdmin() {
39
39
  return this.role === types_1.GroupPlayerRole.Admin;
40
40
  }
41
+ get isGuest() {
42
+ return this.role === types_1.GroupPlayerRole.Guest;
43
+ }
44
+ get isMember() {
45
+ return !this.isGuest;
46
+ }
41
47
  get permissions() {
42
48
  return this.data.permissions || [];
43
49
  }
@@ -10,7 +10,7 @@ export default class Group extends GroupBasic<GroupData> {
10
10
  constructor(doc: DocumentModel, lang?: LanguagesTypes);
11
11
  get owner(): DocumentReference;
12
12
  get playerIds(): string[];
13
- get players(): Record<string, import("../Player/types").PlayerBasicData>;
13
+ get players(): Record<string, import("./types").GroupPlayerBasicData>;
14
14
  get playersCount(): number;
15
15
  get description(): string | null;
16
16
  get addresses(): import("./types").GroupAddressData[];
@@ -36,8 +36,22 @@ export default class Group extends GroupBasic<GroupData> {
36
36
  get currency(): string;
37
37
  get currencySymbol(): string;
38
38
  get activePlayers(): string[];
39
+ get guestIds(): string[];
40
+ get activeMembers(): string[];
41
+ isGuestPlayer: (userId: string) => boolean;
39
42
  get playersList(): {
40
43
  id: string;
44
+ isGuest?: boolean | undefined;
45
+ mainInstrument: import("../../helpers/instruments").InstrumentId;
46
+ username: string;
47
+ name: string;
48
+ lastname: string;
49
+ displayName: string;
50
+ photoURL: string;
51
+ }[];
52
+ get membersList(): {
53
+ id: string;
54
+ isGuest?: boolean | undefined;
41
55
  mainInstrument: import("../../helpers/instruments").InstrumentId;
42
56
  username: string;
43
57
  name: string;
@@ -74,7 +88,7 @@ export default class Group extends GroupBasic<GroupData> {
74
88
  last: number;
75
89
  };
76
90
  get metadata(): Record<string, string>;
77
- getPlayer: (userId: string) => import("../Player/types").PlayerBasicData | null;
91
+ getPlayer: (userId: string) => import("./types").GroupPlayerBasicData | null;
78
92
  isAdmin: (userId: string) => boolean;
79
93
  isPlayer: (userId: string) => boolean;
80
94
  /** @deprecated use isUpgradeRequired */
@@ -17,6 +17,9 @@ const types_1 = require("./types");
17
17
  class Group extends basic_1.default {
18
18
  constructor(doc, lang = lang_1.defaultLocale) {
19
19
  super(doc, lang);
20
+ this.isGuestPlayer = (userId) => {
21
+ return this.players[userId]?.isGuest === true;
22
+ };
20
23
  this.getPlayer = (userId) => {
21
24
  return userId in this.players ? this.players[userId] : null;
22
25
  };
@@ -118,6 +121,15 @@ class Group extends basic_1.default {
118
121
  get activePlayers() {
119
122
  return Object.keys(this.players);
120
123
  }
124
+ // Reinforcements (guests) are members at the data level but excluded from
125
+ // plan limits and the normal member flows.
126
+ get guestIds() {
127
+ return this.activePlayers.filter((playerId) => this.players[playerId]?.isGuest === true);
128
+ }
129
+ // Regular members, excluding guests. Use this for plan limit calculations.
130
+ get activeMembers() {
131
+ return this.activePlayers.filter((playerId) => this.players[playerId]?.isGuest !== true);
132
+ }
121
133
  get playersList() {
122
134
  const players = this.activePlayers.map((playerId) => ({
123
135
  ...this.players[playerId],
@@ -125,6 +137,11 @@ class Group extends basic_1.default {
125
137
  }));
126
138
  return (0, orders_1.orderByInstruments)(players, 'mainInstrument', this.instrumentsIds);
127
139
  }
140
+ // Ordered list of regular members (excludes guests). Use for member
141
+ // selection, rosters/templates and group-wide communications.
142
+ get membersList() {
143
+ return this.playersList.filter((player) => !this.players[player.id]?.isGuest);
144
+ }
128
145
  get isActive() {
129
146
  return this.exists && !this.deletedAt;
130
147
  }
@@ -210,18 +227,18 @@ class Group extends basic_1.default {
210
227
  /** @deprecated use isUpgradeRequired */
211
228
  get isExpiredTrial() {
212
229
  const isOutDateTrial = (0, date_fns_1.isPast)(this.trialEndAt);
213
- const members = this.activePlayers.length;
230
+ const members = this.activeMembers.length;
214
231
  const isAboveMembersLimitPlanFree = members > plans_1.membersPerPlan[plans_1.PlansGroup.Piano];
215
232
  return this.status !== types_1.GroupStatus.Premium && isOutDateTrial && isAboveMembersLimitPlanFree;
216
233
  }
217
234
  get isOutOfMembersLimit() {
218
- const members = this.activePlayers.length;
235
+ const members = this.activeMembers.length;
219
236
  return members > plans_1.membersPerPlan[this.planId];
220
237
  }
221
238
  get isUpgradePlanRequired() {
222
239
  const graceMembers = 4;
223
240
  const planMembers = plans_1.membersPerPlan[this.planId] + graceMembers;
224
- const members = this.activePlayers.length;
241
+ const members = this.activeMembers.length;
225
242
  return members > planMembers;
226
243
  }
227
244
  get firstAnswerAt() {
@@ -16,6 +16,7 @@ export declare enum GroupHistoryAction {
16
16
  MemberRemove = "member_remove",
17
17
  MemberInstrumentChange = "member_instrument_change",
18
18
  MemberPermissionsChange = "member_permissions_change",
19
+ GuestPromoted = "guest_promoted",
19
20
  TemplateCreated = "template_created",
20
21
  TemplateDeleted = "template_deleted",
21
22
  TemplateEdited = "template_edited",
@@ -38,6 +39,12 @@ export declare enum GroupCustomFieldType {
38
39
  LINK = "link",
39
40
  PARAGRAPH = "paragraph"
40
41
  }
42
+ export declare enum GroupCustomFieldMemberAccess {
43
+ Private = "private",
44
+ ReadOnly = "readOnly",
45
+ Editable = "editable",
46
+ Required = "required"
47
+ }
41
48
  export interface GroupCustomFieldOption {
42
49
  id: string;
43
50
  value: string;
@@ -45,9 +52,21 @@ export interface GroupCustomFieldOption {
45
52
  export interface GroupCustomField {
46
53
  label: string;
47
54
  type: GroupCustomFieldType;
48
- required: boolean;
49
- allowEditByMember: boolean;
50
- private?: boolean;
55
+ /**
56
+ * Member-facing access level. Single source of truth for visibility,
57
+ * editability and join-time enforcement.
58
+ */
59
+ memberAccess?: GroupCustomFieldMemberAccess;
60
+ /**
61
+ * @deprecated Superseded by `memberAccess`. Only retained so the one-off
62
+ * backfill can derive `memberAccess` from legacy documents.
63
+ */
64
+ required?: boolean;
65
+ /**
66
+ * @deprecated Superseded by `memberAccess`. Only retained so the one-off
67
+ * backfill can derive `memberAccess` from legacy documents.
68
+ */
69
+ allowEditByMember?: boolean;
51
70
  placeholder: string | null;
52
71
  options: GroupCustomFieldOption[];
53
72
  order: number;
@@ -148,6 +167,9 @@ export interface GroupTemplateData {
148
167
  export interface AGroupTemplateData extends GroupTemplateData {
149
168
  id: string;
150
169
  }
170
+ export interface GroupPlayerBasicData extends PlayerBasicData {
171
+ isGuest?: boolean;
172
+ }
151
173
  export interface GroupAlgoliaData extends Omit<GroupBasicData, 'location'> {
152
174
  objectID: string;
153
175
  _geoloc: {
@@ -241,7 +263,7 @@ export interface AGroupEventQuestion extends GroupEventQuestion {
241
263
  export type GroupInstruments = Partial<Record<DefaultInstrumentId, DefaultGroupInstrument>> & Record<CustomInstrumentId, CustomGroupInstrument>;
242
264
  export interface GroupData extends GroupBasicData {
243
265
  playerIds: string[];
244
- players: Record<string, PlayerBasicData>;
266
+ players: Record<string, GroupPlayerBasicData>;
245
267
  templates: Record<string, GroupTemplateData>;
246
268
  administrators: string[];
247
269
  adminPermissions: Record<string, AdminPermissions[]>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GroupRepertoireTagDefault = exports.GroupRepertoireTagReserved = exports.SocialNetwork = exports.GroupModulePlan = exports.GroupModuleId = exports.GroupStatus = exports.GroupConfigShowAttendanceToMembers = exports.GroupConfigSitesKey = exports.GroupConfigKey = exports.AdminPermissions = exports.GroupCustomFieldType = exports.GroupHistoryAction = void 0;
3
+ exports.GroupRepertoireTagDefault = exports.GroupRepertoireTagReserved = exports.SocialNetwork = exports.GroupModulePlan = exports.GroupModuleId = exports.GroupStatus = exports.GroupConfigShowAttendanceToMembers = exports.GroupConfigSitesKey = exports.GroupConfigKey = exports.AdminPermissions = exports.GroupCustomFieldMemberAccess = exports.GroupCustomFieldType = exports.GroupHistoryAction = void 0;
4
4
  var GroupHistoryAction;
5
5
  (function (GroupHistoryAction) {
6
6
  GroupHistoryAction["Created"] = "created";
@@ -11,6 +11,7 @@ var GroupHistoryAction;
11
11
  GroupHistoryAction["MemberRemove"] = "member_remove";
12
12
  GroupHistoryAction["MemberInstrumentChange"] = "member_instrument_change";
13
13
  GroupHistoryAction["MemberPermissionsChange"] = "member_permissions_change";
14
+ GroupHistoryAction["GuestPromoted"] = "guest_promoted";
14
15
  GroupHistoryAction["TemplateCreated"] = "template_created";
15
16
  GroupHistoryAction["TemplateDeleted"] = "template_deleted";
16
17
  GroupHistoryAction["TemplateEdited"] = "template_edited";
@@ -35,6 +36,13 @@ var GroupCustomFieldType;
35
36
  GroupCustomFieldType["LINK"] = "link";
36
37
  GroupCustomFieldType["PARAGRAPH"] = "paragraph";
37
38
  })(GroupCustomFieldType = exports.GroupCustomFieldType || (exports.GroupCustomFieldType = {}));
39
+ var GroupCustomFieldMemberAccess;
40
+ (function (GroupCustomFieldMemberAccess) {
41
+ GroupCustomFieldMemberAccess["Private"] = "private";
42
+ GroupCustomFieldMemberAccess["ReadOnly"] = "readOnly";
43
+ GroupCustomFieldMemberAccess["Editable"] = "editable";
44
+ GroupCustomFieldMemberAccess["Required"] = "required";
45
+ })(GroupCustomFieldMemberAccess = exports.GroupCustomFieldMemberAccess || (exports.GroupCustomFieldMemberAccess = {}));
38
46
  var AdminPermissions;
39
47
  (function (AdminPermissions) {
40
48
  AdminPermissions["Owner"] = "owner";
@@ -18,6 +18,7 @@ export declare enum NotificationActions {
18
18
  BadgePlayedWorksUpLevel = "badgePlayedWorks.upLevel",
19
19
  CommunicationCreate = "communication.create",
20
20
  CommunicationNewComment = "communication.newComment",
21
+ EventGuestJoined = "event.guest.joined",
21
22
  GroupDelete = "group.delete",
22
23
  GroupPlayersAdd = "group.players.add",
23
24
  GroupPlayersJoin = "group.players.join",
@@ -15,6 +15,7 @@ var NotificationActions;
15
15
  NotificationActions["BadgePlayedWorksUpLevel"] = "badgePlayedWorks.upLevel";
16
16
  NotificationActions["CommunicationCreate"] = "communication.create";
17
17
  NotificationActions["CommunicationNewComment"] = "communication.newComment";
18
+ NotificationActions["EventGuestJoined"] = "event.guest.joined";
18
19
  NotificationActions["GroupDelete"] = "group.delete";
19
20
  NotificationActions["GroupPlayersAdd"] = "group.players.add";
20
21
  NotificationActions["GroupPlayersJoin"] = "group.players.join";
@@ -27,7 +27,7 @@ export default class Partnership extends PartnershipBasic<PartnershipData> {
27
27
  get boardMembers(): import("../../helpers/types").BoardMemberItem[];
28
28
  get boardDocuments(): import("../../helpers/types").BoardDocumentItem[];
29
29
  get language(): import("../../lang").LanguagesTypes;
30
- get customFields(): Record<string, import("../Group/types").GroupCustomField>;
30
+ get customFields(): Record<string, import("./types").PartnershipCustomField>;
31
31
  get customFieldsList(): APartnershipCustomField[];
32
32
  get tags(): Record<string, import("./types").PartnershipTag>;
33
33
  get tagsList(): APartnershipTag[];
@@ -1,9 +1,23 @@
1
1
  import { DocumentReference, Timestamp } from '@google-cloud/firestore';
2
2
  import { AdminItem, BasicAddressData, BoardDocumentItem, BoardMemberItem } from '../../helpers/types';
3
3
  import { LanguagesTypes } from '../../lang';
4
- import { AGroupCustomField, GroupCustomField } from '../Group/types';
5
- export type PartnershipCustomField = GroupCustomField;
6
- export type APartnershipCustomField = AGroupCustomField;
4
+ import { GroupCustomFieldOption, GroupCustomFieldType } from '../Group/types';
5
+ export interface PartnershipCustomField {
6
+ label: string;
7
+ type: GroupCustomFieldType;
8
+ required: boolean;
9
+ private?: boolean;
10
+ placeholder: string | null;
11
+ options: GroupCustomFieldOption[];
12
+ order: number;
13
+ createdAt: Timestamp;
14
+ updatedAt: Timestamp;
15
+ createdBy: string;
16
+ updatedBy: string;
17
+ }
18
+ export interface APartnershipCustomField extends PartnershipCustomField {
19
+ id: string;
20
+ }
7
21
  export interface PartnershipTag {
8
22
  label: string;
9
23
  order: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glissandoo/lib",
3
- "version": "1.125.0",
3
+ "version": "1.127.0",
4
4
  "description": "Glissandoo library js",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -241,6 +241,7 @@ export type Database = {
241
241
  playerIds: string[];
242
242
  players: Json;
243
243
  promoter: string | null;
244
+ questions: Json | null;
244
245
  relEvents: string[];
245
246
  repeat: Json | null;
246
247
  repertory: Json;
@@ -288,6 +289,7 @@ export type Database = {
288
289
  playerIds: string[];
289
290
  players: Json;
290
291
  promoter?: string | null;
292
+ questions?: Json | null;
291
293
  relEvents: string[];
292
294
  repeat?: Json | null;
293
295
  repertory: Json;
@@ -335,6 +337,7 @@ export type Database = {
335
337
  playerIds?: string[];
336
338
  players?: Json;
337
339
  promoter?: string | null;
340
+ questions?: Json | null;
338
341
  relEvents?: string[];
339
342
  repeat?: Json | null;
340
343
  repertory?: Json;
@@ -484,6 +487,7 @@ export type Database = {
484
487
  createdAt: string;
485
488
  createdOn: Database['public']['Enums']['created_on'];
486
489
  customerId: string | null;
490
+ customFields: Json | null;
487
491
  deletedAt: string | null;
488
492
  deletedBy: string | null;
489
493
  description: string | null;
@@ -528,6 +532,7 @@ export type Database = {
528
532
  createdAt?: string;
529
533
  createdOn: Database['public']['Enums']['created_on'];
530
534
  customerId?: string | null;
535
+ customFields?: Json | null;
531
536
  deletedAt?: string | null;
532
537
  deletedBy?: string | null;
533
538
  description?: string | null;
@@ -572,6 +577,7 @@ export type Database = {
572
577
  createdAt?: string;
573
578
  createdOn?: Database['public']['Enums']['created_on'];
574
579
  customerId?: string | null;
580
+ customFields?: Json | null;
575
581
  deletedAt?: string | null;
576
582
  deletedBy?: string | null;
577
583
  description?: string | null;
@@ -1451,18 +1457,24 @@ export type Database = {
1451
1457
  };
1452
1458
  publicApiRateLimit: {
1453
1459
  Row: {
1460
+ dailyCount: number;
1461
+ dailyResetAt: string;
1454
1462
  requestCount: number;
1455
1463
  resetAt: string;
1456
1464
  updatedAt: string;
1457
1465
  userId: string;
1458
1466
  };
1459
1467
  Insert: {
1468
+ dailyCount?: number;
1469
+ dailyResetAt?: string;
1460
1470
  requestCount: number;
1461
1471
  resetAt: string;
1462
1472
  updatedAt?: string;
1463
1473
  userId: string;
1464
1474
  };
1465
1475
  Update: {
1476
+ dailyCount?: number;
1477
+ dailyResetAt?: string;
1466
1478
  requestCount?: number;
1467
1479
  resetAt?: string;
1468
1480
  updatedAt?: string;
@@ -1741,6 +1753,7 @@ export type Database = {
1741
1753
  createdAt: string | null;
1742
1754
  createdOn: Database['public']['Enums']['created_on'] | null;
1743
1755
  customerId: string | null;
1756
+ customFields: Json | null;
1744
1757
  deletedAt: string | null;
1745
1758
  deletedBy: string | null;
1746
1759
  description: string | null;
@@ -1792,12 +1805,16 @@ export type Database = {
1792
1805
  };
1793
1806
  consumePublicApiRateLimit: {
1794
1807
  Args: {
1808
+ p_cost: number;
1809
+ p_daily_max: number;
1795
1810
  p_max_requests: number;
1796
1811
  p_user_id: string;
1797
1812
  p_window_seconds: number;
1798
1813
  };
1799
1814
  Returns: {
1800
1815
  allowed: boolean;
1816
+ dailyRemaining: number;
1817
+ dailyResetAt: string;
1801
1818
  remaining: number;
1802
1819
  resetAt: string;
1803
1820
  }[];
@@ -242,6 +242,7 @@ export type Database = {
242
242
  playerIds: string[];
243
243
  players: Json;
244
244
  promoter: string | null;
245
+ questions: Json | null;
245
246
  relEvents: string[];
246
247
  repeat: Json | null;
247
248
  repertory: Json;
@@ -289,6 +290,7 @@ export type Database = {
289
290
  playerIds: string[];
290
291
  players: Json;
291
292
  promoter?: string | null;
293
+ questions?: Json | null;
292
294
  relEvents: string[];
293
295
  repeat?: Json | null;
294
296
  repertory: Json;
@@ -336,6 +338,7 @@ export type Database = {
336
338
  playerIds?: string[];
337
339
  players?: Json;
338
340
  promoter?: string | null;
341
+ questions?: Json | null;
339
342
  relEvents?: string[];
340
343
  repeat?: Json | null;
341
344
  repertory?: Json;
@@ -485,6 +488,7 @@ export type Database = {
485
488
  createdAt: string;
486
489
  createdOn: Database['public']['Enums']['created_on'];
487
490
  customerId: string | null;
491
+ customFields: Json | null;
488
492
  deletedAt: string | null;
489
493
  deletedBy: string | null;
490
494
  description: string | null;
@@ -529,6 +533,7 @@ export type Database = {
529
533
  createdAt?: string;
530
534
  createdOn: Database['public']['Enums']['created_on'];
531
535
  customerId?: string | null;
536
+ customFields?: Json | null;
532
537
  deletedAt?: string | null;
533
538
  deletedBy?: string | null;
534
539
  description?: string | null;
@@ -573,6 +578,7 @@ export type Database = {
573
578
  createdAt?: string;
574
579
  createdOn?: Database['public']['Enums']['created_on'];
575
580
  customerId?: string | null;
581
+ customFields?: Json | null;
576
582
  deletedAt?: string | null;
577
583
  deletedBy?: string | null;
578
584
  description?: string | null;
@@ -1460,18 +1466,24 @@ export type Database = {
1460
1466
  };
1461
1467
  publicApiRateLimit: {
1462
1468
  Row: {
1469
+ dailyCount: number;
1470
+ dailyResetAt: string;
1463
1471
  requestCount: number;
1464
1472
  resetAt: string;
1465
1473
  updatedAt: string;
1466
1474
  userId: string;
1467
1475
  };
1468
1476
  Insert: {
1477
+ dailyCount?: number;
1478
+ dailyResetAt?: string;
1469
1479
  requestCount: number;
1470
1480
  resetAt: string;
1471
1481
  updatedAt?: string;
1472
1482
  userId: string;
1473
1483
  };
1474
1484
  Update: {
1485
+ dailyCount?: number;
1486
+ dailyResetAt?: string;
1475
1487
  requestCount?: number;
1476
1488
  resetAt?: string;
1477
1489
  updatedAt?: string;
@@ -1750,6 +1762,7 @@ export type Database = {
1750
1762
  createdAt: string | null;
1751
1763
  createdOn: Database['public']['Enums']['created_on'] | null;
1752
1764
  customerId: string | null;
1765
+ customFields: Json | null;
1753
1766
  deletedAt: string | null;
1754
1767
  deletedBy: string | null;
1755
1768
  description: string | null;
@@ -1798,12 +1811,16 @@ export type Database = {
1798
1811
  };
1799
1812
  consumePublicApiRateLimit: {
1800
1813
  Args: {
1814
+ p_cost: number;
1815
+ p_daily_max: number;
1801
1816
  p_max_requests: number;
1802
1817
  p_user_id: string;
1803
1818
  p_window_seconds: number;
1804
1819
  };
1805
1820
  Returns: {
1806
1821
  allowed: boolean;
1822
+ dailyRemaining: number;
1823
+ dailyResetAt: string;
1807
1824
  remaining: number;
1808
1825
  resetAt: string;
1809
1826
  }[];