@vrplatform/hyperline-client 1.0.26 → 1.0.27

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 (91) hide show
  1. package/build/main/const.d.ts +1 -0
  2. package/build/main/const.js +1 -0
  3. package/build/main/const.js.map +1 -1
  4. package/build/main/utils/index.d.ts +1 -1
  5. package/build/main/utils/index.js +1 -1
  6. package/build/main/utils/index.js.map +1 -1
  7. package/build/main/utils/isTestingTeam.d.ts +5 -0
  8. package/build/main/utils/isTestingTeam.js +4 -0
  9. package/build/main/utils/isTestingTeam.js.map +1 -0
  10. package/build/module/const.d.ts +1 -0
  11. package/build/module/const.js +1 -0
  12. package/build/module/const.js.map +1 -1
  13. package/build/module/utils/index.d.ts +1 -1
  14. package/build/module/utils/index.js +1 -1
  15. package/build/module/utils/index.js.map +1 -1
  16. package/build/module/utils/isTestingTeam.d.ts +5 -0
  17. package/build/module/utils/isTestingTeam.js +4 -0
  18. package/build/module/utils/isTestingTeam.js.map +1 -0
  19. package/package.json +2 -2
  20. package/src/const.ts +1 -0
  21. package/src/utils/index.ts +1 -1
  22. package/src/utils/isTestingTeam.ts +11 -0
  23. package/build/main/src/_types.generated.d.ts +0 -22310
  24. package/build/main/src/_types.generated.js +0 -6
  25. package/build/main/src/_types.generated.js.map +0 -1
  26. package/build/main/src/client.d.ts +0 -1706
  27. package/build/main/src/client.js +0 -294
  28. package/build/main/src/client.js.map +0 -1
  29. package/build/main/src/const.d.ts +0 -73
  30. package/build/main/src/const.js +0 -257
  31. package/build/main/src/const.js.map +0 -1
  32. package/build/main/src/hooks.d.ts +0 -10
  33. package/build/main/src/hooks.js +0 -13
  34. package/build/main/src/hooks.js.map +0 -1
  35. package/build/main/src/index.d.ts +0 -5
  36. package/build/main/src/index.js +0 -6
  37. package/build/main/src/index.js.map +0 -1
  38. package/build/main/src/types.d.ts +0 -35
  39. package/build/main/src/types.js +0 -2
  40. package/build/main/src/types.js.map +0 -1
  41. package/build/main/src/utils/arrayBufferToBase64.d.ts +0 -1
  42. package/build/main/src/utils/arrayBufferToBase64.js +0 -9
  43. package/build/main/src/utils/arrayBufferToBase64.js.map +0 -1
  44. package/build/main/src/utils/calculateMrr.d.ts +0 -45
  45. package/build/main/src/utils/calculateMrr.js +0 -107
  46. package/build/main/src/utils/calculateMrr.js.map +0 -1
  47. package/build/main/src/utils/getMrrDiffReasons.d.ts +0 -15
  48. package/build/main/src/utils/getMrrDiffReasons.js +0 -217
  49. package/build/main/src/utils/getMrrDiffReasons.js.map +0 -1
  50. package/build/main/src/utils/index.d.ts +0 -3
  51. package/build/main/src/utils/index.js +0 -4
  52. package/build/main/src/utils/index.js.map +0 -1
  53. package/build/main/tsconfig.main.tsbuildinfo +0 -1
  54. package/build/main/utils/getMrrDiffReasons.d.ts +0 -15
  55. package/build/main/utils/getMrrDiffReasons.js +0 -217
  56. package/build/main/utils/getMrrDiffReasons.js.map +0 -1
  57. package/build/module/src/_types.generated.d.ts +0 -22310
  58. package/build/module/src/_types.generated.js +0 -6
  59. package/build/module/src/_types.generated.js.map +0 -1
  60. package/build/module/src/client.d.ts +0 -1706
  61. package/build/module/src/client.js +0 -296
  62. package/build/module/src/client.js.map +0 -1
  63. package/build/module/src/const.d.ts +0 -73
  64. package/build/module/src/const.js +0 -257
  65. package/build/module/src/const.js.map +0 -1
  66. package/build/module/src/hooks.d.ts +0 -10
  67. package/build/module/src/hooks.js +0 -13
  68. package/build/module/src/hooks.js.map +0 -1
  69. package/build/module/src/index.d.ts +0 -5
  70. package/build/module/src/index.js +0 -6
  71. package/build/module/src/index.js.map +0 -1
  72. package/build/module/src/types.d.ts +0 -35
  73. package/build/module/src/types.js +0 -2
  74. package/build/module/src/types.js.map +0 -1
  75. package/build/module/src/utils/arrayBufferToBase64.d.ts +0 -1
  76. package/build/module/src/utils/arrayBufferToBase64.js +0 -9
  77. package/build/module/src/utils/arrayBufferToBase64.js.map +0 -1
  78. package/build/module/src/utils/calculateMrr.d.ts +0 -45
  79. package/build/module/src/utils/calculateMrr.js +0 -107
  80. package/build/module/src/utils/calculateMrr.js.map +0 -1
  81. package/build/module/src/utils/getMrrDiffReasons.d.ts +0 -15
  82. package/build/module/src/utils/getMrrDiffReasons.js +0 -217
  83. package/build/module/src/utils/getMrrDiffReasons.js.map +0 -1
  84. package/build/module/src/utils/index.d.ts +0 -3
  85. package/build/module/src/utils/index.js +0 -4
  86. package/build/module/src/utils/index.js.map +0 -1
  87. package/build/module/tsconfig.esm.tsbuildinfo +0 -1
  88. package/build/module/utils/getMrrDiffReasons.d.ts +0 -15
  89. package/build/module/utils/getMrrDiffReasons.js +0 -217
  90. package/build/module/utils/getMrrDiffReasons.js.map +0 -1
  91. package/src/utils/getMrrDiffReasons.ts +0 -306
@@ -1,306 +0,0 @@
1
- import { HasuraClient } from '@vrplatform/graphql';
2
- import { groupBy, utc } from '@vrplatform/utils';
3
- import { VRP_TENANT_ID, XIMPLIFI_TENANT_ID } from '../const';
4
-
5
- function printFinancialNumber(number: number, showPlusMinus = true) {
6
- return `${showPlusMinus ? (number >= 0 ? '+' : '-') : ''}$${Math.abs(number)
7
- .toFixed(2)
8
- .toString()
9
- .replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`;
10
- }
11
- function printPlusMinus(number: number) {
12
- return `${number >= 0 ? '+' : '-'}${Math.abs(number)}`;
13
- }
14
-
15
- export async function getMrrDiffReasons(
16
- firstDate: string,
17
- lastDate: string,
18
- client: HasuraClient
19
- ) {
20
- const messages: string[] = [];
21
- messages.push(
22
- `MRR Diff Reasons from ${utc(firstDate).yyyymmdd()} to ${utc(lastDate).yyyymmdd()}`
23
- );
24
- messages.push('--------------------------------');
25
-
26
- const { mrrEvents, listingsEvents } = await client.query((q) => ({
27
- mrrEvents: q
28
- .tracking_event({
29
- where: {
30
- name: { _eq: 'mrr_reported' },
31
- _or: [
32
- {
33
- createdAt: {
34
- _gte: utc(firstDate).yyyymmdd(),
35
- _lte: utc(firstDate).add(1, 'day').yyyymmdd(),
36
- },
37
- },
38
- {
39
- createdAt: {
40
- _gte: utc(lastDate).yyyymmdd(),
41
- _lte: utc(lastDate).add(1, 'day').yyyymmdd(),
42
- },
43
- },
44
- ],
45
- },
46
- })
47
- .map((e) => ({
48
- tenantId: e.tenant?.id,
49
- tenantName: e.tenant?.name,
50
- tenantCreatedAt: e.tenant?.createdAt,
51
- tenantPlan: e.tenant?.billingPlan,
52
- partnerTeamsCreatedFirstDate: e.tenant
53
- ?.clients({
54
- where: {
55
- createdAt: {
56
- _lte: utc(firstDate).yyyymmdd(),
57
- },
58
- },
59
- })
60
- .map((c) => c.id).length,
61
- partnerTeamsCreatedLastDate: e.tenant
62
- ?.clients({
63
- where: {
64
- createdAt: {
65
- _lte: utc(lastDate).yyyymmdd(),
66
- },
67
- },
68
- })
69
- .map((c) => c.id).length,
70
- partnerTeamsCancelledFirstDate: e.tenant
71
- ?.clients({
72
- where: {
73
- cancelledAt: {
74
- _lte: utc(firstDate).yyyymmdd(),
75
- },
76
- },
77
- })
78
- .map((c) => c.id).length,
79
- partnerTeamsCancelledLastDate: e.tenant
80
- ?.clients({
81
- where: {
82
- cancelledAt: {
83
- _lte: utc(lastDate).yyyymmdd(),
84
- },
85
- },
86
- })
87
- .map((c) => c.id).length,
88
- mrr: e.props()?.mrr,
89
- createdAt: utc(e.createdAt).yyyymmdd(),
90
- })),
91
- listingsEvents: q
92
- .tracking_event({
93
- where: {
94
- name: { _eq: 'listings_reported' },
95
- _or: [
96
- {
97
- createdAt: {
98
- _gte: utc(firstDate).yyyymmdd(),
99
- _lte: utc(firstDate).add(1, 'day').yyyymmdd(),
100
- },
101
- },
102
- {
103
- createdAt: {
104
- _gte: utc(lastDate).yyyymmdd(),
105
- _lte: utc(lastDate).add(1, 'day').yyyymmdd(),
106
- },
107
- },
108
- ],
109
- },
110
- })
111
- .map((e) => ({
112
- tenantId: e.tenant?.id,
113
- billingPartnerId: e.tenant?.calculatedBillingPartnerId,
114
- listings: e.props()?.activeListings,
115
- createdAt: utc(e.createdAt).yyyymmdd(),
116
- })),
117
- }));
118
- messages.push(`Found ${mrrEvents.length} mrr events`);
119
-
120
- // join mrr and listings events
121
- const trackingEvents = mrrEvents
122
- .filter((e) => e.tenantId)
123
- .map((e) => {
124
- const filteredEvents = listingsEvents.filter((l) => {
125
- if (!l.billingPartnerId || !l.tenantId) return false;
126
- const tenantId = [VRP_TENANT_ID, XIMPLIFI_TENANT_ID].includes(
127
- l.billingPartnerId
128
- )
129
- ? l.tenantId
130
- : l.billingPartnerId;
131
-
132
- return tenantId === e.tenantId && l.createdAt === e.createdAt;
133
- });
134
-
135
- return {
136
- ...e,
137
- listings: filteredEvents.reduce((acc, l) => acc + (l.listings ?? 0), 0),
138
- };
139
- });
140
-
141
- // get list of tenants
142
- const tenants: Record<
143
- string,
144
- {
145
- id: string;
146
- name?: string;
147
- plan?: string;
148
- activePartnerTeamsDiff: number;
149
- mrrFirstDate?: number;
150
- mrrLastDate?: number;
151
- mrrDiff: number;
152
- listingsFirstDate?: number;
153
- listingsLastDate?: number;
154
- listingsDiff: number;
155
- createdAt: string;
156
- isNew: boolean;
157
- hasCancelled?: boolean;
158
- }
159
- > = {};
160
- for (const event of trackingEvents) {
161
- if (!event.tenantId) continue;
162
- if (!tenants[event.tenantId]) {
163
- const partnerTeamsCreatedDiff =
164
- (event.partnerTeamsCreatedLastDate || 0) -
165
- (event.partnerTeamsCreatedFirstDate || 0);
166
- const partnerTeamsCancelledDiff =
167
- (event.partnerTeamsCancelledLastDate || 0) -
168
- (event.partnerTeamsCancelledFirstDate || 0);
169
-
170
- tenants[event.tenantId] = {
171
- id: event.tenantId,
172
- name: event.tenantName,
173
- plan: event.tenantPlan,
174
- activePartnerTeamsDiff:
175
- partnerTeamsCreatedDiff - partnerTeamsCancelledDiff,
176
- mrrFirstDate: undefined,
177
- mrrLastDate: undefined,
178
- mrrDiff: 0,
179
- listingsFirstDate: undefined,
180
- listingsLastDate: undefined,
181
- listingsDiff: 0,
182
- createdAt: utc(event.tenantCreatedAt).yyyymmdd(),
183
- isNew: utc(event.tenantCreatedAt).isBetween(
184
- utc(firstDate),
185
- utc(lastDate)
186
- ),
187
- };
188
- }
189
-
190
- if (event.createdAt === firstDate) {
191
- tenants[event.tenantId].mrrFirstDate = event.mrr;
192
- tenants[event.tenantId].listingsFirstDate = event.listings;
193
- }
194
- if (event.createdAt === lastDate) {
195
- tenants[event.tenantId].mrrLastDate = event.mrr;
196
- tenants[event.tenantId].listingsLastDate = event.listings;
197
- }
198
- }
199
-
200
- const result = Object.values(tenants)
201
- .map(
202
- ({
203
- mrrFirstDate,
204
- mrrLastDate,
205
- listingsFirstDate,
206
- listingsLastDate,
207
- ...t
208
- }) => ({
209
- ...t,
210
- mrrDiff: (mrrLastDate ?? 0) - (mrrFirstDate ?? 0),
211
- listingsDiff: (listingsLastDate ?? 0) - (listingsFirstDate ?? 0),
212
- hasCancelled: mrrFirstDate !== undefined && mrrLastDate === undefined,
213
- })
214
- )
215
- .filter((t) => t.mrrDiff)
216
- .sort((a, b) => b.mrrDiff - a.mrrDiff)
217
- .reverse();
218
-
219
- // calculate summ of mrr per day
220
- const groupedEvents = groupBy(trackingEvents, (e) => e.createdAt);
221
- const summedMrrPerDay = Object.entries(groupedEvents)
222
- .map(([date, events]) => {
223
- const typedEvents = events as typeof trackingEvents;
224
- const mrr = typedEvents.reduce((acc, e) => acc + (e.mrr ?? 0), 0);
225
- const listings = typedEvents.reduce(
226
- (acc, e) => acc + (e.listings ?? 0),
227
- 0
228
- );
229
-
230
- return {
231
- date,
232
- mrr,
233
- count: typedEvents.length,
234
- listings,
235
- };
236
- })
237
- .sort((a, b) => utc(b.date).diff(utc(a.date)));
238
- messages.push(
239
- `MRR sum changed from ${printFinancialNumber(summedMrrPerDay[1].mrr, false)} to ${printFinancialNumber(summedMrrPerDay[0].mrr, false)} (${printFinancialNumber(summedMrrPerDay[0].mrr - summedMrrPerDay[1].mrr)})`
240
- );
241
- messages.push(
242
- `MRR Reports changed from ${summedMrrPerDay[1].count.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')} to ${summedMrrPerDay[0].count.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')} (${printPlusMinus(summedMrrPerDay[0].count - summedMrrPerDay[1].count)})`
243
- );
244
- messages.push(
245
- `Active Listings changed from ${summedMrrPerDay[1].listings.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')} to ${summedMrrPerDay[0].listings.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')} (${printPlusMinus(summedMrrPerDay[0].listings - summedMrrPerDay[1].listings)})`
246
- );
247
- messages.push(
248
- `Active Partner Teams changed by ${printPlusMinus(
249
- result.reduce((acc, t) => acc + t.activePartnerTeamsDiff, 0)
250
- )}`
251
- );
252
- messages.push();
253
-
254
- const cancelledTenants = result.filter((t) => t.hasCancelled);
255
- const legacyTenants = result.filter(
256
- (t) =>
257
- t.plan?.includes('Legacy') &&
258
- !cancelledTenants.map((t) => t.id).includes(t.id)
259
- );
260
- const newTenants = result.filter(
261
- (t) =>
262
- t.isNew &&
263
- !cancelledTenants.map((t) => t.id).includes(t.id) &&
264
- !legacyTenants.map((t) => t.id).includes(t.id)
265
- );
266
- const activeListings = result.filter(
267
- (t) =>
268
- t.listingsDiff &&
269
- !newTenants.map((t) => t.id).includes(t.id) &&
270
- !cancelledTenants.map((t) => t.id).includes(t.id) &&
271
- !legacyTenants.map((t) => t.id).includes(t.id)
272
- );
273
- const otherTenants = result.filter(
274
- (t) =>
275
- !newTenants.map((t) => t.id).includes(t.id) &&
276
- !cancelledTenants.map((t) => t.id).includes(t.id) &&
277
- !legacyTenants.map((t) => t.id).includes(t.id) &&
278
- !activeListings.map((t) => t.id).includes(t.id)
279
- );
280
- const total =
281
- newTenants.reduce((acc, t) => acc + t.mrrDiff, 0) +
282
- cancelledTenants.reduce((acc, t) => acc + t.mrrDiff, 0) +
283
- legacyTenants.reduce((acc, t) => acc + t.mrrDiff, 0) +
284
- activeListings.reduce((acc, t) => acc + t.mrrDiff, 0) +
285
- otherTenants.reduce((acc, t) => acc + t.mrrDiff, 0);
286
- messages.push(
287
- `MRR from ${newTenants.length} new tenants: ${printFinancialNumber(newTenants.reduce((acc, t) => acc + t.mrrDiff, 0))}`
288
- );
289
- messages.push(
290
- `MRR from ${cancelledTenants.length} cancelled tenants: ${printFinancialNumber(cancelledTenants.reduce((acc, t) => acc + t.mrrDiff, 0))}`
291
- );
292
- messages.push(
293
- `MRR from ${legacyTenants.length} tenants with Legacy plans: ${printFinancialNumber(legacyTenants.reduce((acc, t) => acc + t.mrrDiff, 0))}`
294
- );
295
- messages.push(
296
- `MRR from ${activeListings.length} tenants with active listings changes: ${printFinancialNumber(activeListings.reduce((acc, t) => acc + t.mrrDiff, 0))}`
297
- );
298
- messages.push(
299
- `MRR from ${otherTenants.length} other tenants: ${printFinancialNumber(
300
- otherTenants.reduce((acc, t) => acc + t.mrrDiff, 0)
301
- )} (${otherTenants.map((t) => `${t.name} (${printFinancialNumber(t.mrrDiff)})`).join(', ')})`
302
- );
303
- messages.push(`= ${printFinancialNumber(total)}`);
304
-
305
- return { messages, result };
306
- }