@dakkitor/api-contracts 1.7.0 → 1.8.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 (191) hide show
  1. package/dist/abilities/abilities.contract.spec.js +39 -19
  2. package/dist/abilities/interconnection.abilities.json +6 -0
  3. package/dist/abilities/outreach.abilities.json +0 -7
  4. package/dist/abilities/second-agent.abilities.json +2 -91
  5. package/dist/abilities/team-leads.json +1 -0
  6. package/dist/abilities/worker-curator.abilities.json +2 -0
  7. package/dist/actives/actives.contract.d.ts +2562 -2515
  8. package/dist/actives/actives.contract.d.ts.map +1 -1
  9. package/dist/agent-client-links/agent-client-links.contract.d.ts +908 -908
  10. package/dist/auth/auth.contract.d.ts +50 -44
  11. package/dist/auth/auth.contract.d.ts.map +1 -1
  12. package/dist/auth/auth.contract.js +1 -0
  13. package/dist/bookings/backdate-guard.spec.d.ts +2 -0
  14. package/dist/bookings/backdate-guard.spec.d.ts.map +1 -0
  15. package/dist/bookings/backdate-guard.spec.js +80 -0
  16. package/dist/bookings/bookings.contract.d.ts +4918 -4824
  17. package/dist/bookings/bookings.contract.d.ts.map +1 -1
  18. package/dist/bookings/bookings.contract.js +26 -2
  19. package/dist/call-history/call-history.contract.d.ts +434 -434
  20. package/dist/calls-feed/calls-feed.contract.d.ts +70 -70
  21. package/dist/client-contacts/client-contacts.contract.d.ts +290 -290
  22. package/dist/clients/clients.contract.d.ts +110 -110
  23. package/dist/collaboration-checkings/collaboration-checkings.contract.d.ts +1412 -1412
  24. package/dist/collaborations/collaborations.contract.d.ts +1278 -1278
  25. package/dist/common/common-schemas.d.ts +13 -13
  26. package/dist/common/common-schemas.d.ts.map +1 -1
  27. package/dist/common/common-schemas.js +1 -0
  28. package/dist/common/nino.d.ts +8 -0
  29. package/dist/common/nino.d.ts.map +1 -0
  30. package/dist/common/nino.js +26 -0
  31. package/dist/common/nino.spec.d.ts +2 -0
  32. package/dist/common/nino.spec.d.ts.map +1 -0
  33. package/dist/common/nino.spec.js +32 -0
  34. package/dist/companies/companies.contract.d.ts +30 -30
  35. package/dist/crews/crews.contract.d.ts +300 -300
  36. package/dist/cron-executions/cron-executions.contract.d.ts +19 -6
  37. package/dist/cron-executions/cron-executions.contract.d.ts.map +1 -1
  38. package/dist/cron-executions/cron-executions.contract.js +1 -0
  39. package/dist/cron-executions/cron-executions.contract.spec.d.ts +2 -0
  40. package/dist/cron-executions/cron-executions.contract.spec.d.ts.map +1 -0
  41. package/dist/cron-executions/cron-executions.contract.spec.js +27 -0
  42. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts +2 -0
  43. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.d.ts.map +1 -0
  44. package/dist/curated-worker-leads/candidate-booking-date-fields.spec.js +59 -0
  45. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts +1255 -1188
  46. package/dist/curated-worker-leads/candidate-coordination.contract.d.ts.map +1 -1
  47. package/dist/curated-worker-leads/candidate-coordination.contract.js +22 -6
  48. package/dist/curated-worker-leads/candidate-coordination.contract.spec.js +11 -0
  49. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts +347 -304
  50. package/dist/curated-worker-leads/candidate-edit-session.contract.d.ts.map +1 -1
  51. package/dist/curated-worker-leads/contact-history.spec.js +1 -0
  52. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts +2 -85
  53. package/dist/curated-worker-leads/curated-worker-lead-config.contract.d.ts.map +1 -1
  54. package/dist/curated-worker-leads/curated-worker-lead-config.contract.js +17 -41
  55. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts +2 -0
  56. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.d.ts.map +1 -0
  57. package/dist/curated-worker-leads/curated-worker-lead-config.contract.spec.js +30 -0
  58. package/dist/curated-worker-leads/job-feed-match-counts.contract.spec.js +30 -0
  59. package/dist/curated-worker-leads/jobs-tab.contract.d.ts +6058 -5381
  60. package/dist/curated-worker-leads/jobs-tab.contract.d.ts.map +1 -1
  61. package/dist/curated-worker-leads/jobs-tab.contract.js +64 -12
  62. package/dist/curated-worker-leads/owned-jobs-tab.contract.d.ts +88 -88
  63. package/dist/curated-workers/curated-workers.contract.d.ts +1173 -962
  64. package/dist/curated-workers/curated-workers.contract.d.ts.map +1 -1
  65. package/dist/curated-workers/curated-workers.contract.js +37 -6
  66. package/dist/dashboards/dashboard-widgets.contract.d.ts +43 -73
  67. package/dist/dashboards/dashboard-widgets.contract.d.ts.map +1 -1
  68. package/dist/dashboards/dashboard-widgets.contract.js +1 -11
  69. package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts +2 -0
  70. package/dist/dashboards/dashboard-widgets.retirement.spec.d.ts.map +1 -0
  71. package/dist/dashboards/dashboard-widgets.retirement.spec.js +22 -0
  72. package/dist/document-intake/document-intake.automation.spec.d.ts +2 -0
  73. package/dist/document-intake/document-intake.automation.spec.d.ts.map +1 -0
  74. package/dist/document-intake/document-intake.automation.spec.js +469 -0
  75. package/dist/document-intake/document-intake.card-side.spec.d.ts +2 -0
  76. package/dist/document-intake/document-intake.card-side.spec.d.ts.map +1 -0
  77. package/dist/document-intake/document-intake.card-side.spec.js +51 -0
  78. package/dist/document-intake/document-intake.contract.d.ts +9421 -1071
  79. package/dist/document-intake/document-intake.contract.d.ts.map +1 -1
  80. package/dist/document-intake/document-intake.contract.js +219 -5
  81. package/dist/document-intake/document-intake.contract.spec.d.ts +2 -0
  82. package/dist/document-intake/document-intake.contract.spec.d.ts.map +1 -0
  83. package/dist/document-intake/document-intake.contract.spec.js +37 -0
  84. package/dist/document-intake/document-intake.nino.spec.d.ts +2 -0
  85. package/dist/document-intake/document-intake.nino.spec.d.ts.map +1 -0
  86. package/dist/document-intake/document-intake.nino.spec.js +42 -0
  87. package/dist/export-jobs/export-jobs.contract.d.ts +426 -426
  88. package/dist/files/files.contract.d.ts +36 -36
  89. package/dist/index.d.ts +17 -9
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +17 -9
  92. package/dist/job-clusters/job-clusters.contract.d.ts +52 -52
  93. package/dist/jobs/jobs.contract.d.ts +3610 -3610
  94. package/dist/kpi-impersonation/kpi-impersonation.contract.d.ts +56 -56
  95. package/dist/lead-assignments/lead-assignments.contract.d.ts +706 -706
  96. package/dist/lead-distribution/agent-lead-distribution.contract.d.ts +220 -220
  97. package/dist/lead-distribution/lead-distribution-config.contract.d.ts +10 -10
  98. package/dist/leads/leads.contract.d.ts +86 -86
  99. package/dist/locations/locations.contract.d.ts +46 -46
  100. package/dist/notifications/notifications.contract.d.ts +18 -18
  101. package/dist/offices/offices.contract.d.ts +24 -24
  102. package/dist/outreach/__tests__/outreach-contract-additions.spec.js +27 -0
  103. package/dist/outreach/lab-outreach.contract.d.ts +48 -48
  104. package/dist/outreach/outreach-requests.contract.d.ts +272 -272
  105. package/dist/outreach/outreach-requests.schemas.d.ts +14 -14
  106. package/dist/outreach/outreach.contract.d.ts +12 -12
  107. package/dist/outreach/outreach.schemas.d.ts +2 -2
  108. package/dist/outreach/relay-hub-outreach.contract.d.ts +1156 -0
  109. package/dist/outreach/relay-hub-outreach.contract.d.ts.map +1 -0
  110. package/dist/outreach/relay-hub-outreach.contract.js +103 -0
  111. package/dist/outreach/relay-hub-outreach.contract.spec.d.ts +2 -0
  112. package/dist/outreach/relay-hub-outreach.contract.spec.d.ts.map +1 -0
  113. package/dist/outreach/relay-hub-outreach.contract.spec.js +119 -0
  114. package/dist/own-research/own-research.contract.d.ts +708 -708
  115. package/dist/proofs/proofs.contract.d.ts +196 -196
  116. package/dist/proofs/proofs.dtos.d.ts +104 -104
  117. package/dist/qualifications/qualifications.contract.d.ts +22 -22
  118. package/dist/realtime/realtime-telemetry.contract.d.ts +181 -0
  119. package/dist/realtime/realtime-telemetry.contract.d.ts.map +1 -0
  120. package/dist/realtime/realtime-telemetry.contract.js +81 -0
  121. package/dist/realtime/realtime-telemetry.contract.spec.d.ts +2 -0
  122. package/dist/realtime/realtime-telemetry.contract.spec.d.ts.map +1 -0
  123. package/dist/realtime/realtime-telemetry.contract.spec.js +41 -0
  124. package/dist/relay-pods/build-relay-pod-membership-rules.d.ts +9 -0
  125. package/dist/relay-pods/build-relay-pod-membership-rules.d.ts.map +1 -0
  126. package/dist/relay-pods/build-relay-pod-membership-rules.js +17 -0
  127. package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts +2 -0
  128. package/dist/relay-pods/build-relay-pod-membership-rules.spec.d.ts.map +1 -0
  129. package/dist/relay-pods/build-relay-pod-membership-rules.spec.js +20 -0
  130. package/dist/relay-pods/relay-hub.contract.d.ts +1463 -0
  131. package/dist/relay-pods/relay-hub.contract.d.ts.map +1 -0
  132. package/dist/relay-pods/relay-hub.contract.js +140 -0
  133. package/dist/relay-pods/relay-hub.contract.spec.d.ts +2 -0
  134. package/dist/relay-pods/relay-hub.contract.spec.d.ts.map +1 -0
  135. package/dist/relay-pods/relay-hub.contract.spec.js +180 -0
  136. package/dist/relay-pods/relay-hub.schemas.d.ts +577 -0
  137. package/dist/relay-pods/relay-hub.schemas.d.ts.map +1 -0
  138. package/dist/relay-pods/relay-hub.schemas.js +158 -0
  139. package/dist/relay-pods/relay-lab-fleet.contract.d.ts +115 -86
  140. package/dist/relay-pods/relay-lab-fleet.contract.d.ts.map +1 -1
  141. package/dist/relay-pods/relay-lab-fleet.contract.spec.js +16 -0
  142. package/dist/relay-pods/relay-lab-fleet.schemas.d.ts +87 -58
  143. package/dist/relay-pods/relay-lab-fleet.schemas.d.ts.map +1 -1
  144. package/dist/relay-pods/relay-lab-fleet.schemas.js +22 -5
  145. package/dist/{curated-worker-leads/lead-agent-area.contract.d.ts → relay-pods/relay-pod-members.contract.d.ts} +233 -126
  146. package/dist/relay-pods/relay-pod-members.contract.d.ts.map +1 -0
  147. package/dist/relay-pods/relay-pod-members.contract.js +73 -0
  148. package/dist/relay-pods/relay-pod-sessions.contract.d.ts +58 -58
  149. package/dist/relay-pods/relay-pods.contract.d.ts +169 -169
  150. package/dist/relay-pods/relay-pods.schemas.d.ts +46 -46
  151. package/dist/shared/summary-schemas.d.ts +10 -10
  152. package/dist/sheets-sync/__tests__/sheets-sync-events.schemas.test.js +22 -2
  153. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts +30 -0
  154. package/dist/sheets-sync/sheets-sync-events.schemas.d.ts.map +1 -1
  155. package/dist/sheets-sync/sheets-sync-events.schemas.js +16 -1
  156. package/dist/sheets-sync/sheets-sync.contract.d.ts +829 -262
  157. package/dist/sheets-sync/sheets-sync.contract.d.ts.map +1 -1
  158. package/dist/sheets-sync/sheets-sync.contract.js +156 -34
  159. package/dist/telegram/telegram.contract.d.ts +12 -12
  160. package/dist/trades/trades.contract.d.ts +16 -16
  161. package/dist/user-access-grants/user-access-grants.contract.d.ts +226 -226
  162. package/dist/users/__tests__/assignable-roles.spec.js +1 -1
  163. package/dist/users/users.contract.d.ts +327 -325
  164. package/dist/users/users.contract.d.ts.map +1 -1
  165. package/dist/users/users.contract.js +10 -7
  166. package/dist/users/users.contract.spec.js +15 -0
  167. package/dist/voice-screener/voice-screener.contract.d.ts +237 -0
  168. package/dist/voice-screener/voice-screener.contract.d.ts.map +1 -0
  169. package/dist/voice-screener/voice-screener.contract.js +89 -0
  170. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts +500 -260
  171. package/dist/worker-identity-cases/worker-identity-cases.contract.d.ts.map +1 -1
  172. package/dist/worker-identity-cases/worker-identity-cases.contract.js +17 -1
  173. package/dist/worker-merge-proposals/worker-merge-proposals.contract.d.ts +130 -130
  174. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.contract.d.ts +35 -35
  175. package/dist/worker-source-identity-conflicts/worker-source-identity-conflicts.schemas.d.ts +15 -15
  176. package/dist/workers/do-not-contact.contract.d.ts +4 -4
  177. package/dist/workers/qualification-back-proof.spec.d.ts +2 -0
  178. package/dist/workers/qualification-back-proof.spec.d.ts.map +1 -0
  179. package/dist/workers/qualification-back-proof.spec.js +39 -0
  180. package/dist/workers/workers.contract.d.ts +1969 -1775
  181. package/dist/workers/workers.contract.d.ts.map +1 -1
  182. package/dist/workers/workers.contract.js +5 -0
  183. package/package.json +1 -1
  184. package/dist/curated-worker-leads/consent-queue.contract.d.ts +0 -4527
  185. package/dist/curated-worker-leads/consent-queue.contract.d.ts.map +0 -1
  186. package/dist/curated-worker-leads/consent-queue.contract.js +0 -201
  187. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts +0 -135
  188. package/dist/curated-worker-leads/curated-worker-leads.contract.d.ts.map +0 -1
  189. package/dist/curated-worker-leads/curated-worker-leads.contract.js +0 -32
  190. package/dist/curated-worker-leads/lead-agent-area.contract.d.ts.map +0 -1
  191. package/dist/curated-worker-leads/lead-agent-area.contract.js +0 -51
@@ -25,16 +25,16 @@ export declare const QualificationSchema: z.ZodObject<{
25
25
  }>, "many">;
26
26
  }, "strip", z.ZodTypeAny, {
27
27
  id: string;
28
- description: string | null;
29
28
  name: string;
29
+ description: string | null;
30
30
  types: {
31
31
  id: string;
32
32
  name: string;
33
33
  }[];
34
34
  }, {
35
35
  id: string;
36
- description: string | null;
37
36
  name: string;
37
+ description: string | null;
38
38
  types: {
39
39
  id: string;
40
40
  name: string;
@@ -58,14 +58,14 @@ export declare const CreateQualificationSchema: z.ZodObject<{
58
58
  name: string;
59
59
  }>, "many">>;
60
60
  }, "strip", z.ZodTypeAny, {
61
- description: string;
62
61
  name: string;
62
+ description: string;
63
63
  types?: {
64
64
  name: string;
65
65
  }[] | undefined;
66
66
  }, {
67
- description: string;
68
67
  name: string;
68
+ description: string;
69
69
  types?: {
70
70
  name: string;
71
71
  }[] | undefined;
@@ -94,15 +94,15 @@ export declare const UpdateQualificationSchema: z.ZodObject<{
94
94
  id?: string | undefined;
95
95
  }>, "many">>;
96
96
  }, "strip", z.ZodTypeAny, {
97
- description?: string | undefined;
98
97
  name?: string | undefined;
98
+ description?: string | undefined;
99
99
  types?: {
100
100
  name: string;
101
101
  id?: string | undefined;
102
102
  }[] | undefined;
103
103
  }, {
104
- description?: string | undefined;
105
104
  name?: string | undefined;
105
+ description?: string | undefined;
106
106
  types?: {
107
107
  name: string;
108
108
  id?: string | undefined;
@@ -131,16 +131,16 @@ export declare const QualificationArraySchema: z.ZodArray<z.ZodObject<{
131
131
  }>, "many">;
132
132
  }, "strip", z.ZodTypeAny, {
133
133
  id: string;
134
- description: string | null;
135
134
  name: string;
135
+ description: string | null;
136
136
  types: {
137
137
  id: string;
138
138
  name: string;
139
139
  }[];
140
140
  }, {
141
141
  id: string;
142
- description: string | null;
143
142
  name: string;
143
+ description: string | null;
144
144
  types: {
145
145
  id: string;
146
146
  name: string;
@@ -171,14 +171,14 @@ export declare const qualificationsContract: {
171
171
  name: string;
172
172
  }>, "many">>;
173
173
  }, "strip", z.ZodTypeAny, {
174
- description: string;
175
174
  name: string;
175
+ description: string;
176
176
  types?: {
177
177
  name: string;
178
178
  }[] | undefined;
179
179
  }, {
180
- description: string;
181
180
  name: string;
181
+ description: string;
182
182
  types?: {
183
183
  name: string;
184
184
  }[] | undefined;
@@ -301,16 +301,16 @@ export declare const qualificationsContract: {
301
301
  }>, "many">;
302
302
  }, "strip", z.ZodTypeAny, {
303
303
  id: string;
304
- description: string | null;
305
304
  name: string;
305
+ description: string | null;
306
306
  types: {
307
307
  id: string;
308
308
  name: string;
309
309
  }[];
310
310
  }, {
311
311
  id: string;
312
- description: string | null;
313
312
  name: string;
313
+ description: string | null;
314
314
  types: {
315
315
  id: string;
316
316
  name: string;
@@ -467,16 +467,16 @@ export declare const qualificationsContract: {
467
467
  }>, "many">;
468
468
  }, "strip", z.ZodTypeAny, {
469
469
  id: string;
470
- description: string | null;
471
470
  name: string;
471
+ description: string | null;
472
472
  types: {
473
473
  id: string;
474
474
  name: string;
475
475
  }[];
476
476
  }, {
477
477
  id: string;
478
- description: string | null;
479
478
  name: string;
479
+ description: string | null;
480
480
  types: {
481
481
  id: string;
482
482
  name: string;
@@ -615,16 +615,16 @@ export declare const qualificationsContract: {
615
615
  }>, "many">;
616
616
  }, "strip", z.ZodTypeAny, {
617
617
  id: string;
618
- description: string | null;
619
618
  name: string;
619
+ description: string | null;
620
620
  types: {
621
621
  id: string;
622
622
  name: string;
623
623
  }[];
624
624
  }, {
625
625
  id: string;
626
- description: string | null;
627
626
  name: string;
627
+ description: string | null;
628
628
  types: {
629
629
  id: string;
630
630
  name: string;
@@ -684,15 +684,15 @@ export declare const qualificationsContract: {
684
684
  id?: string | undefined;
685
685
  }>, "many">>;
686
686
  }, "strip", z.ZodTypeAny, {
687
- description?: string | undefined;
688
687
  name?: string | undefined;
688
+ description?: string | undefined;
689
689
  types?: {
690
690
  name: string;
691
691
  id?: string | undefined;
692
692
  }[] | undefined;
693
693
  }, {
694
- description?: string | undefined;
695
694
  name?: string | undefined;
695
+ description?: string | undefined;
696
696
  types?: {
697
697
  name: string;
698
698
  id?: string | undefined;
@@ -816,16 +816,16 @@ export declare const qualificationsContract: {
816
816
  }>, "many">;
817
817
  }, "strip", z.ZodTypeAny, {
818
818
  id: string;
819
- description: string | null;
820
819
  name: string;
820
+ description: string | null;
821
821
  types: {
822
822
  id: string;
823
823
  name: string;
824
824
  }[];
825
825
  }, {
826
826
  id: string;
827
- description: string | null;
828
827
  name: string;
828
+ description: string | null;
829
829
  types: {
830
830
  id: string;
831
831
  name: string;
@@ -1140,16 +1140,16 @@ export declare const qualificationsContract: {
1140
1140
  }>, "many">;
1141
1141
  }, "strip", z.ZodTypeAny, {
1142
1142
  id: string;
1143
- description: string | null;
1144
1143
  name: string;
1144
+ description: string | null;
1145
1145
  types: {
1146
1146
  id: string;
1147
1147
  name: string;
1148
1148
  }[];
1149
1149
  }, {
1150
1150
  id: string;
1151
- description: string | null;
1152
1151
  name: string;
1152
+ description: string | null;
1153
1153
  types: {
1154
1154
  id: string;
1155
1155
  name: string;
@@ -0,0 +1,181 @@
1
+ import { z } from 'zod';
2
+ export declare const REALTIME_INVALIDATION_TRIGGERS: readonly ["data_changed", "realtime_open"];
3
+ export declare const REALTIME_INVALIDATION_STAGES: readonly ["planned", "invalidated", "refetch_started"];
4
+ export declare const REALTIME_INVALIDATION_SURFACES: readonly ["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"];
5
+ export declare const RealtimeInvalidationTriggerSchema: z.ZodEnum<["data_changed", "realtime_open"]>;
6
+ export declare const RealtimeInvalidationStageSchema: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
7
+ export declare const RealtimeInvalidationSurfaceSchema: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
8
+ export declare const RealtimeInvalidationMetricSampleSchema: z.ZodObject<{
9
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
10
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
11
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
12
+ count: z.ZodNumber;
13
+ }, "strict", z.ZodTypeAny, {
14
+ count: number;
15
+ trigger: "data_changed" | "realtime_open";
16
+ stage: "planned" | "invalidated" | "refetch_started";
17
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
18
+ }, {
19
+ count: number;
20
+ trigger: "data_changed" | "realtime_open";
21
+ stage: "planned" | "invalidated" | "refetch_started";
22
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
23
+ }>;
24
+ export declare const RealtimeInvalidationMetricsRequestSchema: z.ZodObject<{
25
+ samples: z.ZodArray<z.ZodObject<{
26
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
27
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
28
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
29
+ count: z.ZodNumber;
30
+ }, "strict", z.ZodTypeAny, {
31
+ count: number;
32
+ trigger: "data_changed" | "realtime_open";
33
+ stage: "planned" | "invalidated" | "refetch_started";
34
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
35
+ }, {
36
+ count: number;
37
+ trigger: "data_changed" | "realtime_open";
38
+ stage: "planned" | "invalidated" | "refetch_started";
39
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
40
+ }>, "many">;
41
+ }, "strict", z.ZodTypeAny, {
42
+ samples: {
43
+ count: number;
44
+ trigger: "data_changed" | "realtime_open";
45
+ stage: "planned" | "invalidated" | "refetch_started";
46
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
47
+ }[];
48
+ }, {
49
+ samples: {
50
+ count: number;
51
+ trigger: "data_changed" | "realtime_open";
52
+ stage: "planned" | "invalidated" | "refetch_started";
53
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
54
+ }[];
55
+ }>;
56
+ export type RealtimeInvalidationTrigger = z.infer<typeof RealtimeInvalidationTriggerSchema>;
57
+ export type RealtimeInvalidationStage = z.infer<typeof RealtimeInvalidationStageSchema>;
58
+ export type RealtimeInvalidationSurface = z.infer<typeof RealtimeInvalidationSurfaceSchema>;
59
+ export type RealtimeInvalidationMetricSample = z.infer<typeof RealtimeInvalidationMetricSampleSchema>;
60
+ export type RealtimeInvalidationMetricsRequest = z.infer<typeof RealtimeInvalidationMetricsRequestSchema>;
61
+ export declare const realtimeTelemetryContract: {
62
+ reportInvalidationMetrics: {
63
+ metadata: {
64
+ tags: string[];
65
+ };
66
+ summary: "Record bounded browser realtime invalidation attribution";
67
+ method: "POST";
68
+ body: z.ZodObject<{
69
+ samples: z.ZodArray<z.ZodObject<{
70
+ trigger: z.ZodEnum<["data_changed", "realtime_open"]>;
71
+ stage: z.ZodEnum<["planned", "invalidated", "refetch_started"]>;
72
+ surface: z.ZodEnum<["actives", "actives_by_job", "actives_timesheet", "agent_client_links", "bookings", "bookings_calendar", "workers", "curated_workers", "curated_worker_leads", "call_history", "leads", "clients", "clients_autocomplete", "client_contacts", "collaborations", "collaborations_autocomplete", "companies", "companies_autocomplete", "crews", "jobs", "job_clusters", "offices", "qualifications", "trades", "users", "detail", "worker_cards_batch", "candidate_cards_batch", "job_proximity_match_counts_batch", "other"]>;
73
+ count: z.ZodNumber;
74
+ }, "strict", z.ZodTypeAny, {
75
+ count: number;
76
+ trigger: "data_changed" | "realtime_open";
77
+ stage: "planned" | "invalidated" | "refetch_started";
78
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
79
+ }, {
80
+ count: number;
81
+ trigger: "data_changed" | "realtime_open";
82
+ stage: "planned" | "invalidated" | "refetch_started";
83
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
84
+ }>, "many">;
85
+ }, "strict", z.ZodTypeAny, {
86
+ samples: {
87
+ count: number;
88
+ trigger: "data_changed" | "realtime_open";
89
+ stage: "planned" | "invalidated" | "refetch_started";
90
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
91
+ }[];
92
+ }, {
93
+ samples: {
94
+ count: number;
95
+ trigger: "data_changed" | "realtime_open";
96
+ stage: "planned" | "invalidated" | "refetch_started";
97
+ surface: "jobs" | "trades" | "qualifications" | "workers" | "bookings" | "collaborations" | "actives" | "users" | "detail" | "call_history" | "actives_by_job" | "actives_timesheet" | "agent_client_links" | "bookings_calendar" | "curated_workers" | "curated_worker_leads" | "leads" | "clients" | "clients_autocomplete" | "client_contacts" | "collaborations_autocomplete" | "companies" | "companies_autocomplete" | "crews" | "job_clusters" | "offices" | "worker_cards_batch" | "candidate_cards_batch" | "job_proximity_match_counts_batch" | "other";
98
+ }[];
99
+ }>;
100
+ path: "/v2/realtime/invalidation-metrics";
101
+ responses: {
102
+ 500: z.ZodObject<{
103
+ statusCode: z.ZodNumber;
104
+ message: z.ZodString;
105
+ code: z.ZodString;
106
+ details: z.ZodOptional<z.ZodUnknown>;
107
+ timestamp: z.ZodString;
108
+ path: z.ZodString;
109
+ correlationId: z.ZodOptional<z.ZodString>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ message: string;
112
+ code: string;
113
+ path: string;
114
+ statusCode: number;
115
+ timestamp: string;
116
+ details?: unknown;
117
+ correlationId?: string | undefined;
118
+ }, {
119
+ message: string;
120
+ code: string;
121
+ path: string;
122
+ statusCode: number;
123
+ timestamp: string;
124
+ details?: unknown;
125
+ correlationId?: string | undefined;
126
+ }>;
127
+ 204: z.ZodUndefined;
128
+ 400: z.ZodObject<{
129
+ statusCode: z.ZodNumber;
130
+ message: z.ZodString;
131
+ code: z.ZodString;
132
+ details: z.ZodOptional<z.ZodUnknown>;
133
+ timestamp: z.ZodString;
134
+ path: z.ZodString;
135
+ correlationId: z.ZodOptional<z.ZodString>;
136
+ }, "strip", z.ZodTypeAny, {
137
+ message: string;
138
+ code: string;
139
+ path: string;
140
+ statusCode: number;
141
+ timestamp: string;
142
+ details?: unknown;
143
+ correlationId?: string | undefined;
144
+ }, {
145
+ message: string;
146
+ code: string;
147
+ path: string;
148
+ statusCode: number;
149
+ timestamp: string;
150
+ details?: unknown;
151
+ correlationId?: string | undefined;
152
+ }>;
153
+ 401: z.ZodObject<{
154
+ statusCode: z.ZodNumber;
155
+ message: z.ZodString;
156
+ code: z.ZodString;
157
+ details: z.ZodOptional<z.ZodUnknown>;
158
+ timestamp: z.ZodString;
159
+ path: z.ZodString;
160
+ correlationId: z.ZodOptional<z.ZodString>;
161
+ }, "strip", z.ZodTypeAny, {
162
+ message: string;
163
+ code: string;
164
+ path: string;
165
+ statusCode: number;
166
+ timestamp: string;
167
+ details?: unknown;
168
+ correlationId?: string | undefined;
169
+ }, {
170
+ message: string;
171
+ code: string;
172
+ path: string;
173
+ statusCode: number;
174
+ timestamp: string;
175
+ details?: unknown;
176
+ correlationId?: string | undefined;
177
+ }>;
178
+ };
179
+ };
180
+ };
181
+ //# sourceMappingURL=realtime-telemetry.contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-telemetry.contract.d.ts","sourceRoot":"","sources":["../../contracts/realtime/realtime-telemetry.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,8BAA8B,4CAGjC,CAAC;AACX,eAAO,MAAM,4BAA4B,wDAI/B,CAAC;AACX,eAAO,MAAM,8BAA8B,wgBA+BjC,CAAC;AAEX,eAAO,MAAM,iCAAiC,8CAE7C,CAAC;AACF,eAAO,MAAM,+BAA+B,0DAE3C,CAAC;AACF,eAAO,MAAM,iCAAiC,0gBAE7C,CAAC;AACF,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;EAOxC,CAAC;AACZ,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI1C,CAAC;AAEZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,+BAA+B,CACvC,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,iCAAiC,CACzC,CAAC;AACF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC;AACF,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CACtD,OAAO,wCAAwC,CAChD,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmBrC,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.realtimeTelemetryContract = exports.RealtimeInvalidationMetricsRequestSchema = exports.RealtimeInvalidationMetricSampleSchema = exports.RealtimeInvalidationSurfaceSchema = exports.RealtimeInvalidationStageSchema = exports.RealtimeInvalidationTriggerSchema = exports.REALTIME_INVALIDATION_SURFACES = exports.REALTIME_INVALIDATION_STAGES = exports.REALTIME_INVALIDATION_TRIGGERS = void 0;
4
+ const core_1 = require("@ts-rest/core");
5
+ const zod_1 = require("zod");
6
+ const error_schemas_1 = require("../common/error-schemas");
7
+ const c = (0, core_1.initContract)();
8
+ exports.REALTIME_INVALIDATION_TRIGGERS = [
9
+ 'data_changed',
10
+ 'realtime_open',
11
+ ];
12
+ exports.REALTIME_INVALIDATION_STAGES = [
13
+ 'planned',
14
+ 'invalidated',
15
+ 'refetch_started',
16
+ ];
17
+ exports.REALTIME_INVALIDATION_SURFACES = [
18
+ 'actives',
19
+ 'actives_by_job',
20
+ 'actives_timesheet',
21
+ 'agent_client_links',
22
+ 'bookings',
23
+ 'bookings_calendar',
24
+ 'workers',
25
+ 'curated_workers',
26
+ 'curated_worker_leads',
27
+ 'call_history',
28
+ 'leads',
29
+ 'clients',
30
+ 'clients_autocomplete',
31
+ 'client_contacts',
32
+ 'collaborations',
33
+ 'collaborations_autocomplete',
34
+ 'companies',
35
+ 'companies_autocomplete',
36
+ 'crews',
37
+ 'jobs',
38
+ 'job_clusters',
39
+ 'offices',
40
+ 'qualifications',
41
+ 'trades',
42
+ 'users',
43
+ 'detail',
44
+ 'worker_cards_batch',
45
+ 'candidate_cards_batch',
46
+ 'job_proximity_match_counts_batch',
47
+ 'other',
48
+ ];
49
+ exports.RealtimeInvalidationTriggerSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_TRIGGERS);
50
+ exports.RealtimeInvalidationStageSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_STAGES);
51
+ exports.RealtimeInvalidationSurfaceSchema = zod_1.z.enum(exports.REALTIME_INVALIDATION_SURFACES);
52
+ exports.RealtimeInvalidationMetricSampleSchema = zod_1.z
53
+ .object({
54
+ trigger: exports.RealtimeInvalidationTriggerSchema,
55
+ stage: exports.RealtimeInvalidationStageSchema,
56
+ surface: exports.RealtimeInvalidationSurfaceSchema,
57
+ count: zod_1.z.number().int().min(1).max(10000),
58
+ })
59
+ .strict();
60
+ exports.RealtimeInvalidationMetricsRequestSchema = zod_1.z
61
+ .object({
62
+ samples: zod_1.z.array(exports.RealtimeInvalidationMetricSampleSchema).min(1).max(64),
63
+ })
64
+ .strict();
65
+ exports.realtimeTelemetryContract = c.router({
66
+ reportInvalidationMetrics: {
67
+ method: 'POST',
68
+ path: '/realtime/invalidation-metrics',
69
+ body: exports.RealtimeInvalidationMetricsRequestSchema,
70
+ responses: {
71
+ 204: zod_1.z.undefined(),
72
+ 400: error_schemas_1.ErrorResponseSchema,
73
+ 401: error_schemas_1.ErrorResponseSchema,
74
+ },
75
+ summary: 'Record bounded browser realtime invalidation attribution',
76
+ metadata: { tags: ['Realtime telemetry'] },
77
+ },
78
+ }, {
79
+ pathPrefix: '/v2',
80
+ commonResponses: { 500: error_schemas_1.ErrorResponseSchema },
81
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=realtime-telemetry.contract.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-telemetry.contract.spec.d.ts","sourceRoot":"","sources":["../../contracts/realtime/realtime-telemetry.contract.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const realtime_telemetry_contract_1 = require("./realtime-telemetry.contract");
5
+ const validSample = {
6
+ trigger: 'data_changed',
7
+ stage: 'planned',
8
+ surface: 'bookings',
9
+ count: 1,
10
+ };
11
+ (0, bun_test_1.describe)('realtime telemetry contract', () => {
12
+ (0, bun_test_1.it)('pins the bounded ingestion route', () => {
13
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.realtimeTelemetryContract.reportInvalidationMetrics.method).toBe('POST');
14
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.realtimeTelemetryContract.reportInvalidationMetrics.path).toBe('/v2/realtime/invalidation-metrics');
15
+ });
16
+ (0, bun_test_1.it)('accepts every closed trigger, stage, and surface value', () => {
17
+ for (const trigger of realtime_telemetry_contract_1.REALTIME_INVALIDATION_TRIGGERS) {
18
+ for (const stage of realtime_telemetry_contract_1.REALTIME_INVALIDATION_STAGES) {
19
+ for (const surface of realtime_telemetry_contract_1.REALTIME_INVALIDATION_SURFACES) {
20
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.RealtimeInvalidationMetricsRequestSchema.safeParse({
21
+ samples: [{ trigger, stage, surface, count: 10000 }],
22
+ }).success).toBe(true);
23
+ }
24
+ }
25
+ }
26
+ });
27
+ bun_test_1.it.each([
28
+ { samples: [] },
29
+ { samples: Array.from({ length: 65 }, () => validSample) },
30
+ { samples: [{ ...validSample, count: 0 }] },
31
+ { samples: [{ ...validSample, count: 10001 }] },
32
+ { samples: [{ ...validSample, count: 1.5 }] },
33
+ { samples: [{ ...validSample, trigger: 'focus' }] },
34
+ { samples: [{ ...validSample, stage: 'paused' }] },
35
+ { samples: [{ ...validSample, surface: 'worker-123' }] },
36
+ { samples: [{ ...validSample, userId: 'u-1' }] },
37
+ { samples: [validSample], extra: true },
38
+ ])('rejects an invalid or unbounded payload: %j', (body) => {
39
+ (0, bun_test_1.expect)(realtime_telemetry_contract_1.RealtimeInvalidationMetricsRequestSchema.safeParse(body).success).toBe(false);
40
+ });
41
+ });
@@ -0,0 +1,9 @@
1
+ import type { AbilityRule } from '../abilities/abilities.contract';
2
+ /**
3
+ * Pure compiler: relay pod memberships -> CASL rules. Consumed by BOTH the API
4
+ * CaslAbilityFactory and the web computeAbilityRules, mirroring
5
+ * buildUserAccessGrantRules. Callers pass [] for a user without the OUTREACH
6
+ * role, so role and membership stay two independent locks.
7
+ */
8
+ export declare function buildRelayPodMembershipRules(podIds: string[]): AbilityRule[];
9
+ //# sourceMappingURL=build-relay-pod-membership-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-relay-pod-membership-rules.d.ts","sourceRoot":"","sources":["../../contracts/relay-pods/build-relay-pod-membership-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAM5E"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildRelayPodMembershipRules = buildRelayPodMembershipRules;
4
+ /**
5
+ * Pure compiler: relay pod memberships -> CASL rules. Consumed by BOTH the API
6
+ * CaslAbilityFactory and the web computeAbilityRules, mirroring
7
+ * buildUserAccessGrantRules. Callers pass [] for a user without the OUTREACH
8
+ * role, so role and membership stay two independent locks.
9
+ */
10
+ function buildRelayPodMembershipRules(podIds) {
11
+ const ids = [...new Set(podIds)].sort();
12
+ if (ids.length === 0)
13
+ return [];
14
+ return [
15
+ { action: 'manage', subject: 'RelayPod', conditions: { id: { $in: ids } } },
16
+ ];
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=build-relay-pod-membership-rules.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-relay-pod-membership-rules.spec.d.ts","sourceRoot":"","sources":["../../contracts/relay-pods/build-relay-pod-membership-rules.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const build_relay_pod_membership_rules_1 = require("./build-relay-pod-membership-rules");
5
+ const A = '00000000-0000-4000-8000-00000000000a';
6
+ const B = '00000000-0000-4000-8000-00000000000b';
7
+ (0, bun_test_1.describe)('buildRelayPodMembershipRules', () => {
8
+ (0, bun_test_1.it)('produces no rules for an empty membership', () => {
9
+ (0, bun_test_1.expect)((0, build_relay_pod_membership_rules_1.buildRelayPodMembershipRules)([])).toEqual([]);
10
+ });
11
+ (0, bun_test_1.it)('emits one manage rule with sorted, de-duplicated ids', () => {
12
+ (0, bun_test_1.expect)((0, build_relay_pod_membership_rules_1.buildRelayPodMembershipRules)([B, A, B])).toEqual([
13
+ {
14
+ action: 'manage',
15
+ subject: 'RelayPod',
16
+ conditions: { id: { $in: [A, B] } },
17
+ },
18
+ ]);
19
+ });
20
+ });