@openmeter/sdk 1.0.0-beta.6 → 1.0.0-beta.62

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 (60) hide show
  1. package/README.md +76 -1
  2. package/dist/cjs/clients/client.js +194 -0
  3. package/dist/cjs/clients/client.js.map +1 -0
  4. package/dist/cjs/clients/event.js +137 -0
  5. package/dist/cjs/clients/event.js.map +1 -0
  6. package/dist/cjs/clients/meter.js +139 -0
  7. package/dist/cjs/clients/meter.js.map +1 -0
  8. package/dist/cjs/clients/portal.js +109 -0
  9. package/dist/cjs/clients/portal.js.map +1 -0
  10. package/dist/cjs/clients/subject.js +141 -0
  11. package/dist/cjs/clients/subject.js.map +1 -0
  12. package/dist/cjs/index.js +21 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/schemas/openapi.js +7 -0
  15. package/dist/cjs/schemas/openapi.js.map +1 -0
  16. package/dist/cjs/test/agent.js +266 -0
  17. package/dist/cjs/test/agent.js.map +1 -0
  18. package/dist/cjs/test/mocks.js +44 -0
  19. package/dist/cjs/test/mocks.js.map +1 -0
  20. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  21. package/dist/esm/clients/client.js +191 -0
  22. package/dist/esm/clients/client.js.map +1 -0
  23. package/dist/esm/clients/event.js +131 -0
  24. package/dist/esm/clients/event.js.map +1 -0
  25. package/dist/esm/clients/meter.js +136 -0
  26. package/dist/esm/clients/meter.js.map +1 -0
  27. package/dist/esm/clients/portal.js +106 -0
  28. package/dist/esm/clients/portal.js.map +1 -0
  29. package/dist/esm/clients/subject.js +138 -0
  30. package/dist/esm/clients/subject.js.map +1 -0
  31. package/dist/esm/index.js +16 -0
  32. package/dist/esm/index.js.map +1 -0
  33. package/dist/{schemas → esm/schemas}/openapi.js +1 -0
  34. package/dist/esm/schemas/openapi.js.map +1 -0
  35. package/dist/{test → esm/test}/agent.js +123 -31
  36. package/dist/esm/test/agent.js.map +1 -0
  37. package/dist/esm/test/mocks.js +41 -0
  38. package/dist/esm/test/mocks.js.map +1 -0
  39. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  40. package/dist/{clients → types/clients}/client.d.ts +2 -3
  41. package/dist/{clients → types/clients}/event.d.ts +16 -2
  42. package/dist/{clients → types/clients}/meter.d.ts +12 -32
  43. package/dist/types/clients/portal.d.ts +22 -0
  44. package/dist/types/clients/subject.d.ts +27 -0
  45. package/dist/{index.d.ts → types/index.d.ts} +6 -2
  46. package/dist/types/schemas/openapi.d.ts +990 -0
  47. package/dist/{test → types/test}/mocks.d.ts +4 -1
  48. package/index.ts +8 -7
  49. package/package.json +37 -33
  50. package/tsconfig.base.json +24 -0
  51. package/tsconfig.cjs.json +8 -0
  52. package/tsconfig.esm.json +8 -0
  53. package/dist/clients/client.js +0 -104
  54. package/dist/clients/event.js +0 -39
  55. package/dist/clients/meter.js +0 -79
  56. package/dist/index.js +0 -11
  57. package/dist/schemas/openapi.d.ts +0 -505
  58. package/dist/test/mocks.js +0 -21
  59. package/dist/tsconfig.tsbuildinfo +0 -1
  60. /package/dist/{test → types/test}/agent.d.ts +0 -0
@@ -0,0 +1,106 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import { BaseClient } from './client.js';
53
+ var PortalClient = /** @class */ (function (_super) {
54
+ __extends(PortalClient, _super);
55
+ function PortalClient(config) {
56
+ return _super.call(this, config) || this;
57
+ }
58
+ /**
59
+ * Create portal token
60
+ * Useful for creating a token sharable with your customer to query their own usage
61
+ */
62
+ PortalClient.prototype.createToken = function (token, options) {
63
+ return __awaiter(this, void 0, void 0, function () {
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0: return [4 /*yield*/, this.request({
67
+ path: '/api/v1/portal/tokens',
68
+ method: 'POST',
69
+ headers: {
70
+ 'Content-Type': 'application/json',
71
+ },
72
+ body: JSON.stringify(token),
73
+ options: options,
74
+ })];
75
+ case 1: return [2 /*return*/, _a.sent()];
76
+ }
77
+ });
78
+ });
79
+ };
80
+ /**
81
+ * Invalidate portal token
82
+ * @note OpenMeter Cloud only feature
83
+ */
84
+ PortalClient.prototype.invalidateTokens = function () {
85
+ return __awaiter(this, arguments, void 0, function (invalidate, options) {
86
+ if (invalidate === void 0) { invalidate = {}; }
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4 /*yield*/, this.request({
90
+ path: '/api/v1/portal/tokens/invalidate',
91
+ method: 'POST',
92
+ headers: {
93
+ 'Content-Type': 'application/json',
94
+ },
95
+ body: JSON.stringify(invalidate),
96
+ options: options,
97
+ })];
98
+ case 1: return [2 /*return*/, _a.sent()];
99
+ }
100
+ });
101
+ });
102
+ };
103
+ return PortalClient;
104
+ }(BaseClient));
105
+ export { PortalClient };
106
+ //# sourceMappingURL=portal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal.js","sourceRoot":"","sources":["../../../clients/portal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAkB,UAAU,EAAmB,MAAM,aAAa,CAAA;AAIzE;IAAkC,gCAAU;IAC1C,sBAAY,MAAuB;QACjC,OAAA,MAAK,YAAC,MAAM,CAAC,SAAA;IACf,CAAC;IAED;;;OAGG;IACU,kCAAW,GAAxB,UACE,KAIC,EACD,OAAwB;;;;4BAEjB,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,uBAAuB;4BAC7B,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACP,cAAc,EAAE,kBAAkB;6BACnC;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;4BAC3B,OAAO,SAAA;yBACR,CAAC,EAAA;4BARF,sBAAO,SAQL,EAAA;;;;KACH;IAED;;;OAGG;IACU,uCAAgB,GAA7B;4DACE,UAAqC,EACrC,OAAwB;YADxB,2BAAA,EAAA,eAAqC;;;4BAG9B,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,kCAAkC;4BACxC,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACP,cAAc,EAAE,kBAAkB;6BACnC;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;4BAChC,OAAO,SAAA;yBACR,CAAC,EAAA;4BARF,sBAAO,SAQL,EAAA;;;;KACH;IACH,mBAAC;AAAD,CAAC,AA9CD,CAAkC,UAAU,GA8C3C"}
@@ -0,0 +1,138 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import { BaseClient } from './client.js';
53
+ var SubjectClient = /** @class */ (function (_super) {
54
+ __extends(SubjectClient, _super);
55
+ function SubjectClient(config) {
56
+ return _super.call(this, config) || this;
57
+ }
58
+ /**
59
+ * Upsert subject
60
+ * Useful to map display name and metadata to subjects
61
+ * @note OpenMeter Cloud only feature
62
+ */
63
+ SubjectClient.prototype.upsert = function (subject, options) {
64
+ return __awaiter(this, void 0, void 0, function () {
65
+ return __generator(this, function (_a) {
66
+ switch (_a.label) {
67
+ case 0: return [4 /*yield*/, this.request({
68
+ path: '/api/v1/subjects',
69
+ method: 'POST',
70
+ headers: {
71
+ 'Content-Type': 'application/json',
72
+ },
73
+ body: JSON.stringify(subject),
74
+ options: options,
75
+ })];
76
+ case 1: return [2 /*return*/, _a.sent()];
77
+ }
78
+ });
79
+ });
80
+ };
81
+ /**
82
+ * Get subject by id or key
83
+ * @note OpenMeter Cloud only feature
84
+ */
85
+ SubjectClient.prototype.get = function (idOrKey, options) {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0: return [4 /*yield*/, this.request({
90
+ path: "/api/v1/subjects/".concat(idOrKey),
91
+ method: 'GET',
92
+ options: options,
93
+ })];
94
+ case 1: return [2 /*return*/, _a.sent()];
95
+ }
96
+ });
97
+ });
98
+ };
99
+ /**
100
+ * List subjects
101
+ * @note OpenMeter Cloud only feature
102
+ */
103
+ SubjectClient.prototype.list = function (options) {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ return __generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0: return [4 /*yield*/, this.request({
108
+ path: '/api/v1/subjects',
109
+ method: 'GET',
110
+ options: options,
111
+ })];
112
+ case 1: return [2 /*return*/, _a.sent()];
113
+ }
114
+ });
115
+ });
116
+ };
117
+ /**
118
+ * Delete subject by id or key
119
+ * @note OpenMeter Cloud only feature
120
+ */
121
+ SubjectClient.prototype.delete = function (idOrKey, options) {
122
+ return __awaiter(this, void 0, void 0, function () {
123
+ return __generator(this, function (_a) {
124
+ switch (_a.label) {
125
+ case 0: return [4 /*yield*/, this.request({
126
+ path: "/api/v1/subjects/".concat(idOrKey),
127
+ method: 'DELETE',
128
+ options: options,
129
+ })];
130
+ case 1: return [2 /*return*/, _a.sent()];
131
+ }
132
+ });
133
+ });
134
+ };
135
+ return SubjectClient;
136
+ }(BaseClient));
137
+ export { SubjectClient };
138
+ //# sourceMappingURL=subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subject.js","sourceRoot":"","sources":["../../../clients/subject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAkB,UAAU,EAAmB,MAAM,aAAa,CAAA;AAIzE;IAAmC,iCAAU;IAC3C,uBAAY,MAAuB;QACjC,OAAA,MAAK,YAAC,MAAM,CAAC,SAAA;IACf,CAAC;IAED;;;;OAIG;IACU,8BAAM,GAAnB,UACE,OAA8B,EAC9B,OAAwB;;;;4BAEjB,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,kBAAkB;4BACxB,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACP,cAAc,EAAE,kBAAkB;6BACnC;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;4BAC7B,OAAO,SAAA;yBACR,CAAC,EAAA;4BARF,sBAAO,SAQL,EAAA;;;;KACH;IAED;;;OAGG;IACU,2BAAG,GAAhB,UAAiB,OAAe,EAAE,OAAwB;;;;4BACjD,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,2BAAoB,OAAO,CAAE;4BACnC,MAAM,EAAE,KAAK;4BACb,OAAO,SAAA;yBACR,CAAC,EAAA;4BAJF,sBAAO,SAIL,EAAA;;;;KACH;IAED;;;OAGG;IACU,4BAAI,GAAjB,UAAkB,OAAwB;;;;4BACjC,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,kBAAkB;4BACxB,MAAM,EAAE,KAAK;4BACb,OAAO,SAAA;yBACR,CAAC,EAAA;4BAJF,sBAAO,SAIL,EAAA;;;;KACH;IAED;;;OAGG;IACU,8BAAM,GAAnB,UACE,OAAe,EACf,OAAwB;;;;4BAEjB,qBAAM,IAAI,CAAC,OAAO,CAAC;4BACxB,IAAI,EAAE,2BAAoB,OAAO,CAAE;4BACnC,MAAM,EAAE,QAAQ;4BAChB,OAAO,SAAA;yBACR,CAAC,EAAA;4BAJF,sBAAO,SAIL,EAAA;;;;KACH;IACH,oBAAC;AAAD,CAAC,AA/DD,CAAmC,UAAU,GA+D5C"}
@@ -0,0 +1,16 @@
1
+ import { EventsClient } from './clients/event.js';
2
+ import { MetersClient } from './clients/meter.js';
3
+ import { PortalClient } from './clients/portal.js';
4
+ import { SubjectClient } from './clients/subject.js';
5
+ export { MeterAggregation, WindowSize } from './clients/meter.js';
6
+ var OpenMeter = /** @class */ (function () {
7
+ function OpenMeter(config) {
8
+ this.events = new EventsClient(config);
9
+ this.meters = new MetersClient(config);
10
+ this.portal = new PortalClient(config);
11
+ this.subjects = new SubjectClient(config);
12
+ }
13
+ return OpenMeter;
14
+ }());
15
+ export { OpenMeter };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAIpD,OAAO,EAAS,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAExE;IAME,mBAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IACH,gBAAC;AAAD,CAAC,AAZD,IAYC"}
@@ -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,8 +1,9 @@
1
1
  import { MockAgent } from 'undici';
2
- import { mockMeter, mockMeterValue } from './mocks.js';
3
- export const mockAgent = new MockAgent();
2
+ import { mockEvent, mockMeter, mockMeterValue, mockSubject } from './mocks.js';
3
+ export var mockAgent = new MockAgent();
4
4
  mockAgent.disableNetConnect();
5
- const client = mockAgent.get('http://127.0.0.1:8888');
5
+ var client = mockAgent.get('http://127.0.0.1:8888');
6
+ /** Event */
6
7
  client
7
8
  .intercept({
8
9
  path: '/api/v1/events',
@@ -24,6 +25,47 @@ client
24
25
  }),
25
26
  })
26
27
  .reply(204);
28
+ // Batch ingest
29
+ client
30
+ .intercept({
31
+ path: '/api/v1/events',
32
+ method: 'POST',
33
+ headers: {
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
+ });
27
69
  client
28
70
  .intercept({
29
71
  path: '/api/v1/events',
@@ -44,6 +86,7 @@ client
44
86
  }),
45
87
  })
46
88
  .reply(204);
89
+ /** Portal */
47
90
  client
48
91
  .intercept({
49
92
  path: '/api/v1/meters',
@@ -59,7 +102,7 @@ client
59
102
  });
60
103
  client
61
104
  .intercept({
62
- path: `/api/v1/meters/${mockMeter.slug}`,
105
+ path: "/api/v1/meters/".concat(mockMeter.slug),
63
106
  method: 'GET',
64
107
  headers: {
65
108
  Accept: 'application/json',
@@ -70,10 +113,10 @@ client
70
113
  'Content-Type': 'application/json',
71
114
  },
72
115
  });
73
- /** Meter Values */
116
+ /** Meter Query */
74
117
  client
75
118
  .intercept({
76
- path: `/api/v1/meters/${mockMeter.slug}/values`,
119
+ path: "/api/v1/meters/".concat(mockMeter.slug, "/query"),
77
120
  query: {},
78
121
  method: 'GET',
79
122
  headers: {
@@ -81,6 +124,8 @@ client
81
124
  },
82
125
  })
83
126
  .reply(200, {
127
+ from: mockMeterValue.windowStart,
128
+ to: mockMeterValue.windowEnd,
84
129
  windowSize: 'HOUR',
85
130
  data: [mockMeterValue],
86
131
  }, {
@@ -90,12 +135,14 @@ client
90
135
  });
91
136
  client
92
137
  .intercept({
93
- path: `/api/v1/meters/${mockMeter.slug}/values`,
138
+ path: "/api/v1/meters/".concat(mockMeter.slug, "/query"),
94
139
  query: {
95
140
  subject: 'user-1',
141
+ groupBy: ['a', 'b'],
96
142
  from: new Date('2021-01-01').toISOString(),
97
143
  to: new Date('2021-01-02').toISOString(),
98
144
  windowSize: 'HOUR',
145
+ 'filterGroupBy[model]': 'gpt-4',
99
146
  },
100
147
  method: 'GET',
101
148
  headers: {
@@ -103,6 +150,8 @@ client
103
150
  },
104
151
  })
105
152
  .reply(200, {
153
+ from: mockMeterValue.windowStart,
154
+ to: mockMeterValue.windowEnd,
106
155
  windowSize: 'HOUR',
107
156
  data: [mockMeterValue],
108
157
  }, {
@@ -110,21 +159,36 @@ client
110
159
  'Content-Type': 'application/json',
111
160
  },
112
161
  });
113
- /** Meter Query */
162
+ /** Meter Subjects */
114
163
  client
115
164
  .intercept({
116
- path: `/api/v1/meters/${mockMeter.slug}/query`,
117
- query: {},
165
+ path: "/api/v1/meters/".concat(mockMeter.slug, "/subjects"),
118
166
  method: 'GET',
119
167
  headers: {
120
168
  Accept: 'application/json',
121
169
  },
122
170
  })
123
- .reply(200, {
124
- from: mockMeterValue.windowStart,
125
- to: mockMeterValue.windowEnd,
126
- windowSize: 'HOUR',
127
- data: [mockMeterValue],
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'),
128
192
  }, {
129
193
  headers: {
130
194
  'Content-Type': 'application/json',
@@ -132,40 +196,68 @@ client
132
196
  });
133
197
  client
134
198
  .intercept({
135
- path: `/api/v1/meters/${mockMeter.slug}/query`,
136
- query: {
137
- subject: 'user-1',
138
- groupBy: 'a,b',
139
- from: new Date('2021-01-01').toISOString(),
140
- to: new Date('2021-01-02').toISOString(),
141
- windowSize: 'HOUR',
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',
142
216
  },
217
+ body: JSON.stringify([{
218
+ key: mockSubject.key,
219
+ displayName: mockSubject.displayName,
220
+ metadata: mockSubject.metadata,
221
+ }]),
222
+ })
223
+ .reply(200, [mockSubject], {
224
+ headers: {
225
+ 'Content-Type': 'application/json',
226
+ },
227
+ });
228
+ client
229
+ .intercept({
230
+ path: '/api/v1/subjects',
143
231
  method: 'GET',
144
232
  headers: {
145
233
  Accept: 'application/json',
146
234
  },
147
235
  })
148
- .reply(200, {
149
- from: mockMeterValue.windowStart,
150
- to: mockMeterValue.windowEnd,
151
- windowSize: 'HOUR',
152
- data: [mockMeterValue],
153
- }, {
236
+ .reply(200, [mockSubject], {
154
237
  headers: {
155
238
  'Content-Type': 'application/json',
156
239
  },
157
240
  });
158
- /** Meter Subjects */
159
241
  client
160
242
  .intercept({
161
- path: `/api/v1/meters/${mockMeter.slug}/subjects`,
243
+ path: '/api/v1/subjects/customer-1',
162
244
  method: 'GET',
163
245
  headers: {
164
246
  Accept: 'application/json',
165
247
  },
166
248
  })
167
- .reply(200, [mockMeterValue.subject], {
249
+ .reply(200, mockSubject, {
168
250
  headers: {
169
251
  'Content-Type': 'application/json',
170
252
  },
171
253
  });
254
+ client
255
+ .intercept({
256
+ path: '/api/v1/subjects/customer-1',
257
+ method: 'DELETE',
258
+ headers: {
259
+ Accept: 'application/json',
260
+ },
261
+ })
262
+ .reply(204);
263
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../test/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { WindowSize } from '../index.js';
2
+ export var 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
+ };
13
+ export var mockMeter = {
14
+ slug: 'm1',
15
+ aggregation: 'SUM',
16
+ eventType: 'api_requests',
17
+ valueProperty: '$.duration_ms',
18
+ windowSize: WindowSize.HOUR,
19
+ groupBy: {
20
+ method: '$.method',
21
+ path: '$.path',
22
+ },
23
+ };
24
+ export var mockMeterValue = {
25
+ subject: 'customer-1',
26
+ windowStart: '2023-01-01T01:00:00.001Z',
27
+ windowEnd: '2023-01-01T01:00:00.001Z',
28
+ value: 1,
29
+ groupBy: {
30
+ method: 'GET',
31
+ },
32
+ };
33
+ export var mockSubject = {
34
+ id: 'abcde',
35
+ key: 'customer-1',
36
+ displayName: 'Customer 1',
37
+ metadata: {
38
+ foo: 'bar',
39
+ },
40
+ };
41
+ //# sourceMappingURL=mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../test/mocks.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,UAAU,EAAE,MAAM,aAAa,CAAA;AAEtD,MAAM,CAAC,IAAM,SAAS,GAAU;IAC9B,WAAW,EAAE,KAAK;IAClB,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;IAC5B,IAAI,EAAE;QACJ,SAAS,EAAE,CAAC;KACb;CACF,CAAA;AAED,MAAM,CAAC,IAAM,SAAS,GAAU;IAC9B,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,KAAK;IAClB,SAAS,EAAE,cAAc;IACzB,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,UAAU,CAAC,IAAI;IAC3B,OAAO,EAAE;QACP,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,QAAQ;KACf;CACF,CAAA;AAED,MAAM,CAAC,IAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,0BAA0B;IACvC,SAAS,EAAE,0BAA0B;IACrC,KAAK,EAAE,CAAC;IACR,OAAO,EAAE;QACP,MAAM,EAAE,KAAK;KACd;CACF,CAAA;AAED,MAAM,CAAC,IAAM,WAAW,GAAY;IAClC,EAAE,EAAE,OAAO;IACX,GAAG,EAAE,YAAY;IACjB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE;QACR,GAAG,EAAE,KAAK;KACX;CACF,CAAA"}