@openmeter/sdk 1.0.0-beta.1 → 1.0.0-beta.101

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 (81) hide show
  1. package/README.md +276 -26
  2. package/dist/cjs/clients/client.cjs +120 -0
  3. package/dist/cjs/clients/client.d.cts +40 -0
  4. package/dist/cjs/clients/client.js.map +1 -0
  5. package/dist/cjs/clients/entitlement.cjs +27 -0
  6. package/dist/cjs/clients/entitlement.d.cts +25 -0
  7. package/dist/cjs/clients/entitlement.js.map +1 -0
  8. package/dist/cjs/clients/event.cjs +71 -0
  9. package/dist/cjs/clients/event.d.cts +79 -0
  10. package/dist/cjs/clients/event.js.map +1 -0
  11. package/dist/cjs/clients/feature.cjs +75 -0
  12. package/dist/cjs/clients/feature.d.cts +40 -0
  13. package/dist/cjs/clients/feature.js.map +1 -0
  14. package/dist/cjs/clients/grant.cjs +27 -0
  15. package/dist/cjs/clients/grant.d.cts +15 -0
  16. package/dist/cjs/clients/grant.js.map +1 -0
  17. package/dist/cjs/clients/meter.cjs +69 -0
  18. package/dist/cjs/clients/meter.d.cts +75 -0
  19. package/dist/cjs/clients/meter.js.map +1 -0
  20. package/dist/cjs/clients/portal.cjs +41 -0
  21. package/dist/cjs/clients/portal.d.cts +22 -0
  22. package/dist/cjs/clients/portal.js.map +1 -0
  23. package/dist/cjs/clients/subject.cjs +226 -0
  24. package/dist/cjs/clients/subject.d.cts +117 -0
  25. package/dist/cjs/clients/subject.js.map +1 -0
  26. package/dist/cjs/index.cjs +33 -0
  27. package/dist/cjs/index.d.cts +21 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/schemas/openapi.cjs +7 -0
  30. package/dist/cjs/schemas/openapi.d.cts +2078 -0
  31. package/dist/cjs/schemas/openapi.js.map +1 -0
  32. package/dist/cjs/test/agent.cjs +470 -0
  33. package/dist/cjs/test/agent.d.cts +2 -0
  34. package/dist/cjs/test/agent.js.map +1 -0
  35. package/dist/cjs/test/mocks.cjs +152 -0
  36. package/dist/cjs/test/mocks.d.cts +25 -0
  37. package/dist/cjs/test/mocks.js.map +1 -0
  38. package/dist/cjs/tsconfig.68d5eed0.tsbuildinfo +1 -0
  39. package/dist/cjs/tsconfig.ae38b1d6.tsbuildinfo +1 -0
  40. package/dist/clients/client.d.ts +3 -3
  41. package/dist/clients/client.js +24 -10
  42. package/dist/clients/client.js.map +1 -0
  43. package/dist/clients/entitlement.d.ts +25 -0
  44. package/dist/clients/entitlement.js +23 -0
  45. package/dist/clients/entitlement.js.map +1 -0
  46. package/dist/clients/event.d.ts +16 -2
  47. package/dist/clients/event.js +44 -18
  48. package/dist/clients/event.js.map +1 -0
  49. package/dist/clients/feature.d.ts +40 -0
  50. package/dist/clients/feature.js +71 -0
  51. package/dist/clients/feature.js.map +1 -0
  52. package/dist/clients/grant.d.ts +15 -0
  53. package/dist/clients/grant.js +23 -0
  54. package/dist/clients/grant.js.map +1 -0
  55. package/dist/clients/meter.d.ts +30 -7
  56. package/dist/clients/meter.js +17 -4
  57. package/dist/clients/meter.js.map +1 -0
  58. package/dist/clients/portal.d.ts +22 -0
  59. package/dist/clients/portal.js +37 -0
  60. package/dist/clients/portal.js.map +1 -0
  61. package/dist/clients/subject.d.ts +117 -0
  62. package/dist/clients/subject.js +222 -0
  63. package/dist/clients/subject.js.map +1 -0
  64. package/dist/index.d.ts +12 -2
  65. package/dist/index.js +16 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/schemas/openapi.d.ts +1876 -212
  68. package/dist/schemas/openapi.js +1 -0
  69. package/dist/schemas/openapi.js.map +1 -0
  70. package/dist/test/agent.js +394 -32
  71. package/dist/test/agent.js.map +1 -0
  72. package/dist/test/mocks.d.ts +15 -1
  73. package/dist/test/mocks.js +136 -8
  74. package/dist/test/mocks.js.map +1 -0
  75. package/dist/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +65 -51
  77. package/clients/client.ts +0 -153
  78. package/clients/event.ts +0 -109
  79. package/clients/meter.ts +0 -84
  80. package/index.ts +0 -17
  81. package/schemas/openapi.ts +0 -421
@@ -3,3 +3,4 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export {};
6
+ //# sourceMappingURL=openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../schemas/openapi.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,13 +1,15 @@
1
1
  import { MockAgent } from 'undici';
2
- import { mockMeter, mockMeterValue } from './mocks.js';
2
+ import { mockCreateEntitlementInput, mockCreateFeatureInput, mockEntitlement, mockEntitlementGrant, mockEntitlementGrantCreateInput, mockEntitlementValue, mockEvent, mockFeature, mockMeter, mockMeterValue, mockSubject, mockWindowedBalanceHistory, } from './mocks.js';
3
3
  export const mockAgent = new MockAgent();
4
4
  mockAgent.disableNetConnect();
5
5
  const client = mockAgent.get('http://127.0.0.1:8888');
6
- client.intercept({
6
+ /** Event */
7
+ client
8
+ .intercept({
7
9
  path: '/api/v1/events',
8
10
  method: 'POST',
9
11
  headers: {
10
- 'Accept': 'application/json',
12
+ Accept: 'application/json',
11
13
  'Content-Type': 'application/cloudevents+json',
12
14
  },
13
15
  body: JSON.stringify({
@@ -20,14 +22,56 @@ client.intercept({
20
22
  data: {
21
23
  api_calls: 1,
22
24
  },
23
- })
25
+ }),
24
26
  })
25
27
  .reply(204);
26
- client.intercept({
28
+ // Batch ingest
29
+ client
30
+ .intercept({
27
31
  path: '/api/v1/events',
28
32
  method: 'POST',
29
33
  headers: {
30
- 'Accept': 'application/json',
34
+ Accept: 'application/json',
35
+ 'Content-Type': 'application/cloudevents-batch+json',
36
+ },
37
+ body: JSON.stringify([
38
+ {
39
+ specversion: '1.0',
40
+ id: 'id-1',
41
+ source: 'my-app',
42
+ type: 'my-type',
43
+ subject: 'my-awesome-user-id',
44
+ time: new Date('2023-01-01'),
45
+ data: {
46
+ api_calls: 1,
47
+ },
48
+ },
49
+ ]),
50
+ })
51
+ .reply(204);
52
+ client
53
+ .intercept({
54
+ path: `/api/v1/events`,
55
+ method: 'GET',
56
+ headers: {
57
+ Accept: 'application/json',
58
+ },
59
+ })
60
+ .reply(200, [
61
+ {
62
+ event: mockEvent,
63
+ },
64
+ ], {
65
+ headers: {
66
+ 'Content-Type': 'application/json',
67
+ },
68
+ });
69
+ client
70
+ .intercept({
71
+ path: '/api/v1/events',
72
+ method: 'POST',
73
+ headers: {
74
+ Accept: 'application/json',
31
75
  'Content-Type': 'application/cloudevents+json',
32
76
  },
33
77
  body: JSON.stringify({
@@ -39,67 +83,385 @@ client.intercept({
39
83
  data: {
40
84
  api_calls: 1,
41
85
  },
42
- })
86
+ }),
43
87
  })
44
88
  .reply(204);
45
- client.intercept({
89
+ /** Portal */
90
+ client
91
+ .intercept({
46
92
  path: '/api/v1/meters',
47
93
  method: 'GET',
48
94
  headers: {
49
- 'Accept': 'application/json'
50
- }
95
+ Accept: 'application/json',
96
+ },
51
97
  })
52
98
  .reply(200, [mockMeter], {
53
99
  headers: {
54
- 'Content-Type': 'application/json'
55
- }
100
+ 'Content-Type': 'application/json',
101
+ },
56
102
  });
57
- client.intercept({
103
+ client
104
+ .intercept({
58
105
  path: `/api/v1/meters/${mockMeter.slug}`,
59
106
  method: 'GET',
60
107
  headers: {
61
- 'Accept': 'application/json'
62
- }
108
+ Accept: 'application/json',
109
+ },
63
110
  })
64
111
  .reply(200, mockMeter, {
65
112
  headers: {
66
- 'Content-Type': 'application/json'
67
- }
113
+ 'Content-Type': 'application/json',
114
+ },
68
115
  });
69
- client.intercept({
70
- path: `/api/v1/meters/${mockMeter.slug}/values`,
116
+ /** Meter Query */
117
+ client
118
+ .intercept({
119
+ path: `/api/v1/meters/${mockMeter.slug}/query`,
71
120
  query: {},
72
121
  method: 'GET',
73
122
  headers: {
74
- 'Accept': 'application/json'
75
- }
123
+ Accept: 'application/json',
124
+ },
76
125
  })
77
126
  .reply(200, {
127
+ from: mockMeterValue.windowStart,
128
+ to: mockMeterValue.windowEnd,
78
129
  windowSize: 'HOUR',
79
- data: [mockMeterValue]
130
+ data: [mockMeterValue],
80
131
  }, {
81
132
  headers: {
82
- 'Content-Type': 'application/json'
83
- }
133
+ 'Content-Type': 'application/json',
134
+ },
84
135
  });
85
- client.intercept({
86
- path: `/api/v1/meters/${mockMeter.slug}/values`,
136
+ client
137
+ .intercept({
138
+ path: `/api/v1/meters/${mockMeter.slug}/query`,
87
139
  query: {
88
140
  subject: 'user-1',
141
+ groupBy: ['a', 'b'],
89
142
  from: new Date('2021-01-01').toISOString(),
90
143
  to: new Date('2021-01-02').toISOString(),
91
- windowSize: 'HOUR'
144
+ windowSize: 'HOUR',
145
+ 'filterGroupBy[model]': 'gpt-4',
92
146
  },
93
147
  method: 'GET',
94
148
  headers: {
95
- 'Accept': 'application/json'
96
- }
149
+ Accept: 'application/json',
150
+ },
97
151
  })
98
152
  .reply(200, {
153
+ from: mockMeterValue.windowStart,
154
+ to: mockMeterValue.windowEnd,
99
155
  windowSize: 'HOUR',
100
- data: [mockMeterValue]
156
+ data: [mockMeterValue],
101
157
  }, {
102
158
  headers: {
103
- 'Content-Type': 'application/json'
104
- }
159
+ 'Content-Type': 'application/json',
160
+ },
161
+ });
162
+ /** Meter Subjects */
163
+ client
164
+ .intercept({
165
+ path: `/api/v1/meters/${mockMeter.slug}/subjects`,
166
+ method: 'GET',
167
+ headers: {
168
+ Accept: 'application/json',
169
+ },
170
+ })
171
+ .reply(200, [mockMeterValue.subject], {
172
+ headers: {
173
+ 'Content-Type': 'application/json',
174
+ },
175
+ });
176
+ /** Portal */
177
+ client
178
+ .intercept({
179
+ path: '/api/v1/portal/tokens',
180
+ method: 'POST',
181
+ headers: {
182
+ Accept: 'application/json',
183
+ 'Content-Type': 'application/json',
184
+ },
185
+ body: JSON.stringify({
186
+ subject: 'customer-1',
187
+ }),
188
+ })
189
+ .reply(201, {
190
+ subject: 'customer-1',
191
+ expiresAt: new Date('2023-01-01'),
192
+ }, {
193
+ headers: {
194
+ 'Content-Type': 'application/json',
195
+ },
196
+ });
197
+ client
198
+ .intercept({
199
+ path: '/api/v1/portal/tokens/invalidate',
200
+ method: 'POST',
201
+ headers: {
202
+ Accept: 'application/json',
203
+ 'Content-Type': 'application/json',
204
+ },
205
+ body: JSON.stringify({}),
206
+ })
207
+ .reply(204);
208
+ /** Subjects */
209
+ client
210
+ .intercept({
211
+ path: '/api/v1/subjects',
212
+ method: 'POST',
213
+ headers: {
214
+ Accept: 'application/json',
215
+ 'Content-Type': 'application/json',
216
+ },
217
+ body: JSON.stringify([
218
+ {
219
+ key: mockSubject.key,
220
+ displayName: mockSubject.displayName,
221
+ metadata: mockSubject.metadata,
222
+ },
223
+ ]),
224
+ })
225
+ .reply(200, [mockSubject], {
226
+ headers: {
227
+ 'Content-Type': 'application/json',
228
+ },
229
+ });
230
+ client
231
+ .intercept({
232
+ path: '/api/v1/subjects',
233
+ method: 'GET',
234
+ headers: {
235
+ Accept: 'application/json',
236
+ },
237
+ })
238
+ .reply(200, [mockSubject], {
239
+ headers: {
240
+ 'Content-Type': 'application/json',
241
+ },
242
+ });
243
+ client
244
+ .intercept({
245
+ path: `/api/v1/subjects/${mockSubject.key}`,
246
+ method: 'GET',
247
+ headers: {
248
+ Accept: 'application/json',
249
+ },
250
+ })
251
+ .reply(200, mockSubject, {
252
+ headers: {
253
+ 'Content-Type': 'application/json',
254
+ },
255
+ });
256
+ client
257
+ .intercept({
258
+ path: `/api/v1/subjects/${mockSubject.key}`,
259
+ method: 'DELETE',
260
+ headers: {
261
+ Accept: 'application/json',
262
+ },
263
+ })
264
+ .reply(204);
265
+ /** Subject Entitlements */
266
+ client
267
+ .intercept({
268
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements`,
269
+ method: 'POST',
270
+ headers: {
271
+ Accept: 'application/json',
272
+ 'Content-Type': 'application/json',
273
+ },
274
+ body: JSON.stringify(mockCreateEntitlementInput),
275
+ })
276
+ .reply(201, mockEntitlement, {
277
+ headers: {
278
+ 'Content-Type': 'application/json',
279
+ },
280
+ });
281
+ client
282
+ .intercept({
283
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements`,
284
+ method: 'GET',
285
+ headers: {
286
+ Accept: 'application/json',
287
+ },
288
+ })
289
+ .reply(200, [mockEntitlement], {
290
+ headers: {
291
+ 'Content-Type': 'application/json',
292
+ },
293
+ });
294
+ client
295
+ .intercept({
296
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}`,
297
+ method: 'GET',
298
+ headers: {
299
+ Accept: 'application/json',
300
+ },
301
+ })
302
+ .reply(200, mockEntitlement, {
303
+ headers: {
304
+ 'Content-Type': 'application/json',
305
+ },
306
+ });
307
+ client
308
+ .intercept({
309
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}`,
310
+ method: 'DELETE',
311
+ headers: {
312
+ Accept: 'application/json',
313
+ },
314
+ })
315
+ .reply(204);
316
+ client
317
+ .intercept({
318
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}/value`,
319
+ method: 'GET',
320
+ headers: {
321
+ Accept: 'application/json',
322
+ },
323
+ })
324
+ .reply(200, mockEntitlementValue, {
325
+ headers: {
326
+ 'Content-Type': 'application/json',
327
+ },
328
+ });
329
+ client
330
+ .intercept({
331
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}/history`,
332
+ method: 'GET',
333
+ headers: {
334
+ Accept: 'application/json',
335
+ },
336
+ })
337
+ .reply(200, mockWindowedBalanceHistory, {
338
+ headers: {
339
+ 'Content-Type': 'application/json',
340
+ },
341
+ });
342
+ client
343
+ .intercept({
344
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}/reset`,
345
+ method: 'POST',
346
+ headers: {
347
+ Accept: 'application/json',
348
+ 'Content-Type': 'application/json',
349
+ },
350
+ body: JSON.stringify({
351
+ retainAnchor: true,
352
+ }),
353
+ })
354
+ .reply(204, mockEntitlement, {
355
+ headers: {
356
+ 'Content-Type': 'application/json',
357
+ },
358
+ });
359
+ /** Subject Entitlement Grants */
360
+ client
361
+ .intercept({
362
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}/grants`,
363
+ method: 'POST',
364
+ headers: {
365
+ Accept: 'application/json',
366
+ 'Content-Type': 'application/json',
367
+ },
368
+ body: JSON.stringify(mockEntitlementGrantCreateInput),
369
+ })
370
+ .reply(201, mockEntitlementGrant, {
371
+ headers: {
372
+ 'Content-Type': 'application/json',
373
+ },
374
+ });
375
+ client
376
+ .intercept({
377
+ path: `/api/v1/subjects/${mockSubject.key}/entitlements/${mockFeature.key}/grants`,
378
+ method: 'GET',
379
+ headers: {
380
+ Accept: 'application/json',
381
+ },
382
+ })
383
+ .reply(200, [mockEntitlementGrant], {
384
+ headers: {
385
+ 'Content-Type': 'application/json',
386
+ },
387
+ });
388
+ /** Features */
389
+ client
390
+ .intercept({
391
+ path: '/api/v1/features',
392
+ method: 'POST',
393
+ headers: {
394
+ Accept: 'application/json',
395
+ 'Content-Type': 'application/json',
396
+ },
397
+ body: JSON.stringify(mockCreateFeatureInput),
398
+ })
399
+ .reply(201, mockFeature, {
400
+ headers: {
401
+ 'Content-Type': 'application/json',
402
+ },
403
+ });
404
+ client
405
+ .intercept({
406
+ path: '/api/v1/features',
407
+ method: 'GET',
408
+ headers: {
409
+ Accept: 'application/json',
410
+ },
411
+ })
412
+ .reply(200, [mockFeature], {
413
+ headers: {
414
+ 'Content-Type': 'application/json',
415
+ },
416
+ });
417
+ client
418
+ .intercept({
419
+ path: `/api/v1/features/${mockFeature.key}`,
420
+ method: 'GET',
421
+ headers: {
422
+ Accept: 'application/json',
423
+ },
424
+ })
425
+ .reply(200, mockFeature, {
426
+ headers: {
427
+ 'Content-Type': 'application/json',
428
+ },
429
+ });
430
+ client
431
+ .intercept({
432
+ path: `/api/v1/features/${mockFeature.key}`,
433
+ method: 'DELETE',
434
+ headers: {
435
+ Accept: 'application/json',
436
+ },
437
+ })
438
+ .reply(204);
439
+ /** Entitlements */
440
+ client
441
+ .intercept({
442
+ path: '/api/v1/entitlements',
443
+ method: 'GET',
444
+ headers: {
445
+ Accept: 'application/json',
446
+ },
447
+ })
448
+ .reply(200, [mockEntitlement], {
449
+ headers: {
450
+ 'Content-Type': 'application/json',
451
+ },
452
+ });
453
+ /** Grants */
454
+ client
455
+ .intercept({
456
+ path: '/api/v1/grants',
457
+ method: 'GET',
458
+ headers: {
459
+ Accept: 'application/json',
460
+ },
461
+ })
462
+ .reply(200, [mockEntitlementGrant], {
463
+ headers: {
464
+ 'Content-Type': 'application/json',
465
+ },
105
466
  });
467
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../test/agent.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- import { Meter } from "../index.js";
1
+ import { Entitlement, EntitlementCreateInputs, EntitlementValue, WindowedBalanceHistory } from '../clients/entitlement.js';
2
+ import { Feature, FeatureCreateInputs } from '../clients/feature.js';
3
+ import { EntitlementGrant, EntitlementGrantCreateInput } from '../clients/grant.js';
4
+ import { Subject } from '../clients/subject.js';
5
+ import { Event, Meter } from '../index.js';
6
+ export declare const mockEvent: Event;
2
7
  export declare const mockMeter: Meter;
3
8
  export declare const mockMeterValue: {
4
9
  subject: string;
@@ -9,3 +14,12 @@ export declare const mockMeterValue: {
9
14
  method: string;
10
15
  };
11
16
  };
17
+ export declare const mockSubject: Subject;
18
+ export declare const mockCreateFeatureInput: FeatureCreateInputs;
19
+ export declare const mockFeature: Feature;
20
+ export declare const mockCreateEntitlementInput: EntitlementCreateInputs;
21
+ export declare const mockEntitlement: Entitlement;
22
+ export declare const mockEntitlementValue: EntitlementValue;
23
+ export declare const mockWindowedBalanceHistory: WindowedBalanceHistory;
24
+ export declare const mockEntitlementGrantCreateInput: EntitlementGrantCreateInput;
25
+ export declare const mockEntitlementGrant: EntitlementGrant;
@@ -1,14 +1,25 @@
1
- import { WindowSize } from "../index.js";
1
+ import { WindowSize } from '../index.js';
2
+ export const mockEvent = {
3
+ specversion: '1.0',
4
+ id: 'id-1',
5
+ source: 'my-app',
6
+ type: 'my-type',
7
+ subject: 'my-awesome-user-id',
8
+ time: new Date('2023-01-01'),
9
+ data: {
10
+ api_calls: 1,
11
+ },
12
+ };
2
13
  export const mockMeter = {
3
- slug: "m1",
4
- aggregation: "SUM",
5
- eventType: "api_requests",
6
- valueProperty: "$.duration_ms",
14
+ slug: 'm1',
15
+ aggregation: 'SUM',
16
+ eventType: 'api_requests',
17
+ valueProperty: '$.duration_ms',
7
18
  windowSize: WindowSize.HOUR,
8
19
  groupBy: {
9
20
  method: '$.method',
10
21
  path: '$.path',
11
- }
22
+ },
12
23
  };
13
24
  export const mockMeterValue = {
14
25
  subject: 'customer-1',
@@ -16,6 +27,123 @@ export const mockMeterValue = {
16
27
  windowEnd: '2023-01-01T01:00:00.001Z',
17
28
  value: 1,
18
29
  groupBy: {
19
- method: 'GET'
20
- }
30
+ method: 'GET',
31
+ },
32
+ };
33
+ export const mockSubject = {
34
+ id: 'abcde',
35
+ key: 'customer-1',
36
+ displayName: 'Customer 1',
37
+ metadata: {
38
+ foo: 'bar',
39
+ },
40
+ };
41
+ export const mockCreateFeatureInput = {
42
+ key: 'ai_tokens',
43
+ name: 'AI Tokens',
44
+ meterSlug: 'tokens_total',
45
+ };
46
+ export const mockFeature = {
47
+ ...mockCreateFeatureInput,
48
+ id: 'feature-1',
49
+ createdAt: '2024-01-01T00:00:00Z',
50
+ updatedAt: '2024-01-01T00:00:00Z',
51
+ };
52
+ export const mockCreateEntitlementInput = {
53
+ type: 'metered',
54
+ featureKey: mockFeature.key,
55
+ usagePeriod: {
56
+ interval: 'MONTH',
57
+ },
58
+ issueAfterReset: 10000000,
59
+ };
60
+ export const mockEntitlement = {
61
+ type: 'metered',
62
+ id: 'entitlement-1',
63
+ featureId: mockFeature.id,
64
+ featureKey: mockFeature.key,
65
+ subjectKey: mockSubject.key,
66
+ usagePeriod: {
67
+ interval: mockCreateEntitlementInput.usagePeriod.interval,
68
+ anchor: '2024-01-01T00:00:00Z',
69
+ },
70
+ currentUsagePeriod: {
71
+ from: '2024-01-01T00:00:00Z',
72
+ to: '2024-01-01T00:00:00Z',
73
+ },
74
+ issueAfterReset: mockCreateEntitlementInput.issueAfterReset,
75
+ lastReset: '2024-01-01T00:00:00Z',
76
+ createdAt: '2024-01-01T00:00:00Z',
77
+ updatedAt: '2024-01-01T00:00:00Z',
78
+ };
79
+ export const mockEntitlementValue = {
80
+ hasAccess: true,
81
+ usage: 100,
82
+ balance: 900,
83
+ overage: 0,
84
+ };
85
+ export const mockWindowedBalanceHistory = {
86
+ windowedHistory: [
87
+ {
88
+ period: {
89
+ from: '2024-01-01T00:00:00Z',
90
+ to: '2024-01-01T00:00:00Z',
91
+ },
92
+ usage: 100,
93
+ balanceAtStart: 100,
94
+ },
95
+ ],
96
+ burndownHistory: [
97
+ {
98
+ period: {
99
+ from: '2024-01-01T00:00:00Z',
100
+ to: '2024-01-01T00:00:00Z',
101
+ },
102
+ usage: 100,
103
+ overage: 25,
104
+ balanceAtStart: 100,
105
+ grantBalancesAtStart: {
106
+ '01ARZ3NDEKTSV4RRFFQ69G5FAV': 100,
107
+ },
108
+ balanceAtEnd: 100,
109
+ grantBalancesAtEnd: {
110
+ '01ARZ3NDEKTSV4RRFFQ69G5FAV': 100,
111
+ },
112
+ grantUsages: [
113
+ {
114
+ grantId: '01ARZ3NDEKTSV4RRFFQ69G5FAV',
115
+ usage: 100,
116
+ },
117
+ ],
118
+ },
119
+ ],
120
+ };
121
+ export const mockEntitlementGrantCreateInput = {
122
+ amount: 100,
123
+ priority: 1,
124
+ effectiveAt: '2023-01-01T00:00:00Z',
125
+ expiration: {
126
+ duration: 'HOUR',
127
+ count: 12,
128
+ },
129
+ minRolloverAmount: 100,
130
+ maxRolloverAmount: 100,
131
+ recurrence: {
132
+ interval: 'MONTH',
133
+ anchor: '2024-06-28T18:29:44.867Z',
134
+ },
135
+ };
136
+ export const mockEntitlementGrant = {
137
+ ...mockEntitlementGrantCreateInput,
138
+ recurrence: {
139
+ interval: 'MONTH',
140
+ anchor: '2024-06-28T18:29:44.867Z',
141
+ },
142
+ id: '01ARZ3NDEKTSV4RRFFQ69G5FAV',
143
+ entitlementId: mockEntitlement.id,
144
+ nextRecurrence: '2023-01-01T00:00:00Z',
145
+ expiresAt: '2023-01-01T00:00:00Z',
146
+ createdAt: '2023-01-01T00:00:00Z',
147
+ updatedAt: '2023-01-01T00:00:00Z',
21
148
  };
149
+ //# sourceMappingURL=mocks.js.map