@octo11y/core 0.1.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.
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +55 -0
- package/dist/index.test.js.map +1 -0
- package/dist/parse-otlp.d.ts +18 -0
- package/dist/parse-otlp.d.ts.map +1 -0
- package/dist/parse-otlp.js +65 -0
- package/dist/parse-otlp.js.map +1 -0
- package/dist/parse-otlp.test.d.ts +2 -0
- package/dist/parse-otlp.test.d.ts.map +1 -0
- package/dist/parse-otlp.test.js +102 -0
- package/dist/parse-otlp.test.js.map +1 -0
- package/dist/retry.d.ts +6 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +18 -0
- package/dist/retry.js.map +1 -0
- package/dist/retry.test.d.ts +2 -0
- package/dist/retry.test.d.ts.map +1 -0
- package/dist/retry.test.js +29 -0
- package/dist/retry.test.js.map +1 -0
- package/dist/types.d.ts +127 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +19 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type { MetricDirection, OtlpAggregationTemporality, OtlpAttribute, OtlpAnyValue, OtlpGaugeDataPoint, OtlpHistogramDataPoint, OtlpGaugeMetric, OtlpSumMetric, OtlpHistogramMetric, OtlpMetric, OtlpScopeMetrics, OtlpResource, OtlpResourceMetrics, OtlpMetricsDocument, MonitorContext, SeriesFile, SeriesEntry, DataPoint, IndexFile, RunEntry, RefIndexEntry, PrIndexEntry, MetricSummaryEntry, } from "./types.js";
|
|
2
|
+
export { parseOtlp, otlpAttributesToRecord, getOtlpMetricKind, getOtlpTemporality, } from "./parse-otlp.js";
|
|
3
|
+
export { computeRetryDelayMs, sleep, DEFAULT_PUSH_RETRY_COUNT, RETRY_DELAY_MIN_MS, RETRY_DELAY_MAX_MS, } from "./retry.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EAEnB,cAAc,EACd,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,mBAAmB,EACnB,KAAK,EACL,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// @octo11y/core — generic OTLP metric types, parsing, and data structures
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RETRY_DELAY_MAX_MS = exports.RETRY_DELAY_MIN_MS = exports.DEFAULT_PUSH_RETRY_COUNT = exports.sleep = exports.computeRetryDelayMs = exports.getOtlpTemporality = exports.getOtlpMetricKind = exports.otlpAttributesToRecord = exports.parseOtlp = void 0;
|
|
5
|
+
// OTLP parsing
|
|
6
|
+
var parse_otlp_js_1 = require("./parse-otlp.js");
|
|
7
|
+
Object.defineProperty(exports, "parseOtlp", { enumerable: true, get: function () { return parse_otlp_js_1.parseOtlp; } });
|
|
8
|
+
Object.defineProperty(exports, "otlpAttributesToRecord", { enumerable: true, get: function () { return parse_otlp_js_1.otlpAttributesToRecord; } });
|
|
9
|
+
Object.defineProperty(exports, "getOtlpMetricKind", { enumerable: true, get: function () { return parse_otlp_js_1.getOtlpMetricKind; } });
|
|
10
|
+
Object.defineProperty(exports, "getOtlpTemporality", { enumerable: true, get: function () { return parse_otlp_js_1.getOtlpTemporality; } });
|
|
11
|
+
// Retry helpers
|
|
12
|
+
var retry_js_1 = require("./retry.js");
|
|
13
|
+
Object.defineProperty(exports, "computeRetryDelayMs", { enumerable: true, get: function () { return retry_js_1.computeRetryDelayMs; } });
|
|
14
|
+
Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return retry_js_1.sleep; } });
|
|
15
|
+
Object.defineProperty(exports, "DEFAULT_PUSH_RETRY_COUNT", { enumerable: true, get: function () { return retry_js_1.DEFAULT_PUSH_RETRY_COUNT; } });
|
|
16
|
+
Object.defineProperty(exports, "RETRY_DELAY_MIN_MS", { enumerable: true, get: function () { return retry_js_1.RETRY_DELAY_MIN_MS; } });
|
|
17
|
+
Object.defineProperty(exports, "RETRY_DELAY_MAX_MS", { enumerable: true, get: function () { return retry_js_1.RETRY_DELAY_MAX_MS; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,0EAA0E;;;AA8B1E,eAAe;AACf,iDAKyB;AAJvB,0GAAA,SAAS,OAAA;AACT,uHAAA,sBAAsB,OAAA;AACtB,kHAAA,iBAAiB,OAAA;AACjB,mHAAA,kBAAkB,OAAA;AAGpB,gBAAgB;AAChB,uCAMoB;AALlB,+GAAA,mBAAmB,OAAA;AACnB,iGAAA,KAAK,OAAA;AACL,oHAAA,wBAAwB,OAAA;AACxB,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const node_test_1 = require("node:test");
|
|
40
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
41
|
+
const core = __importStar(require("./index.js"));
|
|
42
|
+
(0, node_test_1.describe)("@octo11y/core package root exports", () => {
|
|
43
|
+
(0, node_test_1.it)("exports OTLP parsing functions", () => {
|
|
44
|
+
strict_1.default.equal(typeof core.parseOtlp, "function");
|
|
45
|
+
strict_1.default.equal(typeof core.otlpAttributesToRecord, "function");
|
|
46
|
+
strict_1.default.equal(typeof core.getOtlpMetricKind, "function");
|
|
47
|
+
strict_1.default.equal(typeof core.getOtlpTemporality, "function");
|
|
48
|
+
});
|
|
49
|
+
(0, node_test_1.it)("exports retry helpers", () => {
|
|
50
|
+
strict_1.default.equal(typeof core.computeRetryDelayMs, "function");
|
|
51
|
+
strict_1.default.equal(typeof core.sleep, "function");
|
|
52
|
+
strict_1.default.equal(core.DEFAULT_PUSH_RETRY_COUNT, 5);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,iDAAmC;AAEnC,IAAA,oBAAQ,EAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAA,cAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAChD,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAC7D,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QACxD,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QAC1D,gBAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC5C,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OtlpAggregationTemporality, OtlpAttribute, OtlpMetric, OtlpMetricsDocument } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Flatten an OTLP `KeyValue` attribute array into a plain string record.
|
|
4
|
+
*/
|
|
5
|
+
export declare function otlpAttributesToRecord(attributes: OtlpAttribute[] | undefined): Record<string, string>;
|
|
6
|
+
/**
|
|
7
|
+
* Parse and minimally validate an OTLP metrics JSON string.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseOtlp(input: string): OtlpMetricsDocument;
|
|
10
|
+
/**
|
|
11
|
+
* Determine the data kind of an OTLP metric.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getOtlpMetricKind(metric: OtlpMetric): "gauge" | "sum" | "histogram";
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the aggregation temporality for an OTLP sum or histogram metric.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getOtlpTemporality(metric: OtlpMetric): OtlpAggregationTemporality;
|
|
18
|
+
//# sourceMappingURL=parse-otlp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-otlp.d.ts","sourceRoot":"","sources":["../src/parse-otlp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAE1B,aAAa,EACb,UAAU,EACV,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAWpB;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtG;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAU5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,CAKnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,0BAA0B,CAKjF"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.otlpAttributesToRecord = otlpAttributesToRecord;
|
|
4
|
+
exports.parseOtlp = parseOtlp;
|
|
5
|
+
exports.getOtlpMetricKind = getOtlpMetricKind;
|
|
6
|
+
exports.getOtlpTemporality = getOtlpTemporality;
|
|
7
|
+
function anyValueToString(value) {
|
|
8
|
+
if (!value)
|
|
9
|
+
return "";
|
|
10
|
+
if (value.stringValue !== undefined)
|
|
11
|
+
return value.stringValue;
|
|
12
|
+
if (value.boolValue !== undefined)
|
|
13
|
+
return String(value.boolValue);
|
|
14
|
+
if (value.intValue !== undefined)
|
|
15
|
+
return String(value.intValue);
|
|
16
|
+
if (value.doubleValue !== undefined)
|
|
17
|
+
return String(value.doubleValue);
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Flatten an OTLP `KeyValue` attribute array into a plain string record.
|
|
22
|
+
*/
|
|
23
|
+
function otlpAttributesToRecord(attributes) {
|
|
24
|
+
const record = {};
|
|
25
|
+
for (const attribute of attributes ?? []) {
|
|
26
|
+
record[attribute.key] = anyValueToString(attribute.value);
|
|
27
|
+
}
|
|
28
|
+
return record;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse and minimally validate an OTLP metrics JSON string.
|
|
32
|
+
*/
|
|
33
|
+
function parseOtlp(input) {
|
|
34
|
+
const parsed = JSON.parse(input);
|
|
35
|
+
if (typeof parsed !== "object" ||
|
|
36
|
+
parsed === null ||
|
|
37
|
+
!Array.isArray(parsed.resourceMetrics)) {
|
|
38
|
+
throw new Error("[parse-otlp] OTLP metrics JSON must contain a top-level resourceMetrics array.");
|
|
39
|
+
}
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Determine the data kind of an OTLP metric.
|
|
44
|
+
*/
|
|
45
|
+
function getOtlpMetricKind(metric) {
|
|
46
|
+
if (metric.gauge)
|
|
47
|
+
return "gauge";
|
|
48
|
+
if (metric.sum)
|
|
49
|
+
return "sum";
|
|
50
|
+
if (metric.histogram)
|
|
51
|
+
return "histogram";
|
|
52
|
+
throw new Error(`[parse-otlp] Unsupported OTLP metric kind for metric '${metric.name}'.`);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the aggregation temporality for an OTLP sum or histogram metric.
|
|
56
|
+
*/
|
|
57
|
+
function getOtlpTemporality(metric) {
|
|
58
|
+
const raw = metric.sum?.aggregationTemporality ?? metric.histogram?.aggregationTemporality;
|
|
59
|
+
if (raw === 1)
|
|
60
|
+
return "delta";
|
|
61
|
+
if (raw === 2)
|
|
62
|
+
return "cumulative";
|
|
63
|
+
return "unspecified";
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=parse-otlp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-otlp.js","sourceRoot":"","sources":["../src/parse-otlp.ts"],"names":[],"mappings":";;AAoBA,wDAMC;AAKD,8BAUC;AAKD,8CAKC;AAKD,gDAKC;AArDD,SAAS,gBAAgB,CAAC,KAA+B;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IAC9D,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,UAAuC;IAC5E,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,CAAC,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,eAAe,CAAC,EACnE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,MAA6B,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAkB;IAClD,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAC7B,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,WAAW,CAAC;IACzC,MAAM,IAAI,KAAK,CAAC,yDAAyD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAAkB;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,sBAAsB,IAAI,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3F,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACnC,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-otlp.test.d.ts","sourceRoot":"","sources":["../src/parse-otlp.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const parse_otlp_js_1 = require("./parse-otlp.js");
|
|
9
|
+
function makeDocument() {
|
|
10
|
+
return {
|
|
11
|
+
resourceMetrics: [
|
|
12
|
+
{
|
|
13
|
+
resource: {
|
|
14
|
+
attributes: [
|
|
15
|
+
{ key: "service.name", value: { stringValue: "test-service" } },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
scopeMetrics: [
|
|
19
|
+
{
|
|
20
|
+
metrics: [
|
|
21
|
+
{
|
|
22
|
+
name: "events_per_sec",
|
|
23
|
+
unit: "events/sec",
|
|
24
|
+
gauge: {
|
|
25
|
+
dataPoints: [
|
|
26
|
+
{
|
|
27
|
+
attributes: [
|
|
28
|
+
{ key: "scenario", value: { stringValue: "json-ingest" } },
|
|
29
|
+
],
|
|
30
|
+
timeUnixNano: "1711929600000000000",
|
|
31
|
+
asDouble: 13240.5,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "cpu_user_pct",
|
|
38
|
+
unit: "%",
|
|
39
|
+
sum: {
|
|
40
|
+
aggregationTemporality: 2,
|
|
41
|
+
dataPoints: [
|
|
42
|
+
{
|
|
43
|
+
attributes: [],
|
|
44
|
+
startTimeUnixNano: "1711929540000000000",
|
|
45
|
+
timeUnixNano: "1711929600000000000",
|
|
46
|
+
asDouble: 71.2,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "request_latency_ms",
|
|
53
|
+
unit: "ms",
|
|
54
|
+
histogram: {
|
|
55
|
+
aggregationTemporality: 2,
|
|
56
|
+
dataPoints: [
|
|
57
|
+
{
|
|
58
|
+
attributes: [],
|
|
59
|
+
timeUnixNano: "1711929600000000000",
|
|
60
|
+
count: "15",
|
|
61
|
+
sum: 2148,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
(0, node_test_1.describe)("parseOtlp", () => {
|
|
74
|
+
(0, node_test_1.it)("parses a valid OTLP metrics document", () => {
|
|
75
|
+
const parsed = (0, parse_otlp_js_1.parseOtlp)(JSON.stringify(makeDocument()));
|
|
76
|
+
strict_1.default.equal(parsed.resourceMetrics.length, 1);
|
|
77
|
+
strict_1.default.equal(parsed.resourceMetrics[0].scopeMetrics?.[0].metrics?.length, 3);
|
|
78
|
+
});
|
|
79
|
+
(0, node_test_1.it)("throws when resourceMetrics is missing", () => {
|
|
80
|
+
strict_1.default.throws(() => (0, parse_otlp_js_1.parseOtlp)("{}"), /resourceMetrics/);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
(0, node_test_1.describe)("OTLP traversal helpers", () => {
|
|
84
|
+
(0, node_test_1.it)("converts attributes to flat string records", () => {
|
|
85
|
+
const record = (0, parse_otlp_js_1.otlpAttributesToRecord)([
|
|
86
|
+
{ key: "a", value: { stringValue: "hello" } },
|
|
87
|
+
{ key: "b", value: { intValue: "42" } },
|
|
88
|
+
{ key: "c", value: { boolValue: true } },
|
|
89
|
+
]);
|
|
90
|
+
strict_1.default.deepEqual(record, { a: "hello", b: "42", c: "true" });
|
|
91
|
+
});
|
|
92
|
+
(0, node_test_1.it)("reports metric kind and temporality", () => {
|
|
93
|
+
const document = (0, parse_otlp_js_1.parseOtlp)(JSON.stringify(makeDocument()));
|
|
94
|
+
const metrics = document.resourceMetrics[0].scopeMetrics?.[0].metrics ?? [];
|
|
95
|
+
strict_1.default.equal((0, parse_otlp_js_1.getOtlpMetricKind)(metrics[0]), "gauge");
|
|
96
|
+
strict_1.default.equal((0, parse_otlp_js_1.getOtlpMetricKind)(metrics[1]), "sum");
|
|
97
|
+
strict_1.default.equal((0, parse_otlp_js_1.getOtlpMetricKind)(metrics[2]), "histogram");
|
|
98
|
+
strict_1.default.equal((0, parse_otlp_js_1.getOtlpTemporality)(metrics[0]), "unspecified");
|
|
99
|
+
strict_1.default.equal((0, parse_otlp_js_1.getOtlpTemporality)(metrics[1]), "cumulative");
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=parse-otlp.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-otlp.test.js","sourceRoot":"","sources":["../src/parse-otlp.test.ts"],"names":[],"mappings":"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"}
|
package/dist/retry.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const DEFAULT_PUSH_RETRY_COUNT = 5;
|
|
2
|
+
export declare const RETRY_DELAY_MIN_MS = 500;
|
|
3
|
+
export declare const RETRY_DELAY_MAX_MS = 3000;
|
|
4
|
+
export declare function computeRetryDelayMs(randomValue: number, minMs?: number, maxMs?: number): number;
|
|
5
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,SAAqB,EAC1B,KAAK,SAAqB,GACzB,MAAM,CAGR;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/C"}
|
package/dist/retry.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RETRY_DELAY_MAX_MS = exports.RETRY_DELAY_MIN_MS = exports.DEFAULT_PUSH_RETRY_COUNT = void 0;
|
|
4
|
+
exports.computeRetryDelayMs = computeRetryDelayMs;
|
|
5
|
+
exports.sleep = sleep;
|
|
6
|
+
exports.DEFAULT_PUSH_RETRY_COUNT = 5;
|
|
7
|
+
exports.RETRY_DELAY_MIN_MS = 500;
|
|
8
|
+
exports.RETRY_DELAY_MAX_MS = 3000;
|
|
9
|
+
function computeRetryDelayMs(randomValue, minMs = exports.RETRY_DELAY_MIN_MS, maxMs = exports.RETRY_DELAY_MAX_MS) {
|
|
10
|
+
const normalized = Math.min(1, Math.max(0, randomValue));
|
|
11
|
+
return Math.round(minMs + normalized * (maxMs - minMs));
|
|
12
|
+
}
|
|
13
|
+
function sleep(ms) {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
setTimeout(resolve, ms);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":";;;AAIA,kDAOC;AAED,sBAIC;AAjBY,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAC7B,QAAA,kBAAkB,GAAG,GAAG,CAAC;AACzB,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAEvC,SAAgB,mBAAmB,CACjC,WAAmB,EACnB,KAAK,GAAG,0BAAkB,EAC1B,KAAK,GAAG,0BAAkB;IAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.test.d.ts","sourceRoot":"","sources":["../src/retry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const retry_js_1 = require("./retry.js");
|
|
9
|
+
(0, node_test_1.describe)("retry helpers", () => {
|
|
10
|
+
(0, node_test_1.it)("keeps the default retry count at five attempts", () => {
|
|
11
|
+
strict_1.default.equal(retry_js_1.DEFAULT_PUSH_RETRY_COUNT, 5);
|
|
12
|
+
});
|
|
13
|
+
(0, node_test_1.it)("returns the minimum delay for random value 0", () => {
|
|
14
|
+
strict_1.default.equal((0, retry_js_1.computeRetryDelayMs)(0), retry_js_1.RETRY_DELAY_MIN_MS);
|
|
15
|
+
});
|
|
16
|
+
(0, node_test_1.it)("returns the maximum delay for random value 1", () => {
|
|
17
|
+
strict_1.default.equal((0, retry_js_1.computeRetryDelayMs)(1), retry_js_1.RETRY_DELAY_MAX_MS);
|
|
18
|
+
});
|
|
19
|
+
(0, node_test_1.it)("returns the midpoint delay for a 0.5 random value", () => {
|
|
20
|
+
strict_1.default.equal((0, retry_js_1.computeRetryDelayMs)(0.5), 1750);
|
|
21
|
+
});
|
|
22
|
+
(0, node_test_1.it)("clamps random values below zero", () => {
|
|
23
|
+
strict_1.default.equal((0, retry_js_1.computeRetryDelayMs)(-1), retry_js_1.RETRY_DELAY_MIN_MS);
|
|
24
|
+
});
|
|
25
|
+
(0, node_test_1.it)("clamps random values above one", () => {
|
|
26
|
+
strict_1.default.equal((0, retry_js_1.computeRetryDelayMs)(2), retry_js_1.RETRY_DELAY_MAX_MS);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
//# sourceMappingURL=retry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.test.js","sourceRoot":"","sources":["../src/retry.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyC;AACzC,gEAAwC;AACxC,yCAKoB;AAEpB,IAAA,oBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAA,cAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,gBAAM,CAAC,KAAK,CAAC,mCAAwB,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,CAAC,CAAC,EAAE,6BAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,CAAC,CAAC,EAAE,6BAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,CAAC,CAAC,CAAC,EAAE,6BAAkB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,cAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,gBAAM,CAAC,KAAK,CAAC,IAAA,8BAAmB,EAAC,CAAC,CAAC,EAAE,6BAAkB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** Direction hint for a metric — smaller or bigger is better. */
|
|
2
|
+
export type MetricDirection = "bigger_is_better" | "smaller_is_better";
|
|
3
|
+
export type OtlpAggregationTemporality = "unspecified" | "delta" | "cumulative";
|
|
4
|
+
export interface OtlpAnyValue {
|
|
5
|
+
stringValue?: string;
|
|
6
|
+
boolValue?: boolean;
|
|
7
|
+
intValue?: string | number;
|
|
8
|
+
doubleValue?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface OtlpAttribute {
|
|
11
|
+
key: string;
|
|
12
|
+
value?: OtlpAnyValue;
|
|
13
|
+
}
|
|
14
|
+
export interface OtlpGaugeDataPoint {
|
|
15
|
+
attributes?: OtlpAttribute[];
|
|
16
|
+
startTimeUnixNano?: string;
|
|
17
|
+
timeUnixNano?: string;
|
|
18
|
+
asDouble?: number;
|
|
19
|
+
asInt?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface OtlpHistogramDataPoint {
|
|
22
|
+
attributes?: OtlpAttribute[];
|
|
23
|
+
startTimeUnixNano?: string;
|
|
24
|
+
timeUnixNano?: string;
|
|
25
|
+
count?: string | number;
|
|
26
|
+
sum?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface OtlpGaugeMetric {
|
|
29
|
+
dataPoints?: OtlpGaugeDataPoint[];
|
|
30
|
+
}
|
|
31
|
+
export interface OtlpSumMetric {
|
|
32
|
+
dataPoints?: OtlpGaugeDataPoint[];
|
|
33
|
+
aggregationTemporality?: number;
|
|
34
|
+
isMonotonic?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface OtlpHistogramMetric {
|
|
37
|
+
dataPoints?: OtlpHistogramDataPoint[];
|
|
38
|
+
aggregationTemporality?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface OtlpMetric {
|
|
41
|
+
name: string;
|
|
42
|
+
description?: string;
|
|
43
|
+
unit?: string;
|
|
44
|
+
gauge?: OtlpGaugeMetric;
|
|
45
|
+
sum?: OtlpSumMetric;
|
|
46
|
+
histogram?: OtlpHistogramMetric;
|
|
47
|
+
}
|
|
48
|
+
export interface OtlpScopeMetrics {
|
|
49
|
+
metrics?: OtlpMetric[];
|
|
50
|
+
}
|
|
51
|
+
export interface OtlpResource {
|
|
52
|
+
attributes?: OtlpAttribute[];
|
|
53
|
+
}
|
|
54
|
+
export interface OtlpResourceMetrics {
|
|
55
|
+
resource?: OtlpResource;
|
|
56
|
+
scopeMetrics?: OtlpScopeMetrics[];
|
|
57
|
+
}
|
|
58
|
+
export interface OtlpMetricsDocument {
|
|
59
|
+
resourceMetrics: OtlpResourceMetrics[];
|
|
60
|
+
}
|
|
61
|
+
/** Series format — pre-aggregated data produced by aggregation. */
|
|
62
|
+
export interface SeriesFile {
|
|
63
|
+
metric: string;
|
|
64
|
+
unit?: string;
|
|
65
|
+
direction?: MetricDirection;
|
|
66
|
+
series: Record<string, SeriesEntry>;
|
|
67
|
+
}
|
|
68
|
+
export interface SeriesEntry {
|
|
69
|
+
tags?: Record<string, string>;
|
|
70
|
+
points: DataPoint[];
|
|
71
|
+
}
|
|
72
|
+
export interface DataPoint {
|
|
73
|
+
timestamp: string;
|
|
74
|
+
value: number;
|
|
75
|
+
commit?: string;
|
|
76
|
+
run_id?: string;
|
|
77
|
+
range?: number;
|
|
78
|
+
}
|
|
79
|
+
/** Index format — run listing on the data branch. */
|
|
80
|
+
export interface IndexFile {
|
|
81
|
+
runs: RunEntry[];
|
|
82
|
+
metrics?: string[];
|
|
83
|
+
}
|
|
84
|
+
export interface RunEntry {
|
|
85
|
+
id: string;
|
|
86
|
+
timestamp: string;
|
|
87
|
+
commit?: string;
|
|
88
|
+
ref?: string;
|
|
89
|
+
benchmarks?: number;
|
|
90
|
+
metrics?: string[];
|
|
91
|
+
monitor?: MonitorContext;
|
|
92
|
+
}
|
|
93
|
+
export interface MonitorContext {
|
|
94
|
+
monitor_version: string;
|
|
95
|
+
poll_interval_ms: number;
|
|
96
|
+
duration_ms: number;
|
|
97
|
+
runner_os?: string;
|
|
98
|
+
runner_arch?: string;
|
|
99
|
+
poll_count?: number;
|
|
100
|
+
kernel?: string;
|
|
101
|
+
cpu_model?: string;
|
|
102
|
+
cpu_count?: number;
|
|
103
|
+
total_memory_mb?: number;
|
|
104
|
+
}
|
|
105
|
+
/** Navigation index types. */
|
|
106
|
+
export interface RefIndexEntry {
|
|
107
|
+
ref: string;
|
|
108
|
+
latestRunId: string;
|
|
109
|
+
latestTimestamp: string;
|
|
110
|
+
latestCommit?: string;
|
|
111
|
+
runCount: number;
|
|
112
|
+
}
|
|
113
|
+
export interface PrIndexEntry {
|
|
114
|
+
prNumber: number;
|
|
115
|
+
ref: string;
|
|
116
|
+
latestRunId: string;
|
|
117
|
+
latestTimestamp: string;
|
|
118
|
+
latestCommit?: string;
|
|
119
|
+
runCount: number;
|
|
120
|
+
}
|
|
121
|
+
export interface MetricSummaryEntry {
|
|
122
|
+
metric: string;
|
|
123
|
+
latestSeriesCount: number;
|
|
124
|
+
latestRunId?: string;
|
|
125
|
+
latestTimestamp?: string;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@octo11y/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Generic OTLP metric types, parsing, and data structures for metric storage and visualization.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"test": "node --test dist/*.test.js",
|
|
10
|
+
"lint": "tsc --noEmit"
|
|
11
|
+
},
|
|
12
|
+
"files": ["dist"],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/strawgate/benchkit.git",
|
|
17
|
+
"directory": "packages/core"
|
|
18
|
+
}
|
|
19
|
+
}
|