@lwmacct/260529-promclient 0.15.260628 → 0.16.260628
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/README.md +74 -0
- package/dist/transform/instant.d.ts +1 -0
- package/dist/transform/instant.d.ts.map +1 -1
- package/dist/transform/instant.js +19 -0
- package/dist/transform/instant.js.map +1 -1
- package/dist/transform/records.d.ts +11 -2
- package/dist/transform/records.d.ts.map +1 -1
- package/dist/transform/records.js +36 -4
- package/dist/transform/records.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ Small Prometheus-compatible HTTP API client with PromQL helpers and response tra
|
|
|
13
13
|
- 提供 Prometheus API 响应的 TypeScript 类型
|
|
14
14
|
- 提供 PromQL selector / label matcher 转义工具
|
|
15
15
|
- 提供 vector、matrix、scalar、string 响应转换工具
|
|
16
|
+
- 支持 label 编码 record、字段别名、字段级 value source 和多查询字段合并
|
|
16
17
|
- 无运行时依赖
|
|
17
18
|
|
|
18
19
|
## 安装
|
|
@@ -238,6 +239,25 @@ const rows = mapVectorToFieldRows(response, {
|
|
|
238
239
|
// method="GET", status="200" -> field: "GET.200"
|
|
239
240
|
```
|
|
240
241
|
|
|
242
|
+
如果字段不是来自 label,而是整个查询对应一个固定字段,可以使用 `field`。这适合把多个查询结果合并成同一批 record:
|
|
243
|
+
|
|
244
|
+
```ts
|
|
245
|
+
const rows = [
|
|
246
|
+
...mapVectorToFieldRows(inResponse, {
|
|
247
|
+
keyLabels: ["switch", "ifIndex"],
|
|
248
|
+
field: "inBps",
|
|
249
|
+
valueSource: "sample",
|
|
250
|
+
}),
|
|
251
|
+
...mapVectorToFieldRows(outResponse, {
|
|
252
|
+
keyLabels: ["switch", "ifIndex"],
|
|
253
|
+
field: "outBps",
|
|
254
|
+
valueSource: "sample",
|
|
255
|
+
}),
|
|
256
|
+
];
|
|
257
|
+
|
|
258
|
+
const table = mapFieldRowsByKey(rows);
|
|
259
|
+
```
|
|
260
|
+
|
|
241
261
|
示例二:`value` label 作为字段值。
|
|
242
262
|
|
|
243
263
|
这类指标通常用 sample value `1` 表示“这条信息存在”,真正的字段值在 label 中:
|
|
@@ -283,6 +303,44 @@ const table = mapFieldRowsByKey(rows);
|
|
|
283
303
|
// }
|
|
284
304
|
```
|
|
285
305
|
|
|
306
|
+
字段名需要转换为业务对象属性时,可以配置 `fieldMappings`。映射值为 `false` 时会丢弃该字段;`unknownField: "drop"` 会丢弃未声明字段:
|
|
307
|
+
|
|
308
|
+
```ts
|
|
309
|
+
const rows = mapVectorToFieldRows(response, {
|
|
310
|
+
keyLabels: ["asset"],
|
|
311
|
+
fieldLabels: ["field"],
|
|
312
|
+
valueLabel: "value",
|
|
313
|
+
valueSource: "label",
|
|
314
|
+
unknownField: "drop",
|
|
315
|
+
fieldMappings: {
|
|
316
|
+
region: "region",
|
|
317
|
+
owner: "owner",
|
|
318
|
+
ignored_field: false,
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
字段级配置可以覆盖全局 `valueSource`、`valueLabel` 和 `sampleParser`。这适合部分字段值在 label 中、部分字段值在 sample 中的指标:
|
|
324
|
+
|
|
325
|
+
```ts
|
|
326
|
+
const rows = mapVectorToFieldRows(response, {
|
|
327
|
+
keyLabels: ["asset"],
|
|
328
|
+
fieldLabels: ["field"],
|
|
329
|
+
valueSource: "label",
|
|
330
|
+
valueLabel: "value",
|
|
331
|
+
unknownField: "drop",
|
|
332
|
+
fieldMappings: {
|
|
333
|
+
model_number: { as: "modelNumber" },
|
|
334
|
+
firmware: { as: "firmware" },
|
|
335
|
+
total_bytes: {
|
|
336
|
+
as: "totalBytes",
|
|
337
|
+
valueSource: "sample",
|
|
338
|
+
sampleParser: (value) => Number.parseFloat(value),
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
```
|
|
343
|
+
|
|
286
344
|
`valueSource` 支持:
|
|
287
345
|
|
|
288
346
|
| 值 | 说明 |
|
|
@@ -308,6 +366,7 @@ import {
|
|
|
308
366
|
getScalarNumber,
|
|
309
367
|
mapVector,
|
|
310
368
|
mapVectorByLabel,
|
|
369
|
+
mapVectorByLabelAndName,
|
|
311
370
|
} from "@lwmacct/260529-promclient";
|
|
312
371
|
```
|
|
313
372
|
|
|
@@ -319,8 +378,23 @@ import {
|
|
|
319
378
|
| `getScalarValue(response)` | 从 scalar/string response 中取出原始字符串值 |
|
|
320
379
|
| `getScalarNumber(response, defaultValue?)` | 从 scalar response 中解析数字 |
|
|
321
380
|
| `mapVectorByLabel(response, labelName, parser?)` | 按指定 label 聚合 vector 数值 |
|
|
381
|
+
| `mapVectorByLabelAndName(response, labelName, mapper, parser?)` | 按指定 label 聚合,并用 `__name__` 区分字段 |
|
|
322
382
|
| `mapVector(response, mapper)` | 自定义映射 vector items |
|
|
323
383
|
|
|
384
|
+
`mapVectorByLabelAndName` 适合多个 metric name 共同组成一张对象表的场景:
|
|
385
|
+
|
|
386
|
+
```ts
|
|
387
|
+
const stats = mapVectorByLabelAndName(response, "instance", (name, value, prev) => {
|
|
388
|
+
if (name === "node_memory_MemTotal_bytes") {
|
|
389
|
+
return { ...prev, total: value };
|
|
390
|
+
}
|
|
391
|
+
if (name === "node_memory_MemAvailable_bytes") {
|
|
392
|
+
return { ...prev, available: value };
|
|
393
|
+
}
|
|
394
|
+
return prev;
|
|
395
|
+
});
|
|
396
|
+
```
|
|
397
|
+
|
|
324
398
|
### Range Response
|
|
325
399
|
|
|
326
400
|
```ts
|
|
@@ -3,5 +3,6 @@ export declare const getVectorItems: (response: PromSuccessResponse<PromInstantD
|
|
|
3
3
|
export declare const getScalarValue: (response: PromSuccessResponse<PromScalarData | PromStringData>) => string | undefined;
|
|
4
4
|
export declare const getScalarNumber: (response: PromSuccessResponse<PromScalarData>, defaultValue?: number) => number;
|
|
5
5
|
export declare const mapVectorByLabel: (response: PromSuccessResponse<PromVectorData>, labelName: string, parser?: (value: string) => number) => Record<string, number>;
|
|
6
|
+
export declare const mapVectorByLabelAndName: <T extends Record<string, unknown>>(response: PromSuccessResponse<PromInstantData>, labelName: string, mapper: (metricName: string, value: number, previous: T) => T, parser?: (value: string) => number) => Record<string, T>;
|
|
6
7
|
export declare const mapVector: <T>(response: PromSuccessResponse<PromVectorData>, mapper: (item: PromVectorItem) => T | undefined) => T[];
|
|
7
8
|
//# sourceMappingURL=instant.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/transform/instant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAC;AAQlB,eAAO,MAAM,cAAc,GACzB,UAAU,mBAAmB,CAAC,eAAe,CAAC,KAC7C,cAAc,EAKhB,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,UAAU,mBAAmB,CAAC,cAAc,GAAG,cAAc,CAAC,KAC7D,MAAM,GAAG,SAKX,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,qBAAyB,KACxB,MAKF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,WAAW,MAAM,EACjB,SAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,MAAyC,KACnE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYvB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,QAAQ,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,GAAG,SAAS,KAC9C,CAAC,EAOI,CAAC"}
|
|
1
|
+
{"version":3,"file":"instant.d.ts","sourceRoot":"","sources":["../../src/transform/instant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,MAAM,UAAU,CAAC;AAQlB,eAAO,MAAM,cAAc,GACzB,UAAU,mBAAmB,CAAC,eAAe,CAAC,KAC7C,cAAc,EAKhB,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,UAAU,mBAAmB,CAAC,cAAc,GAAG,cAAc,CAAC,KAC7D,MAAM,GAAG,SAKX,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,qBAAyB,KACxB,MAKF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,WAAW,MAAM,EACjB,SAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,MAAyC,KACnE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,UAAU,mBAAmB,CAAC,eAAe,CAAC,EAC9C,WAAW,MAAM,EACjB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAC7D,SAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,MAAyC,KACnE,MAAM,CAAC,MAAM,EAAE,CAAC,CAqBlB,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,UAAU,mBAAmB,CAAC,cAAc,CAAC,EAC7C,QAAQ,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,GAAG,SAAS,KAC9C,CAAC,EAOI,CAAC"}
|
|
@@ -30,6 +30,25 @@ export const mapVectorByLabel = (response, labelName, parser = (value) => safePa
|
|
|
30
30
|
return result;
|
|
31
31
|
}, {});
|
|
32
32
|
};
|
|
33
|
+
export const mapVectorByLabelAndName = (response, labelName, mapper, parser = (value) => safeParseFloat(value)) => {
|
|
34
|
+
if (!isVectorData(response.data)) {
|
|
35
|
+
return {};
|
|
36
|
+
}
|
|
37
|
+
return response.data.result.reduce((result, item) => {
|
|
38
|
+
const labelValue = item.metric[labelName];
|
|
39
|
+
const metricName = item.metric.__name__;
|
|
40
|
+
if (!labelValue || !metricName) {
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
const value = parser(item.value[1]);
|
|
44
|
+
if (Number.isNaN(value)) {
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
const previous = result[labelValue] ?? {};
|
|
48
|
+
result[labelValue] = mapper(metricName, value, previous);
|
|
49
|
+
return result;
|
|
50
|
+
}, {});
|
|
51
|
+
};
|
|
33
52
|
export const mapVector = (response, mapper) => response.data.result.reduce((result, item) => {
|
|
34
53
|
const mapped = mapper(item);
|
|
35
54
|
if (mapped !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instant.js","sourceRoot":"","sources":["../../src/transform/instant.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAA8C,EAC5B,EAAE;IACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAA8D,EAC1C,EAAE;IACtB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAA6C,EAC7C,YAAY,GAAG,MAAM,CAAC,GAAG,EACjB,EAAE;IACV,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAA6C,EAC7C,SAAiB,EACjB,SAAoC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAC5C,EAAE;IAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAA6C,EAC7C,MAA+C,EAC1C,EAAE,CACP,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,EAAE,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"instant.js","sourceRoot":"","sources":["../../src/transform/instant.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,23 @@ export type PromFieldRow = {
|
|
|
10
10
|
timestampMs: number;
|
|
11
11
|
};
|
|
12
12
|
export type PromFieldValueSource = "auto" | "label" | "sample";
|
|
13
|
+
export type PromFieldMapping = string | false | {
|
|
14
|
+
as?: string;
|
|
15
|
+
valueLabel?: string;
|
|
16
|
+
valueSource?: PromFieldValueSource;
|
|
17
|
+
sampleParser?: (value: string, item: PromVectorItem) => PromFieldValue | undefined;
|
|
18
|
+
};
|
|
13
19
|
export type MapVectorToFieldRowsOptions = {
|
|
14
20
|
indexLabels?: readonly string[];
|
|
15
21
|
keyLabels: readonly string[];
|
|
16
|
-
fieldLabels
|
|
22
|
+
fieldLabels?: readonly string[];
|
|
23
|
+
field?: string;
|
|
17
24
|
valueLabel?: string;
|
|
18
25
|
valueSource?: PromFieldValueSource;
|
|
19
26
|
labelSeparator?: string;
|
|
20
|
-
sampleParser?: (value: string, item: PromVectorItem) => PromFieldValue;
|
|
27
|
+
sampleParser?: (value: string, item: PromVectorItem) => PromFieldValue | undefined;
|
|
28
|
+
fieldMappings?: Record<string, PromFieldMapping>;
|
|
29
|
+
unknownField?: "keep" | "drop";
|
|
21
30
|
};
|
|
22
31
|
export type DuplicateFieldRowStrategy = "last" | "first" | "array" | "error";
|
|
23
32
|
export type MapFieldRowsOptions = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/transform/records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/transform/records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,KAAK,GACL;IACE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,cAAc,KACjB,cAAc,GAAG,SAAS,CAAC;CACjC,CAAC;AAEN,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,cAAc,KACjB,cAAc,GAAG,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE7D,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AA6EnE,eAAO,MAAM,uBAAuB,GAClC,MAAM,cAAc,EACpB,SAAS,2BAA2B,KACnC,YAAY,GAAG,SA6DjB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,mBAAmB,CAAC,eAAe,CAAC,EAC9C,SAAS,2BAA2B,KACnC,YAAY,EAYd,CAAC;AAiCF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,SAAS,YAAY,EAAE,EAC7B,UAAS,mBAAwB,KAChC,cASF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,YAAY,EAAE,EAC7B,UAAS,mBAAwB,KAChC,qBAgBF,CAAC"}
|
|
@@ -22,6 +22,22 @@ const resolveFieldValue = (item, options) => {
|
|
|
22
22
|
}
|
|
23
23
|
return options.sampleParser(item.value[1], item);
|
|
24
24
|
};
|
|
25
|
+
const resolveFieldMapping = (field, options) => {
|
|
26
|
+
const mapping = options.fieldMappings?.[field];
|
|
27
|
+
if (mapping === undefined) {
|
|
28
|
+
return options.unknownField === "drop" ? undefined : { field };
|
|
29
|
+
}
|
|
30
|
+
if (mapping === false) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
if (typeof mapping === "string") {
|
|
34
|
+
return { field: mapping };
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
...mapping,
|
|
38
|
+
field: mapping.as ?? field,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
25
41
|
export const mapVectorItemToFieldRow = (item, options) => {
|
|
26
42
|
const labelSeparator = options.labelSeparator ?? defaultLabelSeparator;
|
|
27
43
|
const indexLabels = options.indexLabels ?? [];
|
|
@@ -38,15 +54,31 @@ export const mapVectorItemToFieldRow = (item, options) => {
|
|
|
38
54
|
return undefined;
|
|
39
55
|
}
|
|
40
56
|
const key = joinLabelValues(item.metric, options.keyLabels, labelSeparator);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
57
|
+
const rawField = options.field ??
|
|
58
|
+
(options.fieldLabels
|
|
59
|
+
? joinLabelValues(item.metric, options.fieldLabels, labelSeparator)
|
|
60
|
+
: undefined);
|
|
61
|
+
if (key === undefined || rawField === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const fieldMapping = resolveFieldMapping(rawField, options);
|
|
65
|
+
if (fieldMapping === undefined) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const fieldValueOptions = {
|
|
69
|
+
...valueOptions,
|
|
70
|
+
valueLabel: fieldMapping.valueLabel ?? valueOptions.valueLabel,
|
|
71
|
+
valueSource: fieldMapping.valueSource ?? valueOptions.valueSource,
|
|
72
|
+
sampleParser: fieldMapping.sampleParser ?? valueOptions.sampleParser,
|
|
73
|
+
};
|
|
74
|
+
const value = resolveFieldValue(item, fieldValueOptions);
|
|
75
|
+
if (value === undefined) {
|
|
44
76
|
return undefined;
|
|
45
77
|
}
|
|
46
78
|
return {
|
|
47
79
|
index,
|
|
48
80
|
key,
|
|
49
|
-
field,
|
|
81
|
+
field: fieldMapping.field,
|
|
50
82
|
value,
|
|
51
83
|
labels: { ...item.metric },
|
|
52
84
|
sampleValue: item.value[1],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/transform/records.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/transform/records.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED