@natrave/shared-entities 8.45.1 → 8.46.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 (105) hide show
  1. package/dist/backoffice/enums/staff-command-outcome.enum.d.ts +8 -0
  2. package/dist/backoffice/enums/staff-command-outcome.enum.d.ts.map +1 -0
  3. package/dist/backoffice/enums/staff-command-outcome.enum.js +11 -0
  4. package/dist/backoffice/enums/test-mark-subject-type.enum.d.ts +5 -0
  5. package/dist/backoffice/enums/test-mark-subject-type.enum.d.ts.map +1 -0
  6. package/dist/backoffice/enums/test-mark-subject-type.enum.js +8 -0
  7. package/dist/backoffice/friendly-funnel-snapshots/backoffice-friendly-funnel-snapshot.entity.d.ts +8 -0
  8. package/dist/backoffice/friendly-funnel-snapshots/backoffice-friendly-funnel-snapshot.entity.d.ts.map +1 -0
  9. package/dist/backoffice/friendly-funnel-snapshots/backoffice-friendly-funnel-snapshot.entity.js +57 -0
  10. package/dist/backoffice/friendly-funnel-snapshots/index.d.ts +2 -0
  11. package/dist/backoffice/friendly-funnel-snapshots/index.d.ts.map +1 -0
  12. package/dist/backoffice/friendly-funnel-snapshots/index.js +4 -0
  13. package/dist/backoffice/index.d.ts +5 -0
  14. package/dist/backoffice/index.d.ts.map +1 -1
  15. package/dist/backoffice/index.js +7 -0
  16. package/dist/backoffice/staff-commands/backoffice-staff-command.entity.d.ts +21 -0
  17. package/dist/backoffice/staff-commands/backoffice-staff-command.entity.d.ts.map +1 -0
  18. package/dist/backoffice/staff-commands/backoffice-staff-command.entity.js +150 -0
  19. package/dist/backoffice/staff-commands/index.d.ts +2 -0
  20. package/dist/backoffice/staff-commands/index.d.ts.map +1 -0
  21. package/dist/backoffice/staff-commands/index.js +4 -0
  22. package/dist/backoffice/test-marks/backoffice-test-mark.entity.d.ts +15 -0
  23. package/dist/backoffice/test-marks/backoffice-test-mark.entity.d.ts.map +1 -0
  24. package/dist/backoffice/test-marks/backoffice-test-mark.entity.js +116 -0
  25. package/dist/backoffice/test-marks/index.d.ts +2 -0
  26. package/dist/backoffice/test-marks/index.d.ts.map +1 -0
  27. package/dist/backoffice/test-marks/index.js +4 -0
  28. package/dist/database-entities/index.d.ts +2 -2
  29. package/dist/database-entities/index.d.ts.map +1 -1
  30. package/dist/database-entities/index.js +10 -2
  31. package/dist/friendlies/enums/friendly-history-actor-type.enum.d.ts +6 -0
  32. package/dist/friendlies/enums/friendly-history-actor-type.enum.d.ts.map +1 -0
  33. package/dist/friendlies/enums/friendly-history-actor-type.enum.js +9 -0
  34. package/dist/friendlies/enums/friendly-history-type.enum.d.ts +22 -0
  35. package/dist/friendlies/enums/friendly-history-type.enum.d.ts.map +1 -0
  36. package/dist/friendlies/enums/friendly-history-type.enum.js +25 -0
  37. package/dist/friendlies/enums/friendly-removed-reason.enum.d.ts +7 -0
  38. package/dist/friendlies/enums/friendly-removed-reason.enum.d.ts.map +1 -0
  39. package/dist/friendlies/enums/friendly-removed-reason.enum.js +10 -0
  40. package/dist/friendlies/enums/friendly-score-event-type.enum.d.ts +3 -1
  41. package/dist/friendlies/enums/friendly-score-event-type.enum.d.ts.map +1 -1
  42. package/dist/friendlies/enums/friendly-score-event-type.enum.js +2 -0
  43. package/dist/friendlies/enums/friendly-score-staff-reason.enum.d.ts +10 -0
  44. package/dist/friendlies/enums/friendly-score-staff-reason.enum.d.ts.map +1 -0
  45. package/dist/friendlies/enums/friendly-score-staff-reason.enum.js +13 -0
  46. package/dist/friendlies/enums/friendly-staff-command-effect-kind.enum.d.ts +5 -0
  47. package/dist/friendlies/enums/friendly-staff-command-effect-kind.enum.d.ts.map +1 -0
  48. package/dist/friendlies/enums/friendly-staff-command-effect-kind.enum.js +8 -0
  49. package/dist/friendlies/enums/friendly-staff-command-effect-skip-reason.enum.d.ts +6 -0
  50. package/dist/friendlies/enums/friendly-staff-command-effect-skip-reason.enum.d.ts.map +1 -0
  51. package/dist/friendlies/enums/friendly-staff-command-effect-skip-reason.enum.js +9 -0
  52. package/dist/friendlies/enums/friendly-staff-command-effect-status.enum.d.ts +7 -0
  53. package/dist/friendlies/enums/friendly-staff-command-effect-status.enum.d.ts.map +1 -0
  54. package/dist/friendlies/enums/friendly-staff-command-effect-status.enum.js +10 -0
  55. package/dist/friendlies/enums/friendly-staff-command-status.enum.d.ts +5 -0
  56. package/dist/friendlies/enums/friendly-staff-command-status.enum.d.ts.map +1 -0
  57. package/dist/friendlies/enums/friendly-staff-command-status.enum.js +8 -0
  58. package/dist/friendlies/enums/friendly-staff-operation.enum.d.ts +16 -0
  59. package/dist/friendlies/enums/friendly-staff-operation.enum.d.ts.map +1 -0
  60. package/dist/friendlies/enums/friendly-staff-operation.enum.js +19 -0
  61. package/dist/friendlies/friendly-challenges/friendly-challenge.entity.d.ts +9 -0
  62. package/dist/friendlies/friendly-challenges/friendly-challenge.entity.d.ts.map +1 -1
  63. package/dist/friendlies/friendly-challenges/friendly-challenge.entity.js +86 -1
  64. package/dist/friendlies/friendly-history/friendly-history.entity.d.ts +32 -0
  65. package/dist/friendlies/friendly-history/friendly-history.entity.d.ts.map +1 -0
  66. package/dist/friendlies/friendly-history/friendly-history.entity.js +218 -0
  67. package/dist/friendlies/friendly-history/index.d.ts +2 -0
  68. package/dist/friendlies/friendly-history/index.d.ts.map +1 -0
  69. package/dist/friendlies/friendly-history/index.js +4 -0
  70. package/dist/friendlies/friendly-matches/friendly-match.entity.d.ts +5 -0
  71. package/dist/friendlies/friendly-matches/friendly-match.entity.d.ts.map +1 -1
  72. package/dist/friendlies/friendly-matches/friendly-match.entity.js +48 -3
  73. package/dist/friendlies/friendly-open-challenge-extras/friendly-open-challenge-extra.entity.d.ts +13 -0
  74. package/dist/friendlies/friendly-open-challenge-extras/friendly-open-challenge-extra.entity.d.ts.map +1 -0
  75. package/dist/friendlies/friendly-open-challenge-extras/friendly-open-challenge-extra.entity.js +88 -0
  76. package/dist/friendlies/friendly-open-challenge-extras/index.d.ts +2 -0
  77. package/dist/friendlies/friendly-open-challenge-extras/index.d.ts.map +1 -0
  78. package/dist/friendlies/friendly-open-challenge-extras/index.js +4 -0
  79. package/dist/friendlies/friendly-open-challenges/friendly-open-challenge.entity.d.ts +4 -0
  80. package/dist/friendlies/friendly-open-challenges/friendly-open-challenge.entity.d.ts.map +1 -1
  81. package/dist/friendlies/friendly-open-challenges/friendly-open-challenge.entity.js +24 -0
  82. package/dist/friendlies/friendly-requests/friendly-request.entity.d.ts.map +1 -1
  83. package/dist/friendlies/friendly-requests/friendly-request.entity.js +1 -1
  84. package/dist/friendlies/friendly-score-events/friendly-score-event.entity.d.ts +8 -0
  85. package/dist/friendlies/friendly-score-events/friendly-score-event.entity.d.ts.map +1 -1
  86. package/dist/friendlies/friendly-score-events/friendly-score-event.entity.js +95 -6
  87. package/dist/friendlies/friendly-staff-command-effects/friendly-staff-command-effect.entity.d.ts +26 -0
  88. package/dist/friendlies/friendly-staff-command-effects/friendly-staff-command-effect.entity.d.ts.map +1 -0
  89. package/dist/friendlies/friendly-staff-command-effects/friendly-staff-command-effect.entity.js +185 -0
  90. package/dist/friendlies/friendly-staff-command-effects/index.d.ts +2 -0
  91. package/dist/friendlies/friendly-staff-command-effects/index.d.ts.map +1 -0
  92. package/dist/friendlies/friendly-staff-command-effects/index.js +4 -0
  93. package/dist/friendlies/friendly-staff-commands/friendly-staff-command.entity.d.ts +21 -0
  94. package/dist/friendlies/friendly-staff-commands/friendly-staff-command.entity.d.ts.map +1 -0
  95. package/dist/friendlies/friendly-staff-commands/friendly-staff-command.entity.js +152 -0
  96. package/dist/friendlies/friendly-staff-commands/index.d.ts +2 -0
  97. package/dist/friendlies/friendly-staff-commands/index.d.ts.map +1 -0
  98. package/dist/friendlies/friendly-staff-commands/index.js +4 -0
  99. package/dist/friendlies/index.d.ts +13 -0
  100. package/dist/friendlies/index.d.ts.map +1 -1
  101. package/dist/friendlies/index.js +23 -1
  102. package/dist/notifications/notifications/notification.entity.d.ts +1 -0
  103. package/dist/notifications/notifications/notification.entity.d.ts.map +1 -1
  104. package/dist/notifications/notifications/notification.entity.js +13 -0
  105. package/package.json +1 -1
@@ -20,8 +20,37 @@ import {
20
20
  } from "typeorm";
21
21
  import { User } from "../../app-auth/index.js";
22
22
  import { FriendlyScoreEventType } from "../enums/friendly-score-event-type.enum.js";
23
+ import { FriendlyScoreStaffReason } from "../enums/friendly-score-staff-reason.enum.js";
23
24
  import { FriendlyMatch } from "../friendly-matches/friendly-match.entity.js";
24
- const TYPES = Object.values(FriendlyScoreEventType).map((type) => `'${type}'`).join(", ");
25
+ import { FriendlyStaffCommand } from "../friendly-staff-commands/friendly-staff-command.entity.js";
26
+ const quoted = (values) => values.map((value) => `'${value}'`).join(", ");
27
+ const TYPES = quoted(Object.values(FriendlyScoreEventType));
28
+ const TYPES_WITH_GOALS = quoted([
29
+ FriendlyScoreEventType.LAUNCHED,
30
+ FriendlyScoreEventType.CONTESTED,
31
+ FriendlyScoreEventType.CONTEST_ACCEPTED,
32
+ FriendlyScoreEventType.STAFF_RESOLVED
33
+ ]);
34
+ const TYPES_WITHOUT_USER = quoted([
35
+ FriendlyScoreEventType.AUTO_CONFIRMED,
36
+ FriendlyScoreEventType.STAFF_RESOLVED,
37
+ FriendlyScoreEventType.STAFF_CLEARED
38
+ ]);
39
+ const STAFF_TYPES = quoted([
40
+ FriendlyScoreEventType.STAFF_RESOLVED,
41
+ FriendlyScoreEventType.STAFF_CLEARED
42
+ ]);
43
+ const RESOLVED_REASONS = quoted([
44
+ FriendlyScoreStaffReason.LAUNCHED_WAS_RIGHT,
45
+ FriendlyScoreStaffReason.CONTEST_WAS_RIGHT,
46
+ FriendlyScoreStaffReason.OTHER_SCORE,
47
+ FriendlyScoreStaffReason.CORRECTION
48
+ ]);
49
+ const CLEARED_REASONS = quoted([
50
+ FriendlyScoreStaffReason.NOT_PLAYED,
51
+ FriendlyScoreStaffReason.TEST_OR_SPAM,
52
+ FriendlyScoreStaffReason.OTHER
53
+ ]);
25
54
  let FriendlyScoreEvent = class {
26
55
  };
27
56
  __decorateClass([
@@ -41,7 +70,7 @@ __decorateClass([
41
70
  Column({
42
71
  type: "varchar",
43
72
  length: 24,
44
- comment: "launched | accepted | contested | contest_accepted | auto_confirmed."
73
+ comment: "launched | accepted | contested | contest_accepted | auto_confirmed | staff_resolved | staff_cleared."
45
74
  })
46
75
  ], FriendlyScoreEvent.prototype, "type", 2);
47
76
  __decorateClass([
@@ -49,7 +78,7 @@ __decorateClass([
49
78
  name: "challenger_goals",
50
79
  type: "smallint",
51
80
  nullable: true,
52
- comment: "Gols do time que desafiou no placar lan\xE7ado, contestado ou aceito. Preenchido exatamente em launched, contested e contest_accepted."
81
+ comment: "Gols do time que desafiou no placar lan\xE7ado, contestado, aceito ou definido pela equipe. Preenchido exatamente em launched, contested, contest_accepted e staff_resolved."
53
82
  })
54
83
  ], FriendlyScoreEvent.prototype, "challengerGoals", 2);
55
84
  __decorateClass([
@@ -65,9 +94,51 @@ __decorateClass([
65
94
  name: "user_id",
66
95
  type: "uuid",
67
96
  nullable: true,
68
- comment: "FK users.id. Quem fez. Nulo s\xF3 em auto_confirmed."
97
+ comment: "FK users.id. Quem fez. Nulo s\xF3 em auto_confirmed, staff_resolved e staff_cleared."
69
98
  })
70
99
  ], FriendlyScoreEvent.prototype, "userId", 2);
100
+ __decorateClass([
101
+ Column({
102
+ name: "staff_actor_id",
103
+ type: "varchar",
104
+ length: 255,
105
+ nullable: true,
106
+ comment: "Id (Clerk) de quem da equipe fez. Preenchido exatamente em staff_resolved e staff_cleared."
107
+ })
108
+ ], FriendlyScoreEvent.prototype, "staffActorId", 2);
109
+ __decorateClass([
110
+ Column({
111
+ name: "staff_actor_name",
112
+ type: "varchar",
113
+ length: 255,
114
+ nullable: true,
115
+ comment: "Nome de quem da equipe fez, copiado na hora."
116
+ })
117
+ ], FriendlyScoreEvent.prototype, "staffActorName", 2);
118
+ __decorateClass([
119
+ Column({
120
+ name: "reason_code",
121
+ type: "varchar",
122
+ length: 32,
123
+ nullable: true,
124
+ comment: "Motivo da equipe. staff_resolved: launched_was_right | contest_was_right | other_score | correction. staff_cleared: not_played | test_or_spam | other."
125
+ })
126
+ ], FriendlyScoreEvent.prototype, "reasonCode", 2);
127
+ __decorateClass([
128
+ Column({
129
+ type: "text",
130
+ nullable: true,
131
+ comment: "Texto livre do motivo da equipe."
132
+ })
133
+ ], FriendlyScoreEvent.prototype, "note", 2);
134
+ __decorateClass([
135
+ Column({
136
+ name: "staff_command_id",
137
+ type: "bigint",
138
+ nullable: true,
139
+ comment: "FK friendly_staff_commands.id. O comando da equipe que gerou o evento."
140
+ })
141
+ ], FriendlyScoreEvent.prototype, "staffCommandId", 2);
71
142
  __decorateClass([
72
143
  CreateDateColumn({
73
144
  name: "created_at",
@@ -89,19 +160,37 @@ __decorateClass([
89
160
  foreignKeyConstraintName: "FK_friendly_score_events_user"
90
161
  })
91
162
  ], FriendlyScoreEvent.prototype, "user", 2);
163
+ __decorateClass([
164
+ ManyToOne(() => FriendlyStaffCommand, { onDelete: "RESTRICT" }),
165
+ JoinColumn({
166
+ name: "staff_command_id",
167
+ foreignKeyConstraintName: "FK_friendly_score_events_staff_command"
168
+ })
169
+ ], FriendlyScoreEvent.prototype, "staffCommand", 2);
92
170
  FriendlyScoreEvent = __decorateClass([
93
171
  Entity("friendly_score_events"),
94
172
  Index("IDX_friendly_score_events_match", ["friendlyMatchId", "createdAt"]),
95
173
  Check("CHK_friendly_score_events_type", `"type" IN (${TYPES})`),
96
174
  Check(
97
175
  "CHK_friendly_score_events_goals",
98
- `("type" IN ('launched', 'contested', 'contest_accepted')) = ("challenger_goals" IS NOT NULL AND "opponent_goals" IS NOT NULL)`
176
+ `("type" IN (${TYPES_WITH_GOALS})) = ("challenger_goals" IS NOT NULL AND "opponent_goals" IS NOT NULL)`
99
177
  ),
100
178
  Check(
101
179
  "CHK_friendly_score_events_goals_positive",
102
180
  `("challenger_goals" IS NULL OR "challenger_goals" >= 0) AND ("opponent_goals" IS NULL OR "opponent_goals" >= 0)`
103
181
  ),
104
- Check("CHK_friendly_score_events_user", `("type" = 'auto_confirmed') = ("user_id" IS NULL)`)
182
+ Check(
183
+ "CHK_friendly_score_events_user",
184
+ `("type" IN (${TYPES_WITHOUT_USER})) = ("user_id" IS NULL)`
185
+ ),
186
+ Check(
187
+ "CHK_friendly_score_events_staff",
188
+ `("type" IN (${STAFF_TYPES})) = ("staff_actor_id" IS NOT NULL AND "reason_code" IS NOT NULL AND "staff_command_id" IS NOT NULL)`
189
+ ),
190
+ Check(
191
+ "CHK_friendly_score_events_reason",
192
+ `"reason_code" IS NULL OR ("type" = 'staff_resolved' AND "reason_code" IN (${RESOLVED_REASONS})) OR ("type" = 'staff_cleared' AND "reason_code" IN (${CLEARED_REASONS}))`
193
+ )
105
194
  ], FriendlyScoreEvent);
106
195
  export {
107
196
  FriendlyScoreEvent
@@ -0,0 +1,26 @@
1
+ import { User } from '../../app-auth';
2
+ import { FriendlyStaffCommandEffectKind } from '../enums/friendly-staff-command-effect-kind.enum';
3
+ import { FriendlyStaffCommandEffectSkipReason } from '../enums/friendly-staff-command-effect-skip-reason.enum';
4
+ import { FriendlyStaffCommandEffectStatus } from '../enums/friendly-staff-command-effect-status.enum';
5
+ import { FriendlyStaffCommand } from '../friendly-staff-commands/friendly-staff-command.entity';
6
+ export declare class FriendlyStaffCommandEffect {
7
+ id: string;
8
+ staffCommandId: string;
9
+ kind: FriendlyStaffCommandEffectKind;
10
+ recipientUserId: string | null;
11
+ idempotencyKey: string;
12
+ envelope: Record<string, unknown> | null;
13
+ envelopeVersion: number | null;
14
+ status: FriendlyStaffCommandEffectStatus;
15
+ skipReason: FriendlyStaffCommandEffectSkipReason | null;
16
+ notificationId: string | null;
17
+ feedOutboxId: string | null;
18
+ attempts: number;
19
+ lastError: string | null;
20
+ nextAttemptAt: Date | null;
21
+ createdAt: Date;
22
+ updatedAt: Date;
23
+ staffCommand: FriendlyStaffCommand;
24
+ recipientUser: User | null;
25
+ }
26
+ //# sourceMappingURL=friendly-staff-command-effect.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friendly-staff-command-effect.entity.d.ts","sourceRoot":"","sources":["../../../src/friendlies/friendly-staff-command-effects/friendly-staff-command-effect.entity.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;AAClG,OAAO,EAAE,oCAAoC,EAAE,MAAM,yDAAyD,CAAC;AAC/G,OAAO,EAAE,gCAAgC,EAAE,MAAM,oDAAoD,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AA6BhG,qBAgBa,0BAA0B;IAMrC,EAAE,EAAE,MAAM,CAAC;IAOX,cAAc,EAAE,MAAM,CAAC;IAOvB,IAAI,EAAE,8BAA8B,CAAC;IAQrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ/B,cAAc,EAAE,MAAM,CAAC;IAQvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAQzC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ/B,MAAM,EAAE,gCAAgC,CAAC;IASzC,UAAU,EAAE,oCAAoC,GAAG,IAAI,CAAC;IASxD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAO5B,QAAQ,EAAE,MAAM,CAAC;IAQjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAQzB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAO3B,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,IAAI,CAAC;IAShB,YAAY,EAAE,oBAAoB,CAAC;IAOnC,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B"}
@@ -0,0 +1,185 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ import {
12
+ Check,
13
+ Column,
14
+ CreateDateColumn,
15
+ Entity,
16
+ Index,
17
+ JoinColumn,
18
+ ManyToOne,
19
+ PrimaryGeneratedColumn,
20
+ UpdateDateColumn
21
+ } from "typeorm";
22
+ import { User } from "../../app-auth/index.js";
23
+ import { FriendlyStaffCommandEffectSkipReason } from "../enums/friendly-staff-command-effect-skip-reason.enum.js";
24
+ import { FriendlyStaffCommandEffectStatus } from "../enums/friendly-staff-command-effect-status.enum.js";
25
+ import { FriendlyStaffCommand } from "../friendly-staff-commands/friendly-staff-command.entity.js";
26
+ const STATUSES = Object.values(FriendlyStaffCommandEffectStatus).map((status) => `'${status}'`).join(", ");
27
+ const SKIP_REASONS = Object.values(FriendlyStaffCommandEffectSkipReason).map((reason) => `'${reason}'`).join(", ");
28
+ let FriendlyStaffCommandEffect = class {
29
+ };
30
+ __decorateClass([
31
+ PrimaryGeneratedColumn({
32
+ type: "bigint",
33
+ primaryKeyConstraintName: "PK_friendly_staff_command_effects",
34
+ comment: "Identificador \xFAnico do efeito."
35
+ })
36
+ ], FriendlyStaffCommandEffect.prototype, "id", 2);
37
+ __decorateClass([
38
+ Column({
39
+ name: "staff_command_id",
40
+ type: "bigint",
41
+ comment: "FK friendly_staff_commands.id. O comando que causou o efeito."
42
+ })
43
+ ], FriendlyStaffCommandEffect.prototype, "staffCommandId", 2);
44
+ __decorateClass([
45
+ Column({
46
+ type: "varchar",
47
+ length: 16,
48
+ comment: "push (aviso para uma pessoa) | feed (atualiza\xE7\xE3o de card pela outbox)."
49
+ })
50
+ ], FriendlyStaffCommandEffect.prototype, "kind", 2);
51
+ __decorateClass([
52
+ Column({
53
+ name: "recipient_user_id",
54
+ type: "uuid",
55
+ nullable: true,
56
+ comment: "FK users.id. Quem deveria receber o push. Obrigat\xF3rio em push."
57
+ })
58
+ ], FriendlyStaffCommandEffect.prototype, "recipientUserId", 2);
59
+ __decorateClass([
60
+ Column({
61
+ name: "idempotency_key",
62
+ type: "varchar",
63
+ length: 128,
64
+ comment: "Chave do envio deste efeito, a mesma mandada ao notification-service. \xDAnica."
65
+ })
66
+ ], FriendlyStaffCommandEffect.prototype, "idempotencyKey", 2);
67
+ __decorateClass([
68
+ Column({
69
+ type: "jsonb",
70
+ nullable: true,
71
+ comment: "O envio congelado do push (tipo, canal, t\xEDtulo, texto, deep link e ids). Toda tentativa usa este envelope."
72
+ })
73
+ ], FriendlyStaffCommandEffect.prototype, "envelope", 2);
74
+ __decorateClass([
75
+ Column({
76
+ name: "envelope_version",
77
+ type: "smallint",
78
+ nullable: true,
79
+ comment: "Vers\xE3o do formato do envelope (1)."
80
+ })
81
+ ], FriendlyStaffCommandEffect.prototype, "envelopeVersion", 2);
82
+ __decorateClass([
83
+ Column({
84
+ type: "varchar",
85
+ length: 16,
86
+ default: FriendlyStaffCommandEffectStatus.PENDING,
87
+ comment: "pending | handed_off | skipped | failed."
88
+ })
89
+ ], FriendlyStaffCommandEffect.prototype, "status", 2);
90
+ __decorateClass([
91
+ Column({
92
+ name: "skip_reason",
93
+ type: "varchar",
94
+ length: 32,
95
+ nullable: true,
96
+ comment: "notifications_disabled | no_account | dedupe_hit. S\xF3 em skipped."
97
+ })
98
+ ], FriendlyStaffCommandEffect.prototype, "skipReason", 2);
99
+ __decorateClass([
100
+ Column({
101
+ name: "notification_id",
102
+ type: "uuid",
103
+ nullable: true,
104
+ comment: "notifications.id no notification-service (sem FK: outro servi\xE7o, e a reten\xE7\xE3o pode apagar a linha)."
105
+ })
106
+ ], FriendlyStaffCommandEffect.prototype, "notificationId", 2);
107
+ __decorateClass([
108
+ Column({
109
+ name: "feed_outbox_id",
110
+ type: "bigint",
111
+ nullable: true,
112
+ comment: "feed_outbox.id da atualiza\xE7\xE3o do card. Obrigat\xF3rio em feed."
113
+ })
114
+ ], FriendlyStaffCommandEffect.prototype, "feedOutboxId", 2);
115
+ __decorateClass([
116
+ Column({
117
+ type: "smallint",
118
+ default: 0,
119
+ comment: "Tentativas do despachante."
120
+ })
121
+ ], FriendlyStaffCommandEffect.prototype, "attempts", 2);
122
+ __decorateClass([
123
+ Column({
124
+ name: "last_error",
125
+ type: "text",
126
+ nullable: true,
127
+ comment: "\xDAltimo erro do envio."
128
+ })
129
+ ], FriendlyStaffCommandEffect.prototype, "lastError", 2);
130
+ __decorateClass([
131
+ Column({
132
+ name: "next_attempt_at",
133
+ type: "timestamptz",
134
+ nullable: true,
135
+ comment: "Quando o despachante pode tentar de novo (espera crescente). Nula = j\xE1."
136
+ })
137
+ ], FriendlyStaffCommandEffect.prototype, "nextAttemptAt", 2);
138
+ __decorateClass([
139
+ CreateDateColumn({
140
+ name: "created_at",
141
+ type: "timestamptz",
142
+ comment: "Quando o efeito nasceu (na transa\xE7\xE3o do comando)."
143
+ })
144
+ ], FriendlyStaffCommandEffect.prototype, "createdAt", 2);
145
+ __decorateClass([
146
+ UpdateDateColumn({
147
+ name: "updated_at",
148
+ type: "timestamptz",
149
+ comment: "Data/hora da \xFAltima atualiza\xE7\xE3o."
150
+ })
151
+ ], FriendlyStaffCommandEffect.prototype, "updatedAt", 2);
152
+ __decorateClass([
153
+ ManyToOne(() => FriendlyStaffCommand, { onDelete: "RESTRICT" }),
154
+ JoinColumn({
155
+ name: "staff_command_id",
156
+ foreignKeyConstraintName: "FK_friendly_staff_command_effects_command"
157
+ })
158
+ ], FriendlyStaffCommandEffect.prototype, "staffCommand", 2);
159
+ __decorateClass([
160
+ ManyToOne(() => User, { onDelete: "RESTRICT" }),
161
+ JoinColumn({
162
+ name: "recipient_user_id",
163
+ foreignKeyConstraintName: "FK_friendly_staff_command_effects_recipient"
164
+ })
165
+ ], FriendlyStaffCommandEffect.prototype, "recipientUser", 2);
166
+ FriendlyStaffCommandEffect = __decorateClass([
167
+ Entity("friendly_staff_command_effects"),
168
+ Index("UQ_friendly_staff_command_effects_key", ["idempotencyKey"], { unique: true }),
169
+ Index("IDX_friendly_staff_command_effects_command", ["staffCommandId"]),
170
+ Index("IDX_friendly_staff_command_effects_pending", ["nextAttemptAt"], {
171
+ where: `"status" = 'pending'`
172
+ }),
173
+ Check(
174
+ "CHK_friendly_staff_command_effects_kind",
175
+ `("kind" = 'push' AND "recipient_user_id" IS NOT NULL AND "envelope" IS NOT NULL) OR ("kind" = 'feed' AND "feed_outbox_id" IS NOT NULL)`
176
+ ),
177
+ Check("CHK_friendly_staff_command_effects_status", `"status" IN (${STATUSES})`),
178
+ Check(
179
+ "CHK_friendly_staff_command_effects_skip_reason",
180
+ `"skip_reason" IS NULL OR "skip_reason" IN (${SKIP_REASONS})`
181
+ )
182
+ ], FriendlyStaffCommandEffect);
183
+ export {
184
+ FriendlyStaffCommandEffect
185
+ };
@@ -0,0 +1,2 @@
1
+ export { FriendlyStaffCommandEffect } from './friendly-staff-command-effect.entity';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/friendlies/friendly-staff-command-effects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FriendlyStaffCommandEffect } from "./friendly-staff-command-effect.entity.js";
2
+ export {
3
+ FriendlyStaffCommandEffect
4
+ };
@@ -0,0 +1,21 @@
1
+ import { FriendlyStaffCommandStatus } from '../enums/friendly-staff-command-status.enum';
2
+ import { FriendlyStaffOperation } from '../enums/friendly-staff-operation.enum';
3
+ import { FriendlyChallenge } from '../friendly-challenges/friendly-challenge.entity';
4
+ import { FriendlyOpenChallenge } from '../friendly-open-challenges/friendly-open-challenge.entity';
5
+ export declare class FriendlyStaffCommand {
6
+ id: string;
7
+ idempotencyKey: string;
8
+ operation: FriendlyStaffOperation | null;
9
+ status: FriendlyStaffCommandStatus;
10
+ friendlyChallengeId: number | null;
11
+ friendlyOpenChallengeId: number | null;
12
+ actorStaffId: string;
13
+ actorStaffName: string | null;
14
+ requestHash: string | null;
15
+ responseStatus: number | null;
16
+ responseBody: Record<string, unknown> | null;
17
+ createdAt: Date;
18
+ challenge: FriendlyChallenge | null;
19
+ openChallenge: FriendlyOpenChallenge | null;
20
+ }
21
+ //# sourceMappingURL=friendly-staff-command.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"friendly-staff-command.entity.d.ts","sourceRoot":"","sources":["../../../src/friendlies/friendly-staff-commands/friendly-staff-command.entity.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AAoCnG,qBAWa,oBAAoB;IAM/B,EAAE,EAAE,MAAM,CAAC;IAOX,cAAc,EAAE,MAAM,CAAC;IASvB,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAQzC,MAAM,EAAE,0BAA0B,CAAC;IAQnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IASnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IAQvC,YAAY,EAAE,MAAM,CAAC;IASrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAU9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAQ9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAO7C,SAAS,EAAE,IAAI,CAAC;IAShB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAOpC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC7C"}
@@ -0,0 +1,152 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
11
+ import {
12
+ Check,
13
+ Column,
14
+ CreateDateColumn,
15
+ Entity,
16
+ Index,
17
+ JoinColumn,
18
+ ManyToOne,
19
+ PrimaryGeneratedColumn
20
+ } from "typeorm";
21
+ import { FriendlyStaffCommandStatus } from "../enums/friendly-staff-command-status.enum.js";
22
+ import { FriendlyStaffOperation } from "../enums/friendly-staff-operation.enum.js";
23
+ import { FriendlyChallenge } from "../friendly-challenges/friendly-challenge.entity.js";
24
+ import { FriendlyOpenChallenge } from "../friendly-open-challenges/friendly-open-challenge.entity.js";
25
+ const OPERATIONS = Object.values(FriendlyStaffOperation).map((operation) => `'${operation}'`).join(", ");
26
+ const STATUSES = Object.values(FriendlyStaffCommandStatus).map((status) => `'${status}'`).join(", ");
27
+ let FriendlyStaffCommand = class {
28
+ };
29
+ __decorateClass([
30
+ PrimaryGeneratedColumn({
31
+ type: "bigint",
32
+ primaryKeyConstraintName: "PK_friendly_staff_commands",
33
+ comment: "Identificador \xFAnico do comando."
34
+ })
35
+ ], FriendlyStaffCommand.prototype, "id", 2);
36
+ __decorateClass([
37
+ Column({
38
+ name: "idempotency_key",
39
+ type: "uuid",
40
+ comment: "Chave de idempot\xEAncia: o event_id da auditoria do back-office. \xDAnica."
41
+ })
42
+ ], FriendlyStaffCommand.prototype, "idempotencyKey", 2);
43
+ __decorateClass([
44
+ Column({
45
+ type: "varchar",
46
+ length: 40,
47
+ nullable: true,
48
+ comment: "Opera\xE7\xE3o da equipe (FriendlyStaffOperation). Nula s\xF3 em abandoned sem opera\xE7\xE3o informada."
49
+ })
50
+ ], FriendlyStaffCommand.prototype, "operation", 2);
51
+ __decorateClass([
52
+ Column({
53
+ type: "varchar",
54
+ length: 16,
55
+ comment: "completed (rodou, resposta guardada) | abandoned (encerrada sem aplicar, nunca mais roda)."
56
+ })
57
+ ], FriendlyStaffCommand.prototype, "status", 2);
58
+ __decorateClass([
59
+ Column({
60
+ name: "friendly_challenge_id",
61
+ type: "int",
62
+ nullable: true,
63
+ comment: "FK friendly_challenges.id. O amistoso alvo."
64
+ })
65
+ ], FriendlyStaffCommand.prototype, "friendlyChallengeId", 2);
66
+ __decorateClass([
67
+ Column({
68
+ name: "friendly_open_challenge_id",
69
+ type: "int",
70
+ nullable: true,
71
+ comment: "FK friendly_open_challenges.id. O desafio aberto alvo. Pelo menos um alvo, salvo em abandoned."
72
+ })
73
+ ], FriendlyStaffCommand.prototype, "friendlyOpenChallengeId", 2);
74
+ __decorateClass([
75
+ Column({
76
+ name: "actor_staff_id",
77
+ type: "varchar",
78
+ length: 255,
79
+ comment: "Id (Clerk) de quem da equipe pediu."
80
+ })
81
+ ], FriendlyStaffCommand.prototype, "actorStaffId", 2);
82
+ __decorateClass([
83
+ Column({
84
+ name: "actor_staff_name",
85
+ type: "varchar",
86
+ length: 255,
87
+ nullable: true,
88
+ comment: "Nome de quem da equipe pediu, copiado na hora."
89
+ })
90
+ ], FriendlyStaffCommand.prototype, "actorStaffName", 2);
91
+ __decorateClass([
92
+ Column({
93
+ name: "request_hash",
94
+ type: "char",
95
+ length: 64,
96
+ nullable: true,
97
+ comment: "SHA-256 hex da opera\xE7\xE3o, do alvo e do corpo can\xF4nico, sem a chave. Nulo s\xF3 em abandoned."
98
+ })
99
+ ], FriendlyStaffCommand.prototype, "requestHash", 2);
100
+ __decorateClass([
101
+ Column({
102
+ name: "response_status",
103
+ type: "smallint",
104
+ nullable: true,
105
+ comment: "Status HTTP devolvido na primeira execu\xE7\xE3o. Nulo s\xF3 em abandoned."
106
+ })
107
+ ], FriendlyStaffCommand.prototype, "responseStatus", 2);
108
+ __decorateClass([
109
+ Column({
110
+ name: "response_body",
111
+ type: "jsonb",
112
+ nullable: true,
113
+ comment: "Resposta devolvida na primeira execu\xE7\xE3o, repetida a cada nova chamada com a chave."
114
+ })
115
+ ], FriendlyStaffCommand.prototype, "responseBody", 2);
116
+ __decorateClass([
117
+ CreateDateColumn({
118
+ name: "created_at",
119
+ type: "timestamptz",
120
+ comment: "Quando o comando chegou."
121
+ })
122
+ ], FriendlyStaffCommand.prototype, "createdAt", 2);
123
+ __decorateClass([
124
+ ManyToOne(() => FriendlyChallenge, { onDelete: "RESTRICT" }),
125
+ JoinColumn({
126
+ name: "friendly_challenge_id",
127
+ foreignKeyConstraintName: "FK_friendly_staff_commands_challenge"
128
+ })
129
+ ], FriendlyStaffCommand.prototype, "challenge", 2);
130
+ __decorateClass([
131
+ ManyToOne(() => FriendlyOpenChallenge, { onDelete: "RESTRICT" }),
132
+ JoinColumn({
133
+ name: "friendly_open_challenge_id",
134
+ foreignKeyConstraintName: "FK_friendly_staff_commands_open_challenge"
135
+ })
136
+ ], FriendlyStaffCommand.prototype, "openChallenge", 2);
137
+ FriendlyStaffCommand = __decorateClass([
138
+ Entity("friendly_staff_commands"),
139
+ Index("UQ_friendly_staff_commands_key", ["idempotencyKey"], { unique: true }),
140
+ Check(
141
+ "CHK_friendly_staff_commands_operation",
142
+ `"operation" IS NULL OR "operation" IN (${OPERATIONS})`
143
+ ),
144
+ Check("CHK_friendly_staff_commands_status", `"status" IN (${STATUSES})`),
145
+ Check(
146
+ "CHK_friendly_staff_commands_target",
147
+ `"status" = 'abandoned' OR num_nonnulls("friendly_challenge_id", "friendly_open_challenge_id") >= 1`
148
+ )
149
+ ], FriendlyStaffCommand);
150
+ export {
151
+ FriendlyStaffCommand
152
+ };
@@ -0,0 +1,2 @@
1
+ export { FriendlyStaffCommand } from './friendly-staff-command.entity';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/friendlies/friendly-staff-commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FriendlyStaffCommand } from "./friendly-staff-command.entity.js";
2
+ export {
3
+ FriendlyStaffCommand
4
+ };
@@ -1,23 +1,36 @@
1
1
  export { FriendlyAttendanceStatus } from './enums/friendly-attendance-status.enum';
2
2
  export { FriendlyChallengeStatus } from './enums/friendly-challenge-status.enum';
3
3
  export { FriendlyDeclineReason } from './enums/friendly-decline-reason.enum';
4
+ export { FriendlyHistoryActorType } from './enums/friendly-history-actor-type.enum';
5
+ export { FriendlyHistoryType } from './enums/friendly-history-type.enum';
4
6
  export { FriendlyMatchStatus } from './enums/friendly-match-status.enum';
5
7
  export { FriendlyOpenChallengeStatus } from './enums/friendly-open-challenge-status.enum';
8
+ export { FriendlyRemovedReason } from './enums/friendly-removed-reason.enum';
6
9
  export { FriendlyResource } from './enums/friendly-resource.enum';
7
10
  export { FriendlyResponsible } from './enums/friendly-responsible.enum';
8
11
  export { FriendlyScheduleKind } from './enums/friendly-schedule-kind.enum';
9
12
  export { FriendlyScoreEventType } from './enums/friendly-score-event-type.enum';
13
+ export { FriendlyScoreStaffReason } from './enums/friendly-score-staff-reason.enum';
10
14
  export { FriendlyScoreStatus } from './enums/friendly-score-status.enum';
15
+ export { FriendlyStaffCommandEffectKind } from './enums/friendly-staff-command-effect-kind.enum';
16
+ export { FriendlyStaffCommandEffectSkipReason } from './enums/friendly-staff-command-effect-skip-reason.enum';
17
+ export { FriendlyStaffCommandEffectStatus } from './enums/friendly-staff-command-effect-status.enum';
18
+ export { FriendlyStaffCommandStatus } from './enums/friendly-staff-command-status.enum';
19
+ export { FriendlyStaffOperation } from './enums/friendly-staff-operation.enum';
11
20
  export * from './friendly-board-preferences';
12
21
  export * from './friendly-challenge-extras';
13
22
  export * from './friendly-challenges';
23
+ export * from './friendly-history';
14
24
  export * from './friendly-match-attendances';
15
25
  export * from './friendly-match-extras';
16
26
  export * from './friendly-match-goals';
17
27
  export * from './friendly-match-mvps';
18
28
  export * from './friendly-matches';
19
29
  export * from './friendly-mvp-votes';
30
+ export * from './friendly-open-challenge-extras';
20
31
  export * from './friendly-open-challenges';
21
32
  export * from './friendly-requests';
22
33
  export * from './friendly-score-events';
34
+ export * from './friendly-staff-command-effects';
35
+ export * from './friendly-staff-commands';
23
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/friendlies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/friendlies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,oCAAoC,EAAE,MAAM,wDAAwD,CAAC;AAC9G,OAAO,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AACrG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC"}